1 // RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64 -target-feature +avx10.2-256 -emit-llvm -o - | FileCheck %s 2 // RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=i686 -target-feature +avx10.2-256 -emit-llvm -o - | FileCheck %s 3 4 #include <immintrin.h> 5 6 // VNNI FP16 7 __m128 test_mm_dpph_ps(__m128 __W, __m128h __A, __m128h __B) { 8 // CHECK-LABEL: @test_mm_dpph_ps( 9 // CHECK: call <4 x float> @llvm.x86.avx10.vdpphps.128 10 return _mm_dpph_ps(__W, __A, __B); 11 } 12 13 __m128 test_mm_mask_dpph_ps(__m128 __W, __mmask8 __U, __m128h __A, __m128h __B) { 14 // CHECK-LABEL: @test_mm_mask_dpph_ps( 15 // CHECK: call <4 x float> @llvm.x86.avx10.vdpphps.128 16 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}} 17 return _mm_mask_dpph_ps(__W, __U, __A, __B); 18 } 19 20 __m128 test_mm_maskz_dpph_ps(__mmask8 __U, __m128 __W, __m128h __A, __m128h __B) { 21 // CHECK-LABEL: @test_mm_maskz_dpph_ps( 22 // CHECK: call <4 x float> @llvm.x86.avx10.vdpphps.128 23 // CHECK: zeroinitializer 24 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}} 25 return _mm_maskz_dpph_ps(__U, __W, __A, __B); 26 } 27 28 __m256 test_mm256_dpph_ps(__m256 __W, __m256h __A, __m256h __B) { 29 // CHECK-LABEL: @test_mm256_dpph_ps( 30 // CHECK: call <8 x float> @llvm.x86.avx10.vdpphps.256 31 return _mm256_dpph_ps(__W, __A, __B); 32 } 33 34 __m256 test_mm256_mask_dpph_ps(__m256 __W, __mmask8 __U, __m256h __A, __m256h __B) { 35 // CHECK-LABEL: @test_mm256_mask_dpph_ps( 36 // CHECK: call <8 x float> @llvm.x86.avx10.vdpphps.256 37 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} 38 return _mm256_mask_dpph_ps(__W, __U, __A, __B); 39 } 40 41 __m256 test_mm256_maskz_dpph_ps(__mmask8 __U, __m256 __W, __m256h __A, __m256h __B) { 42 // CHECK-LABEL: @test_mm256_maskz_dpph_ps( 43 // CHECK: call <8 x float> @llvm.x86.avx10.vdpphps.256 44 // CHECK: zeroinitializer 45 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} 46 return _mm256_maskz_dpph_ps(__U, __W, __A, __B); 47 } 48 49 // VMPSADBW 50 __m128i test_mm_mpsadbw_epu8(__m128i __A, __m128i __B) { 51 // CHECK-LABEL: @test_mm_mpsadbw_epu8 52 // CHECK: @llvm.x86.sse41.mpsadbw 53 return _mm_mpsadbw_epu8(__A, __B, 170); 54 } 55 56 __m128i test_mm_mask_mpsadbw_epu8(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) { 57 // CHECK-LABEL: @test_mm_mask_mpsadbw_epu8 58 // CHECK: @llvm.x86.sse41.mpsadbw 59 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}} 60 return _mm_mask_mpsadbw_epu8(__W, __U, __A, __B, 170); 61 } 62 63 __m128i test_mm_maskz_mpsadbw_epu8(__mmask8 __U, __m128i __A, __m128i __B) { 64 // CHECK-LABEL: @test_mm_maskz_mpsadbw_epu8 65 // CHECK: @llvm.x86.sse41.mpsadbw 66 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}} 67 return _mm_maskz_mpsadbw_epu8(__U, __A, __B, 170); 68 } 69 70 __m256i test_mm256_mpsadbw_epu8(__m256i __A, __m256i __B) { 71 // CHECK-LABEL: @test_mm256_mpsadbw_epu8 72 // CHECK: @llvm.x86.avx2.mpsadbw 73 return _mm256_mpsadbw_epu8(__A, __B, 170); 74 } 75 76 __m256i test_mm256_mask_mpsadbw_epu8(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) { 77 // CHECK-LABEL: @test_mm256_mask_mpsadbw_epu8 78 // CHECK: @llvm.x86.avx2.mpsadbw 79 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}} 80 return _mm256_mask_mpsadbw_epu8(__W, __U, __A, __B, 170); 81 } 82 83 __m256i test_mm256_maskz_mpsadbw_epu8(__mmask16 __U, __m256i __A, __m256i __B) { 84 // CHECK-LABEL: @test_mm256_maskz_mpsadbw_epu8 85 // CHECK: @llvm.x86.avx2.mpsadbw 86 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}} 87 return _mm256_maskz_mpsadbw_epu8(__U, __A, __B, 170); 88 } 89 90 // VNNI INT8 91 __m128i test_mm_mask_dpbssd_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) { 92 // CHECK-LABEL: @test_mm_mask_dpbssd_epi32 93 // CHECK: @llvm.x86.avx2.vpdpbssd.128 94 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}} 95 return _mm_mask_dpbssd_epi32(__W, __U, __A, __B); 96 } 97 98 __m128i test_mm_maskz_dpbssd_epi32(__mmask8 __U, __m128i __W, __m128i __A, __m128i __B) { 99 // CHECK-LABEL: @test_mm_maskz_dpbssd_epi32 100 // CHECK: @llvm.x86.avx2.vpdpbssd.128 101 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}} 102 return _mm_maskz_dpbssd_epi32(__U, __W, __A, __B); 103 } 104 105 __m128i test_mm_mask_dpbssds_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) { 106 // CHECK-LABEL: @test_mm_mask_dpbssds_epi32 107 // CHECK: @llvm.x86.avx2.vpdpbssds.128 108 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}} 109 return _mm_mask_dpbssds_epi32(__W, __U, __A, __B); 110 } 111 112 __m128i test_mm_maskz_dpbssds_epi32(__mmask8 __U, __m128i __W, __m128i __A, __m128i __B) { 113 // CHECK-LABEL: @test_mm_maskz_dpbssds_epi32 114 // CHECK: @llvm.x86.avx2.vpdpbssds.128 115 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}} 116 return _mm_maskz_dpbssds_epi32(__U, __W, __A, __B); 117 } 118 119 __m128i test_mm_mask_dpbsud_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) { 120 // CHECK-LABEL: @test_mm_mask_dpbsud_epi32 121 // CHECK: @llvm.x86.avx2.vpdpbsud.128 122 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}} 123 return _mm_mask_dpbsud_epi32(__W, __U, __A, __B); 124 } 125 126 __m128i test_mm_maskz_dpbsud_epi32(__mmask8 __U, __m128i __W, __m128i __A, __m128i __B) { 127 // CHECK-LABEL: @test_mm_maskz_dpbsud_epi32 128 // CHECK: @llvm.x86.avx2.vpdpbsud.128 129 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}} 130 return _mm_maskz_dpbsud_epi32(__U, __W, __A, __B); 131 } 132 133 __m128i test_mm_mask_dpbsuds_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) { 134 // CHECK-LABEL: @test_mm_mask_dpbsuds_epi32 135 // CHECK: @llvm.x86.avx2.vpdpbsuds.128 136 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}} 137 return _mm_mask_dpbsuds_epi32(__W, __U, __A, __B); 138 } 139 140 __m128i test_mm_maskz_dpbsuds_epi32(__mmask8 __U, __m128i __W, __m128i __A, __m128i __B) { 141 // CHECK-LABEL: @test_mm_maskz_dpbsuds_epi32 142 // CHECK: @llvm.x86.avx2.vpdpbsuds.128 143 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}} 144 return _mm_maskz_dpbsuds_epi32(__U, __W, __A, __B); 145 } 146 147 __m128i test_mm_mask_dpbuud_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) { 148 // CHECK-LABEL: @test_mm_mask_dpbuud_epi32 149 // CHECK: @llvm.x86.avx2.vpdpbuud.128 150 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}} 151 return _mm_mask_dpbuud_epi32(__W, __U, __A, __B); 152 } 153 154 __m128i test_mm_maskz_dpbuud_epi32(__mmask8 __U, __m128i __W, __m128i __A, __m128i __B) { 155 // CHECK-LABEL: @test_mm_maskz_dpbuud_epi32 156 // CHECK: @llvm.x86.avx2.vpdpbuud.128 157 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}} 158 return _mm_maskz_dpbuud_epi32(__U, __W, __A, __B); 159 } 160 161 __m128i test_mm_mask_dpbuuds_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) { 162 // CHECK-LABEL: @test_mm_mask_dpbuuds_epi32 163 // CHECK: @llvm.x86.avx2.vpdpbuuds.128 164 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}} 165 return _mm_mask_dpbuuds_epi32(__W, __U, __A, __B); 166 } 167 168 __m128i test_mm_maskz_dpbuuds_epi32(__mmask8 __U, __m128i __W, __m128i __A, __m128i __B) { 169 // CHECK-LABEL: @test_mm_maskz_dpbuuds_epi32 170 // CHECK: @llvm.x86.avx2.vpdpbuuds.128 171 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}} 172 return _mm_maskz_dpbuuds_epi32(__U, __W, __A, __B); 173 } 174 175 __m256i test_mm256_mask_dpbssd_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) { 176 // CHECK-LABEL: @test_mm256_mask_dpbssd_epi32 177 // CHECK: @llvm.x86.avx2.vpdpbssd.256 178 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}} 179 return _mm256_mask_dpbssd_epi32(__W, __U, __A, __B); 180 } 181 182 __m256i test_mm256_maskz_dpbssd_epi32(__mmask8 __U, __m256i __W, __m256i __A, __m256i __B) { 183 // CHECK-LABEL: @test_mm256_maskz_dpbssd_epi32 184 // CHECK: @llvm.x86.avx2.vpdpbssd.256 185 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}} 186 return _mm256_maskz_dpbssd_epi32(__U, __W, __A, __B); 187 } 188 189 __m256i test_mm256_mask_dpbssds_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) { 190 // CHECK-LABEL: @test_mm256_mask_dpbssds_epi32 191 // CHECK: @llvm.x86.avx2.vpdpbssds.256 192 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}} 193 return _mm256_mask_dpbssds_epi32(__W, __U, __A, __B); 194 } 195 196 __m256i test_mm256_maskz_dpbssds_epi32(__mmask8 __U, __m256i __W, __m256i __A, __m256i __B) { 197 // CHECK-LABEL: @test_mm256_maskz_dpbssds_epi32 198 // CHECK: @llvm.x86.avx2.vpdpbssds.256 199 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}} 200 return _mm256_maskz_dpbssds_epi32(__U, __W, __A, __B); 201 } 202 203 __m256i test_mm256_mask_dpbsud_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) { 204 // CHECK-LABEL: @test_mm256_mask_dpbsud_epi32 205 // CHECK: @llvm.x86.avx2.vpdpbsud.256 206 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}} 207 return _mm256_mask_dpbsud_epi32(__W, __U, __A, __B); 208 } 209 210 __m256i test_mm256_maskz_dpbsud_epi32(__mmask8 __U, __m256i __W, __m256i __A, __m256i __B) { 211 // CHECK-LABEL: @test_mm256_maskz_dpbsud_epi32 212 // CHECK: @llvm.x86.avx2.vpdpbsud.256 213 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}} 214 return _mm256_maskz_dpbsud_epi32(__U, __W, __A, __B); 215 } 216 217 __m256i test_mm256_mask_dpbsuds_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) { 218 // CHECK-LABEL: @test_mm256_mask_dpbsuds_epi32 219 // CHECK: @llvm.x86.avx2.vpdpbsuds.256 220 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}} 221 return _mm256_mask_dpbsuds_epi32(__W, __U, __A, __B); 222 } 223 224 __m256i test_mm256_maskz_dpbsuds_epi32(__mmask8 __U, __m256i __W, __m256i __A, __m256i __B) { 225 // CHECK-LABEL: @test_mm256_maskz_dpbsuds_epi32 226 // CHECK: @llvm.x86.avx2.vpdpbsuds.256 227 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}} 228 return _mm256_maskz_dpbsuds_epi32(__U, __W, __A, __B); 229 } 230 231 __m256i test_mm256_mask_dpbuud_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) { 232 // CHECK-LABEL: @test_mm256_mask_dpbuud_epi32 233 // CHECK: @llvm.x86.avx2.vpdpbuud.256 234 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}} 235 return _mm256_mask_dpbuud_epi32(__W, __U, __A, __B); 236 } 237 238 __m256i test_mm256_maskz_dpbuud_epi32(__mmask8 __U, __m256i __W, __m256i __A, __m256i __B) { 239 // CHECK-LABEL: @test_mm256_maskz_dpbuud_epi32 240 // CHECK: @llvm.x86.avx2.vpdpbuud.256 241 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}} 242 return _mm256_maskz_dpbuud_epi32(__U, __W, __A, __B); 243 } 244 245 __m256i test_mm256_mask_dpbuuds_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) { 246 // CHECK-LABEL: @test_mm256_mask_dpbuuds_epi32 247 // CHECK: @llvm.x86.avx2.vpdpbuuds.256 248 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}} 249 return _mm256_mask_dpbuuds_epi32(__W, __U, __A, __B); 250 } 251 252 __m256i test_mm256_maskz_dpbuuds_epi32(__mmask8 __U, __m256i __W, __m256i __A, __m256i __B) { 253 // CHECK-LABEL: @test_mm256_maskz_dpbuuds_epi32 254 // CHECK: @llvm.x86.avx2.vpdpbuuds.256 255 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}} 256 return _mm256_maskz_dpbuuds_epi32(__U, __W, __A, __B); 257 } 258 259 // VNNI INT16 260 __m128i test_mm_mask_dpwsud_epi32(__m128i __A, __mmask8 __B, __m128i __C, __m128i __D) { 261 // CHECK-LABEL: @test_mm_mask_dpwsud_epi32( 262 // CHECK: call <4 x i32> @llvm.x86.avx2.vpdpwsud.128(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}) 263 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}} 264 return _mm_mask_dpwsud_epi32(__A, __B, __C, __D); 265 } 266 267 __m128i test_mm_maskz_dpwsud_epi32(__m128i __A, __mmask8 __B, __m128i __C, __m128i __D) { 268 // CHECK-LABEL: @test_mm_maskz_dpwsud_epi32( 269 // CHECK: call <4 x i32> @llvm.x86.avx2.vpdpwsud.128(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}) 270 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}} 271 return _mm_maskz_dpwsud_epi32(__A, __B, __C, __D); 272 } 273 274 __m256i test_mm256_mask_dpwsud_epi32(__m256i __A, __mmask8 __B, __m256i __C, __m256i __D) { 275 // CHECK-LABEL: @test_mm256_mask_dpwsud_epi32( 276 // CHECK: call <8 x i32> @llvm.x86.avx2.vpdpwsud.256(<8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}) 277 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}} 278 return _mm256_mask_dpwsud_epi32(__A, __B, __C, __D); 279 } 280 281 __m256i test_mm256_maskz_dpwsud_epi32(__m256i __A, __mmask8 __B, __m256i __C, __m256i __D) { 282 // CHECK-LABEL: @test_mm256_maskz_dpwsud_epi32( 283 // CHECK: call <8 x i32> @llvm.x86.avx2.vpdpwsud.256(<8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}) 284 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}} 285 return _mm256_maskz_dpwsud_epi32(__A, __B, __C, __D); 286 } 287 288 __m128i test_mm_mask_dpwsuds_epi32(__m128i __A, __mmask8 __B, __m128i __C, __m128i __D) { 289 // CHECK-LABEL: @test_mm_mask_dpwsuds_epi32( 290 // CHECK: call <4 x i32> @llvm.x86.avx2.vpdpwsuds.128(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}) 291 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}} 292 return _mm_mask_dpwsuds_epi32(__A, __B, __C, __D); 293 } 294 295 __m128i test_mm_maskz_dpwsuds_epi32(__m128i __A, __mmask8 __B, __m128i __C, __m128i __D) { 296 // CHECK-LABEL: @test_mm_maskz_dpwsuds_epi32( 297 // CHECK: call <4 x i32> @llvm.x86.avx2.vpdpwsuds.128(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}) 298 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}} 299 return _mm_maskz_dpwsuds_epi32(__A, __B, __C, __D); 300 } 301 302 __m256i test_mm256_mask_dpwsuds_epi32(__m256i __A, __mmask8 __B, __m256i __C, __m256i __D) { 303 // CHECK-LABEL: @test_mm256_mask_dpwsuds_epi32( 304 // CHECK: call <8 x i32> @llvm.x86.avx2.vpdpwsuds.256(<8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}) 305 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}} 306 return _mm256_mask_dpwsuds_epi32(__A, __B, __C, __D); 307 } 308 309 __m256i test_mm256_maskz_dpwsuds_epi32(__m256i __A, __mmask8 __B, __m256i __C, __m256i __D) { 310 // CHECK-LABEL: @test_mm256_maskz_dpwsuds_epi32( 311 // CHECK: call <8 x i32> @llvm.x86.avx2.vpdpwsuds.256(<8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}) 312 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}} 313 return _mm256_maskz_dpwsuds_epi32(__A, __B, __C, __D); 314 } 315 316 __m128i test_mm_mask_dpwusd_epi32(__m128i __A, __mmask8 __B, __m128i __C, __m128i __D) { 317 // CHECK-LABEL: @test_mm_mask_dpwusd_epi32( 318 // CHECK: call <4 x i32> @llvm.x86.avx2.vpdpwusd.128(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}) 319 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}} 320 return _mm_mask_dpwusd_epi32(__A, __B, __C, __D); 321 } 322 323 __m128i test_mm_maskz_dpwusd_epi32(__m128i __A, __mmask8 __B, __m128i __C, __m128i __D) { 324 // CHECK-LABEL: @test_mm_maskz_dpwusd_epi32( 325 // CHECK: call <4 x i32> @llvm.x86.avx2.vpdpwusd.128(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}) 326 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}} 327 return _mm_maskz_dpwusd_epi32(__A, __B, __C, __D); 328 } 329 330 __m256i test_mm256_mask_dpwusd_epi32(__m256i __A, __mmask8 __B, __m256i __C, __m256i __D) { 331 // CHECK-LABEL: @test_mm256_mask_dpwusd_epi32( 332 // CHECK: call <8 x i32> @llvm.x86.avx2.vpdpwusd.256(<8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}) 333 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}} 334 return _mm256_mask_dpwusd_epi32(__A, __B, __C, __D); 335 } 336 337 __m256i test_mm256_maskz_dpwusd_epi32(__m256i __A, __mmask8 __B, __m256i __C, __m256i __D) { 338 // CHECK-LABEL: @test_mm256_maskz_dpwusd_epi32( 339 // CHECK: call <8 x i32> @llvm.x86.avx2.vpdpwusd.256(<8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}) 340 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}} 341 return _mm256_maskz_dpwusd_epi32(__A, __B, __C, __D); 342 } 343 344 __m128i test_mm_mask_dpwusds_epi32(__m128i __A, __mmask8 __B, __m128i __C, __m128i __D) { 345 // CHECK-LABEL: @test_mm_mask_dpwusds_epi32( 346 // CHECK: call <4 x i32> @llvm.x86.avx2.vpdpwusds.128(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}) 347 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}} 348 return _mm_mask_dpwusds_epi32(__A, __B, __C, __D); 349 } 350 351 __m128i test_mm_maskz_dpwusds_epi32(__m128i __A, __mmask8 __B, __m128i __C, __m128i __D) { 352 // CHECK-LABEL: @test_mm_maskz_dpwusds_epi32( 353 // CHECK: call <4 x i32> @llvm.x86.avx2.vpdpwusds.128(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}) 354 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}} 355 return _mm_maskz_dpwusds_epi32(__A, __B, __C, __D); 356 } 357 358 __m256i test_mm256_mask_dpwusds_epi32(__m256i __A, __mmask8 __B, __m256i __C, __m256i __D) { 359 // CHECK-LABEL: @test_mm256_mask_dpwusds_epi32( 360 // CHECK: call <8 x i32> @llvm.x86.avx2.vpdpwusds.256(<8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}) 361 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}} 362 return _mm256_mask_dpwusds_epi32(__A, __B, __C, __D); 363 } 364 365 __m256i test_mm256_maskz_dpwusds_epi32(__m256i __A, __mmask8 __B, __m256i __C, __m256i __D) { 366 // CHECK-LABEL: @test_mm256_maskz_dpwusds_epi32( 367 // CHECK: call <8 x i32> @llvm.x86.avx2.vpdpwusds.256(<8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}) 368 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}} 369 return _mm256_maskz_dpwusds_epi32(__A, __B, __C, __D); 370 } 371 372 __m128i test_mm_mask_dpwuud_epi32(__m128i __A, __mmask8 __B, __m128i __C, __m128i __D) { 373 // CHECK-LABEL: @test_mm_mask_dpwuud_epi32( 374 // CHECK: call <4 x i32> @llvm.x86.avx2.vpdpwuud.128(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}) 375 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}} 376 return _mm_mask_dpwuud_epi32(__A, __B, __C, __D); 377 } 378 379 __m128i test_mm_maskz_dpwuud_epi32(__m128i __A, __mmask8 __B, __m128i __C, __m128i __D) { 380 // CHECK-LABEL: @test_mm_maskz_dpwuud_epi32( 381 // CHECK: call <4 x i32> @llvm.x86.avx2.vpdpwuud.128(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}) 382 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}} 383 return _mm_maskz_dpwuud_epi32(__A, __B, __C, __D); 384 } 385 386 __m256i test_mm256_mask_dpwuud_epi32(__m256i __A, __mmask8 __B, __m256i __C, __m256i __D) { 387 // CHECK-LABEL: @test_mm256_mask_dpwuud_epi32( 388 // CHECK: call <8 x i32> @llvm.x86.avx2.vpdpwuud.256(<8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}) 389 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}} 390 return _mm256_mask_dpwuud_epi32(__A, __B, __C, __D); 391 } 392 393 __m256i test_mm256_maskz_dpwuud_epi32(__m256i __A, __mmask8 __B, __m256i __C, __m256i __D) { 394 // CHECK-LABEL: @test_mm256_maskz_dpwuud_epi32( 395 // CHECK: call <8 x i32> @llvm.x86.avx2.vpdpwuud.256(<8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}) 396 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}} 397 return _mm256_maskz_dpwuud_epi32(__A, __B, __C, __D); 398 } 399 400 __m128i test_mm_mask_dpwuuds_epi32(__m128i __A, __mmask8 __B, __m128i __C, __m128i __D) { 401 // CHECK-LABEL: @test_mm_mask_dpwuuds_epi32( 402 // CHECK: call <4 x i32> @llvm.x86.avx2.vpdpwuuds.128(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}) 403 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}} 404 return _mm_mask_dpwuuds_epi32(__A, __B, __C, __D); 405 } 406 407 __m128i test_mm_maskz_dpwuuds_epi32(__m128i __A, __mmask8 __B, __m128i __C, __m128i __D) { 408 // CHECK-LABEL: @test_mm_maskz_dpwuuds_epi32( 409 // CHECK: call <4 x i32> @llvm.x86.avx2.vpdpwuuds.128(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}) 410 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}} 411 return _mm_maskz_dpwuuds_epi32(__A, __B, __C, __D); 412 } 413 414 __m256i test_mm256_mask_dpwuuds_epi32(__m256i __A, __mmask8 __B, __m256i __C, __m256i __D) { 415 // CHECK-LABEL: @test_mm256_mask_dpwuuds_epi32( 416 // CHECK: call <8 x i32> @llvm.x86.avx2.vpdpwuuds.256(<8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}) 417 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}} 418 return _mm256_mask_dpwuuds_epi32(__A, __B, __C, __D); 419 } 420 421 __m256i test_mm256_maskz_dpwuuds_epi32(__m256i __A, __mmask8 __B, __m256i __C, __m256i __D) { 422 // CHECK-LABEL: @test_mm256_maskz_dpwuuds_epi32( 423 // CHECK: call <8 x i32> @llvm.x86.avx2.vpdpwuuds.256(<8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}) 424 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}} 425 return _mm256_maskz_dpwuuds_epi32(__A, __B, __C, __D); 426 } 427 428 // YMM Rounding 429 __m256d test_mm256_add_round_pd(__m256d __A, __m256d __B) { 430 // CHECK-LABEL: @test_mm256_add_round_pd 431 // CHECK: @llvm.x86.avx10.vaddpd256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, i32 11) 432 return _mm256_add_round_pd(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 433 } 434 435 __m256d test_mm256_mask_add_round_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) { 436 // CHECK-LABEL: @test_mm256_mask_add_round_pd 437 // CHECK: @llvm.x86.avx10.vaddpd256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, i32 10) 438 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}} 439 return _mm256_mask_add_round_pd(__W, __U, __A, __B, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC); 440 } 441 442 __m256d test_mm256_maskz_add_round_pd(__mmask8 __U, __m256d __A, __m256d __B) { 443 // CHECK-LABEL: @test_mm256_maskz_add_round_pd 444 // CHECK: @llvm.x86.avx10.vaddpd256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, i32 9) 445 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}} 446 return _mm256_maskz_add_round_pd(__U, __A, __B, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC); 447 } 448 449 __m256h test_mm256_add_round_ph(__m256h __A, __m256h __B) { 450 // CHECK-LABEL: @test_mm256_add_round_ph 451 // CHECK: @llvm.x86.avx10.vaddph256(<16 x half> %{{.*}}, <16 x half> %{{.*}}, i32 11) 452 return _mm256_add_round_ph(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 453 } 454 455 __m256h test_mm256_mask_add_round_ph(__m256h __W, __mmask8 __U, __m256h __A, __m256h __B) { 456 // CHECK-LABEL: @test_mm256_mask_add_round_ph 457 // CHECK: @llvm.x86.avx10.vaddph256(<16 x half> %{{.*}}, <16 x half> %{{.*}}, i32 10) 458 // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}} 459 return _mm256_mask_add_round_ph(__W, __U, __A, __B, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC); 460 } 461 462 __m256h test_mm256_maskz_add_round_ph(__mmask8 __U, __m256h __A, __m256h __B) { 463 // CHECK-LABEL: @test_mm256_maskz_add_round_ph 464 // CHECK: @llvm.x86.avx10.vaddph256(<16 x half> %{{.*}}, <16 x half> %{{.*}}, i32 9) 465 // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}} 466 return _mm256_maskz_add_round_ph(__U, __A, __B, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC); 467 } 468 469 __m256 test_mm256_add_round_ps(__m256 __A, __m256 __B) { 470 // CHECK-LABEL: @test_mm256_add_round_ps 471 // CHECK: @llvm.x86.avx10.vaddps256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, i32 11) 472 return _mm256_add_round_ps(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 473 } 474 475 __m256 test_mm256_mask_add_round_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) { 476 // CHECK-LABEL: @test_mm256_mask_add_round_ps 477 // CHECK: @llvm.x86.avx10.vaddps256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, i32 10) 478 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} 479 return _mm256_mask_add_round_ps(__W, __U, __A, __B, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC); 480 } 481 482 __m256 test_mm256_maskz_add_round_ps(__mmask8 __U, __m256 __A, __m256 __B) { 483 // CHECK-LABEL: @test_mm256_maskz_add_round_ps 484 // CHECK: @llvm.x86.avx10.vaddps256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, i32 9) 485 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} 486 return _mm256_maskz_add_round_ps(__U, __A, __B, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC); 487 } 488 489 __mmask8 test_mm256_cmp_round_pd_mask(__m256d a, __m256d b) { 490 // CHECK-LABEL: @test_mm256_cmp_round_pd_mask 491 // CHECK: fcmp oeq <4 x double> %{{.*}}, %{{.*}} 492 return _mm256_cmp_round_pd_mask(a, b, _CMP_EQ_OQ, _MM_FROUND_NO_EXC); 493 } 494 495 __mmask8 test_mm256_mask_cmp_round_pd_mask(__mmask8 m, __m256d a, __m256d b) { 496 // CHECK-LABEL: @test_mm256_mask_cmp_round_pd_mask 497 // CHECK: [[CMP:%.*]] = fcmp oeq <4 x double> %{{.*}}, %{{.*}} 498 // CHECK: and <4 x i1> [[CMP]], {{.*}} 499 return _mm256_mask_cmp_round_pd_mask(m, a, b, _CMP_EQ_OQ, _MM_FROUND_NO_EXC); 500 } 501 502 __mmask16 test_mm256_cmp_round_ph_mask(__m256h a, __m256h b) { 503 // CHECK-LABEL: @test_mm256_cmp_round_ph_mask 504 // CHECK: fcmp oeq <16 x half> %{{.*}}, %{{.*}} 505 return _mm256_cmp_round_ph_mask(a, b, _CMP_EQ_OQ, _MM_FROUND_NO_EXC); 506 } 507 508 __mmask16 test_mm256_mask_cmp_round_ph_mask(__mmask16 m, __m256h a, __m256h b) { 509 // CHECK-LABEL: @test_mm256_mask_cmp_round_ph_mask 510 // CHECK: [[CMP:%.*]] = fcmp oeq <16 x half> %{{.*}}, %{{.*}} 511 // CHECK: and <16 x i1> [[CMP]], {{.*}} 512 return _mm256_mask_cmp_round_ph_mask(m, a, b, _CMP_EQ_OQ, _MM_FROUND_NO_EXC); 513 } 514 515 __mmask8 test_mm256_cmp_round_ps_mask(__m256 a, __m256 b) { 516 // CHECK-LABEL: @test_mm256_cmp_round_ps_mask 517 // CHECK: fcmp oeq <8 x float> %{{.*}}, %{{.*}} 518 return _mm256_cmp_round_ps_mask(a, b, _CMP_EQ_OQ, _MM_FROUND_NO_EXC); 519 } 520 521 __mmask8 test_mm256_mask_cmp_round_ps_mask(__mmask8 m, __m256 a, __m256 b) { 522 // CHECK-LABEL: @test_mm256_mask_cmp_round_ps_mask 523 // CHECK: [[CMP:%.*]] = fcmp oeq <8 x float> %{{.*}}, %{{.*}} 524 // CHECK: and <8 x i1> [[CMP]], {{.*}} 525 return _mm256_mask_cmp_round_ps_mask(m, a, b, _CMP_EQ_OQ, _MM_FROUND_NO_EXC); 526 } 527 528 __m128h test_mm256_cvt_roundepi32_ph(__m256i A) { 529 // CHECK-LABEL: test_mm256_cvt_roundepi32_ph 530 // CHECK: @llvm.x86.avx512.sitofp.round.v8f16.v8i32(<8 x i32> %{{.*}}, i32 11) 531 return _mm256_cvt_roundepi32_ph(A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 532 } 533 534 __m128h test_mm256_mask_cvt_roundepi32_ph(__m128h A, __mmask8 B, __m256i C) { 535 // CHECK-LABEL: test_mm256_mask_cvt_roundepi32_ph 536 // CHECK: @llvm.x86.avx512.sitofp.round.v8f16.v8i32(<8 x i32> %{{.*}}, i32 10) 537 // CHECK: select <8 x i1> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}} 538 return _mm256_mask_cvt_roundepi32_ph(A, B, C, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC); 539 } 540 541 __m128h test_mm256_maskz_cvt_roundepi32_ph(__mmask8 A, __m256i B) { 542 // CHECK-LABEL: test_mm256_maskz_cvt_roundepi32_ph 543 // CHECK: @llvm.x86.avx512.sitofp.round.v8f16.v8i32(<8 x i32> %{{.*}}, i32 9) 544 // CHECK: select <8 x i1> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}} 545 return _mm256_maskz_cvt_roundepi32_ph(A, B, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC); 546 } 547 548 __m256 test_mm256_cvt_roundepi32_ps(__m256i __A) 549 { 550 // CHECK-LABEL: @test_mm256_cvt_roundepi32_ps 551 // CHECK: @llvm.x86.avx512.sitofp.round.v8f32.v8i32 552 return _mm256_cvt_roundepi32_ps(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 553 } 554 555 __m256 test_mm256_mask_cvt_roundepi32_ps(__m256 __W, __mmask8 __U, __m256i __A) 556 { 557 // CHECK-LABEL: @test_mm256_mask_cvt_roundepi32_ps 558 // CHECK: @llvm.x86.avx512.sitofp.round.v8f32.v8i32 559 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} 560 return _mm256_mask_cvt_roundepi32_ps(__W, __U, __A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 561 } 562 563 __m256 test_mm256_maskz_cvt_roundepi32_ps(__mmask8 __U, __m256i __A) 564 { 565 // CHECK-LABEL: @test_mm256_maskz_cvt_roundepi32_ps 566 // CHECK: @llvm.x86.avx512.sitofp.round.v8f32.v8i32 567 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} 568 return _mm256_maskz_cvt_roundepi32_ps(__U, __A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 569 } 570 571 __m128i test_mm256_cvt_roundpd_epi32(__m256d A) 572 { 573 // CHECK-LABEL: @test_mm256_cvt_roundpd_epi32 574 // CHECK: @llvm.x86.avx10.mask.vcvtpd2dq256 575 return _mm256_cvt_roundpd_epi32(A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 576 } 577 578 __m128i test_mm256_mask_cvt_roundpd_epi32(__m128i W,__mmask8 U,__m256d A) 579 { 580 // CHECK-LABEL: @test_mm256_mask_cvt_roundpd_epi32 581 // CHECK: @llvm.x86.avx10.mask.vcvtpd2dq256 582 return _mm256_mask_cvt_roundpd_epi32(W, U, A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 583 } 584 585 __m128i test_mm256_maskz_cvt_roundpd_epi32(__mmask8 U, __m256d A) 586 { 587 // CHECK-LABEL: @test_mm256_maskz_cvt_roundpd_epi32 588 // CHECK: @llvm.x86.avx10.mask.vcvtpd2dq256 589 return _mm256_maskz_cvt_roundpd_epi32(U, A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 590 } 591 592 __m128h test_mm256_cvt_roundpd_ph(__m256d A) { 593 // CHECK-LABEL: test_mm256_cvt_roundpd_ph 594 // CHECK: @llvm.x86.avx10.mask.vcvtpd2ph256 595 return _mm256_cvt_roundpd_ph(A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 596 } 597 598 __m128h test_mm256_mask_cvt_roundpd_ph(__m128h A, __mmask8 B, __m256d C) { 599 // CHECK-LABEL: test_mm256_mask_cvt_roundpd_ph 600 // CHECK: @llvm.x86.avx10.mask.vcvtpd2ph256 601 return _mm256_mask_cvt_roundpd_ph(A, B, C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 602 } 603 604 __m128h test_mm256_maskz_cvt_roundpd_ph(__mmask8 A, __m256d B) { 605 // CHECK-LABEL: test_mm256_maskz_cvt_roundpd_ph 606 // CHECK: @llvm.x86.avx10.mask.vcvtpd2ph256 607 return _mm256_maskz_cvt_roundpd_ph(A, B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 608 } 609 610 __m128 test_mm256_cvt_roundpd_ps(__m256d A) 611 { 612 // CHECK-LABEL: @test_mm256_cvt_roundpd_ps 613 // CHECK: @llvm.x86.avx10.mask.vcvtpd2ps256 614 return _mm256_cvt_roundpd_ps(A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 615 } 616 617 __m128 test_mm256_mask_cvt_roundpd_ps(__m128 W, __mmask8 U,__m256d A) 618 { 619 // CHECK-LABEL: @test_mm256_mask_cvt_roundpd_ps 620 // CHECK: @llvm.x86.avx10.mask.vcvtpd2ps256 621 return _mm256_mask_cvt_roundpd_ps(W, U, A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 622 } 623 624 __m128 test_mm256_maskz_cvt_roundpd_ps(__mmask8 U, __m256d A) 625 { 626 // CHECK-LABEL: @test_mm256_maskz_cvt_roundpd_ps 627 // CHECK: @llvm.x86.avx10.mask.vcvtpd2ps256 628 return _mm256_maskz_cvt_roundpd_ps(U, A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 629 } 630 631 __m256i test_mm256_cvt_roundpd_epi64(__m256d __A) { 632 // CHECK-LABEL: @test_mm256_cvt_roundpd_epi64 633 // CHECK: @llvm.x86.avx10.mask.vcvtpd2qq256 634 return _mm256_cvt_roundpd_epi64(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 635 } 636 637 __m256i test_mm256_mask_cvt_roundpd_epi64(__m256i __W, __mmask8 __U, __m256d __A) { 638 // CHECK-LABEL: @test_mm256_mask_cvt_roundpd_epi64 639 // CHECK: @llvm.x86.avx10.mask.vcvtpd2qq256 640 return _mm256_mask_cvt_roundpd_epi64(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 641 } 642 643 __m256i test_mm256_maskz_cvt_roundpd_epi64(__mmask8 __U, __m256d __A) { 644 // CHECK-LABEL: @test_mm256_maskz_cvt_roundpd_epi64 645 // CHECK: @llvm.x86.avx10.mask.vcvtpd2qq256 646 return _mm256_maskz_cvt_roundpd_epi64(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 647 } 648 649 __m128i test_mm256_cvt_roundpd_epu32(__m256d A) 650 { 651 // CHECK-LABEL: @test_mm256_cvt_roundpd_epu32 652 // CHECK: @llvm.x86.avx10.mask.vcvtpd2udq256 653 return _mm256_cvt_roundpd_epu32(A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 654 } 655 656 __m128i test_mm256_mask_cvt_roundpd_epu32(__m128i W,__mmask8 U,__m256d A) 657 { 658 // CHECK-LABEL: @test_mm256_mask_cvt_roundpd_epu32 659 // CHECK: @llvm.x86.avx10.mask.vcvtpd2udq256 660 return _mm256_mask_cvt_roundpd_epu32(W, U, A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 661 } 662 663 __m128i test_mm256_maskz_cvt_roundpd_epu32(__mmask8 U, __m256d A) 664 { 665 // CHECK-LABEL: @test_mm256_maskz_cvt_roundpd_epu32 666 // CHECK: @llvm.x86.avx10.mask.vcvtpd2udq256 667 return _mm256_maskz_cvt_roundpd_epu32(U, A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 668 } 669 670 __m256i test_mm256_cvt_roundpd_epu64(__m256d __A) { 671 // CHECK-LABEL: @test_mm256_cvt_roundpd_epu64 672 // CHECK: @llvm.x86.avx10.mask.vcvtpd2uqq256 673 return _mm256_cvt_roundpd_epu64(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 674 } 675 676 __m256i test_mm256_mask_cvt_roundpd_epu64(__m256i __W, __mmask8 __U, __m256d __A) { 677 // CHECK-LABEL: @test_mm256_mask_cvt_roundpd_epu64 678 // CHECK: @llvm.x86.avx10.mask.vcvtpd2uqq256 679 return _mm256_mask_cvt_roundpd_epu64(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 680 } 681 682 __m256i test_mm256_maskz_cvt_roundpd_epu64(__mmask8 __U, __m256d __A) { 683 // CHECK-LABEL: @test_mm256_maskz_cvt_roundpd_epu64 684 // CHECK: @llvm.x86.avx10.mask.vcvtpd2uqq256 685 return _mm256_maskz_cvt_roundpd_epu64(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 686 } 687 688 __m256i test_mm256_cvt_roundph_epi32(__m128h A) { 689 // CHECK-LABEL: test_mm256_cvt_roundph_epi32 690 // CHECK: @llvm.x86.avx10.mask.vcvtph2dq256 691 return _mm256_cvt_roundph_epi32(A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 692 } 693 694 __m256i test_mm256_mask_cvt_roundph_epi32(__m256i A, __mmask16 B, __m128h C) { 695 // CHECK-LABEL: test_mm256_mask_cvt_roundph_epi32 696 // CHECK: @llvm.x86.avx10.mask.vcvtph2dq256 697 return _mm256_mask_cvt_roundph_epi32(A, B, C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 698 } 699 700 __m256i test_mm256_maskz_cvt_roundph_epi32(__mmask16 A, __m128h B) { 701 // CHECK-LABEL: test_mm256_maskz_cvt_roundph_epi32 702 // CHECK: @llvm.x86.avx10.mask.vcvtph2dq256 703 return _mm256_maskz_cvt_roundph_epi32(A, B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 704 } 705 706 __m256d test_mm256_cvt_roundph_pd(__m128h A) { 707 // CHECK-LABEL: test_mm256_cvt_roundph_pd 708 // CHECK: @llvm.x86.avx10.mask.vcvtph2pd256 709 return _mm256_cvt_roundph_pd(A, _MM_FROUND_NO_EXC); 710 } 711 712 __m256d test_mm256_mask_cvt_roundph_pd(__m256d A, __mmask8 B, __m128h C) { 713 // CHECK-LABEL: test_mm256_mask_cvt_roundph_pd 714 // CHECK: @llvm.x86.avx10.mask.vcvtph2pd256 715 return _mm256_mask_cvt_roundph_pd(A, B, C, _MM_FROUND_NO_EXC); 716 } 717 718 __m256d test_mm256_maskz_cvt_roundph_pd(__mmask8 A, __m128h B) { 719 // CHECK-LABEL: test_mm256_maskz_cvt_roundph_pd 720 // CHECK: @llvm.x86.avx10.mask.vcvtph2pd256 721 return _mm256_maskz_cvt_roundph_pd(A, B, _MM_FROUND_NO_EXC); 722 } 723 724 __m256 test_mm256_cvtx_roundph_ps(__m128h A) { 725 // CHECK-LABEL: test_mm256_cvtx_roundph_ps 726 // CHECK: @llvm.x86.avx10.mask.vcvtph2psx256 727 return _mm256_cvtx_roundph_ps(A, _MM_FROUND_NO_EXC); 728 } 729 730 __m256 test_mm256_mask_cvtx_roundph_ps(__m256 A, __mmask16 B, __m128h C) { 731 // CHECK-LABEL: test_mm256_mask_cvtx_roundph_ps 732 // CHECK: @llvm.x86.avx10.mask.vcvtph2psx256 733 return _mm256_mask_cvtx_roundph_ps(A, B, C, _MM_FROUND_NO_EXC); 734 } 735 736 __m256 test_mm256_maskz_cvtx_roundph_ps(__mmask16 A, __m128h B) { 737 // CHECK-LABEL: test_mm256_maskz_cvtx_roundph_ps 738 // CHECK: @llvm.x86.avx10.mask.vcvtph2psx256 739 return _mm256_maskz_cvtx_roundph_ps(A, B, _MM_FROUND_NO_EXC); 740 } 741 742 __m256i test_mm256_cvt_roundph_epi64(__m128h A) { 743 // CHECK-LABEL: test_mm256_cvt_roundph_epi64 744 // CHECK: @llvm.x86.avx10.mask.vcvtph2qq256 745 return _mm256_cvt_roundph_epi64(A, _MM_FROUND_NO_EXC); 746 } 747 748 __m256i test_mm256_mask_cvt_roundph_epi64(__m256i A, __mmask8 B, __m128h C) { 749 // CHECK-LABEL: test_mm256_mask_cvt_roundph_epi64 750 // CHECK: @llvm.x86.avx10.mask.vcvtph2qq256 751 return _mm256_mask_cvt_roundph_epi64(A, B, C, _MM_FROUND_NO_EXC); 752 } 753 754 __m256i test_mm256_maskz_cvt_roundph_epi64(__mmask8 A, __m128h B) { 755 // CHECK-LABEL: test_mm256_maskz_cvt_roundph_epi64 756 // CHECK: @llvm.x86.avx10.mask.vcvtph2qq256 757 return _mm256_maskz_cvt_roundph_epi64(A, B, _MM_FROUND_NO_EXC); 758 } 759 760 __m256i test_mm256_cvt_roundph_epu32(__m128h A) { 761 // CHECK-LABEL: test_mm256_cvt_roundph_epu32 762 // CHECK: @llvm.x86.avx10.mask.vcvtph2udq256 763 return _mm256_cvt_roundph_epu32(A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 764 } 765 766 __m256i test_mm256_mask_cvt_roundph_epu32(__m256i A, __mmask16 B, __m128h C) { 767 // CHECK-LABEL: test_mm256_mask_cvt_roundph_epu32 768 // CHECK: @llvm.x86.avx10.mask.vcvtph2udq256 769 return _mm256_mask_cvt_roundph_epu32(A, B, C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 770 } 771 772 __m256i test_mm256_maskz_cvt_roundph_epu32(__mmask16 A, __m128h B) { 773 // CHECK-LABEL: test_mm256_maskz_cvt_roundph_epu32 774 // CHECK: @llvm.x86.avx10.mask.vcvtph2udq256 775 return _mm256_maskz_cvt_roundph_epu32(A, B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 776 } 777 778 __m256i test_mm256_cvt_roundph_epu64(__m128h A) { 779 // CHECK-LABEL: test_mm256_cvt_roundph_epu64 780 // CHECK: @llvm.x86.avx10.mask.vcvtph2uqq256 781 return _mm256_cvt_roundph_epu64(A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 782 } 783 784 __m256i test_mm256_mask_cvt_roundph_epu64(__m256i A, __mmask8 B, __m128h C) { 785 // CHECK-LABEL: test_mm256_mask_cvt_roundph_epu64 786 // CHECK: @llvm.x86.avx10.mask.vcvtph2uqq256 787 return _mm256_mask_cvt_roundph_epu64(A, B, C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 788 } 789 790 __m256i test_mm256_maskz_cvt_roundph_epu64(__mmask8 A, __m128h B) { 791 // CHECK-LABEL: test_mm256_maskz_cvt_roundph_epu64 792 // CHECK: @llvm.x86.avx10.mask.vcvtph2uqq256 793 return _mm256_maskz_cvt_roundph_epu64(A, B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 794 } 795 796 __m256i test_mm256_cvt_roundph_epu16(__m256h A) { 797 // CHECK-LABEL: test_mm256_cvt_roundph_epu16 798 // CHECK: @llvm.x86.avx10.mask.vcvtph2uw256 799 return _mm256_cvt_roundph_epu16(A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 800 } 801 802 __m256i test_mm256_mask_cvt_roundph_epu16(__m256i A, __mmask32 B, __m256h C) { 803 // CHECK-LABEL: test_mm256_mask_cvt_roundph_epu16 804 // CHECK: @llvm.x86.avx10.mask.vcvtph2uw256 805 return _mm256_mask_cvt_roundph_epu16(A, B, C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 806 } 807 808 __m256i test_mm256_maskz_cvt_roundph_epu16(__mmask32 A, __m256h B) { 809 // CHECK-LABEL: test_mm256_maskz_cvt_roundph_epu16 810 // CHECK: @llvm.x86.avx10.mask.vcvtph2uw256 811 return _mm256_maskz_cvt_roundph_epu16(A, B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 812 } 813 814 __m256i test_mm256_cvt_roundph_epi16(__m256h A) { 815 // CHECK-LABEL: test_mm256_cvt_roundph_epi16 816 // CHECK: @llvm.x86.avx10.mask.vcvtph2w256 817 return _mm256_cvt_roundph_epi16(A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 818 } 819 820 __m256i test_mm256_mask_cvt_roundph_epi16(__m256i A, __mmask32 B, __m256h C) { 821 // CHECK-LABEL: test_mm256_mask_cvt_roundph_epi16 822 // CHECK: @llvm.x86.avx10.mask.vcvtph2w256 823 return _mm256_mask_cvt_roundph_epi16(A, B, C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 824 } 825 826 __m256i test_mm256_maskz_cvt_roundph_epi16(__mmask32 A, __m256h B) { 827 // CHECK-LABEL: test_mm256_maskz_cvt_roundph_epi16 828 // CHECK: @llvm.x86.avx10.mask.vcvtph2w256 829 return _mm256_maskz_cvt_roundph_epi16(A, B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 830 } 831 832 __m256i test_mm256_cvt_roundps_epi32(__m256 __A) 833 { 834 // CHECK-LABEL: @test_mm256_cvt_roundps_epi32 835 // CHECK: @llvm.x86.avx10.mask.vcvtps2dq256 836 return _mm256_cvt_roundps_epi32(__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 837 } 838 839 __m256i test_mm256_mask_cvt_roundps_epi32(__m256i __W,__mmask16 __U,__m256 __A) 840 { 841 // CHECK-LABEL: @test_mm256_mask_cvt_roundps_epi32 842 // CHECK: @llvm.x86.avx10.mask.vcvtps2dq256 843 return _mm256_mask_cvt_roundps_epi32(__W,__U,__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 844 } 845 846 __m256i test_mm256_maskz_cvt_roundps_epi32(__mmask16 __U, __m256 __A) 847 { 848 // CHECK-LABEL: @test_mm256_maskz_cvt_roundps_epi32 849 // CHECK: @llvm.x86.avx10.mask.vcvtps2dq256 850 return _mm256_maskz_cvt_roundps_epi32(__U,__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 851 } 852 853 __m256d test_mm256_cvt_roundps_pd(__m128 __A) { 854 // CHECK-LABEL: @test_mm256_cvt_roundps_pd 855 // CHECK: @llvm.x86.avx10.mask.vcvtps2pd256 856 return _mm256_cvt_roundps_pd(__A, _MM_FROUND_NO_EXC); 857 } 858 859 __m256d test_mm256_mask_cvt_roundps_pd(__m256d __W, __mmask8 __U, __m128 __A) { 860 // CHECK-LABEL: @test_mm256_mask_cvt_roundps_pd 861 // CHECK: @llvm.x86.avx10.mask.vcvtps2pd256 862 return _mm256_mask_cvt_roundps_pd(__W, __U, __A, _MM_FROUND_NO_EXC); 863 } 864 865 __m256d test_mm256_maskz_cvt_roundps_pd(__mmask8 __U, __m128 __A) { 866 // CHECK-LABEL: @test_mm256_maskz_cvt_roundps_pd 867 // CHECK: @llvm.x86.avx10.mask.vcvtps2pd256 868 return _mm256_maskz_cvt_roundps_pd(__U, __A, _MM_FROUND_NO_EXC); 869 } 870 871 // FIXME: We may change to @llvm.x86.avx10.mask.vcvtps2ph256 in future. 872 __m128i test_mm256_cvt_roundps_ph(__m256 __A) 873 { 874 // CHECK-LABEL: @test_mm256_cvt_roundps_ph 875 // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.256 876 return _mm256_cvt_roundps_ph(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 877 } 878 879 __m128i test_mm256_mask_cvt_roundps_ph(__m128i __W , __mmask16 __U, __m256 __A) 880 { 881 // CHECK-LABEL: @test_mm256_mask_cvt_roundps_ph 882 // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.256 883 return _mm256_mask_cvt_roundps_ph(__W, __U, __A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 884 } 885 886 __m128i test_mm256_maskz_cvt_roundps_ph(__mmask16 __U, __m256 __A) 887 { 888 // CHECK-LABEL: @test_mm256_maskz_cvt_roundps_ph 889 // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.256 890 return _mm256_maskz_cvt_roundps_ph(__U, __A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 891 } 892 893 __m128h test_mm256_cvtx_roundps_ph(__m256 A) { 894 // CHECK-LABEL: test_mm256_cvtx_roundps_ph 895 // CHECK: @llvm.x86.avx10.mask.vcvtps2phx256 896 return _mm256_cvtx_roundps_ph(A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 897 } 898 899 __m128h test_mm256_mask_cvtx_roundps_ph(__m128h A, __mmask16 B, __m256 C) { 900 // CHECK-LABEL: test_mm256_mask_cvtx_roundps_ph 901 // CHECK: @llvm.x86.avx10.mask.vcvtps2phx256 902 return _mm256_mask_cvtx_roundps_ph(A, B, C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 903 } 904 905 __m128h test_mm256_maskz_cvtx_roundps_ph(__mmask16 A, __m256 B) { 906 // CHECK-LABEL: test_mm256_maskz_cvtx_roundps_ph 907 // CHECK: @llvm.x86.avx10.mask.vcvtps2phx256 908 return _mm256_maskz_cvtx_roundps_ph(A, B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 909 } 910 911 __m256i test_mm256_cvt_roundps_epi64(__m128 __A) { 912 // CHECK-LABEL: @test_mm256_cvt_roundps_epi64 913 // CHECK: @llvm.x86.avx10.mask.vcvtps2qq256 914 return _mm256_cvt_roundps_epi64(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 915 } 916 917 __m256i test_mm256_mask_cvt_roundps_epi64(__m256i __W, __mmask8 __U, __m128 __A) { 918 // CHECK-LABEL: @test_mm256_mask_cvt_roundps_epi64 919 // CHECK: @llvm.x86.avx10.mask.vcvtps2qq256 920 return _mm256_mask_cvt_roundps_epi64(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 921 } 922 923 __m256i test_mm256_maskz_cvt_roundps_epi64(__mmask8 __U, __m128 __A) { 924 // CHECK-LABEL: @test_mm256_maskz_cvt_roundps_epi64 925 // CHECK: @llvm.x86.avx10.mask.vcvtps2qq256 926 return _mm256_maskz_cvt_roundps_epi64(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 927 } 928 929 __m256i test_mm256_cvt_roundps_epu32(__m256 __A) 930 { 931 // CHECK-LABEL: @test_mm256_cvt_roundps_epu32 932 // CHECK: @llvm.x86.avx10.mask.vcvtps2udq256 933 return _mm256_cvt_roundps_epu32(__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 934 } 935 936 __m256i test_mm256_mask_cvt_roundps_epu32(__m256i __W,__mmask16 __U,__m256 __A) 937 { 938 // CHECK-LABEL: @test_mm256_mask_cvt_roundps_epu32 939 // CHECK: @llvm.x86.avx10.mask.vcvtps2udq256 940 return _mm256_mask_cvt_roundps_epu32(__W,__U,__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 941 } 942 943 __m256i test_mm256_maskz_cvt_roundps_epu32(__mmask16 __U,__m256 __A) 944 { 945 // CHECK-LABEL: @test_mm256_maskz_cvt_roundps_epu32 946 // CHECK: @llvm.x86.avx10.mask.vcvtps2udq256 947 return _mm256_maskz_cvt_roundps_epu32(__U,__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 948 } 949 950 __m256i test_mm256_cvt_roundps_epu64(__m128 __A) { 951 // CHECK-LABEL: @test_mm256_cvt_roundps_epu64 952 // CHECK: @llvm.x86.avx10.mask.vcvtps2uqq256 953 return _mm256_cvt_roundps_epu64(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 954 } 955 956 __m256i test_mm256_mask_cvt_roundps_epu64(__m256i __W, __mmask8 __U, __m128 __A) { 957 // CHECK-LABEL: @test_mm256_mask_cvt_roundps_epu64 958 // CHECK: @llvm.x86.avx10.mask.vcvtps2uqq256 959 return _mm256_mask_cvt_roundps_epu64(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 960 } 961 962 __m256i test_mm256_maskz_cvt_roundps_epu64(__mmask8 __U, __m128 __A) { 963 // CHECK-LABEL: @test_mm256_maskz_cvt_roundps_epu64 964 // CHECK: @llvm.x86.avx10.mask.vcvtps2uqq256 965 return _mm256_maskz_cvt_roundps_epu64(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 966 } 967 968 __m256d test__mm256_cvt_roundepi64_pd(__m256i __A) { 969 // CHECK-LABEL: @test__mm256_cvt_roundepi64_pd 970 // CHECK: @llvm.x86.avx512.sitofp.round.v4f64.v4i64 971 return _mm256_cvt_roundepi64_pd(__A, _MM_FROUND_NO_EXC); 972 } 973 974 __m256d test__mm256_mask_cvt_roundepi64_pd(__m256d __W, __mmask8 __U, __m256i __A) { 975 // CHECK-LABEL: @test__mm256_mask_cvt_roundepi64_pd 976 // CHECK: @llvm.x86.avx512.sitofp.round.v4f64.v4i64 977 return _mm256_mask_cvt_roundepi64_pd(__W, __U, __A, _MM_FROUND_NO_EXC); 978 } 979 980 __m256d test__mm256_maskz_cvt_roundepi64_pd(__mmask8 __U, __m256i __A) { 981 // CHECK-LABEL: @test__mm256_maskz_cvt_roundepi64_pd 982 // CHECK: @llvm.x86.avx512.sitofp.round.v4f64.v4i64 983 return _mm256_maskz_cvt_roundepi64_pd(__U, __A, _MM_FROUND_NO_EXC); 984 } 985 986 // FIXME: We may change to @llvm.x86.avx10.mask.vcvtqq2ph256 in future. 987 __m128h test_mm256_cvt_roundepi64_ph(__m256i A) { 988 // CHECK-LABEL: test_mm256_cvt_roundepi64_ph 989 // CHECK: @llvm.x86.avx512.sitofp.round.v8f16.v4i64 990 return _mm256_cvt_roundepi64_ph(A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 991 } 992 993 __m128h test_mm256_mask_cvt_roundepi64_ph(__m128h A, __mmask8 B, __m256i C) { 994 // CHECK-LABEL: test_mm256_mask_cvt_roundepi64_ph 995 // CHECK: @llvm.x86.avx512.sitofp.round.v8f16.v4i64 996 return _mm256_mask_cvt_roundepi64_ph(A, B, C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 997 } 998 999 __m128h test_mm256_maskz_cvt_roundepi64_ph(__mmask8 A, __m256i B) { 1000 // CHECK-LABEL: test_mm256_maskz_cvt_roundepi64_ph 1001 // CHECK: @llvm.x86.avx512.sitofp.round.v8f16.v4i64 1002 return _mm256_maskz_cvt_roundepi64_ph(A, B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1003 } 1004 1005 __m128 test_mm256_cvt_roundepi64_ps(__m256i __A) { 1006 // CHECK-LABEL: @test_mm256_cvt_roundepi64_ps 1007 // CHECK: @llvm.x86.avx512.sitofp.round.v4f32.v4i64 1008 return _mm256_cvt_roundepi64_ps(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 1009 } 1010 1011 __m128 test_mm256_mask_cvt_roundepi64_ps(__m128 __W, __mmask8 __U, __m256i __A) { 1012 // CHECK-LABEL: @test_mm256_mask_cvt_roundepi64_ps 1013 // CHECK: @llvm.x86.avx512.sitofp.round.v4f32.v4i64 1014 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}} 1015 return _mm256_mask_cvt_roundepi64_ps(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 1016 } 1017 1018 __m128 test_mm256_maskz_cvt_roundepi64_ps(__mmask8 __U, __m256i __A) { 1019 // CHECK-LABEL: @test_mm256_maskz_cvt_roundepi64_ps 1020 // CHECK: @llvm.x86.avx512.sitofp.round.v4f32.v4i64 1021 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}} 1022 return _mm256_maskz_cvt_roundepi64_ps(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 1023 } 1024 1025 __m128i test_mm256_cvtt_roundpd_epi32(__m256d A) 1026 { 1027 // CHECK-LABEL: @test_mm256_cvtt_roundpd_epi32 1028 // CHECK: @llvm.x86.avx10.mask.vcvttpd2dq256 1029 return _mm256_cvtt_roundpd_epi32(A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1030 } 1031 1032 __m128i test_mm256_mask_cvtt_roundpd_epi32(__m128i W,__mmask8 U,__m256d A) 1033 { 1034 // CHECK-LABEL: @test_mm256_mask_cvtt_roundpd_epi32 1035 // CHECK: @llvm.x86.avx10.mask.vcvttpd2dq256 1036 return _mm256_mask_cvtt_roundpd_epi32(W, U, A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1037 } 1038 1039 __m128i test_mm256_maskz_cvtt_roundpd_epi32(__mmask8 U, __m256d A) 1040 { 1041 // CHECK-LABEL: @test_mm256_maskz_cvtt_roundpd_epi32 1042 // CHECK: @llvm.x86.avx10.mask.vcvttpd2dq256 1043 return _mm256_maskz_cvtt_roundpd_epi32(U, A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1044 } 1045 1046 __m256i test_mm256_cvtt_roundpd_epi64(__m256d __A) { 1047 // CHECK-LABEL: @test_mm256_cvtt_roundpd_epi64 1048 // CHECK: @llvm.x86.avx10.mask.vcvttpd2qq256 1049 return _mm256_cvtt_roundpd_epi64(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 1050 } 1051 1052 __m256i test_mm256_mask_cvtt_roundpd_epi64(__m256i __W, __mmask8 __U, __m256d __A) { 1053 // CHECK-LABEL: @test_mm256_mask_cvtt_roundpd_epi64 1054 // CHECK: @llvm.x86.avx10.mask.vcvttpd2qq256 1055 return _mm256_mask_cvtt_roundpd_epi64(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 1056 } 1057 1058 __m256i test_mm256_maskz_cvtt_roundpd_epi64(__mmask8 __U, __m256d __A) { 1059 // CHECK-LABEL: @test_mm256_maskz_cvtt_roundpd_epi64 1060 // CHECK: @llvm.x86.avx10.mask.vcvttpd2qq256 1061 return _mm256_maskz_cvtt_roundpd_epi64(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 1062 } 1063 1064 __m128i test_mm256_cvtt_roundpd_epu32(__m256d A) 1065 { 1066 // CHECK-LABEL: @test_mm256_cvtt_roundpd_epu32 1067 // CHECK: @llvm.x86.avx10.mask.vcvttpd2udq256 1068 return _mm256_cvtt_roundpd_epu32(A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1069 } 1070 1071 __m128i test_mm256_mask_cvtt_roundpd_epu32(__m128i W,__mmask8 U,__m256d A) 1072 { 1073 // CHECK-LABEL: @test_mm256_mask_cvtt_roundpd_epu32 1074 // CHECK: @llvm.x86.avx10.mask.vcvttpd2udq256 1075 return _mm256_mask_cvtt_roundpd_epu32(W, U, A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1076 } 1077 1078 __m128i test_mm256_maskz_cvtt_roundpd_epu32(__mmask8 U, __m256d A) 1079 { 1080 // CHECK-LABEL: @test_mm256_maskz_cvtt_roundpd_epu32 1081 // CHECK: @llvm.x86.avx10.mask.vcvttpd2udq256 1082 return _mm256_maskz_cvtt_roundpd_epu32(U, A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1083 } 1084 1085 __m256i test_mm256_cvtt_roundpd_epu64(__m256d __A) { 1086 // CHECK-LABEL: @test_mm256_cvtt_roundpd_epu64 1087 // CHECK: @llvm.x86.avx10.mask.vcvttpd2uqq256 1088 return _mm256_cvtt_roundpd_epu64(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 1089 } 1090 1091 __m256i test_mm256_mask_cvtt_roundpd_epu64(__m256i __W, __mmask8 __U, __m256d __A) { 1092 // CHECK-LABEL: @test_mm256_mask_cvtt_roundpd_epu64 1093 // CHECK: @llvm.x86.avx10.mask.vcvttpd2uqq256 1094 return _mm256_mask_cvtt_roundpd_epu64(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 1095 } 1096 1097 __m256i test_mm256_maskz_cvtt_roundpd_epu64(__mmask8 __U, __m256d __A) { 1098 // CHECK-LABEL: @test_mm256_maskz_cvtt_roundpd_epu64 1099 // CHECK: @llvm.x86.avx10.mask.vcvttpd2uqq256 1100 return _mm256_maskz_cvtt_roundpd_epu64(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 1101 } 1102 1103 __m256i test_mm256_cvtt_roundph_epi32(__m128h A) { 1104 // CHECK-LABEL: test_mm256_cvtt_roundph_epi32 1105 // CHECK: @llvm.x86.avx10.mask.vcvttph2dq256 1106 return _mm256_cvtt_roundph_epi32(A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1107 } 1108 1109 __m256i test_mm256_mask_cvtt_roundph_epi32(__m256i A, __mmask16 B, __m128h C) { 1110 // CHECK-LABEL: test_mm256_mask_cvtt_roundph_epi32 1111 // CHECK: @llvm.x86.avx10.mask.vcvttph2dq256 1112 return _mm256_mask_cvtt_roundph_epi32(A, B, C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1113 } 1114 1115 __m256i test_mm256_maskz_cvtt_roundph_epi32(__mmask16 A, __m128h B) { 1116 // CHECK-LABEL: test_mm256_maskz_cvtt_roundph_epi32 1117 // CHECK: @llvm.x86.avx10.mask.vcvttph2dq256 1118 return _mm256_maskz_cvtt_roundph_epi32(A, B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1119 } 1120 1121 __m256i test_mm256_cvtt_roundph_epi64(__m128h A) { 1122 // CHECK-LABEL: test_mm256_cvtt_roundph_epi64 1123 // CHECK: @llvm.x86.avx10.mask.vcvttph2qq256 1124 return _mm256_cvtt_roundph_epi64(A, _MM_FROUND_NO_EXC); 1125 } 1126 1127 __m256i test_mm256_mask_cvtt_roundph_epi64(__m256i A, __mmask8 B, __m128h C) { 1128 // CHECK-LABEL: test_mm256_mask_cvtt_roundph_epi64 1129 // CHECK: @llvm.x86.avx10.mask.vcvttph2qq256 1130 return _mm256_mask_cvtt_roundph_epi64(A, B, C, _MM_FROUND_NO_EXC); 1131 } 1132 1133 __m256i test_mm256_maskz_cvtt_roundph_epi64(__mmask8 A, __m128h B) { 1134 // CHECK-LABEL: test_mm256_maskz_cvtt_roundph_epi64 1135 // CHECK: @llvm.x86.avx10.mask.vcvttph2qq256 1136 return _mm256_maskz_cvtt_roundph_epi64(A, B, _MM_FROUND_NO_EXC); 1137 } 1138 1139 __m256i test_mm256_cvtt_roundph_epu32(__m128h A) { 1140 // CHECK-LABEL: test_mm256_cvtt_roundph_epu32 1141 // CHECK: @llvm.x86.avx10.mask.vcvttph2udq256 1142 return _mm256_cvtt_roundph_epu32(A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1143 } 1144 1145 __m256i test_mm256_mask_cvtt_roundph_epu32(__m256i A, __mmask16 B, __m128h C) { 1146 // CHECK-LABEL: test_mm256_mask_cvtt_roundph_epu32 1147 // CHECK: @llvm.x86.avx10.mask.vcvttph2udq256 1148 return _mm256_mask_cvtt_roundph_epu32(A, B, C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1149 } 1150 1151 __m256i test_mm256_maskz_cvtt_roundph_epu32(__mmask16 A, __m128h B) { 1152 // CHECK-LABEL: test_mm256_maskz_cvtt_roundph_epu32 1153 // CHECK: @llvm.x86.avx10.mask.vcvttph2udq256 1154 return _mm256_maskz_cvtt_roundph_epu32(A, B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1155 } 1156 1157 __m256i test_mm256_cvtt_roundph_epu64(__m128h A) { 1158 // CHECK-LABEL: test_mm256_cvtt_roundph_epu64 1159 // CHECK: @llvm.x86.avx10.mask.vcvttph2uqq256 1160 return _mm256_cvtt_roundph_epu64(A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1161 } 1162 1163 __m256i test_mm256_mask_cvtt_roundph_epu64(__m256i A, __mmask8 B, __m128h C) { 1164 // CHECK-LABEL: test_mm256_mask_cvtt_roundph_epu64 1165 // CHECK: @llvm.x86.avx10.mask.vcvttph2uqq256 1166 return _mm256_mask_cvtt_roundph_epu64(A, B, C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1167 } 1168 1169 __m256i test_mm256_maskz_cvtt_roundph_epu64(__mmask8 A, __m128h B) { 1170 // CHECK-LABEL: test_mm256_maskz_cvtt_roundph_epu64 1171 // CHECK: @llvm.x86.avx10.mask.vcvttph2uqq256 1172 return _mm256_maskz_cvtt_roundph_epu64(A, B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1173 } 1174 1175 __m256i test_mm256_cvtt_roundph_epu16(__m256h A) { 1176 // CHECK-LABEL: test_mm256_cvtt_roundph_epu16 1177 // CHECK: @llvm.x86.avx10.mask.vcvttph2uw256 1178 return _mm256_cvtt_roundph_epu16(A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1179 } 1180 1181 __m256i test_mm256_mask_cvtt_roundph_epu16(__m256i A, __mmask32 B, __m256h C) { 1182 // CHECK-LABEL: test_mm256_mask_cvtt_roundph_epu16 1183 // CHECK: @llvm.x86.avx10.mask.vcvttph2uw256 1184 return _mm256_mask_cvtt_roundph_epu16(A, B, C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1185 } 1186 1187 __m256i test_mm256_maskz_cvtt_roundph_epu16(__mmask32 A, __m256h B) { 1188 // CHECK-LABEL: test_mm256_maskz_cvtt_roundph_epu16 1189 // CHECK: @llvm.x86.avx10.mask.vcvttph2uw256 1190 return _mm256_maskz_cvtt_roundph_epu16(A, B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1191 } 1192 1193 __m256i test_mm256_cvtt_roundph_epi16(__m256h A) { 1194 // CHECK-LABEL: test_mm256_cvtt_roundph_epi16 1195 // CHECK: @llvm.x86.avx10.mask.vcvttph2w256 1196 return _mm256_cvtt_roundph_epi16(A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1197 } 1198 1199 __m256i test_mm256_mask_cvtt_roundph_epi16(__m256i A, __mmask32 B, __m256h C) { 1200 // CHECK-LABEL: test_mm256_mask_cvtt_roundph_epi16 1201 // CHECK: @llvm.x86.avx10.mask.vcvttph2w256 1202 return _mm256_mask_cvtt_roundph_epi16(A, B, C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1203 } 1204 1205 __m256i test_mm256_maskz_cvtt_roundph_epi16(__mmask32 A, __m256h B) { 1206 // CHECK-LABEL: test_mm256_maskz_cvtt_roundph_epi16 1207 // CHECK: @llvm.x86.avx10.mask.vcvttph2w256 1208 return _mm256_maskz_cvtt_roundph_epi16(A, B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1209 } 1210 1211 __m256i test_mm256_cvtt_roundps_epi32(__m256 __A) 1212 { 1213 // CHECK-LABEL: @test_mm256_cvtt_roundps_epi32 1214 // CHECK: @llvm.x86.avx10.mask.vcvttps2dq256 1215 return _mm256_cvtt_roundps_epi32(__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1216 } 1217 1218 __m256i test_mm256_mask_cvtt_roundps_epi32(__m256i __W,__mmask16 __U,__m256 __A) 1219 { 1220 // CHECK-LABEL: @test_mm256_mask_cvtt_roundps_epi32 1221 // CHECK: @llvm.x86.avx10.mask.vcvttps2dq256 1222 return _mm256_mask_cvtt_roundps_epi32(__W,__U,__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1223 } 1224 1225 __m256i test_mm256_maskz_cvtt_roundps_epi32(__mmask16 __U, __m256 __A) 1226 { 1227 // CHECK-LABEL: @test_mm256_maskz_cvtt_roundps_epi32 1228 // CHECK: @llvm.x86.avx10.mask.vcvttps2dq256 1229 return _mm256_maskz_cvtt_roundps_epi32(__U,__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1230 } 1231 1232 __m256i test_mm256_cvtt_roundps_epi64(__m128 __A) { 1233 // CHECK-LABEL: @test_mm256_cvtt_roundps_epi64 1234 // CHECK: @llvm.x86.avx10.mask.vcvttps2qq256 1235 return _mm256_cvtt_roundps_epi64(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 1236 } 1237 1238 __m256i test_mm256_mask_cvtt_roundps_epi64(__m256i __W, __mmask8 __U, __m128 __A) { 1239 // CHECK-LABEL: @test_mm256_mask_cvtt_roundps_epi64 1240 // CHECK: @llvm.x86.avx10.mask.vcvttps2qq256 1241 return _mm256_mask_cvtt_roundps_epi64(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 1242 } 1243 1244 __m256i test_mm256_maskz_cvtt_roundps_epi64(__mmask8 __U, __m128 __A) { 1245 // CHECK-LABEL: @test_mm256_maskz_cvtt_roundps_epi64 1246 // CHECK: @llvm.x86.avx10.mask.vcvttps2qq256 1247 return _mm256_maskz_cvtt_roundps_epi64(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 1248 } 1249 1250 __m256i test_mm256_cvtt_roundps_epu32(__m256 __A) 1251 { 1252 // CHECK-LABEL: @test_mm256_cvtt_roundps_epu32 1253 // CHECK: @llvm.x86.avx10.mask.vcvttps2udq256 1254 return _mm256_cvtt_roundps_epu32(__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1255 } 1256 1257 __m256i test_mm256_mask_cvtt_roundps_epu32(__m256i __W,__mmask16 __U,__m256 __A) 1258 { 1259 // CHECK-LABEL: @test_mm256_mask_cvtt_roundps_epu32 1260 // CHECK: @llvm.x86.avx10.mask.vcvttps2udq256 1261 return _mm256_mask_cvtt_roundps_epu32(__W,__U,__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1262 } 1263 1264 __m256i test_mm256_maskz_cvtt_roundps_epu32(__mmask16 __U,__m256 __A) 1265 { 1266 // CHECK-LABEL: @test_mm256_maskz_cvtt_roundps_epu32 1267 // CHECK: @llvm.x86.avx10.mask.vcvttps2udq256 1268 return _mm256_maskz_cvtt_roundps_epu32(__U,__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1269 } 1270 1271 __m256i test_mm256_cvtt_roundps_epu64(__m128 __A) { 1272 // CHECK-LABEL: @test_mm256_cvtt_roundps_epu64 1273 // CHECK: @llvm.x86.avx10.mask.vcvttps2uqq256 1274 return _mm256_cvtt_roundps_epu64(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 1275 } 1276 1277 __m256i test_mm256_mask_cvtt_roundps_epu64(__m256i __W, __mmask8 __U, __m128 __A) { 1278 // CHECK-LABEL: @test_mm256_mask_cvtt_roundps_epu64 1279 // CHECK: @llvm.x86.avx10.mask.vcvttps2uqq256 1280 return _mm256_mask_cvtt_roundps_epu64(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 1281 } 1282 1283 __m256i test_mm256_maskz_cvtt_roundps_epu64(__mmask8 __U, __m128 __A) { 1284 // CHECK-LABEL: @test_mm256_maskz_cvtt_roundps_epu64 1285 // CHECK: @llvm.x86.avx10.mask.vcvttps2uqq256 1286 return _mm256_maskz_cvtt_roundps_epu64(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 1287 } 1288 1289 __m128h test_mm256_cvt_roundepu32_ph(__m256i A) { 1290 // CHECK-LABEL: test_mm256_cvt_roundepu32_ph 1291 // CHECK: @llvm.x86.avx512.uitofp.round.v8f16.v8i32(<8 x i32> %{{.*}}, i32 11) 1292 return _mm256_cvt_roundepu32_ph(A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1293 } 1294 1295 __m128h test_mm256_mask_cvt_roundepu32_ph(__m128h A, __mmask8 B, __m256i C) { 1296 // CHECK-LABEL: test_mm256_mask_cvt_roundepu32_ph 1297 // CHECK: @llvm.x86.avx512.uitofp.round.v8f16.v8i32(<8 x i32> %{{.*}}, i32 10) 1298 // CHECK: select <8 x i1> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}} 1299 return _mm256_mask_cvt_roundepu32_ph(A, B, C, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC); 1300 } 1301 1302 __m128h test_mm256_maskz_cvt_roundepu32_ph(__mmask8 A, __m256i B) { 1303 // CHECK-LABEL: test_mm256_maskz_cvt_roundepu32_ph 1304 // CHECK: @llvm.x86.avx512.uitofp.round.v8f16.v8i32(<8 x i32> %{{.*}}, i32 9) 1305 // CHECK: select <8 x i1> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}} 1306 return _mm256_maskz_cvt_roundepu32_ph(A, B, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC); 1307 } 1308 1309 __m256 test_mm256_cvt_roundepu32_ps(__m256i __A) 1310 { 1311 // CHECK-LABEL: @test_mm256_cvt_roundepu32_ps 1312 // CHECK: @llvm.x86.avx512.uitofp.round.v8f32.v8i32 1313 return _mm256_cvt_roundepu32_ps(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1314 } 1315 1316 __m256 test_mm256_mask_cvt_roundepu32_ps(__m256 __W, __mmask8 __U, __m256i __A) 1317 { 1318 // CHECK-LABEL: @test_mm256_mask_cvt_roundepu32_ps 1319 // CHECK: @llvm.x86.avx512.uitofp.round.v8f32.v8i32 1320 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} 1321 return _mm256_mask_cvt_roundepu32_ps(__W, __U, __A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1322 } 1323 1324 __m256 test_mm256_maskz_cvt_roundepu32_ps(__mmask8 __U, __m256i __A) 1325 { 1326 // CHECK-LABEL: @test_mm256_maskz_cvt_roundepu32_ps 1327 // CHECK: @llvm.x86.avx512.uitofp.round.v8f32.v8i32 1328 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} 1329 return _mm256_maskz_cvt_roundepu32_ps(__U, __A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1330 } 1331 1332 __m256d test__mm256_cvt_roundepu64_pd(__m256i __A) { 1333 // CHECK-LABEL: @test__mm256_cvt_roundepu64_pd 1334 // CHECK: @llvm.x86.avx512.uitofp.round.v4f64.v4i64 1335 return _mm256_cvt_roundepu64_pd(__A, _MM_FROUND_NO_EXC); 1336 } 1337 1338 __m256d test__mm256_mask_cvt_roundepu64_pd(__m256d __W, __mmask8 __U, __m256i __A) { 1339 // CHECK-LABEL: @test__mm256_mask_cvt_roundepu64_pd 1340 // CHECK: @llvm.x86.avx512.uitofp.round.v4f64.v4i64 1341 return _mm256_mask_cvt_roundepu64_pd(__W, __U, __A, _MM_FROUND_NO_EXC); 1342 } 1343 1344 __m256d test__mm256_maskz_cvt_roundepu64_pd(__mmask8 __U, __m256i __A) { 1345 // CHECK-LABEL: @test__mm256_maskz_cvt_roundepu64_pd 1346 // CHECK: @llvm.x86.avx512.uitofp.round.v4f64.v4i64 1347 return _mm256_maskz_cvt_roundepu64_pd(__U, __A, _MM_FROUND_NO_EXC); 1348 } 1349 1350 // FIXME: We may change to @llvm.x86.avx10.mask.vcvtuqq2ph256 in future. 1351 __m128h test_mm256_cvt_roundepu64_ph(__m256i A) { 1352 // CHECK-LABEL: test_mm256_cvt_roundepu64_ph 1353 // CHECK: @llvm.x86.avx512.uitofp.round.v8f16.v4i64 1354 return _mm256_cvt_roundepu64_ph(A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1355 } 1356 1357 __m128h test_mm256_mask_cvt_roundepu64_ph(__m128h A, __mmask8 B, __m256i C) { 1358 // CHECK-LABEL: test_mm256_mask_cvt_roundepu64_ph 1359 // CHECK: @llvm.x86.avx512.uitofp.round.v8f16.v4i64 1360 return _mm256_mask_cvt_roundepu64_ph(A, B, C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1361 } 1362 1363 __m128h test_mm256_maskz_cvt_roundepu64_ph(__mmask8 A, __m256i B) { 1364 // CHECK-LABEL: test_mm256_maskz_cvt_roundepu64_ph 1365 // CHECK: @llvm.x86.avx512.uitofp.round.v8f16.v4i64 1366 return _mm256_maskz_cvt_roundepu64_ph(A, B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1367 } 1368 1369 __m128 test_mm256_cvt_roundepu64_ps(__m256i __A) { 1370 // CHECK-LABEL: @test_mm256_cvt_roundepu64_ps 1371 // CHECK: @llvm.x86.avx512.uitofp.round.v4f32.v4i64 1372 return _mm256_cvt_roundepu64_ps(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 1373 } 1374 1375 __m128 test_mm256_mask_cvt_roundepu64_ps(__m128 __W, __mmask8 __U, __m256i __A) { 1376 // CHECK-LABEL: @test_mm256_mask_cvt_roundepu64_ps 1377 // CHECK: @llvm.x86.avx512.uitofp.round.v4f32.v4i64 1378 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}} 1379 return _mm256_mask_cvt_roundepu64_ps(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 1380 } 1381 1382 __m128 test_mm256_maskz_cvt_roundepu64_ps(__mmask8 __U, __m256i __A) { 1383 // CHECK-LABEL: @test_mm256_maskz_cvt_roundepu64_ps 1384 // CHECK: @llvm.x86.avx512.uitofp.round.v4f32.v4i64 1385 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}} 1386 return _mm256_maskz_cvt_roundepu64_ps(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 1387 } 1388 1389 __m256h test_mm256_cvt_roundepi16_ph(__m256i A) { 1390 // CHECK-LABEL: test_mm256_cvt_roundepi16_ph 1391 // CHECK: @llvm.x86.avx512.sitofp.round.v16f16.v16i16 1392 return _mm256_cvt_roundepi16_ph(A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1393 } 1394 1395 __m256h test_mm256_mask_cvt_roundepi16_ph(__m256h A, __mmask16 B, __m256i C) { 1396 // CHECK-LABEL: test_mm256_mask_cvt_roundepi16_ph 1397 // CHECK: @llvm.x86.avx512.sitofp.round.v16f16.v16i16 1398 return _mm256_mask_cvt_roundepi16_ph(A, B, C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1399 } 1400 1401 __m256h test_mm256_maskz_cvt_roundepi16_ph(__mmask16 A, __m256i B) { 1402 // CHECK-LABEL: test_mm256_maskz_cvt_roundepi16_ph 1403 // CHECK: @llvm.x86.avx512.sitofp.round.v16f16.v16i16 1404 return _mm256_maskz_cvt_roundepi16_ph(A, B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1405 } 1406 1407 __m256h test_mm256_cvt_roundepu16_ph(__m256i A) { 1408 // CHECK-LABEL: test_mm256_cvt_roundepu16_ph 1409 // CHECK: @llvm.x86.avx512.uitofp.round.v16f16.v16i16 1410 return _mm256_cvt_roundepu16_ph(A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1411 } 1412 1413 __m256h test_mm256_mask_cvt_roundepu16_ph(__m256h A, __mmask16 B, __m256i C) { 1414 // CHECK-LABEL: test_mm256_mask_cvt_roundepu16_ph 1415 // CHECK: @llvm.x86.avx512.uitofp.round.v16f16.v16i16 1416 return _mm256_mask_cvt_roundepu16_ph(A, B, C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1417 } 1418 1419 __m256h test_mm256_maskz_cvt_roundepu16_ph(__mmask16 A, __m256i B) { 1420 // CHECK-LABEL: test_mm256_maskz_cvt_roundepu16_ph 1421 // CHECK: @llvm.x86.avx512.uitofp.round.v16f16.v16i16 1422 return _mm256_maskz_cvt_roundepu16_ph(A, B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1423 } 1424 1425 __m256d test_mm256_div_round_pd(__m256d __A, __m256d __B) { 1426 // CHECK-LABEL: @test_mm256_div_round_pd 1427 // CHECK: @llvm.x86.avx10.vdivpd256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, i32 11) 1428 return _mm256_div_round_pd(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1429 } 1430 1431 __m256d test_mm256_mask_div_round_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) { 1432 // CHECK-LABEL: @test_mm256_mask_div_round_pd 1433 // CHECK: @llvm.x86.avx10.vdivpd256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, i32 10) 1434 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}} 1435 return _mm256_mask_div_round_pd(__W, __U, __A, __B, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC); 1436 } 1437 1438 __m256d test_mm256_maskz_div_round_pd(__mmask8 __U, __m256d __A, __m256d __B) { 1439 // CHECK-LABEL: @test_mm256_maskz_div_round_pd 1440 // CHECK: @llvm.x86.avx10.vdivpd256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, i32 9) 1441 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}} 1442 return _mm256_maskz_div_round_pd(__U, __A, __B, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC); 1443 } 1444 1445 __m256h test_mm256_div_round_ph(__m256h __A, __m256h __B) { 1446 // CHECK-LABEL: @test_mm256_div_round_ph 1447 // CHECK: @llvm.x86.avx10.vdivph256(<16 x half> %{{.*}}, <16 x half> %{{.*}}, i32 11) 1448 return _mm256_div_round_ph(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1449 } 1450 1451 __m256h test_mm256_mask_div_round_ph(__m256h __W, __mmask8 __U, __m256h __A, __m256h __B) { 1452 // CHECK-LABEL: @test_mm256_mask_div_round_ph 1453 // CHECK: @llvm.x86.avx10.vdivph256(<16 x half> %{{.*}}, <16 x half> %{{.*}}, i32 10) 1454 // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}} 1455 return _mm256_mask_div_round_ph(__W, __U, __A, __B, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC); 1456 } 1457 1458 __m256h test_mm256_maskz_div_round_ph(__mmask8 __U, __m256h __A, __m256h __B) { 1459 // CHECK-LABEL: @test_mm256_maskz_div_round_ph 1460 // CHECK: @llvm.x86.avx10.vdivph256(<16 x half> %{{.*}}, <16 x half> %{{.*}}, i32 9) 1461 // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}} 1462 return _mm256_maskz_div_round_ph(__U, __A, __B, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC); 1463 } 1464 1465 __m256 test_mm256_div_round_ps(__m256 __A, __m256 __B) { 1466 // CHECK-LABEL: @test_mm256_div_round_ps 1467 // CHECK: @llvm.x86.avx10.vdivps256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, i32 11) 1468 return _mm256_div_round_ps(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1469 } 1470 1471 __m256 test_mm256_mask_div_round_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) { 1472 // CHECK-LABEL: @test_mm256_mask_div_round_ps 1473 // CHECK: @llvm.x86.avx10.vdivps256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, i32 10) 1474 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} 1475 return _mm256_mask_div_round_ps(__W, __U, __A, __B, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC); 1476 } 1477 1478 __m256 test_mm256_maskz_div_round_ps(__mmask8 __U, __m256 __A, __m256 __B) { 1479 // CHECK-LABEL: @test_mm256_maskz_div_round_ps 1480 // CHECK: @llvm.x86.avx10.vdivps256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, i32 9) 1481 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} 1482 return _mm256_maskz_div_round_ps(__U, __A, __B, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC); 1483 } 1484 1485 __m256h test_mm256_fcmadd_round_pch(__m256h __A, __m256h __B, __m256h __C) { 1486 // CHECK-LABEL: @test_mm256_fcmadd_round_pch 1487 // CHECK: @llvm.x86.avx10.mask.vfcmaddcph256 1488 return _mm256_fcmadd_round_pch(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1489 } 1490 1491 __m256h test_mm256_mask_fcmadd_round_pch(__m256h __A, __mmask8 __U, __m256h __B, __m256h __C) { 1492 // CHECK-LABEL: @test_mm256_mask_fcmadd_round_pch 1493 // CHECK: @llvm.x86.avx10.mask.vfcmaddcph256 1494 // CHECK: %{{.*}} = select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} 1495 return _mm256_mask_fcmadd_round_pch(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1496 } 1497 1498 __m256h test_mm256_mask3_fcmadd_round_pch(__m256h __A, __m256h __B, __m256h __C, __mmask8 __U) { 1499 // CHECK-LABEL: @test_mm256_mask3_fcmadd_round_pch 1500 // CHECK: @llvm.x86.avx10.mask.vfcmaddcph256 1501 // CHECK-NOT: %{{.*}} = select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} 1502 return _mm256_mask3_fcmadd_round_pch(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1503 } 1504 1505 __m256h test_mm256_maskz_fcmadd_round_pch(__mmask8 __U, __m256h __A, __m256h __B, __m256h __C) { 1506 // CHECK-LABEL: @test_mm256_maskz_fcmadd_round_pch 1507 // CHECK: @llvm.x86.avx10.maskz.vfcmaddcph256 1508 return _mm256_maskz_fcmadd_round_pch(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1509 } 1510 1511 __m256h test_mm256_cmul_round_pch(__m256h __A, __m256h __B) { 1512 // CHECK-LABEL: @test_mm256_cmul_round_pch 1513 // CHECK: @llvm.x86.avx10.mask.vfcmulcph256 1514 return _mm256_cmul_round_pch(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1515 } 1516 1517 __m256h test_mm256_mask_cmul_round_pch(__m256h __W, __mmask8 __U, __m256h __A, __m256h __B) { 1518 // CHECK-LABEL: @test_mm256_mask_cmul_round_pch 1519 // CHECK: @llvm.x86.avx10.mask.vfcmulcph256 1520 return _mm256_mask_cmul_round_pch(__W, __U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1521 } 1522 1523 __m256h test_mm256_maskz_cmul_round_pch(__mmask8 __U, __m256h __A, __m256h __B) { 1524 // CHECK-LABEL: @test_mm256_maskz_cmul_round_pch 1525 // CHECK: @llvm.x86.avx10.mask.vfcmulcph256 1526 return _mm256_maskz_cmul_round_pch(__U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1527 } 1528 1529 __m256d test_mm256_fixupimm_round_pd(__m256d __A, __m256d __B, __m256i __C) { 1530 // CHECK-LABEL: @test_mm256_fixupimm_round_pd 1531 // CHECK: @llvm.x86.avx10.mask.vfixupimmpd256 1532 return _mm256_fixupimm_round_pd(__A, __B, __C, 5, 8); 1533 } 1534 1535 __m256d test_mm256_mask_fixupimm_round_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256i __C) { 1536 // CHECK-LABEL: @test_mm256_mask_fixupimm_round_pd 1537 // CHECK: @llvm.x86.avx10.mask.vfixupimmpd256 1538 return _mm256_mask_fixupimm_round_pd(__A, __U, __B, __C, 5, 8); 1539 } 1540 1541 __m256d test_mm256_maskz_fixupimm_round_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256i __C) { 1542 // CHECK-LABEL: @test_mm256_maskz_fixupimm_round_pd 1543 // CHECK: @llvm.x86.avx10.maskz.vfixupimmpd256 1544 return _mm256_maskz_fixupimm_round_pd(__U, __A, __B, __C, 5, 8); 1545 } 1546 1547 __m256 test_mm256_fixupimm_round_ps(__m256 __A, __m256 __B, __m256i __C) { 1548 // CHECK-LABEL: @test_mm256_fixupimm_round_ps 1549 // CHECK: @llvm.x86.avx10.mask.vfixupimmps256 1550 return _mm256_fixupimm_round_ps(__A, __B, __C, 5, 8); 1551 } 1552 1553 __m256 test_mm256_mask_fixupimm_round_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256i __C) { 1554 // CHECK-LABEL: @test_mm256_mask_fixupimm_round_ps 1555 // CHECK: @llvm.x86.avx10.mask.vfixupimmps256 1556 return _mm256_mask_fixupimm_round_ps(__A, __U, __B, __C, 5, 8); 1557 } 1558 1559 __m256 test_mm256_maskz_fixupimm_round_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256i __C) { 1560 // CHECK-LABEL: @test_mm256_maskz_fixupimm_round_ps 1561 // CHECK: @llvm.x86.avx10.maskz.vfixupimmps256 1562 return _mm256_maskz_fixupimm_round_ps(__U, __A, __B, __C, 5, 8); 1563 } 1564 1565 __m256d test_mm256_fmadd_round_pd(__m256d __A, __m256d __B, __m256d __C) { 1566 // CHECK-LABEL: @test_mm256_fmadd_round_pd 1567 // CHECK: @llvm.x86.avx10.vfmaddpd256 1568 return _mm256_fmadd_round_pd(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1569 } 1570 1571 __m256d test_mm256_mask_fmadd_round_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C) { 1572 // CHECK-LABEL: @test_mm256_mask_fmadd_round_pd 1573 // CHECK: @llvm.x86.avx10.vfmaddpd256 1574 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 1575 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}} 1576 return _mm256_mask_fmadd_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1577 } 1578 1579 __m256d test_mm256_mask3_fmadd_round_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U) { 1580 // CHECK-LABEL: @test_mm256_mask3_fmadd_round_pd 1581 // CHECK: @llvm.x86.avx10.vfmaddpd256 1582 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 1583 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}} 1584 return _mm256_mask3_fmadd_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1585 } 1586 1587 __m256d test_mm256_maskz_fmadd_round_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C) { 1588 // CHECK-LABEL: @test_mm256_maskz_fmadd_round_pd 1589 // CHECK: @llvm.x86.avx10.vfmaddpd256 1590 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 1591 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> zeroinitializer 1592 return _mm256_maskz_fmadd_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1593 } 1594 1595 __m256d test_mm256_fmsub_round_pd(__m256d __A, __m256d __B, __m256d __C) { 1596 // CHECK-LABEL: @test_mm256_fmsub_round_pd 1597 // CHECK: fneg <4 x double> 1598 // CHECK: @llvm.x86.avx10.vfmaddpd256 1599 return _mm256_fmsub_round_pd(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1600 } 1601 1602 __m256d test_mm256_mask_fmsub_round_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C) { 1603 // CHECK-LABEL: @test_mm256_mask_fmsub_round_pd 1604 // CHECK: fneg <4 x double> 1605 // CHECK: @llvm.x86.avx10.vfmaddpd256 1606 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 1607 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}} 1608 return _mm256_mask_fmsub_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1609 } 1610 1611 __m256d test_mm256_maskz_fmsub_round_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C) { 1612 // CHECK-LABEL: @test_mm256_maskz_fmsub_round_pd 1613 // CHECK: fneg <4 x double> 1614 // CHECK: @llvm.x86.avx10.vfmaddpd256 1615 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 1616 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> zeroinitializer 1617 return _mm256_maskz_fmsub_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1618 } 1619 1620 __m256d test_mm256_fnmadd_round_pd(__m256d __A, __m256d __B, __m256d __C) { 1621 // CHECK-LABEL: @test_mm256_fnmadd_round_pd 1622 // CHECK: fneg <4 x double> 1623 // CHECK: @llvm.x86.avx10.vfmaddpd256 1624 return _mm256_fnmadd_round_pd(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1625 } 1626 1627 __m256d test_mm256_mask3_fnmadd_round_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U) { 1628 // CHECK-LABEL: @test_mm256_mask3_fnmadd_round_pd 1629 // CHECK: fneg <4 x double> 1630 // CHECK: @llvm.x86.avx10.vfmaddpd256 1631 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 1632 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}} 1633 return _mm256_mask3_fnmadd_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1634 } 1635 1636 __m256d test_mm256_maskz_fnmadd_round_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C) { 1637 // CHECK-LABEL: @test_mm256_maskz_fnmadd_round_pd 1638 // CHECK: fneg <4 x double> 1639 // CHECK: @llvm.x86.avx10.vfmaddpd256 1640 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 1641 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> zeroinitializer 1642 return _mm256_maskz_fnmadd_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1643 } 1644 1645 __m256d test_mm256_fnmsub_round_pd(__m256d __A, __m256d __B, __m256d __C) { 1646 // CHECK-LABEL: @test_mm256_fnmsub_round_pd 1647 // CHECK: fneg <4 x double> 1648 // CHECK: fneg <4 x double> 1649 // CHECK: @llvm.x86.avx10.vfmaddpd256 1650 return _mm256_fnmsub_round_pd(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1651 } 1652 1653 __m256d test_mm256_maskz_fnmsub_round_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C) { 1654 // CHECK-LABEL: @test_mm256_maskz_fnmsub_round_pd 1655 // CHECK: fneg <4 x double> 1656 // CHECK: fneg <4 x double> 1657 // CHECK: @llvm.x86.avx10.vfmaddpd256 1658 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 1659 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> zeroinitializer 1660 return _mm256_maskz_fnmsub_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1661 } 1662 1663 __m256h test_mm256_fmadd_round_ph(__m256h __A, __m256h __B, __m256h __C) { 1664 // CHECK-LABEL: @test_mm256_fmadd_round_ph 1665 // CHECK: @llvm.x86.avx10.vfmaddph256 1666 return _mm256_fmadd_round_ph(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1667 } 1668 1669 __m256h test_mm256_mask_fmadd_round_ph(__m256h __A, __mmask16 __U, __m256h __B, __m256h __C) { 1670 // CHECK-LABEL: @test_mm256_mask_fmadd_round_ph 1671 // CHECK: @llvm.x86.avx10.vfmaddph256 1672 // CHECK: bitcast i16 %{{.*}} to <16 x i1> 1673 // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}} 1674 return _mm256_mask_fmadd_round_ph(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1675 } 1676 1677 __m256h test_mm256_mask3_fmadd_round_ph(__m256h __A, __m256h __B, __m256h __C, __mmask16 __U) { 1678 // CHECK-LABEL: @test_mm256_mask3_fmadd_round_ph 1679 // CHECK: @llvm.x86.avx10.vfmaddph256 1680 // CHECK: bitcast i16 %{{.*}} to <16 x i1> 1681 // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}} 1682 return _mm256_mask3_fmadd_round_ph(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1683 } 1684 1685 __m256h test_mm256_maskz_fmadd_round_ph(__mmask16 __U, __m256h __A, __m256h __B, __m256h __C) { 1686 // CHECK-LABEL: @test_mm256_maskz_fmadd_round_ph 1687 // CHECK: @llvm.x86.avx10.vfmaddph256 1688 // CHECK: bitcast i16 %{{.*}} to <16 x i1> 1689 // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> zeroinitializer 1690 return _mm256_maskz_fmadd_round_ph(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1691 } 1692 1693 __m256h test_mm256_fmsub_round_ph(__m256h __A, __m256h __B, __m256h __C) { 1694 // CHECK-LABEL: @test_mm256_fmsub_round_ph 1695 // CHECK: fneg 1696 // CHECK: @llvm.x86.avx10.vfmaddph256 1697 return _mm256_fmsub_round_ph(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1698 } 1699 1700 __m256h test_mm256_mask_fmsub_round_ph(__m256h __A, __mmask16 __U, __m256h __B, __m256h __C) { 1701 // CHECK-LABEL: @test_mm256_mask_fmsub_round_ph 1702 // CHECK: fneg 1703 // CHECK: @llvm.x86.avx10.vfmaddph256 1704 // CHECK: bitcast i16 %{{.*}} to <16 x i1> 1705 // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}} 1706 return _mm256_mask_fmsub_round_ph(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1707 } 1708 1709 __m256h test_mm256_maskz_fmsub_round_ph(__mmask16 __U, __m256h __A, __m256h __B, __m256h __C) { 1710 // CHECK-LABEL: @test_mm256_maskz_fmsub_round_ph 1711 // CHECK: fneg 1712 // CHECK: @llvm.x86.avx10.vfmaddph256 1713 // CHECK: bitcast i16 %{{.*}} to <16 x i1> 1714 // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> zeroinitializer 1715 return _mm256_maskz_fmsub_round_ph(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1716 } 1717 1718 __m256h test_mm256_fnmadd_round_ph(__m256h __A, __m256h __B, __m256h __C) { 1719 // CHECK-LABEL: @test_mm256_fnmadd_round_ph 1720 // CHECK: fneg 1721 // CHECK: @llvm.x86.avx10.vfmaddph256 1722 return _mm256_fnmadd_round_ph(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1723 } 1724 1725 __m256h test_mm256_mask3_fnmadd_round_ph(__m256h __A, __m256h __B, __m256h __C, __mmask16 __U) { 1726 // CHECK-LABEL: @test_mm256_mask3_fnmadd_round_ph 1727 // CHECK: fneg 1728 // CHECK: @llvm.x86.avx10.vfmaddph256 1729 // CHECK: bitcast i16 %{{.*}} to <16 x i1> 1730 // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}} 1731 return _mm256_mask3_fnmadd_round_ph(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1732 } 1733 1734 __m256h test_mm256_maskz_fnmadd_round_ph(__mmask16 __U, __m256h __A, __m256h __B, __m256h __C) { 1735 // CHECK-LABEL: @test_mm256_maskz_fnmadd_round_ph 1736 // CHECK: fneg 1737 // CHECK: @llvm.x86.avx10.vfmaddph256 1738 // CHECK: bitcast i16 %{{.*}} to <16 x i1> 1739 // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> zeroinitializer 1740 return _mm256_maskz_fnmadd_round_ph(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1741 } 1742 1743 __m256h test_mm256_fnmsub_round_ph(__m256h __A, __m256h __B, __m256h __C) { 1744 // CHECK-LABEL: @test_mm256_fnmsub_round_ph 1745 // CHECK: fneg 1746 // CHECK: fneg 1747 // CHECK: @llvm.x86.avx10.vfmaddph256 1748 return _mm256_fnmsub_round_ph(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1749 } 1750 1751 __m256h test_mm256_maskz_fnmsub_round_ph(__mmask16 __U, __m256h __A, __m256h __B, __m256h __C) { 1752 // CHECK-LABEL: @test_mm256_maskz_fnmsub_round_ph 1753 // CHECK: fneg 1754 // CHECK: fneg 1755 // CHECK: @llvm.x86.avx10.vfmaddph256 1756 // CHECK: bitcast i16 %{{.*}} to <16 x i1> 1757 // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> zeroinitializer 1758 return _mm256_maskz_fnmsub_round_ph(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1759 } 1760 1761 __m256 test_mm256_fmadd_round_ps(__m256 __A, __m256 __B, __m256 __C) { 1762 // CHECK-LABEL: @test_mm256_fmadd_round_ps 1763 // CHECK: @llvm.x86.avx10.vfmaddps256 1764 return _mm256_fmadd_round_ps(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1765 } 1766 1767 __m256 test_mm256_mask_fmadd_round_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C) { 1768 // CHECK-LABEL: @test_mm256_mask_fmadd_round_ps 1769 // CHECK: @llvm.x86.avx10.vfmaddps256 1770 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 1771 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} 1772 return _mm256_mask_fmadd_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1773 } 1774 1775 __m256 test_mm256_mask3_fmadd_round_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U) { 1776 // CHECK-LABEL: @test_mm256_mask3_fmadd_round_ps 1777 // CHECK: @llvm.x86.avx10.vfmaddps256 1778 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 1779 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} 1780 return _mm256_mask3_fmadd_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1781 } 1782 1783 __m256 test_mm256_maskz_fmadd_round_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C) { 1784 // CHECK-LABEL: @test_mm256_maskz_fmadd_round_ps 1785 // CHECK: @llvm.x86.avx10.vfmaddps256 1786 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 1787 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> zeroinitializer 1788 return _mm256_maskz_fmadd_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1789 } 1790 1791 __m256 test_mm256_fmsub_round_ps(__m256 __A, __m256 __B, __m256 __C) { 1792 // CHECK-LABEL: @test_mm256_fmsub_round_ps 1793 // CHECK: fneg <8 x float> %{{.*}} 1794 // CHECK: @llvm.x86.avx10.vfmaddps256 1795 return _mm256_fmsub_round_ps(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1796 } 1797 1798 __m256 test_mm256_mask_fmsub_round_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C) { 1799 // CHECK-LABEL: @test_mm256_mask_fmsub_round_ps 1800 // CHECK: fneg <8 x float> %{{.*}} 1801 // CHECK: @llvm.x86.avx10.vfmaddps256 1802 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 1803 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} 1804 return _mm256_mask_fmsub_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1805 } 1806 1807 __m256 test_mm256_maskz_fmsub_round_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C) { 1808 // CHECK-LABEL: @test_mm256_maskz_fmsub_round_ps 1809 // CHECK: fneg <8 x float> %{{.*}} 1810 // CHECK: @llvm.x86.avx10.vfmaddps256 1811 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 1812 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> zeroinitializer 1813 return _mm256_maskz_fmsub_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1814 } 1815 1816 __m256 test_mm256_fnmadd_round_ps(__m256 __A, __m256 __B, __m256 __C) { 1817 // CHECK-LABEL: @test_mm256_fnmadd_round_ps 1818 // CHECK: fneg <8 x float> %{{.*}} 1819 // CHECK: @llvm.x86.avx10.vfmaddps256 1820 return _mm256_fnmadd_round_ps(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1821 } 1822 1823 __m256 test_mm256_mask3_fnmadd_round_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U) { 1824 // CHECK-LABEL: @test_mm256_mask3_fnmadd_round_ps 1825 // CHECK: fneg <8 x float> %{{.*}} 1826 // CHECK: @llvm.x86.avx10.vfmaddps256 1827 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 1828 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} 1829 return _mm256_mask3_fnmadd_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1830 } 1831 1832 __m256 test_mm256_maskz_fnmadd_round_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C) { 1833 // CHECK-LABEL: @test_mm256_maskz_fnmadd_round_ps 1834 // CHECK: fneg <8 x float> %{{.*}} 1835 // CHECK: @llvm.x86.avx10.vfmaddps256 1836 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 1837 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> zeroinitializer 1838 return _mm256_maskz_fnmadd_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1839 } 1840 1841 __m256 test_mm256_fnmsub_round_ps(__m256 __A, __m256 __B, __m256 __C) { 1842 // CHECK-LABEL: @test_mm256_fnmsub_round_ps 1843 // CHECK: fneg <8 x float> %{{.*}} 1844 // CHECK: fneg <8 x float> %{{.*}} 1845 // CHECK: @llvm.x86.avx10.vfmaddps256 1846 return _mm256_fnmsub_round_ps(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1847 } 1848 1849 __m256 test_mm256_maskz_fnmsub_round_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C) { 1850 // CHECK-LABEL: @test_mm256_maskz_fnmsub_round_ps 1851 // CHECK: fneg <8 x float> %{{.*}} 1852 // CHECK: fneg <8 x float> %{{.*}} 1853 // CHECK: @llvm.x86.avx10.vfmaddps256 1854 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 1855 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> zeroinitializer 1856 return _mm256_maskz_fnmsub_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1857 } 1858 1859 __m256h test_mm256_fmadd_round_pch(__m256h __A, __m256h __B, __m256h __C) { 1860 // CHECK-LABEL: @test_mm256_fmadd_round_pch 1861 // CHECK: @llvm.x86.avx10.mask.vfmaddcph256 1862 return _mm256_fmadd_round_pch(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1863 } 1864 1865 __m256h test_mm256_mask_fmadd_round_pch(__m256h __A, __mmask8 __U, __m256h __B, __m256h __C) { 1866 // CHECK-LABEL: @test_mm256_mask_fmadd_round_pch 1867 // CHECK: @llvm.x86.avx10.mask.vfmaddcph256 1868 // CHECK: %{{.*}} = select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} 1869 return _mm256_mask_fmadd_round_pch(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1870 } 1871 1872 __m256h test_mm256_mask3_fmadd_round_pch(__m256h __A, __m256h __B, __m256h __C, __mmask8 __U) { 1873 // CHECK-LABEL: @test_mm256_mask3_fmadd_round_pch 1874 // CHECK: @llvm.x86.avx10.mask.vfmaddcph256 1875 // CHECK-NOT: %{{.*}} = select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} 1876 return _mm256_mask3_fmadd_round_pch(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1877 } 1878 1879 __m256h test_mm256_maskz_fmadd_round_pch(__mmask8 __U, __m256h __A, __m256h __B, __m256h __C) { 1880 // CHECK-LABEL: @test_mm256_maskz_fmadd_round_pch 1881 // CHECK: @llvm.x86.avx10.maskz.vfmaddcph256 1882 return _mm256_maskz_fmadd_round_pch(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1883 } 1884 1885 __m256d test_mm256_fmaddsub_round_pd(__m256d __A, __m256d __B, __m256d __C) { 1886 // CHECK-LABEL: @test_mm256_fmaddsub_round_pd 1887 // CHECK: @llvm.x86.avx10.vfmaddsubpd256 1888 return _mm256_fmaddsub_round_pd(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1889 } 1890 1891 __m256d test_mm256_mask_fmaddsub_round_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C) { 1892 // CHECK-LABEL: @test_mm256_mask_fmaddsub_round_pd 1893 // CHECK: @llvm.x86.avx10.vfmaddsubpd256 1894 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 1895 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}} 1896 return _mm256_mask_fmaddsub_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1897 } 1898 1899 __m256d test_mm256_mask3_fmaddsub_round_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U) { 1900 // CHECK-LABEL: @test_mm256_mask3_fmaddsub_round_pd 1901 // CHECK: @llvm.x86.avx10.vfmaddsubpd256 1902 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 1903 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}} 1904 return _mm256_mask3_fmaddsub_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1905 } 1906 1907 __m256d test_mm256_maskz_fmaddsub_round_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C) { 1908 // CHECK-LABEL: @test_mm256_maskz_fmaddsub_round_pd 1909 // CHECK: @llvm.x86.avx10.vfmaddsubpd256 1910 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 1911 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> zeroinitializer 1912 return _mm256_maskz_fmaddsub_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1913 } 1914 1915 __m256d test_mm256_fmsubadd_round_pd(__m256d __A, __m256d __B, __m256d __C) { 1916 // CHECK-LABEL: @test_mm256_fmsubadd_round_pd 1917 // CHECK: fneg <4 x double> %{{.*}} 1918 // CHECK: @llvm.x86.avx10.vfmaddsubpd256 1919 return _mm256_fmsubadd_round_pd(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1920 } 1921 1922 __m256d test_mm256_mask_fmsubadd_round_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C) { 1923 // CHECK-LABEL: @test_mm256_mask_fmsubadd_round_pd 1924 // CHECK: fneg <4 x double> %{{.*}} 1925 // CHECK: @llvm.x86.avx10.vfmaddsubpd256 1926 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 1927 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}} 1928 return _mm256_mask_fmsubadd_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1929 } 1930 1931 __m256d test_mm256_maskz_fmsubadd_round_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C) { 1932 // CHECK-LABEL: @test_mm256_maskz_fmsubadd_round_pd 1933 // CHECK: fneg <4 x double> %{{.*}} 1934 // CHECK: @llvm.x86.avx10.vfmaddsubpd256 1935 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 1936 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> zeroinitializer 1937 return _mm256_maskz_fmsubadd_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1938 } 1939 1940 __m256h test_mm256_fmaddsub_round_ph(__m256h __A, __m256h __B, __m256h __C) { 1941 // CHECK-LABEL: @test_mm256_fmaddsub_round_ph 1942 // CHECK: @llvm.x86.avx10.vfmaddsubph256 1943 return _mm256_fmaddsub_round_ph(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1944 } 1945 1946 __m256h test_mm256_mask_fmaddsub_round_ph(__m256h __A, __mmask16 __U, __m256h __B, __m256h __C) { 1947 // CHECK-LABEL: @test_mm256_mask_fmaddsub_round_ph 1948 // CHECK: @llvm.x86.avx10.vfmaddsubph256 1949 // CHECK: bitcast i16 %{{.*}} to <16 x i1> 1950 // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}} 1951 return _mm256_mask_fmaddsub_round_ph(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1952 } 1953 1954 __m256h test_mm256_mask3_fmaddsub_round_ph(__m256h __A, __m256h __B, __m256h __C, __mmask16 __U) { 1955 // CHECK-LABEL: @test_mm256_mask3_fmaddsub_round_ph 1956 // CHECK: @llvm.x86.avx10.vfmaddsubph256 1957 // CHECK: bitcast i16 %{{.*}} to <16 x i1> 1958 // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}} 1959 return _mm256_mask3_fmaddsub_round_ph(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1960 } 1961 1962 __m256h test_mm256_maskz_fmaddsub_round_ph(__mmask16 __U, __m256h __A, __m256h __B, __m256h __C) { 1963 // CHECK-LABEL: @test_mm256_maskz_fmaddsub_round_ph 1964 // CHECK: @llvm.x86.avx10.vfmaddsubph256 1965 // CHECK: bitcast i16 %{{.*}} to <16 x i1> 1966 // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> zeroinitializer 1967 return _mm256_maskz_fmaddsub_round_ph(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1968 } 1969 1970 __m256h test_mm256_fmsubadd_round_ph(__m256h __A, __m256h __B, __m256h __C) { 1971 // CHECK-LABEL: @test_mm256_fmsubadd_round_ph 1972 // CHECK: fneg 1973 // CHECK: @llvm.x86.avx10.vfmaddsubph256 1974 return _mm256_fmsubadd_round_ph(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1975 } 1976 1977 __m256h test_mm256_mask_fmsubadd_round_ph(__m256h __A, __mmask16 __U, __m256h __B, __m256h __C) { 1978 // CHECK-LABEL: @test_mm256_mask_fmsubadd_round_ph 1979 // CHECK: fneg 1980 // CHECK: @llvm.x86.avx10.vfmaddsubph256 1981 // CHECK: bitcast i16 %{{.*}} to <16 x i1> 1982 // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}} 1983 return _mm256_mask_fmsubadd_round_ph(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1984 } 1985 1986 __m256h test_mm256_maskz_fmsubadd_round_ph(__mmask16 __U, __m256h __A, __m256h __B, __m256h __C) { 1987 // CHECK-LABEL: @test_mm256_maskz_fmsubadd_round_ph 1988 // CHECK: fneg 1989 // CHECK: @llvm.x86.avx10.vfmaddsubph256 1990 // CHECK: bitcast i16 %{{.*}} to <16 x i1> 1991 // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> zeroinitializer 1992 return _mm256_maskz_fmsubadd_round_ph(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1993 } 1994 1995 __m256 test_mm256_fmaddsub_round_ps(__m256 __A, __m256 __B, __m256 __C) { 1996 // CHECK-LABEL: @test_mm256_fmaddsub_round_ps 1997 // CHECK: @llvm.x86.avx10.vfmaddsubps256 1998 return _mm256_fmaddsub_round_ps(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 1999 } 2000 2001 __m256 test_mm256_mask_fmaddsub_round_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C) { 2002 // CHECK-LABEL: @test_mm256_mask_fmaddsub_round_ps 2003 // CHECK: @llvm.x86.avx10.vfmaddsubps256 2004 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 2005 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} 2006 return _mm256_mask_fmaddsub_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2007 } 2008 2009 __m256 test_mm256_mask3_fmaddsub_round_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U) { 2010 // CHECK-LABEL: @test_mm256_mask3_fmaddsub_round_ps 2011 // CHECK: @llvm.x86.avx10.vfmaddsubps256 2012 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 2013 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} 2014 return _mm256_mask3_fmaddsub_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2015 } 2016 2017 __m256 test_mm256_maskz_fmaddsub_round_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C) { 2018 // CHECK-LABEL: @test_mm256_maskz_fmaddsub_round_ps 2019 // CHECK: @llvm.x86.avx10.vfmaddsubps256 2020 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 2021 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> zeroinitializer 2022 return _mm256_maskz_fmaddsub_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2023 } 2024 2025 __m256 test_mm256_fmsubadd_round_ps(__m256 __A, __m256 __B, __m256 __C) { 2026 // CHECK-LABEL: @test_mm256_fmsubadd_round_ps 2027 // CHECK: fneg <8 x float> %{{.*}} 2028 // CHECK: @llvm.x86.avx10.vfmaddsubps256 2029 return _mm256_fmsubadd_round_ps(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2030 } 2031 2032 __m256 test_mm256_mask_fmsubadd_round_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C) { 2033 // CHECK-LABEL: @test_mm256_mask_fmsubadd_round_ps 2034 // CHECK: fneg <8 x float> %{{.*}} 2035 // CHECK: @llvm.x86.avx10.vfmaddsubps256 2036 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 2037 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} 2038 return _mm256_mask_fmsubadd_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2039 } 2040 2041 __m256 test_mm256_maskz_fmsubadd_round_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C) { 2042 // CHECK-LABEL: @test_mm256_maskz_fmsubadd_round_ps 2043 // CHECK: fneg <8 x float> %{{.*}} 2044 // CHECK: @llvm.x86.avx10.vfmaddsubps256 2045 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 2046 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> zeroinitializer 2047 return _mm256_maskz_fmsubadd_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2048 } 2049 2050 __m256d test_mm256_mask3_fmsub_round_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U) { 2051 // CHECK-LABEL: @test_mm256_mask3_fmsub_round_pd 2052 // CHECK: fneg <4 x double> %{{.*}} 2053 // CHECK: @llvm.x86.avx10.vfmaddpd256 2054 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 2055 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}} 2056 return _mm256_mask3_fmsub_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2057 } 2058 2059 __m256d test_mm256_mask3_fmsubadd_round_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U) { 2060 // CHECK-LABEL: @test_mm256_mask3_fmsubadd_round_pd 2061 // CHECK: fneg <4 x double> %{{.*}} 2062 // CHECK: @llvm.x86.avx10.vfmaddsubpd256 2063 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 2064 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}} 2065 return _mm256_mask3_fmsubadd_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2066 } 2067 2068 __m256d test_mm256_mask_fnmadd_round_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C) { 2069 // CHECK-LABEL: @test_mm256_mask_fnmadd_round_pd 2070 // CHECK: fneg <4 x double> 2071 // CHECK: @llvm.x86.avx10.vfmaddpd256 2072 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 2073 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}} 2074 return _mm256_mask_fnmadd_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2075 } 2076 2077 __m256d test_mm256_mask_fnmsub_round_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C) { 2078 // CHECK-LABEL: @test_mm256_mask_fnmsub_round_pd 2079 // CHECK: fneg <4 x double> 2080 // CHECK: fneg <4 x double> 2081 // CHECK: @llvm.x86.avx10.vfmaddpd256 2082 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 2083 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}} 2084 return _mm256_mask_fnmsub_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2085 } 2086 2087 __m256d test_mm256_mask3_fnmsub_round_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U) { 2088 // CHECK-LABEL: @test_mm256_mask3_fnmsub_round_pd 2089 // CHECK: fneg <4 x double> 2090 // CHECK: fneg <4 x double> 2091 // CHECK: @llvm.x86.avx10.vfmaddpd256 2092 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 2093 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}} 2094 return _mm256_mask3_fnmsub_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2095 } 2096 2097 __m256h test_mm256_mask3_fmsub_round_ph(__m256h __A, __m256h __B, __m256h __C, __mmask16 __U) { 2098 // CHECK-LABEL: @test_mm256_mask3_fmsub_round_ph 2099 // CHECK: fneg 2100 // CHECK: @llvm.x86.avx10.vfmaddph256 2101 // CHECK: bitcast i16 %{{.*}} to <16 x i1> 2102 // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}} 2103 return _mm256_mask3_fmsub_round_ph(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2104 } 2105 2106 __m256h test_mm256_mask3_fmsubadd_round_ph(__m256h __A, __m256h __B, __m256h __C, __mmask16 __U) { 2107 // CHECK-LABEL: @test_mm256_mask3_fmsubadd_round_ph 2108 // CHECK: fneg 2109 // CHECK: @llvm.x86.avx10.vfmaddsubph256 2110 // CHECK: bitcast i16 %{{.*}} to <16 x i1> 2111 // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}} 2112 return _mm256_mask3_fmsubadd_round_ph(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2113 } 2114 2115 __m256h test_mm256_mask_fnmadd_round_ph(__m256h __A, __mmask16 __U, __m256h __B, __m256h __C) { 2116 // CHECK-LABEL: @test_mm256_mask_fnmadd_round_ph 2117 // CHECK: fneg 2118 // CHECK: @llvm.x86.avx10.vfmaddph256 2119 // CHECK: bitcast i16 %{{.*}} to <16 x i1> 2120 // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}} 2121 return _mm256_mask_fnmadd_round_ph(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2122 } 2123 2124 __m256h test_mm256_mask_fnmsub_round_ph(__m256h __A, __mmask16 __U, __m256h __B, __m256h __C) { 2125 // CHECK-LABEL: @test_mm256_mask_fnmsub_round_ph 2126 // CHECK: fneg 2127 // CHECK: fneg 2128 // CHECK: @llvm.x86.avx10.vfmaddph256 2129 // CHECK: bitcast i16 %{{.*}} to <16 x i1> 2130 // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}} 2131 return _mm256_mask_fnmsub_round_ph(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2132 } 2133 2134 __m256h test_mm256_mask3_fnmsub_round_ph(__m256h __A, __m256h __B, __m256h __C, __mmask16 __U) { 2135 // CHECK-LABEL: @test_mm256_mask3_fnmsub_round_ph 2136 // CHECK: fneg 2137 // CHECK: fneg 2138 // CHECK: @llvm.x86.avx10.vfmaddph256 2139 // CHECK: bitcast i16 %{{.*}} to <16 x i1> 2140 // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}} 2141 return _mm256_mask3_fnmsub_round_ph(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2142 } 2143 2144 __m256 test_mm256_mask3_fmsub_round_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U) { 2145 // CHECK-LABEL: @test_mm256_mask3_fmsub_round_ps 2146 // CHECK: fneg <8 x float> %{{.*}} 2147 // CHECK: @llvm.x86.avx10.vfmaddps256 2148 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 2149 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} 2150 return _mm256_mask3_fmsub_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2151 } 2152 2153 __m256 test_mm256_mask3_fmsubadd_round_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U) { 2154 // CHECK-LABEL: @test_mm256_mask3_fmsubadd_round_ps 2155 // CHECK: fneg <8 x float> %{{.*}} 2156 // CHECK: @llvm.x86.avx10.vfmaddsubps256 2157 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 2158 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} 2159 return _mm256_mask3_fmsubadd_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2160 } 2161 2162 __m256 test_mm256_mask_fnmadd_round_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C) { 2163 // CHECK-LABEL: @test_mm256_mask_fnmadd_round_ps 2164 // CHECK: fneg <8 x float> %{{.*}} 2165 // CHECK: @llvm.x86.avx10.vfmaddps256 2166 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 2167 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} 2168 return _mm256_mask_fnmadd_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2169 } 2170 2171 __m256 test_mm256_mask_fnmsub_round_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C) { 2172 // CHECK-LABEL: @test_mm256_mask_fnmsub_round_ps 2173 // CHECK: fneg <8 x float> %{{.*}} 2174 // CHECK: fneg <8 x float> %{{.*}} 2175 // CHECK: @llvm.x86.avx10.vfmaddps256 2176 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 2177 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} 2178 return _mm256_mask_fnmsub_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2179 } 2180 2181 __m256 test_mm256_mask3_fnmsub_round_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U) { 2182 // CHECK-LABEL: @test_mm256_mask3_fnmsub_round_ps 2183 // CHECK: fneg <8 x float> %{{.*}} 2184 // CHECK: fneg <8 x float> %{{.*}} 2185 // CHECK: @llvm.x86.avx10.vfmaddps256 2186 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 2187 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} 2188 return _mm256_mask3_fnmsub_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2189 } 2190 2191 __m256h test_mm256_mul_round_pch(__m256h __A, __m256h __B) { 2192 // CHECK-LABEL: @test_mm256_mul_round_pch 2193 // CHECK: @llvm.x86.avx10.mask.vfmulcph256 2194 return _mm256_mul_round_pch(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2195 } 2196 2197 __m256h test_mm256_mask_mul_round_pch(__m256h __W, __mmask8 __U, __m256h __A, __m256h __B) { 2198 // CHECK-LABEL: @test_mm256_mask_mul_round_pch 2199 // CHECK: @llvm.x86.avx10.mask.vfmulcph256 2200 return _mm256_mask_mul_round_pch(__W, __U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2201 } 2202 2203 __m256h test_mm256_maskz_mul_round_pch(__mmask8 __U, __m256h __A, __m256h __B) { 2204 // CHECK-LABEL: @test_mm256_maskz_mul_round_pch 2205 // CHECK: @llvm.x86.avx10.mask.vfmulcph256 2206 return _mm256_maskz_mul_round_pch(__U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2207 } 2208 2209 __m256d test_mm256_getexp_round_pd(__m256d __A) { 2210 // CHECK-LABEL: @test_mm256_getexp_round_pd 2211 // CHECK: @llvm.x86.avx10.mask.vgetexppd256 2212 return _mm256_getexp_round_pd(__A, _MM_FROUND_NO_EXC); 2213 } 2214 2215 __m256d test_mm256_mask_getexp_round_pd(__m256d __W, __mmask8 __U, __m256d __A) { 2216 // CHECK-LABEL: @test_mm256_mask_getexp_round_pd 2217 // CHECK: @llvm.x86.avx10.mask.vgetexppd256 2218 return _mm256_mask_getexp_round_pd(__W, __U, __A, _MM_FROUND_NO_EXC); 2219 } 2220 2221 __m256d test_mm256_maskz_getexp_round_pd(__mmask8 __U, __m256d __A) { 2222 // CHECK-LABEL: @test_mm256_maskz_getexp_round_pd 2223 // CHECK: @llvm.x86.avx10.mask.vgetexppd256 2224 return _mm256_maskz_getexp_round_pd(__U, __A, _MM_FROUND_NO_EXC); 2225 } 2226 2227 __m256h test_mm256_getexp_round_ph(__m256h __A) { 2228 // CHECK-LABEL: @test_mm256_getexp_round_ph 2229 // CHECK: @llvm.x86.avx10.mask.vgetexpph256 2230 return _mm256_getexp_round_ph(__A, _MM_FROUND_NO_EXC); 2231 } 2232 2233 __m256h test_mm256_mask_getexp_round_ph(__m256h __W, __mmask16 __U, __m256h __A) { 2234 // CHECK-LABEL: @test_mm256_mask_getexp_round_ph 2235 // CHECK: @llvm.x86.avx10.mask.vgetexpph256 2236 return _mm256_mask_getexp_round_ph(__W, __U, __A, _MM_FROUND_NO_EXC); 2237 } 2238 2239 __m256h test_mm256_maskz_getexp_round_ph(__mmask16 __U, __m256h __A) { 2240 // CHECK-LABEL: @test_mm256_maskz_getexp_round_ph 2241 // CHECK: @llvm.x86.avx10.mask.vgetexpph256 2242 return _mm256_maskz_getexp_round_ph(__U, __A, _MM_FROUND_NO_EXC); 2243 } 2244 2245 __m256 test_mm256_getexp_round_ps(__m256 __A) { 2246 // CHECK-LABEL: @test_mm256_getexp_round_ps 2247 // CHECK: @llvm.x86.avx10.mask.vgetexpps256 2248 return _mm256_getexp_round_ps(__A, _MM_FROUND_NO_EXC); 2249 } 2250 2251 __m256 test_mm256_mask_getexp_round_ps(__m256 __W, __mmask8 __U, __m256 __A) { 2252 // CHECK-LABEL: @test_mm256_mask_getexp_round_ps 2253 // CHECK: @llvm.x86.avx10.mask.vgetexpps256 2254 return _mm256_mask_getexp_round_ps(__W, __U, __A, _MM_FROUND_NO_EXC); 2255 } 2256 2257 __m256 test_mm256_maskz_getexp_round_ps(__mmask8 __U, __m256 __A) { 2258 // CHECK-LABEL: @test_mm256_maskz_getexp_round_ps 2259 // CHECK: @llvm.x86.avx10.mask.vgetexpps256 2260 return _mm256_maskz_getexp_round_ps(__U, __A, _MM_FROUND_NO_EXC); 2261 } 2262 2263 __m256d test_mm256_getmant_round_pd(__m256d __A) { 2264 // CHECK-LABEL: @test_mm256_getmant_round_pd 2265 // CHECK: @llvm.x86.avx10.mask.vgetmantpd256 2266 return _mm256_getmant_round_pd(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_NO_EXC); 2267 } 2268 2269 __m256d test_mm256_mask_getmant_round_pd(__m256d __W, __mmask8 __U, __m256d __A) { 2270 // CHECK-LABEL: @test_mm256_mask_getmant_round_pd 2271 // CHECK: @llvm.x86.avx10.mask.vgetmantpd256 2272 return _mm256_mask_getmant_round_pd(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_NO_EXC); 2273 } 2274 2275 __m256d test_mm256_maskz_getmant_round_pd(__mmask8 __U, __m256d __A) { 2276 // CHECK-LABEL: @test_mm256_maskz_getmant_round_pd 2277 // CHECK: @llvm.x86.avx10.mask.vgetmantpd256 2278 return _mm256_maskz_getmant_round_pd(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_NO_EXC); 2279 } 2280 2281 __m256h test_mm256_getmant_round_ph(__m256h __A) { 2282 // CHECK-LABEL: @test_mm256_getmant_round_ph 2283 // CHECK: @llvm.x86.avx10.mask.vgetmantph256 2284 return _mm256_getmant_round_ph(__A, _MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_NO_EXC); 2285 } 2286 2287 __m256h test_mm256_mask_getmant_round_ph(__m256h __W, __mmask16 __U, __m256h __A) { 2288 // CHECK-LABEL: @test_mm256_mask_getmant_round_ph 2289 // CHECK: @llvm.x86.avx10.mask.vgetmantph256 2290 return _mm256_mask_getmant_round_ph(__W, __U, __A, _MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_NO_EXC); 2291 } 2292 2293 __m256h test_mm256_maskz_getmant_round_ph(__mmask16 __U, __m256h __A) { 2294 // CHECK-LABEL: @test_mm256_maskz_getmant_round_ph 2295 // CHECK: @llvm.x86.avx10.mask.vgetmantph256 2296 return _mm256_maskz_getmant_round_ph(__U, __A, _MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_NO_EXC); 2297 } 2298 2299 __m256 test_mm256_getmant_round_ps(__m256 __A) { 2300 // CHECK-LABEL: @test_mm256_getmant_round_ps 2301 // CHECK: @llvm.x86.avx10.mask.vgetmantps256 2302 return _mm256_getmant_round_ps(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_NO_EXC); 2303 } 2304 2305 __m256 test_mm256_mask_getmant_round_ps(__m256 __W, __mmask8 __U, __m256 __A) { 2306 // CHECK-LABEL: @test_mm256_mask_getmant_round_ps 2307 // CHECK: @llvm.x86.avx10.mask.vgetmantps256 2308 return _mm256_mask_getmant_round_ps(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_NO_EXC); 2309 } 2310 2311 __m256 test_mm256_maskz_getmant_round_ps(__mmask8 __U, __m256 __A) { 2312 // CHECK-LABEL: @test_mm256_maskz_getmant_round_ps 2313 // CHECK: @llvm.x86.avx10.mask.vgetmantps256 2314 return _mm256_maskz_getmant_round_ps(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_NO_EXC); 2315 } 2316 2317 __m256d test_mm256_max_round_pd(__m256d __A, __m256d __B) { 2318 // CHECK-LABEL: @test_mm256_max_round_pd 2319 // CHECK: @llvm.x86.avx10.vmaxpd256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, i32 8) 2320 return _mm256_max_round_pd(__A, __B, _MM_FROUND_NO_EXC); 2321 } 2322 2323 __m256d test_mm256_mask_max_round_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) { 2324 // CHECK-LABEL: @test_mm256_mask_max_round_pd 2325 // CHECK: @llvm.x86.avx10.vmaxpd256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, i32 8) 2326 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}} 2327 return _mm256_mask_max_round_pd(__W, __U, __A, __B, _MM_FROUND_NO_EXC); 2328 } 2329 2330 __m256d test_mm256_maskz_max_round_pd(__mmask8 __U, __m256d __A, __m256d __B) { 2331 // CHECK-LABEL: @test_mm256_maskz_max_round_pd 2332 // CHECK: @llvm.x86.avx10.vmaxpd256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, i32 8) 2333 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}} 2334 return _mm256_maskz_max_round_pd(__U, __A, __B, _MM_FROUND_NO_EXC); 2335 } 2336 2337 __m256h test_mm256_max_round_ph(__m256h __A, __m256h __B) { 2338 // CHECK-LABEL: @test_mm256_max_round_ph 2339 // CHECK: @llvm.x86.avx10.vmaxph256(<16 x half> %{{.*}}, <16 x half> %{{.*}}, i32 8) 2340 return _mm256_max_round_ph(__A, __B, _MM_FROUND_NO_EXC); 2341 } 2342 2343 __m256h test_mm256_mask_max_round_ph(__m256h __W, __mmask8 __U, __m256h __A, __m256h __B) { 2344 // CHECK-LABEL: @test_mm256_mask_max_round_ph 2345 // CHECK: @llvm.x86.avx10.vmaxph256(<16 x half> %{{.*}}, <16 x half> %{{.*}}, i32 8) 2346 // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}} 2347 return _mm256_mask_max_round_ph(__W, __U, __A, __B, _MM_FROUND_NO_EXC); 2348 } 2349 2350 __m256h test_mm256_maskz_max_round_ph(__mmask8 __U, __m256h __A, __m256h __B) { 2351 // CHECK-LABEL: @test_mm256_maskz_max_round_ph 2352 // CHECK: @llvm.x86.avx10.vmaxph256(<16 x half> %{{.*}}, <16 x half> %{{.*}}, i32 8) 2353 // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}} 2354 return _mm256_maskz_max_round_ph(__U, __A, __B, _MM_FROUND_NO_EXC); 2355 } 2356 2357 __m256 test_mm256_max_round_ps(__m256 __A, __m256 __B) { 2358 // CHECK-LABEL: @test_mm256_max_round_ps 2359 // CHECK: @llvm.x86.avx10.vmaxps256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, i32 8) 2360 return _mm256_max_round_ps(__A, __B, _MM_FROUND_NO_EXC); 2361 } 2362 2363 __m256 test_mm256_mask_max_round_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) { 2364 // CHECK-LABEL: @test_mm256_mask_max_round_ps 2365 // CHECK: @llvm.x86.avx10.vmaxps256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, i32 8) 2366 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} 2367 return _mm256_mask_max_round_ps(__W, __U, __A, __B, _MM_FROUND_NO_EXC); 2368 } 2369 2370 __m256 test_mm256_maskz_max_round_ps(__mmask8 __U, __m256 __A, __m256 __B) { 2371 // CHECK-LABEL: @test_mm256_maskz_max_round_ps 2372 // CHECK: @llvm.x86.avx10.vmaxps256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, i32 8) 2373 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} 2374 return _mm256_maskz_max_round_ps(__U, __A, __B, _MM_FROUND_NO_EXC); 2375 } 2376 2377 __m256d test_mm256_min_round_pd(__m256d __A, __m256d __B) { 2378 // CHECK-LABEL: @test_mm256_min_round_pd 2379 // CHECK: @llvm.x86.avx10.vminpd256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, i32 8) 2380 return _mm256_min_round_pd(__A, __B, _MM_FROUND_NO_EXC); 2381 } 2382 2383 __m256d test_mm256_mask_min_round_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) { 2384 // CHECK-LABEL: @test_mm256_mask_min_round_pd 2385 // CHECK: @llvm.x86.avx10.vminpd256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, i32 8) 2386 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}} 2387 return _mm256_mask_min_round_pd(__W, __U, __A, __B, _MM_FROUND_NO_EXC); 2388 } 2389 2390 __m256d test_mm256_maskz_min_round_pd(__mmask8 __U, __m256d __A, __m256d __B) { 2391 // CHECK-LABEL: @test_mm256_maskz_min_round_pd 2392 // CHECK: @llvm.x86.avx10.vminpd256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, i32 8) 2393 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}} 2394 return _mm256_maskz_min_round_pd(__U, __A, __B, _MM_FROUND_NO_EXC); 2395 } 2396 2397 __m256h test_mm256_min_round_ph(__m256h __A, __m256h __B) { 2398 // CHECK-LABEL: @test_mm256_min_round_ph 2399 // CHECK: @llvm.x86.avx10.vminph256(<16 x half> %{{.*}}, <16 x half> %{{.*}}, i32 8) 2400 return _mm256_min_round_ph(__A, __B, _MM_FROUND_NO_EXC); 2401 } 2402 2403 __m256h test_mm256_mask_min_round_ph(__m256h __W, __mmask8 __U, __m256h __A, __m256h __B) { 2404 // CHECK-LABEL: @test_mm256_mask_min_round_ph 2405 // CHECK: @llvm.x86.avx10.vminph256(<16 x half> %{{.*}}, <16 x half> %{{.*}}, i32 8) 2406 // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}} 2407 return _mm256_mask_min_round_ph(__W, __U, __A, __B, _MM_FROUND_NO_EXC); 2408 } 2409 2410 __m256h test_mm256_maskz_min_round_ph(__mmask8 __U, __m256h __A, __m256h __B) { 2411 // CHECK-LABEL: @test_mm256_maskz_min_round_ph 2412 // CHECK: @llvm.x86.avx10.vminph256(<16 x half> %{{.*}}, <16 x half> %{{.*}}, i32 8) 2413 // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}} 2414 return _mm256_maskz_min_round_ph(__U, __A, __B, _MM_FROUND_NO_EXC); 2415 } 2416 2417 __m256 test_mm256_min_round_ps(__m256 __A, __m256 __B) { 2418 // CHECK-LABEL: @test_mm256_min_round_ps 2419 // CHECK: @llvm.x86.avx10.vminps256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, i32 8) 2420 return _mm256_min_round_ps(__A, __B, _MM_FROUND_NO_EXC); 2421 } 2422 2423 __m256 test_mm256_mask_min_round_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) { 2424 // CHECK-LABEL: @test_mm256_mask_min_round_ps 2425 // CHECK: @llvm.x86.avx10.vminps256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, i32 8) 2426 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} 2427 return _mm256_mask_min_round_ps(__W, __U, __A, __B, _MM_FROUND_NO_EXC); 2428 } 2429 2430 __m256 test_mm256_maskz_min_round_ps(__mmask8 __U, __m256 __A, __m256 __B) { 2431 // CHECK-LABEL: @test_mm256_maskz_min_round_ps 2432 // CHECK: @llvm.x86.avx10.vminps256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, i32 8) 2433 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} 2434 return _mm256_maskz_min_round_ps(__U, __A, __B, _MM_FROUND_NO_EXC); 2435 } 2436 2437 __m256d test_mm256_mul_round_pd(__m256d __A, __m256d __B) { 2438 // CHECK-LABEL: @test_mm256_mul_round_pd 2439 // CHECK: @llvm.x86.avx10.vmulpd256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, i32 11) 2440 return _mm256_mul_round_pd(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2441 } 2442 2443 __m256d test_mm256_mask_mul_round_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) { 2444 // CHECK-LABEL: @test_mm256_mask_mul_round_pd 2445 // CHECK: @llvm.x86.avx10.vmulpd256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, i32 10) 2446 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}} 2447 return _mm256_mask_mul_round_pd(__W, __U, __A, __B, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC); 2448 } 2449 2450 __m256d test_mm256_maskz_mul_round_pd(__mmask8 __U, __m256d __A, __m256d __B) { 2451 // CHECK-LABEL: @test_mm256_maskz_mul_round_pd 2452 // CHECK: @llvm.x86.avx10.vmulpd256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, i32 9) 2453 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}} 2454 return _mm256_maskz_mul_round_pd(__U, __A, __B, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC); 2455 } 2456 2457 __m256h test_mm256_mul_round_ph(__m256h __A, __m256h __B) { 2458 // CHECK-LABEL: @test_mm256_mul_round_ph 2459 // CHECK: @llvm.x86.avx10.vmulph256(<16 x half> %{{.*}}, <16 x half> %{{.*}}, i32 11) 2460 return _mm256_mul_round_ph(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2461 } 2462 2463 __m256h test_mm256_mask_mul_round_ph(__m256h __W, __mmask8 __U, __m256h __A, __m256h __B) { 2464 // CHECK-LABEL: @test_mm256_mask_mul_round_ph 2465 // CHECK: @llvm.x86.avx10.vmulph256(<16 x half> %{{.*}}, <16 x half> %{{.*}}, i32 10) 2466 // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}} 2467 return _mm256_mask_mul_round_ph(__W, __U, __A, __B, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC); 2468 } 2469 2470 __m256h test_mm256_maskz_mul_round_ph(__mmask8 __U, __m256h __A, __m256h __B) { 2471 // CHECK-LABEL: @test_mm256_maskz_mul_round_ph 2472 // CHECK: @llvm.x86.avx10.vmulph256(<16 x half> %{{.*}}, <16 x half> %{{.*}}, i32 9) 2473 // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}} 2474 return _mm256_maskz_mul_round_ph(__U, __A, __B, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC); 2475 } 2476 2477 __m256 test_mm256_mul_round_ps(__m256 __A, __m256 __B) { 2478 // CHECK-LABEL: @test_mm256_mul_round_ps 2479 // CHECK: @llvm.x86.avx10.vmulps256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, i32 11) 2480 return _mm256_mul_round_ps(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2481 } 2482 2483 __m256 test_mm256_mask_mul_round_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) { 2484 // CHECK-LABEL: @test_mm256_mask_mul_round_ps 2485 // CHECK: @llvm.x86.avx10.vmulps256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, i32 10) 2486 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} 2487 return _mm256_mask_mul_round_ps(__W, __U, __A, __B, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC); 2488 } 2489 2490 __m256 test_mm256_maskz_mul_round_ps(__mmask8 __U, __m256 __A, __m256 __B) { 2491 // CHECK-LABEL: @test_mm256_maskz_mul_round_ps 2492 // CHECK: @llvm.x86.avx10.vmulps256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, i32 9) 2493 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} 2494 return _mm256_maskz_mul_round_ps(__U, __A, __B, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC); 2495 } 2496 2497 __m256d test_mm256_range_round_pd(__m256d __A, __m256d __B) { 2498 // CHECK-LABEL: @test_mm256_range_round_pd 2499 // CHECK: @llvm.x86.avx10.mask.vrangepd256 2500 return _mm256_range_round_pd(__A, __B, 4, 8); 2501 } 2502 2503 __m256d test_mm256_mask_range_round_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) { 2504 // CHECK-LABEL: @test_mm256_mask_range_round_pd 2505 // CHECK: @llvm.x86.avx10.mask.vrangepd256 2506 return _mm256_mask_range_round_pd(__W, __U, __A, __B, 4, 8); 2507 } 2508 2509 __m256d test_mm256_maskz_range_round_pd(__mmask8 __U, __m256d __A, __m256d __B) { 2510 // CHECK-LABEL: @test_mm256_maskz_range_round_pd 2511 // CHECK: @llvm.x86.avx10.mask.vrangepd256 2512 return _mm256_maskz_range_round_pd(__U, __A, __B, 4, 8); 2513 } 2514 2515 __m256 test_mm256_range_round_ps(__m256 __A, __m256 __B) { 2516 // CHECK-LABEL: @test_mm256_range_round_ps 2517 // CHECK: @llvm.x86.avx10.mask.vrangeps256 2518 return _mm256_range_round_ps(__A, __B, 4, 8); 2519 } 2520 2521 __m256 test_mm256_mask_range_round_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) { 2522 // CHECK-LABEL: @test_mm256_mask_range_round_ps 2523 // CHECK: @llvm.x86.avx10.mask.vrangeps256 2524 return _mm256_mask_range_round_ps(__W, __U, __A, __B, 4, 8); 2525 } 2526 2527 __m256 test_mm256_maskz_range_round_ps(__mmask8 __U, __m256 __A, __m256 __B) { 2528 // CHECK-LABEL: @test_mm256_maskz_range_round_ps 2529 // CHECK: @llvm.x86.avx10.mask.vrangeps256 2530 return _mm256_maskz_range_round_ps(__U, __A, __B, 4, 8); 2531 } 2532 2533 __m256d test_mm256_reduce_round_pd(__m256d __A) { 2534 // CHECK-LABEL: @test_mm256_reduce_round_pd 2535 // CHECK: @llvm.x86.avx10.mask.vreducepd256 2536 return _mm256_reduce_round_pd(__A, 4, 8); 2537 } 2538 2539 __m256d test_mm256_mask_reduce_round_pd(__m256d __W, __mmask8 __U, __m256d __A) { 2540 // CHECK-LABEL: @test_mm256_mask_reduce_round_pd 2541 // CHECK: @llvm.x86.avx10.mask.vreducepd256 2542 return _mm256_mask_reduce_round_pd(__W, __U, __A, 4, 8); 2543 } 2544 2545 __m256d test_mm256_maskz_reduce_round_pd(__mmask8 __U, __m256d __A) { 2546 // CHECK-LABEL: @test_mm256_maskz_reduce_round_pd 2547 // CHECK: @llvm.x86.avx10.mask.vreducepd256 2548 return _mm256_maskz_reduce_round_pd(__U, __A, 4, 8); 2549 } 2550 2551 __m256h test_mm256_mask_reduce_round_ph(__m256h __A, __mmask8 __U, __m256h __C) { 2552 // CHECK-LABEL: @test_mm256_mask_reduce_round_ph 2553 // CHECK: @llvm.x86.avx10.mask.vreduceph256 2554 return _mm256_mask_reduce_round_ph(__A, __U, __C, 3, _MM_FROUND_NO_EXC); 2555 } 2556 2557 __m256h test_mm256_maskz_reduce_round_ph(__m256h __A, __mmask8 __U) { 2558 // CHECK-LABEL: @test_mm256_maskz_reduce_round_ph 2559 // CHECK: @llvm.x86.avx10.mask.vreduceph256 2560 return _mm256_maskz_reduce_round_ph(__U, __A, 3, _MM_FROUND_NO_EXC); 2561 } 2562 2563 __m256h test_mm256_reduce_round_ph(__m256h __A) { 2564 // CHECK-LABEL: @test_mm256_reduce_round_ph 2565 // CHECK: @llvm.x86.avx10.mask.vreduceph256 2566 return _mm256_reduce_round_ph(__A, 3, _MM_FROUND_NO_EXC); 2567 } 2568 2569 __m256 test_mm256_reduce_round_ps(__m256 __A) { 2570 // CHECK-LABEL: @test_mm256_reduce_round_ps 2571 // CHECK: @llvm.x86.avx10.mask.vreduceps256 2572 return _mm256_reduce_round_ps(__A, 4, 8); 2573 } 2574 2575 __m256 test_mm256_mask_reduce_round_ps(__m256 __W, __mmask8 __U, __m256 __A) { 2576 // CHECK-LABEL: @test_mm256_mask_reduce_round_ps 2577 // CHECK: @llvm.x86.avx10.mask.vreduceps256 2578 return _mm256_mask_reduce_round_ps(__W, __U, __A, 4, 8); 2579 } 2580 2581 __m256 test_mm256_maskz_reduce_round_ps(__mmask8 __U, __m256 __A) { 2582 // CHECK-LABEL: @test_mm256_maskz_reduce_round_ps 2583 // CHECK: @llvm.x86.avx10.mask.vreduceps256 2584 return _mm256_maskz_reduce_round_ps(__U, __A, 4, 8); 2585 } 2586 2587 __m256d test_mm256_roundscale_round_pd(__m256d __A) 2588 { 2589 // CHECK-LABEL: @test_mm256_roundscale_round_pd 2590 // CHECK: @llvm.x86.avx10.mask.vrndscalepd256 2591 return _mm256_roundscale_round_pd(__A,_MM_FROUND_TO_ZERO,_MM_FROUND_NO_EXC); 2592 } 2593 2594 __m256d test_mm256_mask_roundscale_round_pd(__m256d __A,__mmask8 __U,__m256d __C) 2595 { 2596 // CHECK-LABEL: @test_mm256_mask_roundscale_round_pd 2597 // CHECK: @llvm.x86.avx10.mask.vrndscalepd256 2598 return _mm256_mask_roundscale_round_pd(__A,__U,__C,_MM_FROUND_TO_ZERO,_MM_FROUND_NO_EXC); 2599 } 2600 2601 __m256d test_mm256_maskz_roundscale_round_pd(__m256d __A,__mmask8 __U) 2602 { 2603 // CHECK-LABEL: @test_mm256_maskz_roundscale_round_pd 2604 // CHECK: @llvm.x86.avx10.mask.vrndscalepd256 2605 return _mm256_maskz_roundscale_round_pd(__U,__A,_MM_FROUND_TO_ZERO,_MM_FROUND_NO_EXC); 2606 } 2607 2608 __m256h test_mm256_mask_roundscale_round_ph(__m256h __A, __mmask8 __U, __m256h __C) { 2609 // CHECK-LABEL: @test_mm256_mask_roundscale_round_ph 2610 // CHECK: @llvm.x86.avx10.mask.vrndscaleph256 2611 return _mm256_mask_roundscale_round_ph(__A, __U, __C, 3, _MM_FROUND_NO_EXC); 2612 } 2613 2614 __m256h test_mm256_maskz_roundscale_round_ph(__m256h __A, __mmask8 __U) { 2615 // CHECK-LABEL: @test_mm256_maskz_roundscale_round_ph 2616 // CHECK: @llvm.x86.avx10.mask.vrndscaleph256 2617 return _mm256_maskz_roundscale_round_ph(__U, __A, 3, _MM_FROUND_NO_EXC); 2618 } 2619 2620 __m256h test_mm256_roundscale_round_ph(__m256h __A) { 2621 // CHECK-LABEL: @test_mm256_roundscale_round_ph 2622 // CHECK: @llvm.x86.avx10.mask.vrndscaleph256 2623 return _mm256_roundscale_round_ph(__A, 3, _MM_FROUND_NO_EXC); 2624 } 2625 2626 __m256 test_mm256_roundscale_round_ps(__m256 __A) 2627 { 2628 // CHECK-LABEL: @test_mm256_roundscale_round_ps 2629 // CHECK: @llvm.x86.avx10.mask.vrndscaleps256 2630 return _mm256_roundscale_round_ps(__A,_MM_FROUND_TO_ZERO,_MM_FROUND_NO_EXC); 2631 } 2632 2633 __m256 test_mm256_mask_roundscale_round_ps(__m256 __A,__mmask8 __U,__m256 __C) 2634 { 2635 // CHECK-LABEL: @test_mm256_mask_roundscale_round_ps 2636 // CHECK: @llvm.x86.avx10.mask.vrndscaleps256 2637 return _mm256_mask_roundscale_round_ps(__A,__U,__C,_MM_FROUND_TO_ZERO,_MM_FROUND_NO_EXC); 2638 } 2639 2640 __m256 test_mm256_maskz_roundscale_round_ps(__m256 __A,__mmask8 __U) 2641 { 2642 // CHECK-LABEL: @test_mm256_maskz_roundscale_round_ps 2643 // CHECK: @llvm.x86.avx10.mask.vrndscaleps256 2644 return _mm256_maskz_roundscale_round_ps(__U,__A,_MM_FROUND_TO_ZERO,_MM_FROUND_NO_EXC); 2645 } 2646 2647 __m256d test_mm256_scalef_round_pd(__m256d __A, __m256d __B) { 2648 // CHECK-LABEL: @test_mm256_scalef_round_pd 2649 // CHECK: @llvm.x86.avx10.mask.vscalefpd256 2650 return _mm256_scalef_round_pd(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2651 } 2652 2653 __m256d test_mm256_mask_scalef_round_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) { 2654 // CHECK-LABEL: @test_mm256_mask_scalef_round_pd 2655 // CHECK: @llvm.x86.avx10.mask.vscalefpd256 2656 return _mm256_mask_scalef_round_pd(__W, __U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2657 } 2658 2659 __m256d test_mm256_maskz_scalef_round_pd(__mmask8 __U, __m256d __A, __m256d __B) { 2660 // CHECK-LABEL: @test_mm256_maskz_scalef_round_pd 2661 // CHECK: @llvm.x86.avx10.mask.vscalefpd256 2662 return _mm256_maskz_scalef_round_pd(__U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2663 } 2664 2665 __m256h test_mm256_scalef_round_ph(__m256h __A, __m256h __B) { 2666 // CHECK-LABEL: @test_mm256_scalef_round_ph 2667 // CHECK: @llvm.x86.avx10.mask.vscalefph256 2668 return _mm256_scalef_round_ph(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2669 } 2670 2671 __m256h test_mm256_mask_scalef_round_ph(__m256h __W, __mmask16 __U, __m256h __A, __m256h __B) { 2672 // CHECK-LABEL: @test_mm256_mask_scalef_round_ph 2673 // CHECK: @llvm.x86.avx10.mask.vscalefph256 2674 return _mm256_mask_scalef_round_ph(__W, __U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2675 } 2676 2677 __m256h test_mm256_maskz_scalef_round_ph(__mmask16 __U, __m256h __A, __m256h __B) { 2678 // CHECK-LABEL: @test_mm256_maskz_scalef_round_ph 2679 // CHECK: @llvm.x86.avx10.mask.vscalefph256 2680 return _mm256_maskz_scalef_round_ph(__U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2681 } 2682 2683 __m256 test_mm256_scalef_round_ps(__m256 __A, __m256 __B) { 2684 // CHECK-LABEL: @test_mm256_scalef_round_ps 2685 // CHECK: @llvm.x86.avx10.mask.vscalefps256 2686 return _mm256_scalef_round_ps(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2687 } 2688 2689 __m256 test_mm256_mask_scalef_round_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) { 2690 // CHECK-LABEL: @test_mm256_mask_scalef_round_ps 2691 // CHECK: @llvm.x86.avx10.mask.vscalefps256 2692 return _mm256_mask_scalef_round_ps(__W, __U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2693 } 2694 2695 __m256 test_mm256_maskz_scalef_round_ps(__mmask8 __U, __m256 __A, __m256 __B) { 2696 // CHECK-LABEL: @test_mm256_maskz_scalef_round_ps 2697 // CHECK: @llvm.x86.avx10.mask.vscalefps256 2698 return _mm256_maskz_scalef_round_ps(__U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2699 } 2700 2701 __m256d test_mm256_sqrt_round_pd(__m256d __A) 2702 { 2703 // CHECK-LABEL: @test_mm256_sqrt_round_pd 2704 // CHECK: call <4 x double> @llvm.x86.avx10.vsqrtpd256(<4 x double> %{{.*}}, i32 11) 2705 return _mm256_sqrt_round_pd(__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2706 } 2707 2708 __m256d test_mm256_mask_sqrt_round_pd(__m256d __W,__mmask8 __U,__m256d __A) 2709 { 2710 // CHECK-LABEL: @test_mm256_mask_sqrt_round_pd 2711 // CHECK: call <4 x double> @llvm.x86.avx10.vsqrtpd256(<4 x double> %{{.*}}, i32 11) 2712 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 2713 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}} 2714 return _mm256_mask_sqrt_round_pd(__W,__U,__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2715 } 2716 2717 __m256d test_mm256_maskz_sqrt_round_pd(__mmask8 __U,__m256d __A) 2718 { 2719 // CHECK-LABEL: @test_mm256_maskz_sqrt_round_pd 2720 // CHECK: call <4 x double> @llvm.x86.avx10.vsqrtpd256(<4 x double> %{{.*}}, i32 11) 2721 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 2722 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> {{.*}} 2723 return _mm256_maskz_sqrt_round_pd(__U,__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2724 } 2725 2726 __m256h test_mm256_sqrt_round_ph(__m256h __A) { 2727 // CHECK-LABEL: @test_mm256_sqrt_round_ph 2728 // CHECK: call <16 x half> @llvm.x86.avx10.vsqrtph256(<16 x half> %{{.*}}, i32 11) 2729 return _mm256_sqrt_round_ph(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2730 } 2731 2732 __m256h test_mm256_mask_sqrt_round_ph(__m256h __W, __mmask16 __U, __m256h __A) { 2733 // CHECK-LABEL: @test_mm256_mask_sqrt_round_ph 2734 // CHECK: call <16 x half> @llvm.x86.avx10.vsqrtph256(<16 x half> %{{.*}}, i32 11) 2735 // CHECK: bitcast i16 %{{.*}} to <16 x i1> 2736 // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}} 2737 return _mm256_mask_sqrt_round_ph(__W, __U, __A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2738 } 2739 2740 __m256h test_mm256_maskz_sqrt_round_ph(__mmask16 __U, __m256h __A) { 2741 // CHECK-LABEL: @test_mm256_maskz_sqrt_round_ph 2742 // CHECK: call <16 x half> @llvm.x86.avx10.vsqrtph256(<16 x half> %{{.*}}, i32 11) 2743 // CHECK: bitcast i16 %{{.*}} to <16 x i1> 2744 // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> {{.*}} 2745 return _mm256_maskz_sqrt_round_ph(__U, __A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2746 } 2747 2748 __m256 test_mm256_sqrt_round_ps(__m256 __A) 2749 { 2750 // CHECK-LABEL: @test_mm256_sqrt_round_ps 2751 // CHECK: call <8 x float> @llvm.x86.avx10.vsqrtps256(<8 x float> %{{.*}}, i32 11) 2752 return _mm256_sqrt_round_ps(__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2753 } 2754 2755 __m256 test_mm256_mask_sqrt_round_ps(__m256 __W,__mmask8 __U,__m256 __A) 2756 { 2757 // CHECK-LABEL: @test_mm256_mask_sqrt_round_ps 2758 // CHECK: call <8 x float> @llvm.x86.avx10.vsqrtps256(<8 x float> %{{.*}}, i32 11) 2759 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 2760 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} 2761 return _mm256_mask_sqrt_round_ps(__W,__U,__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2762 } 2763 2764 __m256 test_mm256_maskz_sqrt_round_ps(__mmask8 __U,__m256 __A) 2765 { 2766 // CHECK-LABEL: @test_mm256_maskz_sqrt_round_ps 2767 // CHECK: call <8 x float> @llvm.x86.avx10.vsqrtps256(<8 x float> %{{.*}}, i32 11) 2768 // CHECK: bitcast i8 %{{.*}} to <8 x i1> 2769 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> {{.*}} 2770 return _mm256_maskz_sqrt_round_ps(__U,__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2771 } 2772 2773 __m256d test_mm256_sub_round_pd(__m256d __A, __m256d __B) { 2774 // CHECK-LABEL: @test_mm256_sub_round_pd 2775 // CHECK: @llvm.x86.avx10.vsubpd256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, i32 11) 2776 return _mm256_sub_round_pd(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2777 } 2778 2779 __m256d test_mm256_mask_sub_round_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) { 2780 // CHECK-LABEL: @test_mm256_mask_sub_round_pd 2781 // CHECK: @llvm.x86.avx10.vsubpd256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, i32 10) 2782 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}} 2783 return _mm256_mask_sub_round_pd(__W, __U, __A, __B, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC); 2784 } 2785 2786 __m256d test_mm256_maskz_sub_round_pd(__mmask8 __U, __m256d __A, __m256d __B) { 2787 // CHECK-LABEL: @test_mm256_maskz_sub_round_pd 2788 // CHECK: @llvm.x86.avx10.vsubpd256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, i32 9) 2789 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}} 2790 return _mm256_maskz_sub_round_pd(__U, __A, __B, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC); 2791 } 2792 2793 __m256h test_mm256_sub_round_ph(__m256h __A, __m256h __B) { 2794 // CHECK-LABEL: @test_mm256_sub_round_ph 2795 // CHECK: @llvm.x86.avx10.vsubph256(<16 x half> %{{.*}}, <16 x half> %{{.*}}, i32 11) 2796 return _mm256_sub_round_ph(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2797 } 2798 2799 __m256h test_mm256_mask_sub_round_ph(__m256h __W, __mmask8 __U, __m256h __A, __m256h __B) { 2800 // CHECK-LABEL: @test_mm256_mask_sub_round_ph 2801 // CHECK: @llvm.x86.avx10.vsubph256(<16 x half> %{{.*}}, <16 x half> %{{.*}}, i32 10) 2802 // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}} 2803 return _mm256_mask_sub_round_ph(__W, __U, __A, __B, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC); 2804 } 2805 2806 __m256h test_mm256_maskz_sub_round_ph(__mmask8 __U, __m256h __A, __m256h __B) { 2807 // CHECK-LABEL: @test_mm256_maskz_sub_round_ph 2808 // CHECK: @llvm.x86.avx10.vsubph256(<16 x half> %{{.*}}, <16 x half> %{{.*}}, i32 9) 2809 // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}} 2810 return _mm256_maskz_sub_round_ph(__U, __A, __B, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC); 2811 } 2812 2813 __m256 test_mm256_sub_round_ps(__m256 __A, __m256 __B) { 2814 // CHECK-LABEL: @test_mm256_sub_round_ps 2815 // CHECK: @llvm.x86.avx10.vsubps256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, i32 11) 2816 return _mm256_sub_round_ps(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC); 2817 } 2818 2819 __m256 test_mm256_mask_sub_round_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) { 2820 // CHECK-LABEL: @test_mm256_mask_sub_round_ps 2821 // CHECK: @llvm.x86.avx10.vsubps256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, i32 10) 2822 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} 2823 return _mm256_mask_sub_round_ps(__W, __U, __A, __B, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC); 2824 } 2825 2826 __m256 test_mm256_maskz_sub_round_ps(__mmask8 __U, __m256 __A, __m256 __B) { 2827 // CHECK-LABEL: @test_mm256_maskz_sub_round_ps 2828 // CHECK: @llvm.x86.avx10.vsubps256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, i32 9) 2829 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}} 2830 return _mm256_maskz_sub_round_ps(__U, __A, __B, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC); 2831 } 2832