brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · a461d24 Raw
68 lines · plain
1; RUN: llc -mtriple=xcore < %s | FileCheck %s2 3; Only needs one ladd4define i64 @f1(i32 %x, i32 %y) nounwind {5entry:6	%0 = zext i32 %x to i64		; <i64> [#uses=1]7	%1 = zext i32 %y to i64		; <i64> [#uses=1]8	%2 = add i64 %1, %0		; <i64> [#uses=1]9	ret i64 %210}11; CHECK-LABEL: f1:12; CHECK: ldc r2, 013; CHECK-NEXT: ladd r1, r0, r1, r0, r214; CHECK-NEXT: retsp 015 16; Only needs one lsub and one neg17define i64 @f2(i32 %x, i32 %y) nounwind {18entry:19	%0 = zext i32 %x to i64		; <i64> [#uses=1]20	%1 = zext i32 %y to i64		; <i64> [#uses=1]21	%2 = sub i64 %1, %0		; <i64> [#uses=1]22	ret i64 %223}24; CHECK-LABEL: f2:25; CHECK: ldc r2, 026; CHECK-NEXT: lsub r1, r0, r1, r0, r227; CHECK-NEXT: neg r1, r128; CHECK-NEXT: retsp 029 30; Should compile to one ladd and one add31define i64 @f3(i64 %x, i32 %y) nounwind {32entry:33	%0 = zext i32 %y to i64		; <i64> [#uses=1]34	%1 = add i64 %x, %0		; <i64> [#uses=1]35	ret i64 %136}37; CHECK-LABEL: f3:38; CHECK: ldc r3, 039; CHECK-NEXT: ladd r2, r0, r0, r2, r340; CHECK-NEXT: add r1, r1, r241; CHECK-NEXT: retsp 042 43; Should compile to one ladd and one add44define i64 @f4(i32 %x, i64 %y) nounwind {45entry:46	%0 = zext i32 %x to i64		; <i64> [#uses=1]47	%1 = add i64 %0, %y		; <i64> [#uses=1]48	ret i64 %149}50; CHECK-LABEL: f4:51; CHECK: ldc r3, 052; CHECK-NEXT: ladd r1, r0, r0, r1, r353; CHECK-NEXT: add r1, r2, r154; CHECK-NEXT: retsp 055 56; Should compile to one lsub and one sub57define i64 @f5(i64 %x, i32 %y) nounwind {58entry:59	%0 = zext i32 %y to i64		; <i64> [#uses=1]60	%1 = sub i64 %x, %0		; <i64> [#uses=1]61	ret i64 %162}63; CHECK-LABEL: f5:64; CHECK: ldc r3, 065; CHECK-NEXT: lsub r2, r0, r0, r2, r366; CHECK-NEXT: sub r1, r1, r267; CHECK-NEXT: retsp 068