[llvm] r280974 - AMDGPU: Sign extend constants when splitting them

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 8 10:44:38 PDT 2016


Author: arsenm
Date: Thu Sep  8 12:44:36 2016
New Revision: 280974

URL: http://llvm.org/viewvc/llvm-project?rev=280974&view=rev
Log:
AMDGPU: Sign extend constants when splitting them

This will confuse later passes which try to look at the
immediate value and don't truncate first.

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

Modified: llvm/trunk/lib/Target/AMDGPU/SIInstrInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/SIInstrInfo.cpp?rev=280974&r1=280973&r2=280974&view=diff
==============================================================================
--- llvm/trunk/lib/Target/AMDGPU/SIInstrInfo.cpp (original)
+++ llvm/trunk/lib/Target/AMDGPU/SIInstrInfo.cpp Thu Sep  8 12:44:36 2016
@@ -1990,11 +1990,10 @@ MachineOperand SIInstrInfo::buildExtract
   unsigned SubIdx,
   const TargetRegisterClass *SubRC) const {
   if (Op.isImm()) {
-    // XXX - Is there a better way to do this?
     if (SubIdx == AMDGPU::sub0)
-      return MachineOperand::CreateImm(Op.getImm() & 0xFFFFFFFF);
+      return MachineOperand::CreateImm(static_cast<int32_t>(Op.getImm()));
     if (SubIdx == AMDGPU::sub1)
-      return MachineOperand::CreateImm(Op.getImm() >> 32);
+      return MachineOperand::CreateImm(static_cast<int32_t>(Op.getImm() >> 32));
 
     llvm_unreachable("Unhandled register index for immediate");
   }




More information about the llvm-commits mailing list