[llvm] r373842 - AMDGPU/GlobalISel: Fall back on weird G_EXTRACT offsets

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Sat Oct 5 18:41:22 PDT 2019


Author: arsenm
Date: Sat Oct  5 18:41:22 2019
New Revision: 373842

URL: http://llvm.org/viewvc/llvm-project?rev=373842&view=rev
Log:
AMDGPU/GlobalISel: Fall back on weird G_EXTRACT offsets

Modified:
    llvm/trunk/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp

Modified: llvm/trunk/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp?rev=373842&r1=373841&r2=373842&view=diff
==============================================================================
--- llvm/trunk/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp (original)
+++ llvm/trunk/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp Sat Oct  5 18:41:22 2019
@@ -434,8 +434,11 @@ bool AMDGPUInstructionSelector::selectG_
 
 bool AMDGPUInstructionSelector::selectG_EXTRACT(MachineInstr &I) const {
   MachineBasicBlock *BB = I.getParent();
-  assert(I.getOperand(2).getImm() % 32 == 0);
-  unsigned SubReg = TRI.getSubRegFromChannel(I.getOperand(2).getImm() / 32);
+  unsigned Offset = I.getOperand(2).getImm();
+  if (Offset % 32 != 0)
+    return false;
+
+  unsigned SubReg = TRI.getSubRegFromChannel(Offset / 32);
   const DebugLoc &DL = I.getDebugLoc();
   MachineInstr *Copy = BuildMI(*BB, &I, DL, TII.get(TargetOpcode::COPY),
                                I.getOperand(0).getReg())




More information about the llvm-commits mailing list