112 lines · plain
1; RUN: not llvm-as %s -o /dev/null 2>&1 | FileCheck %s2 3declare void @llvm.arm.cdp(i32, i32, i32, i32, i32, i32) nounwind4 5define void @cdp(i32 %a) #0 {6 ; CHECK: immarg operand has non-immediate parameter7 ; CHECK-NEXT: %load = load i32, ptr %a.addr, align 48 ; CHECK-NEXT: call void @llvm.arm.cdp(i32 %load, i32 2, i32 3, i32 4, i32 5, i32 6)9 %a.addr = alloca i32, align 410 store i32 %a, ptr %a.addr, align 411 %load = load i32, ptr %a.addr, align 412 call void @llvm.arm.cdp(i32 %load, i32 2, i32 3, i32 4, i32 5, i32 6)13 ret void14}15 16declare void @llvm.arm.cdp2(i32, i32, i32, i32, i32, i32) nounwind17define void @cdp2(i32 %a) #0 {18 ; CHECK: immarg operand has non-immediate parameter19 ; CHECK-NEXT: %load = load i32, ptr %a.addr, align 420 ; CHECK-NEXT: call void @llvm.arm.cdp2(i32 %load, i32 2, i32 3, i32 4, i32 5, i32 6)21 %a.addr = alloca i32, align 422 store i32 %a, ptr %a.addr, align 423 %load = load i32, ptr %a.addr, align 424 call void @llvm.arm.cdp2(i32 %load, i32 2, i32 3, i32 4, i32 5, i32 6)25 ret void26}27 28declare { i32, i32 } @llvm.arm.mrrc(i32, i32, i32) nounwind29define void @mrrc(i32 %arg0, i32 %arg1, i32 %arg2) #0 {30 ; CHECK: immarg operand has non-immediate parameter31 ; CHECK-NEXT: i32 %arg032 ; CHECK-NEXT: %ret0 = call { i32, i32 } @llvm.arm.mrrc(i32 %arg0, i32 0, i32 0)33 %ret0 = call { i32, i32 } @llvm.arm.mrrc(i32 %arg0, i32 0, i32 0)34 35 ; CHECK: immarg operand has non-immediate parameter36 ; CHECK-NEXT: i32 %arg137 ; CHECK-NEXT: %ret1 = call { i32, i32 } @llvm.arm.mrrc(i32 0, i32 %arg1, i32 0)38 %ret1 = call { i32, i32 } @llvm.arm.mrrc(i32 0, i32 %arg1, i32 0)39 40 ; CHECK: immarg operand has non-immediate parameter41 ; CHECK-NEXT: i32 %arg242 ; CHECK-NEXT: %ret2 = call { i32, i32 } @llvm.arm.mrrc(i32 0, i32 0, i32 %arg2)43 %ret2 = call { i32, i32 } @llvm.arm.mrrc(i32 0, i32 0, i32 %arg2)44 ret void45}46 47declare { i32, i32 } @llvm.arm.mrrc2(i32, i32, i32) nounwind48define void @mrrc2(i32 %arg0, i32 %arg1, i32 %arg2) #0 {49 ; CHECK: immarg operand has non-immediate parameter50 ; CHECK-NEXT: i32 %arg051 ; CHECK-NEXT: %ret0 = call { i32, i32 } @llvm.arm.mrrc2(i32 %arg0, i32 0, i32 0)52 %ret0 = call { i32, i32 } @llvm.arm.mrrc2(i32 %arg0, i32 0, i32 0)53 54 ; CHECK: immarg operand has non-immediate parameter55 ; CHECK-NEXT: i32 %arg156 ; CHECK-NEXT: %ret1 = call { i32, i32 } @llvm.arm.mrrc2(i32 0, i32 %arg1, i32 0)57 %ret1 = call { i32, i32 } @llvm.arm.mrrc2(i32 0, i32 %arg1, i32 0)58 59 ; CHECK: immarg operand has non-immediate parameter60 ; CHECK-NEXT: i32 %arg261 ; CHECK-NEXT: %ret2 = call { i32, i32 } @llvm.arm.mrrc2(i32 0, i32 0, i32 %arg2)62 %ret2 = call { i32, i32 } @llvm.arm.mrrc2(i32 0, i32 0, i32 %arg2)63 ret void64}65 66declare void @llvm.arm.mcrr(i32, i32, i32, i32, i32) nounwind67define void @mcrr(i32 %arg0, i32 %arg1, i32 %arg2, i32 %arg3, i32 %arg4) {68 ; CHECK: immarg operand has non-immediate parameter69 ; CHECK-NEXT: i32 %arg070 ; CHECK-NEXT: call void @llvm.arm.mcrr(i32 %arg0, i32 1, i32 2, i32 3, i32 4)71 call void @llvm.arm.mcrr(i32 %arg0, i32 1, i32 2, i32 3, i32 4)72 73 ; CHECK: immarg operand has non-immediate parameter74 ; CHECK-NEXT: i32 %arg175 ; CHECK-NEXT: call void @llvm.arm.mcrr(i32 0, i32 %arg1, i32 2, i32 3, i32 4)76 call void @llvm.arm.mcrr(i32 0, i32 %arg1, i32 2, i32 3, i32 4)77 78 ; CHECK: immarg operand has non-immediate parameter79 ; CHECK-NEXT: i32 %arg480 ; CHECK-NEXT: call void @llvm.arm.mcrr(i32 0, i32 1, i32 2, i32 3, i32 %arg4)81 call void @llvm.arm.mcrr(i32 0, i32 1, i32 2, i32 3, i32 %arg4)82 ret void83}84 85declare void @llvm.arm.mcrr2(i32, i32, i32, i32, i32) nounwind86define void @mcrr2(i32 %arg0, i32 %arg1, i32 %arg2, i32 %arg3, i32 %arg4) {87 ; CHECK: immarg operand has non-immediate parameter88 ; CHECK-NEXT: i32 %arg089 ; CHECK-NEXT: call void @llvm.arm.mcrr2(i32 %arg0, i32 1, i32 2, i32 3, i32 4)90 call void @llvm.arm.mcrr2(i32 %arg0, i32 1, i32 2, i32 3, i32 4)91 92 ; CHECK: immarg operand has non-immediate parameter93 ; CHECK-NEXT: i32 %arg194 ; CHECK-NEXT: call void @llvm.arm.mcrr2(i32 0, i32 %arg1, i32 2, i32 3, i32 4)95 call void @llvm.arm.mcrr2(i32 0, i32 %arg1, i32 2, i32 3, i32 4)96 97 ; CHECK: immarg operand has non-immediate parameter98 ; CHECK-NEXT: i32 %arg499 ; CHECK-NEXT: call void @llvm.arm.mcrr2(i32 0, i32 1, i32 2, i32 3, i32 %arg4)100 call void @llvm.arm.mcrr2(i32 0, i32 1, i32 2, i32 3, i32 %arg4)101 ret void102}103 104declare i32 @llvm.arm.space(i32, i32) nounwind105define i32 @space(i32 %arg0, i32 %arg1) {106 ; CHECK: immarg operand has non-immediate parameter107 ; CHECK-NEXT: i32 %arg0108 ; CHECK-NEXT: call i32 @llvm.arm.space(i32 %arg0, i32 %arg1)109 %space = call i32 @llvm.arm.space(i32 %arg0, i32 %arg1)110 ret i32 %space111}112