diff options
| author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2013-04-02 04:09:23 +0000 |
|---|---|---|
| committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2013-04-02 04:09:23 +0000 |
| commit | 917e07f095449e981699569559bf6ed5346d7e64 (patch) | |
| tree | ee30c5bf8bad1624150ec1870e5f68458f1ca749 /llvm/test/CodeGen/SPARC | |
| parent | bddb20eeef9c8a10d6c280c762e03987c0a5c2ee (diff) | |
| download | bcm5719-llvm-917e07f095449e981699569559bf6ed5346d7e64.tar.gz bcm5719-llvm-917e07f095449e981699569559bf6ed5346d7e64.zip | |
Basic 64-bit ALU operations.
SPARC v9 extends all ALU instructions to 64 bits, so we simply need to
add patterns to use them for both i32 and i64 values.
llvm-svn: 178527
Diffstat (limited to 'llvm/test/CodeGen/SPARC')
| -rw-r--r-- | llvm/test/CodeGen/SPARC/64bit.ll | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/SPARC/64bit.ll b/llvm/test/CodeGen/SPARC/64bit.ll index b0c9852ef25..b5260a5a6f8 100644 --- a/llvm/test/CodeGen/SPARC/64bit.ll +++ b/llvm/test/CodeGen/SPARC/64bit.ll @@ -65,3 +65,24 @@ define i64 @ret_nimm33() { define i64 @ret_bigimm() { ret i64 6800754272627607872 } + +; CHECK: reg_reg_alu +; CHECK: add %i0, %i1, [[R0:%[goli][0-7]]] +; CHECK: sub [[R0]], %i2, [[R1:%[goli][0-7]]] +; CHECK: andn [[R1]], %i0, %i0 +define i64 @reg_reg_alu(i64 %x, i64 %y, i64 %z) { + %a = add i64 %x, %y + %b = sub i64 %a, %z + %c = xor i64 %x, -1 + %d = and i64 %b, %c + ret i64 %d +} + +; CHECK: reg_imm_alu +; CHECK: add %i0, -5, [[R0:%[goli][0-7]]] +; CHECK: xor [[R0]], 2, %i0 +define i64 @reg_imm_alu(i64 %x, i64 %y, i64 %z) { + %a = add i64 %x, -5 + %b = xor i64 %a, 2 + ret i64 %b +} |

