diff options
author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2013-06-07 22:55:05 +0000 |
---|---|---|
committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2013-06-07 22:55:05 +0000 |
commit | 9f812b97ba8fb1a5c4921e9358d5d4263f71e20d (patch) | |
tree | e998b9b15f098cc40bbefa67aacc4cd3145db2ba | |
parent | 1ecc5634d6ceeefa958e7632bd24516792274237 (diff) | |
download | bcm5719-llvm-9f812b97ba8fb1a5c4921e9358d5d4263f71e20d.tar.gz bcm5719-llvm-9f812b97ba8fb1a5c4921e9358d5d4263f71e20d.zip |
Add missing zextloadi1 to i64 patterns. PR16721.
llvm-svn: 183587
-rw-r--r-- | llvm/lib/Target/Sparc/SparcInstr64Bit.td | 3 | ||||
-rw-r--r-- | llvm/test/CodeGen/SPARC/64bit.ll | 8 |
2 files changed, 11 insertions, 0 deletions
diff --git a/llvm/lib/Target/Sparc/SparcInstr64Bit.td b/llvm/lib/Target/Sparc/SparcInstr64Bit.td index a37b1583dc8..9821ff402e3 100644 --- a/llvm/lib/Target/Sparc/SparcInstr64Bit.td +++ b/llvm/lib/Target/Sparc/SparcInstr64Bit.td @@ -239,6 +239,9 @@ def LDXri : F3_2<3, 0b001011, [(set i64:$dst, (load ADDRri:$addr))]>; // Extending loads to i64. +def : Pat<(i64 (zextloadi1 ADDRrr:$addr)), (LDUBrr ADDRrr:$addr)>; +def : Pat<(i64 (zextloadi1 ADDRri:$addr)), (LDUBri ADDRri:$addr)>; + def : Pat<(i64 (zextloadi8 ADDRrr:$addr)), (LDUBrr ADDRrr:$addr)>; def : Pat<(i64 (zextloadi8 ADDRri:$addr)), (LDUBri ADDRri:$addr)>; def : Pat<(i64 (extloadi8 ADDRrr:$addr)), (LDUBrr ADDRrr:$addr)>; diff --git a/llvm/test/CodeGen/SPARC/64bit.ll b/llvm/test/CodeGen/SPARC/64bit.ll index c8569419a21..a5ea4d90671 100644 --- a/llvm/test/CodeGen/SPARC/64bit.ll +++ b/llvm/test/CodeGen/SPARC/64bit.ll @@ -161,6 +161,14 @@ define i64 @loads(i64* %p, i32* %q, i32* %r, i16* %s) { ret i64 %x3 } +; CHECK: load_bool +; CHECK: ldub [%i0], %i0 +define i64 @load_bool(i1* %p) { + %a = load i1* %p + %b = zext i1 %a to i64 + ret i64 %b +} + ; CHECK: stores ; CHECK: ldx [%i0+8], [[R:%[goli][0-7]]] ; CHECK: stx [[R]], [%i0+16] |