summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2013-04-02 04:09:23 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2013-04-02 04:09:23 +0000
commit73c5f80ec9913c9bd14955c0bd1dc8a62778f21a (patch)
treecc98dea75e94b15d198640d51546297f5751e686 /test
parent39e75544dc2b695997218ce85f7ca5b465e9c154 (diff)
downloadllvm-73c5f80ec9913c9bd14955c0bd1dc8a62778f21a.tar.gz
llvm-73c5f80ec9913c9bd14955c0bd1dc8a62778f21a.tar.bz2
llvm-73c5f80ec9913c9bd14955c0bd1dc8a62778f21a.tar.xz
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178527 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r--test/CodeGen/SPARC/64bit.ll21
1 files changed, 21 insertions, 0 deletions
diff --git a/test/CodeGen/SPARC/64bit.ll b/test/CodeGen/SPARC/64bit.ll
index b0c9852ef2..b5260a5a6f 100644
--- a/test/CodeGen/SPARC/64bit.ll
+++ b/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
+}