@@ -82,3 +82,171 @@ void test_mm512_mask_store_ps(void *p, __m512 a, __mmask16 m){
82
82
// LLVM: @llvm.masked.store.v16f32.p0(<16 x float> %{{.*}}, ptr %{{.*}}, i32 64, <16 x i1> %{{.*}})
83
83
_mm512_mask_store_ps (p , m , a );
84
84
}
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