Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / Transforms / InstSimplify / ptrmask.ll
blobd2c4a5dd7f03531ebc295b23e6d357e8452300bf
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 2
2 ; RUN: opt < %s -passes=instsimplify -S | FileCheck %s
4 target datalayout = "p1:64:64:64:32"
6 declare ptr addrspace(1) @llvm.ptrmask.p1.i32(ptr addrspace(1) , i32)
7 declare ptr @llvm.ptrmask.p0.i64(ptr, i64)
9 declare <2 x ptr addrspace(1) > @llvm.ptrmask.v2p1.v2i32(<2 x ptr addrspace(1) >, <2 x i32>)
10 declare <2 x ptr> @llvm.ptrmask.v2p1.v2i64(<2 x ptr>, <2 x i64>)
12 define ptr @ptrmask_simplify_poison_mask(ptr %p) {
13 ; CHECK-LABEL: define ptr @ptrmask_simplify_poison_mask
14 ; CHECK-SAME: (ptr [[P:%.*]]) {
15 ; CHECK-NEXT:    ret ptr poison
17   %r = call ptr @llvm.ptrmask.p0.i64(ptr %p, i64 poison)
18   ret ptr %r
21 define <2 x ptr addrspace(1) > @ptrmask_simplify_poison_mask_vec(<2 x ptr addrspace(1) > %p) {
22 ; CHECK-LABEL: define <2 x ptr addrspace(1)> @ptrmask_simplify_poison_mask_vec
23 ; CHECK-SAME: (<2 x ptr addrspace(1)> [[P:%.*]]) {
24 ; CHECK-NEXT:    ret <2 x ptr addrspace(1)> poison
26   %r = call <2 x ptr addrspace(1) > @llvm.ptrmask.v2p1.v2i32(<2 x ptr addrspace(1) > %p, <2 x i32> poison)
27   ret <2 x ptr addrspace(1) > %r
30 define <2 x ptr addrspace(1) > @ptrmask_simplify_poison_and_zero_i32_vec_fail(<2 x ptr addrspace(1) > %p) {
31 ; CHECK-LABEL: define <2 x ptr addrspace(1)> @ptrmask_simplify_poison_and_zero_i32_vec_fail
32 ; CHECK-SAME: (<2 x ptr addrspace(1)> [[P:%.*]]) {
33 ; CHECK-NEXT:    [[R:%.*]] = call <2 x ptr addrspace(1)> @llvm.ptrmask.v2p1.v2i32(<2 x ptr addrspace(1)> [[P]], <2 x i32> <i32 undef, i32 0>)
34 ; CHECK-NEXT:    ret <2 x ptr addrspace(1)> [[R]]
36   %r = call <2 x ptr addrspace(1) > @llvm.ptrmask.v2p1.v2i32(<2 x ptr addrspace(1) > %p, <2 x i32> <i32 undef, i32 0>)
37   ret <2 x ptr addrspace(1) > %r
40 define <2 x ptr> @ptrmask_simplify_undef_and_ones_vec(<2 x ptr> %p) {
41 ; CHECK-LABEL: define <2 x ptr> @ptrmask_simplify_undef_and_ones_vec
42 ; CHECK-SAME: (<2 x ptr> [[P:%.*]]) {
43 ; CHECK-NEXT:    [[R:%.*]] = call <2 x ptr> @llvm.ptrmask.v2p0.v2i64(<2 x ptr> [[P]], <2 x i64> <i64 undef, i64 -1>)
44 ; CHECK-NEXT:    ret <2 x ptr> [[R]]
46   %r = call <2 x ptr> @llvm.ptrmask.v2p1.v2i64(<2 x ptr> %p, <2 x i64> <i64 undef, i64 -1>)
47   ret <2 x ptr> %r
50 define <2 x ptr> @ptrmask_simplify_poison_and_ones_vec(<2 x ptr> %p) {
51 ; CHECK-LABEL: define <2 x ptr> @ptrmask_simplify_poison_and_ones_vec
52 ; CHECK-SAME: (<2 x ptr> [[P:%.*]]) {
53 ; CHECK-NEXT:    ret <2 x ptr> [[P]]
55   %r = call <2 x ptr> @llvm.ptrmask.v2p1.v2i64(<2 x ptr> %p, <2 x i64> <i64 poison, i64 -1>)
56   ret <2 x ptr> %r
59 define <2 x ptr> @ptrmask_simplify_ones_vec(<2 x ptr> %p) {
60 ; CHECK-LABEL: define <2 x ptr> @ptrmask_simplify_ones_vec
61 ; CHECK-SAME: (<2 x ptr> [[P:%.*]]) {
62 ; CHECK-NEXT:    ret <2 x ptr> [[P]]
64   %r = call <2 x ptr> @llvm.ptrmask.v2p1.v2i64(<2 x ptr> %p, <2 x i64> <i64 -1, i64 -1>)
65   ret <2 x ptr> %r
68 define <2 x ptr addrspace(1) > @ptrmask_simplify_ones_i32_vec(<2 x ptr addrspace(1) > %p) {
69 ; CHECK-LABEL: define <2 x ptr addrspace(1)> @ptrmask_simplify_ones_i32_vec
70 ; CHECK-SAME: (<2 x ptr addrspace(1)> [[P:%.*]]) {
71 ; CHECK-NEXT:    ret <2 x ptr addrspace(1)> [[P]]
73   %r = call <2 x ptr addrspace(1) > @llvm.ptrmask.v2p1.v2i32(<2 x ptr addrspace(1) > %p, <2 x i32> <i32 -1, i32 -1>)
74   ret <2 x ptr addrspace(1) > %r
77 define ptr addrspace(1) @ptrmask_simplify_undef_mask(ptr addrspace(1) %p) {
78 ; CHECK-LABEL: define ptr addrspace(1) @ptrmask_simplify_undef_mask
79 ; CHECK-SAME: (ptr addrspace(1) [[P:%.*]]) {
80 ; CHECK-NEXT:    ret ptr addrspace(1) [[P]]
82   %r = call ptr addrspace(1) @llvm.ptrmask.p1.i32(ptr addrspace(1) %p, i32 undef)
83   ret ptr addrspace(1) %r
86 define ptr @ptrmask_simplify_0_mask(ptr %p) {
87 ; CHECK-LABEL: define ptr @ptrmask_simplify_0_mask
88 ; CHECK-SAME: (ptr [[P:%.*]]) {
89 ; CHECK-NEXT:    [[R:%.*]] = call ptr @llvm.ptrmask.p0.i64(ptr [[P]], i64 0)
90 ; CHECK-NEXT:    ret ptr [[R]]
92   %r = call ptr @llvm.ptrmask.p0.i64(ptr %p, i64 0)
93   ret ptr %r
96 define ptr @ptrmask_simplify_1s_mask(ptr %p) {
97 ; CHECK-LABEL: define ptr @ptrmask_simplify_1s_mask
98 ; CHECK-SAME: (ptr [[P:%.*]]) {
99 ; CHECK-NEXT:    ret ptr [[P]]
101   %r = call ptr @llvm.ptrmask.p0.i64(ptr %p, i64 -1)
102   ret ptr %r
105 define ptr addrspace(1) @ptrmask_simplify_1s_mask_i32(ptr addrspace(1) %p) {
106 ; CHECK-LABEL: define ptr addrspace(1) @ptrmask_simplify_1s_mask_i32
107 ; CHECK-SAME: (ptr addrspace(1) [[P:%.*]]) {
108 ; CHECK-NEXT:    ret ptr addrspace(1) [[P]]
110   %r = call ptr addrspace(1) @llvm.ptrmask.p1.i32(ptr addrspace(1) %p, i32 -1)
111   ret ptr addrspace(1) %r
114 define ptr @ptrmask_simplify_poison_ptr(i64 %m) {
115 ; CHECK-LABEL: define ptr @ptrmask_simplify_poison_ptr
116 ; CHECK-SAME: (i64 [[M:%.*]]) {
117 ; CHECK-NEXT:    ret ptr poison
119   %r = call ptr @llvm.ptrmask.p0.i64(ptr poison, i64 %m)
120   ret ptr %r
123 define ptr addrspace(1) @ptrmask_simplify_undef_ptr(i32 %m) {
124 ; CHECK-LABEL: define ptr addrspace(1) @ptrmask_simplify_undef_ptr
125 ; CHECK-SAME: (i32 [[M:%.*]]) {
126 ; CHECK-NEXT:    ret ptr addrspace(1) null
128   %r = call ptr addrspace(1) @llvm.ptrmask.p1.i32(ptr addrspace(1) undef, i32 %m)
129   ret ptr addrspace(1) %r
132 define ptr @ptrmask_simplify_null_ptr(i64 %m) {
133 ; CHECK-LABEL: define ptr @ptrmask_simplify_null_ptr
134 ; CHECK-SAME: (i64 [[M:%.*]]) {
135 ; CHECK-NEXT:    ret ptr null
137   %r = call ptr @llvm.ptrmask.p0.i64(ptr null, i64 %m)
138   ret ptr %r
141 define ptr @ptrmask_simplify_ptrmask(ptr %p) {
142 ; CHECK-LABEL: define ptr @ptrmask_simplify_ptrmask
143 ; CHECK-SAME: (ptr [[P:%.*]]) {
144 ; CHECK-NEXT:    ret ptr [[P]]
146   %m = ptrtoint ptr %p to i64
147   %r = call ptr @llvm.ptrmask.p0.i64(ptr %p, i64 %m)
148   ret ptr %r
151 define ptr addrspace(1) @ptrmask_simplify_ptrmask_i32(ptr addrspace(1) %p) {
152 ; CHECK-LABEL: define ptr addrspace(1) @ptrmask_simplify_ptrmask_i32
153 ; CHECK-SAME: (ptr addrspace(1) [[P:%.*]]) {
154 ; CHECK-NEXT:    ret ptr addrspace(1) [[P]]
156   %m = ptrtoint ptr addrspace(1) %p to i32
157   %r = call ptr addrspace(1) @llvm.ptrmask.p1.i32(ptr addrspace(1) %p, i32 %m)
158   ret ptr addrspace(1) %r
161 define ptr @ptrmask_simplify_aligned_unused(ptr align 64 %p) {
162 ; CHECK-LABEL: define ptr @ptrmask_simplify_aligned_unused
163 ; CHECK-SAME: (ptr align 64 [[P:%.*]]) {
164 ; CHECK-NEXT:    ret ptr [[P]]
166   %r = call ptr @llvm.ptrmask.p0.i64(ptr %p, i64 -64)
167   ret ptr %r
170 define <2 x ptr> @ptrmask_simplify_aligned_unused_vec(<2 x ptr> align 128 %p) {
171 ; CHECK-LABEL: define <2 x ptr> @ptrmask_simplify_aligned_unused_vec
172 ; CHECK-SAME: (<2 x ptr> align 128 [[P:%.*]]) {
173 ; CHECK-NEXT:    [[R:%.*]] = call <2 x ptr> @llvm.ptrmask.v2p0.v2i64(<2 x ptr> [[P]], <2 x i64> <i64 -64, i64 -64>)
174 ; CHECK-NEXT:    ret <2 x ptr> [[R]]
176   %r = call <2 x ptr> @llvm.ptrmask.v2p1.v2i64(<2 x ptr> %p, <2 x i64> <i64 -64, i64 -64>)
177   ret <2 x ptr> %r
180 define <2 x ptr> @ptrmask_simplify_aligned_unused_vec_todo(<2 x ptr> align 128 %p) {
181 ; CHECK-LABEL: define <2 x ptr> @ptrmask_simplify_aligned_unused_vec_todo
182 ; CHECK-SAME: (<2 x ptr> align 128 [[P:%.*]]) {
183 ; CHECK-NEXT:    [[R:%.*]] = call <2 x ptr> @llvm.ptrmask.v2p0.v2i64(<2 x ptr> [[P]], <2 x i64> <i64 -64, i64 -128>)
184 ; CHECK-NEXT:    ret <2 x ptr> [[R]]
186   %r = call <2 x ptr> @llvm.ptrmask.v2p1.v2i64(<2 x ptr> %p, <2 x i64> <i64 -64, i64 -128>)
187   ret <2 x ptr> %r
190 define ptr addrspace(1) @ptrmask_simplify_aligned_unused_i32(ptr addrspace(1) align 64 %p) {
191 ; CHECK-LABEL: define ptr addrspace(1) @ptrmask_simplify_aligned_unused_i32
192 ; CHECK-SAME: (ptr addrspace(1) align 64 [[P:%.*]]) {
193 ; CHECK-NEXT:    ret ptr addrspace(1) [[P]]
195   %r = call ptr addrspace(1) @llvm.ptrmask.p1.i32(ptr addrspace(1) %p, i32 -64)
196   ret ptr addrspace(1) %r
199 define ptr @ptrmask_simplify_known_unused(ptr %p) {
200 ; CHECK-LABEL: define ptr @ptrmask_simplify_known_unused
201 ; CHECK-SAME: (ptr [[P:%.*]]) {
202 ; CHECK-NEXT:    [[PM0:%.*]] = call ptr @llvm.ptrmask.p0.i64(ptr [[P]], i64 -64)
203 ; CHECK-NEXT:    [[PGEP:%.*]] = getelementptr i8, ptr [[PM0]], i64 32
204 ; CHECK-NEXT:    ret ptr [[PGEP]]
206   %pm0 = call ptr @llvm.ptrmask.p0.i64(ptr %p, i64 -64)
207   %pgep = getelementptr i8, ptr %pm0, i64 32
208   %r = call ptr @llvm.ptrmask.p0.i64(ptr %pgep, i64 -32)
209   ret ptr %r
212 define <2 x ptr> @ptrmask_simplify_known_unused_vec(<2 x ptr> %p) {
213 ; CHECK-LABEL: define <2 x ptr> @ptrmask_simplify_known_unused_vec
214 ; CHECK-SAME: (<2 x ptr> [[P:%.*]]) {
215 ; CHECK-NEXT:    [[PM0:%.*]] = call <2 x ptr> @llvm.ptrmask.v2p0.v2i64(<2 x ptr> [[P]], <2 x i64> <i64 -64, i64 -64>)
216 ; CHECK-NEXT:    [[PGEP:%.*]] = getelementptr i8, <2 x ptr> [[PM0]], <2 x i64> <i64 32, i64 32>
217 ; CHECK-NEXT:    ret <2 x ptr> [[PGEP]]
219   %pm0 = call <2 x ptr> @llvm.ptrmask.v2p1.v2i64(<2 x ptr> %p, <2 x i64> <i64 -64, i64 -64>)
220   %pgep = getelementptr i8, <2 x ptr> %pm0, <2 x i64> <i64 32, i64 32>
221   %r = call <2 x ptr> @llvm.ptrmask.v2p1.v2i64(<2 x ptr> %pgep, <2 x i64> <i64 -32, i64 -32>)
222   ret <2 x ptr> %r
225 define <2 x ptr> @ptrmask_simplify_known_unused_vec2(<2 x ptr> %p) {
226 ; CHECK-LABEL: define <2 x ptr> @ptrmask_simplify_known_unused_vec2
227 ; CHECK-SAME: (<2 x ptr> [[P:%.*]]) {
228 ; CHECK-NEXT:    [[PM0:%.*]] = call <2 x ptr> @llvm.ptrmask.v2p0.v2i64(<2 x ptr> [[P]], <2 x i64> <i64 -64, i64 -64>)
229 ; CHECK-NEXT:    [[PGEP:%.*]] = getelementptr i8, <2 x ptr> [[PM0]], <2 x i64> <i64 32, i64 32>
230 ; CHECK-NEXT:    ret <2 x ptr> [[PGEP]]
232   %pm0 = call <2 x ptr> @llvm.ptrmask.v2p1.v2i64(<2 x ptr> %p, <2 x i64> <i64 -64, i64 -64>)
233   %pgep = getelementptr i8, <2 x ptr> %pm0, <2 x i64> <i64 32, i64 32>
234   %r = call <2 x ptr> @llvm.ptrmask.v2p1.v2i64(<2 x ptr> %pgep, <2 x i64> <i64 -32, i64 -16>)
235   ret <2 x ptr> %r
238 define <2 x ptr> @ptrmask_simplify_known_unused_vec3(<2 x ptr> %p) {
239 ; CHECK-LABEL: define <2 x ptr> @ptrmask_simplify_known_unused_vec3
240 ; CHECK-SAME: (<2 x ptr> [[P:%.*]]) {
241 ; CHECK-NEXT:    [[PM0:%.*]] = call <2 x ptr> @llvm.ptrmask.v2p0.v2i64(<2 x ptr> [[P]], <2 x i64> <i64 -64, i64 -128>)
242 ; CHECK-NEXT:    [[PGEP:%.*]] = getelementptr i8, <2 x ptr> [[PM0]], <2 x i64> <i64 32, i64 32>
243 ; CHECK-NEXT:    ret <2 x ptr> [[PGEP]]
245   %pm0 = call <2 x ptr> @llvm.ptrmask.v2p1.v2i64(<2 x ptr> %p, <2 x i64> <i64 -64, i64 -128>)
246   %pgep = getelementptr i8, <2 x ptr> %pm0, <2 x i64> <i64 32, i64 32>
247   %r = call <2 x ptr> @llvm.ptrmask.v2p1.v2i64(<2 x ptr> %pgep, <2 x i64> <i64 -32, i64 -32>)
248   ret <2 x ptr> %r
251 define <2 x ptr> @ptrmask_simplify_known_unused_vec4(<2 x ptr> %p) {
252 ; CHECK-LABEL: define <2 x ptr> @ptrmask_simplify_known_unused_vec4
253 ; CHECK-SAME: (<2 x ptr> [[P:%.*]]) {
254 ; CHECK-NEXT:    [[PM0:%.*]] = call <2 x ptr> @llvm.ptrmask.v2p0.v2i64(<2 x ptr> [[P]], <2 x i64> <i64 -64, i64 -128>)
255 ; CHECK-NEXT:    [[PGEP:%.*]] = getelementptr i8, <2 x ptr> [[PM0]], <2 x i64> <i64 32, i64 64>
256 ; CHECK-NEXT:    ret <2 x ptr> [[PGEP]]
258   %pm0 = call <2 x ptr> @llvm.ptrmask.v2p1.v2i64(<2 x ptr> %p, <2 x i64> <i64 -64, i64 -128>)
259   %pgep = getelementptr i8, <2 x ptr> %pm0, <2 x i64> <i64 32, i64 64>
260   %r = call <2 x ptr> @llvm.ptrmask.v2p1.v2i64(<2 x ptr> %pgep, <2 x i64> <i64 -32, i64 -32>)
261   ret <2 x ptr> %r
264 define <2 x ptr> @ptrmask_simplify_known_unused_vec_fail(<2 x ptr> %p) {
265 ; CHECK-LABEL: define <2 x ptr> @ptrmask_simplify_known_unused_vec_fail
266 ; CHECK-SAME: (<2 x ptr> [[P:%.*]]) {
267 ; CHECK-NEXT:    [[PM0:%.*]] = call <2 x ptr> @llvm.ptrmask.v2p0.v2i64(<2 x ptr> [[P]], <2 x i64> <i64 -64, i64 -128>)
268 ; CHECK-NEXT:    [[PGEP:%.*]] = getelementptr i8, <2 x ptr> [[PM0]], <2 x i64> <i64 16, i64 64>
269 ; CHECK-NEXT:    [[R:%.*]] = call <2 x ptr> @llvm.ptrmask.v2p0.v2i64(<2 x ptr> [[PGEP]], <2 x i64> <i64 -32, i64 -32>)
270 ; CHECK-NEXT:    ret <2 x ptr> [[R]]
272   %pm0 = call <2 x ptr> @llvm.ptrmask.v2p1.v2i64(<2 x ptr> %p, <2 x i64> <i64 -64, i64 -128>)
273   %pgep = getelementptr i8, <2 x ptr> %pm0, <2 x i64> <i64 16, i64 64>
274   %r = call <2 x ptr> @llvm.ptrmask.v2p1.v2i64(<2 x ptr> %pgep, <2 x i64> <i64 -32, i64 -32>)
275   ret <2 x ptr> %r
278 define <2 x ptr> @ptrmask_simplify_known_unused_vec_fail2(<2 x ptr> %p) {
279 ; CHECK-LABEL: define <2 x ptr> @ptrmask_simplify_known_unused_vec_fail2
280 ; CHECK-SAME: (<2 x ptr> [[P:%.*]]) {
281 ; CHECK-NEXT:    [[PM0:%.*]] = call <2 x ptr> @llvm.ptrmask.v2p0.v2i64(<2 x ptr> [[P]], <2 x i64> <i64 -64, i64 -64>)
282 ; CHECK-NEXT:    [[PGEP:%.*]] = getelementptr i8, <2 x ptr> [[PM0]], <2 x i64> <i64 32, i64 32>
283 ; CHECK-NEXT:    [[R:%.*]] = call <2 x ptr> @llvm.ptrmask.v2p0.v2i64(<2 x ptr> [[PGEP]], <2 x i64> <i64 -32, i64 -64>)
284 ; CHECK-NEXT:    ret <2 x ptr> [[R]]
286   %pm0 = call <2 x ptr> @llvm.ptrmask.v2p1.v2i64(<2 x ptr> %p, <2 x i64> <i64 -64, i64 -64>)
287   %pgep = getelementptr i8, <2 x ptr> %pm0, <2 x i64> <i64 32, i64 32>
288   %r = call <2 x ptr> @llvm.ptrmask.v2p1.v2i64(<2 x ptr> %pgep, <2 x i64> <i64 -32, i64 -64>)
289   ret <2 x ptr> %r
292 define <2 x ptr> @ptrmask_simplify_known_unused_vec_fail3(<2 x ptr> %p) {
293 ; CHECK-LABEL: define <2 x ptr> @ptrmask_simplify_known_unused_vec_fail3
294 ; CHECK-SAME: (<2 x ptr> [[P:%.*]]) {
295 ; CHECK-NEXT:    [[PM0:%.*]] = call <2 x ptr> @llvm.ptrmask.v2p0.v2i64(<2 x ptr> [[P]], <2 x i64> <i64 -64, i64 -16>)
296 ; CHECK-NEXT:    [[PGEP:%.*]] = getelementptr i8, <2 x ptr> [[PM0]], <2 x i64> <i64 32, i64 32>
297 ; CHECK-NEXT:    [[R:%.*]] = call <2 x ptr> @llvm.ptrmask.v2p0.v2i64(<2 x ptr> [[PGEP]], <2 x i64> <i64 -32, i64 -32>)
298 ; CHECK-NEXT:    ret <2 x ptr> [[R]]
300   %pm0 = call <2 x ptr> @llvm.ptrmask.v2p1.v2i64(<2 x ptr> %p, <2 x i64> <i64 -64, i64 -16>)
301   %pgep = getelementptr i8, <2 x ptr> %pm0, <2 x i64> <i64 32, i64 32>
302   %r = call <2 x ptr> @llvm.ptrmask.v2p1.v2i64(<2 x ptr> %pgep, <2 x i64> <i64 -32, i64 -32>)
303   ret <2 x ptr> %r
306 define ptr @ptrmask_maintain_provenance_i64(ptr %p0) {
307 ; CHECK-LABEL: define ptr @ptrmask_maintain_provenance_i64
308 ; CHECK-SAME: (ptr [[P0:%.*]]) {
309 ; CHECK-NEXT:    [[R:%.*]] = call ptr @llvm.ptrmask.p0.i64(ptr [[P0]], i64 0)
310 ; CHECK-NEXT:    ret ptr [[R]]
312   %r = call ptr @llvm.ptrmask.p0.i64(ptr %p0, i64 0)
313   ret ptr %r
316 define ptr addrspace(1) @ptrmask_maintain_provenance_i32(ptr addrspace(1) %p0) {
317 ; CHECK-LABEL: define ptr addrspace(1) @ptrmask_maintain_provenance_i32
318 ; CHECK-SAME: (ptr addrspace(1) [[P0:%.*]]) {
319 ; CHECK-NEXT:    [[R:%.*]] = call ptr addrspace(1) @llvm.ptrmask.p1.i32(ptr addrspace(1) [[P0]], i32 0)
320 ; CHECK-NEXT:    ret ptr addrspace(1) [[R]]
322   %r = call ptr addrspace(1) @llvm.ptrmask.p1.i32(ptr addrspace(1) %p0, i32 0)
323   ret ptr addrspace(1) %r
326 define <2 x ptr> @ptrmask_maintain_provenance_v2i64(<2 x ptr> %p0) {
327 ; CHECK-LABEL: define <2 x ptr> @ptrmask_maintain_provenance_v2i64
328 ; CHECK-SAME: (<2 x ptr> [[P0:%.*]]) {
329 ; CHECK-NEXT:    [[R:%.*]] = call <2 x ptr> @llvm.ptrmask.v2p0.v2i64(<2 x ptr> [[P0]], <2 x i64> zeroinitializer)
330 ; CHECK-NEXT:    ret <2 x ptr> [[R]]
332   %r = call <2 x ptr> @llvm.ptrmask.v2p1.v2i64(<2 x ptr> %p0, <2 x i64> zeroinitializer)
333   ret <2 x ptr> %r
336 define <2 x ptr addrspace(1) > @ptrmask_maintain_provenance_v2i32(<2 x ptr addrspace(1) > %p0) {
337 ; CHECK-LABEL: define <2 x ptr addrspace(1)> @ptrmask_maintain_provenance_v2i32
338 ; CHECK-SAME: (<2 x ptr addrspace(1)> [[P0:%.*]]) {
339 ; CHECK-NEXT:    [[R:%.*]] = call <2 x ptr addrspace(1)> @llvm.ptrmask.v2p1.v2i32(<2 x ptr addrspace(1)> [[P0]], <2 x i32> zeroinitializer)
340 ; CHECK-NEXT:    ret <2 x ptr addrspace(1)> [[R]]
342   %r = call <2 x ptr addrspace(1) > @llvm.ptrmask.v2p1.v2i32(<2 x ptr addrspace(1) > %p0, <2 x i32> zeroinitializer)
343   ret <2 x ptr addrspace(1) > %r