@@ -82,3 +82,171 @@ void test_mm512_mask_store_ps(void *p, __m512 a, __mmask16 m){
8282 // LLVM: @llvm.masked.store.v16f32.p0(<16 x float> %{{.*}}, ptr %{{.*}}, i32 64, <16 x i1> %{{.*}})
8383 _mm512_mask_store_ps (p , m , a );
8484}
85+
86+ __m512 test_mm512_mask_loadu_ps (__m512 __W , __mmask16 __U , void * __P )
87+ {
88+ // CIR-LABEL: _mm512_mask_loadu_ps
89+ // CIR: %{{.*}} = cir.llvm.intrinsic "masked.load" %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}} : (!cir.ptr<!cir.float>, !u32i, !cir.vector<!cir.int<s, 1> x 16>, !cir.vector<!cir.float x 16>) -> !cir.vector<!cir.float x 16>
90+
91+ // LLVM-LABEL: test_mm512_mask_loadu_ps
92+ // LLVM: @llvm.masked.load.v16f32.p0(ptr %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x float> %{{.*}})
93+ return _mm512_mask_loadu_ps (__W ,__U , __P );
94+ }
95+
96+ __m512 test_mm512_maskz_load_ps (__mmask16 __U , void * __P )
97+ {
98+
99+ // CIR-LABEL: _mm512_maskz_load_ps
100+ // CIR: cir.llvm.intrinsic "masked.load" %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}} : (!cir.ptr<!cir.vector<!cir.float x 16>>, !u32i, !cir.vector<!cir.int<s, 1> x 16>, !cir.vector<!cir.float x 16>) -> !cir.vector<!cir.float x 16>
101+
102+ // LLVM-LABEL: test_mm512_maskz_load_ps
103+ // LLVM: @llvm.masked.load.v16f32.p0(ptr %{{.*}}, i32 64, <16 x i1> %{{.*}}, <16 x float> %{{.*}})
104+ return _mm512_maskz_load_ps (__U , __P );
105+ }
106+
107+ __m512d test_mm512_mask_loadu_pd (__m512d __W , __mmask8 __U , void * __P )
108+ {
109+ // CIR-LABEL: _mm512_mask_loadu_pd
110+ // CIR: %{{.*}} = cir.llvm.intrinsic "masked.load" %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}} : (!cir.ptr<!cir.double>, !u32i, !cir.vector<!cir.int<s, 1> x 8>, !cir.vector<!cir.double x 8>) -> !cir.vector<!cir.double x 8>
111+
112+ // LLVM-LABEL: test_mm512_mask_loadu_pd
113+ // LLVM: @llvm.masked.load.v8f64.p0(ptr %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x double> %{{.*}})
114+ return _mm512_mask_loadu_pd (__W ,__U , __P );
115+ }
116+
117+ __m512d test_mm512_maskz_load_pd (__mmask8 __U , void * __P )
118+ {
119+ // CIR-LABEL: _mm512_maskz_load_pd
120+ // CIR: cir.llvm.intrinsic "masked.load" %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}} : (!cir.ptr<!cir.vector<!cir.double x 8>>, !u32i, !cir.vector<!cir.int<s, 1> x 8>, !cir.vector<!cir.double x 8>) -> !cir.vector<!cir.double x 8>
121+
122+ // LLVM-LABEL: test_mm512_maskz_load_pd
123+ // LLVM: @llvm.masked.load.v8f64.p0(ptr %{{.*}}, i32 64, <8 x i1> %{{.*}}, <8 x double> %{{.*}})
124+ return _mm512_maskz_load_pd (__U , __P );
125+ }
126+
127+ __m512i test_mm512_mask_loadu_epi32 (__m512i __W , __mmask16 __U , void * __P )
128+ {
129+ // CIR-LABEL: _mm512_mask_loadu_epi32
130+ // CIR: %{{.*}} = cir.llvm.intrinsic "masked.load" %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}} : (!cir.ptr<!s32i>, !u32i, !cir.vector<!cir.int<s, 1> x 16>, !cir.vector<!s32i x 16>) -> !cir.vector<!s32i x 16>
131+
132+ // LLVM-LABEL: test_mm512_mask_loadu_epi32
133+ // LLVM: @llvm.masked.load.v16i32.p0(ptr %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
134+ return _mm512_mask_loadu_epi32 (__W ,__U , __P );
135+ }
136+
137+ __m512i test_mm512_maskz_loadu_epi32 (__mmask16 __U , void * __P )
138+ {
139+ // CIR-LABEL: _mm512_maskz_loadu_epi32
140+ // CIR: cir.llvm.intrinsic "masked.load" %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}} : (!cir.ptr<!s32i>, !u32i, !cir.vector<!cir.int<s, 1> x 16>, !cir.vector<!s32i x 16>) -> !cir.vector<!s32i x 16>
141+
142+ // LLVM-LABEL: test_mm512_maskz_loadu_epi32
143+ // LLVM: @llvm.masked.load.v16i32.p0(ptr %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
144+ return _mm512_maskz_loadu_epi32 (__U , __P );
145+ }
146+
147+ __m512i test_mm512_mask_loadu_epi64 (__m512i __W , __mmask8 __U , void * __P )
148+ {
149+ // CIR-LABEL: _mm512_mask_loadu_epi64
150+ // CIR: %{{.*}} = cir.llvm.intrinsic "masked.load" %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}} : (!cir.ptr<!s64i>, !u32i, !cir.vector<!cir.int<s, 1> x 8>, !cir.vector<!s64i x 8>) -> !cir.vector<!s64i x 8>
151+
152+ // LLVM-LABEL: test_mm512_mask_loadu_epi64
153+ // LLVM: @llvm.masked.load.v8i64.p0(ptr %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
154+ return _mm512_mask_loadu_epi64 (__W ,__U , __P );
155+ }
156+
157+ __m512i test_mm512_maskz_loadu_epi64 (__mmask16 __U , void * __P )
158+ {
159+ // CIR-LABEL: _mm512_maskz_loadu_epi64
160+ // CIR: cir.llvm.intrinsic "masked.load" %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}} : (!cir.ptr<!s64i>, !u32i, !cir.vector<!cir.int<s, 1> x 8>, !cir.vector<!s64i x 8>) -> !cir.vector<!s64i x 8>
161+
162+ // LLVM-LABEL: test_mm512_maskz_loadu_epi64
163+ // LLVM: @llvm.masked.load.v8i64.p0(ptr %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
164+ return _mm512_maskz_loadu_epi64 (__U , __P );
165+ }
166+
167+ __m128 test_mm_mask_load_ss (__m128 __A , __mmask8 __U , const float * __W )
168+ {
169+ // CIR-LABEL: _mm_mask_load_ss
170+ // CIR: %{{.*}} = cir.llvm.intrinsic "masked.load" %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}} : (!cir.ptr<!cir.vector<!cir.float x 4>>, !u32i, !cir.vector<!cir.int<s, 1> x 4>, !cir.vector<!cir.float x 4>) -> !cir.vector<!cir.float x 4>
171+
172+ // LLVM-LABEL: test_mm_mask_load_ss
173+ // LLVM: call {{.*}}<4 x float> @llvm.masked.load.v4f32.p0(ptr %{{.*}}, i32 1, <4 x i1> %{{.*}}, <4 x float> %{{.*}})
174+ return _mm_mask_load_ss (__A , __U , __W );
175+ }
176+
177+ __m128 test_mm_maskz_load_ss (__mmask8 __U , const float * __W )
178+ {
179+ // CIR-LABEL: _mm_maskz_load_ss
180+ // CIR: %{{.*}} = cir.llvm.intrinsic "masked.load" %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}} : (!cir.ptr<!cir.vector<!cir.float x 4>>, !u32i, !cir.vector<!cir.int<s, 1> x 4>, !cir.vector<!cir.float x 4>) -> !cir.vector<!cir.float x 4>
181+
182+ // LLVM-LABEL: test_mm_maskz_load_ss
183+ // LLVM: call {{.*}}<4 x float> @llvm.masked.load.v4f32.p0(ptr %{{.*}}, i32 1, <4 x i1> %{{.*}}, <4 x float> %{{.*}})
184+ return _mm_maskz_load_ss (__U , __W );
185+ }
186+
187+ __m128d test_mm_mask_load_sd (__m128d __A , __mmask8 __U , const double * __W )
188+ {
189+ // CIR-LABEL: _mm_mask_load_sd
190+ // CIR: %{{.*}} = cir.llvm.intrinsic "masked.load" %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}} : (!cir.ptr<!cir.vector<!cir.double x 2>>, !u32i, !cir.vector<!cir.int<s, 1> x 2>, !cir.vector<!cir.double x 2>) -> !cir.vector<!cir.double x 2>
191+
192+ // LLVM-LABEL: test_mm_mask_load_sd
193+ // LLVM: call {{.*}}<2 x double> @llvm.masked.load.v2f64.p0(ptr %{{.*}}, i32 1, <2 x i1> %{{.*}}, <2 x double> %{{.*}})
194+ return _mm_mask_load_sd (__A , __U , __W );
195+ }
196+
197+ __m128d test_mm_maskz_load_sd (__mmask8 __U , const double * __W )
198+ {
199+ // CIR-LABEL: _mm_maskz_load_sd
200+ // CIR: %{{.*}} = cir.llvm.intrinsic "masked.load" %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}} : (!cir.ptr<!cir.vector<!cir.double x 2>>, !u32i, !cir.vector<!cir.int<s, 1> x 2>, !cir.vector<!cir.double x 2>) -> !cir.vector<!cir.double x 2>
201+
202+ // LLVM-LABEL: test_mm_maskz_load_sd
203+ // LLVM: call {{.*}}<2 x double> @llvm.masked.load.v2f64.p0(ptr %{{.*}}, i32 1, <2 x i1> %{{.*}}, <2 x double> %{{.*}})
204+ return _mm_maskz_load_sd (__U , __W );
205+ }
206+
207+ __m512 test_mm512_mask_load_ps (__m512 __W , __mmask16 __U , void * __P )
208+ {
209+ // CIR-LABEL: _mm512_mask_load_ps
210+ // CIR: %{{.*}} = cir.llvm.intrinsic "masked.load" %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}} : (!cir.ptr<!cir.vector<!cir.float x 16>>, !u32i, !cir.vector<!cir.int<s, 1> x 16>, !cir.vector<!cir.float x 16>) -> !cir.vector<!cir.float x 16>
211+
212+ // LLVM-LABEL: test_mm512_mask_load_ps
213+ // LLVM: @llvm.masked.load.v16f32.p0(ptr %{{.*}}, i32 64, <16 x i1> %{{.*}}, <16 x float> %{{.*}})
214+ return _mm512_mask_load_ps (__W ,__U , __P );
215+ }
216+
217+ __m512d test_mm512_mask_load_pd (__m512d __W , __mmask8 __U , void * __P )
218+ {
219+ // CIR-LABEL: _mm512_mask_load_pd
220+ // CIR: %{{.*}} = cir.llvm.intrinsic "masked.load" %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}} : (!cir.ptr<!cir.vector<!cir.double x 8>>, !u32i, !cir.vector<!cir.int<s, 1> x 8>, !cir.vector<!cir.double x 8>) -> !cir.vector<!cir.double x 8>
221+
222+ // LLVM-LABEL: test_mm512_mask_load_pd
223+ // LLVM: @llvm.masked.load.v8f64.p0(ptr %{{.*}}, i32 64, <8 x i1> %{{.*}}, <8 x double> %{{.*}})
224+ return _mm512_mask_load_pd (__W ,__U , __P );
225+ }
226+
227+ __m512i test_mm512_mask_load_epi32 (__m512i __W , __mmask16 __U , void const * __P ) {
228+ // CIR-LABEL: _mm512_mask_load_epi32
229+ // CIR: %{{.*}} = cir.llvm.intrinsic "masked.load" %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}} : (!cir.ptr<!cir.vector<!s32i x 16>>, !u32i, !cir.vector<!cir.int<s, 1> x 16>, !cir.vector<!s32i x 16>) -> !cir.vector<!s32i x 16>
230+
231+ // LLVM-LABEL: test_mm512_mask_load_epi32
232+ // LLVM: @llvm.masked.load.v16i32.p0(ptr %{{.*}}, i32 64, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
233+ return _mm512_mask_load_epi32 (__W , __U , __P );
234+ }
235+
236+ __m512i test_mm512_mask_load_epi64 (__m512i __W , __mmask8 __U , void const * __P ) {
237+ // CIR-LABEL: _mm512_mask_load_epi64
238+ // CIR: %{{.*}} = cir.llvm.intrinsic "masked.load" %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}} : (!cir.ptr<!cir.vector<!s64i x 8>>, !u32i, !cir.vector<!cir.int<s, 1> x 8>, !cir.vector<!s64i x 8>) -> !cir.vector<!s64i x 8>
239+
240+ // LLVM-LABEL: test_mm512_mask_load_epi64
241+ // LLVM: @llvm.masked.load.v8i64.p0(ptr %{{.*}}, i32 64, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
242+ return _mm512_mask_load_epi64 (__W , __U , __P );
243+ }
244+
245+ __m512i test_mm512_maskz_load_epi64 (__mmask8 __U , void const * __P ) {
246+ // CIR-LABEL: _mm512_maskz_load_epi64
247+ // CIR: %{{.*}} = cir.llvm.intrinsic "masked.load" %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}} : (!cir.ptr<!cir.vector<!s64i x 8>>, !u32i, !cir.vector<!cir.int<s, 1> x 8>, !cir.vector<!s64i x 8>) -> !cir.vector<!s64i x 8>
248+
249+ // LLVM-LABEL: test_mm512_maskz_load_epi64
250+ // LLVM: @llvm.masked.load.v8i64.p0(ptr %{{.*}}, i32 64, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
251+ return _mm512_maskz_load_epi64 (__U , __P );
252+ }
0 commit comments