diff options
author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2013-04-21 21:18:03 +0000 |
---|---|---|
committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2013-04-21 21:18:03 +0000 |
commit | 2c6b5a8d33a650b9a5b838f6bc8887c8f195f944 (patch) | |
tree | c4ae546e1590298c2a7c5e66baf47d5309784e2e | |
parent | 94a720c73e11f8b2f532d3dfb4e145c6b35a2ea2 (diff) | |
download | external_llvm-2c6b5a8d33a650b9a5b838f6bc8887c8f195f944.zip external_llvm-2c6b5a8d33a650b9a5b838f6bc8887c8f195f944.tar.gz external_llvm-2c6b5a8d33a650b9a5b838f6bc8887c8f195f944.tar.bz2 |
Fix the SETHIimm pattern for 64-bit code.
Don't ignore the high 32 bits of the immediate.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179985 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Target/Sparc/SparcInstrInfo.td | 3 | ||||
-rw-r--r-- | test/CodeGen/SPARC/64bit.ll | 6 |
2 files changed, 7 insertions, 2 deletions
diff --git a/lib/Target/Sparc/SparcInstrInfo.td b/lib/Target/Sparc/SparcInstrInfo.td index 07e07f1..baefb06 100644 --- a/lib/Target/Sparc/SparcInstrInfo.td +++ b/lib/Target/Sparc/SparcInstrInfo.td @@ -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. diff --git a/test/CodeGen/SPARC/64bit.ll b/test/CodeGen/SPARC/64bit.ll index 108663b..2bbf7de 100644 --- a/test/CodeGen/SPARC/64bit.ll +++ b/test/CodeGen/SPARC/64bit.ll @@ -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]]] |