From c9fdb15349014dd1ef0bb587e3df26f8d7b92fcb Mon Sep 17 00:00:00 2001 From: Andy Kaylor Date: Thu, 18 Dec 2025 13:49:09 -0800 Subject: [PATCH] [CIR] Make x86 i1 mask vectors signed A number of x86 builtins need to cast a mask value to a vector of i1 values. Strictly speaking, these i1 values should be signless. However, we don't have signless types in CIR, so we have to choose whether to represent them as signed or unsigned. It seemed natural to make them signed. However, there are going to be multiple places where we want to convert the vector of i1 to a vector of either all ones or all zeros, and in those cases we'll want to sign-extend the vector values. Rather than creating the vector as unsigned and casting it to signed in the cases where we need to saturate the lane, I think it makes more sense to just create it as signed. This change does that. --- clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp | 2 +- .../CodeGenBuiltins/X86/avx512bw-builtins.c | 204 +++++++++--------- .../CodeGenBuiltins/X86/avx512dq-builtins.c | 90 ++++---- .../CodeGenBuiltins/X86/avx512f-builtins.c | 136 ++++++------ .../CodeGenBuiltins/X86/avx512vl-builtins.c | 8 +- .../X86/avx512vlvbmi2-builtins.c | 32 +-- 6 files changed, 236 insertions(+), 236 deletions(-) diff --git a/clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp b/clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp index a5e397a518e67..5f2771fbd268c 100644 --- a/clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp +++ b/clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp @@ -74,7 +74,7 @@ static mlir::Value emitVectorFCmp(CIRGenBuilderTy &builder, static mlir::Value getMaskVecValue(CIRGenBuilderTy &builder, mlir::Location loc, mlir::Value mask, unsigned numElems) { auto maskTy = cir::VectorType::get( - builder.getUIntNTy(1), cast(mask.getType()).getWidth()); + builder.getSIntNTy(1), cast(mask.getType()).getWidth()); mlir::Value maskVec = builder.createBitcast(mask, maskTy); // If we have less than 8 elements, then the starting mask was an i8 and diff --git a/clang/test/CIR/CodeGenBuiltins/X86/avx512bw-builtins.c b/clang/test/CIR/CodeGenBuiltins/X86/avx512bw-builtins.c index 439c89e7953ab..3db2541506091 100644 --- a/clang/test/CIR/CodeGenBuiltins/X86/avx512bw-builtins.c +++ b/clang/test/CIR/CodeGenBuiltins/X86/avx512bw-builtins.c @@ -35,9 +35,9 @@ __mmask32 test_kshiftli_mask32(__mmask32 A) { // CIR-LABEL: test_kshiftli_mask32 - // CIR: [[VAL:%.*]] = cir.cast bitcast %{{.*}} : !u32i -> !cir.vector<32 x !cir.int> - // CIR: [[SHIFT:%.*]] = cir.const #cir.zero : !cir.vector<32 x !cir.int> - // CIR: %{{.*}} = cir.vec.shuffle([[SHIFT]], [[VAL]] : !cir.vector<32 x !cir.int>) [#cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i, #cir.int<4> : !s32i, #cir.int<5> : !s32i, #cir.int<6> : !s32i, #cir.int<7> : !s32i, #cir.int<8> : !s32i, #cir.int<9> : !s32i, #cir.int<10> : !s32i, #cir.int<11> : !s32i, #cir.int<12> : !s32i, #cir.int<13> : !s32i, #cir.int<14> : !s32i, #cir.int<15> : !s32i, #cir.int<16> : !s32i, #cir.int<17> : !s32i, #cir.int<18> : !s32i, #cir.int<19> : !s32i, #cir.int<20> : !s32i, #cir.int<21> : !s32i, #cir.int<22> : !s32i, #cir.int<23> : !s32i, #cir.int<24> : !s32i, #cir.int<25> : !s32i, #cir.int<26> : !s32i, #cir.int<27> : !s32i, #cir.int<28> : !s32i, #cir.int<29> : !s32i, #cir.int<30> : !s32i, #cir.int<31> : !s32i, #cir.int<32> : !s32i] : !cir.vector<32 x !cir.int> + // CIR: [[VAL:%.*]] = cir.cast bitcast %{{.*}} : !u32i -> !cir.vector<32 x !cir.int> + // CIR: [[SHIFT:%.*]] = cir.const #cir.zero : !cir.vector<32 x !cir.int> + // CIR: %{{.*}} = cir.vec.shuffle([[SHIFT]], [[VAL]] : !cir.vector<32 x !cir.int>) [#cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i, #cir.int<4> : !s32i, #cir.int<5> : !s32i, #cir.int<6> : !s32i, #cir.int<7> : !s32i, #cir.int<8> : !s32i, #cir.int<9> : !s32i, #cir.int<10> : !s32i, #cir.int<11> : !s32i, #cir.int<12> : !s32i, #cir.int<13> : !s32i, #cir.int<14> : !s32i, #cir.int<15> : !s32i, #cir.int<16> : !s32i, #cir.int<17> : !s32i, #cir.int<18> : !s32i, #cir.int<19> : !s32i, #cir.int<20> : !s32i, #cir.int<21> : !s32i, #cir.int<22> : !s32i, #cir.int<23> : !s32i, #cir.int<24> : !s32i, #cir.int<25> : !s32i, #cir.int<26> : !s32i, #cir.int<27> : !s32i, #cir.int<28> : !s32i, #cir.int<29> : !s32i, #cir.int<30> : !s32i, #cir.int<31> : !s32i, #cir.int<32> : !s32i] : !cir.vector<32 x !cir.int> // LLVM-LABEL: test_kshiftli_mask32 // LLVM: [[VAL:%.*]] = bitcast i32 %{{.*}} to <32 x i1> @@ -51,9 +51,9 @@ __mmask32 test_kshiftli_mask32(__mmask32 A) { __mmask32 test_kshiftri_mask32(__mmask32 A) { // CIR-LABEL: test_kshiftri_mask32 - // CIR: [[VAL:%.*]] = cir.cast bitcast %{{.*}} : !u32i -> !cir.vector<32 x !cir.int> - // CIR: [[SHIFT:%.*]] = cir.const #cir.zero : !cir.vector<32 x !cir.int> - // CIR: %{{.*}} = cir.vec.shuffle([[VAL]], [[SHIFT]] : !cir.vector<32 x !cir.int>) [#cir.int<31> : !s32i, #cir.int<32> : !s32i, #cir.int<33> : !s32i, #cir.int<34> : !s32i, #cir.int<35> : !s32i, #cir.int<36> : !s32i, #cir.int<37> : !s32i, #cir.int<38> : !s32i, #cir.int<39> : !s32i, #cir.int<40> : !s32i, #cir.int<41> : !s32i, #cir.int<42> : !s32i, #cir.int<43> : !s32i, #cir.int<44> : !s32i, #cir.int<45> : !s32i, #cir.int<46> : !s32i, #cir.int<47> : !s32i, #cir.int<48> : !s32i, #cir.int<49> : !s32i, #cir.int<50> : !s32i, #cir.int<51> : !s32i, #cir.int<52> : !s32i, #cir.int<53> : !s32i, #cir.int<54> : !s32i, #cir.int<55> : !s32i, #cir.int<56> : !s32i, #cir.int<57> : !s32i, #cir.int<58> : !s32i, #cir.int<59> : !s32i, #cir.int<60> : !s32i, #cir.int<61> : !s32i, #cir.int<62> : !s32i] : !cir.vector<32 x !cir.int> + // CIR: [[VAL:%.*]] = cir.cast bitcast %{{.*}} : !u32i -> !cir.vector<32 x !cir.int> + // CIR: [[SHIFT:%.*]] = cir.const #cir.zero : !cir.vector<32 x !cir.int> + // CIR: %{{.*}} = cir.vec.shuffle([[VAL]], [[SHIFT]] : !cir.vector<32 x !cir.int>) [#cir.int<31> : !s32i, #cir.int<32> : !s32i, #cir.int<33> : !s32i, #cir.int<34> : !s32i, #cir.int<35> : !s32i, #cir.int<36> : !s32i, #cir.int<37> : !s32i, #cir.int<38> : !s32i, #cir.int<39> : !s32i, #cir.int<40> : !s32i, #cir.int<41> : !s32i, #cir.int<42> : !s32i, #cir.int<43> : !s32i, #cir.int<44> : !s32i, #cir.int<45> : !s32i, #cir.int<46> : !s32i, #cir.int<47> : !s32i, #cir.int<48> : !s32i, #cir.int<49> : !s32i, #cir.int<50> : !s32i, #cir.int<51> : !s32i, #cir.int<52> : !s32i, #cir.int<53> : !s32i, #cir.int<54> : !s32i, #cir.int<55> : !s32i, #cir.int<56> : !s32i, #cir.int<57> : !s32i, #cir.int<58> : !s32i, #cir.int<59> : !s32i, #cir.int<60> : !s32i, #cir.int<61> : !s32i, #cir.int<62> : !s32i] : !cir.vector<32 x !cir.int> // LLVM-LABEL: test_kshiftri_mask32 // LLVM: [[VAL:%.*]] = bitcast i32 %{{.*}} to <32 x i1> @@ -67,9 +67,9 @@ __mmask32 test_kshiftri_mask32(__mmask32 A) { __mmask64 test_kshiftli_mask64(__mmask64 A) { // CIR-LABEL: test_kshiftli_mask64 - // CIR: [[VAL:%.*]] = cir.cast bitcast %{{.*}} : !u64i -> !cir.vector<64 x !cir.int> - // CIR: [[SHIFT:%.*]] = cir.const #cir.zero : !cir.vector<64 x !cir.int> - // CIR: %{{.*}} = cir.vec.shuffle([[SHIFT]], [[VAL]] : !cir.vector<64 x !cir.int>) [#cir.int<32> : !s32i, #cir.int<33> : !s32i, #cir.int<34> : !s32i, #cir.int<35> : !s32i, #cir.int<36> : !s32i, #cir.int<37> : !s32i, #cir.int<38> : !s32i, #cir.int<39> : !s32i, #cir.int<40> : !s32i, #cir.int<41> : !s32i, #cir.int<42> : !s32i, #cir.int<43> : !s32i, #cir.int<44> : !s32i, #cir.int<45> : !s32i, #cir.int<46> : !s32i, #cir.int<47> : !s32i, #cir.int<48> : !s32i, #cir.int<49> : !s32i, #cir.int<50> : !s32i, #cir.int<51> : !s32i, #cir.int<52> : !s32i, #cir.int<53> : !s32i, #cir.int<54> : !s32i, #cir.int<55> : !s32i, #cir.int<56> : !s32i, #cir.int<57> : !s32i, #cir.int<58> : !s32i, #cir.int<59> : !s32i, #cir.int<60> : !s32i, #cir.int<61> : !s32i, #cir.int<62> : !s32i, #cir.int<63> : !s32i, #cir.int<64> : !s32i, #cir.int<65> : !s32i, #cir.int<66> : !s32i, #cir.int<67> : !s32i, #cir.int<68> : !s32i, #cir.int<69> : !s32i, #cir.int<70> : !s32i, #cir.int<71> : !s32i, #cir.int<72> : !s32i, #cir.int<73> : !s32i, #cir.int<74> : !s32i, #cir.int<75> : !s32i, #cir.int<76> : !s32i, #cir.int<77> : !s32i, #cir.int<78> : !s32i, #cir.int<79> : !s32i, #cir.int<80> : !s32i, #cir.int<81> : !s32i, #cir.int<82> : !s32i, #cir.int<83> : !s32i, #cir.int<84> : !s32i, #cir.int<85> : !s32i, #cir.int<86> : !s32i, #cir.int<87> : !s32i, #cir.int<88> : !s32i, #cir.int<89> : !s32i, #cir.int<90> : !s32i, #cir.int<91> : !s32i, #cir.int<92> : !s32i, #cir.int<93> : !s32i, #cir.int<94> : !s32i, #cir.int<95> : !s32i] : !cir.vector<64 x !cir.int> + // CIR: [[VAL:%.*]] = cir.cast bitcast %{{.*}} : !u64i -> !cir.vector<64 x !cir.int> + // CIR: [[SHIFT:%.*]] = cir.const #cir.zero : !cir.vector<64 x !cir.int> + // CIR: %{{.*}} = cir.vec.shuffle([[SHIFT]], [[VAL]] : !cir.vector<64 x !cir.int>) [#cir.int<32> : !s32i, #cir.int<33> : !s32i, #cir.int<34> : !s32i, #cir.int<35> : !s32i, #cir.int<36> : !s32i, #cir.int<37> : !s32i, #cir.int<38> : !s32i, #cir.int<39> : !s32i, #cir.int<40> : !s32i, #cir.int<41> : !s32i, #cir.int<42> : !s32i, #cir.int<43> : !s32i, #cir.int<44> : !s32i, #cir.int<45> : !s32i, #cir.int<46> : !s32i, #cir.int<47> : !s32i, #cir.int<48> : !s32i, #cir.int<49> : !s32i, #cir.int<50> : !s32i, #cir.int<51> : !s32i, #cir.int<52> : !s32i, #cir.int<53> : !s32i, #cir.int<54> : !s32i, #cir.int<55> : !s32i, #cir.int<56> : !s32i, #cir.int<57> : !s32i, #cir.int<58> : !s32i, #cir.int<59> : !s32i, #cir.int<60> : !s32i, #cir.int<61> : !s32i, #cir.int<62> : !s32i, #cir.int<63> : !s32i, #cir.int<64> : !s32i, #cir.int<65> : !s32i, #cir.int<66> : !s32i, #cir.int<67> : !s32i, #cir.int<68> : !s32i, #cir.int<69> : !s32i, #cir.int<70> : !s32i, #cir.int<71> : !s32i, #cir.int<72> : !s32i, #cir.int<73> : !s32i, #cir.int<74> : !s32i, #cir.int<75> : !s32i, #cir.int<76> : !s32i, #cir.int<77> : !s32i, #cir.int<78> : !s32i, #cir.int<79> : !s32i, #cir.int<80> : !s32i, #cir.int<81> : !s32i, #cir.int<82> : !s32i, #cir.int<83> : !s32i, #cir.int<84> : !s32i, #cir.int<85> : !s32i, #cir.int<86> : !s32i, #cir.int<87> : !s32i, #cir.int<88> : !s32i, #cir.int<89> : !s32i, #cir.int<90> : !s32i, #cir.int<91> : !s32i, #cir.int<92> : !s32i, #cir.int<93> : !s32i, #cir.int<94> : !s32i, #cir.int<95> : !s32i] : !cir.vector<64 x !cir.int> // LLVM-LABEL: test_kshiftli_mask64 // LLVM: [[VAL:%.*]] = bitcast i64 %{{.*}} to <64 x i1> @@ -83,9 +83,9 @@ __mmask64 test_kshiftli_mask64(__mmask64 A) { __mmask64 test_kshiftri_mask64(__mmask64 A) { // CIR-LABEL: test_kshiftri_mask64 - // CIR: [[VAL:%.*]] = cir.cast bitcast %{{.*}} : !u64i -> !cir.vector<64 x !cir.int> - // CIR: [[SHIFT:%.*]] = cir.const #cir.zero : !cir.vector<64 x !cir.int> - // CIR: %{{.*}} = cir.vec.shuffle([[VAL]], [[SHIFT]] : !cir.vector<64 x !cir.int>) [#cir.int<32> : !s32i, #cir.int<33> : !s32i, #cir.int<34> : !s32i, #cir.int<35> : !s32i, #cir.int<36> : !s32i, #cir.int<37> : !s32i, #cir.int<38> : !s32i, #cir.int<39> : !s32i, #cir.int<40> : !s32i, #cir.int<41> : !s32i, #cir.int<42> : !s32i, #cir.int<43> : !s32i, #cir.int<44> : !s32i, #cir.int<45> : !s32i, #cir.int<46> : !s32i, #cir.int<47> : !s32i, #cir.int<48> : !s32i, #cir.int<49> : !s32i, #cir.int<50> : !s32i, #cir.int<51> : !s32i, #cir.int<52> : !s32i, #cir.int<53> : !s32i, #cir.int<54> : !s32i, #cir.int<55> : !s32i, #cir.int<56> : !s32i, #cir.int<57> : !s32i, #cir.int<58> : !s32i, #cir.int<59> : !s32i, #cir.int<60> : !s32i, #cir.int<61> : !s32i, #cir.int<62> : !s32i, #cir.int<63> : !s32i, #cir.int<64> : !s32i, #cir.int<65> : !s32i, #cir.int<66> : !s32i, #cir.int<67> : !s32i, #cir.int<68> : !s32i, #cir.int<69> : !s32i, #cir.int<70> : !s32i, #cir.int<71> : !s32i, #cir.int<72> : !s32i, #cir.int<73> : !s32i, #cir.int<74> : !s32i, #cir.int<75> : !s32i, #cir.int<76> : !s32i, #cir.int<77> : !s32i, #cir.int<78> : !s32i, #cir.int<79> : !s32i, #cir.int<80> : !s32i, #cir.int<81> : !s32i, #cir.int<82> : !s32i, #cir.int<83> : !s32i, #cir.int<84> : !s32i, #cir.int<85> : !s32i, #cir.int<86> : !s32i, #cir.int<87> : !s32i, #cir.int<88> : !s32i, #cir.int<89> : !s32i, #cir.int<90> : !s32i, #cir.int<91> : !s32i, #cir.int<92> : !s32i, #cir.int<93> : !s32i, #cir.int<94> : !s32i, #cir.int<95> : !s32i] : !cir.vector<64 x !cir.int> + // CIR: [[VAL:%.*]] = cir.cast bitcast %{{.*}} : !u64i -> !cir.vector<64 x !cir.int> + // CIR: [[SHIFT:%.*]] = cir.const #cir.zero : !cir.vector<64 x !cir.int> + // CIR: %{{.*}} = cir.vec.shuffle([[VAL]], [[SHIFT]] : !cir.vector<64 x !cir.int>) [#cir.int<32> : !s32i, #cir.int<33> : !s32i, #cir.int<34> : !s32i, #cir.int<35> : !s32i, #cir.int<36> : !s32i, #cir.int<37> : !s32i, #cir.int<38> : !s32i, #cir.int<39> : !s32i, #cir.int<40> : !s32i, #cir.int<41> : !s32i, #cir.int<42> : !s32i, #cir.int<43> : !s32i, #cir.int<44> : !s32i, #cir.int<45> : !s32i, #cir.int<46> : !s32i, #cir.int<47> : !s32i, #cir.int<48> : !s32i, #cir.int<49> : !s32i, #cir.int<50> : !s32i, #cir.int<51> : !s32i, #cir.int<52> : !s32i, #cir.int<53> : !s32i, #cir.int<54> : !s32i, #cir.int<55> : !s32i, #cir.int<56> : !s32i, #cir.int<57> : !s32i, #cir.int<58> : !s32i, #cir.int<59> : !s32i, #cir.int<60> : !s32i, #cir.int<61> : !s32i, #cir.int<62> : !s32i, #cir.int<63> : !s32i, #cir.int<64> : !s32i, #cir.int<65> : !s32i, #cir.int<66> : !s32i, #cir.int<67> : !s32i, #cir.int<68> : !s32i, #cir.int<69> : !s32i, #cir.int<70> : !s32i, #cir.int<71> : !s32i, #cir.int<72> : !s32i, #cir.int<73> : !s32i, #cir.int<74> : !s32i, #cir.int<75> : !s32i, #cir.int<76> : !s32i, #cir.int<77> : !s32i, #cir.int<78> : !s32i, #cir.int<79> : !s32i, #cir.int<80> : !s32i, #cir.int<81> : !s32i, #cir.int<82> : !s32i, #cir.int<83> : !s32i, #cir.int<84> : !s32i, #cir.int<85> : !s32i, #cir.int<86> : !s32i, #cir.int<87> : !s32i, #cir.int<88> : !s32i, #cir.int<89> : !s32i, #cir.int<90> : !s32i, #cir.int<91> : !s32i, #cir.int<92> : !s32i, #cir.int<93> : !s32i, #cir.int<94> : !s32i, #cir.int<95> : !s32i] : !cir.vector<64 x !cir.int> // LLVM-LABEL: test_kshiftri_mask64 // LLVM: [[VAL:%.*]] = bitcast i64 %{{.*}} to <64 x i1> @@ -135,10 +135,10 @@ __mmask32 test_kshiftri_mask32_out_of_range(__mmask32 A) { __mmask32 test_kadd_mask32(__mmask32 A, __mmask32 B) { // CIR-LABEL: _kadd_mask32 - // CIR: cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> // CIR: cir.call_llvm_intrinsic "x86.avx512.kadd.d" - // CIR: cir.cast bitcast {{.*}} : !cir.vector<32 x !cir.int> -> !u32i + // CIR: cir.cast bitcast {{.*}} : !cir.vector<32 x !cir.int> -> !u32i // LLVM-LABEL: _kadd_mask32 // LLVM: [[L:%.*]] = bitcast i32 %{{.*}} to <32 x i1> @@ -156,10 +156,10 @@ __mmask32 test_kadd_mask32(__mmask32 A, __mmask32 B) { __mmask64 test_kadd_mask64(__mmask64 A, __mmask64 B) { // CIR-LABEL: _kadd_mask64 - // CIR: cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> // CIR: cir.call_llvm_intrinsic "x86.avx512.kadd.q" - // CIR: cir.cast bitcast {{.*}} : !cir.vector<64 x !cir.int> -> !u64i + // CIR: cir.cast bitcast {{.*}} : !cir.vector<64 x !cir.int> -> !u64i // LLVM-LABEL: _kadd_mask64 // LLVM: [[L:%.*]] = bitcast i64 %{{.*}} to <64 x i1> @@ -177,10 +177,10 @@ __mmask64 test_kadd_mask64(__mmask64 A, __mmask64 B) { __mmask32 test_kand_mask32(__mmask32 A, __mmask32 B) { // CIR-LABEL: _kand_mask32 - // CIR: cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> - // CIR: cir.binop(and, {{.*}}, {{.*}}) : !cir.vector<32 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !cir.vector<32 x !cir.int> -> !u32i + // CIR: cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> + // CIR: cir.binop(and, {{.*}}, {{.*}}) : !cir.vector<32 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !cir.vector<32 x !cir.int> -> !u32i // LLVM-LABEL: _kand_mask32 // LLVM: [[L:%.*]] = bitcast i32 %{{.*}} to <32 x i1> @@ -198,10 +198,10 @@ __mmask32 test_kand_mask32(__mmask32 A, __mmask32 B) { __mmask64 test_kand_mask64(__mmask64 A, __mmask64 B) { // CIR-LABEL: _kand_mask64 - // CIR: cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> - // CIR: cir.binop(and, {{.*}}, {{.*}}) : !cir.vector<64 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !cir.vector<64 x !cir.int> -> !u64i + // CIR: cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> + // CIR: cir.binop(and, {{.*}}, {{.*}}) : !cir.vector<64 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !cir.vector<64 x !cir.int> -> !u64i // LLVM-LABEL: _kand_mask64 // LLVM: [[L:%.*]] = bitcast i64 %{{.*}} to <64 x i1> @@ -219,11 +219,11 @@ __mmask64 test_kand_mask64(__mmask64 A, __mmask64 B) { __mmask32 test_kandn_mask32(__mmask32 A, __mmask32 B) { // CIR-LABEL: _kandn_mask32 - // CIR: cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> - // CIR: cir.unary(not, {{.*}}) : !cir.vector<32 x !cir.int> - // CIR: cir.binop(and, {{.*}}, {{.*}}) : !cir.vector<32 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !cir.vector<32 x !cir.int> -> !u32i + // CIR: cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> + // CIR: cir.unary(not, {{.*}}) : !cir.vector<32 x !cir.int> + // CIR: cir.binop(and, {{.*}}, {{.*}}) : !cir.vector<32 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !cir.vector<32 x !cir.int> -> !u32i // LLVM-LABEL: _kandn_mask32 // LLVM: [[L:%.*]] = bitcast i32 %{{.*}} to <32 x i1> @@ -243,11 +243,11 @@ __mmask32 test_kandn_mask32(__mmask32 A, __mmask32 B) { __mmask64 test_kandn_mask64(__mmask64 A, __mmask64 B) { // CIR-LABEL: _kandn_mask64 - // CIR: cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> - // CIR: cir.unary(not, {{.*}}) : !cir.vector<64 x !cir.int> - // CIR: cir.binop(and, {{.*}}, {{.*}}) : !cir.vector<64 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !cir.vector<64 x !cir.int> -> !u64i + // CIR: cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> + // CIR: cir.unary(not, {{.*}}) : !cir.vector<64 x !cir.int> + // CIR: cir.binop(and, {{.*}}, {{.*}}) : !cir.vector<64 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !cir.vector<64 x !cir.int> -> !u64i // LLVM-LABEL: _kandn_mask64 // LLVM: [[L:%.*]] = bitcast i64 %{{.*}} to <64 x i1> @@ -267,10 +267,10 @@ __mmask64 test_kandn_mask64(__mmask64 A, __mmask64 B) { __mmask32 test_kor_mask32(__mmask32 A, __mmask32 B) { // CIR-LABEL: _kor_mask32 - // CIR: cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> - // CIR: cir.binop(or, {{.*}}, {{.*}}) : !cir.vector<32 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !cir.vector<32 x !cir.int> -> !u32i + // CIR: cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> + // CIR: cir.binop(or, {{.*}}, {{.*}}) : !cir.vector<32 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !cir.vector<32 x !cir.int> -> !u32i // LLVM-LABEL: _kor_mask32 // LLVM: [[L:%.*]] = bitcast i32 %{{.*}} to <32 x i1> @@ -288,10 +288,10 @@ __mmask32 test_kor_mask32(__mmask32 A, __mmask32 B) { __mmask64 test_kor_mask64(__mmask64 A, __mmask64 B) { // CIR-LABEL: _kor_mask64 - // CIR: cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> - // CIR: cir.binop(or, {{.*}}, {{.*}}) : !cir.vector<64 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !cir.vector<64 x !cir.int> -> !u64i + // CIR: cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> + // CIR: cir.binop(or, {{.*}}, {{.*}}) : !cir.vector<64 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !cir.vector<64 x !cir.int> -> !u64i // LLVM-LABEL: _kor_mask64 // LLVM: [[L:%.*]] = bitcast i64 %{{.*}} to <64 x i1> @@ -309,10 +309,10 @@ __mmask64 test_kor_mask64(__mmask64 A, __mmask64 B) { __mmask32 test_kxor_mask32(__mmask32 A, __mmask32 B) { // CIR-LABEL: _kxor_mask32 - // CIR: cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> - // CIR: cir.binop(xor, {{.*}}, {{.*}}) : !cir.vector<32 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !cir.vector<32 x !cir.int> -> !u32i + // CIR: cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> + // CIR: cir.binop(xor, {{.*}}, {{.*}}) : !cir.vector<32 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !cir.vector<32 x !cir.int> -> !u32i // LLVM-LABEL: _kxor_mask32 // LLVM: [[L:%.*]] = bitcast i32 %{{.*}} to <32 x i1> @@ -330,10 +330,10 @@ __mmask32 test_kxor_mask32(__mmask32 A, __mmask32 B) { __mmask64 test_kxor_mask64(__mmask64 A, __mmask64 B) { // CIR-LABEL: _kxor_mask64 - // CIR: cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> - // CIR: cir.binop(xor, {{.*}}, {{.*}}) : !cir.vector<64 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !cir.vector<64 x !cir.int> -> !u64i + // CIR: cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> + // CIR: cir.binop(xor, {{.*}}, {{.*}}) : !cir.vector<64 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !cir.vector<64 x !cir.int> -> !u64i // LLVM-LABEL: _kxor_mask64 // LLVM: [[L:%.*]] = bitcast i64 %{{.*}} to <64 x i1> @@ -351,11 +351,11 @@ __mmask64 test_kxor_mask64(__mmask64 A, __mmask64 B) { __mmask32 test_kxnor_mask32(__mmask32 A, __mmask32 B) { // CIR-LABEL: _kxnor_mask32 - // CIR: cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> - // CIR: cir.unary(not, {{.*}}) : !cir.vector<32 x !cir.int> - // CIR: cir.binop(xor, {{.*}}, {{.*}}) : !cir.vector<32 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !cir.vector<32 x !cir.int> -> !u32i + // CIR: cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> + // CIR: cir.unary(not, {{.*}}) : !cir.vector<32 x !cir.int> + // CIR: cir.binop(xor, {{.*}}, {{.*}}) : !cir.vector<32 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !cir.vector<32 x !cir.int> -> !u32i // LLVM-LABEL: _kxnor_mask32 // LLVM: [[L:%.*]] = bitcast i32 %{{.*}} to <32 x i1> @@ -376,11 +376,11 @@ __mmask32 test_kxnor_mask32(__mmask32 A, __mmask32 B) { __mmask64 test_kxnor_mask64(__mmask64 A, __mmask64 B) { // CIR-LABEL: _kxnor_mask64 - // CIR: cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> - // CIR: cir.unary(not, {{.*}}) : !cir.vector<64 x !cir.int> - // CIR: cir.binop(xor, {{.*}}, {{.*}}) : !cir.vector<64 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !cir.vector<64 x !cir.int> -> !u64i + // CIR: cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> + // CIR: cir.unary(not, {{.*}}) : !cir.vector<64 x !cir.int> + // CIR: cir.binop(xor, {{.*}}, {{.*}}) : !cir.vector<64 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !cir.vector<64 x !cir.int> -> !u64i // LLVM-LABEL: _kxnor_mask64 // LLVM: [[L:%.*]] = bitcast i64 %{{.*}} to <64 x i1> @@ -402,9 +402,9 @@ __mmask64 test_kxnor_mask64(__mmask64 A, __mmask64 B) { __mmask32 test_knot_mask32(__mmask32 A) { // CIR-LABEL: _knot_mask32 - // CIR: cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> - // CIR: cir.unary(not, {{.*}}) : !cir.vector<32 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !cir.vector<32 x !cir.int> -> !u32i + // CIR: cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> + // CIR: cir.unary(not, {{.*}}) : !cir.vector<32 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !cir.vector<32 x !cir.int> -> !u32i // LLVM-LABEL: _knot_mask32 // LLVM: bitcast i32 %{{.*}} to <32 x i1> @@ -420,9 +420,9 @@ __mmask32 test_knot_mask32(__mmask32 A) { __mmask64 test_knot_mask64(__mmask64 A) { // CIR-LABEL: _knot_mask64 - // CIR: cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> - // CIR: cir.unary(not, {{.*}}) : !cir.vector<64 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !cir.vector<64 x !cir.int> -> !u64i + // CIR: cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> + // CIR: cir.unary(not, {{.*}}) : !cir.vector<64 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !cir.vector<64 x !cir.int> -> !u64i // LLVM-LABEL: _knot_mask64 // LLVM: bitcast i64 %{{.*}} to <64 x i1> @@ -445,8 +445,8 @@ __mmask64 test_knot_mask64(__mmask64 A) { __mmask32 test_kmov_d(__mmask32 A) { // CIR-LABEL: test_kmov_d - // CIR: cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !cir.vector<32 x !cir.int> -> !u32i + // CIR: cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !cir.vector<32 x !cir.int> -> !u32i // LLVM-LABEL: test_kmov_d // LLVM: bitcast i32 %{{.*}} to <32 x i1> @@ -468,8 +468,8 @@ __mmask32 test_kmov_d(__mmask32 A) { __mmask64 test_kmov_q(__mmask64 A) { // CIR-LABEL: test_kmov_q - // CIR: cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !cir.vector<64 x !cir.int> -> !u64i + // CIR: cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !cir.vector<64 x !cir.int> -> !u64i // LLVM-LABEL: test_kmov_q // LLVM: bitcast i64 %{{.*}} to <64 x i1> @@ -484,12 +484,12 @@ __mmask64 test_kmov_q(__mmask64 A) { __mmask32 test_mm512_kunpackw(__mmask32 A, __mmask32 B) { // CIR-LABEL: _mm512_kunpackw - // CIR: cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> // CIR: cir.vec.shuffle // CIR: cir.vec.shuffle // CIR: cir.vec.shuffle - // CIR: cir.cast bitcast {{.*}} : !cir.vector<32 x !cir.int> -> !u32i + // CIR: cir.cast bitcast {{.*}} : !cir.vector<32 x !cir.int> -> !u32i // LLVM-LABEL: _mm512_kunpackw // LLVM: [[A_VEC:%.*]] = bitcast i32 %{{.*}} to <32 x i1> @@ -511,12 +511,12 @@ __mmask32 test_mm512_kunpackw(__mmask32 A, __mmask32 B) { __mmask64 test_mm512_kunpackd(__mmask64 A, __mmask64 B) { // CIR-LABEL: _mm512_kunpackd - // CIR: cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> // CIR: cir.vec.shuffle // CIR: cir.vec.shuffle // CIR: cir.vec.shuffle - // CIR: cir.cast bitcast {{.*}} : !cir.vector<64 x !cir.int> -> !u64i + // CIR: cir.cast bitcast {{.*}} : !cir.vector<64 x !cir.int> -> !u64i // LLVM-LABEL: _mm512_kunpackd // LLVM: [[A_VEC:%.*]] = bitcast i64 %{{.*}} to <64 x i1> @@ -563,10 +563,10 @@ __m512i test_mm512_shufflehi_epi16(__m512i __A) { unsigned char test_kortestc_mask32_u8(__mmask32 __A, __mmask32 __B) { // CIR-LABEL: _kortestc_mask32_u8 // CIR: %[[ALL_ONES:.*]] = cir.const #cir.int<4294967295> : !u32i - // CIR: %[[LHS:.*]] = cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> - // CIR: %[[RHS:.*]] = cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> - // CIR: %[[OR:.*]] = cir.binop(or, %[[LHS]], %[[RHS]]) : !cir.vector<32 x !cir.int> - // CIR: %[[OR_INT:.*]] = cir.cast bitcast %[[OR]] : !cir.vector<32 x !cir.int> -> !u32i + // CIR: %[[LHS:.*]] = cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> + // CIR: %[[RHS:.*]] = cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> + // CIR: %[[OR:.*]] = cir.binop(or, %[[LHS]], %[[RHS]]) : !cir.vector<32 x !cir.int> + // CIR: %[[OR_INT:.*]] = cir.cast bitcast %[[OR]] : !cir.vector<32 x !cir.int> -> !u32i // CIR: %[[CMP:.*]] = cir.cmp(eq, %[[OR_INT]], %[[ALL_ONES]]) : !u32i, !cir.bool // CIR: %[[B2I:.*]] = cir.cast bool_to_int %[[CMP]] : !cir.bool -> !s32i // CIR: cir.cast integral %[[B2I]] : !s32i -> !u8i @@ -594,10 +594,10 @@ unsigned char test_kortestc_mask32_u8(__mmask32 __A, __mmask32 __B) { unsigned char test_kortestc_mask64_u8(__mmask64 __A, __mmask64 __B) { // CIR-LABEL: _kortestc_mask64_u8 // CIR: %[[ALL_ONES:.*]] = cir.const #cir.int<18446744073709551615> : !u64i - // CIR: %[[LHS:.*]] = cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> - // CIR: %[[RHS:.*]] = cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> - // CIR: %[[OR:.*]] = cir.binop(or, %[[LHS]], %[[RHS]]) : !cir.vector<64 x !cir.int> - // CIR: %[[OR_INT:.*]] = cir.cast bitcast %[[OR]] : !cir.vector<64 x !cir.int> -> !u64i + // CIR: %[[LHS:.*]] = cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> + // CIR: %[[RHS:.*]] = cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> + // CIR: %[[OR:.*]] = cir.binop(or, %[[LHS]], %[[RHS]]) : !cir.vector<64 x !cir.int> + // CIR: %[[OR_INT:.*]] = cir.cast bitcast %[[OR]] : !cir.vector<64 x !cir.int> -> !u64i // CIR: %[[CMP:.*]] = cir.cmp(eq, %[[OR_INT]], %[[ALL_ONES]]) : !u64i, !cir.bool // CIR: %[[B2I:.*]] = cir.cast bool_to_int %[[CMP]] : !cir.bool -> !s32i // CIR: cir.cast integral %[[B2I]] : !s32i -> !u8i @@ -625,10 +625,10 @@ unsigned char test_kortestc_mask64_u8(__mmask64 __A, __mmask64 __B) { unsigned char test_kortestz_mask32_u8(__mmask32 __A, __mmask32 __B) { // CIR-LABEL: _kortestz_mask32_u8 // CIR: %[[ZERO:.*]] = cir.const #cir.int<0> : !u32i - // CIR: %[[LHS:.*]] = cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> - // CIR: %[[RHS:.*]] = cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> - // CIR: %[[OR:.*]] = cir.binop(or, %[[LHS]], %[[RHS]]) : !cir.vector<32 x !cir.int> - // CIR: %[[OR_INT:.*]] = cir.cast bitcast %[[OR]] : !cir.vector<32 x !cir.int> -> !u32i + // CIR: %[[LHS:.*]] = cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> + // CIR: %[[RHS:.*]] = cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> + // CIR: %[[OR:.*]] = cir.binop(or, %[[LHS]], %[[RHS]]) : !cir.vector<32 x !cir.int> + // CIR: %[[OR_INT:.*]] = cir.cast bitcast %[[OR]] : !cir.vector<32 x !cir.int> -> !u32i // CIR: %[[CMP:.*]] = cir.cmp(eq, %[[OR_INT]], %[[ZERO]]) : !u32i, !cir.bool // CIR: %[[B2I:.*]] = cir.cast bool_to_int %[[CMP]] : !cir.bool -> !s32i // CIR: cir.cast integral %[[B2I]] : !s32i -> !u8i @@ -656,10 +656,10 @@ unsigned char test_kortestz_mask32_u8(__mmask32 __A, __mmask32 __B) { unsigned char test_kortestz_mask64_u8(__mmask64 __A, __mmask64 __B) { // CIR-LABEL: _kortestz_mask64_u8 // CIR: %[[ZERO:.*]] = cir.const #cir.int<0> : !u64i - // CIR: %[[LHS:.*]] = cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> - // CIR: %[[RHS:.*]] = cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> - // CIR: %[[OR:.*]] = cir.binop(or, %[[LHS]], %[[RHS]]) : !cir.vector<64 x !cir.int> - // CIR: %[[OR_INT:.*]] = cir.cast bitcast %[[OR]] : !cir.vector<64 x !cir.int> -> !u64i + // CIR: %[[LHS:.*]] = cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> + // CIR: %[[RHS:.*]] = cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> + // CIR: %[[OR:.*]] = cir.binop(or, %[[LHS]], %[[RHS]]) : !cir.vector<64 x !cir.int> + // CIR: %[[OR_INT:.*]] = cir.cast bitcast %[[OR]] : !cir.vector<64 x !cir.int> -> !u64i // CIR: %[[CMP:.*]] = cir.cmp(eq, %[[OR_INT]], %[[ZERO]]) : !u64i, !cir.bool // CIR: %[[B2I:.*]] = cir.cast bool_to_int %[[CMP]] : !cir.bool -> !s32i // CIR: cir.cast integral %[[B2I]] : !s32i -> !u8i @@ -686,8 +686,8 @@ unsigned char test_kortestz_mask64_u8(__mmask64 __A, __mmask64 __B) { unsigned char test_ktestc_mask32_u8(__mmask32 A, __mmask32 B) { // CIR-LABEL: _ktestc_mask32_u8 - // CIR: %[[LHS:.*]] = cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> - // CIR: %[[RHS:.*]] = cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> + // CIR: %[[LHS:.*]] = cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> + // CIR: %[[RHS:.*]] = cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> // CIR: %[[RES:.*]] = cir.call_llvm_intrinsic "x86.avx512.ktestc.d" // CIR: cir.cast integral %[[RES]] : {{.*}} -> !u8i @@ -707,8 +707,8 @@ unsigned char test_ktestc_mask32_u8(__mmask32 A, __mmask32 B) { unsigned char test_ktestz_mask32_u8(__mmask32 A, __mmask32 B) { // CIR-LABEL: _ktestz_mask32_u8 - // CIR: %[[LHS:.*]] = cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> - // CIR: %[[RHS:.*]] = cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> + // CIR: %[[LHS:.*]] = cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> + // CIR: %[[RHS:.*]] = cir.cast bitcast {{.*}} : !u32i -> !cir.vector<32 x !cir.int> // CIR: %[[RES:.*]] = cir.call_llvm_intrinsic "x86.avx512.ktestz.d" // CIR: cir.cast integral %[[RES]] : {{.*}} -> !u8i @@ -728,8 +728,8 @@ unsigned char test_ktestz_mask32_u8(__mmask32 A, __mmask32 B) { unsigned char test_ktestc_mask64_u8(__mmask64 A, __mmask64 B) { // CIR-LABEL: _ktestc_mask64_u8 - // CIR: %[[LHS:.*]] = cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> - // CIR: %[[RHS:.*]] = cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> + // CIR: %[[LHS:.*]] = cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> + // CIR: %[[RHS:.*]] = cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> // CIR: %[[RES:.*]] = cir.call_llvm_intrinsic "x86.avx512.ktestc.q" // CIR: cir.cast integral %[[RES]] : {{.*}} -> !u8i @@ -749,8 +749,8 @@ unsigned char test_ktestc_mask64_u8(__mmask64 A, __mmask64 B) { unsigned char test_ktestz_mask64_u8(__mmask64 A, __mmask64 B) { // CIR-LABEL: _ktestz_mask64_u8 - // CIR: %[[LHS:.*]] = cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> - // CIR: %[[RHS:.*]] = cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> + // CIR: %[[LHS:.*]] = cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> + // CIR: %[[RHS:.*]] = cir.cast bitcast {{.*}} : !u64i -> !cir.vector<64 x !cir.int> // CIR: %[[RES:.*]] = cir.call_llvm_intrinsic "x86.avx512.ktestz.q" // CIR: cir.cast integral %[[RES]] : {{.*}} -> !u8i diff --git a/clang/test/CIR/CodeGenBuiltins/X86/avx512dq-builtins.c b/clang/test/CIR/CodeGenBuiltins/X86/avx512dq-builtins.c index 79156bed56fd0..0ba84053c15b1 100644 --- a/clang/test/CIR/CodeGenBuiltins/X86/avx512dq-builtins.c +++ b/clang/test/CIR/CodeGenBuiltins/X86/avx512dq-builtins.c @@ -15,10 +15,10 @@ __mmask8 test_kadd_mask8(__mmask8 A, __mmask8 B) { // CIR-LABEL: _kadd_mask8 - // CIR: cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> // CIR: cir.call_llvm_intrinsic "x86.avx512.kadd.b" - // CIR: cir.cast bitcast {{.*}} : !cir.vector<8 x !cir.int> -> !u8i + // CIR: cir.cast bitcast {{.*}} : !cir.vector<8 x !cir.int> -> !u8i // LLVM-LABEL: _kadd_mask8 // LLVM: [[L:%.*]] = bitcast i8 %{{.*}} to <8 x i1> @@ -36,10 +36,10 @@ __mmask8 test_kadd_mask8(__mmask8 A, __mmask8 B) { __mmask16 test_kadd_mask16(__mmask16 A, __mmask16 B) { // CIR-LABEL: _kadd_mask16 - // CIR: cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> // CIR: cir.call_llvm_intrinsic "x86.avx512.kadd.w" - // CIR: cir.cast bitcast {{.*}} : !cir.vector<16 x !cir.int> -> !u16i + // CIR: cir.cast bitcast {{.*}} : !cir.vector<16 x !cir.int> -> !u16i // LLVM-LABEL: _kadd_mask16 // LLVM: [[L:%.*]] = bitcast i16 %{{.*}} to <16 x i1> @@ -57,10 +57,10 @@ __mmask16 test_kadd_mask16(__mmask16 A, __mmask16 B) { __mmask8 test_kand_mask8(__mmask8 A, __mmask8 B) { // CIR-LABEL: _kand_mask8 - // CIR: cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> - // CIR: cir.binop(and, {{.*}}, {{.*}}) : !cir.vector<8 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !cir.vector<8 x !cir.int> -> !u8i + // CIR: cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> + // CIR: cir.binop(and, {{.*}}, {{.*}}) : !cir.vector<8 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !cir.vector<8 x !cir.int> -> !u8i // LLVM-LABEL: _kand_mask8 // LLVM: [[L:%.*]] = bitcast i8 %{{.*}} to <8 x i1> @@ -79,11 +79,11 @@ __mmask8 test_kand_mask8(__mmask8 A, __mmask8 B) { __mmask8 test_kandn_mask8(__mmask8 A, __mmask8 B) { // CIR-LABEL: _kandn_mask8 - // CIR: cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> - // CIR: cir.unary(not, {{.*}}) : !cir.vector<8 x !cir.int> - // CIR: cir.binop(and, {{.*}}, {{.*}}) : !cir.vector<8 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !cir.vector<8 x !cir.int> -> !u8i + // CIR: cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> + // CIR: cir.unary(not, {{.*}}) : !cir.vector<8 x !cir.int> + // CIR: cir.binop(and, {{.*}}, {{.*}}) : !cir.vector<8 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !cir.vector<8 x !cir.int> -> !u8i // LLVM-LABEL: _kandn_mask8 // LLVM: [[L:%.*]] = bitcast i8 %{{.*}} to <8 x i1> @@ -104,10 +104,10 @@ __mmask8 test_kandn_mask8(__mmask8 A, __mmask8 B) { __mmask8 test_kor_mask8(__mmask8 A, __mmask8 B) { // CIR-LABEL: _kor_mask8 - // CIR: cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> - // CIR: cir.binop(or, {{.*}}, {{.*}}) : !cir.vector<8 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !cir.vector<8 x !cir.int> -> !u8i + // CIR: cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> + // CIR: cir.binop(or, {{.*}}, {{.*}}) : !cir.vector<8 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !cir.vector<8 x !cir.int> -> !u8i // LLVM-LABEL: _kor_mask8 // LLVM: [[L:%.*]] = bitcast i8 %{{.*}} to <8 x i1> @@ -125,10 +125,10 @@ __mmask8 test_kor_mask8(__mmask8 A, __mmask8 B) { __mmask8 test_kxor_mask8(__mmask8 A, __mmask8 B) { // CIR-LABEL: _kxor_mask8 - // CIR: cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> - // CIR: cir.binop(xor, {{.*}}, {{.*}}) : !cir.vector<8 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !cir.vector<8 x !cir.int> -> !u8i + // CIR: cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> + // CIR: cir.binop(xor, {{.*}}, {{.*}}) : !cir.vector<8 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !cir.vector<8 x !cir.int> -> !u8i // LLVM-LABEL: _kxor_mask8 // LLVM: [[L:%.*]] = bitcast i8 %{{.*}} to <8 x i1> @@ -146,11 +146,11 @@ __mmask8 test_kxor_mask8(__mmask8 A, __mmask8 B) { __mmask8 test_kxnor_mask8(__mmask8 A, __mmask8 B) { // CIR-LABEL: _kxnor_mask8 - // CIR: cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> - // CIR: cir.unary(not, {{.*}}) : !cir.vector<8 x !cir.int> - // CIR: cir.binop(xor, {{.*}}, {{.*}}) : !cir.vector<8 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !cir.vector<8 x !cir.int> -> !u8i + // CIR: cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> + // CIR: cir.unary(not, {{.*}}) : !cir.vector<8 x !cir.int> + // CIR: cir.binop(xor, {{.*}}, {{.*}}) : !cir.vector<8 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !cir.vector<8 x !cir.int> -> !u8i // LLVM-LABEL: _kxnor_mask8 // LLVM: [[L:%.*]] = bitcast i8 %{{.*}} to <8 x i1> @@ -171,9 +171,9 @@ __mmask8 test_kxnor_mask8(__mmask8 A, __mmask8 B) { __mmask8 test_knot_mask8(__mmask8 A) { // CIR-LABEL: _knot_mask8 - // CIR: cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> - // CIR: cir.unary(not, {{.*}}) : !cir.vector<8 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !cir.vector<8 x !cir.int> -> !u8i + // CIR: cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> + // CIR: cir.unary(not, {{.*}}) : !cir.vector<8 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !cir.vector<8 x !cir.int> -> !u8i // LLVM-LABEL: _knot_mask8 // LLVM: [[L:%.*]] = bitcast i8 %{{.*}} to <8 x i1> @@ -196,8 +196,8 @@ __mmask8 test_knot_mask8(__mmask8 A) { __mmask8 test_kmov_b(__mmask8 A) { // CIR-LABEL: test_kmov_b - // CIR: cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !cir.vector<8 x !cir.int> -> !u8i + // CIR: cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !cir.vector<8 x !cir.int> -> !u8i // LLVM-LABEL: test_kmov_b // LLVM: bitcast i8 %{{.*}} to <8 x i1> @@ -212,10 +212,10 @@ __mmask8 test_kmov_b(__mmask8 A) { unsigned char test_kortestc_mask8_u8(__mmask8 __A, __mmask8 __B) { // CIR-LABEL: _kortestc_mask8_u8 // CIR: %[[ALL_ONES:.*]] = cir.const #cir.int<255> : !u8i - // CIR: %[[LHS:.*]] = cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> - // CIR: %[[RHS:.*]] = cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> - // CIR: %[[OR:.*]] = cir.binop(or, %[[LHS]], %[[RHS]]) : !cir.vector<8 x !cir.int> - // CIR: %[[OR_INT:.*]] = cir.cast bitcast %[[OR]] : !cir.vector<8 x !cir.int> -> !u8i + // CIR: %[[LHS:.*]] = cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> + // CIR: %[[RHS:.*]] = cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> + // CIR: %[[OR:.*]] = cir.binop(or, %[[LHS]], %[[RHS]]) : !cir.vector<8 x !cir.int> + // CIR: %[[OR_INT:.*]] = cir.cast bitcast %[[OR]] : !cir.vector<8 x !cir.int> -> !u8i // CIR: %[[CMP:.*]] = cir.cmp(eq, %[[OR_INT]], %[[ALL_ONES]]) : !u8i, !cir.bool // CIR: cir.cast bool_to_int %[[CMP]] : !cir.bool -> !s32i // CIR: cir.cast integral {{.*}} : !s32i -> !u8i @@ -242,8 +242,8 @@ unsigned char test_kortestc_mask8_u8(__mmask8 __A, __mmask8 __B) { unsigned char test_ktestc_mask8_u8(__mmask8 A, __mmask8 B) { // CIR-LABEL: _ktestc_mask8_u8 - // CIR: %[[LHS:.*]] = cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> - // CIR: %[[RHS:.*]] = cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> + // CIR: %[[LHS:.*]] = cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> + // CIR: %[[RHS:.*]] = cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> // CIR: %[[RES:.*]] = cir.call_llvm_intrinsic "x86.avx512.ktestc.b" // CIR: cir.cast integral %[[RES]] : {{.*}} -> !u8i @@ -263,8 +263,8 @@ unsigned char test_ktestc_mask8_u8(__mmask8 A, __mmask8 B) { unsigned char test_ktestz_mask8_u8(__mmask8 A, __mmask8 B) { // CIR-LABEL: _ktestz_mask8_u8 - // CIR: %[[LHS:.*]] = cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> - // CIR: %[[RHS:.*]] = cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> + // CIR: %[[LHS:.*]] = cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> + // CIR: %[[RHS:.*]] = cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> // CIR: %[[RES:.*]] = cir.call_llvm_intrinsic "x86.avx512.ktestz.b" // CIR: cir.cast integral %[[RES]] : {{.*}} -> !u8i @@ -284,8 +284,8 @@ unsigned char test_ktestz_mask8_u8(__mmask8 A, __mmask8 B) { unsigned char test_ktestc_mask16_u8(__mmask16 A, __mmask16 B) { // CIR-LABEL: _ktestc_mask16_u8 - // CIR: %[[LHS:.*]] = cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> - // CIR: %[[RHS:.*]] = cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> + // CIR: %[[LHS:.*]] = cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> + // CIR: %[[RHS:.*]] = cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> // CIR: %[[RES:.*]] = cir.call_llvm_intrinsic "x86.avx512.ktestc.w" // CIR: cir.cast integral %[[RES]] : {{.*}} -> !u8i @@ -305,8 +305,8 @@ unsigned char test_ktestc_mask16_u8(__mmask16 A, __mmask16 B) { unsigned char test_ktestz_mask16_u8(__mmask16 A, __mmask16 B) { // CIR-LABEL: _ktestz_mask16_u8 - // CIR: %[[LHS:.*]] = cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> - // CIR: %[[RHS:.*]] = cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> + // CIR: %[[LHS:.*]] = cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> + // CIR: %[[RHS:.*]] = cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> // CIR: %[[RES:.*]] = cir.call_llvm_intrinsic "x86.avx512.ktestz.w" // CIR: cir.cast integral %[[RES]] : {{.*}} -> !u8i diff --git a/clang/test/CIR/CodeGenBuiltins/X86/avx512f-builtins.c b/clang/test/CIR/CodeGenBuiltins/X86/avx512f-builtins.c index d84ec3c25b2c2..9d5d5e67d6ad9 100644 --- a/clang/test/CIR/CodeGenBuiltins/X86/avx512f-builtins.c +++ b/clang/test/CIR/CodeGenBuiltins/X86/avx512f-builtins.c @@ -176,10 +176,10 @@ __m512i test_mm512_inserti32x4(__m512i __A, __m128i __B) { __mmask16 test_mm512_kand(__mmask16 A, __mmask16 B) { // CIR-LABEL: _mm512_kand - // CIR: cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> - // CIR: cir.binop(and, {{.*}}, {{.*}}) : !cir.vector<16 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !cir.vector<16 x !cir.int> -> !u16i + // CIR: cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> + // CIR: cir.binop(and, {{.*}}, {{.*}}) : !cir.vector<16 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !cir.vector<16 x !cir.int> -> !u16i // LLVM-LABEL: _mm512_kand // LLVM: [[L:%.*]] = bitcast i16 %{{.*}} to <16 x i1> @@ -197,11 +197,11 @@ __mmask16 test_mm512_kand(__mmask16 A, __mmask16 B) { __mmask16 test_mm512_kandn(__mmask16 A, __mmask16 B) { // CIR-LABEL: _mm512_kandn - // CIR: cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> - // CIR: cir.unary(not, {{.*}}) : !cir.vector<16 x !cir.int> - // CIR: cir.binop(and, {{.*}}, {{.*}}) : !cir.vector<16 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !cir.vector<16 x !cir.int> -> !u16i + // CIR: cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> + // CIR: cir.unary(not, {{.*}}) : !cir.vector<16 x !cir.int> + // CIR: cir.binop(and, {{.*}}, {{.*}}) : !cir.vector<16 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !cir.vector<16 x !cir.int> -> !u16i // LLVM-LABEL: _mm512_kandn // LLVM: [[L:%.*]] = bitcast i16 %{{.*}} to <16 x i1> @@ -221,10 +221,10 @@ __mmask16 test_mm512_kandn(__mmask16 A, __mmask16 B) { __mmask16 test_mm512_kor(__mmask16 A, __mmask16 B) { // CIR-LABEL: _mm512_kor - // CIR: cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> - // CIR: cir.binop(or, {{.*}}, {{.*}}) : !cir.vector<16 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !cir.vector<16 x !cir.int> -> !u16i + // CIR: cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> + // CIR: cir.binop(or, {{.*}}, {{.*}}) : !cir.vector<16 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !cir.vector<16 x !cir.int> -> !u16i // LLVM-LABEL: _mm512_kor // LLVM: [[L:%.*]] = bitcast i16 %{{.*}} to <16 x i1> @@ -242,11 +242,11 @@ __mmask16 test_mm512_kor(__mmask16 A, __mmask16 B) { __mmask16 test_mm512_kxnor(__mmask16 A, __mmask16 B) { // CIR-LABEL: _mm512_kxnor - // CIR: cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> - // CIR: cir.unary(not, {{.*}}) : !cir.vector<16 x !cir.int> - // CIR: cir.binop(xor, {{.*}}, {{.*}}) : !cir.vector<16 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !cir.vector<16 x !cir.int> -> !u16i + // CIR: cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> + // CIR: cir.unary(not, {{.*}}) : !cir.vector<16 x !cir.int> + // CIR: cir.binop(xor, {{.*}}, {{.*}}) : !cir.vector<16 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !cir.vector<16 x !cir.int> -> !u16i // LLVM-LABEL: _mm512_kxnor // LLVM: [[L:%.*]] = bitcast i16 %{{.*}} to <16 x i1> @@ -266,10 +266,10 @@ __mmask16 test_mm512_kxnor(__mmask16 A, __mmask16 B) { __mmask16 test_mm512_kxor(__mmask16 A, __mmask16 B) { // CIR-LABEL: _mm512_kxor - // CIR: cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> - // CIR: cir.binop(xor, {{.*}}, {{.*}}) : !cir.vector<16 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !cir.vector<16 x !cir.int> -> !u16i + // CIR: cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> + // CIR: cir.binop(xor, {{.*}}, {{.*}}) : !cir.vector<16 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !cir.vector<16 x !cir.int> -> !u16i // LLVM-LABEL: _mm512_kxor // LLVM: [[L:%.*]] = bitcast i16 %{{.*}} to <16 x i1> @@ -287,9 +287,9 @@ __mmask16 test_mm512_kxor(__mmask16 A, __mmask16 B) { __mmask16 test_mm512_knot(__mmask16 A) { // CIR-LABEL: _mm512_knot - // CIR: cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> - // CIR: cir.unary(not, {{.*}}) : !cir.vector<16 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !cir.vector<16 x !cir.int> -> !u16i + // CIR: cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> + // CIR: cir.unary(not, {{.*}}) : !cir.vector<16 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !cir.vector<16 x !cir.int> -> !u16i // LLVM-LABEL: _mm512_knot // LLVM: bitcast i16 %{{.*}} to <16 x i1> @@ -312,8 +312,8 @@ __mmask16 test_mm512_knot(__mmask16 A) { __mmask16 test_kmov_w(__mmask16 A) { // CIR-LABEL: test_kmov_w - // CIR: cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !cir.vector<16 x !cir.int> -> !u16i + // CIR: cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !cir.vector<16 x !cir.int> -> !u16i // LLVM-LABEL: test_kmov_w // LLVM: bitcast i16 %{{.*}} to <16 x i1> @@ -327,12 +327,12 @@ __mmask16 test_kmov_w(__mmask16 A) { __mmask16 test_mm512_kunpackb(__mmask16 A, __mmask16 B) { // CIR-LABEL: _mm512_kunpackb - // CIR: cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> - // CIR: cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> + // CIR: cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> // CIR: cir.vec.shuffle // CIR: cir.vec.shuffle // CIR: cir.vec.shuffle - // CIR: cir.cast bitcast {{.*}} : !cir.vector<16 x !cir.int> -> !u16i + // CIR: cir.cast bitcast {{.*}} : !cir.vector<16 x !cir.int> -> !u16i // LLVM-LABEL: _mm512_kunpackb // LLVM: [[A_VEC:%.*]] = bitcast i16 %{{.*}} to <16 x i1> @@ -762,9 +762,9 @@ __m256d test_mm512_mask_extractf64x4_pd(__m256d __W,__mmask8 __U,__m512d __A){ // CIR-LABEL: test_mm512_mask_extractf64x4_pd // CIR: [[POISON:%.*]] = cir.const #cir.poison : !cir.vector<8 x !cir.double> // CIR: [[FULL_VEC:%.*]] = cir.vec.shuffle(%{{.*}}, [[POISON]] : !cir.vector<8 x !cir.double>) [#cir.int<4> : !s32i, #cir.int<5> : !s32i, #cir.int<6> : !s32i, #cir.int<7> : !s32i] : !cir.vector<4 x !cir.double> - // CIR: [[MASK_VEC:%.*]] = cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> - // CIR: [[FULL_MASK_VEC:%.*]] = cir.vec.shuffle([[MASK_VEC]], [[MASK_VEC]] : !cir.vector<8 x !cir.int>) [#cir.int<0> : !s32i, #cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i] : !cir.vector<4 x !cir.int> - // CIR: cir.vec.ternary([[FULL_MASK_VEC]], [[FULL_VEC]], {{.*}}) : !cir.vector<4 x !cir.int>, !cir.vector<4 x !cir.double> + // CIR: [[MASK_VEC:%.*]] = cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> + // CIR: [[FULL_MASK_VEC:%.*]] = cir.vec.shuffle([[MASK_VEC]], [[MASK_VEC]] : !cir.vector<8 x !cir.int>) [#cir.int<0> : !s32i, #cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i] : !cir.vector<4 x !cir.int> + // CIR: cir.vec.ternary([[FULL_MASK_VEC]], [[FULL_VEC]], {{.*}}) : !cir.vector<4 x !cir.int>, !cir.vector<4 x !cir.double> // LLVM-LABEL: test_mm512_mask_extractf64x4_pd // LLVM: shufflevector <8 x double> %{{.*}}, <8 x double> poison, <4 x i32> @@ -780,9 +780,9 @@ __m256d test_mm512_maskz_extractf64x4_pd(__mmask8 __U,__m512d __A){ // CIR-LABEL: test_mm512_maskz_extractf64x4_pd // CIR: [[POISON:%.*]] = cir.const #cir.poison : !cir.vector<8 x !cir.double> // CIR: [[FULL_VEC:%.*]] = cir.vec.shuffle(%{{.*}}, [[POISON]] : !cir.vector<8 x !cir.double>) [#cir.int<4> : !s32i, #cir.int<5> : !s32i, #cir.int<6> : !s32i, #cir.int<7> : !s32i] : !cir.vector<4 x !cir.double> - // CIR: [[MASK_VEC:%.*]] = cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> - // CIR: [[FULL_MASK_VEC:%.*]] = cir.vec.shuffle([[MASK_VEC]], [[MASK_VEC]] : !cir.vector<8 x !cir.int>) [#cir.int<0> : !s32i, #cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i] : !cir.vector<4 x !cir.int> - // CIR: cir.vec.ternary([[FULL_MASK_VEC]], [[FULL_VEC]], {{.*}}) : !cir.vector<4 x !cir.int>, !cir.vector<4 x !cir.double> + // CIR: [[MASK_VEC:%.*]] = cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> + // CIR: [[FULL_MASK_VEC:%.*]] = cir.vec.shuffle([[MASK_VEC]], [[MASK_VEC]] : !cir.vector<8 x !cir.int>) [#cir.int<0> : !s32i, #cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i] : !cir.vector<4 x !cir.int> + // CIR: cir.vec.ternary([[FULL_MASK_VEC]], [[FULL_VEC]], {{.*}}) : !cir.vector<4 x !cir.int>, !cir.vector<4 x !cir.double> // LLVM-LABEL: test_mm512_maskz_extractf64x4_pd // LLVM: shufflevector <8 x double> %{{.*}}, <8 x double> poison, <4 x i32> @@ -812,9 +812,9 @@ __m128 test_mm512_mask_extractf32x4_ps(__m128 __W, __mmask8 __U,__m512 __A){ // CIR-LABEL: test_mm512_mask_extractf32x4_ps // CIR: [[POISON:%.*]] = cir.const #cir.poison : !cir.vector<16 x !cir.float> // CIR: [[FULL_VEC:%.*]] = cir.vec.shuffle(%{{.*}}, [[POISON]] : !cir.vector<16 x !cir.float>) [#cir.int<4> : !s32i, #cir.int<5> : !s32i, #cir.int<6> : !s32i, #cir.int<7> : !s32i] : !cir.vector<4 x !cir.float> - // CIR: [[MASK_VEC:%.*]] = cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> - // CIR: [[FULL_MASK_VEC:%.*]] = cir.vec.shuffle([[MASK_VEC]], [[MASK_VEC]] : !cir.vector<8 x !cir.int>) [#cir.int<0> : !s32i, #cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i] : !cir.vector<4 x !cir.int> - // CIR: cir.vec.ternary([[FULL_MASK_VEC]], [[FULL_VEC]], {{.*}}) : !cir.vector<4 x !cir.int>, !cir.vector<4 x !cir.float> + // CIR: [[MASK_VEC:%.*]] = cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> + // CIR: [[FULL_MASK_VEC:%.*]] = cir.vec.shuffle([[MASK_VEC]], [[MASK_VEC]] : !cir.vector<8 x !cir.int>) [#cir.int<0> : !s32i, #cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i] : !cir.vector<4 x !cir.int> + // CIR: cir.vec.ternary([[FULL_MASK_VEC]], [[FULL_VEC]], {{.*}}) : !cir.vector<4 x !cir.int>, !cir.vector<4 x !cir.float> // LLVM-LABEL: test_mm512_mask_extractf32x4_ps // LLVM: shufflevector <16 x float> %{{.*}}, <16 x float> poison, <4 x i32> @@ -830,9 +830,9 @@ __m128 test_mm512_maskz_extractf32x4_ps( __mmask8 __U,__m512 __A){ // CIR-LABEL: test_mm512_maskz_extractf32x4_ps // CIR: [[POISON:%.*]] = cir.const #cir.poison : !cir.vector<16 x !cir.float> // CIR: [[FULL_VEC:%.*]] = cir.vec.shuffle(%{{.*}}, [[POISON]] : !cir.vector<16 x !cir.float>) [#cir.int<4> : !s32i, #cir.int<5> : !s32i, #cir.int<6> : !s32i, #cir.int<7> : !s32i] : !cir.vector<4 x !cir.float> - // CIR: [[MASK_VEC:%.*]] = cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> - // CIR: [[FULL_MASK_VEC:%.*]] = cir.vec.shuffle([[MASK_VEC]], [[MASK_VEC]] : !cir.vector<8 x !cir.int>) [#cir.int<0> : !s32i, #cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i] : !cir.vector<4 x !cir.int> - // CIR: cir.vec.ternary([[FULL_MASK_VEC]], [[FULL_VEC]], {{.*}}) : !cir.vector<4 x !cir.int>, !cir.vector<4 x !cir.float> + // CIR: [[MASK_VEC:%.*]] = cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> + // CIR: [[FULL_MASK_VEC:%.*]] = cir.vec.shuffle([[MASK_VEC]], [[MASK_VEC]] : !cir.vector<8 x !cir.int>) [#cir.int<0> : !s32i, #cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i] : !cir.vector<4 x !cir.int> + // CIR: cir.vec.ternary([[FULL_MASK_VEC]], [[FULL_VEC]], {{.*}}) : !cir.vector<4 x !cir.int>, !cir.vector<4 x !cir.float> // LLVM-LABEL: test_mm512_maskz_extractf32x4_ps // LLVM: shufflevector <16 x float> %{{.*}}, <16 x float> poison, <4 x i32> @@ -848,9 +848,9 @@ __m128i test_mm512_extracti32x4_epi32(__m512i __A) { // CIR-LABEL: test_mm512_extracti32x4_epi32 // CIR: [[POISON:%.*]] = cir.const #cir.poison : !cir.vector<16 x !s32i> // CIR: [[FULL_VEC:%.*]] = cir.vec.shuffle(%{{.*}}, [[POISON]] : !cir.vector<16 x !s32i>) [#cir.int<12> : !s32i, #cir.int<13> : !s32i, #cir.int<14> : !s32i, #cir.int<15> : !s32i] : !cir.vector<4 x !s32i> - // CIR: [[MASK_VEC:%.*]] = cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> - // CIR: [[FULL_MASK_VEC:%.*]] = cir.vec.shuffle([[MASK_VEC]], [[MASK_VEC]] : !cir.vector<8 x !cir.int>) [#cir.int<0> : !s32i, #cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i] : !cir.vector<4 x !cir.int> - // CIR: cir.vec.ternary([[FULL_MASK_VEC]], [[FULL_VEC]], {{.*}}) : !cir.vector<4 x !cir.int>, !cir.vector<4 x !s32i> + // CIR: [[MASK_VEC:%.*]] = cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> + // CIR: [[FULL_MASK_VEC:%.*]] = cir.vec.shuffle([[MASK_VEC]], [[MASK_VEC]] : !cir.vector<8 x !cir.int>) [#cir.int<0> : !s32i, #cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i] : !cir.vector<4 x !cir.int> + // CIR: cir.vec.ternary([[FULL_MASK_VEC]], [[FULL_VEC]], {{.*}}) : !cir.vector<4 x !cir.int>, !cir.vector<4 x !s32i> // LLVM-LABEL: test_mm512_extracti32x4_epi32 // LLVM: shufflevector <16 x i32> %{{.*}}, <16 x i32> poison, <4 x i32> @@ -864,9 +864,9 @@ __m128i test_mm512_mask_extracti32x4_epi32(__m128i __W, __mmask8 __U, __m512i __ // CIR-LABEL: test_mm512_mask_extracti32x4_epi32 // CIR: [[POISON:%.*]] = cir.const #cir.poison : !cir.vector<16 x !s32i> // CIR: [[FULL_VEC:%.*]] = cir.vec.shuffle(%{{.*}}, [[POISON]] : !cir.vector<16 x !s32i>) [#cir.int<12> : !s32i, #cir.int<13> : !s32i, #cir.int<14> : !s32i, #cir.int<15> : !s32i] : !cir.vector<4 x !s32i> - // CIR: [[MASK_VEC:%.*]] = cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> - // CIR: [[FULL_MASK_VEC:%.*]] = cir.vec.shuffle([[MASK_VEC]], [[MASK_VEC]] : !cir.vector<8 x !cir.int>) [#cir.int<0> : !s32i, #cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i] : !cir.vector<4 x !cir.int> - // CIR: cir.vec.ternary([[FULL_MASK_VEC]], [[FULL_VEC]], {{.*}}) : !cir.vector<4 x !cir.int>, !cir.vector<4 x !s32i> + // CIR: [[MASK_VEC:%.*]] = cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> + // CIR: [[FULL_MASK_VEC:%.*]] = cir.vec.shuffle([[MASK_VEC]], [[MASK_VEC]] : !cir.vector<8 x !cir.int>) [#cir.int<0> : !s32i, #cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i] : !cir.vector<4 x !cir.int> + // CIR: cir.vec.ternary([[FULL_MASK_VEC]], [[FULL_VEC]], {{.*}}) : !cir.vector<4 x !cir.int>, !cir.vector<4 x !s32i> // LLVM-LABEL: test_mm512_mask_extracti32x4_epi32 // LLVM: shufflevector <16 x i32> %{{.*}}, <16 x i32> poison, <4 x i32> @@ -882,9 +882,9 @@ __m128i test_mm512_maskz_extracti32x4_epi32(__mmask8 __U, __m512i __A) { // CIR-LABEL: test_mm512_maskz_extracti32x4_epi32 // CIR: [[POISON:%.*]] = cir.const #cir.poison : !cir.vector<16 x !s32i> // CIR: [[FULL_VEC:%.*]] = cir.vec.shuffle(%{{.*}}, [[POISON]] : !cir.vector<16 x !s32i>) [#cir.int<12> : !s32i, #cir.int<13> : !s32i, #cir.int<14> : !s32i, #cir.int<15> : !s32i] : !cir.vector<4 x !s32i> - // CIR: [[MASK_VEC:%.*]] = cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> - // CIR: [[FULL_MASK_VEC:%.*]] = cir.vec.shuffle([[MASK_VEC]], [[MASK_VEC]] : !cir.vector<8 x !cir.int>) [#cir.int<0> : !s32i, #cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i] : !cir.vector<4 x !cir.int> - // CIR: cir.vec.ternary([[FULL_MASK_VEC]], [[FULL_VEC]], {{.*}}) : !cir.vector<4 x !cir.int>, !cir.vector<4 x !s32i> + // CIR: [[MASK_VEC:%.*]] = cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> + // CIR: [[FULL_MASK_VEC:%.*]] = cir.vec.shuffle([[MASK_VEC]], [[MASK_VEC]] : !cir.vector<8 x !cir.int>) [#cir.int<0> : !s32i, #cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i] : !cir.vector<4 x !cir.int> + // CIR: cir.vec.ternary([[FULL_MASK_VEC]], [[FULL_VEC]], {{.*}}) : !cir.vector<4 x !cir.int>, !cir.vector<4 x !s32i> // LLVM-LABEL: test_mm512_maskz_extracti32x4_epi32 // LLVM: shufflevector <16 x i32> %{{.*}}, <16 x i32> poison, <4 x i32> @@ -900,9 +900,9 @@ __m256i test_mm512_extracti64x4_epi64(__m512i __A) { // CIR-LABEL: test_mm512_extracti64x4_epi64 // CIR: [[POISON:%.*]] = cir.const #cir.poison : !cir.vector<8 x !s64i> // CIR: [[FULL_VEC:%.*]] = cir.vec.shuffle(%{{.*}}, [[POISON]] : !cir.vector<8 x !s64i>) [#cir.int<4> : !s32i, #cir.int<5> : !s32i, #cir.int<6> : !s32i, #cir.int<7> : !s32i] : !cir.vector<4 x !s64i> - // CIR: [[MASK_VEC:%.*]] = cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> - // CIR: [[FULL_MASK_VEC:%.*]] = cir.vec.shuffle([[MASK_VEC]], [[MASK_VEC]] : !cir.vector<8 x !cir.int>) [#cir.int<0> : !s32i, #cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i] : !cir.vector<4 x !cir.int> - // CIR: cir.vec.ternary([[FULL_MASK_VEC]], [[FULL_VEC]], {{.*}}) : !cir.vector<4 x !cir.int>, !cir.vector<4 x !s64i> + // CIR: [[MASK_VEC:%.*]] = cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> + // CIR: [[FULL_MASK_VEC:%.*]] = cir.vec.shuffle([[MASK_VEC]], [[MASK_VEC]] : !cir.vector<8 x !cir.int>) [#cir.int<0> : !s32i, #cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i] : !cir.vector<4 x !cir.int> + // CIR: cir.vec.ternary([[FULL_MASK_VEC]], [[FULL_VEC]], {{.*}}) : !cir.vector<4 x !cir.int>, !cir.vector<4 x !s64i> // LLVM-LABEL: test_mm512_extracti64x4_epi64 // LLVM: shufflevector <8 x i64> %{{.*}}, <8 x i64> poison, <4 x i32> @@ -916,9 +916,9 @@ __m256i test_mm512_mask_extracti64x4_epi64(__m256i __W, __mmask8 __U, __m512i __ // CIR-LABEL: test_mm512_mask_extracti64x4_epi64 // CIR: [[POISON:%.*]] = cir.const #cir.poison : !cir.vector<8 x !s64i> // CIR: [[FULL_VEC:%.*]] = cir.vec.shuffle(%{{.*}}, [[POISON]] : !cir.vector<8 x !s64i>) [#cir.int<4> : !s32i, #cir.int<5> : !s32i, #cir.int<6> : !s32i, #cir.int<7> : !s32i] : !cir.vector<4 x !s64i> - // CIR: [[MASK_VEC:%.*]] = cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> - // CIR: [[FULL_MASK_VEC:%.*]] = cir.vec.shuffle([[MASK_VEC]], [[MASK_VEC]] : !cir.vector<8 x !cir.int>) [#cir.int<0> : !s32i, #cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i] : !cir.vector<4 x !cir.int> - // CIR: cir.vec.ternary([[FULL_MASK_VEC]], [[FULL_VEC]], {{.*}}) : !cir.vector<4 x !cir.int>, !cir.vector<4 x !s64i> + // CIR: [[MASK_VEC:%.*]] = cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> + // CIR: [[FULL_MASK_VEC:%.*]] = cir.vec.shuffle([[MASK_VEC]], [[MASK_VEC]] : !cir.vector<8 x !cir.int>) [#cir.int<0> : !s32i, #cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i] : !cir.vector<4 x !cir.int> + // CIR: cir.vec.ternary([[FULL_MASK_VEC]], [[FULL_VEC]], {{.*}}) : !cir.vector<4 x !cir.int>, !cir.vector<4 x !s64i> // LLVM-LABEL: test_mm512_mask_extracti64x4_epi64 // LLVM: shufflevector <8 x i64> %{{.*}}, <8 x i64> poison, <4 x i32> @@ -934,9 +934,9 @@ __m256i test_mm512_maskz_extracti64x4_epi64(__mmask8 __U, __m512i __A) { // CIR-LABEL: test_mm512_maskz_extracti64x4_epi64 // CIR: [[POISON:%.*]] = cir.const #cir.poison : !cir.vector<8 x !s64i> // CIR: [[FULL_VEC:%.*]] = cir.vec.shuffle(%{{.*}}, [[POISON]] : !cir.vector<8 x !s64i>) [#cir.int<4> : !s32i, #cir.int<5> : !s32i, #cir.int<6> : !s32i, #cir.int<7> : !s32i] : !cir.vector<4 x !s64i> - // CIR: [[MASK_VEC:%.*]] = cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> - // CIR: [[FULL_MASK_VEC:%.*]] = cir.vec.shuffle([[MASK_VEC]], [[MASK_VEC]] : !cir.vector<8 x !cir.int>) [#cir.int<0> : !s32i, #cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i] : !cir.vector<4 x !cir.int> - // CIR: cir.vec.ternary([[FULL_MASK_VEC]], [[FULL_VEC]], {{.*}}) : !cir.vector<4 x !cir.int>, !cir.vector<4 x !s64i> + // CIR: [[MASK_VEC:%.*]] = cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> + // CIR: [[FULL_MASK_VEC:%.*]] = cir.vec.shuffle([[MASK_VEC]], [[MASK_VEC]] : !cir.vector<8 x !cir.int>) [#cir.int<0> : !s32i, #cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i] : !cir.vector<4 x !cir.int> + // CIR: cir.vec.ternary([[FULL_MASK_VEC]], [[FULL_VEC]], {{.*}}) : !cir.vector<4 x !cir.int>, !cir.vector<4 x !s64i> // LLVM-LABEL: test_mm512_maskz_extracti64x4_epi64 // LLVM: shufflevector <8 x i64> %{{.*}}, <8 x i64> poison, <4 x i32> @@ -1003,10 +1003,10 @@ return _mm512_mul_epu32(__A, __B); int test_mm512_kortestc(__mmask16 __A, __mmask16 __B) { // CIR-LABEL: _mm512_kortestc // CIR: %[[ALL_ONES:.*]] = cir.const #cir.int<65535> : !u16i - // CIR: %[[LHS:.*]] = cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> - // CIR: %[[RHS:.*]] = cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> - // CIR: %[[OR:.*]] = cir.binop(or, %[[LHS]], %[[RHS]]) : !cir.vector<16 x !cir.int> - // CIR: %[[OR_INT:.*]] = cir.cast bitcast %[[OR]] : !cir.vector<16 x !cir.int> -> !u16i + // CIR: %[[LHS:.*]] = cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> + // CIR: %[[RHS:.*]] = cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> + // CIR: %[[OR:.*]] = cir.binop(or, %[[LHS]], %[[RHS]]) : !cir.vector<16 x !cir.int> + // CIR: %[[OR_INT:.*]] = cir.cast bitcast %[[OR]] : !cir.vector<16 x !cir.int> -> !u16i // CIR: %[[CMP:.*]] = cir.cmp(eq, %[[OR_INT]], %[[ALL_ONES]]) : !u16i, !cir.bool // CIR: cir.cast bool_to_int %[[CMP]] : !cir.bool -> !s32i @@ -1032,10 +1032,10 @@ int test_mm512_kortestc(__mmask16 __A, __mmask16 __B) { int test_mm512_kortestz(__mmask16 __A, __mmask16 __B) { // CIR-LABEL: _mm512_kortestz // CIR: %[[ZERO:.*]] = cir.const #cir.int<0> : !u16i - // CIR: %[[LHS:.*]] = cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> - // CIR: %[[RHS:.*]] = cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> - // CIR: %[[OR:.*]] = cir.binop(or, %[[LHS]], %[[RHS]]) : !cir.vector<16 x !cir.int> - // CIR: %[[OR_INT:.*]] = cir.cast bitcast %[[OR]] : !cir.vector<16 x !cir.int> -> !u16i + // CIR: %[[LHS:.*]] = cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> + // CIR: %[[RHS:.*]] = cir.cast bitcast {{.*}} : !u16i -> !cir.vector<16 x !cir.int> + // CIR: %[[OR:.*]] = cir.binop(or, %[[LHS]], %[[RHS]]) : !cir.vector<16 x !cir.int> + // CIR: %[[OR_INT:.*]] = cir.cast bitcast %[[OR]] : !cir.vector<16 x !cir.int> -> !u16i // CIR: %[[CMP:.*]] = cir.cmp(eq, %[[OR_INT]], %[[ZERO]]) : !u16i, !cir.bool // CIR: cir.cast bool_to_int %[[CMP]] : !cir.bool -> !s32i diff --git a/clang/test/CIR/CodeGenBuiltins/X86/avx512vl-builtins.c b/clang/test/CIR/CodeGenBuiltins/X86/avx512vl-builtins.c index 140dcd05d5a38..4ca07e2f099f1 100644 --- a/clang/test/CIR/CodeGenBuiltins/X86/avx512vl-builtins.c +++ b/clang/test/CIR/CodeGenBuiltins/X86/avx512vl-builtins.c @@ -225,8 +225,8 @@ __m256i test_mm256_inserti32x4(__m256i __A, __m128i __B) { __m128d test_mm_mask_expand_pd(__m128d __W, __mmask8 __U, __m128d __A) { // CIR-LABEL: _mm_mask_expand_pd - // CIR: %[[MASK:.*]] = cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> - // CIR: %[[SHUF:.*]] = cir.vec.shuffle(%[[MASK]], %[[MASK]] : !cir.vector<8 x !cir.int>) [#cir.int<0> : !s32i, #cir.int<1> : !s32i] : !cir.vector<2 x !cir.int> + // CIR: %[[MASK:.*]] = cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> + // CIR: %[[SHUF:.*]] = cir.vec.shuffle(%[[MASK]], %[[MASK]] : !cir.vector<8 x !cir.int>) [#cir.int<0> : !s32i, #cir.int<1> : !s32i] : !cir.vector<2 x !cir.int> // LLVM-LABEL: test_mm_mask_expand_pd // LLVM: %[[BC:.*]] = bitcast i8 %{{.*}} to <8 x i1> @@ -241,8 +241,8 @@ __m128d test_mm_mask_expand_pd(__m128d __W, __mmask8 __U, __m128d __A) { __m128d test_mm_maskz_expand_pd(__mmask8 __U, __m128d __A) { // CIR-LABEL: _mm_maskz_expand_pd - // CIR: %[[MASK:.*]] = cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> - // CIR: %[[SHUF:.*]] = cir.vec.shuffle(%[[MASK]], %[[MASK]] : !cir.vector<8 x !cir.int>) [#cir.int<0> : !s32i, #cir.int<1> : !s32i] : !cir.vector<2 x !cir.int> + // CIR: %[[MASK:.*]] = cir.cast bitcast {{.*}} : !u8i -> !cir.vector<8 x !cir.int> + // CIR: %[[SHUF:.*]] = cir.vec.shuffle(%[[MASK]], %[[MASK]] : !cir.vector<8 x !cir.int>) [#cir.int<0> : !s32i, #cir.int<1> : !s32i] : !cir.vector<2 x !cir.int> // LLVM-LABEL: test_mm_maskz_expand_pd // LLVM: %[[BC:.*]] = bitcast i8 %{{.*}} to <8 x i1> diff --git a/clang/test/CIR/CodeGenBuiltins/X86/avx512vlvbmi2-builtins.c b/clang/test/CIR/CodeGenBuiltins/X86/avx512vlvbmi2-builtins.c index 964971d71eb6c..9e0cdaa9eea75 100644 --- a/clang/test/CIR/CodeGenBuiltins/X86/avx512vlvbmi2-builtins.c +++ b/clang/test/CIR/CodeGenBuiltins/X86/avx512vlvbmi2-builtins.c @@ -14,8 +14,8 @@ __m128i test_mm_mask_compress_epi16(__m128i __S, __mmask8 __U, __m128i __D) { // CIR-LABEL: test_mm_mask_compress_epi16 - // %[[MASK8:.+]] = cir.cast bitcast %{{.+}} : !u8i -> !cir.vector<8 x !cir.int> - // %[[RES:.+]] = cir.call_llvm_intrinsic "x86.avx512.mask.compress" %{{.+}}, %{{.+}}, %[[MASK8]]: (!cir.vector<8 x !s16i>, !cir.vector<8 x !s16i>, !cir.vector<8 x !cir.int>) -> !cir.vector<8 x !s16i> + // %[[MASK8:.+]] = cir.cast bitcast %{{.+}} : !u8i -> !cir.vector<8 x !cir.int> + // %[[RES:.+]] = cir.call_llvm_intrinsic "x86.avx512.mask.compress" %{{.+}}, %{{.+}}, %[[MASK8]]: (!cir.vector<8 x !s16i>, !cir.vector<8 x !s16i>, !cir.vector<8 x !cir.int>) -> !cir.vector<8 x !s16i> // %[[CAST:.+]] = cir.cast bitcast %[[RES]] : !cir.vector<8 x !s16i> -> !cir.vector<2 x !s64i> // LLVM-LABEL: test_mm_mask_compress_epi16 @@ -33,8 +33,8 @@ __m128i test_mm_mask_compress_epi16(__m128i __S, __mmask8 __U, __m128i __D) { __m128i test_mm_maskz_compress_epi16(__mmask8 __U, __m128i __D) { // CIR-LABEL: test_mm_maskz_compress_epi16 - // %[[MASK8:.+]] = cir.cast bitcast %{{.+}} : !u8i -> !cir.vector<8 x !cir.int> - // %[[RES:.+]] = cir.call_llvm_intrinsic "x86.avx512.mask.compress" %{{.+}}, %{{.+}}, %[[MASK8]]: (!cir.vector<8 x !s16i>, !cir.vector<8 x !s16i>, !cir.vector<8 x !cir.int>) -> !cir.vector<8 x !s16i> + // %[[MASK8:.+]] = cir.cast bitcast %{{.+}} : !u8i -> !cir.vector<8 x !cir.int> + // %[[RES:.+]] = cir.call_llvm_intrinsic "x86.avx512.mask.compress" %{{.+}}, %{{.+}}, %[[MASK8]]: (!cir.vector<8 x !s16i>, !cir.vector<8 x !s16i>, !cir.vector<8 x !cir.int>) -> !cir.vector<8 x !s16i> // %[[CAST:.+]] = cir.cast bitcast %[[RES]] : !cir.vector<8 x !s16i> -> !cir.vector<2 x !s64i> // LLVM-LABEL: test_mm_maskz_compress_epi16 @@ -52,8 +52,8 @@ __m128i test_mm_maskz_compress_epi16(__mmask8 __U, __m128i __D) { __m128i test_mm_mask_compress_epi8(__m128i __S, __mmask16 __U, __m128i __D) { // CIR-LABEL: test_mm_mask_compress_epi8 - // %[[MASK16:.+]] = cir.cast bitcast %{{.+}} : !u16i -> !cir.vector<16 x !cir.int> - // %[[RES:.+]] = cir.call_llvm_intrinsic "x86.avx512.mask.compress" %{{.+}}, %{{.+}}, %[[MASK16]]: (!cir.vector<16 x !s8i>, !cir.vector<16 x !s8i>, !cir.vector<16 x !cir.int>) -> !cir.vector<16 x !s8i> + // %[[MASK16:.+]] = cir.cast bitcast %{{.+}} : !u16i -> !cir.vector<16 x !cir.int> + // %[[RES:.+]] = cir.call_llvm_intrinsic "x86.avx512.mask.compress" %{{.+}}, %{{.+}}, %[[MASK16]]: (!cir.vector<16 x !s8i>, !cir.vector<16 x !s8i>, !cir.vector<16 x !cir.int>) -> !cir.vector<16 x !s8i> // %[[CAST:.+]] = cir.cast bitcast %[[RES]] : !cir.vector<16 x !s8i> -> !cir.vector<2 x !s64i> // LLVM-LABEL: test_mm_mask_compress_epi8 @@ -73,8 +73,8 @@ __m128i test_mm_maskz_compress_epi8(__mmask16 __U, __m128i __D) { // CIR-LABEL: test_mm_maskz_compress_epi8 // %[[ZERO:.+]] = cir.call @_mm_setzero_si128() : () -> !cir.vector<2 x !s64i> // %[[CAST1:.+]] = cir.cast bitcast %[[ZERO]] : !cir.vector<2 x !s64i> -> !cir.vector<16 x !s8i> - // %[[MASK16:.+]] = cir.cast bitcast %{{.+}} : !u16i -> !cir.vector<16 x !cir.int> - // %[[RES:.+]] = cir.call_llvm_intrinsic "x86.avx512.mask.compress" %{{.+}}, %[[CAST1]], %[[MASK16]]: (!cir.vector<16 x !s8i>, !cir.vector<16 x !s8i>, !cir.vector<16 x !cir.int>) -> !cir.vector<16 x !s8i> + // %[[MASK16:.+]] = cir.cast bitcast %{{.+}} : !u16i -> !cir.vector<16 x !cir.int> + // %[[RES:.+]] = cir.call_llvm_intrinsic "x86.avx512.mask.compress" %{{.+}}, %[[CAST1]], %[[MASK16]]: (!cir.vector<16 x !s8i>, !cir.vector<16 x !s8i>, !cir.vector<16 x !cir.int>) -> !cir.vector<16 x !s8i> // %[[CAST2:.+]] = cir.cast bitcast %[[RES]] : !cir.vector<16 x !s8i> -> !cir.vector<2 x !s64i> // LLVM-LABEL: test_mm_maskz_compress_epi8 @@ -96,8 +96,8 @@ __m128i test_mm_maskz_compress_epi8(__mmask16 __U, __m128i __D) { __m128i test_mm_mask_expand_epi16(__m128i __S, __mmask8 __U, __m128i __D) { // CIR-LABEL: test_mm_mask_expand_epi16 - // %[[MASK16:.+]] = cir.cast bitcast %{{.+}} : !u8i -> !cir.vector<8 x !cir.int> - // %[[RES:.+]] = cir.call_llvm_intrinsic "x86.avx512.mask.expand" %{{.+}}, %{{.+}}, %[[MASK16]]: (!cir.vector<8 x !s16i>, !cir.vector<8 x !s16i>, !cir.vector<8 x !cir.int>) -> !cir.vector<8 x !s16i> + // %[[MASK16:.+]] = cir.cast bitcast %{{.+}} : !u8i -> !cir.vector<8 x !cir.int> + // %[[RES:.+]] = cir.call_llvm_intrinsic "x86.avx512.mask.expand" %{{.+}}, %{{.+}}, %[[MASK16]]: (!cir.vector<8 x !s16i>, !cir.vector<8 x !s16i>, !cir.vector<8 x !cir.int>) -> !cir.vector<8 x !s16i> // %[[CAST:.+]] = cir.cast bitcast %[[RES]] : !cir.vector<8 x !s16i> -> !cir.vector<2 x !s64i> // LLVM-LABEL: test_mm_mask_expand_epi16 @@ -115,8 +115,8 @@ __m128i test_mm_mask_expand_epi16(__m128i __S, __mmask8 __U, __m128i __D) { __m128i test_mm_maskz_expand_epi16(__mmask8 __U, __m128i __D) { // CIR-LABEL: test_mm_maskz_expand_epi16 - // %[[MASK:.+]] = cir.cast bitcast %{{.+}} : !u8i -> !cir.vector<8 x !cir.int> - // %[[RES:.+]] = cir.call_llvm_intrinsic "x86.avx512.mask.expand" %{{.+}}, %{{.+}}, %[[MASK]]: (!cir.vector<8 x !s16i>, !cir.vector<8 x !s16i>, !cir.vector<8 x !cir.int>) -> !cir.vector<8 x !s16i> + // %[[MASK:.+]] = cir.cast bitcast %{{.+}} : !u8i -> !cir.vector<8 x !cir.int> + // %[[RES:.+]] = cir.call_llvm_intrinsic "x86.avx512.mask.expand" %{{.+}}, %{{.+}}, %[[MASK]]: (!cir.vector<8 x !s16i>, !cir.vector<8 x !s16i>, !cir.vector<8 x !cir.int>) -> !cir.vector<8 x !s16i> // %[[CAST:.+]] = cir.cast bitcast %[[RES]] : !cir.vector<8 x !s16i> -> !cir.vector<2 x !s64i> // LLVM-LABEL: test_mm_maskz_expand_epi16 @@ -134,8 +134,8 @@ __m128i test_mm_maskz_expand_epi16(__mmask8 __U, __m128i __D) { __m128i test_mm_mask_expand_epi8(__m128i __S, __mmask16 __U, __m128i __D) { // CIR-LABEL: test_mm_mask_expand_epi8 - // %[[MASK:.+]] = cir.cast bitcast %{{.+}} : !u16i -> !cir.vector<16 x !cir.int> - // %[[RES:.+]] = cir.call_llvm_intrinsic "x86.avx512.mask.expand" %{{.+}}, %{{.+}}, %[[MASK]]: (!cir.vector<16 x !s8i>, !cir.vector<16 x !s8i>, !cir.vector<16 x !cir.int>) -> !cir.vector<16 x !s8i> + // %[[MASK:.+]] = cir.cast bitcast %{{.+}} : !u16i -> !cir.vector<16 x !cir.int> + // %[[RES:.+]] = cir.call_llvm_intrinsic "x86.avx512.mask.expand" %{{.+}}, %{{.+}}, %[[MASK]]: (!cir.vector<16 x !s8i>, !cir.vector<16 x !s8i>, !cir.vector<16 x !cir.int>) -> !cir.vector<16 x !s8i> // %[[CAST:.+]] = cir.cast bitcast %[[RES]] : !cir.vector<16 x !s8i> -> !cir.vector<2 x !s64i> // LLVM-LABEL: test_mm_mask_expand_epi8 @@ -153,8 +153,8 @@ __m128i test_mm_mask_expand_epi8(__m128i __S, __mmask16 __U, __m128i __D) { __m128i test_mm_maskz_expand_epi8(__mmask16 __U, __m128i __D) { // CIR-LABEL: test_mm_maskz_expand_epi8 - // %[[MASK:.+]] = cir.cast bitcast %{{.+}} : !u16i -> !cir.vector<16 x !cir.int> - // %[[RES:.+]] = cir.call_llvm_intrinsic "x86.avx512.mask.expand" %{{.+}}, %{{.+}}, %[[MASK]]: (!cir.vector<16 x !s8i>, !cir.vector<16 x !s8i>, !cir.vector<16 x !cir.int>) -> !cir.vector<16 x !s8i> + // %[[MASK:.+]] = cir.cast bitcast %{{.+}} : !u16i -> !cir.vector<16 x !cir.int> + // %[[RES:.+]] = cir.call_llvm_intrinsic "x86.avx512.mask.expand" %{{.+}}, %{{.+}}, %[[MASK]]: (!cir.vector<16 x !s8i>, !cir.vector<16 x !s8i>, !cir.vector<16 x !cir.int>) -> !cir.vector<16 x !s8i> // %[[CAST:.+]] = cir.cast bitcast %[[RES]] : !cir.vector<16 x !s8i> -> !cir.vector<2 x !s64i> // LLVM-LABEL: test_mm_maskz_expand_epi8