[llvm] r179985 - Fix the SETHIimm pattern for 64-bit code.
Jakob Stoklund Olesen
stoklund at 2pi.dk
Sun Apr 21 14:18:04 PDT 2013
Author: stoklund
Date: Sun Apr 21 16:18:03 2013
New Revision: 179985
URL: http://llvm.org/viewvc/llvm-project?rev=179985&view=rev
Log:
Fix the SETHIimm pattern for 64-bit code.
Don't ignore the high 32 bits of the immediate.
Modified:
llvm/trunk/lib/Target/Sparc/SparcInstrInfo.td
llvm/trunk/test/CodeGen/SPARC/64bit.ll
Modified: llvm/trunk/lib/Target/Sparc/SparcInstrInfo.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Sparc/SparcInstrInfo.td?rev=179985&r1=179984&r2=179985&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Sparc/SparcInstrInfo.td (original)
+++ llvm/trunk/lib/Target/Sparc/SparcInstrInfo.td Sun Apr 21 16:18:03 2013
@@ -64,8 +64,7 @@ def HI22 : SDNodeXForm<imm, [{
}]>;
def SETHIimm : PatLeaf<(imm), [{
- return (((unsigned)N->getZExtValue() >> 10) << 10) ==
- (unsigned)N->getZExtValue();
+ return isShiftedUInt<22, 10>(N->getZExtValue());
}], HI22>;
// Addressing modes.
Modified: llvm/trunk/test/CodeGen/SPARC/64bit.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/SPARC/64bit.ll?rev=179985&r1=179984&r2=179985&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/SPARC/64bit.ll (original)
+++ llvm/trunk/test/CodeGen/SPARC/64bit.ll Sun Apr 21 16:18:03 2013
@@ -66,6 +66,12 @@ define i64 @ret_bigimm() {
ret i64 6800754272627607872
}
+; CHECK: ret_bigimm2
+; CHECK: sethi 1048576
+define i64 @ret_bigimm2() {
+ ret i64 4611686018427387904 ; 0x4000000000000000
+}
+
; CHECK: reg_reg_alu
; CHECK: add %i0, %i1, [[R0:%[goli][0-7]]]
; CHECK: sub [[R0]], %i2, [[R1:%[goli][0-7]]]
More information about the llvm-commits
mailing list