Author: ctopper Date: Tue Jun 21 23:47:58 2016 New Revision: 273378 URL: http://llvm.org/viewvc/llvm-project?rev=273378&view=rev Log: [AVX512] Replace masked integer cmp and ucmp builtins with native IR.
Modified: cfe/trunk/lib/CodeGen/CGBuiltin.cpp cfe/trunk/test/CodeGen/avx512bw-builtins.c cfe/trunk/test/CodeGen/avx512f-builtins.c cfe/trunk/test/CodeGen/avx512vl-builtins.c cfe/trunk/test/CodeGen/avx512vlbw-builtins.c Modified: cfe/trunk/lib/CodeGen/CGBuiltin.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGBuiltin.cpp?rev=273378&r1=273377&r2=273378&view=diff ============================================================================== --- cfe/trunk/lib/CodeGen/CGBuiltin.cpp (original) +++ cfe/trunk/lib/CodeGen/CGBuiltin.cpp Tue Jun 21 23:47:58 2016 @@ -6421,14 +6421,34 @@ static Value *EmitX86Select(CodeGenFunct return CGF.Builder.CreateSelect(Mask, Op0, Op1); } -static Value *EmitX86MaskedCompare(CodeGenFunction &CGF, CmpInst::Predicate P, - SmallVectorImpl<Value *> &Ops) { +static Value *EmitX86MaskedCompare(CodeGenFunction &CGF, unsigned CC, + bool Signed, SmallVectorImpl<Value *> &Ops) { unsigned NumElts = Ops[0]->getType()->getVectorNumElements(); - Value *Cmp = CGF.Builder.CreateICmp(P, Ops[0], Ops[1]); + Value *Cmp; - const auto *C = dyn_cast<Constant>(Ops[2]); + if (CC == 3) { + Cmp = Constant::getNullValue( + llvm::VectorType::get(CGF.Builder.getInt1Ty(), NumElts)); + } else if (CC == 7) { + Cmp = Constant::getAllOnesValue( + llvm::VectorType::get(CGF.Builder.getInt1Ty(), NumElts)); + } else { + ICmpInst::Predicate Pred; + switch (CC) { + default: llvm_unreachable("Unknown condition code"); + case 0: Pred = ICmpInst::ICMP_EQ; break; + case 1: Pred = Signed ? ICmpInst::ICMP_SLT : ICmpInst::ICMP_ULT; break; + case 2: Pred = Signed ? ICmpInst::ICMP_SLE : ICmpInst::ICMP_ULE; break; + case 4: Pred = ICmpInst::ICMP_NE; break; + case 5: Pred = Signed ? ICmpInst::ICMP_SGE : ICmpInst::ICMP_UGE; break; + case 6: Pred = Signed ? ICmpInst::ICMP_SGT : ICmpInst::ICMP_UGT; break; + } + Cmp = CGF.Builder.CreateICmp(Pred, Ops[0], Ops[1]); + } + + const auto *C = dyn_cast<Constant>(Ops.back()); if (!C || !C->isAllOnesValue()) - Cmp = CGF.Builder.CreateAnd(Cmp, getMaskVecValue(CGF, Ops[2], NumElts)); + Cmp = CGF.Builder.CreateAnd(Cmp, getMaskVecValue(CGF, Ops.back(), NumElts)); if (NumElts < 8) { uint32_t Indices[8]; @@ -6899,7 +6919,7 @@ Value *CodeGenFunction::EmitX86BuiltinEx case X86::BI__builtin_ia32_pcmpeqq128_mask: case X86::BI__builtin_ia32_pcmpeqq256_mask: case X86::BI__builtin_ia32_pcmpeqq512_mask: - return EmitX86MaskedCompare(*this, ICmpInst::ICMP_EQ, Ops); + return EmitX86MaskedCompare(*this, 0, false, Ops); case X86::BI__builtin_ia32_pcmpgtb128_mask: case X86::BI__builtin_ia32_pcmpgtb256_mask: case X86::BI__builtin_ia32_pcmpgtb512_mask: @@ -6912,7 +6932,37 @@ Value *CodeGenFunction::EmitX86BuiltinEx case X86::BI__builtin_ia32_pcmpgtq128_mask: case X86::BI__builtin_ia32_pcmpgtq256_mask: case X86::BI__builtin_ia32_pcmpgtq512_mask: - return EmitX86MaskedCompare(*this, ICmpInst::ICMP_SGT, Ops); + return EmitX86MaskedCompare(*this, 6, true, Ops); + case X86::BI__builtin_ia32_cmpb128_mask: + case X86::BI__builtin_ia32_cmpb256_mask: + case X86::BI__builtin_ia32_cmpb512_mask: + case X86::BI__builtin_ia32_cmpw128_mask: + case X86::BI__builtin_ia32_cmpw256_mask: + case X86::BI__builtin_ia32_cmpw512_mask: + case X86::BI__builtin_ia32_cmpd128_mask: + case X86::BI__builtin_ia32_cmpd256_mask: + case X86::BI__builtin_ia32_cmpd512_mask: + case X86::BI__builtin_ia32_cmpq128_mask: + case X86::BI__builtin_ia32_cmpq256_mask: + case X86::BI__builtin_ia32_cmpq512_mask: { + unsigned CC = cast<llvm::ConstantInt>(Ops[2])->getZExtValue() & 0x7; + return EmitX86MaskedCompare(*this, CC, true, Ops); + } + case X86::BI__builtin_ia32_ucmpb128_mask: + case X86::BI__builtin_ia32_ucmpb256_mask: + case X86::BI__builtin_ia32_ucmpb512_mask: + case X86::BI__builtin_ia32_ucmpw128_mask: + case X86::BI__builtin_ia32_ucmpw256_mask: + case X86::BI__builtin_ia32_ucmpw512_mask: + case X86::BI__builtin_ia32_ucmpd128_mask: + case X86::BI__builtin_ia32_ucmpd256_mask: + case X86::BI__builtin_ia32_ucmpd512_mask: + case X86::BI__builtin_ia32_ucmpq128_mask: + case X86::BI__builtin_ia32_ucmpq256_mask: + case X86::BI__builtin_ia32_ucmpq512_mask: { + unsigned CC = cast<llvm::ConstantInt>(Ops[2])->getZExtValue() & 0x7; + return EmitX86MaskedCompare(*this, CC, false, Ops); + } // TODO: Handle 64/512-bit vector widths of min/max. case X86::BI__builtin_ia32_pmaxsb128: Modified: cfe/trunk/test/CodeGen/avx512bw-builtins.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/avx512bw-builtins.c?rev=273378&r1=273377&r2=273378&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/avx512bw-builtins.c (original) +++ cfe/trunk/test/CodeGen/avx512bw-builtins.c Tue Jun 21 23:47:58 2016 @@ -60,290 +60,314 @@ __mmask32 test_mm512_mask_cmpgt_epi16_ma __mmask64 test_mm512_cmpeq_epu8_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmpeq_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 0, i64 -1) + // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}} return (__mmask64)_mm512_cmpeq_epu8_mask(__a, __b); } __mmask64 test_mm512_mask_cmpeq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmpeq_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 0, i64 {{.*}}) + // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}} + // CHECK: and <64 x i1> %{{.*}}, %{{.*}} return (__mmask64)_mm512_mask_cmpeq_epu8_mask(__u, __a, __b); } __mmask32 test_mm512_cmpeq_epu16_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmpeq_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 0, i32 -1) + // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}} return (__mmask32)_mm512_cmpeq_epu16_mask(__a, __b); } __mmask32 test_mm512_mask_cmpeq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmpeq_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 0, i32 {{.*}}) + // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}} + // CHECK: and <32 x i1> %{{.*}}, %{{.*}} return (__mmask32)_mm512_mask_cmpeq_epu16_mask(__u, __a, __b); } __mmask64 test_mm512_cmpgt_epu8_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmpgt_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 6, i64 -1) + // CHECK: icmp ugt <64 x i8> %{{.*}}, %{{.*}} return (__mmask64)_mm512_cmpgt_epu8_mask(__a, __b); } __mmask64 test_mm512_mask_cmpgt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmpgt_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 6, i64 {{.*}}) + // CHECK: icmp ugt <64 x i8> %{{.*}}, %{{.*}} + // CHECK: and <64 x i1> %{{.*}}, %{{.*}} return (__mmask64)_mm512_mask_cmpgt_epu8_mask(__u, __a, __b); } __mmask32 test_mm512_cmpgt_epu16_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmpgt_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 6, i32 -1) + // CHECK: icmp ugt <32 x i16> %{{.*}}, %{{.*}} return (__mmask32)_mm512_cmpgt_epu16_mask(__a, __b); } __mmask32 test_mm512_mask_cmpgt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmpgt_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 6, i32 {{.*}}) + // CHECK: icmp ugt <32 x i16> %{{.*}}, %{{.*}} + // CHECK: and <32 x i1> %{{.*}}, %{{.*}} return (__mmask32)_mm512_mask_cmpgt_epu16_mask(__u, __a, __b); } __mmask64 test_mm512_cmpge_epi8_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmpge_epi8_mask - // CHECK: @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 5, i64 -1) + // CHECK: icmp sge <64 x i8> %{{.*}}, %{{.*}} return (__mmask64)_mm512_cmpge_epi8_mask(__a, __b); } __mmask64 test_mm512_mask_cmpge_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmpge_epi8_mask - // CHECK: @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 5, i64 {{.*}}) + // CHECK: icmp sge <64 x i8> %{{.*}}, %{{.*}} + // CHECK: and <64 x i1> %{{.*}}, %{{.*}} return (__mmask64)_mm512_mask_cmpge_epi8_mask(__u, __a, __b); } __mmask64 test_mm512_cmpge_epu8_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmpge_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 5, i64 -1) + // CHECK: icmp uge <64 x i8> %{{.*}}, %{{.*}} return (__mmask64)_mm512_cmpge_epu8_mask(__a, __b); } __mmask64 test_mm512_mask_cmpge_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmpge_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 5, i64 {{.*}}) + // CHECK: icmp uge <64 x i8> %{{.*}}, %{{.*}} + // CHECK: and <64 x i1> %{{.*}}, %{{.*}} return (__mmask64)_mm512_mask_cmpge_epu8_mask(__u, __a, __b); } __mmask32 test_mm512_cmpge_epi16_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmpge_epi16_mask - // CHECK: @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 5, i32 -1) + // CHECK: icmp sge <32 x i16> %{{.*}}, %{{.*}} return (__mmask32)_mm512_cmpge_epi16_mask(__a, __b); } __mmask32 test_mm512_mask_cmpge_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmpge_epi16_mask - // CHECK: @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 5, i32 {{.*}}) + // CHECK: icmp sge <32 x i16> %{{.*}}, %{{.*}} + // CHECK: and <32 x i1> %{{.*}}, %{{.*}} return (__mmask32)_mm512_mask_cmpge_epi16_mask(__u, __a, __b); } __mmask32 test_mm512_cmpge_epu16_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmpge_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 5, i32 -1) + // CHECK: icmp uge <32 x i16> %{{.*}}, %{{.*}} return (__mmask32)_mm512_cmpge_epu16_mask(__a, __b); } __mmask32 test_mm512_mask_cmpge_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmpge_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 5, i32 {{.*}}) + // CHECK: icmp uge <32 x i16> %{{.*}}, %{{.*}} + // CHECK: and <32 x i1> %{{.*}}, %{{.*}} return (__mmask32)_mm512_mask_cmpge_epu16_mask(__u, __a, __b); } __mmask64 test_mm512_cmple_epi8_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmple_epi8_mask - // CHECK: @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 2, i64 -1) + // CHECK: icmp sle <64 x i8> %{{.*}}, %{{.*}} return (__mmask64)_mm512_cmple_epi8_mask(__a, __b); } __mmask64 test_mm512_mask_cmple_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmple_epi8_mask - // CHECK: @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 2, i64 {{.*}}) + // CHECK: icmp sle <64 x i8> %{{.*}}, %{{.*}} + // CHECK: and <64 x i1> %{{.*}}, %{{.*}} return (__mmask64)_mm512_mask_cmple_epi8_mask(__u, __a, __b); } __mmask64 test_mm512_cmple_epu8_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmple_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 2, i64 -1) + // CHECK: icmp ule <64 x i8> %{{.*}}, %{{.*}} return (__mmask64)_mm512_cmple_epu8_mask(__a, __b); } __mmask64 test_mm512_mask_cmple_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmple_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 2, i64 {{.*}}) + // CHECK: icmp ule <64 x i8> %{{.*}}, %{{.*}} + // CHECK: and <64 x i1> %{{.*}}, %{{.*}} return (__mmask64)_mm512_mask_cmple_epu8_mask(__u, __a, __b); } __mmask32 test_mm512_cmple_epi16_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmple_epi16_mask - // CHECK: @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 2, i32 -1) + // CHECK: icmp sle <32 x i16> %{{.*}}, %{{.*}} return (__mmask32)_mm512_cmple_epi16_mask(__a, __b); } __mmask32 test_mm512_mask_cmple_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmple_epi16_mask - // CHECK: @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 2, i32 {{.*}}) + // CHECK: icmp sle <32 x i16> %{{.*}}, %{{.*}} + // CHECK: and <32 x i1> %{{.*}}, %{{.*}} return (__mmask32)_mm512_mask_cmple_epi16_mask(__u, __a, __b); } __mmask32 test_mm512_cmple_epu16_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmple_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 2, i32 -1) + // CHECK: icmp ule <32 x i16> %{{.*}}, %{{.*}} return (__mmask32)_mm512_cmple_epu16_mask(__a, __b); } __mmask32 test_mm512_mask_cmple_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmple_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 2, i32 {{.*}}) + // CHECK: icmp ule <32 x i16> %{{.*}}, %{{.*}} + // CHECK: and <32 x i1> %{{.*}}, %{{.*}} return (__mmask32)_mm512_mask_cmple_epu16_mask(__u, __a, __b); } __mmask64 test_mm512_cmplt_epi8_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmplt_epi8_mask - // CHECK: @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 1, i64 -1) + // CHECK: icmp slt <64 x i8> %{{.*}}, %{{.*}} return (__mmask64)_mm512_cmplt_epi8_mask(__a, __b); } __mmask64 test_mm512_mask_cmplt_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmplt_epi8_mask - // CHECK: @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 1, i64 {{.*}}) + // CHECK: icmp slt <64 x i8> %{{.*}}, %{{.*}} + // CHECK: and <64 x i1> %{{.*}}, %{{.*}} return (__mmask64)_mm512_mask_cmplt_epi8_mask(__u, __a, __b); } __mmask64 test_mm512_cmplt_epu8_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmplt_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 1, i64 -1) + // CHECK: icmp ult <64 x i8> %{{.*}}, %{{.*}} return (__mmask64)_mm512_cmplt_epu8_mask(__a, __b); } __mmask64 test_mm512_mask_cmplt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmplt_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 1, i64 {{.*}}) + // CHECK: icmp ult <64 x i8> %{{.*}}, %{{.*}} + // CHECK: and <64 x i1> %{{.*}}, %{{.*}} return (__mmask64)_mm512_mask_cmplt_epu8_mask(__u, __a, __b); } __mmask32 test_mm512_cmplt_epi16_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmplt_epi16_mask - // CHECK: @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 1, i32 -1) + // CHECK: icmp slt <32 x i16> %{{.*}}, %{{.*}} return (__mmask32)_mm512_cmplt_epi16_mask(__a, __b); } __mmask32 test_mm512_mask_cmplt_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmplt_epi16_mask - // CHECK: @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 1, i32 {{.*}}) + // CHECK: icmp slt <32 x i16> %{{.*}}, %{{.*}} + // CHECK: and <32 x i1> %{{.*}}, %{{.*}} return (__mmask32)_mm512_mask_cmplt_epi16_mask(__u, __a, __b); } __mmask32 test_mm512_cmplt_epu16_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmplt_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 1, i32 -1) + // CHECK: icmp ult <32 x i16> %{{.*}}, %{{.*}} return (__mmask32)_mm512_cmplt_epu16_mask(__a, __b); } __mmask32 test_mm512_mask_cmplt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmplt_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 1, i32 {{.*}}) + // CHECK: icmp ult <32 x i16> %{{.*}}, %{{.*}} + // CHECK: and <32 x i1> %{{.*}}, %{{.*}} return (__mmask32)_mm512_mask_cmplt_epu16_mask(__u, __a, __b); } __mmask64 test_mm512_cmpneq_epi8_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmpneq_epi8_mask - // CHECK: @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 4, i64 -1) + // CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}} return (__mmask64)_mm512_cmpneq_epi8_mask(__a, __b); } __mmask64 test_mm512_mask_cmpneq_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmpneq_epi8_mask - // CHECK: @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 4, i64 {{.*}}) + // CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}} + // CHECK: and <64 x i1> %{{.*}}, %{{.*}} return (__mmask64)_mm512_mask_cmpneq_epi8_mask(__u, __a, __b); } __mmask64 test_mm512_cmpneq_epu8_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmpneq_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 4, i64 -1) + // CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}} return (__mmask64)_mm512_cmpneq_epu8_mask(__a, __b); } __mmask64 test_mm512_mask_cmpneq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmpneq_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 4, i64 {{.*}}) + // CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}} + // CHECK: and <64 x i1> %{{.*}}, %{{.*}} return (__mmask64)_mm512_mask_cmpneq_epu8_mask(__u, __a, __b); } __mmask32 test_mm512_cmpneq_epi16_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmpneq_epi16_mask - // CHECK: @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 4, i32 -1) + // CHECK: icmp ne <32 x i16> %{{.*}}, %{{.*}} return (__mmask32)_mm512_cmpneq_epi16_mask(__a, __b); } __mmask32 test_mm512_mask_cmpneq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmpneq_epi16_mask - // CHECK: @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 4, i32 {{.*}}) + // CHECK: icmp ne <32 x i16> %{{.*}}, %{{.*}} + // CHECK: and <32 x i1> %{{.*}}, %{{.*}} return (__mmask32)_mm512_mask_cmpneq_epi16_mask(__u, __a, __b); } __mmask32 test_mm512_cmpneq_epu16_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmpneq_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 4, i32 -1) + // CHECK: icmp ne <32 x i16> %{{.*}}, %{{.*}} return (__mmask32)_mm512_cmpneq_epu16_mask(__a, __b); } __mmask32 test_mm512_mask_cmpneq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmpneq_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 4, i32 {{.*}}) + // CHECK: icmp ne <32 x i16> %{{.*}}, %{{.*}} + // CHECK: and <32 x i1> %{{.*}}, %{{.*}} return (__mmask32)_mm512_mask_cmpneq_epu16_mask(__u, __a, __b); } __mmask64 test_mm512_cmp_epi8_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmp_epi8_mask - // CHECK: @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 7, i64 -1) - return (__mmask64)_mm512_cmp_epi8_mask(__a, __b, 7); + // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}} + return (__mmask64)_mm512_cmp_epi8_mask(__a, __b, 0); } __mmask64 test_mm512_mask_cmp_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmp_epi8_mask - // CHECK: @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 7, i64 {{.*}}) - return (__mmask64)_mm512_mask_cmp_epi8_mask(__u, __a, __b, 7); + // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}} + // CHECK: and <64 x i1> %{{.*}}, %{{.*}} + return (__mmask64)_mm512_mask_cmp_epi8_mask(__u, __a, __b, 0); } __mmask64 test_mm512_cmp_epu8_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmp_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 7, i64 -1) - return (__mmask64)_mm512_cmp_epu8_mask(__a, __b, 7); + // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}} + return (__mmask64)_mm512_cmp_epu8_mask(__a, __b, 0); } __mmask64 test_mm512_mask_cmp_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmp_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 7, i64 {{.*}}) - return (__mmask64)_mm512_mask_cmp_epu8_mask(__u, __a, __b, 7); + // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}} + // CHECK: and <64 x i1> %{{.*}}, %{{.*}} + return (__mmask64)_mm512_mask_cmp_epu8_mask(__u, __a, __b, 0); } __mmask32 test_mm512_cmp_epi16_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmp_epi16_mask - // CHECK: @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 7, i32 -1) - return (__mmask32)_mm512_cmp_epi16_mask(__a, __b, 7); + // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}} + return (__mmask32)_mm512_cmp_epi16_mask(__a, __b, 0); } __mmask32 test_mm512_mask_cmp_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmp_epi16_mask - // CHECK: @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 7, i32 {{.*}}) - return (__mmask32)_mm512_mask_cmp_epi16_mask(__u, __a, __b, 7); + // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}} + // CHECK: and <32 x i1> %{{.*}}, %{{.*}} + return (__mmask32)_mm512_mask_cmp_epi16_mask(__u, __a, __b, 0); } __mmask32 test_mm512_cmp_epu16_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmp_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 7, i32 -1) - return (__mmask32)_mm512_cmp_epu16_mask(__a, __b, 7); + // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}} + return (__mmask32)_mm512_cmp_epu16_mask(__a, __b, 0); } __mmask32 test_mm512_mask_cmp_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmp_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 7, i32 {{.*}}) - return (__mmask32)_mm512_mask_cmp_epu16_mask(__u, __a, __b, 7); + // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}} + // CHECK: and <32 x i1> %{{.*}}, %{{.*}} + return (__mmask32)_mm512_mask_cmp_epu16_mask(__u, __a, __b, 0); } __m512i test_mm512_add_epi8 (__m512i __A, __m512i __B) { Modified: cfe/trunk/test/CodeGen/avx512f-builtins.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/avx512f-builtins.c?rev=273378&r1=273377&r2=273378&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/avx512f-builtins.c (original) +++ cfe/trunk/test/CodeGen/avx512f-builtins.c Tue Jun 21 23:47:58 2016 @@ -1098,290 +1098,314 @@ __m128 test_mm512_maskz_extractf32x4_ps( __mmask16 test_mm512_cmpeq_epu32_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmpeq_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i32 0, i16 -1) + // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}} return (__mmask16)_mm512_cmpeq_epu32_mask(__a, __b); } __mmask16 test_mm512_mask_cmpeq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmpeq_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i32 0, i16 {{.*}}) + // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} return (__mmask16)_mm512_mask_cmpeq_epu32_mask(__u, __a, __b); } __mmask8 test_mm512_cmpeq_epu64_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmpeq_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i32 0, i8 -1) + // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}} return (__mmask8)_mm512_cmpeq_epu64_mask(__a, __b); } __mmask8 test_mm512_mask_cmpeq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmpeq_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i32 0, i8 {{.*}}) + // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm512_mask_cmpeq_epu64_mask(__u, __a, __b); } __mmask16 test_mm512_cmpge_epi32_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmpge_epi32_mask - // CHECK: @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i32 5, i16 -1) + // CHECK: icmp sge <16 x i32> %{{.*}}, %{{.*}} return (__mmask16)_mm512_cmpge_epi32_mask(__a, __b); } __mmask16 test_mm512_mask_cmpge_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmpge_epi32_mask - // CHECK: @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i32 5, i16 {{.*}}) + // CHECK: icmp sge <16 x i32> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} return (__mmask16)_mm512_mask_cmpge_epi32_mask(__u, __a, __b); } __mmask8 test_mm512_cmpge_epi64_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmpge_epi64_mask - // CHECK: @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i32 5, i8 -1) + // CHECK: icmp sge <8 x i64> %{{.*}}, %{{.*}} return (__mmask8)_mm512_cmpge_epi64_mask(__a, __b); } __mmask8 test_mm512_mask_cmpge_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmpge_epi64_mask - // CHECK: @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i32 5, i8 {{.*}}) + // CHECK: icmp sge <8 x i64> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm512_mask_cmpge_epi64_mask(__u, __a, __b); } __mmask16 test_mm512_cmpge_epu32_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmpge_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i32 5, i16 -1) + // CHECK: icmp uge <16 x i32> %{{.*}}, %{{.*}} return (__mmask16)_mm512_cmpge_epu32_mask(__a, __b); } __mmask16 test_mm512_mask_cmpge_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmpge_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i32 5, i16 {{.*}}) + // CHECK: icmp uge <16 x i32> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} return (__mmask16)_mm512_mask_cmpge_epu32_mask(__u, __a, __b); } __mmask8 test_mm512_cmpge_epu64_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmpge_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i32 5, i8 -1) + // CHECK: icmp uge <8 x i64> %{{.*}}, %{{.*}} return (__mmask8)_mm512_cmpge_epu64_mask(__a, __b); } __mmask8 test_mm512_mask_cmpge_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmpge_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i32 5, i8 {{.*}}) + // CHECK: icmp uge <8 x i64> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm512_mask_cmpge_epu64_mask(__u, __a, __b); } __mmask16 test_mm512_cmpgt_epu32_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmpgt_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i32 6, i16 -1) + // CHECK: icmp ugt <16 x i32> %{{.*}}, %{{.*}} return (__mmask16)_mm512_cmpgt_epu32_mask(__a, __b); } __mmask16 test_mm512_mask_cmpgt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmpgt_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i32 6, i16 {{.*}}) + // CHECK: icmp ugt <16 x i32> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} return (__mmask16)_mm512_mask_cmpgt_epu32_mask(__u, __a, __b); } __mmask8 test_mm512_cmpgt_epu64_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmpgt_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i32 6, i8 -1) + // CHECK: icmp ugt <8 x i64> %{{.*}}, %{{.*}} return (__mmask8)_mm512_cmpgt_epu64_mask(__a, __b); } __mmask8 test_mm512_mask_cmpgt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmpgt_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i32 6, i8 {{.*}}) + // CHECK: icmp ugt <8 x i64> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm512_mask_cmpgt_epu64_mask(__u, __a, __b); } __mmask16 test_mm512_cmple_epi32_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmple_epi32_mask - // CHECK: @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i32 2, i16 -1) + // CHECK: icmp sle <16 x i32> %{{.*}}, %{{.*}} return (__mmask16)_mm512_cmple_epi32_mask(__a, __b); } __mmask16 test_mm512_mask_cmple_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmple_epi32_mask - // CHECK: @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i32 2, i16 {{.*}}) + // CHECK: icmp sle <16 x i32> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} return (__mmask16)_mm512_mask_cmple_epi32_mask(__u, __a, __b); } __mmask8 test_mm512_cmple_epi64_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmple_epi64_mask - // CHECK: @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i32 2, i8 -1) + // CHECK: icmp sle <8 x i64> %{{.*}}, %{{.*}} return (__mmask8)_mm512_cmple_epi64_mask(__a, __b); } __mmask8 test_mm512_mask_cmple_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmple_epi64_mask - // CHECK: @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i32 2, i8 {{.*}}) + // CHECK: icmp sle <8 x i64> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm512_mask_cmple_epi64_mask(__u, __a, __b); } __mmask16 test_mm512_cmple_epu32_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmple_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i32 2, i16 -1) + // CHECK: icmp ule <16 x i32> %{{.*}}, %{{.*}} return (__mmask16)_mm512_cmple_epu32_mask(__a, __b); } __mmask16 test_mm512_mask_cmple_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmple_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i32 2, i16 {{.*}}) + // CHECK: icmp ule <16 x i32> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} return (__mmask16)_mm512_mask_cmple_epu32_mask(__u, __a, __b); } __mmask8 test_mm512_cmple_epu64_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmple_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i32 2, i8 -1) + // CHECK: icmp ule <8 x i64> %{{.*}}, %{{.*}} return (__mmask8)_mm512_cmple_epu64_mask(__a, __b); } __mmask8 test_mm512_mask_cmple_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmple_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i32 2, i8 {{.*}}) + // CHECK: icmp ule <8 x i64> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm512_mask_cmple_epu64_mask(__u, __a, __b); } __mmask16 test_mm512_cmplt_epi32_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmplt_epi32_mask - // CHECK: @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i32 1, i16 -1) + // CHECK: icmp slt <16 x i32> %{{.*}}, %{{.*}} return (__mmask16)_mm512_cmplt_epi32_mask(__a, __b); } __mmask16 test_mm512_mask_cmplt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmplt_epi32_mask - // CHECK: @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i32 1, i16 {{.*}}) + // CHECK: icmp slt <16 x i32> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} return (__mmask16)_mm512_mask_cmplt_epi32_mask(__u, __a, __b); } __mmask8 test_mm512_cmplt_epi64_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmplt_epi64_mask - // CHECK: @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i32 1, i8 -1) + // CHECK: icmp slt <8 x i64> %{{.*}}, %{{.*}} return (__mmask8)_mm512_cmplt_epi64_mask(__a, __b); } __mmask8 test_mm512_mask_cmplt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmplt_epi64_mask - // CHECK: @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i32 1, i8 {{.*}}) + // CHECK: icmp slt <8 x i64> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm512_mask_cmplt_epi64_mask(__u, __a, __b); } __mmask16 test_mm512_cmplt_epu32_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmplt_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i32 1, i16 -1) + // CHECK: icmp ult <16 x i32> %{{.*}}, %{{.*}} return (__mmask16)_mm512_cmplt_epu32_mask(__a, __b); } __mmask16 test_mm512_mask_cmplt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmplt_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i32 1, i16 {{.*}}) + // CHECK: icmp ult <16 x i32> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} return (__mmask16)_mm512_mask_cmplt_epu32_mask(__u, __a, __b); } __mmask8 test_mm512_cmplt_epu64_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmplt_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i32 1, i8 -1) + // CHECK: icmp ult <8 x i64> %{{.*}}, %{{.*}} return (__mmask8)_mm512_cmplt_epu64_mask(__a, __b); } __mmask8 test_mm512_mask_cmplt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmplt_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i32 1, i8 {{.*}}) + // CHECK: icmp ult <8 x i64> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm512_mask_cmplt_epu64_mask(__u, __a, __b); } __mmask16 test_mm512_cmpneq_epi32_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmpneq_epi32_mask - // CHECK: @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i32 4, i16 -1) + // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}} return (__mmask16)_mm512_cmpneq_epi32_mask(__a, __b); } __mmask16 test_mm512_mask_cmpneq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmpneq_epi32_mask - // CHECK: @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i32 4, i16 {{.*}}) + // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} return (__mmask16)_mm512_mask_cmpneq_epi32_mask(__u, __a, __b); } __mmask8 test_mm512_cmpneq_epi64_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmpneq_epi64_mask - // CHECK: @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i32 4, i8 -1) + // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}} return (__mmask8)_mm512_cmpneq_epi64_mask(__a, __b); } __mmask8 test_mm512_mask_cmpneq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmpneq_epi64_mask - // CHECK: @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i32 4, i8 {{.*}}) + // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm512_mask_cmpneq_epi64_mask(__u, __a, __b); } __mmask16 test_mm512_cmpneq_epu32_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmpneq_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i32 4, i16 -1) + // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}} return (__mmask16)_mm512_cmpneq_epu32_mask(__a, __b); } __mmask16 test_mm512_mask_cmpneq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmpneq_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i32 4, i16 {{.*}}) + // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} return (__mmask16)_mm512_mask_cmpneq_epu32_mask(__u, __a, __b); } __mmask8 test_mm512_cmpneq_epu64_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmpneq_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i32 4, i8 -1) + // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}} return (__mmask8)_mm512_cmpneq_epu64_mask(__a, __b); } __mmask8 test_mm512_mask_cmpneq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmpneq_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i32 4, i8 {{.*}}) + // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm512_mask_cmpneq_epu64_mask(__u, __a, __b); } __mmask16 test_mm512_cmp_epi32_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmp_epi32_mask - // CHECK: @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i32 3, i16 -1) - return (__mmask16)_mm512_cmp_epi32_mask(__a, __b, 3); + // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}} + return (__mmask16)_mm512_cmp_epi32_mask(__a, __b, 0); } __mmask16 test_mm512_mask_cmp_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmp_epi32_mask - // CHECK: @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i32 3, i16 {{.*}}) - return (__mmask16)_mm512_mask_cmp_epi32_mask(__u, __a, __b, 3); + // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} + return (__mmask16)_mm512_mask_cmp_epi32_mask(__u, __a, __b, 0); } __mmask8 test_mm512_cmp_epi64_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmp_epi64_mask - // CHECK: @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i32 3, i8 -1) - return (__mmask8)_mm512_cmp_epi64_mask(__a, __b, 3); + // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}} + return (__mmask8)_mm512_cmp_epi64_mask(__a, __b, 0); } __mmask8 test_mm512_mask_cmp_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmp_epi64_mask - // CHECK: @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i32 3, i8 {{.*}}) - return (__mmask8)_mm512_mask_cmp_epi64_mask(__u, __a, __b, 3); + // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm512_mask_cmp_epi64_mask(__u, __a, __b, 0); } __mmask16 test_mm512_cmp_epu32_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmp_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i32 3, i16 -1) - return (__mmask16)_mm512_cmp_epu32_mask(__a, __b, 3); + // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}} + return (__mmask16)_mm512_cmp_epu32_mask(__a, __b, 0); } __mmask16 test_mm512_mask_cmp_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmp_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i32 3, i16 {{.*}}) - return (__mmask16)_mm512_mask_cmp_epu32_mask(__u, __a, __b, 3); + // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} + return (__mmask16)_mm512_mask_cmp_epu32_mask(__u, __a, __b, 0); } __mmask8 test_mm512_cmp_epu64_mask(__m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_cmp_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i32 3, i8 -1) - return (__mmask8)_mm512_cmp_epu64_mask(__a, __b, 3); + // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}} + return (__mmask8)_mm512_cmp_epu64_mask(__a, __b, 0); } __mmask8 test_mm512_mask_cmp_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_mask_cmp_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i32 3, i8 {{.*}}) - return (__mmask8)_mm512_mask_cmp_epu64_mask(__u, __a, __b, 3); + // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm512_mask_cmp_epu64_mask(__u, __a, __b, 0); } __m512i test_mm512_mask_and_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) { Modified: cfe/trunk/test/CodeGen/avx512vl-builtins.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/avx512vl-builtins.c?rev=273378&r1=273377&r2=273378&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/avx512vl-builtins.c (original) +++ cfe/trunk/test/CodeGen/avx512vl-builtins.c Tue Jun 21 23:47:58 2016 @@ -7,554 +7,600 @@ __mmask8 test_mm_cmpeq_epu32_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmpeq_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.128(<4 x i32> {{.*}}, <4 x i32> {{.*}}, i32 0, i8 -1) + // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}} return (__mmask8)_mm_cmpeq_epu32_mask(__a, __b); } __mmask8 test_mm_mask_cmpeq_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmpeq_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.128(<4 x i32> {{.*}}, <4 x i32> {{.*}}, i32 0, i8 {{.*}}) + // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm_mask_cmpeq_epu32_mask(__u, __a, __b); } __mmask8 test_mm_cmpeq_epu64_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmpeq_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.128(<2 x i64> {{.*}}, <2 x i64> {{.*}}, i32 0, i8 -1) + // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}} return (__mmask8)_mm_cmpeq_epu64_mask(__a, __b); } __mmask8 test_mm_mask_cmpeq_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmpeq_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.128(<2 x i64> {{.*}}, <2 x i64> {{.*}}, i32 0, i8 {{.*}}) + // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}} + // CHECK: and <2 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm_mask_cmpeq_epu64_mask(__u, __a, __b); } __mmask8 test_mm_cmpge_epi32_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmpge_epi32_mask - // CHECK: @llvm.x86.avx512.mask.cmp.d.128(<4 x i32> {{.*}}, <4 x i32> {{.*}}, i32 5, i8 -1) + // CHECK: icmp sge <4 x i32> %{{.*}}, %{{.*}} return (__mmask8)_mm_cmpge_epi32_mask(__a, __b); } __mmask8 test_mm_mask_cmpge_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmpge_epi32_mask - // CHECK: @llvm.x86.avx512.mask.cmp.d.128(<4 x i32> {{.*}}, <4 x i32> {{.*}}, i32 5, i8 {{.*}}) + // CHECK: icmp sge <4 x i32> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm_mask_cmpge_epi32_mask(__u, __a, __b); } __mmask8 test_mm_cmpge_epi64_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmpge_epi64_mask - // CHECK: @llvm.x86.avx512.mask.cmp.q.128(<2 x i64> {{.*}}, <2 x i64> {{.*}}, i32 5, i8 -1) + // CHECK: icmp sge <2 x i64> %{{.*}}, %{{.*}} return (__mmask8)_mm_cmpge_epi64_mask(__a, __b); } __mmask8 test_mm_mask_cmpge_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmpge_epi64_mask - // CHECK: @llvm.x86.avx512.mask.cmp.q.128(<2 x i64> {{.*}}, <2 x i64> {{.*}}, i32 5, i8 {{.*}}) + // CHECK: icmp sge <2 x i64> %{{.*}}, %{{.*}} + // CHECK: and <2 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm_mask_cmpge_epi64_mask(__u, __a, __b); } __mmask8 test_mm256_cmpge_epi32_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmpge_epi32_mask - // CHECK: @llvm.x86.avx512.mask.cmp.d.256(<8 x i32> {{.*}}, <8 x i32> {{.*}}, i32 5, i8 -1) + // CHECK: icmp sge <8 x i32> %{{.*}}, %{{.*}} return (__mmask8)_mm256_cmpge_epi32_mask(__a, __b); } __mmask8 test_mm256_mask_cmpge_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmpge_epi32_mask - // CHECK: @llvm.x86.avx512.mask.cmp.d.256(<8 x i32> {{.*}}, <8 x i32> {{.*}}, i32 5, i8 {{.*}}) + // CHECK: icmp sge <8 x i32> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm256_mask_cmpge_epi32_mask(__u, __a, __b); } __mmask8 test_mm256_cmpge_epi64_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmpge_epi64_mask - // CHECK: @llvm.x86.avx512.mask.cmp.q.256(<4 x i64> {{.*}}, <4 x i64> {{.*}}, i32 5, i8 -1) + // CHECK: icmp sge <4 x i64> %{{.*}}, %{{.*}} return (__mmask8)_mm256_cmpge_epi64_mask(__a, __b); } __mmask8 test_mm256_mask_cmpge_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmpge_epi64_mask - // CHECK: @llvm.x86.avx512.mask.cmp.q.256(<4 x i64> {{.*}}, <4 x i64> {{.*}}, i32 5, i8 {{.*}}) + // CHECK: icmp sge <4 x i64> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm256_mask_cmpge_epi64_mask(__u, __a, __b); } __mmask8 test_mm_cmpge_epu32_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmpge_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.128(<4 x i32> {{.*}}, <4 x i32> {{.*}}, i32 5, i8 -1) + // CHECK: icmp uge <4 x i32> %{{.*}}, %{{.*}} return (__mmask8)_mm_cmpge_epu32_mask(__a, __b); } __mmask8 test_mm_mask_cmpge_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmpge_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.128(<4 x i32> {{.*}}, <4 x i32> {{.*}}, i32 5, i8 {{.*}}) + // CHECK: icmp uge <4 x i32> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm_mask_cmpge_epu32_mask(__u, __a, __b); } __mmask8 test_mm_cmpge_epu64_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmpge_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.128(<2 x i64> {{.*}}, <2 x i64> {{.*}}, i32 5, i8 -1) + // CHECK: icmp uge <2 x i64> %{{.*}}, %{{.*}} return (__mmask8)_mm_cmpge_epu64_mask(__a, __b); } __mmask8 test_mm_mask_cmpge_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmpge_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.128(<2 x i64> {{.*}}, <2 x i64> {{.*}}, i32 5, i8 {{.*}}) + // CHECK: icmp uge <2 x i64> %{{.*}}, %{{.*}} + // CHECK: and <2 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm_mask_cmpge_epu64_mask(__u, __a, __b); } __mmask8 test_mm256_cmpge_epu32_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmpge_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.256(<8 x i32> {{.*}}, <8 x i32> {{.*}}, i32 5, i8 -1) + // CHECK: icmp uge <8 x i32> %{{.*}}, %{{.*}} return (__mmask8)_mm256_cmpge_epu32_mask(__a, __b); } __mmask8 test_mm256_mask_cmpge_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmpge_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.256(<8 x i32> {{.*}}, <8 x i32> {{.*}}, i32 5, i8 {{.*}}) + // CHECK: icmp uge <8 x i32> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm256_mask_cmpge_epu32_mask(__u, __a, __b); } __mmask8 test_mm256_cmpge_epu64_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmpge_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.256(<4 x i64> {{.*}}, <4 x i64> {{.*}}, i32 5, i8 -1) + // CHECK: icmp uge <4 x i64> %{{.*}}, %{{.*}} return (__mmask8)_mm256_cmpge_epu64_mask(__a, __b); } __mmask8 test_mm256_mask_cmpge_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmpge_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.256(<4 x i64> {{.*}}, <4 x i64> {{.*}}, i32 5, i8 {{.*}}) + // CHECK: icmp uge <4 x i64> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm256_mask_cmpge_epu64_mask(__u, __a, __b); } __mmask8 test_mm_cmpgt_epu32_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmpgt_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.128(<4 x i32> {{.*}}, <4 x i32> {{.*}}, i32 6, i8 -1) + // CHECK: icmp ugt <4 x i32> %{{.*}}, %{{.*}} return (__mmask8)_mm_cmpgt_epu32_mask(__a, __b); } __mmask8 test_mm_mask_cmpgt_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmpgt_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.128(<4 x i32> {{.*}}, <4 x i32> {{.*}}, i32 6, i8 {{.*}}) + // CHECK: icmp ugt <4 x i32> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm_mask_cmpgt_epu32_mask(__u, __a, __b); } __mmask8 test_mm_cmpgt_epu64_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmpgt_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.128(<2 x i64> {{.*}}, <2 x i64> {{.*}}, i32 6, i8 -1) + // CHECK: icmp ugt <2 x i64> %{{.*}}, %{{.*}} return (__mmask8)_mm_cmpgt_epu64_mask(__a, __b); } __mmask8 test_mm_mask_cmpgt_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmpgt_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.128(<2 x i64> {{.*}}, <2 x i64> {{.*}}, i32 6, i8 {{.*}}) + // CHECK: icmp ugt <2 x i64> %{{.*}}, %{{.*}} + // CHECK: and <2 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm_mask_cmpgt_epu64_mask(__u, __a, __b); } __mmask8 test_mm256_cmpgt_epu32_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmpgt_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.256(<8 x i32> {{.*}}, <8 x i32> {{.*}}, i32 6, i8 -1) + // CHECK: icmp ugt <8 x i32> %{{.*}}, %{{.*}} return (__mmask8)_mm256_cmpgt_epu32_mask(__a, __b); } __mmask8 test_mm256_mask_cmpgt_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmpgt_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.256(<8 x i32> {{.*}}, <8 x i32> {{.*}}, i32 6, i8 {{.*}}) + // CHECK: icmp ugt <8 x i32> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm256_mask_cmpgt_epu32_mask(__u, __a, __b); } __mmask8 test_mm256_cmpgt_epu64_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmpgt_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.256(<4 x i64> {{.*}}, <4 x i64> {{.*}}, i32 6, i8 -1) + // CHECK: icmp ugt <4 x i64> %{{.*}}, %{{.*}} return (__mmask8)_mm256_cmpgt_epu64_mask(__a, __b); } __mmask8 test_mm256_mask_cmpgt_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmpgt_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.256(<4 x i64> {{.*}}, <4 x i64> {{.*}}, i32 6, i8 {{.*}}) + // CHECK: icmp ugt <4 x i64> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm256_mask_cmpgt_epu64_mask(__u, __a, __b); } __mmask8 test_mm_cmple_epi32_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmple_epi32_mask - // CHECK: @llvm.x86.avx512.mask.cmp.d.128(<4 x i32> {{.*}}, <4 x i32> {{.*}}, i32 2, i8 -1) + // CHECK: icmp sle <4 x i32> %{{.*}}, %{{.*}} return (__mmask8)_mm_cmple_epi32_mask(__a, __b); } __mmask8 test_mm_mask_cmple_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmple_epi32_mask - // CHECK: @llvm.x86.avx512.mask.cmp.d.128(<4 x i32> {{.*}}, <4 x i32> {{.*}}, i32 2, i8 {{.*}}) + // CHECK: icmp sle <4 x i32> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm_mask_cmple_epi32_mask(__u, __a, __b); } __mmask8 test_mm_cmple_epi64_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmple_epi64_mask - // CHECK: @llvm.x86.avx512.mask.cmp.q.128(<2 x i64> {{.*}}, <2 x i64> {{.*}}, i32 2, i8 -1) + // CHECK: icmp sle <2 x i64> %{{.*}}, %{{.*}} return (__mmask8)_mm_cmple_epi64_mask(__a, __b); } __mmask8 test_mm_mask_cmple_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmple_epi64_mask - // CHECK: @llvm.x86.avx512.mask.cmp.q.128(<2 x i64> {{.*}}, <2 x i64> {{.*}}, i32 2, i8 {{.*}}) + // CHECK: icmp sle <2 x i64> %{{.*}}, %{{.*}} + // CHECK: and <2 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm_mask_cmple_epi64_mask(__u, __a, __b); } __mmask8 test_mm256_cmple_epi32_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmple_epi32_mask - // CHECK: @llvm.x86.avx512.mask.cmp.d.256(<8 x i32> {{.*}}, <8 x i32> {{.*}}, i32 2, i8 -1) + // CHECK: icmp sle <8 x i32> %{{.*}}, %{{.*}} return (__mmask8)_mm256_cmple_epi32_mask(__a, __b); } __mmask8 test_mm256_mask_cmple_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmple_epi32_mask - // CHECK: @llvm.x86.avx512.mask.cmp.d.256(<8 x i32> {{.*}}, <8 x i32> {{.*}}, i32 2, i8 {{.*}}) + // CHECK: icmp sle <8 x i32> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm256_mask_cmple_epi32_mask(__u, __a, __b); } __mmask8 test_mm256_cmple_epi64_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmple_epi64_mask - // CHECK: @llvm.x86.avx512.mask.cmp.q.256(<4 x i64> {{.*}}, <4 x i64> {{.*}}, i32 2, i8 -1) + // CHECK: icmp sle <4 x i64> %{{.*}}, %{{.*}} return (__mmask8)_mm256_cmple_epi64_mask(__a, __b); } __mmask8 test_mm256_mask_cmple_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmple_epi64_mask - // CHECK: @llvm.x86.avx512.mask.cmp.q.256(<4 x i64> {{.*}}, <4 x i64> {{.*}}, i32 2, i8 {{.*}}) + // CHECK: icmp sle <4 x i64> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm256_mask_cmple_epi64_mask(__u, __a, __b); } __mmask8 test_mm_cmple_epu32_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmple_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.128(<4 x i32> {{.*}}, <4 x i32> {{.*}}, i32 2, i8 -1) + // CHECK: icmp ule <4 x i32> %{{.*}}, %{{.*}} return (__mmask8)_mm_cmple_epu32_mask(__a, __b); } __mmask8 test_mm_mask_cmple_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmple_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.128(<4 x i32> {{.*}}, <4 x i32> {{.*}}, i32 2, i8 {{.*}}) + // CHECK: icmp ule <4 x i32> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm_mask_cmple_epu32_mask(__u, __a, __b); } __mmask8 test_mm_cmple_epu64_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmple_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.128(<2 x i64> {{.*}}, <2 x i64> {{.*}}, i32 2, i8 -1) + // CHECK: icmp ule <2 x i64> %{{.*}}, %{{.*}} return (__mmask8)_mm_cmple_epu64_mask(__a, __b); } __mmask8 test_mm_mask_cmple_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmple_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.128(<2 x i64> {{.*}}, <2 x i64> {{.*}}, i32 2, i8 {{.*}}) + // CHECK: icmp ule <2 x i64> %{{.*}}, %{{.*}} + // CHECK: and <2 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm_mask_cmple_epu64_mask(__u, __a, __b); } __mmask8 test_mm256_cmple_epu32_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmple_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.256(<8 x i32> {{.*}}, <8 x i32> {{.*}}, i32 2, i8 -1) + // CHECK: icmp ule <8 x i32> %{{.*}}, %{{.*}} return (__mmask8)_mm256_cmple_epu32_mask(__a, __b); } __mmask8 test_mm256_mask_cmple_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmple_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.256(<8 x i32> {{.*}}, <8 x i32> {{.*}}, i32 2, i8 {{.*}}) + // CHECK: icmp ule <8 x i32> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm256_mask_cmple_epu32_mask(__u, __a, __b); } __mmask8 test_mm256_cmple_epu64_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmple_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.256(<4 x i64> {{.*}}, <4 x i64> {{.*}}, i32 2, i8 -1) + // CHECK: icmp ule <4 x i64> %{{.*}}, %{{.*}} return (__mmask8)_mm256_cmple_epu64_mask(__a, __b); } __mmask8 test_mm256_mask_cmple_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmple_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.256(<4 x i64> {{.*}}, <4 x i64> {{.*}}, i32 2, i8 {{.*}}) + // CHECK: icmp ule <4 x i64> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm256_mask_cmple_epu64_mask(__u, __a, __b); } __mmask8 test_mm_cmplt_epi32_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmplt_epi32_mask - // CHECK: @llvm.x86.avx512.mask.cmp.d.128(<4 x i32> {{.*}}, <4 x i32> {{.*}}, i32 1, i8 -1) + // CHECK: icmp slt <4 x i32> %{{.*}}, %{{.*}} return (__mmask8)_mm_cmplt_epi32_mask(__a, __b); } __mmask8 test_mm_mask_cmplt_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmplt_epi32_mask - // CHECK: @llvm.x86.avx512.mask.cmp.d.128(<4 x i32> {{.*}}, <4 x i32> {{.*}}, i32 1, i8 {{.*}}) + // CHECK: icmp slt <4 x i32> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm_mask_cmplt_epi32_mask(__u, __a, __b); } __mmask8 test_mm_cmplt_epi64_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmplt_epi64_mask - // CHECK: @llvm.x86.avx512.mask.cmp.q.128(<2 x i64> {{.*}}, <2 x i64> {{.*}}, i32 1, i8 -1) + // CHECK: icmp slt <2 x i64> %{{.*}}, %{{.*}} return (__mmask8)_mm_cmplt_epi64_mask(__a, __b); } __mmask8 test_mm_mask_cmplt_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmplt_epi64_mask - // CHECK: @llvm.x86.avx512.mask.cmp.q.128(<2 x i64> {{.*}}, <2 x i64> {{.*}}, i32 1, i8 {{.*}}) + // CHECK: icmp slt <2 x i64> %{{.*}}, %{{.*}} + // CHECK: and <2 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm_mask_cmplt_epi64_mask(__u, __a, __b); } __mmask8 test_mm256_cmplt_epi32_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmplt_epi32_mask - // CHECK: @llvm.x86.avx512.mask.cmp.d.256(<8 x i32> {{.*}}, <8 x i32> {{.*}}, i32 1, i8 -1) + // CHECK: icmp slt <8 x i32> %{{.*}}, %{{.*}} return (__mmask8)_mm256_cmplt_epi32_mask(__a, __b); } __mmask8 test_mm256_mask_cmplt_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmplt_epi32_mask - // CHECK: @llvm.x86.avx512.mask.cmp.d.256(<8 x i32> {{.*}}, <8 x i32> {{.*}}, i32 1, i8 {{.*}}) + // CHECK: icmp slt <8 x i32> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm256_mask_cmplt_epi32_mask(__u, __a, __b); } __mmask8 test_mm256_cmplt_epi64_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmplt_epi64_mask - // CHECK: @llvm.x86.avx512.mask.cmp.q.256(<4 x i64> {{.*}}, <4 x i64> {{.*}}, i32 1, i8 -1) + // CHECK: icmp slt <4 x i64> %{{.*}}, %{{.*}} return (__mmask8)_mm256_cmplt_epi64_mask(__a, __b); } __mmask8 test_mm256_mask_cmplt_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmplt_epi64_mask - // CHECK: @llvm.x86.avx512.mask.cmp.q.256(<4 x i64> {{.*}}, <4 x i64> {{.*}}, i32 1, i8 {{.*}}) + // CHECK: icmp slt <4 x i64> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm256_mask_cmplt_epi64_mask(__u, __a, __b); } __mmask8 test_mm_cmplt_epu32_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmplt_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.128(<4 x i32> {{.*}}, <4 x i32> {{.*}}, i32 1, i8 -1) + // CHECK: icmp ult <4 x i32> %{{.*}}, %{{.*}} return (__mmask8)_mm_cmplt_epu32_mask(__a, __b); } __mmask8 test_mm_mask_cmplt_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmplt_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.128(<4 x i32> {{.*}}, <4 x i32> {{.*}}, i32 1, i8 {{.*}}) + // CHECK: icmp ult <4 x i32> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm_mask_cmplt_epu32_mask(__u, __a, __b); } __mmask8 test_mm_cmplt_epu64_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmplt_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.128(<2 x i64> {{.*}}, <2 x i64> {{.*}}, i32 1, i8 -1) + // CHECK: icmp ult <2 x i64> %{{.*}}, %{{.*}} return (__mmask8)_mm_cmplt_epu64_mask(__a, __b); } __mmask8 test_mm_mask_cmplt_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmplt_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.128(<2 x i64> {{.*}}, <2 x i64> {{.*}}, i32 1, i8 {{.*}}) + // CHECK: icmp ult <2 x i64> %{{.*}}, %{{.*}} + // CHECK: and <2 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm_mask_cmplt_epu64_mask(__u, __a, __b); } __mmask8 test_mm256_cmplt_epu32_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmplt_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.256(<8 x i32> {{.*}}, <8 x i32> {{.*}}, i32 1, i8 -1) + // CHECK: icmp ult <8 x i32> %{{.*}}, %{{.*}} return (__mmask8)_mm256_cmplt_epu32_mask(__a, __b); } __mmask8 test_mm256_mask_cmplt_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmplt_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.256(<8 x i32> {{.*}}, <8 x i32> {{.*}}, i32 1, i8 {{.*}}) + // CHECK: icmp ult <8 x i32> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm256_mask_cmplt_epu32_mask(__u, __a, __b); } __mmask8 test_mm256_cmplt_epu64_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmplt_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.256(<4 x i64> {{.*}}, <4 x i64> {{.*}}, i32 1, i8 -1) + // CHECK: icmp ult <4 x i64> %{{.*}}, %{{.*}} return (__mmask8)_mm256_cmplt_epu64_mask(__a, __b); } __mmask8 test_mm256_mask_cmplt_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmplt_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.256(<4 x i64> {{.*}}, <4 x i64> {{.*}}, i32 1, i8 {{.*}}) + // CHECK: icmp ult <4 x i64> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm256_mask_cmplt_epu64_mask(__u, __a, __b); } __mmask8 test_mm_cmpneq_epi32_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmpneq_epi32_mask - // CHECK: @llvm.x86.avx512.mask.cmp.d.128(<4 x i32> {{.*}}, <4 x i32> {{.*}}, i32 4, i8 -1) + // CHECK: icmp ne <4 x i32> %{{.*}}, %{{.*}} return (__mmask8)_mm_cmpneq_epi32_mask(__a, __b); } __mmask8 test_mm_mask_cmpneq_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmpneq_epi32_mask - // CHECK: @llvm.x86.avx512.mask.cmp.d.128(<4 x i32> {{.*}}, <4 x i32> {{.*}}, i32 4, i8 {{.*}}) + // CHECK: icmp ne <4 x i32> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm_mask_cmpneq_epi32_mask(__u, __a, __b); } __mmask8 test_mm_cmpneq_epi64_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmpneq_epi64_mask - // CHECK: @llvm.x86.avx512.mask.cmp.q.128(<2 x i64> {{.*}}, <2 x i64> {{.*}}, i32 4, i8 -1) + // CHECK: icmp ne <2 x i64> %{{.*}}, %{{.*}} return (__mmask8)_mm_cmpneq_epi64_mask(__a, __b); } __mmask8 test_mm_mask_cmpneq_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmpneq_epi64_mask - // CHECK: @llvm.x86.avx512.mask.cmp.q.128(<2 x i64> {{.*}}, <2 x i64> {{.*}}, i32 4, i8 {{.*}}) + // CHECK: icmp ne <2 x i64> %{{.*}}, %{{.*}} + // CHECK: and <2 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm_mask_cmpneq_epi64_mask(__u, __a, __b); } __mmask8 test_mm256_cmpneq_epi32_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmpneq_epi32_mask - // CHECK: @llvm.x86.avx512.mask.cmp.d.256(<8 x i32> {{.*}}, <8 x i32> {{.*}}, i32 4, i8 -1) + // CHECK: icmp ne <8 x i32> %{{.*}}, %{{.*}} return (__mmask8)_mm256_cmpneq_epi32_mask(__a, __b); } __mmask8 test_mm256_mask_cmpneq_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmpneq_epi32_mask - // CHECK: @llvm.x86.avx512.mask.cmp.d.256(<8 x i32> {{.*}}, <8 x i32> {{.*}}, i32 4, i8 {{.*}}) + // CHECK: icmp ne <8 x i32> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm256_mask_cmpneq_epi32_mask(__u, __a, __b); } __mmask8 test_mm256_cmpneq_epi64_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmpneq_epi64_mask - // CHECK: @llvm.x86.avx512.mask.cmp.q.256(<4 x i64> {{.*}}, <4 x i64> {{.*}}, i32 4, i8 -1) + // CHECK: icmp ne <4 x i64> %{{.*}}, %{{.*}} return (__mmask8)_mm256_cmpneq_epi64_mask(__a, __b); } __mmask8 test_mm256_mask_cmpneq_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmpneq_epi64_mask - // CHECK: @llvm.x86.avx512.mask.cmp.q.256(<4 x i64> {{.*}}, <4 x i64> {{.*}}, i32 4, i8 {{.*}}) + // CHECK: icmp ne <4 x i64> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm256_mask_cmpneq_epi64_mask(__u, __a, __b); } __mmask8 test_mm_cmpneq_epu32_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmpneq_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.128(<4 x i32> {{.*}}, <4 x i32> {{.*}}, i32 4, i8 -1) + // CHECK: icmp ne <4 x i32> %{{.*}}, %{{.*}} return (__mmask8)_mm_cmpneq_epu32_mask(__a, __b); } __mmask8 test_mm_mask_cmpneq_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmpneq_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.128(<4 x i32> {{.*}}, <4 x i32> {{.*}}, i32 4, i8 {{.*}}) + // CHECK: icmp ne <4 x i32> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm_mask_cmpneq_epu32_mask(__u, __a, __b); } __mmask8 test_mm_cmpneq_epu64_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmpneq_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.128(<2 x i64> {{.*}}, <2 x i64> {{.*}}, i32 4, i8 -1) + // CHECK: icmp ne <2 x i64> %{{.*}}, %{{.*}} return (__mmask8)_mm_cmpneq_epu64_mask(__a, __b); } __mmask8 test_mm_mask_cmpneq_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmpneq_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.128(<2 x i64> {{.*}}, <2 x i64> {{.*}}, i32 4, i8 {{.*}}) + // CHECK: icmp ne <2 x i64> %{{.*}}, %{{.*}} + // CHECK: and <2 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm_mask_cmpneq_epu64_mask(__u, __a, __b); } __mmask8 test_mm256_cmpneq_epu32_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmpneq_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.256(<8 x i32> {{.*}}, <8 x i32> {{.*}}, i32 4, i8 -1) + // CHECK: icmp ne <8 x i32> %{{.*}}, %{{.*}} return (__mmask8)_mm256_cmpneq_epu32_mask(__a, __b); } __mmask8 test_mm256_mask_cmpneq_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmpneq_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.256(<8 x i32> {{.*}}, <8 x i32> {{.*}}, i32 4, i8 {{.*}}) + // CHECK: icmp ne <8 x i32> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm256_mask_cmpneq_epu32_mask(__u, __a, __b); } __mmask8 test_mm256_cmpneq_epu64_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmpneq_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.256(<4 x i64> {{.*}}, <4 x i64> {{.*}}, i32 4, i8 -1) + // CHECK: icmp ne <4 x i64> %{{.*}}, %{{.*}} return (__mmask8)_mm256_cmpneq_epu64_mask(__a, __b); } __mmask8 test_mm256_mask_cmpneq_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmpneq_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.256(<4 x i64> {{.*}}, <4 x i64> {{.*}}, i32 4, i8 {{.*}}) + // CHECK: icmp ne <4 x i64> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm256_mask_cmpneq_epu64_mask(__u, __a, __b); } __mmask8 test_mm_cmp_epi32_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmp_epi32_mask - // CHECK: @llvm.x86.avx512.mask.cmp.d.128(<4 x i32> {{.*}}, <4 x i32> {{.*}}, i32 7, i8 -1) - return (__mmask8)_mm_cmp_epi32_mask(__a, __b, 7); + // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}} + return (__mmask8)_mm_cmp_epi32_mask(__a, __b, 0); } __mmask8 test_mm_mask_cmp_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmp_epi32_mask - // CHECK: @llvm.x86.avx512.mask.cmp.d.128(<4 x i32> {{.*}}, <4 x i32> {{.*}}, i32 7, i8 {{.*}}) - return (__mmask8)_mm_mask_cmp_epi32_mask(__u, __a, __b, 7); + // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm_mask_cmp_epi32_mask(__u, __a, __b, 0); } __mmask8 test_mm_cmp_epi64_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmp_epi64_mask - // CHECK: @llvm.x86.avx512.mask.cmp.q.128(<2 x i64> {{.*}}, <2 x i64> {{.*}}, i32 7, i8 -1) - return (__mmask8)_mm_cmp_epi64_mask(__a, __b, 7); + // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}} + return (__mmask8)_mm_cmp_epi64_mask(__a, __b, 0); } __mmask8 test_mm_mask_cmp_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmp_epi64_mask - // CHECK: @llvm.x86.avx512.mask.cmp.q.128(<2 x i64> {{.*}}, <2 x i64> {{.*}}, i32 7, i8 {{.*}}) - return (__mmask8)_mm_mask_cmp_epi64_mask(__u, __a, __b, 7); + // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}} + // CHECK: and <2 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm_mask_cmp_epi64_mask(__u, __a, __b, 0); } __mmask8 test_mm256_cmp_epi32_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmp_epi32_mask - // CHECK: @llvm.x86.avx512.mask.cmp.d.256(<8 x i32> {{.*}}, <8 x i32> {{.*}}, i32 7, i8 -1) - return (__mmask8)_mm256_cmp_epi32_mask(__a, __b, 7); + // CHECK: icmp eq <8 x i32> %{{.*}}, %{{.*}} + return (__mmask8)_mm256_cmp_epi32_mask(__a, __b, 0); } __mmask8 test_mm256_mask_cmp_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmp_epi32_mask - // CHECK: @llvm.x86.avx512.mask.cmp.d.256(<8 x i32> {{.*}}, <8 x i32> {{.*}}, i32 7, i8 {{.*}}) - return (__mmask8)_mm256_mask_cmp_epi32_mask(__u, __a, __b, 7); + // CHECK: icmp eq <8 x i32> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm256_mask_cmp_epi32_mask(__u, __a, __b, 0); } __mmask8 test_mm256_cmp_epi64_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmp_epi64_mask - // CHECK: @llvm.x86.avx512.mask.cmp.q.256(<4 x i64> {{.*}}, <4 x i64> {{.*}}, i32 7, i8 -1) - return (__mmask8)_mm256_cmp_epi64_mask(__a, __b, 7); + // CHECK: icmp eq <4 x i64> %{{.*}}, %{{.*}} + return (__mmask8)_mm256_cmp_epi64_mask(__a, __b, 0); } __mmask8 test_mm256_mask_cmp_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmp_epi64_mask - // CHECK: @llvm.x86.avx512.mask.cmp.q.256(<4 x i64> {{.*}}, <4 x i64> {{.*}}, i32 7, i8 {{.*}}) - return (__mmask8)_mm256_mask_cmp_epi64_mask(__u, __a, __b, 7); + // CHECK: icmp eq <4 x i64> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm256_mask_cmp_epi64_mask(__u, __a, __b, 0); } __mmask8 test_mm_cmp_epu32_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmp_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.128(<4 x i32> {{.*}}, <4 x i32> {{.*}}, i32 7, i8 -1) - return (__mmask8)_mm_cmp_epu32_mask(__a, __b, 7); + // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}} + return (__mmask8)_mm_cmp_epu32_mask(__a, __b, 0); } __mmask8 test_mm_mask_cmp_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmp_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.128(<4 x i32> {{.*}}, <4 x i32> {{.*}}, i32 7, i8 {{.*}}) - return (__mmask8)_mm_mask_cmp_epu32_mask(__u, __a, __b, 7); + // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm_mask_cmp_epu32_mask(__u, __a, __b, 0); } __mmask8 test_mm_cmp_epu64_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmp_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.128(<2 x i64> {{.*}}, <2 x i64> {{.*}}, i32 7, i8 -1) - return (__mmask8)_mm_cmp_epu64_mask(__a, __b, 7); + // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}} + return (__mmask8)_mm_cmp_epu64_mask(__a, __b, 0); } __mmask8 test_mm_mask_cmp_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmp_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.128(<2 x i64> {{.*}}, <2 x i64> {{.*}}, i32 7, i8 {{.*}}) - return (__mmask8)_mm_mask_cmp_epu64_mask(__u, __a, __b, 7); + // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}} + // CHECK: and <2 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm_mask_cmp_epu64_mask(__u, __a, __b, 0); } __mmask8 test_mm256_cmp_epu32_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmp_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.256(<8 x i32> {{.*}}, <8 x i32> {{.*}}, i32 7, i8 -1) - return (__mmask8)_mm256_cmp_epu32_mask(__a, __b, 7); + // CHECK: icmp eq <8 x i32> %{{.*}}, %{{.*}} + return (__mmask8)_mm256_cmp_epu32_mask(__a, __b, 0); } __mmask8 test_mm256_mask_cmp_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmp_epu32_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.d.256(<8 x i32> {{.*}}, <8 x i32> {{.*}}, i32 7, i8 {{.*}}) - return (__mmask8)_mm256_mask_cmp_epu32_mask(__u, __a, __b, 7); + // CHECK: icmp eq <8 x i32> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm256_mask_cmp_epu32_mask(__u, __a, __b, 0); } __mmask8 test_mm256_cmp_epu64_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmp_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.256(<4 x i64> {{.*}}, <4 x i64> {{.*}}, i32 7, i8 -1) - return (__mmask8)_mm256_cmp_epu64_mask(__a, __b, 7); + // CHECK: icmp eq <4 x i64> %{{.*}}, %{{.*}} + return (__mmask8)_mm256_cmp_epu64_mask(__a, __b, 0); } __mmask8 test_mm256_mask_cmp_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmp_epu64_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.q.256(<4 x i64> {{.*}}, <4 x i64> {{.*}}, i32 7, i8 {{.*}}) - return (__mmask8)_mm256_mask_cmp_epu64_mask(__u, __a, __b, 7); + // CHECK: icmp eq <4 x i64> %{{.*}}, %{{.*}} + // CHECK: and <4 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm256_mask_cmp_epu64_mask(__u, __a, __b, 0); } __m256i test_mm256_mask_add_epi32 (__m256i __W, __mmask8 __U, __m256i __A, Modified: cfe/trunk/test/CodeGen/avx512vlbw-builtins.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/avx512vlbw-builtins.c?rev=273378&r1=273377&r2=273378&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/avx512vlbw-builtins.c (original) +++ cfe/trunk/test/CodeGen/avx512vlbw-builtins.c Tue Jun 21 23:47:58 2016 @@ -112,578 +112,626 @@ __mmask8 test_mm_mask_cmpgt_epi16_mask(_ __mmask16 test_mm_cmpeq_epu8_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmpeq_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.128(<16 x i8> {{.*}}, <16 x i8> {{.*}}, i32 0, i16 -1) + // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}} return (__mmask16)_mm_cmpeq_epu8_mask(__a, __b); } __mmask16 test_mm_mask_cmpeq_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmpeq_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.128(<16 x i8> {{.*}}, <16 x i8> {{.*}}, i32 0, i16 {{.*}}) + // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} return (__mmask16)_mm_mask_cmpeq_epu8_mask(__u, __a, __b); } __mmask8 test_mm_cmpeq_epu16_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmpeq_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.128(<8 x i16> {{.*}}, <8 x i16> {{.*}}, i32 0, i8 -1) + // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}} return (__mmask8)_mm_cmpeq_epu16_mask(__a, __b); } __mmask8 test_mm_mask_cmpeq_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmpeq_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.128(<8 x i16> {{.*}}, <8 x i16> {{.*}}, i32 0, i8 {{.*}}) + // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm_mask_cmpeq_epu16_mask(__u, __a, __b); } __mmask32 test_mm256_cmpeq_epu8_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmpeq_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.256(<32 x i8> {{.*}}, <32 x i8> {{.*}}, i32 0, i32 -1) + // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}} return (__mmask32)_mm256_cmpeq_epu8_mask(__a, __b); } __mmask32 test_mm256_mask_cmpeq_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmpeq_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.256(<32 x i8> {{.*}}, <32 x i8> {{.*}}, i32 0, i32 {{.*}}) + // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}} + // CHECK: and <32 x i1> %{{.*}}, %{{.*}} return (__mmask32)_mm256_mask_cmpeq_epu8_mask(__u, __a, __b); } __mmask16 test_mm256_cmpeq_epu16_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmpeq_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.256(<16 x i16> {{.*}}, <16 x i16> {{.*}}, i32 0, i16 -1) + // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}} return (__mmask16)_mm256_cmpeq_epu16_mask(__a, __b); } __mmask16 test_mm256_mask_cmpeq_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmpeq_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.256(<16 x i16> {{.*}}, <16 x i16> {{.*}}, i32 0, i16 {{.*}}) + // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} return (__mmask16)_mm256_mask_cmpeq_epu16_mask(__u, __a, __b); } __mmask16 test_mm_cmpgt_epu8_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmpgt_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.128(<16 x i8> {{.*}}, <16 x i8> {{.*}}, i32 6, i16 -1) + // CHECK: icmp ugt <16 x i8> %{{.*}}, %{{.*}} return (__mmask16)_mm_cmpgt_epu8_mask(__a, __b); } __mmask16 test_mm_mask_cmpgt_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmpgt_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.128(<16 x i8> {{.*}}, <16 x i8> {{.*}}, i32 6, i16 {{.*}}) + // CHECK: icmp ugt <16 x i8> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} return (__mmask16)_mm_mask_cmpgt_epu8_mask(__u, __a, __b); } __mmask8 test_mm_cmpgt_epu16_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmpgt_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.128(<8 x i16> {{.*}}, <8 x i16> {{.*}}, i32 6, i8 -1) + // CHECK: icmp ugt <8 x i16> %{{.*}}, %{{.*}} return (__mmask8)_mm_cmpgt_epu16_mask(__a, __b); } __mmask8 test_mm_mask_cmpgt_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmpgt_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.128(<8 x i16> {{.*}}, <8 x i16> {{.*}}, i32 6, i8 {{.*}}) + // CHECK: icmp ugt <8 x i16> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm_mask_cmpgt_epu16_mask(__u, __a, __b); } __mmask32 test_mm256_cmpgt_epu8_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmpgt_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.256(<32 x i8> {{.*}}, <32 x i8> {{.*}}, i32 6, i32 -1) + // CHECK: icmp ugt <32 x i8> %{{.*}}, %{{.*}} return (__mmask32)_mm256_cmpgt_epu8_mask(__a, __b); } __mmask32 test_mm256_mask_cmpgt_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmpgt_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.256(<32 x i8> {{.*}}, <32 x i8> {{.*}}, i32 6, i32 {{.*}}) + // CHECK: icmp ugt <32 x i8> %{{.*}}, %{{.*}} + // CHECK: and <32 x i1> %{{.*}}, %{{.*}} return (__mmask32)_mm256_mask_cmpgt_epu8_mask(__u, __a, __b); } __mmask16 test_mm256_cmpgt_epu16_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmpgt_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.256(<16 x i16> {{.*}}, <16 x i16> {{.*}}, i32 6, i16 -1) + // CHECK: icmp ugt <16 x i16> %{{.*}}, %{{.*}} return (__mmask16)_mm256_cmpgt_epu16_mask(__a, __b); } __mmask16 test_mm256_mask_cmpgt_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmpgt_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.256(<16 x i16> {{.*}}, <16 x i16> {{.*}}, i32 6, i16 {{.*}}) + // CHECK: icmp ugt <16 x i16> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} return (__mmask16)_mm256_mask_cmpgt_epu16_mask(__u, __a, __b); } __mmask16 test_mm_cmpge_epi8_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmpge_epi8_mask - // CHECK: @llvm.x86.avx512.mask.cmp.b.128(<16 x i8> {{.*}}, <16 x i8> {{.*}}, i32 5, i16 -1) + // CHECK: icmp sge <16 x i8> %{{.*}}, %{{.*}} return (__mmask16)_mm_cmpge_epi8_mask(__a, __b); } __mmask16 test_mm_mask_cmpge_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmpge_epi8_mask - // CHECK: @llvm.x86.avx512.mask.cmp.b.128(<16 x i8> {{.*}}, <16 x i8> {{.*}}, i32 5, i16 {{.*}}) + // CHECK: icmp sge <16 x i8> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} return (__mmask16)_mm_mask_cmpge_epi8_mask(__u, __a, __b); } __mmask16 test_mm_cmpge_epu8_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmpge_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.128(<16 x i8> {{.*}}, <16 x i8> {{.*}}, i32 5, i16 -1) + // CHECK: icmp uge <16 x i8> %{{.*}}, %{{.*}} return (__mmask16)_mm_cmpge_epu8_mask(__a, __b); } __mmask16 test_mm_mask_cmpge_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmpge_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.128(<16 x i8> {{.*}}, <16 x i8> {{.*}}, i32 5, i16 {{.*}}) + // CHECK: icmp uge <16 x i8> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} return (__mmask16)_mm_mask_cmpge_epu8_mask(__u, __a, __b); } __mmask8 test_mm_cmpge_epi16_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmpge_epi16_mask - // CHECK: @llvm.x86.avx512.mask.cmp.w.128(<8 x i16> {{.*}}, <8 x i16> {{.*}}, i32 5, i8 -1) + // CHECK: icmp sge <8 x i16> %{{.*}}, %{{.*}} return (__mmask8)_mm_cmpge_epi16_mask(__a, __b); } __mmask8 test_mm_mask_cmpge_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmpge_epi16_mask - // CHECK: @llvm.x86.avx512.mask.cmp.w.128(<8 x i16> {{.*}}, <8 x i16> {{.*}}, i32 5, i8 {{.*}}) + // CHECK: icmp sge <8 x i16> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm_mask_cmpge_epi16_mask(__u, __a, __b); } __mmask8 test_mm_cmpge_epu16_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmpge_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.128(<8 x i16> {{.*}}, <8 x i16> {{.*}}, i32 5, i8 -1) + // CHECK: icmp uge <8 x i16> %{{.*}}, %{{.*}} return (__mmask8)_mm_cmpge_epu16_mask(__a, __b); } __mmask8 test_mm_mask_cmpge_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmpge_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.128(<8 x i16> {{.*}}, <8 x i16> {{.*}}, i32 5, i8 {{.*}}) + // CHECK: icmp uge <8 x i16> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm_mask_cmpge_epu16_mask(__u, __a, __b); } __mmask32 test_mm256_cmpge_epi8_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmpge_epi8_mask - // CHECK: @llvm.x86.avx512.mask.cmp.b.256(<32 x i8> {{.*}}, <32 x i8> {{.*}}, i32 5, i32 -1) + // CHECK: icmp sge <32 x i8> %{{.*}}, %{{.*}} return (__mmask32)_mm256_cmpge_epi8_mask(__a, __b); } __mmask32 test_mm256_mask_cmpge_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmpge_epi8_mask - // CHECK: @llvm.x86.avx512.mask.cmp.b.256(<32 x i8> {{.*}}, <32 x i8> {{.*}}, i32 5, i32 {{.*}}) + // CHECK: icmp sge <32 x i8> %{{.*}}, %{{.*}} + // CHECK: and <32 x i1> %{{.*}}, %{{.*}} return (__mmask32)_mm256_mask_cmpge_epi8_mask(__u, __a, __b); } __mmask32 test_mm256_cmpge_epu8_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmpge_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.256(<32 x i8> {{.*}}, <32 x i8> {{.*}}, i32 5, i32 -1) + // CHECK: icmp uge <32 x i8> %{{.*}}, %{{.*}} return (__mmask32)_mm256_cmpge_epu8_mask(__a, __b); } __mmask32 test_mm256_mask_cmpge_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmpge_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.256(<32 x i8> {{.*}}, <32 x i8> {{.*}}, i32 5, i32 {{.*}}) + // CHECK: icmp uge <32 x i8> %{{.*}}, %{{.*}} + // CHECK: and <32 x i1> %{{.*}}, %{{.*}} return (__mmask32)_mm256_mask_cmpge_epu8_mask(__u, __a, __b); } __mmask16 test_mm256_cmpge_epi16_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmpge_epi16_mask - // CHECK: @llvm.x86.avx512.mask.cmp.w.256(<16 x i16> {{.*}}, <16 x i16> {{.*}}, i32 5, i16 -1) + // CHECK: icmp sge <16 x i16> %{{.*}}, %{{.*}} return (__mmask16)_mm256_cmpge_epi16_mask(__a, __b); } __mmask16 test_mm256_mask_cmpge_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmpge_epi16_mask - // CHECK: @llvm.x86.avx512.mask.cmp.w.256(<16 x i16> {{.*}}, <16 x i16> {{.*}}, i32 5, i16 {{.*}}) + // CHECK: icmp sge <16 x i16> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} return (__mmask16)_mm256_mask_cmpge_epi16_mask(__u, __a, __b); } __mmask16 test_mm256_cmpge_epu16_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmpge_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.256(<16 x i16> {{.*}}, <16 x i16> {{.*}}, i32 5, i16 -1) + // CHECK: icmp uge <16 x i16> %{{.*}}, %{{.*}} return (__mmask16)_mm256_cmpge_epu16_mask(__a, __b); } __mmask16 test_mm256_mask_cmpge_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmpge_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.256(<16 x i16> {{.*}}, <16 x i16> {{.*}}, i32 5, i16 {{.*}}) + // CHECK: icmp uge <16 x i16> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} return (__mmask16)_mm256_mask_cmpge_epu16_mask(__u, __a, __b); } __mmask16 test_mm_cmple_epi8_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmple_epi8_mask - // CHECK: @llvm.x86.avx512.mask.cmp.b.128(<16 x i8> {{.*}}, <16 x i8> {{.*}}, i32 2, i16 -1) + // CHECK: icmp sle <16 x i8> %{{.*}}, %{{.*}} return (__mmask16)_mm_cmple_epi8_mask(__a, __b); } __mmask16 test_mm_mask_cmple_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmple_epi8_mask - // CHECK: @llvm.x86.avx512.mask.cmp.b.128(<16 x i8> {{.*}}, <16 x i8> {{.*}}, i32 2, i16 {{.*}}) + // CHECK: icmp sle <16 x i8> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} return (__mmask16)_mm_mask_cmple_epi8_mask(__u, __a, __b); } __mmask16 test_mm_cmple_epu8_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmple_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.128(<16 x i8> {{.*}}, <16 x i8> {{.*}}, i32 2, i16 -1) + // CHECK: icmp ule <16 x i8> %{{.*}}, %{{.*}} return (__mmask16)_mm_cmple_epu8_mask(__a, __b); } __mmask16 test_mm_mask_cmple_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmple_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.128(<16 x i8> {{.*}}, <16 x i8> {{.*}}, i32 2, i16 {{.*}}) + // CHECK: icmp ule <16 x i8> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} return (__mmask16)_mm_mask_cmple_epu8_mask(__u, __a, __b); } __mmask8 test_mm_cmple_epi16_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmple_epi16_mask - // CHECK: @llvm.x86.avx512.mask.cmp.w.128(<8 x i16> {{.*}}, <8 x i16> {{.*}}, i32 2, i8 -1) + // CHECK: icmp sle <8 x i16> %{{.*}}, %{{.*}} return (__mmask8)_mm_cmple_epi16_mask(__a, __b); } __mmask8 test_mm_mask_cmple_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmple_epi16_mask - // CHECK: @llvm.x86.avx512.mask.cmp.w.128(<8 x i16> {{.*}}, <8 x i16> {{.*}}, i32 2, i8 {{.*}}) + // CHECK: icmp sle <8 x i16> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm_mask_cmple_epi16_mask(__u, __a, __b); } __mmask8 test_mm_cmple_epu16_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmple_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.128(<8 x i16> {{.*}}, <8 x i16> {{.*}}, i32 2, i8 -1) + // CHECK: icmp ule <8 x i16> %{{.*}}, %{{.*}} return (__mmask8)_mm_cmple_epu16_mask(__a, __b); } __mmask8 test_mm_mask_cmple_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmple_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.128(<8 x i16> {{.*}}, <8 x i16> {{.*}}, i32 2, i8 {{.*}}) + // CHECK: icmp ule <8 x i16> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm_mask_cmple_epu16_mask(__u, __a, __b); } __mmask32 test_mm256_cmple_epi8_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmple_epi8_mask - // CHECK: @llvm.x86.avx512.mask.cmp.b.256(<32 x i8> {{.*}}, <32 x i8> {{.*}}, i32 2, i32 -1) + // CHECK: icmp sle <32 x i8> %{{.*}}, %{{.*}} return (__mmask32)_mm256_cmple_epi8_mask(__a, __b); } __mmask32 test_mm256_mask_cmple_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmple_epi8_mask - // CHECK: @llvm.x86.avx512.mask.cmp.b.256(<32 x i8> {{.*}}, <32 x i8> {{.*}}, i32 2, i32 {{.*}}) + // CHECK: icmp sle <32 x i8> %{{.*}}, %{{.*}} + // CHECK: and <32 x i1> %{{.*}}, %{{.*}} return (__mmask32)_mm256_mask_cmple_epi8_mask(__u, __a, __b); } __mmask32 test_mm256_cmple_epu8_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmple_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.256(<32 x i8> {{.*}}, <32 x i8> {{.*}}, i32 2, i32 -1) + // CHECK: icmp ule <32 x i8> %{{.*}}, %{{.*}} return (__mmask32)_mm256_cmple_epu8_mask(__a, __b); } __mmask32 test_mm256_mask_cmple_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmple_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.256(<32 x i8> {{.*}}, <32 x i8> {{.*}}, i32 2, i32 {{.*}}) + // CHECK: icmp ule <32 x i8> %{{.*}}, %{{.*}} + // CHECK: and <32 x i1> %{{.*}}, %{{.*}} return (__mmask32)_mm256_mask_cmple_epu8_mask(__u, __a, __b); } __mmask16 test_mm256_cmple_epi16_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmple_epi16_mask - // CHECK: @llvm.x86.avx512.mask.cmp.w.256(<16 x i16> {{.*}}, <16 x i16> {{.*}}, i32 2, i16 -1) + // CHECK: icmp sle <16 x i16> %{{.*}}, %{{.*}} return (__mmask16)_mm256_cmple_epi16_mask(__a, __b); } __mmask16 test_mm256_mask_cmple_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmple_epi16_mask - // CHECK: @llvm.x86.avx512.mask.cmp.w.256(<16 x i16> {{.*}}, <16 x i16> {{.*}}, i32 2, i16 {{.*}}) + // CHECK: icmp sle <16 x i16> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} return (__mmask16)_mm256_mask_cmple_epi16_mask(__u, __a, __b); } __mmask16 test_mm256_cmple_epu16_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmple_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.256(<16 x i16> {{.*}}, <16 x i16> {{.*}}, i32 2, i16 -1) + // CHECK: icmp ule <16 x i16> %{{.*}}, %{{.*}} return (__mmask16)_mm256_cmple_epu16_mask(__a, __b); } __mmask16 test_mm256_mask_cmple_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmple_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.256(<16 x i16> {{.*}}, <16 x i16> {{.*}}, i32 2, i16 {{.*}}) + // CHECK: icmp ule <16 x i16> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} return (__mmask16)_mm256_mask_cmple_epu16_mask(__u, __a, __b); } __mmask16 test_mm_cmplt_epi8_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmplt_epi8_mask - // CHECK: @llvm.x86.avx512.mask.cmp.b.128(<16 x i8> {{.*}}, <16 x i8> {{.*}}, i32 1, i16 -1) + // CHECK: icmp slt <16 x i8> %{{.*}}, %{{.*}} return (__mmask16)_mm_cmplt_epi8_mask(__a, __b); } __mmask16 test_mm_mask_cmplt_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmplt_epi8_mask - // CHECK: @llvm.x86.avx512.mask.cmp.b.128(<16 x i8> {{.*}}, <16 x i8> {{.*}}, i32 1, i16 {{.*}}) + // CHECK: icmp slt <16 x i8> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} return (__mmask16)_mm_mask_cmplt_epi8_mask(__u, __a, __b); } __mmask16 test_mm_cmplt_epu8_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmplt_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.128(<16 x i8> {{.*}}, <16 x i8> {{.*}}, i32 1, i16 -1) + // CHECK: icmp ult <16 x i8> %{{.*}}, %{{.*}} return (__mmask16)_mm_cmplt_epu8_mask(__a, __b); } __mmask16 test_mm_mask_cmplt_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmplt_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.128(<16 x i8> {{.*}}, <16 x i8> {{.*}}, i32 1, i16 {{.*}}) + // CHECK: icmp ult <16 x i8> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} return (__mmask16)_mm_mask_cmplt_epu8_mask(__u, __a, __b); } __mmask8 test_mm_cmplt_epi16_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmplt_epi16_mask - // CHECK: @llvm.x86.avx512.mask.cmp.w.128(<8 x i16> {{.*}}, <8 x i16> {{.*}}, i32 1, i8 -1) + // CHECK: icmp slt <8 x i16> %{{.*}}, %{{.*}} return (__mmask8)_mm_cmplt_epi16_mask(__a, __b); } __mmask8 test_mm_mask_cmplt_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmplt_epi16_mask - // CHECK: @llvm.x86.avx512.mask.cmp.w.128(<8 x i16> {{.*}}, <8 x i16> {{.*}}, i32 1, i8 {{.*}}) + // CHECK: icmp slt <8 x i16> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm_mask_cmplt_epi16_mask(__u, __a, __b); } __mmask8 test_mm_cmplt_epu16_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmplt_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.128(<8 x i16> {{.*}}, <8 x i16> {{.*}}, i32 1, i8 -1) + // CHECK: icmp ult <8 x i16> %{{.*}}, %{{.*}} return (__mmask8)_mm_cmplt_epu16_mask(__a, __b); } __mmask8 test_mm_mask_cmplt_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmplt_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.128(<8 x i16> {{.*}}, <8 x i16> {{.*}}, i32 1, i8 {{.*}}) + // CHECK: icmp ult <8 x i16> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm_mask_cmplt_epu16_mask(__u, __a, __b); } __mmask32 test_mm256_cmplt_epi8_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmplt_epi8_mask - // CHECK: @llvm.x86.avx512.mask.cmp.b.256(<32 x i8> {{.*}}, <32 x i8> {{.*}}, i32 1, i32 -1) + // CHECK: icmp slt <32 x i8> %{{.*}}, %{{.*}} return (__mmask32)_mm256_cmplt_epi8_mask(__a, __b); } __mmask32 test_mm256_mask_cmplt_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmplt_epi8_mask - // CHECK: @llvm.x86.avx512.mask.cmp.b.256(<32 x i8> {{.*}}, <32 x i8> {{.*}}, i32 1, i32 {{.*}}) + // CHECK: icmp slt <32 x i8> %{{.*}}, %{{.*}} + // CHECK: and <32 x i1> %{{.*}}, %{{.*}} return (__mmask32)_mm256_mask_cmplt_epi8_mask(__u, __a, __b); } __mmask32 test_mm256_cmplt_epu8_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmplt_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.256(<32 x i8> {{.*}}, <32 x i8> {{.*}}, i32 1, i32 -1) + // CHECK: icmp ult <32 x i8> %{{.*}}, %{{.*}} return (__mmask32)_mm256_cmplt_epu8_mask(__a, __b); } __mmask32 test_mm256_mask_cmplt_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmplt_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.256(<32 x i8> {{.*}}, <32 x i8> {{.*}}, i32 1, i32 {{.*}}) + // CHECK: icmp ult <32 x i8> %{{.*}}, %{{.*}} + // CHECK: and <32 x i1> %{{.*}}, %{{.*}} return (__mmask32)_mm256_mask_cmplt_epu8_mask(__u, __a, __b); } __mmask16 test_mm256_cmplt_epi16_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmplt_epi16_mask - // CHECK: @llvm.x86.avx512.mask.cmp.w.256(<16 x i16> {{.*}}, <16 x i16> {{.*}}, i32 1, i16 -1) + // CHECK: icmp slt <16 x i16> %{{.*}}, %{{.*}} return (__mmask16)_mm256_cmplt_epi16_mask(__a, __b); } __mmask16 test_mm256_mask_cmplt_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmplt_epi16_mask - // CHECK: @llvm.x86.avx512.mask.cmp.w.256(<16 x i16> {{.*}}, <16 x i16> {{.*}}, i32 1, i16 {{.*}}) + // CHECK: icmp slt <16 x i16> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} return (__mmask16)_mm256_mask_cmplt_epi16_mask(__u, __a, __b); } __mmask16 test_mm256_cmplt_epu16_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmplt_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.256(<16 x i16> {{.*}}, <16 x i16> {{.*}}, i32 1, i16 -1) + // CHECK: icmp ult <16 x i16> %{{.*}}, %{{.*}} return (__mmask16)_mm256_cmplt_epu16_mask(__a, __b); } __mmask16 test_mm256_mask_cmplt_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmplt_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.256(<16 x i16> {{.*}}, <16 x i16> {{.*}}, i32 1, i16 {{.*}}) + // CHECK: icmp ult <16 x i16> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} return (__mmask16)_mm256_mask_cmplt_epu16_mask(__u, __a, __b); } __mmask16 test_mm_cmpneq_epi8_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmpneq_epi8_mask - // CHECK: @llvm.x86.avx512.mask.cmp.b.128(<16 x i8> {{.*}}, <16 x i8> {{.*}}, i32 4, i16 -1) + // CHECK: icmp ne <16 x i8> %{{.*}}, %{{.*}} return (__mmask16)_mm_cmpneq_epi8_mask(__a, __b); } __mmask16 test_mm_mask_cmpneq_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmpneq_epi8_mask - // CHECK: @llvm.x86.avx512.mask.cmp.b.128(<16 x i8> {{.*}}, <16 x i8> {{.*}}, i32 4, i16 {{.*}}) + // CHECK: icmp ne <16 x i8> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} return (__mmask16)_mm_mask_cmpneq_epi8_mask(__u, __a, __b); } __mmask16 test_mm_cmpneq_epu8_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmpneq_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.128(<16 x i8> {{.*}}, <16 x i8> {{.*}}, i32 4, i16 -1) + // CHECK: icmp ne <16 x i8> %{{.*}}, %{{.*}} return (__mmask16)_mm_cmpneq_epu8_mask(__a, __b); } __mmask16 test_mm_mask_cmpneq_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmpneq_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.128(<16 x i8> {{.*}}, <16 x i8> {{.*}}, i32 4, i16 {{.*}}) + // CHECK: icmp ne <16 x i8> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} return (__mmask16)_mm_mask_cmpneq_epu8_mask(__u, __a, __b); } __mmask8 test_mm_cmpneq_epi16_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmpneq_epi16_mask - // CHECK: @llvm.x86.avx512.mask.cmp.w.128(<8 x i16> {{.*}}, <8 x i16> {{.*}}, i32 4, i8 -1) + // CHECK: icmp ne <8 x i16> %{{.*}}, %{{.*}} return (__mmask8)_mm_cmpneq_epi16_mask(__a, __b); } __mmask8 test_mm_mask_cmpneq_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmpneq_epi16_mask - // CHECK: @llvm.x86.avx512.mask.cmp.w.128(<8 x i16> {{.*}}, <8 x i16> {{.*}}, i32 4, i8 {{.*}}) + // CHECK: icmp ne <8 x i16> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm_mask_cmpneq_epi16_mask(__u, __a, __b); } __mmask8 test_mm_cmpneq_epu16_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmpneq_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.128(<8 x i16> {{.*}}, <8 x i16> {{.*}}, i32 4, i8 -1) + // CHECK: icmp ne <8 x i16> %{{.*}}, %{{.*}} return (__mmask8)_mm_cmpneq_epu16_mask(__a, __b); } __mmask8 test_mm_mask_cmpneq_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmpneq_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.128(<8 x i16> {{.*}}, <8 x i16> {{.*}}, i32 4, i8 {{.*}}) + // CHECK: icmp ne <8 x i16> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} return (__mmask8)_mm_mask_cmpneq_epu16_mask(__u, __a, __b); } __mmask32 test_mm256_cmpneq_epi8_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmpneq_epi8_mask - // CHECK: @llvm.x86.avx512.mask.cmp.b.256(<32 x i8> {{.*}}, <32 x i8> {{.*}}, i32 4, i32 -1) + // CHECK: icmp ne <32 x i8> %{{.*}}, %{{.*}} return (__mmask32)_mm256_cmpneq_epi8_mask(__a, __b); } __mmask32 test_mm256_mask_cmpneq_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmpneq_epi8_mask - // CHECK: @llvm.x86.avx512.mask.cmp.b.256(<32 x i8> {{.*}}, <32 x i8> {{.*}}, i32 4, i32 {{.*}}) + // CHECK: icmp ne <32 x i8> %{{.*}}, %{{.*}} + // CHECK: and <32 x i1> %{{.*}}, %{{.*}} return (__mmask32)_mm256_mask_cmpneq_epi8_mask(__u, __a, __b); } __mmask32 test_mm256_cmpneq_epu8_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmpneq_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.256(<32 x i8> {{.*}}, <32 x i8> {{.*}}, i32 4, i32 -1) + // CHECK: icmp ne <32 x i8> %{{.*}}, %{{.*}} return (__mmask32)_mm256_cmpneq_epu8_mask(__a, __b); } __mmask32 test_mm256_mask_cmpneq_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmpneq_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.256(<32 x i8> {{.*}}, <32 x i8> {{.*}}, i32 4, i32 {{.*}}) + // CHECK: icmp ne <32 x i8> %{{.*}}, %{{.*}} + // CHECK: and <32 x i1> %{{.*}}, %{{.*}} return (__mmask32)_mm256_mask_cmpneq_epu8_mask(__u, __a, __b); } __mmask16 test_mm256_cmpneq_epi16_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmpneq_epi16_mask - // CHECK: @llvm.x86.avx512.mask.cmp.w.256(<16 x i16> {{.*}}, <16 x i16> {{.*}}, i32 4, i16 -1) + // CHECK: icmp ne <16 x i16> %{{.*}}, %{{.*}} return (__mmask16)_mm256_cmpneq_epi16_mask(__a, __b); } __mmask16 test_mm256_mask_cmpneq_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmpneq_epi16_mask - // CHECK: @llvm.x86.avx512.mask.cmp.w.256(<16 x i16> {{.*}}, <16 x i16> {{.*}}, i32 4, i16 {{.*}}) + // CHECK: icmp ne <16 x i16> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} return (__mmask16)_mm256_mask_cmpneq_epi16_mask(__u, __a, __b); } __mmask16 test_mm256_cmpneq_epu16_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmpneq_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.256(<16 x i16> {{.*}}, <16 x i16> {{.*}}, i32 4, i16 -1) + // CHECK: icmp ne <16 x i16> %{{.*}}, %{{.*}} return (__mmask16)_mm256_cmpneq_epu16_mask(__a, __b); } __mmask16 test_mm256_mask_cmpneq_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmpneq_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.256(<16 x i16> {{.*}}, <16 x i16> {{.*}}, i32 4, i16 {{.*}}) + // CHECK: icmp ne <16 x i16> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} return (__mmask16)_mm256_mask_cmpneq_epu16_mask(__u, __a, __b); } __mmask16 test_mm_cmp_epi8_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmp_epi8_mask - // CHECK: @llvm.x86.avx512.mask.cmp.b.128(<16 x i8> {{.*}}, <16 x i8> {{.*}}, i32 7, i16 -1) - return (__mmask16)_mm_cmp_epi8_mask(__a, __b, 7); + // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}} + return (__mmask16)_mm_cmp_epi8_mask(__a, __b, 0); } __mmask16 test_mm_mask_cmp_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmp_epi8_mask - // CHECK: @llvm.x86.avx512.mask.cmp.b.128(<16 x i8> {{.*}}, <16 x i8> {{.*}}, i32 7, i16 {{.*}}) - return (__mmask16)_mm_mask_cmp_epi8_mask(__u, __a, __b, 7); + // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} + return (__mmask16)_mm_mask_cmp_epi8_mask(__u, __a, __b, 0); } __mmask16 test_mm_cmp_epu8_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmp_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.128(<16 x i8> {{.*}}, <16 x i8> {{.*}}, i32 7, i16 -1) - return (__mmask16)_mm_cmp_epu8_mask(__a, __b, 7); + // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}} + return (__mmask16)_mm_cmp_epu8_mask(__a, __b, 0); } __mmask16 test_mm_mask_cmp_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmp_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.128(<16 x i8> {{.*}}, <16 x i8> {{.*}}, i32 7, i16 {{.*}}) - return (__mmask16)_mm_mask_cmp_epu8_mask(__u, __a, __b, 7); + // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} + return (__mmask16)_mm_mask_cmp_epu8_mask(__u, __a, __b, 0); } __mmask8 test_mm_cmp_epi16_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmp_epi16_mask - // CHECK: @llvm.x86.avx512.mask.cmp.w.128(<8 x i16> {{.*}}, <8 x i16> {{.*}}, i32 7, i8 -1) - return (__mmask8)_mm_cmp_epi16_mask(__a, __b, 7); + // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}} + return (__mmask8)_mm_cmp_epi16_mask(__a, __b, 0); } __mmask8 test_mm_mask_cmp_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmp_epi16_mask - // CHECK: @llvm.x86.avx512.mask.cmp.w.128(<8 x i16> {{.*}}, <8 x i16> {{.*}}, i32 7, i8 {{.*}}) - return (__mmask8)_mm_mask_cmp_epi16_mask(__u, __a, __b, 7); + // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm_mask_cmp_epi16_mask(__u, __a, __b, 0); } __mmask8 test_mm_cmp_epu16_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmp_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.128(<8 x i16> {{.*}}, <8 x i16> {{.*}}, i32 7, i8 -1) - return (__mmask8)_mm_cmp_epu16_mask(__a, __b, 7); + // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}} + return (__mmask8)_mm_cmp_epu16_mask(__a, __b, 0); } __mmask8 test_mm_mask_cmp_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_mask_cmp_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.128(<8 x i16> {{.*}}, <8 x i16> {{.*}}, i32 7, i8 {{.*}}) - return (__mmask8)_mm_mask_cmp_epu16_mask(__u, __a, __b, 7); + // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}} + // CHECK: and <8 x i1> %{{.*}}, %{{.*}} + return (__mmask8)_mm_mask_cmp_epu16_mask(__u, __a, __b, 0); } __mmask32 test_mm256_cmp_epi8_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmp_epi8_mask - // CHECK: @llvm.x86.avx512.mask.cmp.b.256(<32 x i8> {{.*}}, <32 x i8> {{.*}}, i32 7, i32 -1) - return (__mmask32)_mm256_cmp_epi8_mask(__a, __b, 7); + // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}} + return (__mmask32)_mm256_cmp_epi8_mask(__a, __b, 0); } __mmask32 test_mm256_mask_cmp_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmp_epi8_mask - // CHECK: @llvm.x86.avx512.mask.cmp.b.256(<32 x i8> {{.*}}, <32 x i8> {{.*}}, i32 7, i32 {{.*}}) - return (__mmask32)_mm256_mask_cmp_epi8_mask(__u, __a, __b, 7); + // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}} + // CHECK: and <32 x i1> %{{.*}}, %{{.*}} + return (__mmask32)_mm256_mask_cmp_epi8_mask(__u, __a, __b, 0); } __mmask32 test_mm256_cmp_epu8_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmp_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.256(<32 x i8> {{.*}}, <32 x i8> {{.*}}, i32 7, i32 -1) - return (__mmask32)_mm256_cmp_epu8_mask(__a, __b, 7); + // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}} + return (__mmask32)_mm256_cmp_epu8_mask(__a, __b, 0); } __mmask32 test_mm256_mask_cmp_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmp_epu8_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.b.256(<32 x i8> {{.*}}, <32 x i8> {{.*}}, i32 7, i32 {{.*}}) - return (__mmask32)_mm256_mask_cmp_epu8_mask(__u, __a, __b, 7); + // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}} + // CHECK: and <32 x i1> %{{.*}}, %{{.*}} + return (__mmask32)_mm256_mask_cmp_epu8_mask(__u, __a, __b, 0); } __mmask16 test_mm256_cmp_epi16_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmp_epi16_mask - // CHECK: @llvm.x86.avx512.mask.cmp.w.256(<16 x i16> {{.*}}, <16 x i16> {{.*}}, i32 7, i16 -1) - return (__mmask16)_mm256_cmp_epi16_mask(__a, __b, 7); + // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}} + return (__mmask16)_mm256_cmp_epi16_mask(__a, __b, 0); } __mmask16 test_mm256_mask_cmp_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmp_epi16_mask - // CHECK: @llvm.x86.avx512.mask.cmp.w.256(<16 x i16> {{.*}}, <16 x i16> {{.*}}, i32 7, i16 {{.*}}) - return (__mmask16)_mm256_mask_cmp_epi16_mask(__u, __a, __b, 7); + // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} + return (__mmask16)_mm256_mask_cmp_epi16_mask(__u, __a, __b, 0); } __mmask16 test_mm256_cmp_epu16_mask(__m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_cmp_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.256(<16 x i16> {{.*}}, <16 x i16> {{.*}}, i32 7, i16 -1) - return (__mmask16)_mm256_cmp_epu16_mask(__a, __b, 7); + // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}} + return (__mmask16)_mm256_cmp_epu16_mask(__a, __b, 0); } __mmask16 test_mm256_mask_cmp_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) { // CHECK-LABEL: @test_mm256_mask_cmp_epu16_mask - // CHECK: @llvm.x86.avx512.mask.ucmp.w.256(<16 x i16> {{.*}}, <16 x i16> {{.*}}, i32 7, i16 {{.*}}) - return (__mmask16)_mm256_mask_cmp_epu16_mask(__u, __a, __b, 7); + // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}} + // CHECK: and <16 x i1> %{{.*}}, %{{.*}} + return (__mmask16)_mm256_mask_cmp_epu16_mask(__u, __a, __b, 0); } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits