xref: /llvm-project/llvm/test/Analysis/CostModel/RISCV/gep.ll (revision 7f6bbb3c4f2c5f03d2abd3a79c85f1e0e4e03e05)
1cff7d2fdSLuis Marques; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py
2cb941f92SLuke Lau; RUN: opt -mtriple=riscv32 -mattr=+v -passes="print<cost-model>" 2>&1 \
3cb941f92SLuke Lau; RUN:   -disable-output < %s | FileCheck %s -check-prefix=RVI
4cb941f92SLuke Lau; RUN: opt -mtriple=riscv64 -mattr=+v -passes="print<cost-model>" 2>&1 \
5cb941f92SLuke Lau; RUN:   -disable-output < %s | FileCheck %s -check-prefix=RVI
6cff7d2fdSLuis Marques
768c50b11SNikita Popovdefine void @testi8(ptr %a, i32 %i) {
8cff7d2fdSLuis Marques; RVI-LABEL: 'testi8'
968c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a1 = getelementptr inbounds i8, ptr %a, i32 1
10cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile i8 undef, ptr %a1, align 1
1168c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a2 = getelementptr inbounds i8, ptr %a, i32 -1
12cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile i8 undef, ptr %a2, align 1
1368c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a3 = getelementptr inbounds i8, ptr %a, i32 2047
14cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile i8 undef, ptr %a3, align 1
1568c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %a4 = getelementptr inbounds i8, ptr %a, i32 2048
16cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile i8 undef, ptr %a4, align 1
1768c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a5 = getelementptr inbounds i8, ptr %a, i32 -2048
18cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile i8 undef, ptr %a5, align 1
1968c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %a6 = getelementptr inbounds i8, ptr %a, i32 -2049
20cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile i8 undef, ptr %a6, align 1
2168c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %ai = getelementptr inbounds i8, ptr %a, i32 %i
22cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile i8 undef, ptr %ai, align 1
230a5d52a7SSergey Kachkov; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void
24cff7d2fdSLuis Marques;
2568c50b11SNikita Popov  %a1 = getelementptr inbounds i8, ptr %a, i32 1
26cb941f92SLuke Lau  store volatile i8 undef, ptr %a1
2768c50b11SNikita Popov  %a2 = getelementptr inbounds i8, ptr %a, i32 -1
28cb941f92SLuke Lau  store volatile i8 undef, ptr %a2
2968c50b11SNikita Popov  %a3 = getelementptr inbounds i8, ptr %a, i32 2047
30cb941f92SLuke Lau  store volatile i8 undef, ptr %a3
3168c50b11SNikita Popov  %a4 = getelementptr inbounds i8, ptr %a, i32 2048
32cb941f92SLuke Lau  store volatile i8 undef, ptr %a4
3368c50b11SNikita Popov  %a5 = getelementptr inbounds i8, ptr %a, i32 -2048
34cb941f92SLuke Lau  store volatile i8 undef, ptr %a5
3568c50b11SNikita Popov  %a6 = getelementptr inbounds i8, ptr %a, i32 -2049
36cb941f92SLuke Lau  store volatile i8 undef, ptr %a6
3768c50b11SNikita Popov  %ai = getelementptr inbounds i8, ptr %a, i32 %i
38cb941f92SLuke Lau  store volatile i8 undef, ptr %ai
39cff7d2fdSLuis Marques  ret void
40cff7d2fdSLuis Marques}
41cff7d2fdSLuis Marques
4268c50b11SNikita Popovdefine void @testi16(ptr %a, i32 %i) {
43cff7d2fdSLuis Marques; RVI-LABEL: 'testi16'
4468c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a1 = getelementptr inbounds i16, ptr %a, i32 1
45cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile i16 undef, ptr %a1, align 2
4668c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a2 = getelementptr inbounds i16, ptr %a, i32 -1
47cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile i16 undef, ptr %a2, align 2
4868c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a3 = getelementptr inbounds i16, ptr %a, i32 1023
49cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile i16 undef, ptr %a3, align 2
5068c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %a4 = getelementptr inbounds i16, ptr %a, i32 1024
51cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile i16 undef, ptr %a4, align 2
5268c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a5 = getelementptr inbounds i16, ptr %a, i32 -1024
53cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile i16 undef, ptr %a5, align 2
5468c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %a6 = getelementptr inbounds i16, ptr %a, i32 -1025
55cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile i16 undef, ptr %a6, align 2
5668c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %ai = getelementptr inbounds i16, ptr %a, i32 %i
57cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile i16 undef, ptr %ai, align 2
580a5d52a7SSergey Kachkov; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void
59cff7d2fdSLuis Marques;
6068c50b11SNikita Popov  %a1 = getelementptr inbounds i16, ptr %a, i32 1
61cb941f92SLuke Lau  store volatile i16 undef, ptr %a1
6268c50b11SNikita Popov  %a2 = getelementptr inbounds i16, ptr %a, i32 -1
63cb941f92SLuke Lau  store volatile i16 undef, ptr %a2
6468c50b11SNikita Popov  %a3 = getelementptr inbounds i16, ptr %a, i32 1023
65cb941f92SLuke Lau  store volatile i16 undef, ptr %a3
6668c50b11SNikita Popov  %a4 = getelementptr inbounds i16, ptr %a, i32 1024
67cb941f92SLuke Lau  store volatile i16 undef, ptr %a4
6868c50b11SNikita Popov  %a5 = getelementptr inbounds i16, ptr %a, i32 -1024
69cb941f92SLuke Lau  store volatile i16 undef, ptr %a5
7068c50b11SNikita Popov  %a6 = getelementptr inbounds i16, ptr %a, i32 -1025
71cb941f92SLuke Lau  store volatile i16 undef, ptr %a6
7268c50b11SNikita Popov  %ai = getelementptr inbounds i16, ptr %a, i32 %i
73cb941f92SLuke Lau  store volatile i16 undef, ptr %ai
74cff7d2fdSLuis Marques  ret void
75cff7d2fdSLuis Marques}
76cff7d2fdSLuis Marques
7768c50b11SNikita Popovdefine void @testi32(ptr %a, i32 %i) {
78cff7d2fdSLuis Marques; RVI-LABEL: 'testi32'
7968c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a1 = getelementptr inbounds i32, ptr %a, i32 1
80cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile i32 undef, ptr %a1, align 4
8168c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a2 = getelementptr inbounds i32, ptr %a, i32 -1
82cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile i32 undef, ptr %a2, align 4
8368c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a3 = getelementptr inbounds i32, ptr %a, i32 511
84cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile i32 undef, ptr %a3, align 4
8568c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %a4 = getelementptr inbounds i32, ptr %a, i32 512
86cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile i32 undef, ptr %a4, align 4
8768c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a5 = getelementptr inbounds i32, ptr %a, i32 -512
88cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile i32 undef, ptr %a5, align 4
8968c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %a6 = getelementptr inbounds i32, ptr %a, i32 -513
90cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile i32 undef, ptr %a6, align 4
9168c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %ai = getelementptr inbounds i32, ptr %a, i32 %i
92cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile i32 undef, ptr %ai, align 4
930a5d52a7SSergey Kachkov; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void
94cff7d2fdSLuis Marques;
9568c50b11SNikita Popov  %a1 = getelementptr inbounds i32, ptr %a, i32 1
96cb941f92SLuke Lau  store volatile i32 undef, ptr %a1
9768c50b11SNikita Popov  %a2 = getelementptr inbounds i32, ptr %a, i32 -1
98cb941f92SLuke Lau  store volatile i32 undef, ptr %a2
9968c50b11SNikita Popov  %a3 = getelementptr inbounds i32, ptr %a, i32 511
100cb941f92SLuke Lau  store volatile i32 undef, ptr %a3
10168c50b11SNikita Popov  %a4 = getelementptr inbounds i32, ptr %a, i32 512
102cb941f92SLuke Lau  store volatile i32 undef, ptr %a4
10368c50b11SNikita Popov  %a5 = getelementptr inbounds i32, ptr %a, i32 -512
104cb941f92SLuke Lau  store volatile i32 undef, ptr %a5
10568c50b11SNikita Popov  %a6 = getelementptr inbounds i32, ptr %a, i32 -513
106cb941f92SLuke Lau  store volatile i32 undef, ptr %a6
10768c50b11SNikita Popov  %ai = getelementptr inbounds i32, ptr %a, i32 %i
108cb941f92SLuke Lau  store volatile i32 undef, ptr %ai
109cff7d2fdSLuis Marques  ret void
110cff7d2fdSLuis Marques}
111cff7d2fdSLuis Marques
11268c50b11SNikita Popovdefine void @testi64(ptr %a, i32 %i) {
11368c50b11SNikita Popov  %a1 = getelementptr inbounds i64, ptr %a, i32 1
114cb941f92SLuke Lau  store volatile i64 undef, ptr %a1
11568c50b11SNikita Popov  %a2 = getelementptr inbounds i64, ptr %a, i32 -1
116cb941f92SLuke Lau  store volatile i64 undef, ptr %a2
11768c50b11SNikita Popov  %a3 = getelementptr inbounds i64, ptr %a, i32 255
118cb941f92SLuke Lau  store volatile i64 undef, ptr %a3
11968c50b11SNikita Popov  %a4 = getelementptr inbounds i64, ptr %a, i32 256
120cb941f92SLuke Lau  store volatile i64 undef, ptr %a4
12168c50b11SNikita Popov  %a5 = getelementptr inbounds i64, ptr %a, i32 -256
122cb941f92SLuke Lau  store volatile i64 undef, ptr %a5
12368c50b11SNikita Popov  %a6 = getelementptr inbounds i64, ptr %a, i32 -257
124cb941f92SLuke Lau  store volatile i64 undef, ptr %a6
12568c50b11SNikita Popov  %ai = getelementptr inbounds i64, ptr %a, i32 %i
126cb941f92SLuke Lau  store volatile i64 undef, ptr %ai
127cff7d2fdSLuis Marques  ret void
128cff7d2fdSLuis Marques}
129cff7d2fdSLuis Marques
13068c50b11SNikita Popovdefine void @testfloat(ptr %a, i32 %i) {
131cff7d2fdSLuis Marques; RVI-LABEL: 'testfloat'
13268c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a1 = getelementptr inbounds float, ptr %a, i32 1
133cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile float undef, ptr %a1, align 4
13468c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a2 = getelementptr inbounds float, ptr %a, i32 -1
135cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile float undef, ptr %a2, align 4
13668c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a3 = getelementptr inbounds float, ptr %a, i32 511
137cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile float undef, ptr %a3, align 4
13868c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %a4 = getelementptr inbounds float, ptr %a, i32 512
139cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile float undef, ptr %a4, align 4
14068c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a5 = getelementptr inbounds float, ptr %a, i32 -512
141cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile float undef, ptr %a5, align 4
14268c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %a6 = getelementptr inbounds float, ptr %a, i32 -513
143cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile float undef, ptr %a6, align 4
14468c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %ai = getelementptr inbounds float, ptr %a, i32 %i
145cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile float undef, ptr %ai, align 4
1460a5d52a7SSergey Kachkov; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void
147cff7d2fdSLuis Marques;
14868c50b11SNikita Popov  %a1 = getelementptr inbounds float, ptr %a, i32 1
149cb941f92SLuke Lau  store volatile float undef, ptr %a1
15068c50b11SNikita Popov  %a2 = getelementptr inbounds float, ptr %a, i32 -1
151cb941f92SLuke Lau  store volatile float undef, ptr %a2
15268c50b11SNikita Popov  %a3 = getelementptr inbounds float, ptr %a, i32 511
153cb941f92SLuke Lau  store volatile float undef, ptr %a3
15468c50b11SNikita Popov  %a4 = getelementptr inbounds float, ptr %a, i32 512
155cb941f92SLuke Lau  store volatile float undef, ptr %a4
15668c50b11SNikita Popov  %a5 = getelementptr inbounds float, ptr %a, i32 -512
157cb941f92SLuke Lau  store volatile float undef, ptr %a5
15868c50b11SNikita Popov  %a6 = getelementptr inbounds float, ptr %a, i32 -513
159cb941f92SLuke Lau  store volatile float undef, ptr %a6
16068c50b11SNikita Popov  %ai = getelementptr inbounds float, ptr %a, i32 %i
161cb941f92SLuke Lau  store volatile float undef, ptr %ai
162cff7d2fdSLuis Marques  ret void
163cff7d2fdSLuis Marques}
164cff7d2fdSLuis Marques
16568c50b11SNikita Popovdefine void @testdouble(ptr %a, i32 %i) {
166cff7d2fdSLuis Marques; RVI-LABEL: 'testdouble'
16768c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a1 = getelementptr inbounds double, ptr %a, i32 1
168cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile double undef, ptr %a1, align 8
16968c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a2 = getelementptr inbounds double, ptr %a, i32 -1
170cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile double undef, ptr %a2, align 8
17168c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a3 = getelementptr inbounds double, ptr %a, i32 255
172cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile double undef, ptr %a3, align 8
17368c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %a4 = getelementptr inbounds double, ptr %a, i32 256
174cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile double undef, ptr %a4, align 8
17568c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %a5 = getelementptr inbounds double, ptr %a, i32 -256
176cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile double undef, ptr %a5, align 8
17768c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %a6 = getelementptr inbounds double, ptr %a, i32 -257
178cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile double undef, ptr %a6, align 8
17968c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %ai = getelementptr inbounds double, ptr %a, i32 %i
180cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile double undef, ptr %ai, align 8
1810a5d52a7SSergey Kachkov; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void
182cff7d2fdSLuis Marques;
18368c50b11SNikita Popov  %a1 = getelementptr inbounds double, ptr %a, i32 1
184cb941f92SLuke Lau  store volatile double undef, ptr %a1
18568c50b11SNikita Popov  %a2 = getelementptr inbounds double, ptr %a, i32 -1
186cb941f92SLuke Lau  store volatile double undef, ptr %a2
18768c50b11SNikita Popov  %a3 = getelementptr inbounds double, ptr %a, i32 255
188cb941f92SLuke Lau  store volatile double undef, ptr %a3
18968c50b11SNikita Popov  %a4 = getelementptr inbounds double, ptr %a, i32 256
190cb941f92SLuke Lau  store volatile double undef, ptr %a4
19168c50b11SNikita Popov  %a5 = getelementptr inbounds double, ptr %a, i32 -256
192cb941f92SLuke Lau  store volatile double undef, ptr %a5
19368c50b11SNikita Popov  %a6 = getelementptr inbounds double, ptr %a, i32 -257
194cb941f92SLuke Lau  store volatile double undef, ptr %a6
19568c50b11SNikita Popov  %ai = getelementptr inbounds double, ptr %a, i32 %i
196cb941f92SLuke Lau  store volatile double undef, ptr %ai
197cff7d2fdSLuis Marques  ret void
198cff7d2fdSLuis Marques}
199cff7d2fdSLuis Marques
200cff7d2fdSLuis Marquesdefine void @testvecs(i32 %i) {
201cff7d2fdSLuis Marques; RVI-LABEL: 'testvecs'
202cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %b0 = getelementptr inbounds <4 x i8>, ptr undef, i32 1
203cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile <4 x i8> undef, ptr %b0, align 4
204cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %b1 = getelementptr inbounds <4 x i16>, ptr undef, i32 1
205cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile <4 x i16> undef, ptr %b1, align 8
206cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %b2 = getelementptr inbounds <4 x i32>, ptr undef, i32 1
207cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile <4 x i32> undef, ptr %b2, align 16
208cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %b3 = getelementptr inbounds <4 x i64>, ptr undef, i32 1
209cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: store volatile <4 x i64> undef, ptr %b3, align 32
210cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %b4 = getelementptr inbounds <4 x float>, ptr undef, i32 1
211cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile <4 x float> undef, ptr %b4, align 16
212cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %b5 = getelementptr inbounds <4 x double>, ptr undef, i32 1
213cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: store volatile <4 x double> undef, ptr %b5, align 32
214cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %c1 = getelementptr inbounds <4 x i8>, ptr undef, i32 128
215cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile <4 x i8> undef, ptr %c1, align 4
216cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %c2 = getelementptr inbounds <4 x i16>, ptr undef, i32 128
217cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile <4 x i16> undef, ptr %c2, align 8
21868c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %c3 = getelementptr inbounds <4 x i32>, ptr undef, i32 128
219cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile <4 x i32> undef, ptr %c3, align 16
22068c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %c4 = getelementptr inbounds <4 x i64>, ptr undef, i32 128
221cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: store volatile <4 x i64> undef, ptr %c4, align 32
22268c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %c5 = getelementptr inbounds <4 x float>, ptr undef, i32 128
223cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile <4 x float> undef, ptr %c5, align 16
22468c50b11SNikita Popov; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %c6 = getelementptr inbounds <4 x double>, ptr undef, i32 128
225cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: store volatile <4 x double> undef, ptr %c6, align 32
2260a5d52a7SSergey Kachkov; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void
227cff7d2fdSLuis Marques;
228cff7d2fdSLuis Marques
22968c50b11SNikita Popov  %b0 = getelementptr inbounds <4 x i8>, ptr undef, i32 1
230cb941f92SLuke Lau  store volatile <4 x i8> undef, ptr %b0
23168c50b11SNikita Popov  %b1 = getelementptr inbounds <4 x i16>, ptr undef, i32 1
232cb941f92SLuke Lau  store volatile <4 x i16> undef, ptr %b1
23368c50b11SNikita Popov  %b2 = getelementptr inbounds <4 x i32>, ptr undef, i32 1
234cb941f92SLuke Lau  store volatile <4 x i32> undef, ptr %b2
23568c50b11SNikita Popov  %b3 = getelementptr inbounds <4 x i64>, ptr undef, i32 1
236cb941f92SLuke Lau  store volatile <4 x i64> undef, ptr %b3
23768c50b11SNikita Popov  %b4 = getelementptr inbounds <4 x float>, ptr undef, i32 1
238cb941f92SLuke Lau  store volatile <4 x float> undef, ptr %b4
23968c50b11SNikita Popov  %b5 = getelementptr inbounds <4 x double>, ptr undef, i32 1
240cb941f92SLuke Lau  store volatile <4 x double> undef, ptr %b5
241cff7d2fdSLuis Marques
24268c50b11SNikita Popov  %c1 = getelementptr inbounds <4 x i8>, ptr undef, i32 128
243cb941f92SLuke Lau  store volatile <4 x i8> undef, ptr %c1
24468c50b11SNikita Popov  %c2 = getelementptr inbounds <4 x i16>, ptr undef, i32 128
245cb941f92SLuke Lau  store volatile <4 x i16> undef, ptr %c2
24668c50b11SNikita Popov  %c3 = getelementptr inbounds <4 x i32>, ptr undef, i32 128
247cb941f92SLuke Lau  store volatile <4 x i32> undef, ptr %c3
24868c50b11SNikita Popov  %c4 = getelementptr inbounds <4 x i64>, ptr undef, i32 128
249cb941f92SLuke Lau  store volatile <4 x i64> undef, ptr %c4
25068c50b11SNikita Popov  %c5 = getelementptr inbounds <4 x float>, ptr undef, i32 128
251cb941f92SLuke Lau  store volatile <4 x float> undef, ptr %c5
25268c50b11SNikita Popov  %c6 = getelementptr inbounds <4 x double>, ptr undef, i32 128
253cb941f92SLuke Lau  store volatile <4 x double> undef, ptr %c6
254cff7d2fdSLuis Marques
255cff7d2fdSLuis Marques  ret void
256cff7d2fdSLuis Marques}
257cb941f92SLuke Lau
258cb941f92SLuke Lau; Ensure that memory operations of a different type than the pointer source type
259cb941f92SLuke Lau; use the correct type to determine if folding is possible. These operations
260cb941f92SLuke Lau; are on vector types so there should be a cost for the GEP as the offset cannot
261cb941f92SLuke Lau; be folded into the instruction.
262cb941f92SLuke Laudefine void @non_foldable_vector_uses(ptr %base, <2 x ptr> %base.vec) {
263cb941f92SLuke Lau; RVI-LABEL: 'non_foldable_vector_uses'
264a68dcd09SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %1 = getelementptr i8, ptr %base, i32 42
265cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %x1 = load volatile <2 x i8>, ptr %1, align 2
266a68dcd09SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %2 = getelementptr i8, ptr %base, i32 42
267cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %x2 = call <2 x i8> @llvm.masked.load.v2i8.p0(ptr %2, i32 1, <2 x i1> undef, <2 x i8> undef)
268cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %3 = getelementptr i8, <2 x ptr> %base.vec, <2 x i32> <i32 42, i32 43>
269cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %x3 = call <2 x i8> @llvm.masked.gather.v2i8.v2p0(<2 x ptr> %3, i32 1, <2 x i1> undef, <2 x i8> undef)
270a68dcd09SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %4 = getelementptr i8, ptr %base, i32 42
271*7f6bbb3cSPhilip Reames; RVI-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %x4 = call <2 x i8> @llvm.masked.expandload.v2i8(ptr %4, <2 x i1> undef, <2 x i8> undef)
272a68dcd09SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %5 = getelementptr i8, ptr %base, i32 42
2732483763fSMichael Maitland; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %x5 = call <2 x i8> @llvm.vp.load.v2i8.p0(ptr %5, <2 x i1> undef, i32 undef)
274a68dcd09SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %6 = getelementptr i8, ptr %base, i32 42
275b78b2645SPhilip Reames; RVI-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %x6 = call <2 x i8> @llvm.experimental.vp.strided.load.v2i8.p0.i64(ptr %6, i64 undef, <2 x i1> undef, i32 undef)
276a68dcd09SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %7 = getelementptr i8, ptr %base, i32 42
277cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile <2 x i8> undef, ptr %7, align 2
278a68dcd09SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %8 = getelementptr i8, ptr %base, i32 42
279cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: call void @llvm.masked.store.v2i8.p0(<2 x i8> undef, ptr %8, i32 1, <2 x i1> undef)
280cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %9 = getelementptr i8, <2 x ptr> %base.vec, <2 x i32> <i32 42, i32 43>
281cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: call void @llvm.masked.scatter.v2i8.v2p0(<2 x i8> undef, <2 x ptr> %9, i32 1, <2 x i1> undef)
282a68dcd09SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %10 = getelementptr i8, ptr %base, i32 42
283cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: call void @llvm.masked.compressstore.v2i8(<2 x i8> undef, ptr %10, <2 x i1> undef)
284a68dcd09SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %11 = getelementptr i8, ptr %base, i32 42
2852483763fSMichael Maitland; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: call void @llvm.vp.store.v2i8.p0(<2 x i8> undef, ptr %11, <2 x i1> undef, i32 undef)
286a68dcd09SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %12 = getelementptr i8, ptr %base, i32 42
287b78b2645SPhilip Reames; RVI-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: call void @llvm.experimental.vp.strided.store.v2i8.p0.i64(<2 x i8> undef, ptr %12, i64 undef, <2 x i1> undef, i32 undef)
2880a5d52a7SSergey Kachkov; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void
289cb941f92SLuke Lau;
290cb941f92SLuke Lau  %1 = getelementptr i8, ptr %base, i32 42
291cb941f92SLuke Lau  %x1 = load volatile <2 x i8>, ptr %1
292cb941f92SLuke Lau
293cb941f92SLuke Lau  %2 = getelementptr i8, ptr %base, i32 42
294cb941f92SLuke Lau  %x2 = call <2 x i8> @llvm.masked.load.v2i8.p0(ptr %2, i32 1, <2 x i1> undef, <2 x i8> undef)
295cb941f92SLuke Lau
296cb941f92SLuke Lau  %3 = getelementptr i8, <2 x ptr> %base.vec, <2 x i32> <i32 42, i32 43>
297cb941f92SLuke Lau  %x3 = call <2 x i8> @llvm.masked.gather.v2i8.v2p0(<2 x ptr> %3, i32 1, <2 x i1> undef, <2 x i8> undef)
298cb941f92SLuke Lau
299cb941f92SLuke Lau  %4 = getelementptr i8, ptr %base, i32 42
300cb941f92SLuke Lau  %x4 = call <2 x i8> @llvm.masked.expandload.v2i8(ptr %4, <2 x i1> undef, <2 x i8> undef)
301cb941f92SLuke Lau
302cb941f92SLuke Lau  %5 = getelementptr i8, ptr %base, i32 42
303cb941f92SLuke Lau  %x5 = call <2 x i8> @llvm.vp.load.v2i8.p0(ptr %5, <2 x i1> undef, i32 undef)
304cb941f92SLuke Lau
305cb941f92SLuke Lau  %6 = getelementptr i8, ptr %base, i32 42
306cb941f92SLuke Lau  %x6 = call <2 x i8> @llvm.experimental.vp.strided.load.v2i8.i64(ptr %6, i64 undef, <2 x i1> undef, i32 undef)
307cb941f92SLuke Lau
308cb941f92SLuke Lau  %7 = getelementptr i8, ptr %base, i32 42
309cb941f92SLuke Lau  store volatile <2 x i8> undef, ptr %7
310cb941f92SLuke Lau
311cb941f92SLuke Lau  %8 = getelementptr i8, ptr %base, i32 42
312cb941f92SLuke Lau  call void @llvm.masked.store.v2i8.p0(<2 x i8> undef, ptr %8, i32 1, <2 x i1> undef)
313cb941f92SLuke Lau
314cb941f92SLuke Lau  %9 = getelementptr i8, <2 x ptr> %base.vec, <2 x i32> <i32 42, i32 43>
315cb941f92SLuke Lau  call void @llvm.masked.scatter.v2i8.v2p0(<2 x i8> undef, <2 x ptr> %9, i32 1, <2 x i1> undef)
316cb941f92SLuke Lau
317cb941f92SLuke Lau  %10 = getelementptr i8, ptr %base, i32 42
318cb941f92SLuke Lau  call void @llvm.masked.compressstore.v2i8(<2 x i8> undef, ptr %10, <2 x i1> undef)
319cb941f92SLuke Lau
320cb941f92SLuke Lau  %11 = getelementptr i8, ptr %base, i32 42
321cb941f92SLuke Lau  call void @llvm.vp.store.v2i8.p0(<2 x i8> undef, ptr %11, <2 x i1> undef, i32 undef)
322cb941f92SLuke Lau
323cb941f92SLuke Lau  %12 = getelementptr i8, ptr %base, i32 42
324cb941f92SLuke Lau  call void @llvm.experimental.vp.strided.store.v2i8.i64(<2 x i8> undef, ptr %12, i64 undef, <2 x i1> undef, i32 undef)
325cb941f92SLuke Lau
326cb941f92SLuke Lau  ret void
327cb941f92SLuke Lau}
328cb941f92SLuke Lau
329cb941f92SLuke Lau; Despite the fact that these are vector loads and stores which doesn't allow an
330cb941f92SLuke Lau; offset in the addressing mode, because the offsets are zero we don't actually
331cb941f92SLuke Lau; need to do any calculation for the GEP and thus it should be free.
332cb941f92SLuke Laudefine void @foldable_vector_uses(ptr %base, <2 x ptr> %base.vec) {
333cb941f92SLuke Lau; RVI-LABEL: 'foldable_vector_uses'
334cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %1 = getelementptr i8, ptr %base, i32 0
335cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %x1 = load volatile <2 x i8>, ptr %1, align 2
336cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %2 = getelementptr i8, ptr %base, i32 0
337cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %x2 = call <2 x i8> @llvm.masked.load.v2i8.p0(ptr %2, i32 1, <2 x i1> undef, <2 x i8> undef)
338cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %3 = getelementptr i8, <2 x ptr> %base.vec, <2 x i32> zeroinitializer
339cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %x3 = call <2 x i8> @llvm.masked.gather.v2i8.v2p0(<2 x ptr> %3, i32 1, <2 x i1> undef, <2 x i8> undef)
340cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %4 = getelementptr i8, ptr %base, i32 0
341*7f6bbb3cSPhilip Reames; RVI-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %x4 = call <2 x i8> @llvm.masked.expandload.v2i8(ptr %4, <2 x i1> undef, <2 x i8> undef)
342cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %5 = getelementptr i8, ptr %base, i32 0
3432483763fSMichael Maitland; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %x5 = call <2 x i8> @llvm.vp.load.v2i8.p0(ptr %5, <2 x i1> undef, i32 undef)
344cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %6 = getelementptr i8, ptr %base, i32 0
345b78b2645SPhilip Reames; RVI-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %x6 = call <2 x i8> @llvm.experimental.vp.strided.load.v2i8.p0.i64(ptr %6, i64 undef, <2 x i1> undef, i32 undef)
346cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %7 = getelementptr i8, ptr %base, i32 0
347cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: store volatile <2 x i8> undef, ptr %7, align 2
348cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %8 = getelementptr i8, ptr %base, i32 0
349cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: call void @llvm.masked.store.v2i8.p0(<2 x i8> undef, ptr %8, i32 1, <2 x i1> undef)
350cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %9 = getelementptr i8, <2 x ptr> %base.vec, <2 x i32> zeroinitializer
351cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: call void @llvm.masked.scatter.v2i8.v2p0(<2 x i8> undef, <2 x ptr> %9, i32 1, <2 x i1> undef)
352cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %10 = getelementptr i8, ptr %base, i32 0
353cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: call void @llvm.masked.compressstore.v2i8(<2 x i8> undef, ptr %10, <2 x i1> undef)
354cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %11 = getelementptr i8, ptr %base, i32 0
3552483763fSMichael Maitland; RVI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: call void @llvm.vp.store.v2i8.p0(<2 x i8> undef, ptr %11, <2 x i1> undef, i32 undef)
356cb941f92SLuke Lau; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %12 = getelementptr i8, ptr %base, i32 0
357b78b2645SPhilip Reames; RVI-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: call void @llvm.experimental.vp.strided.store.v2i8.p0.i64(<2 x i8> undef, ptr %12, i64 undef, <2 x i1> undef, i32 undef)
3580a5d52a7SSergey Kachkov; RVI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void
359cb941f92SLuke Lau;
360cb941f92SLuke Lau  %1 = getelementptr i8, ptr %base, i32 0
361cb941f92SLuke Lau  %x1 = load volatile <2 x i8>, ptr %1
362cb941f92SLuke Lau
363cb941f92SLuke Lau  %2 = getelementptr i8, ptr %base, i32 0
364cb941f92SLuke Lau  %x2 = call <2 x i8> @llvm.masked.load.v2i8.p0(ptr %2, i32 1, <2 x i1> undef, <2 x i8> undef)
365cb941f92SLuke Lau
366cb941f92SLuke Lau  %3 = getelementptr i8, <2 x ptr> %base.vec, <2 x i32> <i32 0, i32 0>
367cb941f92SLuke Lau  %x3 = call <2 x i8> @llvm.masked.gather.v2i8.v2p0(<2 x ptr> %3, i32 1, <2 x i1> undef, <2 x i8> undef)
368cb941f92SLuke Lau
369cb941f92SLuke Lau  %4 = getelementptr i8, ptr %base, i32 0
370cb941f92SLuke Lau  %x4 = call <2 x i8> @llvm.masked.expandload.v2i8(ptr %4, <2 x i1> undef, <2 x i8> undef)
371cb941f92SLuke Lau
372cb941f92SLuke Lau  %5 = getelementptr i8, ptr %base, i32 0
373cb941f92SLuke Lau  %x5 = call <2 x i8> @llvm.vp.load.v2i8.p0(ptr %5, <2 x i1> undef, i32 undef)
374cb941f92SLuke Lau
375cb941f92SLuke Lau  %6 = getelementptr i8, ptr %base, i32 0
376cb941f92SLuke Lau  %x6 = call <2 x i8> @llvm.experimental.vp.strided.load.v2i8.i64(ptr %6, i64 undef, <2 x i1> undef, i32 undef)
377cb941f92SLuke Lau
378cb941f92SLuke Lau  %7 = getelementptr i8, ptr %base, i32 0
379cb941f92SLuke Lau  store volatile <2 x i8> undef, ptr %7
380cb941f92SLuke Lau
381cb941f92SLuke Lau  %8 = getelementptr i8, ptr %base, i32 0
382cb941f92SLuke Lau  call void @llvm.masked.store.v2i8.p0(<2 x i8> undef, ptr %8, i32 1, <2 x i1> undef)
383cb941f92SLuke Lau
384cb941f92SLuke Lau  %9 = getelementptr i8, <2 x ptr> %base.vec, <2 x i32> <i32 0, i32 0>
385cb941f92SLuke Lau  call void @llvm.masked.scatter.v2i8.v2p0(<2 x i8> undef, <2 x ptr> %9, i32 1, <2 x i1> undef)
386cb941f92SLuke Lau
387cb941f92SLuke Lau  %10 = getelementptr i8, ptr %base, i32 0
388cb941f92SLuke Lau  call void @llvm.masked.compressstore.v2i8(<2 x i8> undef, ptr %10, <2 x i1> undef)
389cb941f92SLuke Lau
390cb941f92SLuke Lau  %11 = getelementptr i8, ptr %base, i32 0
391cb941f92SLuke Lau  call void @llvm.vp.store.v2i8.p0(<2 x i8> undef, ptr %11, <2 x i1> undef, i32 undef)
392cb941f92SLuke Lau
393cb941f92SLuke Lau  %12 = getelementptr i8, ptr %base, i32 0
394cb941f92SLuke Lau  call void @llvm.experimental.vp.strided.store.v2i8.i64(<2 x i8> undef, ptr %12, i64 undef, <2 x i1> undef, i32 undef)
395cb941f92SLuke Lau
396cb941f92SLuke Lau  ret void
397cb941f92SLuke Lau}
398cb941f92SLuke Lau
399cb941f92SLuke Laudeclare <2 x i8> @llvm.masked.load.v2i8.p0(ptr, i32, <2 x i1>, <2 x i8>)
400cb941f92SLuke Laudeclare <2 x i8> @llvm.masked.gather.v2i8.v2p0(<2 x ptr>, i32, <2 x i1>, <2 x i8>)
401cb941f92SLuke Laudeclare <2 x i8> @llvm.masked.expandload.v2i8(ptr, <2 x i1>, <2 x i8>)
402cb941f92SLuke Laudeclare <2 x i8> @llvm.vp.load.v2i8.p0(ptr, <2 x i1>, i32)
403cb941f92SLuke Laudeclare <2 x i8> @llvm.experimental.vp.strided.load.v2i8.i64(ptr, i64, <2 x i1>, i32)
404cb941f92SLuke Lau
405cb941f92SLuke Laudeclare void @llvm.masked.store.v2i8.p0(<2 x i8>, ptr, i32, <2 x i1>)
406cb941f92SLuke Laudeclare void @llvm.masked.scatter.v2i8.v2p0(<2 x i8>, <2 x ptr>, i32, <2 x i1>)
407cb941f92SLuke Laudeclare void @llvm.masked.compressstore.v2i8(<2 x i8>, ptr, <2 x i1>)
408cb941f92SLuke Laudeclare void @llvm.vp.store.v2i8.p0(<2 x i8>, ptr, <2 x i1>, i32)
409cb941f92SLuke Laudeclare void @llvm.experimental.vp.strided.store.v2i8.i64(<2 x i8>, ptr, i64, <2 x i1>, i32)
410