brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.6 KiB · f4980c4 Raw
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