diff options
author | Alexander Ivchenko <alexander.ivchenko@intel.com> | 2018-08-31 09:38:27 +0000 |
---|---|---|
committer | Alexander Ivchenko <alexander.ivchenko@intel.com> | 2018-08-31 09:38:27 +0000 |
commit | a26a364e757162faf29b8db435305c4471d49d86 (patch) | |
tree | 01f1c5cc0fe5f6d689ec47b565bb98f6cccb88f2 /llvm/lib/Target/X86/X86RegisterBankInfo.cpp | |
parent | 43b15cddac7597f86ce9f93f23b8b2f28878f5c6 (diff) | |
download | bcm5719-llvm-a26a364e757162faf29b8db435305c4471d49d86.tar.gz bcm5719-llvm-a26a364e757162faf29b8db435305c4471d49d86.zip |
[GlobalIsel][X86] Support for G_FCMP
Differential Revision: https://reviews.llvm.org/D49172
llvm-svn: 341193
Diffstat (limited to 'llvm/lib/Target/X86/X86RegisterBankInfo.cpp')
-rw-r--r-- | llvm/lib/Target/X86/X86RegisterBankInfo.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86RegisterBankInfo.cpp b/llvm/lib/Target/X86/X86RegisterBankInfo.cpp index 246d6d5a58d..7e40a9e3a00 100644 --- a/llvm/lib/Target/X86/X86RegisterBankInfo.cpp +++ b/llvm/lib/Target/X86/X86RegisterBankInfo.cpp @@ -209,6 +209,21 @@ X86RegisterBankInfo::getInstrMapping(const MachineInstr &MI) const { OpRegBankIdx[1] = getPartialMappingIdx(Ty1, /* isFP */ false); break; } + case TargetOpcode::G_FCMP: { + LLT Ty1 = MRI.getType(MI.getOperand(2).getReg()); + LLT Ty2 = MRI.getType(MI.getOperand(3).getReg()); + (void)Ty2; + assert(Ty1.getSizeInBits() == Ty2.getSizeInBits() && + "Mismatched operand sizes for G_FCMP"); + + unsigned Size = Ty1.getSizeInBits(); + assert((Size == 32 || Size == 64) && "Unsupported size for G_FCMP"); + + auto FpRegBank = getPartialMappingIdx(Ty1, /* isFP */ true); + OpRegBankIdx = {PMI_GPR8, + /* Predicate */ PMI_None, FpRegBank, FpRegBank}; + break; + } case TargetOpcode::G_TRUNC: case TargetOpcode::G_ANYEXT: { auto &Op0 = MI.getOperand(0); |