brintos

brintos / llvm-project-archived public Read only

0
0
Text · 12.4 KiB · 6e68dde Raw
245 lines · plain
1; RUN: not llvm-as < %s -o /dev/null 2>&1 | FileCheck %s2 3declare ptr @llvm.returnaddress(i32)4define void @return_address(i32 %var) {5  ; CHECK: immarg operand has non-immediate parameter6  ; CHECK-NEXT: i32 %var7  ; CHECK-NEXT: %result = call ptr @llvm.returnaddress(i32 %var)8  %result = call ptr @llvm.returnaddress(i32 %var)9  ret void10}11 12declare ptr @llvm.frameaddress(i32)13define void @frame_address(i32 %var) {14  ; CHECK: immarg operand has non-immediate parameter15  ; CHECK-NEXT: i32 %var16  ; CHECK-NEXT: %result = call ptr @llvm.frameaddress.p0(i32 %var)17  %result = call ptr @llvm.frameaddress(i32 %var)18  ret void19}20 21declare void @llvm.memcpy.p0.p0.i32(ptr nocapture, ptr nocapture, i32, i1)22define void @memcpy(ptr %dest, ptr %src, i1 %is.volatile) {23  ; CHECK: immarg operand has non-immediate parameter24  ; CHECK-NEXT: i1 %is.volatile25  ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i32(ptr %dest, ptr %src, i32 8, i1 %is.volatile)26  call void @llvm.memcpy.p0.p0.i32(ptr %dest, ptr %src, i32 8, i1 %is.volatile)27  ret void28}29 30declare void @llvm.memcpy.inline.p0.p0.i32(ptr nocapture, ptr nocapture, i32, i1)31define void @memcpy_inline_is_volatile(ptr %dest, ptr %src, i1 %is.volatile) {32  ; CHECK: immarg operand has non-immediate parameter33  ; CHECK-NEXT: i1 %is.volatile34  ; CHECK-NEXT: call void @llvm.memcpy.inline.p0.p0.i32(ptr %dest, ptr %src, i32 8, i1 %is.volatile)35  call void @llvm.memcpy.inline.p0.p0.i32(ptr %dest, ptr %src, i32 8, i1 %is.volatile)36  ret void37}38 39declare void @llvm.memmove.p0.p0.i32(ptr nocapture, ptr nocapture, i32, i1)40define void @memmove(ptr %dest, ptr %src, i1 %is.volatile) {41  ; CHECK: immarg operand has non-immediate parameter42  ; CHECK-NEXT: i1 %is.volatile43  ; CHECK-NEXT: call void @llvm.memmove.p0.p0.i32(ptr %dest, ptr %src, i32 8, i1 %is.volatile)44  call void @llvm.memmove.p0.p0.i32(ptr %dest, ptr %src, i32 8, i1 %is.volatile)45  ret void46}47 48declare void @llvm.memset.p0.i32(ptr nocapture, i8, i32, i1)49define void @memset(ptr %dest, i8 %val, i1 %is.volatile) {50  ; CHECK: immarg operand has non-immediate parameter51  ; CHECK-NEXT: i1 %is.volatile52  ; CHECK-NEXT: call void @llvm.memset.p0.i32(ptr %dest, i8 %val, i32 8, i1 %is.volatile)53  call void @llvm.memset.p0.i32(ptr %dest, i8 %val, i32 8, i1 %is.volatile)54  ret void55}56 57declare void @llvm.memset.inline.p0.i32(ptr nocapture, i8, i32, i1)58define void @memset_inline_is_volatile(ptr %dest, i8 %value, i1 %is.volatile) {59  ; CHECK: immarg operand has non-immediate parameter60  ; CHECK-NEXT: i1 %is.volatile61  ; CHECK-NEXT: call void @llvm.memset.inline.p0.i32(ptr %dest, i8 %value, i32 8, i1 %is.volatile)62  call void @llvm.memset.inline.p0.i32(ptr %dest, i8 %value, i32 8, i1 %is.volatile)63  ret void64}65 66declare void @llvm.experimental.memset.pattern.p0.i32.i32(ptr nocapture, i32, i32, i1)67define void @memset_pattern_is_volatile(ptr %dest, i32 %value, i1 %is.volatile) {68  ; CHECK: immarg operand has non-immediate parameter69  ; CHECK-NEXT: i1 %is.volatile70  ; CHECK-NEXT: call void @llvm.experimental.memset.pattern.p0.i32.i32(ptr %dest, i32 %value, i32 8, i1 %is.volatile)71  call void @llvm.experimental.memset.pattern.p0.i32.i32(ptr %dest, i32 %value, i32 8, i1 %is.volatile)72  ret void73}74 75declare i64 @llvm.objectsize.i64.p0(ptr, i1, i1, i1)76define void @objectsize(ptr %ptr, i1 %a, i1 %b, i1 %c) {77  ; CHECK: immarg operand has non-immediate parameter78  ; CHECK-NEXT: i1 %a79  ; CHECK-NEXT: %val0 = call i64 @llvm.objectsize.i64.p0(ptr %ptr, i1 %a, i1 false, i1 false)80  %val0 = call i64 @llvm.objectsize.i64.p0(ptr %ptr, i1 %a, i1 false, i1 false)81 82  ; CHECK: immarg operand has non-immediate parameter83  ; CHECK-NEXT: i1 %b84  ; CHECK-NEXT: %val1 = call i64 @llvm.objectsize.i64.p0(ptr %ptr, i1 false, i1 %b, i1 false)85  %val1 = call i64 @llvm.objectsize.i64.p0(ptr %ptr, i1 false, i1 %b, i1 false)86 87  ; CHECK: immarg operand has non-immediate parameter88  ; CHECK-NEXT: i1 %c89  ; CHECK-NEXT: %val2 = call i64 @llvm.objectsize.i64.p0(ptr %ptr, i1 false, i1 false, i1 %c)90  %val2 = call i64 @llvm.objectsize.i64.p0(ptr %ptr, i1 false, i1 false, i1 %c)91  ret void92}93 94declare i64 @llvm.smul.fix.i64(i64, i64, i32)95define i64 @smul_fix(i64 %arg0, i64 %arg1, i32 %arg2) {96  ; CHECK: immarg operand has non-immediate parameter97  ; CHECK-NEXT: i32 %arg298  ; CHECK-NEXT: %ret = call i64 @llvm.smul.fix.i64(i64 %arg0, i64 %arg1, i32 %arg2)99  %ret = call i64 @llvm.smul.fix.i64(i64 %arg0, i64 %arg1, i32 %arg2)100  ret i64 %ret101}102 103declare i64 @llvm.smul.fix.sat.i64(i64, i64, i32)104define i64 @smul_fix_sat(i64 %arg0, i64 %arg1, i32 %arg2) {105  ; CHECK: immarg operand has non-immediate parameter106  ; CHECK-NEXT: i32 %arg2107  ; CHECK-NEXT: %ret = call i64 @llvm.smul.fix.sat.i64(i64 %arg0, i64 %arg1, i32 %arg2)108  %ret = call i64 @llvm.smul.fix.sat.i64(i64 %arg0, i64 %arg1, i32 %arg2)109  ret i64 %ret110}111 112declare i64 @llvm.umul.fix.i64(i64, i64, i32)113define i64 @umul_fix(i64 %arg0, i64 %arg1, i32 %arg2) {114  ; CHECK: immarg operand has non-immediate parameter115  ; CHECK-NEXT: i32 %arg2116  ; CHECK-NEXT: %ret = call i64 @llvm.umul.fix.i64(i64 %arg0, i64 %arg1, i32 %arg2)117  %ret = call i64 @llvm.umul.fix.i64(i64 %arg0, i64 %arg1, i32 %arg2)118  ret i64 %ret119}120 121declare i64 @llvm.umul.fix.sat.i64(i64, i64, i32)122define i64 @umul_fix_sat(i64 %arg0, i64 %arg1, i32 %arg2) {123  ; CHECK: immarg operand has non-immediate parameter124  ; CHECK-NEXT: i32 %arg2125  ; CHECK-NEXT: %ret = call i64 @llvm.umul.fix.sat.i64(i64 %arg0, i64 %arg1, i32 %arg2)126  %ret = call i64 @llvm.umul.fix.sat.i64(i64 %arg0, i64 %arg1, i32 %arg2)127  ret i64 %ret128}129 130declare ptr @llvm.invariant.start.p0(i64, ptr)131define void @test_invariant_start(i64 %arg0, ptr %ptr) {132  ; CHECK: immarg operand has non-immediate parameter133  ; CHECK-NEXT: i64 %arg0134  ; CHECK-NEXT: call ptr @llvm.invariant.start.p0(i64 %arg0, ptr %ptr)135  call ptr @llvm.invariant.start.p0(i64 %arg0, ptr %ptr)136  ret void137}138 139declare void @llvm.invariant.end.p0(ptr, i64, ptr)140define void @test_invariant_end(ptr %scope, i64 %arg1, ptr %ptr) {141  ; CHECK: immarg operand has non-immediate parameter142  ; CHECK-NEXT: i64 %arg1143  ; CHECK-NEXT: call void @llvm.invariant.end.p0(ptr %scope, i64 %arg1, ptr %ptr)144  call void @llvm.invariant.end.p0(ptr %scope, i64 %arg1, ptr %ptr)145  ret void146}147 148declare void @llvm.prefetch(ptr, i32, i32, i32)149define void @test_prefetch(ptr %ptr, i32 %arg0, i32 %arg1) {150  ; CHECK: immarg operand has non-immediate parameter151  ; CHECK-NEXT: i32 %arg0152  ; CHECK-NEXT: call void @llvm.prefetch.p0(ptr %ptr, i32 %arg0, i32 0, i32 0)153  ; CHECK: immarg operand has non-immediate parameter154  ; CHECK-NEXT:  i32 %arg1155  call void @llvm.prefetch(ptr %ptr, i32 %arg0, i32 0, i32 0)156  call void @llvm.prefetch(ptr %ptr, i32 0, i32 %arg1, i32 0)157  ret void158}159 160declare ptr @llvm.localrecover(ptr, ptr, i32)161define void @test_localrecover(ptr %func, ptr %fp, i32 %idx) {162  ; CHECK: immarg operand has non-immediate parameter163  ; CHECK-NEXT: i32 %idx164  ; CHECK-NEXT: call ptr @llvm.localrecover(ptr %func, ptr %fp, i32 %idx)165  call ptr @llvm.localrecover(ptr %func, ptr %fp, i32 %idx)166  ret void167}168 169declare token @llvm.experimental.gc.statepoint.p0(i64, i32, ptr, i32, i32, ...)170 171define private void @f() {172  ret void173}174 175define void @calls_statepoint(ptr addrspace(1) %arg0, i64 %arg1, i32 %arg2, i32 %arg4, i32 %arg5) gc "statepoint-example" {176  ; CHECK: immarg operand has non-immediate parameter177  ; CHECK-NEXT: i64 %arg1178  ; CHECK-NEXT: %safepoint0 = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 %arg1, i32 0, ptr @f, i32 0, i32 0, i32 0, i32 5, i32 0, i32 0, i32 0, i32 10, i32 0, ptr addrspace(1) %arg0, ptr addrspace(1) %arg0, ptr addrspace(1) %arg0, ptr addrspace(1) %arg0)179  ; CHECK: immarg operand has non-immediate parameter180  ; CHECK-NEXT: i32 %arg2181  ; CHECK-NEXT: %safepoint1 = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 0, i32 %arg2, ptr @f, i32 0, i32 0, i32 0, i32 5, i32 0, i32 0, i32 0, i32 10, i32 0, ptr addrspace(1) %arg0, ptr addrspace(1) %arg0, ptr addrspace(1) %arg0, ptr addrspace(1) %arg0)182  ; CHECK: immarg operand has non-immediate parameter183  ; CHECK-NEXT: i32 %arg4184  ; CHECK-NEXT: %safepoint2 = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 0, i32 0, ptr @f, i32 %arg4, i32 0, i32 0, i32 5, i32 0, i32 0, i32 0, i32 10, i32 0, ptr addrspace(1) %arg0, ptr addrspace(1) %arg0, ptr addrspace(1) %arg0, ptr addrspace(1) %arg0)185  ; CHECK: immarg operand has non-immediate parameter186  ; CHECK-NEXT: i32 %arg5187  ; CHECK-NEXT: %safepoint3 = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 0, i32 0, ptr @f, i32 0, i32 %arg5, i32 0, i32 5, i32 0, i32 0, i32 0, i32 10, i32 0, ptr addrspace(1) %arg0, ptr addrspace(1) %arg0, ptr addrspace(1) %arg0, ptr addrspace(1) %arg0)188  %safepoint0 = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 %arg1, i32 0, ptr @f, i32 0, i32 0, i32 0, i32 5, i32 0, i32 0, i32 0, i32 10, i32 0, ptr addrspace(1) %arg0, ptr addrspace(1) %arg0, ptr addrspace(1) %arg0, ptr addrspace(1) %arg0)189  %safepoint1 = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 0, i32 %arg2, ptr @f, i32 0, i32 0, i32 0, i32 5, i32 0, i32 0, i32 0, i32 10, i32 0, ptr addrspace(1) %arg0, ptr addrspace(1) %arg0, ptr addrspace(1) %arg0, ptr addrspace(1) %arg0)190  %safepoint2 = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 0, i32 0, ptr @f, i32 %arg4, i32 0, i32 0, i32 5, i32 0, i32 0, i32 0, i32 10, i32 0, ptr addrspace(1) %arg0, ptr addrspace(1) %arg0, ptr addrspace(1) %arg0, ptr addrspace(1) %arg0)191  %safepoint3 = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 0, i32 0, ptr @f, i32 0, i32 %arg5, i32 0, i32 5, i32 0, i32 0, i32 0, i32 10, i32 0, ptr addrspace(1) %arg0, ptr addrspace(1) %arg0, ptr addrspace(1) %arg0, ptr addrspace(1) %arg0)192  ret void193}194 195declare void @llvm.experimental.patchpoint.void(i64, i32, ptr, i32, ...)196declare i64 @llvm.experimental.patchpoint.i64(i64, i32, ptr, i32, ...)197 198define void @test_patchpoint(i64 %arg0, i32 %arg1, i32 %arg2) {199  ; CHECK: immarg operand has non-immediate parameter200  ; CHECK-NEXT: i64 %arg0201  ; CHECK-NEXT: call void (i64, i32, ptr, i32, ...) @llvm.experimental.patchpoint.void(i64 %arg0, i32 4, ptr null, i32 0)202  ; CHECK: immarg operand has non-immediate parameter203  ; CHECK-NEXT: i32 %arg1204  ; CHECK-NEXT: call void (i64, i32, ptr, i32, ...) @llvm.experimental.patchpoint.void(i64 0, i32 %arg1, ptr null, i32 0)205  ; CHECK: immarg operand has non-immediate parameter206  ; CHECK-NEXT: i32 %arg2207  ; CHECK-NEXT: call void (i64, i32, ptr, i32, ...) @llvm.experimental.patchpoint.void(i64 0, i32 4, ptr null, i32 %arg2)208  ; CHECK: immarg operand has non-immediate parameter209  ; CHECK-NEXT: i64 %arg0210  ; CHECK-NEXT: %patchpoint0 = call i64 (i64, i32, ptr, i32, ...) @llvm.experimental.patchpoint.i64(i64 %arg0, i32 4, ptr null, i32 0)211  ; CHECK: immarg operand has non-immediate parameter212  ; CHECK-NEXT: i32 %arg1213  ; CHECK-NEXT: %patchpoint1 = call i64 (i64, i32, ptr, i32, ...) @llvm.experimental.patchpoint.i64(i64 0, i32 %arg1, ptr null, i32 0)214  ; CHECK: immarg operand has non-immediate parameter215  ; CHECK-NEXT: i32 %arg2216  ; CHECK-NEXT: %patchpoint2 = call i64 (i64, i32, ptr, i32, ...) @llvm.experimental.patchpoint.i64(i64 0, i32 4, ptr null, i32 %arg2)217  call void (i64, i32, ptr, i32, ...) @llvm.experimental.patchpoint.void(i64 %arg0, i32 4, ptr null, i32 0)218  call void (i64, i32, ptr, i32, ...) @llvm.experimental.patchpoint.void(i64 0, i32 %arg1, ptr null, i32 0)219  call void (i64, i32, ptr, i32, ...) @llvm.experimental.patchpoint.void(i64 0, i32 4, ptr null, i32 %arg2)220  %patchpoint0 = call i64 (i64, i32, ptr, i32, ...) @llvm.experimental.patchpoint.i64(i64 %arg0, i32 4, ptr null, i32 0)221  %patchpoint1 = call i64 (i64, i32, ptr, i32, ...) @llvm.experimental.patchpoint.i64(i64 0, i32 %arg1, ptr null, i32 0)222  %patchpoint2 = call i64 (i64, i32, ptr, i32, ...) @llvm.experimental.patchpoint.i64(i64 0, i32 4, ptr null, i32 %arg2)223  ret void224}225 226declare void @llvm.hwasan.check.memaccess(ptr, ptr, i32)227 228define void @hwasan_check_memaccess(ptr %arg0,ptr %arg1, i32 %arg2) {229  ; CHECK: immarg operand has non-immediate parameter230  ; CHECK: i32 %arg2231  ; CHECK: call void @llvm.hwasan.check.memaccess(ptr %arg0, ptr %arg1, i32 %arg2)232  call void @llvm.hwasan.check.memaccess(ptr %arg0,ptr %arg1, i32 %arg2)233  ret void234}235 236declare void @llvm.eh.sjlj.callsite(i32)237 238define void @eh_sjlj_callsite(i32 %arg0) {239  ; CHECK: immarg operand has non-immediate parameter240  ; CHECK: i32 %arg0241  ; CHECK: call void @llvm.eh.sjlj.callsite(i32 %arg0)242  call void @llvm.eh.sjlj.callsite(i32 %arg0)243  ret void244}245