brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.1 KiB · 78d18fe Raw
89 lines · plain
1; RUN: llc -mtriple=arc < %s | FileCheck %s2 3 4declare i32 @goo1(i32) nounwind5 6; CHECK-LABEL: call17; CHECK: bl @goo18define i32 @call1(i32 %a) nounwind {9entry:10  %x = call i32 @goo1(i32 %a)11  ret i32 %x12}13 14declare i32 @goo2(i32, i32, i32, i32, i32, i32, i32, i32) nounwind15 16; CHECK-LABEL: call217; CHECK-DAG: mov %r0, 018; CHECK-DAG: mov %r1, 119; CHECK-DAG: mov %r2, 220; CHECK-DAG: mov %r3, 321; CHECK-DAG: mov %r4, 422; CHECK-DAG: mov %r5, 523; CHECK-DAG: mov %r6, 624; CHECK-DAG: mov %r7, 725; CHECK: bl @goo226define i32 @call2() nounwind {27entry:28  %x = call i32 @goo2(i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7)29  ret i32 %x30}31 32declare i32 @goo3(i64, i32, i64) nounwind33; call goo3(0xEEEEEEEE77777777, 0x55555555, 0xAAAAAAAA33333333)34; 0xEEEEEEEE == -28633115435; 0x77777777 == 200431807136; 0x55555555 == 143165576537; 0xAAAAAAAA == -143165576638; 0x33333333 == 85899345939; CHECK-LABEL: call340; CHECK-DAG: mov %r0, 200431807141; CHECK-DAG: mov %r1, -28633115442; CHECK-DAG: mov %r2, 143165576543; CHECK-DAG: mov %r3, 85899345944; CHECK-DAG: mov %r4, -143165576645; CHECK: bl @goo346define i32 @call3() nounwind {47entry:48  %x = call i32 @goo3(i64 17216961133457930103,49                      i32 1431655765,50                      i64 12297829380468716339)51  ret i32 %x52}53 54declare i64 @goo4()55 56; 64-bit values are returned in r0r157; CHECK-LABEL: call458; CHECK: bl @goo459; CHECK: lsr %r0, %r1, 1660define i32 @call4() nounwind {61  %x = call i64 @goo4()62  %v1 = lshr i64 %x, 4863  %v = trunc i64 %v1 to i3264  ret i32 %v65}66 67; 0x0000ffff00ff00ff=28147069845529568; returned as r0=0x00ff00ff=16711935, r1=0x0000ffff=6553569; CHECK-LABEL: ret170; CHECK-DAG: mov %r1, 6553571; CHECK-DAG: mov %r0, 1671193572define i64 @ret1() nounwind {73  ret i64 28147069845529574}75 76@funcptr = external global ptr, align 477; Indirect calls use JL78; CHECK-LABEL: call_indirect79; CHECK-DAG: ld %r[[REG:[0-9]+]], [@funcptr]80; CHECK-DAG: mov %r0, 1281; CHECK:     jl [%r[[REG]]]82define i32 @call_indirect(i32 %x) nounwind {83  %f = load ptr, ptr @funcptr, align 484  %call = call i32 %f(i32 12)85  %add = add nsw i32 %call, %x86  ret i32 %add87}88 89