172 lines · c
1// RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-- -target-feature +movrs -target-feature +avx10.2 -emit-llvm -o - -Wall -Werror | FileCheck %s2 3#include <immintrin.h>4 5__m128i test_mm_loadrs_epi8(const __m128i * __A) {6 // CHECK-LABEL: @test_mm_loadrs_epi8(7 // CHECK: call <16 x i8> @llvm.x86.avx10.vmovrsb128(8 return _mm_loadrs_epi8(__A);9}10 11__m128i test_mm_mask_loadrs_epi8(__m128i __A, __mmask16 __B, const __m128i * __C) {12 // CHECK-LABEL: @test_mm_mask_loadrs_epi8(13 // CHECK: call <16 x i8> @llvm.x86.avx10.vmovrsb128(14 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}15 return _mm_mask_loadrs_epi8(__A, __B, __C);16}17 18__m128i test_mm_maskz_loadrs_epi8(__mmask16 __A, const __m128i * __B) {19 // CHECK-LABEL: @test_mm_maskz_loadrs_epi8(20 // CHECK: call <16 x i8> @llvm.x86.avx10.vmovrsb128(21 // CHECK: store <2 x i64> zeroinitializer22 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}23 return _mm_maskz_loadrs_epi8(__A, __B);24}25 26__m256i test_mm256_loadrs_epi8(const __m256i * __A) {27 // CHECK-LABEL: @test_mm256_loadrs_epi8(28 // CHECK: call <32 x i8> @llvm.x86.avx10.vmovrsb256(29 return _mm256_loadrs_epi8(__A);30}31 32__m256i test_mm256_mask_loadrs_epi8(__m256i __A, __mmask32 __B, const __m256i * __C) {33 // CHECK-LABEL: @test_mm256_mask_loadrs_epi8(34 // CHECK: call <32 x i8> @llvm.x86.avx10.vmovrsb256(35 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}36 return _mm256_mask_loadrs_epi8(__A, __B, __C);37}38 39__m256i test_mm256_maskz_loadrs_epi8(__mmask32 __A, const __m256i * __B) {40 // CHECK-LABEL: @test_mm256_maskz_loadrs_epi8(41 // CHECK: call <32 x i8> @llvm.x86.avx10.vmovrsb256(42 // CHECK: store <4 x i64> zeroinitializer43 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}44 return _mm256_maskz_loadrs_epi8(__A, __B);45}46 47__m128i test_mm_loadrs_epi32(const __m128i * __A) {48 // CHECK-LABEL: @test_mm_loadrs_epi32(49 // CHECK: call <4 x i32> @llvm.x86.avx10.vmovrsd128(50 return _mm_loadrs_epi32(__A);51}52 53__m128i test_mm_mask_loadrs_epi32(__m128i __A, __mmask8 __B, const __m128i * __C) {54 // CHECK-LABEL: @test_mm_mask_loadrs_epi32(55 // CHECK: call <4 x i32> @llvm.x86.avx10.vmovrsd128(56 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}57 return _mm_mask_loadrs_epi32(__A, __B, __C);58}59 60__m128i test_mm_maskz_loadrs_epi32(__mmask8 __A, const __m128i * __B) {61 // CHECK-LABEL: @test_mm_maskz_loadrs_epi32(62 // CHECK: call <4 x i32> @llvm.x86.avx10.vmovrsd128(63 // CHECK: store <2 x i64> zeroinitializer64 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}65 return _mm_maskz_loadrs_epi32(__A, __B);66}67 68__m256i test_mm256_loadrs_epi32(const __m256i * __A) {69 // CHECK-LABEL: @test_mm256_loadrs_epi32(70 // CHECK: call <8 x i32> @llvm.x86.avx10.vmovrsd256(71 return _mm256_loadrs_epi32(__A);72}73 74__m256i test_mm256_mask_loadrs_epi32(__m256i __A, __mmask8 __B, const __m256i * __C) {75 // CHECK-LABEL: @test_mm256_mask_loadrs_epi32(76 // CHECK: call <8 x i32> @llvm.x86.avx10.vmovrsd256(77 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}78 return _mm256_mask_loadrs_epi32(__A, __B, __C);79}80 81__m256i test_mm256_maskz_loadrs_epi32(__mmask8 __A, const __m256i * __B) {82 // CHECK-LABEL: @test_mm256_maskz_loadrs_epi32(83 // CHECK: call <8 x i32> @llvm.x86.avx10.vmovrsd256(84 // CHECK: store <4 x i64> zeroinitializer85 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}86 return _mm256_maskz_loadrs_epi32(__A, __B);87}88 89__m128i test_mm_loadrs_epi64(const __m128i * __A) {90 // CHECK-LABEL: @test_mm_loadrs_epi64(91 // CHECK: call <2 x i64> @llvm.x86.avx10.vmovrsq128(92 return _mm_loadrs_epi64(__A);93}94 95__m128i test_mm_mask_loadrs_epi64(__m128i __A, __mmask8 __B, const __m128i * __C) {96 // CHECK-LABEL: @test_mm_mask_loadrs_epi64(97 // CHECK: call <2 x i64> @llvm.x86.avx10.vmovrsq128(98 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}99 return _mm_mask_loadrs_epi64(__A, __B, __C);100}101 102__m128i test_mm_maskz_loadrs_epi64(__mmask8 __A, const __m128i * __B) {103 // CHECK-LABEL: @test_mm_maskz_loadrs_epi64(104 // CHECK: call <2 x i64> @llvm.x86.avx10.vmovrsq128(105 // CHECK: store <2 x i64> zeroinitializer106 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}107 return _mm_maskz_loadrs_epi64(__A, __B);108}109 110__m256i test_mm256_loadrs_epi64(const __m256i * __A) {111 // CHECK-LABEL: @test_mm256_loadrs_epi64(112 // CHECK: call <4 x i64> @llvm.x86.avx10.vmovrsq256(113 return _mm256_loadrs_epi64(__A);114}115 116__m256i test_mm256_mask_loadrs_epi64(__m256i __A, __mmask8 __B, const __m256i * __C) {117 // CHECK-LABEL: @test_mm256_mask_loadrs_epi64(118 // CHECK: call <4 x i64> @llvm.x86.avx10.vmovrsq256(119 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}120 return _mm256_mask_loadrs_epi64(__A, __B, __C);121}122 123__m256i test_mm256_maskz_loadrs_epi64(__mmask8 __A, const __m256i * __B) {124 // CHECK-LABEL: @test_mm256_maskz_loadrs_epi64(125 // CHECK: call <4 x i64> @llvm.x86.avx10.vmovrsq256(126 // CHECK: store <4 x i64> zeroinitializer127 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}128 return _mm256_maskz_loadrs_epi64(__A, __B);129}130 131__m128i test_mm_loadrs_epi16(const __m128i * __A) {132 // CHECK-LABEL: @test_mm_loadrs_epi16(133 // CHECK: call <8 x i16> @llvm.x86.avx10.vmovrsw128(134 return _mm_loadrs_epi16(__A);135}136 137__m128i test_mm_mask_loadrs_epi16(__m128i __A, __mmask8 __B, const __m128i * __C) {138 // CHECK-LABEL: @test_mm_mask_loadrs_epi16(139 // CHECK: call <8 x i16> @llvm.x86.avx10.vmovrsw128(140 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}141 return _mm_mask_loadrs_epi16(__A, __B, __C);142}143 144__m128i test_mm_maskz_loadrs_epi16(__mmask8 __A, const __m128i * __B) {145 // CHECK-LABEL: @test_mm_maskz_loadrs_epi16(146 // CHECK: call <8 x i16> @llvm.x86.avx10.vmovrsw128(147 // CHECK: store <2 x i64> zeroinitializer148 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}149 return _mm_maskz_loadrs_epi16(__A, __B);150}151 152__m256i test_mm256_loadrs_epi16(const __m256i * __A) {153 // CHECK-LABEL: @test_mm256_loadrs_epi16(154 // CHECK: call <16 x i16> @llvm.x86.avx10.vmovrsw256(155 return _mm256_loadrs_epi16(__A);156}157 158__m256i test_mm256_mask_loadrs_epi16(__m256i __A, __mmask16 __B, const __m256i * __C) {159 // CHECK-LABEL: @test_mm256_mask_loadrs_epi16(160 // CHECK: call <16 x i16> @llvm.x86.avx10.vmovrsw256(161 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}162 return _mm256_mask_loadrs_epi16(__A, __B, __C);163}164 165__m256i test_mm256_maskz_loadrs_epi16(__mmask16 __A, const __m256i * __B) {166 // CHECK-LABEL: @test_mm256_maskz_loadrs_epi16(167 // CHECK: call <16 x i16> @llvm.x86.avx10.vmovrsw256(168 // CHECK: store <4 x i64> zeroinitializer169 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}170 return _mm256_maskz_loadrs_epi16(__A, __B);171}172