Home | History | Annotate | Download | only in XCore
      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
      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 
     12 define 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 
     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
     29 }
     30 ; CHECK-LABEL: maccu:
     31 ; CHECK: maccu r1, r0, r3, r2
     32 ; CHECK-NEXT: retsp 0
     33 
     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
     41 }
     42 ; CHECK-LABEL: maccs:
     43 ; CHECK: maccs r1, r0, r3, r2
     44 ; CHECK-NEXT: retsp 0
     45 
     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
     56 }
     57 ; CHECK-LABEL: lmul:
     58 ; CHECK: lmul r1, r0, r1, r0, r2, r3
     59 ; CHECK-NEXT: retsp 0
     60