https://github.com/Priyanshu3820 updated https://github.com/llvm/llvm-project/pull/173572
>From 21e58286204a47fb72470e7a1598e1d649ddfcba Mon Sep 17 00:00:00 2001 From: Priyanshu Kumar <[email protected]> Date: Thu, 25 Dec 2025 14:21:53 +0000 Subject: [PATCH 1/5] Implement handling for F16 halfs to floats conversion builtins --- clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp | 56 +++++- .../CodeGenBuiltins/X86/avx512f16c-builtins.c | 185 ++++++++++++++++++ 2 files changed, 240 insertions(+), 1 deletion(-) create mode 100644 clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c diff --git a/clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp b/clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp index 75bf25b20f1af..07f915b51ad6d 100644 --- a/clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp +++ b/clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp @@ -14,13 +14,20 @@ #include "CIRGenBuilder.h" #include "CIRGenFunction.h" #include "CIRGenModule.h" +#include "mlir/IR/BuiltinTypes.h" #include "mlir/IR/Location.h" +#include "mlir/IR/Types.h" +#include "mlir/IR/Value.h" #include "mlir/IR/ValueRange.h" #include "clang/Basic/Builtins.h" #include "clang/Basic/TargetBuiltins.h" +#include "clang/CIR/Dialect/IR/CIRDialect.h" #include "clang/CIR/Dialect/IR/CIRTypes.h" #include "clang/CIR/MissingFeatures.h" +#include "llvm/ADT/ArrayRef.h" +#include "llvm/ADT/StringRef.h" #include "llvm/Support/ErrorHandling.h" +#include <cassert> using namespace clang; using namespace clang::CIRGen; @@ -362,6 +369,45 @@ static mlir::Value emitX86Muldq(CIRGenBuilderTy &builder, mlir::Location loc, return builder.createMul(loc, lhs, rhs); } +// Convert F16 halfs to floats. +static mlir::Value emitX86CvtF16ToFloatExpr(CIRGenBuilderTy &builder, + mlir::Location loc, + const StringRef str, + llvm::ArrayRef<mlir::Value> ops, + mlir::Type dstTy) { + assert((ops.size() == 1 || ops.size() == 3 || ops.size() == 4) && + "Unknown cvtph2ps intrinsic"); + + // If the SAE intrinsic doesn't use default rounding then we can't upgrade. + if (ops.size() == 4 && + ops[3].getDefiningOp<cir::ConstantOp>().getIntValue().getZExtValue() != + 4) { + return emitIntrinsicCallOp(builder, loc, str, dstTy, ops); + } + + unsigned numElts = cast<cir::VectorType>(dstTy).getSize(); + mlir::Value src = ops[0]; + + // Extract the subvector + if (numElts != cast<cir::VectorType>(src.getType()).getSize()) { + assert(numElts == 4 && "Unexpected vector size"); + src = builder.createVecShuffle(loc, src, {0, 1, 2, 3}); + } + + // Bitcast from vXi16 to vXf16. + cir::VectorType halfTy = cir::VectorType::get( + cir::FP16Type::get(builder.getContext()), numElts); + + src = builder.createCast(cir::CastKind::bitcast, src, halfTy); + + // Perform the fp-extension + mlir::Value res = builder.createCast(cir::CastKind::floating, src, dstTy); + + if (ops.size() >= 3) + res = emitX86Select(builder, loc, ops[2], res, ops[1]); + return res; +} + static mlir::Value emitX86vpcom(CIRGenBuilderTy &builder, mlir::Location loc, llvm::SmallVector<mlir::Value> ops, bool isSigned) { @@ -1662,9 +1708,17 @@ mlir::Value CIRGenFunction::emitX86BuiltinExpr(unsigned builtinID, case X86::BI__builtin_ia32_cmpnltsd: case X86::BI__builtin_ia32_cmpnlesd: case X86::BI__builtin_ia32_cmpordsd: + cgm.errorNYI(expr->getSourceRange(), + std::string("unimplemented X86 builtin call: ") + + getContext().BuiltinInfo.getName(builtinID)); + return {}; case X86::BI__builtin_ia32_vcvtph2ps_mask: case X86::BI__builtin_ia32_vcvtph2ps256_mask: - case X86::BI__builtin_ia32_vcvtph2ps512_mask: + case X86::BI__builtin_ia32_vcvtph2ps512_mask: { + mlir::Location loc = getLoc(expr->getExprLoc()); + return emitX86CvtF16ToFloatExpr(builder, loc, "cvtph2ps", ops, + convertType(expr->getType())); + } case X86::BI__builtin_ia32_cvtneps2bf16_128_mask: case X86::BI__builtin_ia32_cvtneps2bf16_256_mask: case X86::BI__builtin_ia32_cvtneps2bf16_512_mask: diff --git a/clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c b/clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c new file mode 100644 index 0000000000000..ee42f5de48d98 --- /dev/null +++ b/clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c @@ -0,0 +1,185 @@ +// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-unknown-linux -target-feature +avx512fp16 -target-feature +avx512f -target-feature +avx512vl -fclangir -emit-cir -o %t.cir -Wall -Werror -Wsign-conversion +// RUN: FileCheck --check-prefix=CIR --input-file=%t.cir %s +// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-unknown-linux -target-feature +avx512fp16 -target-feature +avx512f -target-feature +avx512vl -fclangir -emit-llvm -o %t.ll -Wall -Werror -Wsign-conversion +// RUN: FileCheck --check-prefixes=LLVM --input-file=%t.ll %s +// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-unknown-linux -target-feature +avx512fp16 -target-feature +avx512f -target-feature +avx512vl -emit-llvm -o %t.ll -Wall -Werror -Wsign-conversion +// RUN: FileCheck --check-prefixes=OGCG --input-file=%t.ll %s + +#include <immintrin.h> + +__m128 test_vcvtph2ps_mask(__m128i a, __m128 src, __mmask8 k) { + // CIR-LABEL: test_vcvtph2ps_mask + // CIR: %[[SHUFFLE:.*]] = cir.vec.shuffle({{.*}}, {{.*}} : !cir.vector<8 x !s16i>) [#cir.int<0> : !s32i, #cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i] : !cir.vector<4 x !s16i> + // CIR: %[[BITCAST:.*]] = cir.cast bitcast %[[SHUFFLE]] : !cir.vector<4 x !s16i> -> !cir.vector<4 x !cir.f16> + // CIR: %[[FLOAT_EXT:.*]] = cir.cast floating %[[BITCAST]] : !cir.vector<4 x !cir.f16> -> !cir.vector<4 x !cir.float> + // CIR: cir.select if {{.*}} then %[[FLOAT_EXT]] else {{.*}} + + // LLVM-LABEL: @test_vcvtph2ps_mask + // LLVM: %[[VEC_128:.*]] = bitcast <2 x i64> {{.*}} to <8 x i16> + // LLVM: %[[NARROWED:.*]] = shufflevector <8 x i16> %[[VEC_128]], <8 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 3> + // LLVM: %[[HALF_VEC:.*]] = bitcast <4 x i16> %[[NARROWED]] to <4 x half> + // LLVM: %[[FLOAT_VEC:.*]] = fpext <4 x half> %[[HALF_VEC]] to <4 x float> + // LLVM: %[[MASK:.*]] = shufflevector <8 x i1> {{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3> + // LLVM: %[[RESULT:.*]] = select <4 x i1> %[[MASK]], <4 x float> %[[FLOAT_VEC]], <4 x float> {{.*}} + // LLVM: ret <4 x float> {{.*}} + + // OGCG-LABEL: @test_vcvtph2ps_mask + // OGCG: %[[VEC_128:.*]] = bitcast <2 x i64> {{.*}} to <8 x i16> + // OGCG: %[[NARROWED:.*]] = shufflevector <8 x i16> %[[VEC_128]], <8 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 3> + // OGCG: %[[HALF_VEC:.*]] = bitcast <4 x i16> %[[NARROWED]] to <4 x half> + // OGCG: %[[FLOAT_VEC:.*]] = fpext <4 x half> %[[HALF_VEC]] to <4 x float> + // OGCG: %[[MASK:.*]] = shufflevector <8 x i1> {{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3> + // OGCG: %[[RESULT:.*]] = select <4 x i1> %[[MASK]], <4 x float> %[[FLOAT_VEC]], <4 x float> {{.*}} + // OGCG: ret <4 x float> {{.*}} + typedef short __v8hi __attribute__((__vector_size__(16))); + return __builtin_ia32_vcvtph2ps_mask((__v8hi)a, src, k); +} + +__m256 test_vcvtph2ps256_mask(__m128i a, __m256 src, __mmask8 k) { + // CIR-LABEL: test_vcvtph2ps256_mask + // CIR: %[[VAL_5:.*]] = cir.cast bitcast %{{.*}} : !cir.vector<2 x !s64i> -> !cir.vector<8 x !s16i> + // CIR: %[[BITCAST:.*]] = cir.cast bitcast %[[VAL_5]] : !cir.vector<8 x !s16i> -> !cir.vector<8 x !cir.f16> + // CIR: %[[FLOAT_EXT:.*]] = cir.cast floating %[[BITCAST]] : !cir.vector<8 x !cir.f16> -> !cir.vector<8 x !cir.float> + // CIR: cir.select if {{.*}} then %[[FLOAT_EXT]] else {{.*}} + + // LLVM-LABEL: @test_vcvtph2ps256_mask + // LLVM: %[[BITCAST_I:.*]] = bitcast <2 x i64> {{.*}} to <8 x i16> + // LLVM: %[[BITCAST_H:.*]] = bitcast <8 x i16> %[[BITCAST_I]] to <8 x half> + // LLVM: %[[FPEXT:.*]] = fpext <8 x half> %[[BITCAST_H]] to <8 x float> + // LLVM: %[[MASK:.*]] = bitcast i8 {{.*}} to <8 x i1> + // LLVM: %[[RESULT:.*]] = select <8 x i1> %[[MASK]], <8 x float> %[[FPEXT]], <8 x float> {{.*}} + // LLVM: ret <8 x float> {{.*}} + + // OGCG-LABEL: @test_vcvtph2ps256_mask + // OGCG: %[[BITCAST_I:.*]] = bitcast <2 x i64> {{.*}} to <8 x i16> + // OGCG: %[[BITCAST_H:.*]] = bitcast <8 x i16> %[[BITCAST_I]] to <8 x half> + // OGCG: %[[FPEXT:.*]] = fpext <8 x half> %[[BITCAST_H]] to <8 x float> + // OGCG: %[[MASK:.*]] = bitcast i8 {{.*}} to <8 x i1> + // OGCG: %[[RESULT:.*]] = select <8 x i1> %[[MASK]], <8 x float> %[[FPEXT]], <8 x float> {{.*}} + // OGCG: ret <8 x float> {{.*}} + typedef short __v8hi __attribute__((__vector_size__(16))); + return __builtin_ia32_vcvtph2ps256_mask((__v8hi)a, src, k); +} + +__m512 test_vcvtph2ps512_mask(__m256i a, __m512 src, __mmask16 k) { + // CIR-LABEL: test_vcvtph2ps512_mask + // CIR: %[[BITCAST_I:.*]] = cir.cast bitcast %{{.*}} : !cir.vector<4 x !s64i> -> !cir.vector<16 x !s16i> + // CIR: %[[BITCAST_H:.*]] = cir.cast bitcast %[[BITCAST_I]] : !cir.vector<16 x !s16i> -> !cir.vector<16 x !cir.f16> + // CIR: %[[FLOAT_EXT:.*]] = cir.cast floating %[[BITCAST_H]] : !cir.vector<16 x !cir.f16> -> !cir.vector<16 x !cir.float> + // CIR: %[[MASK:.*]] = cir.cast bitcast %{{.*}} : !u16i -> !cir.vector<16 x !cir.bool> + // CIR: cir.select if %[[MASK]] then %[[FLOAT_EXT]] else {{.*}} + + // LLVM-LABEL: @test_vcvtph2ps512_mask + // LLVM: %[[BITCAST_I:.*]] = bitcast <4 x i64> {{.*}} to <16 x i16> + // LLVM: %[[BITCAST_H:.*]] = bitcast <16 x i16> %[[BITCAST_I]] to <16 x half> + // LLVM: %[[FPEXT:.*]] = fpext <16 x half> %[[BITCAST_H]] to <16 x float> + // LLVM: %[[MASK:.*]] = bitcast i16 {{.*}} to <16 x i1> + // LLVM: %[[RESULT:.*]] = select <16 x i1> %[[MASK]], <16 x float> %[[FPEXT]], <16 x float> {{.*}} + // LLVM: ret <16 x float> {{.*}} + + // OGCG-LABEL: @test_vcvtph2ps512_mask + // OGCG: %[[BITCAST_I:.*]] = bitcast <4 x i64> {{.*}} to <16 x i16> + // OGCG: %[[BITCAST_H:.*]] = bitcast <16 x i16> %[[BITCAST_I]] to <16 x half> + // OGCG: %[[FPEXT:.*]] = fpext <16 x half> %[[BITCAST_H]] to <16 x float> + // OGCG: %[[MASK:.*]] = bitcast i16 {{.*}} to <16 x i1> + // OGCG: %[[RESULT:.*]] = select <16 x i1> %[[MASK]], <16 x float> %[[FPEXT]], <16 x float> {{.*}} + // OGCG: ret <16 x float> {{.*}} + typedef short __v16hi __attribute__((__vector_size__(32))); + return __builtin_ia32_vcvtph2ps512_mask((__v16hi)a, src, k, 4); +} + +__m128 test_vcvtph2ps_maskz(__m128i a, __mmask8 k) { + // CIR-LABEL: cir.func always_inline internal private dso_local @_mm_maskz_cvtph_ps + // CIR: %[[LOAD_VAL:.*]] = cir.load {{.*}} : !cir.ptr<!cir.vector<2 x !s64i>>, !cir.vector<2 x !s64i> + // CIR: %[[VEC:.*]] = cir.cast bitcast %[[LOAD_VAL]] : !cir.vector<2 x !s64i> -> !cir.vector<8 x !s16i> + // CIR: %[[ZERO:.*]] = cir.call @_mm_setzero_ps() + // CIR: %[[MASK_VAL:.*]] = cir.load {{.*}} : !cir.ptr<!u8i>, !u8i + // CIR: %[[SHUFFLE:.*]] = cir.vec.shuffle(%[[VEC]], {{.*}} : !cir.vector<8 x !s16i>) {{.*}} : !cir.vector<4 x !s16i> + // CIR: %[[F16_VEC:.*]] = cir.cast bitcast %[[SHUFFLE]] : !cir.vector<4 x !s16i> -> !cir.vector<4 x !cir.f16> + // CIR: %[[CONV:.*]] = cir.cast floating %[[F16_VEC]] : !cir.vector<4 x !cir.f16> -> !cir.vector<4 x !cir.float> + // CIR: %[[BOOL_VEC:.*]] = cir.cast bitcast %[[MASK_VAL]] : !u8i -> !cir.vector<8 x !cir.bool> + // CIR: %[[FINAL_MASK:.*]] = cir.vec.shuffle(%[[BOOL_VEC]], %[[BOOL_VEC]] : !cir.vector<8 x !cir.bool>) {{.*}} : !cir.vector<4 x !cir.bool> + // CIR: cir.select if %[[FINAL_MASK]] then %[[CONV]] else %[[ZERO]] + + // CIR-LABEL: cir.func no_inline dso_local @test_vcvtph2ps_maskz + // CIR: cir.call @_mm_maskz_cvtph_ps({{.*}}, {{.*}}) + + // LLVM-LABEL: @test_vcvtph2ps_maskz + // LLVM: %[[BITCAST_I:.*]] = bitcast <2 x i64> {{.*}} to <8 x i16> + // LLVM: %[[NARROW:.*]] = shufflevector <8 x i16> %[[BITCAST_I]], <8 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 3> + // LLVM: %[[BITCAST_H:.*]] = bitcast <4 x i16> %[[NARROW]] to <4 x half> + // LLVM: %[[CONV:.*]] = fpext <4 x half> %[[BITCAST_H]] to <4 x float> + // LLVM: %[[MASK:.*]] = shufflevector <8 x i1> {{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3> + // LLVM: %[[RESULT:.*]] = select <4 x i1> %[[MASK]], <4 x float> %[[CONV]], <4 x float> {{.*}} + // LLVM: ret <4 x float> {{.*}} + + // OGCG-LABEL: @test_vcvtph2ps_maskz + // OGCG: %[[BITCAST_I:.*]] = bitcast <2 x i64> {{.*}} to <8 x i16> + // OGCG: %[[NARROW:.*]] = shufflevector <8 x i16> %[[BITCAST_I]], <8 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 3> + // OGCG: %[[BITCAST_H:.*]] = bitcast <4 x i16> %[[NARROW]] to <4 x half> + // OGCG: %[[CONV:.*]] = fpext <4 x half> %[[BITCAST_H]] to <4 x float> + // OGCG: %[[MASK:.*]] = shufflevector <8 x i1> {{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3> + // OGCG: %[[RESULT:.*]] = select <4 x i1> %[[MASK]], <4 x float> %[[CONV]], <4 x float> {{.*}} + // OGCG: ret <4 x float> {{.*}} + + return _mm_maskz_cvtph_ps(k, a); +} + +__m256 test_vcvtph2ps256_maskz(__m128i a, __mmask8 k) { + // CIR-LABEL: cir.func always_inline internal private dso_local @_mm256_maskz_cvtph_ps + // CIR: %[[LOAD_VAL:.*]] = cir.load {{.*}} : !cir.ptr<!cir.vector<2 x !s64i>>, !cir.vector<2 x !s64i> + // CIR: %[[VEC_I:.*]] = cir.cast bitcast %[[LOAD_VAL]] : !cir.vector<2 x !s64i> -> !cir.vector<8 x !s16i> + // CIR: %[[ZERO:.*]] = cir.call @_mm256_setzero_ps() + // CIR: %[[MASK_VAL:.*]] = cir.load {{.*}} : !cir.ptr<!u8i>, !u8i + // CIR: %[[CONV_H:.*]] = cir.cast bitcast %[[VEC_I]] : !cir.vector<8 x !s16i> -> !cir.vector<8 x !cir.f16> + + // CIR-LABEL: cir.func no_inline dso_local @test_vcvtph2ps256_maskz + // CIR: cir.call @_mm256_maskz_cvtph_ps({{.*}}, {{.*}}) + + + // LLVM-LABEL: @test_vcvtph2ps256_maskz + // LLVM: %[[BITCAST_I:.*]] = bitcast <2 x i64> {{.*}} to <8 x i16> + // LLVM: %[[BITCAST_H:.*]] = bitcast <8 x i16> %[[BITCAST_I]] to <8 x half> + // LLVM: %[[CONV:.*]] = fpext <8 x half> %[[BITCAST_H]] to <8 x float> + // LLVM: %[[MASK:.*]] = bitcast i8 {{.*}} to <8 x i1> + // LLVM: %[[RESULT:.*]] = select <8 x i1> %[[MASK]], <8 x float> %[[CONV]], <8 x float> {{.*}} + // LLVM: ret <8 x float> {{.*}} + + // OGCG-LABEL: @test_vcvtph2ps256_maskz + // OGCG: %[[BITCAST_I:.*]] = bitcast <2 x i64> {{.*}} to <8 x i16> + // OGCG: %[[BITCAST_H:.*]] = bitcast <8 x i16> %[[BITCAST_I]] to <8 x half> + // OGCG: %[[CONV:.*]] = fpext <8 x half> %[[BITCAST_H]] to <8 x float> + // OGCG: %[[MASK:.*]] = bitcast i8 {{.*}} to <8 x i1> + // OGCG: %[[RESULT:.*]] = select <8 x i1> %[[MASK]], <8 x float> %[[CONV]], <8 x float> {{.*}} + // OGCG: ret <8 x float> {{.*}} + return _mm256_maskz_cvtph_ps(k, a); +} + +__m512 test_vcvtph2ps512_maskz(__m256i a, __mmask16 k) { + // CIR-LABEL: cir.func always_inline internal private dso_local @_mm512_maskz_cvtph_ps + // CIR: %[[LOAD_VAL:.*]] = cir.load {{.*}} : !cir.ptr<!cir.vector<4 x !s64i>>, !cir.vector<4 x !s64i> + // CIR: %[[VEC_I:.*]] = cir.cast bitcast %[[LOAD_VAL]] : !cir.vector<4 x !s64i> -> !cir.vector<16 x !s16i> + // CIR: %[[ZERO:.*]] = cir.call @_mm512_setzero_ps() + // CIR: %[[MASK_VAL:.*]] = cir.load {{.*}} : !cir.ptr<!u16i>, !u16i + // CIR: %[[CONV_H:.*]] = cir.cast bitcast %[[VEC_I]] : !cir.vector<16 x !s16i> -> !cir.vector<16 x !cir.f16> + + // CIR-LABEL: cir.func no_inline dso_local @test_vcvtph2ps512_maskz + // CIR: cir.call @_mm512_maskz_cvtph_ps({{.*}}, {{.*}}) + + // LLVM-LABEL: @test_vcvtph2ps512_maskz + // LLVM: %[[BI:.*]] = bitcast <4 x i64> {{.*}} to <16 x i16> + // LLVM: %[[BH:.*]] = bitcast <16 x i16> %[[BI]] to <16 x half> + // LLVM: %[[CONV:.*]] = fpext <16 x half> %[[BH]] to <16 x float> + // LLVM: %[[MASK:.*]] = bitcast i16 {{.*}} to <16 x i1> + // LLVM: %[[RES:.*]] = select <16 x i1> %[[MASK]], <16 x float> %[[CONV]], <16 x float> {{.*}} + // LLVM: ret <16 x float> {{.*}} + + // OGCG-LABEL: @test_vcvtph2ps512_maskz + // OGCG: %[[BI:.*]] = bitcast <4 x i64> {{.*}} to <16 x i16> + // OGCG: %[[BH:.*]] = bitcast <16 x i16> %[[BI]] to <16 x half> + // OGCG: %[[CONV:.*]] = fpext <16 x half> %[[BH]] to <16 x float> + // OGCG: %[[MASK:.*]] = bitcast i16 {{.*}} to <16 x i1> + // OGCG: %[[RES:.*]] = select <16 x i1> %[[MASK]], <16 x float> %[[CONV]], <16 x float> {{.*}} + // OGCG: ret <16 x float> {{.*}} + return _mm512_maskz_cvtph_ps(k, a); +} >From b73200cc338b40a38999ccbdeb174e45c9e9fff2 Mon Sep 17 00:00:00 2001 From: Priyanshu Kumar <[email protected]> Date: Thu, 25 Dec 2025 14:30:42 +0000 Subject: [PATCH 2/5] Remove unwanted headers included by clangd --- clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp | 7 ------- 1 file changed, 7 deletions(-) diff --git a/clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp b/clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp index 07f915b51ad6d..9ecec9d615bc4 100644 --- a/clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp +++ b/clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp @@ -14,20 +14,13 @@ #include "CIRGenBuilder.h" #include "CIRGenFunction.h" #include "CIRGenModule.h" -#include "mlir/IR/BuiltinTypes.h" #include "mlir/IR/Location.h" -#include "mlir/IR/Types.h" -#include "mlir/IR/Value.h" #include "mlir/IR/ValueRange.h" #include "clang/Basic/Builtins.h" #include "clang/Basic/TargetBuiltins.h" -#include "clang/CIR/Dialect/IR/CIRDialect.h" #include "clang/CIR/Dialect/IR/CIRTypes.h" #include "clang/CIR/MissingFeatures.h" -#include "llvm/ADT/ArrayRef.h" -#include "llvm/ADT/StringRef.h" #include "llvm/Support/ErrorHandling.h" -#include <cassert> using namespace clang; using namespace clang::CIRGen; >From a72461410892a3561c0cede6cd564a266f507eb4 Mon Sep 17 00:00:00 2001 From: Priyanshu Kumar <[email protected]> Date: Thu, 25 Dec 2025 14:33:48 +0000 Subject: [PATCH 3/5] Fix formatting --- clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp b/clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp index 9ecec9d615bc4..b39a4e683385d 100644 --- a/clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp +++ b/clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp @@ -388,8 +388,8 @@ static mlir::Value emitX86CvtF16ToFloatExpr(CIRGenBuilderTy &builder, } // Bitcast from vXi16 to vXf16. - cir::VectorType halfTy = cir::VectorType::get( - cir::FP16Type::get(builder.getContext()), numElts); + cir::VectorType halfTy = + cir::VectorType::get(cir::FP16Type::get(builder.getContext()), numElts); src = builder.createCast(cir::CastKind::bitcast, src, halfTy); >From b29a415f3dbfb072c3b29e0c219f9dd1f3e3dbec Mon Sep 17 00:00:00 2001 From: Priyanshu Kumar <[email protected]> Date: Thu, 25 Dec 2025 14:34:03 +0000 Subject: [PATCH 4/5] Fix formatting --- .../X86/avx512f16c-builtins.cir | 393 ++++++++++++++++++ 1 file changed, 393 insertions(+) create mode 100644 clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.cir diff --git a/clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.cir b/clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.cir new file mode 100644 index 0000000000000..9364d531b3585 --- /dev/null +++ b/clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.cir @@ -0,0 +1,393 @@ +!s16i = !cir.int<s, 16> +!s32i = !cir.int<s, 32> +!s64i = !cir.int<s, 64> +!u16i = !cir.int<u, 16> +!u8i = !cir.int<u, 8> +#loc3 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":10:28) +#loc4 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":10:36) +#loc5 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":10:39) +#loc6 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":10:46) +#loc7 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":10:51) +#loc8 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":10:60) +#loc18 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":38:31) +#loc19 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":38:39) +#loc20 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":38:42) +#loc21 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":38:49) +#loc22 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":38:54) +#loc23 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":38:63) +#loc33 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":64:31) +#loc34 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":64:39) +#loc35 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":64:42) +#loc36 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":64:49) +#loc37 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":64:54) +#loc38 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":64:64) +#loc56 = loc("./lib/clang/22/include/avx512vlintrin.h":8027:21) +#loc57 = loc("./lib/clang/22/include/avx512vlintrin.h":8027:30) +#loc58 = loc("./lib/clang/22/include/avx512vlintrin.h":8027:35) +#loc59 = loc("./lib/clang/22/include/avx512vlintrin.h":8027:43) +#loc69 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":91:29) +#loc70 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":91:37) +#loc71 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":91:40) +#loc72 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":91:49) +#loc88 = loc("./lib/clang/22/include/avx512vlintrin.h":8044:24) +#loc89 = loc("./lib/clang/22/include/avx512vlintrin.h":8044:33) +#loc90 = loc("./lib/clang/22/include/avx512vlintrin.h":8044:38) +#loc91 = loc("./lib/clang/22/include/avx512vlintrin.h":8044:46) +#loc101 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":128:32) +#loc102 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":128:40) +#loc103 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":128:43) +#loc104 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":128:52) +#loc120 = loc("./lib/clang/22/include/avx512fintrin.h":3584:24) +#loc121 = loc("./lib/clang/22/include/avx512fintrin.h":3584:34) +#loc122 = loc("./lib/clang/22/include/avx512fintrin.h":3584:39) +#loc123 = loc("./lib/clang/22/include/avx512fintrin.h":3584:47) +#loc134 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":158:32) +#loc135 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":158:40) +#loc136 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":158:43) +#loc137 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":158:53) +#loc145 = loc(fused[#loc3, #loc4]) +#loc146 = loc(fused[#loc5, #loc6]) +#loc147 = loc(fused[#loc7, #loc8]) +#loc150 = loc(fused[#loc18, #loc19]) +#loc151 = loc(fused[#loc20, #loc21]) +#loc152 = loc(fused[#loc22, #loc23]) +#loc155 = loc(fused[#loc33, #loc34]) +#loc156 = loc(fused[#loc35, #loc36]) +#loc157 = loc(fused[#loc37, #loc38]) +#loc164 = loc(fused[#loc56, #loc57]) +#loc165 = loc(fused[#loc58, #loc59]) +#loc168 = loc(fused[#loc69, #loc70]) +#loc169 = loc(fused[#loc71, #loc72]) +#loc176 = loc(fused[#loc88, #loc89]) +#loc177 = loc(fused[#loc90, #loc91]) +#loc180 = loc(fused[#loc101, #loc102]) +#loc181 = loc(fused[#loc103, #loc104]) +#loc188 = loc(fused[#loc120, #loc121]) +#loc189 = loc(fused[#loc122, #loc123]) +#loc192 = loc(fused[#loc134, #loc135]) +#loc193 = loc(fused[#loc136, #loc137]) +module @"/home/priyanshu/llvm-project/clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c" attributes {cir.lang = #cir.lang<c>, cir.module_asm = [], cir.triple = "x86_64-unknown-linux", dlti.dl_spec = #dlti.dl_spec<!llvm.ptr<270> = dense<32> : vector<4xi64>, !llvm.ptr<271> = dense<32> : vector<4xi64>, !llvm.ptr<272> = dense<64> : vector<4xi64>, i64 = dense<64> : vector<2xi64>, i128 = dense<128> : vector<2xi64>, f80 = dense<128> : vector<2xi64>, !llvm.ptr = dense<64> : vector<4xi64>, i1 = dense<8> : vector<2xi64>, i8 = dense<8> : vector<2xi64>, i16 = dense<16> : vector<2xi64>, i32 = dense<32> : vector<2xi64>, f16 = dense<16> : vector<2xi64>, f64 = dense<64> : vector<2xi64>, f128 = dense<128> : vector<2xi64>, "dlti.endianness" = "little", "dlti.mangling_mode" = "e", "dlti.legal_int_widths" = array<i32: 8, 16, 32, 64>, "dlti.stack_alignment" = 128 : i64>} { + cir.func no_inline dso_local @test_vcvtph2ps_mask(%arg0: !cir.vector<2 x !s64i> loc(fused[#loc3, #loc4]), %arg1: !cir.vector<4 x !cir.float> loc(fused[#loc5, #loc6]), %arg2: !u8i loc(fused[#loc7, #loc8])) -> !cir.vector<4 x !cir.float> { + %0 = cir.alloca !cir.vector<2 x !s64i>, !cir.ptr<!cir.vector<2 x !s64i>>, ["a", init] {alignment = 16 : i64} loc(#loc145) + %1 = cir.alloca !cir.vector<4 x !cir.float>, !cir.ptr<!cir.vector<4 x !cir.float>>, ["src", init] {alignment = 16 : i64} loc(#loc146) + %2 = cir.alloca !u8i, !cir.ptr<!u8i>, ["k", init] {alignment = 1 : i64} loc(#loc147) + %3 = cir.alloca !cir.vector<4 x !cir.float>, !cir.ptr<!cir.vector<4 x !cir.float>>, ["__retval"] {alignment = 16 : i64} loc(#loc2) + cir.store %arg0, %0 : !cir.vector<2 x !s64i>, !cir.ptr<!cir.vector<2 x !s64i>> loc(#loc9) + cir.store %arg1, %1 : !cir.vector<4 x !cir.float>, !cir.ptr<!cir.vector<4 x !cir.float>> loc(#loc9) + cir.store %arg2, %2 : !u8i, !cir.ptr<!u8i> loc(#loc9) + %4 = cir.load align(16) %0 : !cir.ptr<!cir.vector<2 x !s64i>>, !cir.vector<2 x !s64i> loc(#loc10) + %5 = cir.cast bitcast %4 : !cir.vector<2 x !s64i> -> !cir.vector<8 x !s16i> loc(#loc10) + %6 = cir.load align(16) %1 : !cir.ptr<!cir.vector<4 x !cir.float>>, !cir.vector<4 x !cir.float> loc(#loc11) + %7 = cir.load align(1) %2 : !cir.ptr<!u8i>, !u8i loc(#loc12) + %8 = cir.const #cir.poison : !cir.vector<8 x !s16i> loc(#loc13) + %9 = cir.vec.shuffle(%5, %8 : !cir.vector<8 x !s16i>) [#cir.int<0> : !s32i, #cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i] : !cir.vector<4 x !s16i> loc(#loc13) + %10 = cir.cast bitcast %9 : !cir.vector<4 x !s16i> -> !cir.vector<4 x !cir.f16> loc(#loc13) + %11 = cir.cast floating %10 : !cir.vector<4 x !cir.f16> -> !cir.vector<4 x !cir.float> loc(#loc13) + %12 = cir.cast bitcast %7 : !u8i -> !cir.vector<8 x !cir.bool> loc(#loc12) + %13 = cir.vec.shuffle(%12, %12 : !cir.vector<8 x !cir.bool>) [#cir.int<0> : !s32i, #cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i] : !cir.vector<4 x !cir.bool> loc(#loc13) + %14 = cir.select if %13 then %11 else %6 : (!cir.vector<4 x !cir.bool>, !cir.vector<4 x !cir.float>, !cir.vector<4 x !cir.float>) -> !cir.vector<4 x !cir.float> loc(#loc13) + cir.store %14, %3 : !cir.vector<4 x !cir.float>, !cir.ptr<!cir.vector<4 x !cir.float>> loc(#loc148) + %15 = cir.load %3 : !cir.ptr<!cir.vector<4 x !cir.float>>, !cir.vector<4 x !cir.float> loc(#loc148) + cir.return %15 : !cir.vector<4 x !cir.float> loc(#loc148) + } loc(#loc144) + cir.func no_inline dso_local @test_vcvtph2ps256_mask(%arg0: !cir.vector<2 x !s64i> loc(fused[#loc18, #loc19]), %arg1: !cir.vector<8 x !cir.float> loc(fused[#loc20, #loc21]), %arg2: !u8i loc(fused[#loc22, #loc23])) -> !cir.vector<8 x !cir.float> { + %0 = cir.alloca !cir.vector<2 x !s64i>, !cir.ptr<!cir.vector<2 x !s64i>>, ["a", init] {alignment = 16 : i64} loc(#loc150) + %1 = cir.alloca !cir.vector<8 x !cir.float>, !cir.ptr<!cir.vector<8 x !cir.float>>, ["src", init] {alignment = 32 : i64} loc(#loc151) + %2 = cir.alloca !u8i, !cir.ptr<!u8i>, ["k", init] {alignment = 1 : i64} loc(#loc152) + %3 = cir.alloca !cir.vector<8 x !cir.float>, !cir.ptr<!cir.vector<8 x !cir.float>>, ["__retval"] {alignment = 32 : i64} loc(#loc17) + cir.store %arg0, %0 : !cir.vector<2 x !s64i>, !cir.ptr<!cir.vector<2 x !s64i>> loc(#loc24) + cir.store %arg1, %1 : !cir.vector<8 x !cir.float>, !cir.ptr<!cir.vector<8 x !cir.float>> loc(#loc24) + cir.store %arg2, %2 : !u8i, !cir.ptr<!u8i> loc(#loc24) + %4 = cir.load align(16) %0 : !cir.ptr<!cir.vector<2 x !s64i>>, !cir.vector<2 x !s64i> loc(#loc25) + %5 = cir.cast bitcast %4 : !cir.vector<2 x !s64i> -> !cir.vector<8 x !s16i> loc(#loc25) + %6 = cir.load align(32) %1 : !cir.ptr<!cir.vector<8 x !cir.float>>, !cir.vector<8 x !cir.float> loc(#loc26) + %7 = cir.load align(1) %2 : !cir.ptr<!u8i>, !u8i loc(#loc27) + %8 = cir.cast bitcast %5 : !cir.vector<8 x !s16i> -> !cir.vector<8 x !cir.f16> loc(#loc25) + %9 = cir.cast floating %8 : !cir.vector<8 x !cir.f16> -> !cir.vector<8 x !cir.float> loc(#loc25) + %10 = cir.cast bitcast %7 : !u8i -> !cir.vector<8 x !cir.bool> loc(#loc27) + %11 = cir.select if %10 then %9 else %6 : (!cir.vector<8 x !cir.bool>, !cir.vector<8 x !cir.float>, !cir.vector<8 x !cir.float>) -> !cir.vector<8 x !cir.float> loc(#loc28) + cir.store %11, %3 : !cir.vector<8 x !cir.float>, !cir.ptr<!cir.vector<8 x !cir.float>> loc(#loc153) + %12 = cir.load %3 : !cir.ptr<!cir.vector<8 x !cir.float>>, !cir.vector<8 x !cir.float> loc(#loc153) + cir.return %12 : !cir.vector<8 x !cir.float> loc(#loc153) + } loc(#loc149) + cir.func no_inline dso_local @test_vcvtph2ps512_mask(%arg0: !cir.vector<4 x !s64i> loc(fused[#loc33, #loc34]), %arg1: !cir.vector<16 x !cir.float> loc(fused[#loc35, #loc36]), %arg2: !u16i loc(fused[#loc37, #loc38])) -> !cir.vector<16 x !cir.float> { + %0 = cir.alloca !cir.vector<4 x !s64i>, !cir.ptr<!cir.vector<4 x !s64i>>, ["a", init] {alignment = 32 : i64} loc(#loc155) + %1 = cir.alloca !cir.vector<16 x !cir.float>, !cir.ptr<!cir.vector<16 x !cir.float>>, ["src", init] {alignment = 64 : i64} loc(#loc156) + %2 = cir.alloca !u16i, !cir.ptr<!u16i>, ["k", init] {alignment = 2 : i64} loc(#loc157) + %3 = cir.alloca !cir.vector<16 x !cir.float>, !cir.ptr<!cir.vector<16 x !cir.float>>, ["__retval"] {alignment = 64 : i64} loc(#loc32) + cir.store %arg0, %0 : !cir.vector<4 x !s64i>, !cir.ptr<!cir.vector<4 x !s64i>> loc(#loc39) + cir.store %arg1, %1 : !cir.vector<16 x !cir.float>, !cir.ptr<!cir.vector<16 x !cir.float>> loc(#loc39) + cir.store %arg2, %2 : !u16i, !cir.ptr<!u16i> loc(#loc39) + %4 = cir.load align(32) %0 : !cir.ptr<!cir.vector<4 x !s64i>>, !cir.vector<4 x !s64i> loc(#loc40) + %5 = cir.cast bitcast %4 : !cir.vector<4 x !s64i> -> !cir.vector<16 x !s16i> loc(#loc40) + %6 = cir.load align(64) %1 : !cir.ptr<!cir.vector<16 x !cir.float>>, !cir.vector<16 x !cir.float> loc(#loc41) + %7 = cir.load align(2) %2 : !cir.ptr<!u16i>, !u16i loc(#loc42) + %8 = cir.const #cir.int<4> : !s32i loc(#loc43) + %9 = cir.cast bitcast %5 : !cir.vector<16 x !s16i> -> !cir.vector<16 x !cir.f16> loc(#loc40) + %10 = cir.cast floating %9 : !cir.vector<16 x !cir.f16> -> !cir.vector<16 x !cir.float> loc(#loc40) + %11 = cir.cast bitcast %7 : !u16i -> !cir.vector<16 x !cir.bool> loc(#loc42) + %12 = cir.select if %11 then %10 else %6 : (!cir.vector<16 x !cir.bool>, !cir.vector<16 x !cir.float>, !cir.vector<16 x !cir.float>) -> !cir.vector<16 x !cir.float> loc(#loc44) + cir.store %12, %3 : !cir.vector<16 x !cir.float>, !cir.ptr<!cir.vector<16 x !cir.float>> loc(#loc158) + %13 = cir.load %3 : !cir.ptr<!cir.vector<16 x !cir.float>>, !cir.vector<16 x !cir.float> loc(#loc158) + cir.return %13 : !cir.vector<16 x !cir.float> loc(#loc158) + } loc(#loc154) + cir.func always_inline internal private dso_local @_mm_setzero_ps() -> !cir.vector<4 x !cir.float> { + %0 = cir.alloca !cir.vector<4 x !cir.float>, !cir.ptr<!cir.vector<4 x !cir.float>>, ["__retval"] {alignment = 16 : i64} loc(#loc48) + %1 = cir.alloca !cir.vector<4 x !cir.float>, !cir.ptr<!cir.vector<4 x !cir.float>>, [".compoundliteral"] {alignment = 16 : i64} loc(#loc160) + %2 = cir.const #cir.const_vector<[#cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float]> : !cir.vector<4 x !cir.float> loc(#loc161) + cir.store align(16) %2, %1 : !cir.vector<4 x !cir.float>, !cir.ptr<!cir.vector<4 x !cir.float>> loc(#loc52) + %3 = cir.load align(16) %1 : !cir.ptr<!cir.vector<4 x !cir.float>>, !cir.vector<4 x !cir.float> loc(#loc49) + cir.store %3, %0 : !cir.vector<4 x !cir.float>, !cir.ptr<!cir.vector<4 x !cir.float>> loc(#loc162) + %4 = cir.load %0 : !cir.ptr<!cir.vector<4 x !cir.float>>, !cir.vector<4 x !cir.float> loc(#loc162) + cir.return %4 : !cir.vector<4 x !cir.float> loc(#loc162) + } loc(#loc159) + cir.func always_inline internal private dso_local @_mm_maskz_cvtph_ps(%arg0: !u8i loc(fused[#loc56, #loc57]), %arg1: !cir.vector<2 x !s64i> loc(fused[#loc58, #loc59])) -> !cir.vector<4 x !cir.float> { + %0 = cir.alloca !u8i, !cir.ptr<!u8i>, ["__U", init] {alignment = 1 : i64} loc(#loc164) + %1 = cir.alloca !cir.vector<2 x !s64i>, !cir.ptr<!cir.vector<2 x !s64i>>, ["__A", init] {alignment = 16 : i64} loc(#loc165) + %2 = cir.alloca !cir.vector<4 x !cir.float>, !cir.ptr<!cir.vector<4 x !cir.float>>, ["__retval"] {alignment = 16 : i64} loc(#loc55) + cir.store %arg0, %0 : !u8i, !cir.ptr<!u8i> loc(#loc60) + cir.store %arg1, %1 : !cir.vector<2 x !s64i>, !cir.ptr<!cir.vector<2 x !s64i>> loc(#loc60) + %3 = cir.load align(16) %1 : !cir.ptr<!cir.vector<2 x !s64i>>, !cir.vector<2 x !s64i> loc(#loc61) + %4 = cir.cast bitcast %3 : !cir.vector<2 x !s64i> -> !cir.vector<8 x !s16i> loc(#loc61) + %5 = cir.call @_mm_setzero_ps() : () -> !cir.vector<4 x !cir.float> loc(#loc62) + %6 = cir.load align(1) %0 : !cir.ptr<!u8i>, !u8i loc(#loc63) + %7 = cir.const #cir.poison : !cir.vector<8 x !s16i> loc(#loc64) + %8 = cir.vec.shuffle(%4, %7 : !cir.vector<8 x !s16i>) [#cir.int<0> : !s32i, #cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i] : !cir.vector<4 x !s16i> loc(#loc64) + %9 = cir.cast bitcast %8 : !cir.vector<4 x !s16i> -> !cir.vector<4 x !cir.f16> loc(#loc64) + %10 = cir.cast floating %9 : !cir.vector<4 x !cir.f16> -> !cir.vector<4 x !cir.float> loc(#loc64) + %11 = cir.cast bitcast %6 : !u8i -> !cir.vector<8 x !cir.bool> loc(#loc63) + %12 = cir.vec.shuffle(%11, %11 : !cir.vector<8 x !cir.bool>) [#cir.int<0> : !s32i, #cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i] : !cir.vector<4 x !cir.bool> loc(#loc64) + %13 = cir.select if %12 then %10 else %5 : (!cir.vector<4 x !cir.bool>, !cir.vector<4 x !cir.float>, !cir.vector<4 x !cir.float>) -> !cir.vector<4 x !cir.float> loc(#loc64) + cir.store %13, %2 : !cir.vector<4 x !cir.float>, !cir.ptr<!cir.vector<4 x !cir.float>> loc(#loc166) + %14 = cir.load %2 : !cir.ptr<!cir.vector<4 x !cir.float>>, !cir.vector<4 x !cir.float> loc(#loc166) + cir.return %14 : !cir.vector<4 x !cir.float> loc(#loc166) + } loc(#loc163) + cir.func no_inline dso_local @test_vcvtph2ps_maskz(%arg0: !cir.vector<2 x !s64i> loc(fused[#loc69, #loc70]), %arg1: !u8i loc(fused[#loc71, #loc72])) -> !cir.vector<4 x !cir.float> { + %0 = cir.alloca !cir.vector<2 x !s64i>, !cir.ptr<!cir.vector<2 x !s64i>>, ["a", init] {alignment = 16 : i64} loc(#loc168) + %1 = cir.alloca !u8i, !cir.ptr<!u8i>, ["k", init] {alignment = 1 : i64} loc(#loc169) + %2 = cir.alloca !cir.vector<4 x !cir.float>, !cir.ptr<!cir.vector<4 x !cir.float>>, ["__retval"] {alignment = 16 : i64} loc(#loc68) + cir.store %arg0, %0 : !cir.vector<2 x !s64i>, !cir.ptr<!cir.vector<2 x !s64i>> loc(#loc73) + cir.store %arg1, %1 : !u8i, !cir.ptr<!u8i> loc(#loc73) + %3 = cir.load align(1) %1 : !cir.ptr<!u8i>, !u8i loc(#loc74) + %4 = cir.load align(16) %0 : !cir.ptr<!cir.vector<2 x !s64i>>, !cir.vector<2 x !s64i> loc(#loc75) + %5 = cir.call @_mm_maskz_cvtph_ps(%3, %4) : (!u8i, !cir.vector<2 x !s64i>) -> !cir.vector<4 x !cir.float> loc(#loc76) + cir.store %5, %2 : !cir.vector<4 x !cir.float>, !cir.ptr<!cir.vector<4 x !cir.float>> loc(#loc170) + %6 = cir.load %2 : !cir.ptr<!cir.vector<4 x !cir.float>>, !cir.vector<4 x !cir.float> loc(#loc170) + cir.return %6 : !cir.vector<4 x !cir.float> loc(#loc170) + } loc(#loc167) + cir.func always_inline internal private dso_local @_mm256_setzero_ps() -> !cir.vector<8 x !cir.float> { + %0 = cir.alloca !cir.vector<8 x !cir.float>, !cir.ptr<!cir.vector<8 x !cir.float>>, ["__retval"] {alignment = 32 : i64} loc(#loc80) + %1 = cir.alloca !cir.vector<8 x !cir.float>, !cir.ptr<!cir.vector<8 x !cir.float>>, [".compoundliteral"] {alignment = 32 : i64} loc(#loc172) + %2 = cir.const #cir.const_vector<[#cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float]> : !cir.vector<8 x !cir.float> loc(#loc173) + cir.store align(32) %2, %1 : !cir.vector<8 x !cir.float>, !cir.ptr<!cir.vector<8 x !cir.float>> loc(#loc84) + %3 = cir.load align(32) %1 : !cir.ptr<!cir.vector<8 x !cir.float>>, !cir.vector<8 x !cir.float> loc(#loc81) + cir.store %3, %0 : !cir.vector<8 x !cir.float>, !cir.ptr<!cir.vector<8 x !cir.float>> loc(#loc174) + %4 = cir.load %0 : !cir.ptr<!cir.vector<8 x !cir.float>>, !cir.vector<8 x !cir.float> loc(#loc174) + cir.return %4 : !cir.vector<8 x !cir.float> loc(#loc174) + } loc(#loc171) + cir.func always_inline internal private dso_local @_mm256_maskz_cvtph_ps(%arg0: !u8i loc(fused[#loc88, #loc89]), %arg1: !cir.vector<2 x !s64i> loc(fused[#loc90, #loc91])) -> !cir.vector<8 x !cir.float> { + %0 = cir.alloca !u8i, !cir.ptr<!u8i>, ["__U", init] {alignment = 1 : i64} loc(#loc176) + %1 = cir.alloca !cir.vector<2 x !s64i>, !cir.ptr<!cir.vector<2 x !s64i>>, ["__A", init] {alignment = 16 : i64} loc(#loc177) + %2 = cir.alloca !cir.vector<8 x !cir.float>, !cir.ptr<!cir.vector<8 x !cir.float>>, ["__retval"] {alignment = 32 : i64} loc(#loc87) + cir.store %arg0, %0 : !u8i, !cir.ptr<!u8i> loc(#loc92) + cir.store %arg1, %1 : !cir.vector<2 x !s64i>, !cir.ptr<!cir.vector<2 x !s64i>> loc(#loc92) + %3 = cir.load align(16) %1 : !cir.ptr<!cir.vector<2 x !s64i>>, !cir.vector<2 x !s64i> loc(#loc93) + %4 = cir.cast bitcast %3 : !cir.vector<2 x !s64i> -> !cir.vector<8 x !s16i> loc(#loc93) + %5 = cir.call @_mm256_setzero_ps() : () -> !cir.vector<8 x !cir.float> loc(#loc94) + %6 = cir.load align(1) %0 : !cir.ptr<!u8i>, !u8i loc(#loc95) + %7 = cir.cast bitcast %4 : !cir.vector<8 x !s16i> -> !cir.vector<8 x !cir.f16> loc(#loc93) + %8 = cir.cast floating %7 : !cir.vector<8 x !cir.f16> -> !cir.vector<8 x !cir.float> loc(#loc93) + %9 = cir.cast bitcast %6 : !u8i -> !cir.vector<8 x !cir.bool> loc(#loc95) + %10 = cir.select if %9 then %8 else %5 : (!cir.vector<8 x !cir.bool>, !cir.vector<8 x !cir.float>, !cir.vector<8 x !cir.float>) -> !cir.vector<8 x !cir.float> loc(#loc96) + cir.store %10, %2 : !cir.vector<8 x !cir.float>, !cir.ptr<!cir.vector<8 x !cir.float>> loc(#loc178) + %11 = cir.load %2 : !cir.ptr<!cir.vector<8 x !cir.float>>, !cir.vector<8 x !cir.float> loc(#loc178) + cir.return %11 : !cir.vector<8 x !cir.float> loc(#loc178) + } loc(#loc175) + cir.func no_inline dso_local @test_vcvtph2ps256_maskz(%arg0: !cir.vector<2 x !s64i> loc(fused[#loc101, #loc102]), %arg1: !u8i loc(fused[#loc103, #loc104])) -> !cir.vector<8 x !cir.float> { + %0 = cir.alloca !cir.vector<2 x !s64i>, !cir.ptr<!cir.vector<2 x !s64i>>, ["a", init] {alignment = 16 : i64} loc(#loc180) + %1 = cir.alloca !u8i, !cir.ptr<!u8i>, ["k", init] {alignment = 1 : i64} loc(#loc181) + %2 = cir.alloca !cir.vector<8 x !cir.float>, !cir.ptr<!cir.vector<8 x !cir.float>>, ["__retval"] {alignment = 32 : i64} loc(#loc100) + cir.store %arg0, %0 : !cir.vector<2 x !s64i>, !cir.ptr<!cir.vector<2 x !s64i>> loc(#loc105) + cir.store %arg1, %1 : !u8i, !cir.ptr<!u8i> loc(#loc105) + %3 = cir.load align(1) %1 : !cir.ptr<!u8i>, !u8i loc(#loc106) + %4 = cir.load align(16) %0 : !cir.ptr<!cir.vector<2 x !s64i>>, !cir.vector<2 x !s64i> loc(#loc107) + %5 = cir.call @_mm256_maskz_cvtph_ps(%3, %4) : (!u8i, !cir.vector<2 x !s64i>) -> !cir.vector<8 x !cir.float> loc(#loc108) + cir.store %5, %2 : !cir.vector<8 x !cir.float>, !cir.ptr<!cir.vector<8 x !cir.float>> loc(#loc182) + %6 = cir.load %2 : !cir.ptr<!cir.vector<8 x !cir.float>>, !cir.vector<8 x !cir.float> loc(#loc182) + cir.return %6 : !cir.vector<8 x !cir.float> loc(#loc182) + } loc(#loc179) + cir.func always_inline internal private dso_local @_mm512_setzero_ps() -> !cir.vector<16 x !cir.float> { + %0 = cir.alloca !cir.vector<16 x !cir.float>, !cir.ptr<!cir.vector<16 x !cir.float>>, ["__retval"] {alignment = 64 : i64} loc(#loc112) + %1 = cir.alloca !cir.vector<16 x !cir.float>, !cir.ptr<!cir.vector<16 x !cir.float>>, [".compoundliteral"] {alignment = 64 : i64} loc(#loc184) + %2 = cir.const #cir.const_vector<[#cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float]> : !cir.vector<16 x !cir.float> loc(#loc185) + cir.store align(64) %2, %1 : !cir.vector<16 x !cir.float>, !cir.ptr<!cir.vector<16 x !cir.float>> loc(#loc116) + %3 = cir.load align(64) %1 : !cir.ptr<!cir.vector<16 x !cir.float>>, !cir.vector<16 x !cir.float> loc(#loc113) + cir.store %3, %0 : !cir.vector<16 x !cir.float>, !cir.ptr<!cir.vector<16 x !cir.float>> loc(#loc186) + %4 = cir.load %0 : !cir.ptr<!cir.vector<16 x !cir.float>>, !cir.vector<16 x !cir.float> loc(#loc186) + cir.return %4 : !cir.vector<16 x !cir.float> loc(#loc186) + } loc(#loc183) + cir.func always_inline internal private dso_local @_mm512_maskz_cvtph_ps(%arg0: !u16i loc(fused[#loc120, #loc121]), %arg1: !cir.vector<4 x !s64i> loc(fused[#loc122, #loc123])) -> !cir.vector<16 x !cir.float> { + %0 = cir.alloca !u16i, !cir.ptr<!u16i>, ["__U", init] {alignment = 2 : i64} loc(#loc188) + %1 = cir.alloca !cir.vector<4 x !s64i>, !cir.ptr<!cir.vector<4 x !s64i>>, ["__A", init] {alignment = 32 : i64} loc(#loc189) + %2 = cir.alloca !cir.vector<16 x !cir.float>, !cir.ptr<!cir.vector<16 x !cir.float>>, ["__retval"] {alignment = 64 : i64} loc(#loc119) + cir.store %arg0, %0 : !u16i, !cir.ptr<!u16i> loc(#loc124) + cir.store %arg1, %1 : !cir.vector<4 x !s64i>, !cir.ptr<!cir.vector<4 x !s64i>> loc(#loc124) + %3 = cir.load align(32) %1 : !cir.ptr<!cir.vector<4 x !s64i>>, !cir.vector<4 x !s64i> loc(#loc125) + %4 = cir.cast bitcast %3 : !cir.vector<4 x !s64i> -> !cir.vector<16 x !s16i> loc(#loc125) + %5 = cir.call @_mm512_setzero_ps() : () -> !cir.vector<16 x !cir.float> loc(#loc126) + %6 = cir.load align(2) %0 : !cir.ptr<!u16i>, !u16i loc(#loc127) + %7 = cir.const #cir.int<4> : !s32i loc(#loc128) + %8 = cir.cast bitcast %4 : !cir.vector<16 x !s16i> -> !cir.vector<16 x !cir.f16> loc(#loc125) + %9 = cir.cast floating %8 : !cir.vector<16 x !cir.f16> -> !cir.vector<16 x !cir.float> loc(#loc125) + %10 = cir.cast bitcast %6 : !u16i -> !cir.vector<16 x !cir.bool> loc(#loc127) + %11 = cir.select if %10 then %9 else %5 : (!cir.vector<16 x !cir.bool>, !cir.vector<16 x !cir.float>, !cir.vector<16 x !cir.float>) -> !cir.vector<16 x !cir.float> loc(#loc129) + cir.store %11, %2 : !cir.vector<16 x !cir.float>, !cir.ptr<!cir.vector<16 x !cir.float>> loc(#loc190) + %12 = cir.load %2 : !cir.ptr<!cir.vector<16 x !cir.float>>, !cir.vector<16 x !cir.float> loc(#loc190) + cir.return %12 : !cir.vector<16 x !cir.float> loc(#loc190) + } loc(#loc187) + cir.func no_inline dso_local @test_vcvtph2ps512_maskz(%arg0: !cir.vector<4 x !s64i> loc(fused[#loc134, #loc135]), %arg1: !u16i loc(fused[#loc136, #loc137])) -> !cir.vector<16 x !cir.float> { + %0 = cir.alloca !cir.vector<4 x !s64i>, !cir.ptr<!cir.vector<4 x !s64i>>, ["a", init] {alignment = 32 : i64} loc(#loc192) + %1 = cir.alloca !u16i, !cir.ptr<!u16i>, ["k", init] {alignment = 2 : i64} loc(#loc193) + %2 = cir.alloca !cir.vector<16 x !cir.float>, !cir.ptr<!cir.vector<16 x !cir.float>>, ["__retval"] {alignment = 64 : i64} loc(#loc133) + cir.store %arg0, %0 : !cir.vector<4 x !s64i>, !cir.ptr<!cir.vector<4 x !s64i>> loc(#loc138) + cir.store %arg1, %1 : !u16i, !cir.ptr<!u16i> loc(#loc138) + %3 = cir.load align(2) %1 : !cir.ptr<!u16i>, !u16i loc(#loc139) + %4 = cir.load align(32) %0 : !cir.ptr<!cir.vector<4 x !s64i>>, !cir.vector<4 x !s64i> loc(#loc140) + %5 = cir.call @_mm512_maskz_cvtph_ps(%3, %4) : (!u16i, !cir.vector<4 x !s64i>) -> !cir.vector<16 x !cir.float> loc(#loc141) + cir.store %5, %2 : !cir.vector<16 x !cir.float>, !cir.ptr<!cir.vector<16 x !cir.float>> loc(#loc194) + %6 = cir.load %2 : !cir.ptr<!cir.vector<16 x !cir.float>>, !cir.vector<16 x !cir.float> loc(#loc194) + cir.return %6 : !cir.vector<16 x !cir.float> loc(#loc194) + } loc(#loc191) +} loc(#loc) +#loc = loc("/home/priyanshu/llvm-project/clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":0:0) +#loc1 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":10:1) +#loc2 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":36:1) +#loc9 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":10:63) +#loc10 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":35:48) +#loc11 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":35:51) +#loc12 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":35:56) +#loc13 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":35:10) +#loc14 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":35:3) +#loc15 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":35:57) +#loc16 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":38:1) +#loc17 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":62:1) +#loc24 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":38:66) +#loc25 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":61:51) +#loc26 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":61:54) +#loc27 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":61:59) +#loc28 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":61:10) +#loc29 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":61:3) +#loc30 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":61:60) +#loc31 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":64:1) +#loc32 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":89:1) +#loc39 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":64:67) +#loc40 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":88:52) +#loc41 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":88:55) +#loc42 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":88:60) +#loc43 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":88:63) +#loc44 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":88:10) +#loc45 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":88:3) +#loc46 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":88:64) +#loc47 = loc("./lib/clang/22/include/xmmintrin.h":2017:1) +#loc48 = loc("./lib/clang/22/include/xmmintrin.h":2020:1) +#loc49 = loc("./lib/clang/22/include/xmmintrin.h":2019:24) +#loc50 = loc("./lib/clang/22/include/xmmintrin.h":2019:57) +#loc51 = loc("./lib/clang/22/include/xmmintrin.h":2019:32) +#loc52 = loc("./lib/clang/22/include/xmmintrin.h":2018:1) +#loc53 = loc("./lib/clang/22/include/xmmintrin.h":2019:3) +#loc54 = loc("./lib/clang/22/include/avx512vlintrin.h":8026:1) +#loc55 = loc("./lib/clang/22/include/avx512vlintrin.h":8033:1) +#loc60 = loc("./lib/clang/22/include/avx512vlintrin.h":8028:1) +#loc61 = loc("./lib/clang/22/include/avx512vlintrin.h":8029:59) +#loc62 = loc("./lib/clang/22/include/avx512vlintrin.h":8031:14) +#loc63 = loc("./lib/clang/22/include/avx512vlintrin.h":8032:25) +#loc64 = loc("./lib/clang/22/include/avx512vlintrin.h":8029:19) +#loc65 = loc("./lib/clang/22/include/avx512vlintrin.h":8029:3) +#loc66 = loc("./lib/clang/22/include/avx512vlintrin.h":8032:28) +#loc67 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":91:1) +#loc68 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":126:1) +#loc73 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":91:52) +#loc74 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":125:29) +#loc75 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":125:32) +#loc76 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":125:10) +#loc77 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":125:3) +#loc78 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":125:33) +#loc79 = loc("./lib/clang/22/include/avxintrin.h":4291:1) +#loc80 = loc("./lib/clang/22/include/avxintrin.h":4293:1) +#loc81 = loc("./lib/clang/22/include/avxintrin.h":4292:24) +#loc82 = loc("./lib/clang/22/include/avxintrin.h":4292:81) +#loc83 = loc("./lib/clang/22/include/avxintrin.h":4292:32) +#loc84 = loc("./lib/clang/22/include/avxintrin.h":4291:53) +#loc85 = loc("./lib/clang/22/include/avxintrin.h":4292:3) +#loc86 = loc("./lib/clang/22/include/avx512vlintrin.h":8043:1) +#loc87 = loc("./lib/clang/22/include/avx512vlintrin.h":8050:1) +#loc92 = loc("./lib/clang/22/include/avx512vlintrin.h":8045:1) +#loc93 = loc("./lib/clang/22/include/avx512vlintrin.h":8046:62) +#loc94 = loc("./lib/clang/22/include/avx512vlintrin.h":8048:17) +#loc95 = loc("./lib/clang/22/include/avx512vlintrin.h":8049:28) +#loc96 = loc("./lib/clang/22/include/avx512vlintrin.h":8046:19) +#loc97 = loc("./lib/clang/22/include/avx512vlintrin.h":8046:3) +#loc98 = loc("./lib/clang/22/include/avx512vlintrin.h":8049:31) +#loc99 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":128:1) +#loc100 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":156:1) +#loc105 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":128:55) +#loc106 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":155:33) +#loc107 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":155:36) +#loc108 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":155:11) +#loc109 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":155:4) +#loc110 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":155:37) +#loc111 = loc("./lib/clang/22/include/avx512fintrin.h":259:1) +#loc112 = loc("./lib/clang/22/include/avx512fintrin.h":262:1) +#loc113 = loc("./lib/clang/22/include/avx512fintrin.h":260:23) +#loc114 = loc("./lib/clang/22/include/avx512fintrin.h":261:78) +#loc115 = loc("./lib/clang/22/include/avx512fintrin.h":260:31) +#loc116 = loc("./lib/clang/22/include/avx512fintrin.h":259:56) +#loc117 = loc("./lib/clang/22/include/avx512fintrin.h":260:3) +#loc118 = loc("./lib/clang/22/include/avx512fintrin.h":3583:1) +#loc119 = loc("./lib/clang/22/include/avx512fintrin.h":3590:1) +#loc124 = loc("./lib/clang/22/include/avx512fintrin.h":3585:1) +#loc125 = loc("./lib/clang/22/include/avx512fintrin.h":3586:63) +#loc126 = loc("./lib/clang/22/include/avx512fintrin.h":3587:28) +#loc127 = loc("./lib/clang/22/include/avx512fintrin.h":3588:30) +#loc128 = loc("./lib/clang/22/include/avx512fintrin.h":3589:18) +#loc129 = loc("./lib/clang/22/include/avx512fintrin.h":3586:19) +#loc130 = loc("./lib/clang/22/include/avx512fintrin.h":3586:3) +#loc131 = loc("./lib/clang/22/include/avx512fintrin.h":3589:42) +#loc132 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":158:1) +#loc133 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":185:1) +#loc138 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":158:56) +#loc139 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":184:32) +#loc140 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":184:35) +#loc141 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":184:10) +#loc142 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":184:3) +#loc143 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":184:36) +#loc144 = loc(fused[#loc1, #loc2]) +#loc148 = loc(fused[#loc14, #loc15]) +#loc149 = loc(fused[#loc16, #loc17]) +#loc153 = loc(fused[#loc29, #loc30]) +#loc154 = loc(fused[#loc31, #loc32]) +#loc158 = loc(fused[#loc45, #loc46]) +#loc159 = loc(fused[#loc47, #loc48]) +#loc160 = loc(fused[#loc49, #loc50]) +#loc161 = loc(fused[#loc51, #loc50]) +#loc162 = loc(fused[#loc53, #loc50]) +#loc163 = loc(fused[#loc54, #loc55]) +#loc166 = loc(fused[#loc65, #loc66]) +#loc167 = loc(fused[#loc67, #loc68]) +#loc170 = loc(fused[#loc77, #loc78]) +#loc171 = loc(fused[#loc79, #loc80]) +#loc172 = loc(fused[#loc81, #loc82]) +#loc173 = loc(fused[#loc83, #loc82]) +#loc174 = loc(fused[#loc85, #loc82]) +#loc175 = loc(fused[#loc86, #loc87]) +#loc178 = loc(fused[#loc97, #loc98]) +#loc179 = loc(fused[#loc99, #loc100]) +#loc182 = loc(fused[#loc109, #loc110]) +#loc183 = loc(fused[#loc111, #loc112]) +#loc184 = loc(fused[#loc113, #loc114]) +#loc185 = loc(fused[#loc115, #loc114]) +#loc186 = loc(fused[#loc117, #loc114]) +#loc187 = loc(fused[#loc118, #loc119]) +#loc190 = loc(fused[#loc130, #loc131]) +#loc191 = loc(fused[#loc132, #loc133]) +#loc194 = loc(fused[#loc142, #loc143]) >From 284c8750554ef09d2f919e30ef2c82d8289ef493 Mon Sep 17 00:00:00 2001 From: Priyanshu Kumar <[email protected]> Date: Thu, 25 Dec 2025 20:29:57 +0530 Subject: [PATCH 5/5] Delete clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.cir --- .../X86/avx512f16c-builtins.cir | 393 ------------------ 1 file changed, 393 deletions(-) delete mode 100644 clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.cir diff --git a/clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.cir b/clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.cir deleted file mode 100644 index 9364d531b3585..0000000000000 --- a/clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.cir +++ /dev/null @@ -1,393 +0,0 @@ -!s16i = !cir.int<s, 16> -!s32i = !cir.int<s, 32> -!s64i = !cir.int<s, 64> -!u16i = !cir.int<u, 16> -!u8i = !cir.int<u, 8> -#loc3 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":10:28) -#loc4 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":10:36) -#loc5 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":10:39) -#loc6 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":10:46) -#loc7 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":10:51) -#loc8 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":10:60) -#loc18 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":38:31) -#loc19 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":38:39) -#loc20 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":38:42) -#loc21 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":38:49) -#loc22 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":38:54) -#loc23 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":38:63) -#loc33 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":64:31) -#loc34 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":64:39) -#loc35 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":64:42) -#loc36 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":64:49) -#loc37 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":64:54) -#loc38 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":64:64) -#loc56 = loc("./lib/clang/22/include/avx512vlintrin.h":8027:21) -#loc57 = loc("./lib/clang/22/include/avx512vlintrin.h":8027:30) -#loc58 = loc("./lib/clang/22/include/avx512vlintrin.h":8027:35) -#loc59 = loc("./lib/clang/22/include/avx512vlintrin.h":8027:43) -#loc69 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":91:29) -#loc70 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":91:37) -#loc71 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":91:40) -#loc72 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":91:49) -#loc88 = loc("./lib/clang/22/include/avx512vlintrin.h":8044:24) -#loc89 = loc("./lib/clang/22/include/avx512vlintrin.h":8044:33) -#loc90 = loc("./lib/clang/22/include/avx512vlintrin.h":8044:38) -#loc91 = loc("./lib/clang/22/include/avx512vlintrin.h":8044:46) -#loc101 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":128:32) -#loc102 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":128:40) -#loc103 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":128:43) -#loc104 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":128:52) -#loc120 = loc("./lib/clang/22/include/avx512fintrin.h":3584:24) -#loc121 = loc("./lib/clang/22/include/avx512fintrin.h":3584:34) -#loc122 = loc("./lib/clang/22/include/avx512fintrin.h":3584:39) -#loc123 = loc("./lib/clang/22/include/avx512fintrin.h":3584:47) -#loc134 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":158:32) -#loc135 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":158:40) -#loc136 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":158:43) -#loc137 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":158:53) -#loc145 = loc(fused[#loc3, #loc4]) -#loc146 = loc(fused[#loc5, #loc6]) -#loc147 = loc(fused[#loc7, #loc8]) -#loc150 = loc(fused[#loc18, #loc19]) -#loc151 = loc(fused[#loc20, #loc21]) -#loc152 = loc(fused[#loc22, #loc23]) -#loc155 = loc(fused[#loc33, #loc34]) -#loc156 = loc(fused[#loc35, #loc36]) -#loc157 = loc(fused[#loc37, #loc38]) -#loc164 = loc(fused[#loc56, #loc57]) -#loc165 = loc(fused[#loc58, #loc59]) -#loc168 = loc(fused[#loc69, #loc70]) -#loc169 = loc(fused[#loc71, #loc72]) -#loc176 = loc(fused[#loc88, #loc89]) -#loc177 = loc(fused[#loc90, #loc91]) -#loc180 = loc(fused[#loc101, #loc102]) -#loc181 = loc(fused[#loc103, #loc104]) -#loc188 = loc(fused[#loc120, #loc121]) -#loc189 = loc(fused[#loc122, #loc123]) -#loc192 = loc(fused[#loc134, #loc135]) -#loc193 = loc(fused[#loc136, #loc137]) -module @"/home/priyanshu/llvm-project/clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c" attributes {cir.lang = #cir.lang<c>, cir.module_asm = [], cir.triple = "x86_64-unknown-linux", dlti.dl_spec = #dlti.dl_spec<!llvm.ptr<270> = dense<32> : vector<4xi64>, !llvm.ptr<271> = dense<32> : vector<4xi64>, !llvm.ptr<272> = dense<64> : vector<4xi64>, i64 = dense<64> : vector<2xi64>, i128 = dense<128> : vector<2xi64>, f80 = dense<128> : vector<2xi64>, !llvm.ptr = dense<64> : vector<4xi64>, i1 = dense<8> : vector<2xi64>, i8 = dense<8> : vector<2xi64>, i16 = dense<16> : vector<2xi64>, i32 = dense<32> : vector<2xi64>, f16 = dense<16> : vector<2xi64>, f64 = dense<64> : vector<2xi64>, f128 = dense<128> : vector<2xi64>, "dlti.endianness" = "little", "dlti.mangling_mode" = "e", "dlti.legal_int_widths" = array<i32: 8, 16, 32, 64>, "dlti.stack_alignment" = 128 : i64>} { - cir.func no_inline dso_local @test_vcvtph2ps_mask(%arg0: !cir.vector<2 x !s64i> loc(fused[#loc3, #loc4]), %arg1: !cir.vector<4 x !cir.float> loc(fused[#loc5, #loc6]), %arg2: !u8i loc(fused[#loc7, #loc8])) -> !cir.vector<4 x !cir.float> { - %0 = cir.alloca !cir.vector<2 x !s64i>, !cir.ptr<!cir.vector<2 x !s64i>>, ["a", init] {alignment = 16 : i64} loc(#loc145) - %1 = cir.alloca !cir.vector<4 x !cir.float>, !cir.ptr<!cir.vector<4 x !cir.float>>, ["src", init] {alignment = 16 : i64} loc(#loc146) - %2 = cir.alloca !u8i, !cir.ptr<!u8i>, ["k", init] {alignment = 1 : i64} loc(#loc147) - %3 = cir.alloca !cir.vector<4 x !cir.float>, !cir.ptr<!cir.vector<4 x !cir.float>>, ["__retval"] {alignment = 16 : i64} loc(#loc2) - cir.store %arg0, %0 : !cir.vector<2 x !s64i>, !cir.ptr<!cir.vector<2 x !s64i>> loc(#loc9) - cir.store %arg1, %1 : !cir.vector<4 x !cir.float>, !cir.ptr<!cir.vector<4 x !cir.float>> loc(#loc9) - cir.store %arg2, %2 : !u8i, !cir.ptr<!u8i> loc(#loc9) - %4 = cir.load align(16) %0 : !cir.ptr<!cir.vector<2 x !s64i>>, !cir.vector<2 x !s64i> loc(#loc10) - %5 = cir.cast bitcast %4 : !cir.vector<2 x !s64i> -> !cir.vector<8 x !s16i> loc(#loc10) - %6 = cir.load align(16) %1 : !cir.ptr<!cir.vector<4 x !cir.float>>, !cir.vector<4 x !cir.float> loc(#loc11) - %7 = cir.load align(1) %2 : !cir.ptr<!u8i>, !u8i loc(#loc12) - %8 = cir.const #cir.poison : !cir.vector<8 x !s16i> loc(#loc13) - %9 = cir.vec.shuffle(%5, %8 : !cir.vector<8 x !s16i>) [#cir.int<0> : !s32i, #cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i] : !cir.vector<4 x !s16i> loc(#loc13) - %10 = cir.cast bitcast %9 : !cir.vector<4 x !s16i> -> !cir.vector<4 x !cir.f16> loc(#loc13) - %11 = cir.cast floating %10 : !cir.vector<4 x !cir.f16> -> !cir.vector<4 x !cir.float> loc(#loc13) - %12 = cir.cast bitcast %7 : !u8i -> !cir.vector<8 x !cir.bool> loc(#loc12) - %13 = cir.vec.shuffle(%12, %12 : !cir.vector<8 x !cir.bool>) [#cir.int<0> : !s32i, #cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i] : !cir.vector<4 x !cir.bool> loc(#loc13) - %14 = cir.select if %13 then %11 else %6 : (!cir.vector<4 x !cir.bool>, !cir.vector<4 x !cir.float>, !cir.vector<4 x !cir.float>) -> !cir.vector<4 x !cir.float> loc(#loc13) - cir.store %14, %3 : !cir.vector<4 x !cir.float>, !cir.ptr<!cir.vector<4 x !cir.float>> loc(#loc148) - %15 = cir.load %3 : !cir.ptr<!cir.vector<4 x !cir.float>>, !cir.vector<4 x !cir.float> loc(#loc148) - cir.return %15 : !cir.vector<4 x !cir.float> loc(#loc148) - } loc(#loc144) - cir.func no_inline dso_local @test_vcvtph2ps256_mask(%arg0: !cir.vector<2 x !s64i> loc(fused[#loc18, #loc19]), %arg1: !cir.vector<8 x !cir.float> loc(fused[#loc20, #loc21]), %arg2: !u8i loc(fused[#loc22, #loc23])) -> !cir.vector<8 x !cir.float> { - %0 = cir.alloca !cir.vector<2 x !s64i>, !cir.ptr<!cir.vector<2 x !s64i>>, ["a", init] {alignment = 16 : i64} loc(#loc150) - %1 = cir.alloca !cir.vector<8 x !cir.float>, !cir.ptr<!cir.vector<8 x !cir.float>>, ["src", init] {alignment = 32 : i64} loc(#loc151) - %2 = cir.alloca !u8i, !cir.ptr<!u8i>, ["k", init] {alignment = 1 : i64} loc(#loc152) - %3 = cir.alloca !cir.vector<8 x !cir.float>, !cir.ptr<!cir.vector<8 x !cir.float>>, ["__retval"] {alignment = 32 : i64} loc(#loc17) - cir.store %arg0, %0 : !cir.vector<2 x !s64i>, !cir.ptr<!cir.vector<2 x !s64i>> loc(#loc24) - cir.store %arg1, %1 : !cir.vector<8 x !cir.float>, !cir.ptr<!cir.vector<8 x !cir.float>> loc(#loc24) - cir.store %arg2, %2 : !u8i, !cir.ptr<!u8i> loc(#loc24) - %4 = cir.load align(16) %0 : !cir.ptr<!cir.vector<2 x !s64i>>, !cir.vector<2 x !s64i> loc(#loc25) - %5 = cir.cast bitcast %4 : !cir.vector<2 x !s64i> -> !cir.vector<8 x !s16i> loc(#loc25) - %6 = cir.load align(32) %1 : !cir.ptr<!cir.vector<8 x !cir.float>>, !cir.vector<8 x !cir.float> loc(#loc26) - %7 = cir.load align(1) %2 : !cir.ptr<!u8i>, !u8i loc(#loc27) - %8 = cir.cast bitcast %5 : !cir.vector<8 x !s16i> -> !cir.vector<8 x !cir.f16> loc(#loc25) - %9 = cir.cast floating %8 : !cir.vector<8 x !cir.f16> -> !cir.vector<8 x !cir.float> loc(#loc25) - %10 = cir.cast bitcast %7 : !u8i -> !cir.vector<8 x !cir.bool> loc(#loc27) - %11 = cir.select if %10 then %9 else %6 : (!cir.vector<8 x !cir.bool>, !cir.vector<8 x !cir.float>, !cir.vector<8 x !cir.float>) -> !cir.vector<8 x !cir.float> loc(#loc28) - cir.store %11, %3 : !cir.vector<8 x !cir.float>, !cir.ptr<!cir.vector<8 x !cir.float>> loc(#loc153) - %12 = cir.load %3 : !cir.ptr<!cir.vector<8 x !cir.float>>, !cir.vector<8 x !cir.float> loc(#loc153) - cir.return %12 : !cir.vector<8 x !cir.float> loc(#loc153) - } loc(#loc149) - cir.func no_inline dso_local @test_vcvtph2ps512_mask(%arg0: !cir.vector<4 x !s64i> loc(fused[#loc33, #loc34]), %arg1: !cir.vector<16 x !cir.float> loc(fused[#loc35, #loc36]), %arg2: !u16i loc(fused[#loc37, #loc38])) -> !cir.vector<16 x !cir.float> { - %0 = cir.alloca !cir.vector<4 x !s64i>, !cir.ptr<!cir.vector<4 x !s64i>>, ["a", init] {alignment = 32 : i64} loc(#loc155) - %1 = cir.alloca !cir.vector<16 x !cir.float>, !cir.ptr<!cir.vector<16 x !cir.float>>, ["src", init] {alignment = 64 : i64} loc(#loc156) - %2 = cir.alloca !u16i, !cir.ptr<!u16i>, ["k", init] {alignment = 2 : i64} loc(#loc157) - %3 = cir.alloca !cir.vector<16 x !cir.float>, !cir.ptr<!cir.vector<16 x !cir.float>>, ["__retval"] {alignment = 64 : i64} loc(#loc32) - cir.store %arg0, %0 : !cir.vector<4 x !s64i>, !cir.ptr<!cir.vector<4 x !s64i>> loc(#loc39) - cir.store %arg1, %1 : !cir.vector<16 x !cir.float>, !cir.ptr<!cir.vector<16 x !cir.float>> loc(#loc39) - cir.store %arg2, %2 : !u16i, !cir.ptr<!u16i> loc(#loc39) - %4 = cir.load align(32) %0 : !cir.ptr<!cir.vector<4 x !s64i>>, !cir.vector<4 x !s64i> loc(#loc40) - %5 = cir.cast bitcast %4 : !cir.vector<4 x !s64i> -> !cir.vector<16 x !s16i> loc(#loc40) - %6 = cir.load align(64) %1 : !cir.ptr<!cir.vector<16 x !cir.float>>, !cir.vector<16 x !cir.float> loc(#loc41) - %7 = cir.load align(2) %2 : !cir.ptr<!u16i>, !u16i loc(#loc42) - %8 = cir.const #cir.int<4> : !s32i loc(#loc43) - %9 = cir.cast bitcast %5 : !cir.vector<16 x !s16i> -> !cir.vector<16 x !cir.f16> loc(#loc40) - %10 = cir.cast floating %9 : !cir.vector<16 x !cir.f16> -> !cir.vector<16 x !cir.float> loc(#loc40) - %11 = cir.cast bitcast %7 : !u16i -> !cir.vector<16 x !cir.bool> loc(#loc42) - %12 = cir.select if %11 then %10 else %6 : (!cir.vector<16 x !cir.bool>, !cir.vector<16 x !cir.float>, !cir.vector<16 x !cir.float>) -> !cir.vector<16 x !cir.float> loc(#loc44) - cir.store %12, %3 : !cir.vector<16 x !cir.float>, !cir.ptr<!cir.vector<16 x !cir.float>> loc(#loc158) - %13 = cir.load %3 : !cir.ptr<!cir.vector<16 x !cir.float>>, !cir.vector<16 x !cir.float> loc(#loc158) - cir.return %13 : !cir.vector<16 x !cir.float> loc(#loc158) - } loc(#loc154) - cir.func always_inline internal private dso_local @_mm_setzero_ps() -> !cir.vector<4 x !cir.float> { - %0 = cir.alloca !cir.vector<4 x !cir.float>, !cir.ptr<!cir.vector<4 x !cir.float>>, ["__retval"] {alignment = 16 : i64} loc(#loc48) - %1 = cir.alloca !cir.vector<4 x !cir.float>, !cir.ptr<!cir.vector<4 x !cir.float>>, [".compoundliteral"] {alignment = 16 : i64} loc(#loc160) - %2 = cir.const #cir.const_vector<[#cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float]> : !cir.vector<4 x !cir.float> loc(#loc161) - cir.store align(16) %2, %1 : !cir.vector<4 x !cir.float>, !cir.ptr<!cir.vector<4 x !cir.float>> loc(#loc52) - %3 = cir.load align(16) %1 : !cir.ptr<!cir.vector<4 x !cir.float>>, !cir.vector<4 x !cir.float> loc(#loc49) - cir.store %3, %0 : !cir.vector<4 x !cir.float>, !cir.ptr<!cir.vector<4 x !cir.float>> loc(#loc162) - %4 = cir.load %0 : !cir.ptr<!cir.vector<4 x !cir.float>>, !cir.vector<4 x !cir.float> loc(#loc162) - cir.return %4 : !cir.vector<4 x !cir.float> loc(#loc162) - } loc(#loc159) - cir.func always_inline internal private dso_local @_mm_maskz_cvtph_ps(%arg0: !u8i loc(fused[#loc56, #loc57]), %arg1: !cir.vector<2 x !s64i> loc(fused[#loc58, #loc59])) -> !cir.vector<4 x !cir.float> { - %0 = cir.alloca !u8i, !cir.ptr<!u8i>, ["__U", init] {alignment = 1 : i64} loc(#loc164) - %1 = cir.alloca !cir.vector<2 x !s64i>, !cir.ptr<!cir.vector<2 x !s64i>>, ["__A", init] {alignment = 16 : i64} loc(#loc165) - %2 = cir.alloca !cir.vector<4 x !cir.float>, !cir.ptr<!cir.vector<4 x !cir.float>>, ["__retval"] {alignment = 16 : i64} loc(#loc55) - cir.store %arg0, %0 : !u8i, !cir.ptr<!u8i> loc(#loc60) - cir.store %arg1, %1 : !cir.vector<2 x !s64i>, !cir.ptr<!cir.vector<2 x !s64i>> loc(#loc60) - %3 = cir.load align(16) %1 : !cir.ptr<!cir.vector<2 x !s64i>>, !cir.vector<2 x !s64i> loc(#loc61) - %4 = cir.cast bitcast %3 : !cir.vector<2 x !s64i> -> !cir.vector<8 x !s16i> loc(#loc61) - %5 = cir.call @_mm_setzero_ps() : () -> !cir.vector<4 x !cir.float> loc(#loc62) - %6 = cir.load align(1) %0 : !cir.ptr<!u8i>, !u8i loc(#loc63) - %7 = cir.const #cir.poison : !cir.vector<8 x !s16i> loc(#loc64) - %8 = cir.vec.shuffle(%4, %7 : !cir.vector<8 x !s16i>) [#cir.int<0> : !s32i, #cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i] : !cir.vector<4 x !s16i> loc(#loc64) - %9 = cir.cast bitcast %8 : !cir.vector<4 x !s16i> -> !cir.vector<4 x !cir.f16> loc(#loc64) - %10 = cir.cast floating %9 : !cir.vector<4 x !cir.f16> -> !cir.vector<4 x !cir.float> loc(#loc64) - %11 = cir.cast bitcast %6 : !u8i -> !cir.vector<8 x !cir.bool> loc(#loc63) - %12 = cir.vec.shuffle(%11, %11 : !cir.vector<8 x !cir.bool>) [#cir.int<0> : !s32i, #cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i] : !cir.vector<4 x !cir.bool> loc(#loc64) - %13 = cir.select if %12 then %10 else %5 : (!cir.vector<4 x !cir.bool>, !cir.vector<4 x !cir.float>, !cir.vector<4 x !cir.float>) -> !cir.vector<4 x !cir.float> loc(#loc64) - cir.store %13, %2 : !cir.vector<4 x !cir.float>, !cir.ptr<!cir.vector<4 x !cir.float>> loc(#loc166) - %14 = cir.load %2 : !cir.ptr<!cir.vector<4 x !cir.float>>, !cir.vector<4 x !cir.float> loc(#loc166) - cir.return %14 : !cir.vector<4 x !cir.float> loc(#loc166) - } loc(#loc163) - cir.func no_inline dso_local @test_vcvtph2ps_maskz(%arg0: !cir.vector<2 x !s64i> loc(fused[#loc69, #loc70]), %arg1: !u8i loc(fused[#loc71, #loc72])) -> !cir.vector<4 x !cir.float> { - %0 = cir.alloca !cir.vector<2 x !s64i>, !cir.ptr<!cir.vector<2 x !s64i>>, ["a", init] {alignment = 16 : i64} loc(#loc168) - %1 = cir.alloca !u8i, !cir.ptr<!u8i>, ["k", init] {alignment = 1 : i64} loc(#loc169) - %2 = cir.alloca !cir.vector<4 x !cir.float>, !cir.ptr<!cir.vector<4 x !cir.float>>, ["__retval"] {alignment = 16 : i64} loc(#loc68) - cir.store %arg0, %0 : !cir.vector<2 x !s64i>, !cir.ptr<!cir.vector<2 x !s64i>> loc(#loc73) - cir.store %arg1, %1 : !u8i, !cir.ptr<!u8i> loc(#loc73) - %3 = cir.load align(1) %1 : !cir.ptr<!u8i>, !u8i loc(#loc74) - %4 = cir.load align(16) %0 : !cir.ptr<!cir.vector<2 x !s64i>>, !cir.vector<2 x !s64i> loc(#loc75) - %5 = cir.call @_mm_maskz_cvtph_ps(%3, %4) : (!u8i, !cir.vector<2 x !s64i>) -> !cir.vector<4 x !cir.float> loc(#loc76) - cir.store %5, %2 : !cir.vector<4 x !cir.float>, !cir.ptr<!cir.vector<4 x !cir.float>> loc(#loc170) - %6 = cir.load %2 : !cir.ptr<!cir.vector<4 x !cir.float>>, !cir.vector<4 x !cir.float> loc(#loc170) - cir.return %6 : !cir.vector<4 x !cir.float> loc(#loc170) - } loc(#loc167) - cir.func always_inline internal private dso_local @_mm256_setzero_ps() -> !cir.vector<8 x !cir.float> { - %0 = cir.alloca !cir.vector<8 x !cir.float>, !cir.ptr<!cir.vector<8 x !cir.float>>, ["__retval"] {alignment = 32 : i64} loc(#loc80) - %1 = cir.alloca !cir.vector<8 x !cir.float>, !cir.ptr<!cir.vector<8 x !cir.float>>, [".compoundliteral"] {alignment = 32 : i64} loc(#loc172) - %2 = cir.const #cir.const_vector<[#cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float]> : !cir.vector<8 x !cir.float> loc(#loc173) - cir.store align(32) %2, %1 : !cir.vector<8 x !cir.float>, !cir.ptr<!cir.vector<8 x !cir.float>> loc(#loc84) - %3 = cir.load align(32) %1 : !cir.ptr<!cir.vector<8 x !cir.float>>, !cir.vector<8 x !cir.float> loc(#loc81) - cir.store %3, %0 : !cir.vector<8 x !cir.float>, !cir.ptr<!cir.vector<8 x !cir.float>> loc(#loc174) - %4 = cir.load %0 : !cir.ptr<!cir.vector<8 x !cir.float>>, !cir.vector<8 x !cir.float> loc(#loc174) - cir.return %4 : !cir.vector<8 x !cir.float> loc(#loc174) - } loc(#loc171) - cir.func always_inline internal private dso_local @_mm256_maskz_cvtph_ps(%arg0: !u8i loc(fused[#loc88, #loc89]), %arg1: !cir.vector<2 x !s64i> loc(fused[#loc90, #loc91])) -> !cir.vector<8 x !cir.float> { - %0 = cir.alloca !u8i, !cir.ptr<!u8i>, ["__U", init] {alignment = 1 : i64} loc(#loc176) - %1 = cir.alloca !cir.vector<2 x !s64i>, !cir.ptr<!cir.vector<2 x !s64i>>, ["__A", init] {alignment = 16 : i64} loc(#loc177) - %2 = cir.alloca !cir.vector<8 x !cir.float>, !cir.ptr<!cir.vector<8 x !cir.float>>, ["__retval"] {alignment = 32 : i64} loc(#loc87) - cir.store %arg0, %0 : !u8i, !cir.ptr<!u8i> loc(#loc92) - cir.store %arg1, %1 : !cir.vector<2 x !s64i>, !cir.ptr<!cir.vector<2 x !s64i>> loc(#loc92) - %3 = cir.load align(16) %1 : !cir.ptr<!cir.vector<2 x !s64i>>, !cir.vector<2 x !s64i> loc(#loc93) - %4 = cir.cast bitcast %3 : !cir.vector<2 x !s64i> -> !cir.vector<8 x !s16i> loc(#loc93) - %5 = cir.call @_mm256_setzero_ps() : () -> !cir.vector<8 x !cir.float> loc(#loc94) - %6 = cir.load align(1) %0 : !cir.ptr<!u8i>, !u8i loc(#loc95) - %7 = cir.cast bitcast %4 : !cir.vector<8 x !s16i> -> !cir.vector<8 x !cir.f16> loc(#loc93) - %8 = cir.cast floating %7 : !cir.vector<8 x !cir.f16> -> !cir.vector<8 x !cir.float> loc(#loc93) - %9 = cir.cast bitcast %6 : !u8i -> !cir.vector<8 x !cir.bool> loc(#loc95) - %10 = cir.select if %9 then %8 else %5 : (!cir.vector<8 x !cir.bool>, !cir.vector<8 x !cir.float>, !cir.vector<8 x !cir.float>) -> !cir.vector<8 x !cir.float> loc(#loc96) - cir.store %10, %2 : !cir.vector<8 x !cir.float>, !cir.ptr<!cir.vector<8 x !cir.float>> loc(#loc178) - %11 = cir.load %2 : !cir.ptr<!cir.vector<8 x !cir.float>>, !cir.vector<8 x !cir.float> loc(#loc178) - cir.return %11 : !cir.vector<8 x !cir.float> loc(#loc178) - } loc(#loc175) - cir.func no_inline dso_local @test_vcvtph2ps256_maskz(%arg0: !cir.vector<2 x !s64i> loc(fused[#loc101, #loc102]), %arg1: !u8i loc(fused[#loc103, #loc104])) -> !cir.vector<8 x !cir.float> { - %0 = cir.alloca !cir.vector<2 x !s64i>, !cir.ptr<!cir.vector<2 x !s64i>>, ["a", init] {alignment = 16 : i64} loc(#loc180) - %1 = cir.alloca !u8i, !cir.ptr<!u8i>, ["k", init] {alignment = 1 : i64} loc(#loc181) - %2 = cir.alloca !cir.vector<8 x !cir.float>, !cir.ptr<!cir.vector<8 x !cir.float>>, ["__retval"] {alignment = 32 : i64} loc(#loc100) - cir.store %arg0, %0 : !cir.vector<2 x !s64i>, !cir.ptr<!cir.vector<2 x !s64i>> loc(#loc105) - cir.store %arg1, %1 : !u8i, !cir.ptr<!u8i> loc(#loc105) - %3 = cir.load align(1) %1 : !cir.ptr<!u8i>, !u8i loc(#loc106) - %4 = cir.load align(16) %0 : !cir.ptr<!cir.vector<2 x !s64i>>, !cir.vector<2 x !s64i> loc(#loc107) - %5 = cir.call @_mm256_maskz_cvtph_ps(%3, %4) : (!u8i, !cir.vector<2 x !s64i>) -> !cir.vector<8 x !cir.float> loc(#loc108) - cir.store %5, %2 : !cir.vector<8 x !cir.float>, !cir.ptr<!cir.vector<8 x !cir.float>> loc(#loc182) - %6 = cir.load %2 : !cir.ptr<!cir.vector<8 x !cir.float>>, !cir.vector<8 x !cir.float> loc(#loc182) - cir.return %6 : !cir.vector<8 x !cir.float> loc(#loc182) - } loc(#loc179) - cir.func always_inline internal private dso_local @_mm512_setzero_ps() -> !cir.vector<16 x !cir.float> { - %0 = cir.alloca !cir.vector<16 x !cir.float>, !cir.ptr<!cir.vector<16 x !cir.float>>, ["__retval"] {alignment = 64 : i64} loc(#loc112) - %1 = cir.alloca !cir.vector<16 x !cir.float>, !cir.ptr<!cir.vector<16 x !cir.float>>, [".compoundliteral"] {alignment = 64 : i64} loc(#loc184) - %2 = cir.const #cir.const_vector<[#cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float, #cir.fp<0.000000e+00> : !cir.float]> : !cir.vector<16 x !cir.float> loc(#loc185) - cir.store align(64) %2, %1 : !cir.vector<16 x !cir.float>, !cir.ptr<!cir.vector<16 x !cir.float>> loc(#loc116) - %3 = cir.load align(64) %1 : !cir.ptr<!cir.vector<16 x !cir.float>>, !cir.vector<16 x !cir.float> loc(#loc113) - cir.store %3, %0 : !cir.vector<16 x !cir.float>, !cir.ptr<!cir.vector<16 x !cir.float>> loc(#loc186) - %4 = cir.load %0 : !cir.ptr<!cir.vector<16 x !cir.float>>, !cir.vector<16 x !cir.float> loc(#loc186) - cir.return %4 : !cir.vector<16 x !cir.float> loc(#loc186) - } loc(#loc183) - cir.func always_inline internal private dso_local @_mm512_maskz_cvtph_ps(%arg0: !u16i loc(fused[#loc120, #loc121]), %arg1: !cir.vector<4 x !s64i> loc(fused[#loc122, #loc123])) -> !cir.vector<16 x !cir.float> { - %0 = cir.alloca !u16i, !cir.ptr<!u16i>, ["__U", init] {alignment = 2 : i64} loc(#loc188) - %1 = cir.alloca !cir.vector<4 x !s64i>, !cir.ptr<!cir.vector<4 x !s64i>>, ["__A", init] {alignment = 32 : i64} loc(#loc189) - %2 = cir.alloca !cir.vector<16 x !cir.float>, !cir.ptr<!cir.vector<16 x !cir.float>>, ["__retval"] {alignment = 64 : i64} loc(#loc119) - cir.store %arg0, %0 : !u16i, !cir.ptr<!u16i> loc(#loc124) - cir.store %arg1, %1 : !cir.vector<4 x !s64i>, !cir.ptr<!cir.vector<4 x !s64i>> loc(#loc124) - %3 = cir.load align(32) %1 : !cir.ptr<!cir.vector<4 x !s64i>>, !cir.vector<4 x !s64i> loc(#loc125) - %4 = cir.cast bitcast %3 : !cir.vector<4 x !s64i> -> !cir.vector<16 x !s16i> loc(#loc125) - %5 = cir.call @_mm512_setzero_ps() : () -> !cir.vector<16 x !cir.float> loc(#loc126) - %6 = cir.load align(2) %0 : !cir.ptr<!u16i>, !u16i loc(#loc127) - %7 = cir.const #cir.int<4> : !s32i loc(#loc128) - %8 = cir.cast bitcast %4 : !cir.vector<16 x !s16i> -> !cir.vector<16 x !cir.f16> loc(#loc125) - %9 = cir.cast floating %8 : !cir.vector<16 x !cir.f16> -> !cir.vector<16 x !cir.float> loc(#loc125) - %10 = cir.cast bitcast %6 : !u16i -> !cir.vector<16 x !cir.bool> loc(#loc127) - %11 = cir.select if %10 then %9 else %5 : (!cir.vector<16 x !cir.bool>, !cir.vector<16 x !cir.float>, !cir.vector<16 x !cir.float>) -> !cir.vector<16 x !cir.float> loc(#loc129) - cir.store %11, %2 : !cir.vector<16 x !cir.float>, !cir.ptr<!cir.vector<16 x !cir.float>> loc(#loc190) - %12 = cir.load %2 : !cir.ptr<!cir.vector<16 x !cir.float>>, !cir.vector<16 x !cir.float> loc(#loc190) - cir.return %12 : !cir.vector<16 x !cir.float> loc(#loc190) - } loc(#loc187) - cir.func no_inline dso_local @test_vcvtph2ps512_maskz(%arg0: !cir.vector<4 x !s64i> loc(fused[#loc134, #loc135]), %arg1: !u16i loc(fused[#loc136, #loc137])) -> !cir.vector<16 x !cir.float> { - %0 = cir.alloca !cir.vector<4 x !s64i>, !cir.ptr<!cir.vector<4 x !s64i>>, ["a", init] {alignment = 32 : i64} loc(#loc192) - %1 = cir.alloca !u16i, !cir.ptr<!u16i>, ["k", init] {alignment = 2 : i64} loc(#loc193) - %2 = cir.alloca !cir.vector<16 x !cir.float>, !cir.ptr<!cir.vector<16 x !cir.float>>, ["__retval"] {alignment = 64 : i64} loc(#loc133) - cir.store %arg0, %0 : !cir.vector<4 x !s64i>, !cir.ptr<!cir.vector<4 x !s64i>> loc(#loc138) - cir.store %arg1, %1 : !u16i, !cir.ptr<!u16i> loc(#loc138) - %3 = cir.load align(2) %1 : !cir.ptr<!u16i>, !u16i loc(#loc139) - %4 = cir.load align(32) %0 : !cir.ptr<!cir.vector<4 x !s64i>>, !cir.vector<4 x !s64i> loc(#loc140) - %5 = cir.call @_mm512_maskz_cvtph_ps(%3, %4) : (!u16i, !cir.vector<4 x !s64i>) -> !cir.vector<16 x !cir.float> loc(#loc141) - cir.store %5, %2 : !cir.vector<16 x !cir.float>, !cir.ptr<!cir.vector<16 x !cir.float>> loc(#loc194) - %6 = cir.load %2 : !cir.ptr<!cir.vector<16 x !cir.float>>, !cir.vector<16 x !cir.float> loc(#loc194) - cir.return %6 : !cir.vector<16 x !cir.float> loc(#loc194) - } loc(#loc191) -} loc(#loc) -#loc = loc("/home/priyanshu/llvm-project/clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":0:0) -#loc1 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":10:1) -#loc2 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":36:1) -#loc9 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":10:63) -#loc10 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":35:48) -#loc11 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":35:51) -#loc12 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":35:56) -#loc13 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":35:10) -#loc14 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":35:3) -#loc15 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":35:57) -#loc16 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":38:1) -#loc17 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":62:1) -#loc24 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":38:66) -#loc25 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":61:51) -#loc26 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":61:54) -#loc27 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":61:59) -#loc28 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":61:10) -#loc29 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":61:3) -#loc30 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":61:60) -#loc31 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":64:1) -#loc32 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":89:1) -#loc39 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":64:67) -#loc40 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":88:52) -#loc41 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":88:55) -#loc42 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":88:60) -#loc43 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":88:63) -#loc44 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":88:10) -#loc45 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":88:3) -#loc46 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":88:64) -#loc47 = loc("./lib/clang/22/include/xmmintrin.h":2017:1) -#loc48 = loc("./lib/clang/22/include/xmmintrin.h":2020:1) -#loc49 = loc("./lib/clang/22/include/xmmintrin.h":2019:24) -#loc50 = loc("./lib/clang/22/include/xmmintrin.h":2019:57) -#loc51 = loc("./lib/clang/22/include/xmmintrin.h":2019:32) -#loc52 = loc("./lib/clang/22/include/xmmintrin.h":2018:1) -#loc53 = loc("./lib/clang/22/include/xmmintrin.h":2019:3) -#loc54 = loc("./lib/clang/22/include/avx512vlintrin.h":8026:1) -#loc55 = loc("./lib/clang/22/include/avx512vlintrin.h":8033:1) -#loc60 = loc("./lib/clang/22/include/avx512vlintrin.h":8028:1) -#loc61 = loc("./lib/clang/22/include/avx512vlintrin.h":8029:59) -#loc62 = loc("./lib/clang/22/include/avx512vlintrin.h":8031:14) -#loc63 = loc("./lib/clang/22/include/avx512vlintrin.h":8032:25) -#loc64 = loc("./lib/clang/22/include/avx512vlintrin.h":8029:19) -#loc65 = loc("./lib/clang/22/include/avx512vlintrin.h":8029:3) -#loc66 = loc("./lib/clang/22/include/avx512vlintrin.h":8032:28) -#loc67 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":91:1) -#loc68 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":126:1) -#loc73 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":91:52) -#loc74 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":125:29) -#loc75 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":125:32) -#loc76 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":125:10) -#loc77 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":125:3) -#loc78 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":125:33) -#loc79 = loc("./lib/clang/22/include/avxintrin.h":4291:1) -#loc80 = loc("./lib/clang/22/include/avxintrin.h":4293:1) -#loc81 = loc("./lib/clang/22/include/avxintrin.h":4292:24) -#loc82 = loc("./lib/clang/22/include/avxintrin.h":4292:81) -#loc83 = loc("./lib/clang/22/include/avxintrin.h":4292:32) -#loc84 = loc("./lib/clang/22/include/avxintrin.h":4291:53) -#loc85 = loc("./lib/clang/22/include/avxintrin.h":4292:3) -#loc86 = loc("./lib/clang/22/include/avx512vlintrin.h":8043:1) -#loc87 = loc("./lib/clang/22/include/avx512vlintrin.h":8050:1) -#loc92 = loc("./lib/clang/22/include/avx512vlintrin.h":8045:1) -#loc93 = loc("./lib/clang/22/include/avx512vlintrin.h":8046:62) -#loc94 = loc("./lib/clang/22/include/avx512vlintrin.h":8048:17) -#loc95 = loc("./lib/clang/22/include/avx512vlintrin.h":8049:28) -#loc96 = loc("./lib/clang/22/include/avx512vlintrin.h":8046:19) -#loc97 = loc("./lib/clang/22/include/avx512vlintrin.h":8046:3) -#loc98 = loc("./lib/clang/22/include/avx512vlintrin.h":8049:31) -#loc99 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":128:1) -#loc100 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":156:1) -#loc105 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":128:55) -#loc106 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":155:33) -#loc107 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":155:36) -#loc108 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":155:11) -#loc109 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":155:4) -#loc110 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":155:37) -#loc111 = loc("./lib/clang/22/include/avx512fintrin.h":259:1) -#loc112 = loc("./lib/clang/22/include/avx512fintrin.h":262:1) -#loc113 = loc("./lib/clang/22/include/avx512fintrin.h":260:23) -#loc114 = loc("./lib/clang/22/include/avx512fintrin.h":261:78) -#loc115 = loc("./lib/clang/22/include/avx512fintrin.h":260:31) -#loc116 = loc("./lib/clang/22/include/avx512fintrin.h":259:56) -#loc117 = loc("./lib/clang/22/include/avx512fintrin.h":260:3) -#loc118 = loc("./lib/clang/22/include/avx512fintrin.h":3583:1) -#loc119 = loc("./lib/clang/22/include/avx512fintrin.h":3590:1) -#loc124 = loc("./lib/clang/22/include/avx512fintrin.h":3585:1) -#loc125 = loc("./lib/clang/22/include/avx512fintrin.h":3586:63) -#loc126 = loc("./lib/clang/22/include/avx512fintrin.h":3587:28) -#loc127 = loc("./lib/clang/22/include/avx512fintrin.h":3588:30) -#loc128 = loc("./lib/clang/22/include/avx512fintrin.h":3589:18) -#loc129 = loc("./lib/clang/22/include/avx512fintrin.h":3586:19) -#loc130 = loc("./lib/clang/22/include/avx512fintrin.h":3586:3) -#loc131 = loc("./lib/clang/22/include/avx512fintrin.h":3589:42) -#loc132 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":158:1) -#loc133 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":185:1) -#loc138 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":158:56) -#loc139 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":184:32) -#loc140 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":184:35) -#loc141 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":184:10) -#loc142 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":184:3) -#loc143 = loc("../clang/test/CIR/CodeGenBuiltins/X86/avx512f16c-builtins.c":184:36) -#loc144 = loc(fused[#loc1, #loc2]) -#loc148 = loc(fused[#loc14, #loc15]) -#loc149 = loc(fused[#loc16, #loc17]) -#loc153 = loc(fused[#loc29, #loc30]) -#loc154 = loc(fused[#loc31, #loc32]) -#loc158 = loc(fused[#loc45, #loc46]) -#loc159 = loc(fused[#loc47, #loc48]) -#loc160 = loc(fused[#loc49, #loc50]) -#loc161 = loc(fused[#loc51, #loc50]) -#loc162 = loc(fused[#loc53, #loc50]) -#loc163 = loc(fused[#loc54, #loc55]) -#loc166 = loc(fused[#loc65, #loc66]) -#loc167 = loc(fused[#loc67, #loc68]) -#loc170 = loc(fused[#loc77, #loc78]) -#loc171 = loc(fused[#loc79, #loc80]) -#loc172 = loc(fused[#loc81, #loc82]) -#loc173 = loc(fused[#loc83, #loc82]) -#loc174 = loc(fused[#loc85, #loc82]) -#loc175 = loc(fused[#loc86, #loc87]) -#loc178 = loc(fused[#loc97, #loc98]) -#loc179 = loc(fused[#loc99, #loc100]) -#loc182 = loc(fused[#loc109, #loc110]) -#loc183 = loc(fused[#loc111, #loc112]) -#loc184 = loc(fused[#loc113, #loc114]) -#loc185 = loc(fused[#loc115, #loc114]) -#loc186 = loc(fused[#loc117, #loc114]) -#loc187 = loc(fused[#loc118, #loc119]) -#loc190 = loc(fused[#loc130, #loc131]) -#loc191 = loc(fused[#loc132, #loc133]) -#loc194 = loc(fused[#loc142, #loc143]) _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
