diff options
author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2013-05-19 21:47:13 +0000 |
---|---|---|
committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2013-05-19 21:47:13 +0000 |
commit | 634123e98de9c87aa1275a5ccc6b69be97d0ca71 (patch) | |
tree | 2cff598215782dbb6d995559c083f2a70ebdbac2 /test | |
parent | 60abcb786e8ff401e7d925d717e725d4a3d925b5 (diff) | |
download | llvm-634123e98de9c87aa1275a5ccc6b69be97d0ca71.tar.gz llvm-634123e98de9c87aa1275a5ccc6b69be97d0ca71.tar.bz2 llvm-634123e98de9c87aa1275a5ccc6b69be97d0ca71.tar.xz |
Don't use %g0 to materialize 0 directly.
The wired physreg doesn't work on tied operands like on MOVXCC.
Add a README note to fix this later.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182225 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r-- | test/CodeGen/SPARC/64bit.ll | 2 | ||||
-rw-r--r-- | test/CodeGen/SPARC/64cond.ll | 11 |
2 files changed, 12 insertions, 1 deletions
diff --git a/test/CodeGen/SPARC/64bit.ll b/test/CodeGen/SPARC/64bit.ll index 37dcea9891..dd6cee30b1 100644 --- a/test/CodeGen/SPARC/64bit.ll +++ b/test/CodeGen/SPARC/64bit.ll @@ -26,7 +26,7 @@ define i64 @sra_reg(i64 %a, i64 %b) { ; restore %g0, %g0, %o0 ; ; CHECK: ret_imm0 -; CHECK: or %g0, %g0, %i0 +; CHECK: or %g0, 0, %i0 define i64 @ret_imm0() { ret i64 0 } diff --git a/test/CodeGen/SPARC/64cond.ll b/test/CodeGen/SPARC/64cond.ll index 0c025b36e3..594eff6f55 100644 --- a/test/CodeGen/SPARC/64cond.ll +++ b/test/CodeGen/SPARC/64cond.ll @@ -98,3 +98,14 @@ entry: %rv = select i1 %tobool, double %a, double %b ret double %rv } + +; The MOVXCC instruction can't use %g0 for its tied operand. +; CHECK: select_consti64_xcc +; CHECK: subcc +; CHECK: movg %xcc, 123, %i0 +define i64 @select_consti64_xcc(i64 %x, i64 %y) { +entry: + %tobool = icmp sgt i64 %x, %y + %rv = select i1 %tobool, i64 123, i64 0 + ret i64 %rv +} |