[ARM] Better OR's for MVE compares
[llvm-core.git] / test / Verifier / Mips / intrinsic-immarg.ll
blobdfe5aa94ab97f8b2566e1dfc7efe84a91492d4b2
1 ; RUN: not llvm-as %s -o /dev/null 2>&1 | FileCheck %s
3 define void @ld_b(<16 x i8> * %ptr, i8 * %ldptr, i32 %offset) {
4   ; CHECK: immarg operand has non-immediate parameter
5   ; CHECK-NEXT: i32 %offset
6   ; CHECK-NEXT: %a = call <16 x i8> @llvm.mips.ld.b(i8* %ldptr, i32 %offset)
7   %a = call <16 x i8> @llvm.mips.ld.b(i8* %ldptr, i32 %offset)
8   store <16 x i8> %a, <16 x i8> * %ptr, align 16
9   ret void
12 define void @st_b(<16 x i8> * %ptr, i8 * %ldptr, i32 %offset, i8 * %stptr) {
13   ; CHECK: immarg operand has non-immediate parameter
14   ; CHECK-NEXT: i32 %offset
15   ; CHECK-NEXT: call void @llvm.mips.st.b(<16 x i8> %a, i8* %stptr, i32 %offset)
16   %a = call <16 x i8> @llvm.mips.ld.b(i8* %ldptr, i32 0)
17   call void @llvm.mips.st.b(<16 x i8> %a, i8* %stptr, i32 %offset)
18   ret void
21 define void @ld_w(<4 x i32> * %ptr, i8 * %ldptr, i32 %offset) {
22   ; CHECK: immarg operand has non-immediate parameter
23   ; CHECK-NEXT: i32 %offset
24   ; CHECK-NEXT: %a = call <4 x i32> @llvm.mips.ld.w(i8* %ldptr, i32 %offset)
25   %a = call <4 x i32> @llvm.mips.ld.w(i8* %ldptr, i32 %offset)
26   store <4 x i32> %a, <4 x i32> * %ptr, align 16
27   ret void
30 define void @st_w(<8 x i16> * %ptr, i8 * %ldptr, i32 %offset, i8 * %stptr) {
31   ; CHECK: immarg operand has non-immediate parameter
32   ; CHECK-NEXT: i32 %offset
33   ; CHECK-NEXT: call void @llvm.mips.st.w(<4 x i32> %a, i8* %stptr, i32 %offset)
34   %a = call <4 x i32> @llvm.mips.ld.w(i8* %ldptr, i32 0)
35   call void @llvm.mips.st.w(<4 x i32> %a, i8* %stptr, i32 %offset)
36   ret void
39 define void @ld_h(<8 x i16> * %ptr, i8 * %ldptr, i32 %offset) {
40   ; CHECK: immarg operand has non-immediate parameter
41   ; CHECK-NEXT: i32 %offset
42   ; CHECK-NEXT: %a = call <8 x i16> @llvm.mips.ld.h(i8* %ldptr, i32 %offset)
43   %a = call <8 x i16> @llvm.mips.ld.h(i8* %ldptr, i32 %offset)
44   store <8 x i16> %a, <8 x i16> * %ptr, align 16
45   ret void
48 define void @st_h(<8 x i16> * %ptr, i8 * %ldptr, i32 %offset, i8 * %stptr) {
49   ; CHECK: immarg operand has non-immediate parameter
50   ; CHECK-NEXT: i32 %offset
51   ; CHECK-NEXT: call void @llvm.mips.st.h(<8 x i16> %a, i8* %stptr, i32 %offset)
52   %a = call <8 x i16> @llvm.mips.ld.h(i8* %ldptr, i32 0)
53   call void @llvm.mips.st.h(<8 x i16> %a, i8* %stptr, i32 %offset)
54   ret void
57 define void @ld_d(<2 x i64> * %ptr, i8 * %ldptr, i32 %offset) {
58   ; CHECK: immarg operand has non-immediate parameter
59   ; CHECK-NEXT: i32 %offset
60   ; CHECK-NEXT: %a = call <2 x i64> @llvm.mips.ld.d(i8* %ldptr, i32 %offset)
61   %a = call <2 x i64> @llvm.mips.ld.d(i8* %ldptr, i32 %offset)
62   store <2 x i64> %a, <2 x i64> * %ptr, align 16
63   ret void
66 define void @st_d(<2 x i64> * %ptr, i8 * %ldptr, i32 %offset, i8 * %stptr) {
67   ; CHECK: immarg operand has non-immediate parameter
68   ; CHECK-NEXT: i32 %offset
69   ; CHECK-NEXT: call void @llvm.mips.st.d(<2 x i64> %a, i8* %stptr, i32 %offset)
70   %a = call <2 x i64> @llvm.mips.ld.d(i8* %ldptr, i32 0)
71   call void @llvm.mips.st.d(<2 x i64> %a, i8* %stptr, i32 %offset)
72   ret void
75 declare <16 x i8> @llvm.mips.ld.b(i8*, i32)
76 declare <8 x i16> @llvm.mips.ld.h(i8*, i32)
77 declare <4 x i32> @llvm.mips.ld.w(i8*, i32)
78 declare <2 x i64> @llvm.mips.ld.d(i8*, i32)
79 declare void @llvm.mips.st.b(<16 x i8>, i8*, i32)
80 declare void @llvm.mips.st.h(<8 x i16>, i8*, i32)
81 declare void @llvm.mips.st.w(<4 x i32>, i8*, i32)
82 declare void @llvm.mips.st.d(<2 x i64>, i8*, i32)