• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; RUN: llc < %s -march=xcore | FileCheck %s
2define i64 @add64(i64 %a, i64 %b) {
3	%result = add i64 %a, %b
4	ret i64 %result
5}
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
11
12define i64 @sub64(i64 %a, i64 %b) {
13	%result = sub i64 %a, %b
14	ret i64 %result
15}
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
21
22define i64 @maccu(i64 %a, i32 %b, i32 %c) {
23entry:
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
29}
30; CHECK-LABEL: maccu:
31; CHECK: maccu r1, r0, r3, r2
32; CHECK-NEXT: retsp 0
33
34define i64 @maccs(i64 %a, i32 %b, i32 %c) {
35entry:
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
41}
42; CHECK-LABEL: maccs:
43; CHECK: maccs r1, r0, r3, r2
44; CHECK-NEXT: retsp 0
45
46define i64 @lmul(i32 %a, i32 %b, i32 %c, i32 %d) {
47entry:
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
56}
57; CHECK-LABEL: lmul:
58; CHECK: lmul r1, r0, r1, r0, r2, r3
59; CHECK-NEXT: retsp 0
60