diff --git a/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp b/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp --- a/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp +++ b/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp @@ -586,20 +586,13 @@ { ISD::FP_TO_UINT, MVT::v4i16, MVT::v4f32, 2 }, { ISD::FP_TO_UINT, MVT::v4i8, MVT::v4f32, 2 }, - // Lowering scalable + // Complex, from nxv2f32. + { ISD::FP_TO_SINT, MVT::nxv2i64, MVT::nxv2f32, 1 }, { ISD::FP_TO_SINT, MVT::nxv2i32, MVT::nxv2f32, 1 }, - { ISD::FP_TO_SINT, MVT::nxv4i32, MVT::nxv4f32, 1 }, - { ISD::FP_TO_SINT, MVT::nxv2i64, MVT::nxv2f64, 1 }, - { ISD::FP_TO_UINT, MVT::nxv2i32, MVT::nxv2f32, 1 }, - { ISD::FP_TO_UINT, MVT::nxv4i32, MVT::nxv4f32, 1 }, - { ISD::FP_TO_UINT, MVT::nxv2i64, MVT::nxv2f64, 1 }, - - - // Complex, from nxv2f32 legal type is nxv2i32 (no cost) or nxv2i64 (1 ext) - { ISD::FP_TO_SINT, MVT::nxv2i64, MVT::nxv2f32, 2 }, { ISD::FP_TO_SINT, MVT::nxv2i16, MVT::nxv2f32, 1 }, { ISD::FP_TO_SINT, MVT::nxv2i8, MVT::nxv2f32, 1 }, - { ISD::FP_TO_UINT, MVT::nxv2i64, MVT::nxv2f32, 2 }, + { ISD::FP_TO_UINT, MVT::nxv2i64, MVT::nxv2f32, 1 }, + { ISD::FP_TO_UINT, MVT::nxv2i32, MVT::nxv2f32, 1 }, { ISD::FP_TO_UINT, MVT::nxv2i16, MVT::nxv2f32, 1 }, { ISD::FP_TO_UINT, MVT::nxv2i8, MVT::nxv2f32, 1 }, @@ -611,43 +604,75 @@ { ISD::FP_TO_UINT, MVT::v2i16, MVT::v2f64, 2 }, { ISD::FP_TO_UINT, MVT::v2i8, MVT::v2f64, 2 }, - // Complex, from nxv2f64: legal type is nxv2i32, 1 narrowing => ~2. - { ISD::FP_TO_SINT, MVT::nxv2i32, MVT::nxv2f64, 2 }, - { ISD::FP_TO_SINT, MVT::nxv2i16, MVT::nxv2f64, 2 }, - { ISD::FP_TO_SINT, MVT::nxv2i8, MVT::nxv2f64, 2 }, - { ISD::FP_TO_UINT, MVT::nxv2i32, MVT::nxv2f64, 2 }, - { ISD::FP_TO_UINT, MVT::nxv2i16, MVT::nxv2f64, 2 }, - { ISD::FP_TO_UINT, MVT::nxv2i8, MVT::nxv2f64, 2 }, - - // Complex, from nxv4f32 legal type is nxv4i16, 1 narrowing => ~2 - { ISD::FP_TO_SINT, MVT::nxv4i16, MVT::nxv4f32, 2 }, - { ISD::FP_TO_SINT, MVT::nxv4i8, MVT::nxv4f32, 2 }, - { ISD::FP_TO_UINT, MVT::nxv4i16, MVT::nxv4f32, 2 }, - { ISD::FP_TO_UINT, MVT::nxv4i8, MVT::nxv4f32, 2 }, - - // Complex, from nxv8f64: legal type is nxv8i32, 1 narrowing => ~2. - { ISD::FP_TO_SINT, MVT::nxv8i32, MVT::nxv8f64, 2 }, - { ISD::FP_TO_SINT, MVT::nxv8i16, MVT::nxv8f64, 2 }, - { ISD::FP_TO_SINT, MVT::nxv8i8, MVT::nxv8f64, 2 }, - { ISD::FP_TO_UINT, MVT::nxv8i32, MVT::nxv8f64, 2 }, - { ISD::FP_TO_UINT, MVT::nxv8i16, MVT::nxv8f64, 2 }, - { ISD::FP_TO_UINT, MVT::nxv8i8, MVT::nxv8f64, 2 }, - - // Complex, from nxv4f64: legal type is nxv4i32, 1 narrowing => ~2. - { ISD::FP_TO_SINT, MVT::nxv4i32, MVT::nxv4f64, 2 }, - { ISD::FP_TO_SINT, MVT::nxv4i16, MVT::nxv4f64, 2 }, - { ISD::FP_TO_SINT, MVT::nxv4i8, MVT::nxv4f64, 2 }, - { ISD::FP_TO_UINT, MVT::nxv4i32, MVT::nxv4f64, 2 }, - { ISD::FP_TO_UINT, MVT::nxv4i16, MVT::nxv4f64, 2 }, - { ISD::FP_TO_UINT, MVT::nxv4i8, MVT::nxv4f64, 2 }, - - // Complex, from nxv8f32: legal type is nxv8i32 (no cost) or nxv8i64 (1 ext). - { ISD::FP_TO_SINT, MVT::nxv8i64, MVT::nxv8f32, 2 }, + // Complex, from nxv2f64. + { ISD::FP_TO_SINT, MVT::nxv2i64, MVT::nxv2f64, 1 }, + { ISD::FP_TO_SINT, MVT::nxv2i32, MVT::nxv2f64, 1 }, + { ISD::FP_TO_SINT, MVT::nxv2i16, MVT::nxv2f64, 1 }, + { ISD::FP_TO_SINT, MVT::nxv2i8, MVT::nxv2f64, 1 }, + { ISD::FP_TO_UINT, MVT::nxv2i64, MVT::nxv2f64, 1 }, + { ISD::FP_TO_UINT, MVT::nxv2i32, MVT::nxv2f64, 1 }, + { ISD::FP_TO_UINT, MVT::nxv2i16, MVT::nxv2f64, 1 }, + { ISD::FP_TO_UINT, MVT::nxv2i8, MVT::nxv2f64, 1 }, + + // Complex, from nxv4f32. + { ISD::FP_TO_SINT, MVT::nxv4i64, MVT::nxv4f32, 4 }, + { ISD::FP_TO_SINT, MVT::nxv4i32, MVT::nxv4f32, 1 }, + { ISD::FP_TO_SINT, MVT::nxv4i16, MVT::nxv4f32, 1 }, + { ISD::FP_TO_SINT, MVT::nxv4i8, MVT::nxv4f32, 1 }, + { ISD::FP_TO_UINT, MVT::nxv4i64, MVT::nxv4f32, 4 }, + { ISD::FP_TO_UINT, MVT::nxv4i32, MVT::nxv4f32, 1 }, + { ISD::FP_TO_UINT, MVT::nxv4i16, MVT::nxv4f32, 1 }, + { ISD::FP_TO_UINT, MVT::nxv4i8, MVT::nxv4f32, 1 }, + + // Complex, from nxv8f64. Illegal -> illegal conversions not required. + { ISD::FP_TO_SINT, MVT::nxv8i16, MVT::nxv8f64, 7 }, + { ISD::FP_TO_SINT, MVT::nxv8i8, MVT::nxv8f64, 7 }, + { ISD::FP_TO_UINT, MVT::nxv8i16, MVT::nxv8f64, 7 }, + { ISD::FP_TO_UINT, MVT::nxv8i8, MVT::nxv8f64, 7 }, + + // Complex, from nxv4f64. Illegal -> illegal conversions not required. + { ISD::FP_TO_SINT, MVT::nxv4i32, MVT::nxv4f64, 3 }, + { ISD::FP_TO_SINT, MVT::nxv4i16, MVT::nxv4f64, 3 }, + { ISD::FP_TO_SINT, MVT::nxv4i8, MVT::nxv4f64, 3 }, + { ISD::FP_TO_UINT, MVT::nxv4i32, MVT::nxv4f64, 3 }, + { ISD::FP_TO_UINT, MVT::nxv4i16, MVT::nxv4f64, 3 }, + { ISD::FP_TO_UINT, MVT::nxv4i8, MVT::nxv4f64, 3 }, + + // Complex, from nxv8f32. Illegal -> illegal conversions not required. { ISD::FP_TO_SINT, MVT::nxv8i16, MVT::nxv8f32, 3 }, - { ISD::FP_TO_SINT, MVT::nxv8i8, MVT::nxv8f32, 1 }, - { ISD::FP_TO_UINT, MVT::nxv8i64, MVT::nxv8f32, 2 }, - { ISD::FP_TO_UINT, MVT::nxv8i16, MVT::nxv8f32, 1 }, - { ISD::FP_TO_UINT, MVT::nxv8i8, MVT::nxv8f32, 1 }, + { ISD::FP_TO_SINT, MVT::nxv8i8, MVT::nxv8f32, 3 }, + { ISD::FP_TO_UINT, MVT::nxv8i16, MVT::nxv8f32, 3 }, + { ISD::FP_TO_UINT, MVT::nxv8i8, MVT::nxv8f32, 3 }, + + // Complex, from nxv8f16. + { ISD::FP_TO_SINT, MVT::nxv8i64, MVT::nxv8f16, 10 }, + { ISD::FP_TO_SINT, MVT::nxv8i32, MVT::nxv8f16, 4 }, + { ISD::FP_TO_SINT, MVT::nxv8i16, MVT::nxv8f16, 1 }, + { ISD::FP_TO_SINT, MVT::nxv8i8, MVT::nxv8f16, 1 }, + { ISD::FP_TO_UINT, MVT::nxv8i64, MVT::nxv8f16, 10 }, + { ISD::FP_TO_UINT, MVT::nxv8i32, MVT::nxv8f16, 4 }, + { ISD::FP_TO_UINT, MVT::nxv8i16, MVT::nxv8f16, 1 }, + { ISD::FP_TO_UINT, MVT::nxv8i8, MVT::nxv8f16, 1 }, + + // Complex, from nxv4f16. + { ISD::FP_TO_SINT, MVT::nxv4i64, MVT::nxv4f16, 4 }, + { ISD::FP_TO_SINT, MVT::nxv4i32, MVT::nxv4f16, 1 }, + { ISD::FP_TO_SINT, MVT::nxv4i16, MVT::nxv4f16, 1 }, + { ISD::FP_TO_SINT, MVT::nxv4i8, MVT::nxv4f16, 1 }, + { ISD::FP_TO_UINT, MVT::nxv4i64, MVT::nxv4f16, 4 }, + { ISD::FP_TO_UINT, MVT::nxv4i32, MVT::nxv4f16, 1 }, + { ISD::FP_TO_UINT, MVT::nxv4i16, MVT::nxv4f16, 1 }, + { ISD::FP_TO_UINT, MVT::nxv4i8, MVT::nxv4f16, 1 }, + + // Complex, from nxv2f16. + { ISD::FP_TO_SINT, MVT::nxv2i64, MVT::nxv2f16, 1 }, + { ISD::FP_TO_SINT, MVT::nxv2i32, MVT::nxv2f16, 1 }, + { ISD::FP_TO_SINT, MVT::nxv2i16, MVT::nxv2f16, 1 }, + { ISD::FP_TO_SINT, MVT::nxv2i8, MVT::nxv2f16, 1 }, + { ISD::FP_TO_UINT, MVT::nxv2i64, MVT::nxv2f16, 1 }, + { ISD::FP_TO_UINT, MVT::nxv2i32, MVT::nxv2f16, 1 }, + { ISD::FP_TO_UINT, MVT::nxv2i16, MVT::nxv2f16, 1 }, + { ISD::FP_TO_UINT, MVT::nxv2i8, MVT::nxv2f16, 1 }, // Truncate from nxvmf32 to nxvmf16. { ISD::FP_ROUND, MVT::nxv2f16, MVT::nxv2f32, 1 }, diff --git a/llvm/test/Analysis/CostModel/AArch64/sve-fptoi.ll b/llvm/test/Analysis/CostModel/AArch64/sve-fptoi.ll --- a/llvm/test/Analysis/CostModel/AArch64/sve-fptoi.ll +++ b/llvm/test/Analysis/CostModel/AArch64/sve-fptoi.ll @@ -4,85 +4,124 @@ target triple = "aarch64-unknown-linux-gnu" define void @sve-fptoi() { - ;CHECK-LABEL: 'sve-fptoi' - ;CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2f32_to_si8 = fptosi undef to - ;CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2f32_to_ui8 = fptoui undef to - ;CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2f32_to_si32 = fptosi undef to - ;CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2f32_to_ui32 = fptoui undef to - ;CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv2f32_to_si64 = fptosi undef to - ;CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv2f32_to_ui64 = fptoui undef to - ;CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv2f64_to_si8 = fptosi undef to - ;CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv2f64_to_ui8 = fptoui undef to - ;CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv2f64_to_si32 = fptosi undef to - ;CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv2f64_to_ui32 = fptoui undef to - ;CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2f64_to_si64 = fptosi undef to - ;CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2f64_to_ui64 = fptoui undef to - ;CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv4f32_to_si8 = fptosi undef to - ;CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv4f32_to_ui8 = fptoui undef to - ;CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv4f32_to_si32 = fptosi undef to - ;CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv4f32_to_ui32 = fptoui undef to - ;CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %nv4f32_to_si64 = fptosi undef to - ;CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %nv4f32_to_ui64 = fptoui undef to - ;CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv4f64_to_si8 = fptosi undef to - ;CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv4f64_to_ui8 = fptoui undef to - ;CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv4f64_to_si32 = fptosi undef to - ;CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv4f64_to_ui32 = fptoui undef to - ;CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv4f64_to_si64 = fptosi undef to - ;CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv4f64_to_ui64 = fptoui undef to - ;CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv8f32_to_si8 = fptosi undef to - ;CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv8f32_to_ui8 = fptoui undef to - ;CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv8f32_to_si32 = fptosi undef to - ;CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv8f32_to_ui32 = fptoui undef to - ;CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv8f32_to_si64 = fptosi undef to - ;CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv8f32_to_ui64 = fptoui undef to - ;CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv8f64_to_si8 = fptosi undef to - ;CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv8f64_to_ui8 = fptoui undef to - ;CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv8f64_to_si32 = fptosi undef to - ;CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %nv8f64_to_ui32 = fptoui undef to - ;CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nv8f64_to_si64 = fptosi undef to - ;CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nv8f64_to_ui64 = fptoui undef to +; CHECK-LABEL: 'sve-fptoi' +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2f16_to_si8 = fptosi undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2f16_to_ui8 = fptoui undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2f16_to_si32 = fptosi undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2f16_to_ui32 = fptoui undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2f16_to_si64 = fptosi undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2f16_to_ui64 = fptoui undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2f32_to_si8 = fptosi undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2f32_to_ui8 = fptoui undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2f32_to_si16 = fptosi undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2f32_to_ui16 = fptoui undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2f32_to_si64 = fptosi undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2f32_to_ui64 = fptoui undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2f64_to_si8 = fptosi undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2f64_to_ui8 = fptoui undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2f64_to_si16 = fptosi undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2f64_to_ui16 = fptoui undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2f64_to_si32 = fptosi undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv2f64_to_ui32 = fptoui undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv4f16_to_si8 = fptosi undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv4f16_to_ui8 = fptoui undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv4f16_to_si32 = fptosi undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv4f16_to_ui32 = fptoui undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nv4f16_to_si64 = fptosi undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nv4f16_to_ui64 = fptoui undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv4f32_to_si8 = fptosi undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv4f32_to_ui8 = fptoui undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv4f32_to_si16 = fptosi undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv4f32_to_ui16 = fptoui undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nv4f32_to_si64 = fptosi undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nv4f32_to_ui64 = fptoui undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nv4f64_to_si8 = fptosi undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nv4f64_to_ui8 = fptoui undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nv4f64_to_si16 = fptosi undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nv4f64_to_ui16 = fptoui undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nv4f64_to_si32 = fptosi undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nv4f64_to_ui32 = fptoui undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv8f16_to_si8 = fptosi undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %nv8f16_to_ui8 = fptoui undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nv8f16_to_si32 = fptosi undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %nv8f16_to_ui32 = fptoui undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %nv8f16_to_si64 = fptosi undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %nv8f16_to_ui64 = fptoui undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nv8f32_to_si8 = fptosi undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nv8f32_to_ui8 = fptoui undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nv8f32_to_si16 = fptosi undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %nv8f32_to_ui16 = fptoui undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %nv8f32_to_si64 = fptosi undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %nv8f32_to_ui64 = fptoui undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %nv8f64_to_si8 = fptosi undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %nv8f64_to_ui8 = fptoui undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %nv8f64_to_si16 = fptosi undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %nv8f64_to_ui16 = fptoui undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %nv8f64_to_si32 = fptosi undef to +; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %nv8f64_to_ui32 = fptoui undef to + + %nv2f16_to_si8 = fptosi undef to + %nv2f16_to_ui8 = fptoui undef to + %nv2f16_to_si32 = fptosi undef to + %nv2f16_to_ui32 = fptoui undef to + %nv2f16_to_si64 = fptosi undef to + %nv2f16_to_ui64 = fptoui undef to %nv2f32_to_si8 = fptosi undef to %nv2f32_to_ui8 = fptoui undef to - %nv2f32_to_si32 = fptosi undef to - %nv2f32_to_ui32 = fptoui undef to + %nv2f32_to_si16 = fptosi undef to + %nv2f32_to_ui16 = fptoui undef to %nv2f32_to_si64 = fptosi undef to %nv2f32_to_ui64 = fptoui undef to %nv2f64_to_si8 = fptosi undef to %nv2f64_to_ui8 = fptoui undef to + %nv2f64_to_si16 = fptosi undef to + %nv2f64_to_ui16 = fptoui undef to %nv2f64_to_si32 = fptosi undef to %nv2f64_to_ui32 = fptoui undef to - %nv2f64_to_si64 = fptosi undef to - %nv2f64_to_ui64 = fptoui undef to + + %nv4f16_to_si8 = fptosi undef to + %nv4f16_to_ui8 = fptoui undef to + %nv4f16_to_si32 = fptosi undef to + %nv4f16_to_ui32 = fptoui undef to + %nv4f16_to_si64 = fptosi undef to + %nv4f16_to_ui64 = fptoui undef to %nv4f32_to_si8 = fptosi undef to %nv4f32_to_ui8 = fptoui undef to - %nv4f32_to_si32 = fptosi undef to - %nv4f32_to_ui32 = fptoui undef to + %nv4f32_to_si16 = fptosi undef to + %nv4f32_to_ui16 = fptoui undef to %nv4f32_to_si64 = fptosi undef to %nv4f32_to_ui64 = fptoui undef to %nv4f64_to_si8 = fptosi undef to %nv4f64_to_ui8 = fptoui undef to + %nv4f64_to_si16 = fptosi undef to + %nv4f64_to_ui16 = fptoui undef to %nv4f64_to_si32 = fptosi undef to %nv4f64_to_ui32 = fptoui undef to - %nv4f64_to_si64 = fptosi undef to - %nv4f64_to_ui64 = fptoui undef to + + %nv8f16_to_si8 = fptosi undef to + %nv8f16_to_ui8 = fptoui undef to + %nv8f16_to_si32 = fptosi undef to + %nv8f16_to_ui32 = fptoui undef to + %nv8f16_to_si64 = fptosi undef to + %nv8f16_to_ui64 = fptoui undef to %nv8f32_to_si8 = fptosi undef to %nv8f32_to_ui8 = fptoui undef to - %nv8f32_to_si32 = fptosi undef to - %nv8f32_to_ui32 = fptoui undef to + %nv8f32_to_si16 = fptosi undef to + %nv8f32_to_ui16 = fptoui undef to %nv8f32_to_si64 = fptosi undef to %nv8f32_to_ui64 = fptoui undef to %nv8f64_to_si8 = fptosi undef to %nv8f64_to_ui8 = fptoui undef to + %nv8f64_to_si16 = fptosi undef to + %nv8f64_to_ui16 = fptoui undef to %nv8f64_to_si32 = fptosi undef to %nv8f64_to_ui32 = fptoui undef to - %nv8f64_to_si64 = fptosi undef to - %nv8f64_to_ui64 = fptoui undef to ret void }