diff options
author | Tom Stellard <tstellar@redhat.com> | 2018-05-11 05:44:16 +0000 |
---|---|---|
committer | Tom Stellard <tstellar@redhat.com> | 2018-05-11 05:44:16 +0000 |
commit | dcc95e938562421aac93cb4c41714d6a260f595e (patch) | |
tree | 9f57d9c08c0db49f14e0f98e20b838552f7f544a /llvm/lib | |
parent | 18b5fb7b84b22e05816cec0e38241bc8f3c5c4a4 (diff) | |
download | bcm5719-llvm-dcc95e938562421aac93cb4c41714d6a260f595e.tar.gz bcm5719-llvm-dcc95e938562421aac93cb4c41714d6a260f595e.zip |
AMDGPU/GlobalISel: Implement select() for 32-bit G_FPTOUI
Reviewers: arsenm, nhaehnle
Subscribers: kzhuravl, wdng, yaxunl, rovka, kristof.beyls, dstuttard, tpr, t-tye, llvm-commits
Differential Revision: https://reviews.llvm.org/D45883
llvm-svn: 332082
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Target/AMDGPU/AMDGPUGISel.td | 4 | ||||
-rw-r--r-- | llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp | 11 | ||||
-rw-r--r-- | llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.h | 3 |
3 files changed, 18 insertions, 0 deletions
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUGISel.td b/llvm/lib/Target/AMDGPU/AMDGPUGISel.td index 74b73de6d65..c9dfbafab0c 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUGISel.td +++ b/llvm/lib/Target/AMDGPU/AMDGPUGISel.td @@ -18,6 +18,10 @@ def gi_vsrc0 : GIComplexOperandMatcher<s32, "selectVSRC0">, GIComplexPatternEquiv<sd_vsrc0>; +def gi_vop3mods0 : + GIComplexOperandMatcher<s32, "selectVOP3Mods0">, + GIComplexPatternEquiv<VOP3Mods0>; + class GISelSop2Pat < SDPatternOperator node, Instruction inst, diff --git a/llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp b/llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp index 085a9c2f6fa..52ecca76095 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp @@ -455,6 +455,7 @@ bool AMDGPUInstructionSelector::select(MachineInstr &I, switch (I.getOpcode()) { default: break; + case TargetOpcode::G_FPTOUI: case TargetOpcode::G_OR: return selectImpl(I, CoverageInfo); case TargetOpcode::G_ADD: @@ -482,3 +483,13 @@ AMDGPUInstructionSelector::selectVSRC0(MachineOperand &Root) const { [=](MachineInstrBuilder &MIB) { MIB.add(Root); } }}; } + +InstructionSelector::ComplexRendererFns +AMDGPUInstructionSelector::selectVOP3Mods0(MachineOperand &Root) const { + return {{ + [=](MachineInstrBuilder &MIB) { MIB.add(Root); }, + [=](MachineInstrBuilder &MIB) { MIB.addImm(0); }, // src0_mods + [=](MachineInstrBuilder &MIB) { MIB.addImm(0); }, // clamp + [=](MachineInstrBuilder &MIB) { MIB.addImm(0); } // omod + }}; +} diff --git a/llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.h b/llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.h index f9ab4d0d68f..cdad743ff22 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.h +++ b/llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.h @@ -73,6 +73,9 @@ private: InstructionSelector::ComplexRendererFns selectVSRC0(MachineOperand &Root) const; + InstructionSelector::ComplexRendererFns + selectVOP3Mods0(MachineOperand &Root) const; + const SIInstrInfo &TII; const SIRegisterInfo &TRI; const AMDGPURegisterBankInfo &RBI; |