zpu: wip - very crude stack slot pass
[llvm/zpu.git] / test / CodeGen / XCore / addsub64.ll
blobd06248022e3167e03d93f8523f74cd44150fc7e9
1 ; RUN: llc < %s -march=xcore | FileCheck %s
2 define i64 @add64(i64 %a, i64 %b) {
3         %result = add i64 %a, %b
4         ret i64 %result
6 ; CHECK: add64
7 ; CHECK: ldc r11, 0
8 ; CHECK-NEXT: ladd r2, r0, r0, r2, r11
9 ; CHECK-NEXT: ladd r2, r1, r1, r3, r2
10 ; CHECK-NEXT: retsp 0
12 define i64 @sub64(i64 %a, i64 %b) {
13         %result = sub i64 %a, %b
14         ret i64 %result
16 ; CHECK: sub64
17 ; CHECK: ldc r11, 0
18 ; CHECK-NEXT: lsub r2, r0, r0, r2, r11
19 ; CHECK-NEXT: lsub r2, r1, r1, r3, r2
20 ; CHECK-NEXT: retsp 0
22 define i64 @maccu(i64 %a, i32 %b, i32 %c) {
23 entry:
24         %0 = zext i32 %b to i64
25         %1 = zext i32 %c to i64
26         %2 = mul i64 %1, %0
27         %3 = add i64 %2, %a
28         ret i64 %3
30 ; CHECK: maccu:
31 ; CHECK: maccu r1, r0, r3, r2
32 ; CHECK-NEXT: retsp 0
34 define i64 @maccs(i64 %a, i32 %b, i32 %c) {
35 entry:
36         %0 = sext i32 %b to i64
37         %1 = sext i32 %c to i64
38         %2 = mul i64 %1, %0
39         %3 = add i64 %2, %a
40         ret i64 %3
42 ; CHECK: maccs:
43 ; CHECK: maccs r1, r0, r3, r2
44 ; CHECK-NEXT: retsp 0
46 define i64 @lmul(i32 %a, i32 %b, i32 %c, i32 %d) {
47 entry:
48         %0 = zext i32 %a to i64
49         %1 = zext i32 %b to i64
50         %2 = zext i32 %c to i64
51         %3 = zext i32 %d to i64
52         %4 = mul i64 %1, %0
53         %5 = add i64 %4, %2
54         %6 = add i64 %5, %3
55         ret i64 %6
57 ; CHECK: lmul:
58 ; CHECK: lmul r1, r0, r1, r0, r2, r3
59 ; CHECK-NEXT: retsp 0