diff --git a/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp b/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp index 7cec8a17dfaaa..362f2655f48d7 100644 --- a/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp +++ b/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp @@ -2811,6 +2811,17 @@ InstructionCost AArch64TTIImpl::getCastInstrCost(unsigned Opcode, Type *Dst, BF16Tbl, ISD, DstTy.getSimpleVT(), SrcTy.getSimpleVT())) return AdjustCost(Entry->Cost); + // Symbolic constants for the SVE sitofp/uitofp entries in the table below + // The cost of unpacking twice is artificially increased for now in order + // to avoid regressions against NEON, which will use tbl instructions directly + // instead of multiple layers of [s|u]unpk[lo|hi]. + // We use the unpacks in cases where the destination type is illegal and + // requires splitting of the input, even if the input type itself is legal. + const unsigned int SVE_EXT_COST = 1; + const unsigned int SVE_FCVT_COST = 1; + const unsigned int SVE_UNPACK_ONCE = 4; + const unsigned int SVE_UNPACK_TWICE = 16; + static const TypeConversionCostTblEntry ConversionTbl[] = { {ISD::TRUNCATE, MVT::v2i8, MVT::v2i64, 1}, // xtn {ISD::TRUNCATE, MVT::v2i16, MVT::v2i64, 1}, // xtn @@ -2936,6 +2947,42 @@ InstructionCost AArch64TTIImpl::getCastInstrCost(unsigned Opcode, Type *Dst, {ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i32, 1}, {ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i64, 1}, + // SVE: to nxv2f16 + {ISD::SINT_TO_FP, MVT::nxv2f16, MVT::nxv2i8, + SVE_EXT_COST + SVE_FCVT_COST}, + {ISD::SINT_TO_FP, MVT::nxv2f16, MVT::nxv2i16, SVE_FCVT_COST}, + {ISD::SINT_TO_FP, MVT::nxv2f16, MVT::nxv2i32, SVE_FCVT_COST}, + {ISD::SINT_TO_FP, MVT::nxv2f16, MVT::nxv2i64, SVE_FCVT_COST}, + {ISD::UINT_TO_FP, MVT::nxv2f16, MVT::nxv2i8, + SVE_EXT_COST + SVE_FCVT_COST}, + {ISD::UINT_TO_FP, MVT::nxv2f16, MVT::nxv2i16, SVE_FCVT_COST}, + {ISD::UINT_TO_FP, MVT::nxv2f16, MVT::nxv2i32, SVE_FCVT_COST}, + {ISD::UINT_TO_FP, MVT::nxv2f16, MVT::nxv2i64, SVE_FCVT_COST}, + + // SVE: to nxv4f16 + {ISD::SINT_TO_FP, MVT::nxv4f16, MVT::nxv4i8, + SVE_EXT_COST + SVE_FCVT_COST}, + {ISD::SINT_TO_FP, MVT::nxv4f16, MVT::nxv4i16, SVE_FCVT_COST}, + {ISD::SINT_TO_FP, MVT::nxv4f16, MVT::nxv4i32, SVE_FCVT_COST}, + {ISD::UINT_TO_FP, MVT::nxv4f16, MVT::nxv4i8, + SVE_EXT_COST + SVE_FCVT_COST}, + {ISD::UINT_TO_FP, MVT::nxv4f16, MVT::nxv4i16, SVE_FCVT_COST}, + {ISD::UINT_TO_FP, MVT::nxv4f16, MVT::nxv4i32, SVE_FCVT_COST}, + + // SVE: to nxv8f16 + {ISD::SINT_TO_FP, MVT::nxv8f16, MVT::nxv8i8, + SVE_EXT_COST + SVE_FCVT_COST}, + {ISD::SINT_TO_FP, MVT::nxv8f16, MVT::nxv8i16, SVE_FCVT_COST}, + {ISD::UINT_TO_FP, MVT::nxv8f16, MVT::nxv8i8, + SVE_EXT_COST + SVE_FCVT_COST}, + {ISD::UINT_TO_FP, MVT::nxv8f16, MVT::nxv8i16, SVE_FCVT_COST}, + + // SVE: to nxv16f16 + {ISD::SINT_TO_FP, MVT::nxv16f16, MVT::nxv16i8, + SVE_UNPACK_ONCE + 2 * SVE_FCVT_COST}, + {ISD::UINT_TO_FP, MVT::nxv16f16, MVT::nxv16i8, + SVE_UNPACK_ONCE + 2 * SVE_FCVT_COST}, + // Complex: to v2f32 {ISD::SINT_TO_FP, MVT::v2f32, MVT::v2i8, 3}, {ISD::SINT_TO_FP, MVT::v2f32, MVT::v2i16, 3}, @@ -2944,18 +2991,56 @@ InstructionCost AArch64TTIImpl::getCastInstrCost(unsigned Opcode, Type *Dst, {ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i16, 3}, {ISD::UINT_TO_FP, MVT::v2f32, MVT::v2i64, 2}, + // SVE: to nxv2f32 + {ISD::SINT_TO_FP, MVT::nxv2f32, MVT::nxv2i8, + SVE_EXT_COST + SVE_FCVT_COST}, + {ISD::SINT_TO_FP, MVT::nxv2f32, MVT::nxv2i16, SVE_FCVT_COST}, + {ISD::SINT_TO_FP, MVT::nxv2f32, MVT::nxv2i32, SVE_FCVT_COST}, + {ISD::SINT_TO_FP, MVT::nxv2f32, MVT::nxv2i64, SVE_FCVT_COST}, + {ISD::UINT_TO_FP, MVT::nxv2f32, MVT::nxv2i8, + SVE_EXT_COST + SVE_FCVT_COST}, + {ISD::UINT_TO_FP, MVT::nxv2f32, MVT::nxv2i16, SVE_FCVT_COST}, + {ISD::UINT_TO_FP, MVT::nxv2f32, MVT::nxv2i32, SVE_FCVT_COST}, + {ISD::UINT_TO_FP, MVT::nxv2f32, MVT::nxv2i64, SVE_FCVT_COST}, + // Complex: to v4f32 {ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i8, 4}, {ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i16, 2}, {ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i8, 3}, {ISD::UINT_TO_FP, MVT::v4f32, MVT::v4i16, 2}, + // SVE: to nxv4f32 + {ISD::SINT_TO_FP, MVT::nxv4f32, MVT::nxv4i8, + SVE_EXT_COST + SVE_FCVT_COST}, + {ISD::SINT_TO_FP, MVT::nxv4f32, MVT::nxv4i16, SVE_FCVT_COST}, + {ISD::SINT_TO_FP, MVT::nxv4f32, MVT::nxv4i32, SVE_FCVT_COST}, + {ISD::UINT_TO_FP, MVT::nxv4f32, MVT::nxv4i8, + SVE_EXT_COST + SVE_FCVT_COST}, + {ISD::UINT_TO_FP, MVT::nxv4f32, MVT::nxv4i16, SVE_FCVT_COST}, + {ISD::SINT_TO_FP, MVT::nxv4f32, MVT::nxv4i32, SVE_FCVT_COST}, + // Complex: to v8f32 {ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i8, 10}, {ISD::SINT_TO_FP, MVT::v8f32, MVT::v8i16, 4}, {ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i8, 10}, {ISD::UINT_TO_FP, MVT::v8f32, MVT::v8i16, 4}, + // SVE: to nxv8f32 + {ISD::SINT_TO_FP, MVT::nxv8f32, MVT::nxv8i8, + SVE_EXT_COST + SVE_UNPACK_ONCE + 2 * SVE_FCVT_COST}, + {ISD::SINT_TO_FP, MVT::nxv8f32, MVT::nxv8i16, + SVE_UNPACK_ONCE + 2 * SVE_FCVT_COST}, + {ISD::UINT_TO_FP, MVT::nxv8f32, MVT::nxv8i8, + SVE_EXT_COST + SVE_UNPACK_ONCE + 2 * SVE_FCVT_COST}, + {ISD::UINT_TO_FP, MVT::nxv8f32, MVT::nxv8i16, + SVE_UNPACK_ONCE + 2 * SVE_FCVT_COST}, + + // SVE: to nxv16f32 + {ISD::SINT_TO_FP, MVT::nxv16f32, MVT::nxv16i8, + SVE_UNPACK_TWICE + 4 * SVE_FCVT_COST}, + {ISD::UINT_TO_FP, MVT::nxv16f32, MVT::nxv16i8, + SVE_UNPACK_TWICE + 4 * SVE_FCVT_COST}, + // Complex: to v16f32 {ISD::SINT_TO_FP, MVT::v16f32, MVT::v16i8, 21}, {ISD::UINT_TO_FP, MVT::v16f32, MVT::v16i8, 21}, @@ -2968,10 +3053,46 @@ InstructionCost AArch64TTIImpl::getCastInstrCost(unsigned Opcode, Type *Dst, {ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i16, 4}, {ISD::UINT_TO_FP, MVT::v2f64, MVT::v2i32, 2}, + // SVE: to nxv2f64 + {ISD::SINT_TO_FP, MVT::nxv2f64, MVT::nxv2i8, + SVE_EXT_COST + SVE_FCVT_COST}, + {ISD::SINT_TO_FP, MVT::nxv2f64, MVT::nxv2i16, SVE_FCVT_COST}, + {ISD::SINT_TO_FP, MVT::nxv2f64, MVT::nxv2i32, SVE_FCVT_COST}, + {ISD::SINT_TO_FP, MVT::nxv2f64, MVT::nxv2i64, SVE_FCVT_COST}, + {ISD::UINT_TO_FP, MVT::nxv2f64, MVT::nxv2i8, + SVE_EXT_COST + SVE_FCVT_COST}, + {ISD::UINT_TO_FP, MVT::nxv2f64, MVT::nxv2i16, SVE_FCVT_COST}, + {ISD::UINT_TO_FP, MVT::nxv2f64, MVT::nxv2i32, SVE_FCVT_COST}, + {ISD::UINT_TO_FP, MVT::nxv2f64, MVT::nxv2i64, SVE_FCVT_COST}, + // Complex: to v4f64 {ISD::SINT_TO_FP, MVT::v4f64, MVT::v4i32, 4}, {ISD::UINT_TO_FP, MVT::v4f64, MVT::v4i32, 4}, + // SVE: to nxv4f64 + {ISD::SINT_TO_FP, MVT::nxv4f64, MVT::nxv4i8, + SVE_EXT_COST + SVE_UNPACK_ONCE + 2 * SVE_FCVT_COST}, + {ISD::SINT_TO_FP, MVT::nxv4f64, MVT::nxv4i16, + SVE_UNPACK_ONCE + 2 * SVE_FCVT_COST}, + {ISD::SINT_TO_FP, MVT::nxv4f64, MVT::nxv4i32, + SVE_UNPACK_ONCE + 2 * SVE_FCVT_COST}, + {ISD::UINT_TO_FP, MVT::nxv4f64, MVT::nxv4i8, + SVE_EXT_COST + SVE_UNPACK_ONCE + 2 * SVE_FCVT_COST}, + {ISD::UINT_TO_FP, MVT::nxv4f64, MVT::nxv4i16, + SVE_UNPACK_ONCE + 2 * SVE_FCVT_COST}, + {ISD::UINT_TO_FP, MVT::nxv4f64, MVT::nxv4i32, + SVE_UNPACK_ONCE + 2 * SVE_FCVT_COST}, + + // SVE: to nxv8f64 + {ISD::SINT_TO_FP, MVT::nxv8f64, MVT::nxv8i8, + SVE_EXT_COST + SVE_UNPACK_TWICE + 4 * SVE_FCVT_COST}, + {ISD::SINT_TO_FP, MVT::nxv8f64, MVT::nxv8i16, + SVE_UNPACK_TWICE + 4 * SVE_FCVT_COST}, + {ISD::UINT_TO_FP, MVT::nxv8f64, MVT::nxv8i8, + SVE_EXT_COST + SVE_UNPACK_TWICE + 4 * SVE_FCVT_COST}, + {ISD::UINT_TO_FP, MVT::nxv8f64, MVT::nxv8i16, + SVE_UNPACK_TWICE + 4 * SVE_FCVT_COST}, + // LowerVectorFP_TO_INT {ISD::FP_TO_SINT, MVT::v2i32, MVT::v2f32, 1}, {ISD::FP_TO_SINT, MVT::v4i32, MVT::v4f32, 1}, diff --git a/llvm/test/Analysis/CostModel/AArch64/sve-cast.ll b/llvm/test/Analysis/CostModel/AArch64/sve-cast.ll index 0b051169a1b36..554a1f8df45ee 100644 --- a/llvm/test/Analysis/CostModel/AArch64/sve-cast.ll +++ b/llvm/test/Analysis/CostModel/AArch64/sve-cast.ll @@ -744,8 +744,8 @@ define i32 @casts_no_users() { ; CHECK-SVE-NEXT: Cost Model: Found an estimated cost of 19 for instruction: %r223 = sitofp <8 x i8> undef to <8 x double> ; CHECK-SVE-NEXT: Cost Model: Found an estimated cost of 19 for instruction: %r224 = uitofp <8 x i16> undef to <8 x double> ; CHECK-SVE-NEXT: Cost Model: Found an estimated cost of 19 for instruction: %r225 = sitofp <8 x i16> undef to <8 x double> -; CHECK-SVE-NEXT: Cost Model: Found an estimated cost of 19 for instruction: %r226 = uitofp <8 x i16> undef to <8 x double> -; CHECK-SVE-NEXT: Cost Model: Found an estimated cost of 19 for instruction: %r227 = sitofp <8 x i16> undef to <8 x double> +; CHECK-SVE-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %r226 = uitofp <8 x i32> undef to <8 x double> +; CHECK-SVE-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %r227 = sitofp <8 x i32> undef to <8 x double> ; CHECK-SVE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r228 = uitofp <8 x i64> undef to <8 x double> ; CHECK-SVE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r229 = sitofp <8 x i64> undef to <8 x double> ; CHECK-SVE-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %r230 = uitofp <16 x i1> undef to <16 x float> @@ -764,8 +764,8 @@ define i32 @casts_no_users() { ; CHECK-SVE-NEXT: Cost Model: Found an estimated cost of 39 for instruction: %r243 = sitofp <16 x i8> undef to <16 x double> ; CHECK-SVE-NEXT: Cost Model: Found an estimated cost of 38 for instruction: %r244 = uitofp <16 x i16> undef to <16 x double> ; CHECK-SVE-NEXT: Cost Model: Found an estimated cost of 38 for instruction: %r245 = sitofp <16 x i16> undef to <16 x double> -; CHECK-SVE-NEXT: Cost Model: Found an estimated cost of 38 for instruction: %r246 = uitofp <16 x i16> undef to <16 x double> -; CHECK-SVE-NEXT: Cost Model: Found an estimated cost of 38 for instruction: %r247 = sitofp <16 x i16> undef to <16 x double> +; CHECK-SVE-NEXT: Cost Model: Found an estimated cost of 16 for instruction: %r246 = uitofp <16 x i32> undef to <16 x double> +; CHECK-SVE-NEXT: Cost Model: Found an estimated cost of 16 for instruction: %r247 = sitofp <16 x i32> undef to <16 x double> ; CHECK-SVE-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %r248 = uitofp <16 x i64> undef to <16 x double> ; CHECK-SVE-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %r249 = sitofp <16 x i64> undef to <16 x double> ; CHECK-SVE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef @@ -903,8 +903,8 @@ define i32 @casts_no_users() { ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %r169 = fptosi <16 x double> undef to <16 x i64> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r170 = uitofp <2 x i1> undef to <2 x float> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r171 = sitofp <2 x i1> undef to <2 x float> -; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r172 = uitofp <2 x i8> undef to <2 x float> -; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r173 = sitofp <2 x i8> undef to <2 x float> +; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r172 = uitofp <2 x i8> undef to <2 x float> +; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r173 = sitofp <2 x i8> undef to <2 x float> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r174 = uitofp <2 x i16> undef to <2 x float> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r175 = sitofp <2 x i16> undef to <2 x float> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r176 = uitofp <2 x i32> undef to <2 x float> @@ -913,8 +913,8 @@ define i32 @casts_no_users() { ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r179 = sitofp <2 x i64> undef to <2 x float> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r180 = uitofp <2 x i1> undef to <2 x double> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r181 = sitofp <2 x i1> undef to <2 x double> -; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r182 = uitofp <2 x i8> undef to <2 x double> -; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r183 = sitofp <2 x i8> undef to <2 x double> +; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r182 = uitofp <2 x i8> undef to <2 x double> +; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r183 = sitofp <2 x i8> undef to <2 x double> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r184 = uitofp <2 x i16> undef to <2 x double> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r185 = sitofp <2 x i16> undef to <2 x double> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r186 = uitofp <2 x i32> undef to <2 x double> @@ -923,8 +923,8 @@ define i32 @casts_no_users() { ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r189 = sitofp <2 x i64> undef to <2 x double> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r190 = uitofp <4 x i1> undef to <4 x float> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r191 = sitofp <4 x i1> undef to <4 x float> -; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r192 = uitofp <4 x i8> undef to <4 x float> -; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r193 = sitofp <4 x i8> undef to <4 x float> +; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r192 = uitofp <4 x i8> undef to <4 x float> +; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r193 = sitofp <4 x i8> undef to <4 x float> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r194 = uitofp <4 x i16> undef to <4 x float> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r195 = sitofp <4 x i16> undef to <4 x float> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r196 = uitofp <4 x i32> undef to <4 x float> @@ -933,8 +933,8 @@ define i32 @casts_no_users() { ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r199 = sitofp <4 x i64> undef to <4 x float> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r200 = uitofp <4 x i1> undef to <4 x double> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r201 = sitofp <4 x i1> undef to <4 x double> -; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r202 = uitofp <4 x i8> undef to <4 x double> -; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r203 = sitofp <4 x i8> undef to <4 x double> +; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r202 = uitofp <4 x i8> undef to <4 x double> +; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r203 = sitofp <4 x i8> undef to <4 x double> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r204 = uitofp <4 x i16> undef to <4 x double> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r205 = sitofp <4 x i16> undef to <4 x double> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r206 = uitofp <4 x i32> undef to <4 x double> @@ -943,8 +943,8 @@ define i32 @casts_no_users() { ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r209 = sitofp <4 x i64> undef to <4 x double> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r210 = uitofp <8 x i1> undef to <8 x float> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r211 = sitofp <8 x i1> undef to <8 x float> -; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r212 = uitofp <8 x i8> undef to <8 x float> -; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r213 = sitofp <8 x i8> undef to <8 x float> +; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r212 = uitofp <8 x i8> undef to <8 x float> +; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r213 = sitofp <8 x i8> undef to <8 x float> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r214 = uitofp <8 x i16> undef to <8 x float> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r215 = sitofp <8 x i16> undef to <8 x float> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r216 = uitofp <8 x i32> undef to <8 x float> @@ -953,18 +953,18 @@ define i32 @casts_no_users() { ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r219 = sitofp <8 x i64> undef to <8 x float> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r220 = uitofp <8 x i1> undef to <8 x double> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r221 = sitofp <8 x i1> undef to <8 x double> -; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r222 = uitofp <8 x i8> undef to <8 x double> -; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r223 = sitofp <8 x i8> undef to <8 x double> +; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %r222 = uitofp <8 x i8> undef to <8 x double> +; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %r223 = sitofp <8 x i8> undef to <8 x double> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r224 = uitofp <8 x i16> undef to <8 x double> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r225 = sitofp <8 x i16> undef to <8 x double> -; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r226 = uitofp <8 x i16> undef to <8 x double> -; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r227 = sitofp <8 x i16> undef to <8 x double> +; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r226 = uitofp <8 x i32> undef to <8 x double> +; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r227 = sitofp <8 x i32> undef to <8 x double> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r228 = uitofp <8 x i64> undef to <8 x double> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r229 = sitofp <8 x i64> undef to <8 x double> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r230 = uitofp <16 x i1> undef to <16 x float> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r231 = sitofp <16 x i1> undef to <16 x float> -; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r232 = uitofp <16 x i8> undef to <16 x float> -; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r233 = sitofp <16 x i8> undef to <16 x float> +; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %r232 = uitofp <16 x i8> undef to <16 x float> +; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %r233 = sitofp <16 x i8> undef to <16 x float> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r234 = uitofp <16 x i16> undef to <16 x float> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r235 = sitofp <16 x i16> undef to <16 x float> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r236 = uitofp <16 x i32> undef to <16 x float> @@ -973,12 +973,12 @@ define i32 @casts_no_users() { ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %r239 = sitofp <16 x i64> undef to <16 x float> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %r240 = uitofp <16 x i1> undef to <16 x double> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %r241 = sitofp <16 x i1> undef to <16 x double> -; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %r242 = uitofp <16 x i8> undef to <16 x double> -; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %r243 = sitofp <16 x i8> undef to <16 x double> +; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 16 for instruction: %r242 = uitofp <16 x i8> undef to <16 x double> +; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 16 for instruction: %r243 = sitofp <16 x i8> undef to <16 x double> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %r244 = uitofp <16 x i16> undef to <16 x double> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %r245 = sitofp <16 x i16> undef to <16 x double> -; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %r246 = uitofp <16 x i16> undef to <16 x double> -; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %r247 = sitofp <16 x i16> undef to <16 x double> +; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %r246 = uitofp <16 x i32> undef to <16 x double> +; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %r247 = sitofp <16 x i32> undef to <16 x double> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %r248 = uitofp <16 x i64> undef to <16 x double> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %r249 = sitofp <16 x i64> undef to <16 x double> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef @@ -1146,8 +1146,8 @@ define i32 @casts_no_users() { ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r199 = sitofp <4 x i64> undef to <4 x float> ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r200 = uitofp <4 x i1> undef to <4 x double> ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r201 = sitofp <4 x i1> undef to <4 x double> -; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r202 = uitofp <4 x i8> undef to <4 x double> -; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r203 = sitofp <4 x i8> undef to <4 x double> +; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r202 = uitofp <4 x i8> undef to <4 x double> +; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r203 = sitofp <4 x i8> undef to <4 x double> ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r204 = uitofp <4 x i16> undef to <4 x double> ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r205 = sitofp <4 x i16> undef to <4 x double> ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r206 = uitofp <4 x i32> undef to <4 x double> @@ -1156,8 +1156,8 @@ define i32 @casts_no_users() { ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r209 = sitofp <4 x i64> undef to <4 x double> ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r210 = uitofp <8 x i1> undef to <8 x float> ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r211 = sitofp <8 x i1> undef to <8 x float> -; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r212 = uitofp <8 x i8> undef to <8 x float> -; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r213 = sitofp <8 x i8> undef to <8 x float> +; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r212 = uitofp <8 x i8> undef to <8 x float> +; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r213 = sitofp <8 x i8> undef to <8 x float> ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r214 = uitofp <8 x i16> undef to <8 x float> ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r215 = sitofp <8 x i16> undef to <8 x float> ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r216 = uitofp <8 x i32> undef to <8 x float> @@ -1166,18 +1166,18 @@ define i32 @casts_no_users() { ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r219 = sitofp <8 x i64> undef to <8 x float> ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r220 = uitofp <8 x i1> undef to <8 x double> ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r221 = sitofp <8 x i1> undef to <8 x double> -; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r222 = uitofp <8 x i8> undef to <8 x double> -; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r223 = sitofp <8 x i8> undef to <8 x double> +; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r222 = uitofp <8 x i8> undef to <8 x double> +; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r223 = sitofp <8 x i8> undef to <8 x double> ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r224 = uitofp <8 x i16> undef to <8 x double> ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r225 = sitofp <8 x i16> undef to <8 x double> -; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r226 = uitofp <8 x i16> undef to <8 x double> -; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r227 = sitofp <8 x i16> undef to <8 x double> +; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r226 = uitofp <8 x i32> undef to <8 x double> +; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r227 = sitofp <8 x i32> undef to <8 x double> ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r228 = uitofp <8 x i64> undef to <8 x double> ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r229 = sitofp <8 x i64> undef to <8 x double> ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r230 = uitofp <16 x i1> undef to <16 x float> ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r231 = sitofp <16 x i1> undef to <16 x float> -; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r232 = uitofp <16 x i8> undef to <16 x float> -; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r233 = sitofp <16 x i8> undef to <16 x float> +; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r232 = uitofp <16 x i8> undef to <16 x float> +; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r233 = sitofp <16 x i8> undef to <16 x float> ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r234 = uitofp <16 x i16> undef to <16 x float> ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r235 = sitofp <16 x i16> undef to <16 x float> ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r236 = uitofp <16 x i32> undef to <16 x float> @@ -1186,12 +1186,12 @@ define i32 @casts_no_users() { ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r239 = sitofp <16 x i64> undef to <16 x float> ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r240 = uitofp <16 x i1> undef to <16 x double> ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r241 = sitofp <16 x i1> undef to <16 x double> -; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r242 = uitofp <16 x i8> undef to <16 x double> -; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r243 = sitofp <16 x i8> undef to <16 x double> +; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %r242 = uitofp <16 x i8> undef to <16 x double> +; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %r243 = sitofp <16 x i8> undef to <16 x double> ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r244 = uitofp <16 x i16> undef to <16 x double> ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r245 = sitofp <16 x i16> undef to <16 x double> -; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r246 = uitofp <16 x i16> undef to <16 x double> -; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r247 = sitofp <16 x i16> undef to <16 x double> +; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r246 = uitofp <16 x i32> undef to <16 x double> +; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r247 = sitofp <16 x i32> undef to <16 x double> ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r248 = uitofp <16 x i64> undef to <16 x double> ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r249 = sitofp <16 x i64> undef to <16 x double> ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef @@ -1359,8 +1359,8 @@ define i32 @casts_no_users() { ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r199 = sitofp <4 x i64> undef to <4 x float> ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r200 = uitofp <4 x i1> undef to <4 x double> ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r201 = sitofp <4 x i1> undef to <4 x double> -; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r202 = uitofp <4 x i8> undef to <4 x double> -; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r203 = sitofp <4 x i8> undef to <4 x double> +; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r202 = uitofp <4 x i8> undef to <4 x double> +; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r203 = sitofp <4 x i8> undef to <4 x double> ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r204 = uitofp <4 x i16> undef to <4 x double> ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r205 = sitofp <4 x i16> undef to <4 x double> ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r206 = uitofp <4 x i32> undef to <4 x double> @@ -1369,8 +1369,8 @@ define i32 @casts_no_users() { ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r209 = sitofp <4 x i64> undef to <4 x double> ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r210 = uitofp <8 x i1> undef to <8 x float> ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r211 = sitofp <8 x i1> undef to <8 x float> -; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r212 = uitofp <8 x i8> undef to <8 x float> -; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r213 = sitofp <8 x i8> undef to <8 x float> +; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r212 = uitofp <8 x i8> undef to <8 x float> +; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r213 = sitofp <8 x i8> undef to <8 x float> ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r214 = uitofp <8 x i16> undef to <8 x float> ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r215 = sitofp <8 x i16> undef to <8 x float> ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r216 = uitofp <8 x i32> undef to <8 x float> @@ -1379,18 +1379,18 @@ define i32 @casts_no_users() { ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r219 = sitofp <8 x i64> undef to <8 x float> ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r220 = uitofp <8 x i1> undef to <8 x double> ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r221 = sitofp <8 x i1> undef to <8 x double> -; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r222 = uitofp <8 x i8> undef to <8 x double> -; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r223 = sitofp <8 x i8> undef to <8 x double> +; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r222 = uitofp <8 x i8> undef to <8 x double> +; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r223 = sitofp <8 x i8> undef to <8 x double> ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r224 = uitofp <8 x i16> undef to <8 x double> ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r225 = sitofp <8 x i16> undef to <8 x double> -; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r226 = uitofp <8 x i16> undef to <8 x double> -; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r227 = sitofp <8 x i16> undef to <8 x double> +; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r226 = uitofp <8 x i32> undef to <8 x double> +; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r227 = sitofp <8 x i32> undef to <8 x double> ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r228 = uitofp <8 x i64> undef to <8 x double> ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r229 = sitofp <8 x i64> undef to <8 x double> ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r230 = uitofp <16 x i1> undef to <16 x float> ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r231 = sitofp <16 x i1> undef to <16 x float> -; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r232 = uitofp <16 x i8> undef to <16 x float> -; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r233 = sitofp <16 x i8> undef to <16 x float> +; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r232 = uitofp <16 x i8> undef to <16 x float> +; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r233 = sitofp <16 x i8> undef to <16 x float> ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r234 = uitofp <16 x i16> undef to <16 x float> ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r235 = sitofp <16 x i16> undef to <16 x float> ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r236 = uitofp <16 x i32> undef to <16 x float> @@ -1399,12 +1399,12 @@ define i32 @casts_no_users() { ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r239 = sitofp <16 x i64> undef to <16 x float> ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r240 = uitofp <16 x i1> undef to <16 x double> ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r241 = sitofp <16 x i1> undef to <16 x double> -; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r242 = uitofp <16 x i8> undef to <16 x double> -; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r243 = sitofp <16 x i8> undef to <16 x double> +; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r242 = uitofp <16 x i8> undef to <16 x double> +; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r243 = sitofp <16 x i8> undef to <16 x double> ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r244 = uitofp <16 x i16> undef to <16 x double> ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r245 = sitofp <16 x i16> undef to <16 x double> -; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r246 = uitofp <16 x i16> undef to <16 x double> -; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r247 = sitofp <16 x i16> undef to <16 x double> +; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r246 = uitofp <16 x i32> undef to <16 x double> +; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r247 = sitofp <16 x i32> undef to <16 x double> ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r248 = uitofp <16 x i64> undef to <16 x double> ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r249 = sitofp <16 x i64> undef to <16 x double> ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef @@ -1607,8 +1607,8 @@ define i32 @casts_no_users() { %r223 = sitofp <8 x i8> undef to <8 x double> %r224 = uitofp <8 x i16> undef to <8 x double> %r225 = sitofp <8 x i16> undef to <8 x double> - %r226 = uitofp <8 x i16> undef to <8 x double> - %r227 = sitofp <8 x i16> undef to <8 x double> + %r226 = uitofp <8 x i32> undef to <8 x double> + %r227 = sitofp <8 x i32> undef to <8 x double> %r228 = uitofp <8 x i64> undef to <8 x double> %r229 = sitofp <8 x i64> undef to <8 x double> @@ -1629,8 +1629,8 @@ define i32 @casts_no_users() { %r243 = sitofp <16 x i8> undef to <16 x double> %r244 = uitofp <16 x i16> undef to <16 x double> %r245 = sitofp <16 x i16> undef to <16 x double> - %r246 = uitofp <16 x i16> undef to <16 x double> - %r247 = sitofp <16 x i16> undef to <16 x double> + %r246 = uitofp <16 x i32> undef to <16 x double> + %r247 = sitofp <16 x i32> undef to <16 x double> %r248 = uitofp <16 x i64> undef to <16 x double> %r249 = sitofp <16 x i64> undef to <16 x double> @@ -2209,8 +2209,8 @@ define void @fp16cast() { ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %r159 = fptosi <16 x half> undef to <16 x i64> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r250 = uitofp <8 x i1> undef to <8 x half> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r251 = sitofp <8 x i1> undef to <8 x half> -; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r252 = uitofp <8 x i8> undef to <8 x half> -; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r253 = sitofp <8 x i8> undef to <8 x half> +; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r252 = uitofp <8 x i8> undef to <8 x half> +; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r253 = sitofp <8 x i8> undef to <8 x half> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r254 = uitofp <8 x i16> undef to <8 x half> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r255 = sitofp <8 x i16> undef to <8 x half> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r256 = uitofp <8 x i32> undef to <8 x half> @@ -2219,8 +2219,8 @@ define void @fp16cast() { ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r259 = sitofp <8 x i64> undef to <8 x half> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r260 = uitofp <16 x i1> undef to <16 x half> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r261 = sitofp <16 x i1> undef to <16 x half> -; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r262 = uitofp <16 x i8> undef to <16 x half> -; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r263 = sitofp <16 x i8> undef to <16 x half> +; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r262 = uitofp <16 x i8> undef to <16 x half> +; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r263 = sitofp <16 x i8> undef to <16 x half> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r264 = uitofp <16 x i16> undef to <16 x half> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r265 = sitofp <16 x i16> undef to <16 x half> ; SVE128-NO-NEON-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %r266 = uitofp <16 x i32> undef to <16 x half> @@ -2292,8 +2292,8 @@ define void @fp16cast() { ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r259 = sitofp <8 x i64> undef to <8 x half> ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r260 = uitofp <16 x i1> undef to <16 x half> ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r261 = sitofp <16 x i1> undef to <16 x half> -; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r262 = uitofp <16 x i8> undef to <16 x half> -; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r263 = sitofp <16 x i8> undef to <16 x half> +; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r262 = uitofp <16 x i8> undef to <16 x half> +; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r263 = sitofp <16 x i8> undef to <16 x half> ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r264 = uitofp <16 x i16> undef to <16 x half> ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r265 = sitofp <16 x i16> undef to <16 x half> ; FIXED-MIN-256-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r266 = uitofp <16 x i32> undef to <16 x half> @@ -2365,8 +2365,8 @@ define void @fp16cast() { ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r259 = sitofp <8 x i64> undef to <8 x half> ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r260 = uitofp <16 x i1> undef to <16 x half> ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r261 = sitofp <16 x i1> undef to <16 x half> -; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r262 = uitofp <16 x i8> undef to <16 x half> -; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r263 = sitofp <16 x i8> undef to <16 x half> +; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r262 = uitofp <16 x i8> undef to <16 x half> +; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r263 = sitofp <16 x i8> undef to <16 x half> ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r264 = uitofp <16 x i16> undef to <16 x half> ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r265 = sitofp <16 x i16> undef to <16 x half> ; FIXED-MIN-2048-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r266 = uitofp <16 x i32> undef to <16 x half> diff --git a/llvm/test/Analysis/CostModel/AArch64/sve-itofp.ll b/llvm/test/Analysis/CostModel/AArch64/sve-itofp.ll new file mode 100644 index 0000000000000..960afd8af8383 --- /dev/null +++ b/llvm/test/Analysis/CostModel/AArch64/sve-itofp.ll @@ -0,0 +1,217 @@ +; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 5 +; RUN: opt -passes="print" 2>&1 -disable-output -mtriple aarch64-linux-gnu -mattr=+sve -o - -S < %s | FileCheck %s + +target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128" +target triple = "aarch64-unknown-linux-gnu" + +define void @sve-itofp() { +; CHECK-LABEL: 'sve-itofp' +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv2si8_to_f16 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv2ui8_to_f16 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2si16_to_f16 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2ui16_to_f16 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2si32_to_f16 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2ui32_to_f16 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2si64_to_f16 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2ui64_to_f16 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv2si8_to_f32 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv2ui8_to_f32 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2si16_to_f32 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2ui16_to_f32 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2si32_to_f32 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2ui32_to_f32 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2si64_to_f32 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2ui64_to_f32 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv2si8_to_f64 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv2ui8_to_f64 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2si16_to_f64 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2ui16_to_f64 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2si32_to_f64 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2ui32_to_f64 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2si64_to_f64 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2ui64_to_f64 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv4si8_to_f16 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv4ui8_to_f16 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv4si16_to_f16 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv4ui16_to_f16 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv4si32_to_f16 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv4ui32_to_f16 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nv4si64_to_f16 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nv4ui64_to_f16 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv4si8_to_f32 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv4ui8_to_f32 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv4si16_to_f32 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv4ui16_to_f32 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv4si32_to_f32 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv4ui32_to_f32 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nv4si64_to_f32 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nv4ui64_to_f32 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %nv4si8_to_f64 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %nv4ui8_to_f64 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %nv4si16_to_f64 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %nv4ui16_to_f64 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %nv4si32_to_f64 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %nv4ui32_to_f64 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv4si64_to_f64 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv4ui64_to_f64 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv8si8_to_f16 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv8ui8_to_f16 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv8si16_to_f16 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv8ui16_to_f16 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nv8si32_to_f16 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nv8ui32_to_f16 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %nv8si64_to_f16 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %nv8ui64_to_f16 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %nv8si8_to_f32 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %nv8ui8_to_f32 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %nv8si16_to_f32 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %nv8ui16_to_f32 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv8si32_to_f32 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv8ui32_to_f32 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %nv8si64_to_f32 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %nv8ui64_to_f32 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 21 for instruction: %nv8si8_to_f64 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 21 for instruction: %nv8ui8_to_f64 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %nv8si16_to_f64 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %nv8ui16_to_f64 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 12 for instruction: %nv8si32_to_f64 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 12 for instruction: %nv8ui32_to_f64 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nv8si64_to_f64 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nv8ui64_to_f64 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %nv16si8_to_f16 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %nv16ui8_to_f16 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv16si16_to_f16 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv16ui16_to_f16 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %nv16si32_to_f16 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %nv16ui32_to_f16 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 14 for instruction: %nv16si64_to_f16 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 14 for instruction: %nv16ui64_to_f16 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %nv16si8_to_f32 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %nv16ui8_to_f32 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 12 for instruction: %nv16si16_to_f32 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 12 for instruction: %nv16ui16_to_f32 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nv16si32_to_f32 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nv16ui32_to_f32 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 12 for instruction: %nv16si64_to_f32 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 12 for instruction: %nv16ui64_to_f32 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 43 for instruction: %nv16si8_to_f64 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 43 for instruction: %nv16ui8_to_f64 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 40 for instruction: %nv16si16_to_f64 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 40 for instruction: %nv16ui16_to_f64 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 24 for instruction: %nv16si32_to_f64 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 24 for instruction: %nv16ui32_to_f64 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %nv16si64_to_f64 = sitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %nv16ui64_to_f64 = uitofp poison to +; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; + + %nv2si8_to_f16 = sitofp poison to + %nv2ui8_to_f16 = uitofp poison to + %nv2si16_to_f16 = sitofp poison to + %nv2ui16_to_f16 = uitofp poison to + %nv2si32_to_f16 = sitofp poison to + %nv2ui32_to_f16 = uitofp poison to + %nv2si64_to_f16 = sitofp poison to + %nv2ui64_to_f16 = uitofp poison to + + %nv2si8_to_f32 = sitofp poison to + %nv2ui8_to_f32 = uitofp poison to + %nv2si16_to_f32 = sitofp poison to + %nv2ui16_to_f32 = uitofp poison to + %nv2si32_to_f32 = sitofp poison to + %nv2ui32_to_f32 = uitofp poison to + %nv2si64_to_f32 = sitofp poison to + %nv2ui64_to_f32 = uitofp poison to + + %nv2si8_to_f64 = sitofp poison to + %nv2ui8_to_f64 = uitofp poison to + %nv2si16_to_f64 = sitofp poison to + %nv2ui16_to_f64 = uitofp poison to + %nv2si32_to_f64 = sitofp poison to + %nv2ui32_to_f64 = uitofp poison to + %nv2si64_to_f64 = sitofp poison to + %nv2ui64_to_f64 = uitofp poison to + + %nv4si8_to_f16 = sitofp poison to + %nv4ui8_to_f16 = uitofp poison to + %nv4si16_to_f16 = sitofp poison to + %nv4ui16_to_f16 = uitofp poison to + %nv4si32_to_f16 = sitofp poison to + %nv4ui32_to_f16 = uitofp poison to + %nv4si64_to_f16 = sitofp poison to + %nv4ui64_to_f16 = uitofp poison to + + %nv4si8_to_f32 = sitofp poison to + %nv4ui8_to_f32 = uitofp poison to + %nv4si16_to_f32 = sitofp poison to + %nv4ui16_to_f32 = uitofp poison to + %nv4si32_to_f32 = sitofp poison to + %nv4ui32_to_f32 = uitofp poison to + %nv4si64_to_f32 = sitofp poison to + %nv4ui64_to_f32 = uitofp poison to + + %nv4si8_to_f64 = sitofp poison to + %nv4ui8_to_f64 = uitofp poison to + %nv4si16_to_f64 = sitofp poison to + %nv4ui16_to_f64 = uitofp poison to + %nv4si32_to_f64 = sitofp poison to + %nv4ui32_to_f64 = uitofp poison to + %nv4si64_to_f64 = sitofp poison to + %nv4ui64_to_f64 = uitofp poison to + + %nv8si8_to_f16 = sitofp poison to + %nv8ui8_to_f16 = uitofp poison to + %nv8si16_to_f16 = sitofp poison to + %nv8ui16_to_f16 = uitofp poison to + %nv8si32_to_f16 = sitofp poison to + %nv8ui32_to_f16 = uitofp poison to + %nv8si64_to_f16 = sitofp poison to + %nv8ui64_to_f16 = uitofp poison to + + %nv8si8_to_f32 = sitofp poison to + %nv8ui8_to_f32 = uitofp poison to + %nv8si16_to_f32 = sitofp poison to + %nv8ui16_to_f32 = uitofp poison to + %nv8si32_to_f32 = sitofp poison to + %nv8ui32_to_f32 = uitofp poison to + %nv8si64_to_f32 = sitofp poison to + %nv8ui64_to_f32 = uitofp poison to + + %nv8si8_to_f64 = sitofp poison to + %nv8ui8_to_f64 = uitofp poison to + %nv8si16_to_f64 = sitofp poison to + %nv8ui16_to_f64 = uitofp poison to + %nv8si32_to_f64 = sitofp poison to + %nv8ui32_to_f64 = uitofp poison to + %nv8si64_to_f64 = sitofp poison to + %nv8ui64_to_f64 = uitofp poison to + + %nv16si8_to_f16 = sitofp poison to + %nv16ui8_to_f16 = uitofp poison to + %nv16si16_to_f16 = sitofp poison to + %nv16ui16_to_f16 = uitofp poison to + %nv16si32_to_f16 = sitofp poison to + %nv16ui32_to_f16 = uitofp poison to + %nv16si64_to_f16 = sitofp poison to + %nv16ui64_to_f16 = uitofp poison to + + %nv16si8_to_f32 = sitofp poison to + %nv16ui8_to_f32 = uitofp poison to + %nv16si16_to_f32 = sitofp poison to + %nv16ui16_to_f32 = uitofp poison to + %nv16si32_to_f32 = sitofp poison to + %nv16ui32_to_f32 = uitofp poison to + %nv16si64_to_f32 = sitofp poison to + %nv16ui64_to_f32 = uitofp poison to + + %nv16si8_to_f64 = sitofp poison to + %nv16ui8_to_f64 = uitofp poison to + %nv16si16_to_f64 = sitofp poison to + %nv16ui16_to_f64 = uitofp poison to + %nv16si32_to_f64 = sitofp poison to + %nv16ui32_to_f64 = uitofp poison to + %nv16si64_to_f64 = sitofp poison to + %nv16ui64_to_f64 = uitofp poison to + + ret void +}