diff --git a/llvm/test/Analysis/CostModel/RISCV/fptoi_sat.ll b/llvm/test/Analysis/CostModel/RISCV/fptoi_sat.ll new file mode 100644 --- /dev/null +++ b/llvm/test/Analysis/CostModel/RISCV/fptoi_sat.ll @@ -0,0 +1,332 @@ +; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py +; RUN: opt < %s -mtriple=riscv64 -mattr=+v,+f -riscv-v-vector-bits-min=256 -passes="print" -disable-output | FileCheck %s +; RUN: opt < %s -passes="print" 2>&1 -disable-output -S -mtriple=riscv64 -mattr=+v,+f | FileCheck %s + +define void @casts() { +; CHECK-LABEL: 'casts' +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %f32s1 = call i1 @llvm.fptosi.sat.i1.f32(float undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %f32u1 = call i1 @llvm.fptoui.sat.i1.f32(float undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %f32s8 = call i8 @llvm.fptosi.sat.i8.f32(float undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %f32u8 = call i8 @llvm.fptoui.sat.i8.f32(float undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %f32s16 = call i16 @llvm.fptosi.sat.i16.f32(float undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %f32u16 = call i16 @llvm.fptoui.sat.i16.f32(float undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %f32s32 = call i32 @llvm.fptosi.sat.i32.f32(float undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %f32u32 = call i32 @llvm.fptoui.sat.i32.f32(float undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %f32s64 = call i64 @llvm.fptosi.sat.i64.f32(float undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %f32u64 = call i64 @llvm.fptoui.sat.i64.f32(float undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %f64s1 = call i1 @llvm.fptosi.sat.i1.f64(double undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %f64u1 = call i1 @llvm.fptoui.sat.i1.f64(double undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %f64s8 = call i8 @llvm.fptosi.sat.i8.f64(double undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %f64u8 = call i8 @llvm.fptoui.sat.i8.f64(double undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %f64s16 = call i16 @llvm.fptosi.sat.i16.f64(double undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %f64u16 = call i16 @llvm.fptoui.sat.i16.f64(double undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %f64s32 = call i32 @llvm.fptosi.sat.i32.f64(double undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %f64u32 = call i32 @llvm.fptoui.sat.i32.f64(double undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %f64s64 = call i64 @llvm.fptosi.sat.i64.f64(double undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %f64u64 = call i64 @llvm.fptoui.sat.i64.f64(double undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 18 for instruction: %v2f32s1 = call <2 x i1> @llvm.fptosi.sat.v2i1.v2f32(<2 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %v2f32u1 = call <2 x i1> @llvm.fptoui.sat.v2i1.v2f32(<2 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 18 for instruction: %v2f32s8 = call <2 x i8> @llvm.fptosi.sat.v2i8.v2f32(<2 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %v2f32u8 = call <2 x i8> @llvm.fptoui.sat.v2i8.v2f32(<2 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 18 for instruction: %v2f32s16 = call <2 x i16> @llvm.fptosi.sat.v2i16.v2f32(<2 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %v2f32u16 = call <2 x i16> @llvm.fptoui.sat.v2i16.v2f32(<2 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 18 for instruction: %v2f32s32 = call <2 x i32> @llvm.fptosi.sat.v2i32.v2f32(<2 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %v2f32u32 = call <2 x i32> @llvm.fptoui.sat.v2i32.v2f32(<2 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 18 for instruction: %v2f32s64 = call <2 x i64> @llvm.fptosi.sat.v2i64.v2f32(<2 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %v2f32u64 = call <2 x i64> @llvm.fptoui.sat.v2i64.v2f32(<2 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 18 for instruction: %v2f64s1 = call <2 x i1> @llvm.fptosi.sat.v2i1.v2f64(<2 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %v2f64u1 = call <2 x i1> @llvm.fptoui.sat.v2i1.v2f64(<2 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 18 for instruction: %v2f64s8 = call <2 x i8> @llvm.fptosi.sat.v2i8.v2f64(<2 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %v2f64u8 = call <2 x i8> @llvm.fptoui.sat.v2i8.v2f64(<2 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 18 for instruction: %v2f64s16 = call <2 x i16> @llvm.fptosi.sat.v2i16.v2f64(<2 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %v2f64u16 = call <2 x i16> @llvm.fptoui.sat.v2i16.v2f64(<2 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 18 for instruction: %v2f64s32 = call <2 x i32> @llvm.fptosi.sat.v2i32.v2f64(<2 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %v2f64u32 = call <2 x i32> @llvm.fptoui.sat.v2i32.v2f64(<2 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 18 for instruction: %v2f64s64 = call <2 x i64> @llvm.fptosi.sat.v2i64.v2f64(<2 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %v2f64u64 = call <2 x i64> @llvm.fptoui.sat.v2i64.v2f64(<2 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 36 for instruction: %v4f32s1 = call <4 x i1> @llvm.fptosi.sat.v4i1.v4f32(<4 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %v4f32u1 = call <4 x i1> @llvm.fptoui.sat.v4i1.v4f32(<4 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 36 for instruction: %v4f32s8 = call <4 x i8> @llvm.fptosi.sat.v4i8.v4f32(<4 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %v4f32u8 = call <4 x i8> @llvm.fptoui.sat.v4i8.v4f32(<4 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 36 for instruction: %v4f32s16 = call <4 x i16> @llvm.fptosi.sat.v4i16.v4f32(<4 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %v4f32u16 = call <4 x i16> @llvm.fptoui.sat.v4i16.v4f32(<4 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 36 for instruction: %v4f32s32 = call <4 x i32> @llvm.fptosi.sat.v4i32.v4f32(<4 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %v4f32u32 = call <4 x i32> @llvm.fptoui.sat.v4i32.v4f32(<4 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 36 for instruction: %v4f32s64 = call <4 x i64> @llvm.fptosi.sat.v4i64.v4f32(<4 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %v4f32u64 = call <4 x i64> @llvm.fptoui.sat.v4i64.v4f32(<4 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 36 for instruction: %v4f64s1 = call <4 x i1> @llvm.fptosi.sat.v4i1.v4f64(<4 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %v4f64u1 = call <4 x i1> @llvm.fptoui.sat.v4i1.v4f64(<4 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 36 for instruction: %v4f64s8 = call <4 x i8> @llvm.fptosi.sat.v4i8.v4f64(<4 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %v4f64u8 = call <4 x i8> @llvm.fptoui.sat.v4i8.v4f64(<4 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 36 for instruction: %v4f64s16 = call <4 x i16> @llvm.fptosi.sat.v4i16.v4f64(<4 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %v4f64u16 = call <4 x i16> @llvm.fptoui.sat.v4i16.v4f64(<4 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 36 for instruction: %v4f64s32 = call <4 x i32> @llvm.fptosi.sat.v4i32.v4f64(<4 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %v4f64u32 = call <4 x i32> @llvm.fptoui.sat.v4i32.v4f64(<4 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 36 for instruction: %v4f64s64 = call <4 x i64> @llvm.fptosi.sat.v4i64.v4f64(<4 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %v4f64u64 = call <4 x i64> @llvm.fptoui.sat.v4i64.v4f64(<4 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 72 for instruction: %v8f32s1 = call <8 x i1> @llvm.fptosi.sat.v8i1.v8f32(<8 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 40 for instruction: %v8f32u1 = call <8 x i1> @llvm.fptoui.sat.v8i1.v8f32(<8 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 72 for instruction: %v8f32s8 = call <8 x i8> @llvm.fptosi.sat.v8i8.v8f32(<8 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 40 for instruction: %v8f32u8 = call <8 x i8> @llvm.fptoui.sat.v8i8.v8f32(<8 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 72 for instruction: %v8f32s16 = call <8 x i16> @llvm.fptosi.sat.v8i16.v8f32(<8 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 40 for instruction: %v8f32u16 = call <8 x i16> @llvm.fptoui.sat.v8i16.v8f32(<8 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 72 for instruction: %v8f32s32 = call <8 x i32> @llvm.fptosi.sat.v8i32.v8f32(<8 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 40 for instruction: %v8f32u32 = call <8 x i32> @llvm.fptoui.sat.v8i32.v8f32(<8 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 72 for instruction: %v8f32s64 = call <8 x i64> @llvm.fptosi.sat.v8i64.v8f32(<8 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 40 for instruction: %v8f32u64 = call <8 x i64> @llvm.fptoui.sat.v8i64.v8f32(<8 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 72 for instruction: %v8f64s1 = call <8 x i1> @llvm.fptosi.sat.v8i1.v8f64(<8 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 40 for instruction: %v8f64u1 = call <8 x i1> @llvm.fptoui.sat.v8i1.v8f64(<8 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 72 for instruction: %v8f64s8 = call <8 x i8> @llvm.fptosi.sat.v8i8.v8f64(<8 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 40 for instruction: %v8f64u8 = call <8 x i8> @llvm.fptoui.sat.v8i8.v8f64(<8 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 72 for instruction: %v8f64s16 = call <8 x i16> @llvm.fptosi.sat.v8i16.v8f64(<8 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 40 for instruction: %v8f64u16 = call <8 x i16> @llvm.fptoui.sat.v8i16.v8f64(<8 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 72 for instruction: %v8f64s32 = call <8 x i32> @llvm.fptosi.sat.v8i32.v8f64(<8 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 40 for instruction: %v8f64u32 = call <8 x i32> @llvm.fptoui.sat.v8i32.v8f64(<8 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 72 for instruction: %v8f64s64 = call <8 x i64> @llvm.fptosi.sat.v8i64.v8f64(<8 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 40 for instruction: %v8f64u64 = call <8 x i64> @llvm.fptoui.sat.v8i64.v8f64(<8 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 144 for instruction: %v16f32s1 = call <16 x i1> @llvm.fptosi.sat.v16i1.v16f32(<16 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 80 for instruction: %v16f32u1 = call <16 x i1> @llvm.fptoui.sat.v16i1.v16f32(<16 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 144 for instruction: %v16f32s8 = call <16 x i8> @llvm.fptosi.sat.v16i8.v16f32(<16 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 80 for instruction: %v16f32u8 = call <16 x i8> @llvm.fptoui.sat.v16i8.v16f32(<16 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 144 for instruction: %v16f32s16 = call <16 x i16> @llvm.fptosi.sat.v16i16.v16f32(<16 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 80 for instruction: %v16f32u16 = call <16 x i16> @llvm.fptoui.sat.v16i16.v16f32(<16 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 144 for instruction: %v16f32s32 = call <16 x i32> @llvm.fptosi.sat.v16i32.v16f32(<16 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 80 for instruction: %v16f32u32 = call <16 x i32> @llvm.fptoui.sat.v16i32.v16f32(<16 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 144 for instruction: %v16f32s64 = call <16 x i64> @llvm.fptosi.sat.v16i64.v16f32(<16 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 80 for instruction: %v16f32u64 = call <16 x i64> @llvm.fptoui.sat.v16i64.v16f32(<16 x float> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 144 for instruction: %v16f64s1 = call <16 x i1> @llvm.fptosi.sat.v16i1.v16f64(<16 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 80 for instruction: %v16f64u1 = call <16 x i1> @llvm.fptoui.sat.v16i1.v16f64(<16 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 144 for instruction: %v16f64s8 = call <16 x i8> @llvm.fptosi.sat.v16i8.v16f64(<16 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 80 for instruction: %v16f64u8 = call <16 x i8> @llvm.fptoui.sat.v16i8.v16f64(<16 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 144 for instruction: %v16f64s16 = call <16 x i16> @llvm.fptosi.sat.v16i16.v16f64(<16 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 80 for instruction: %v16f64u16 = call <16 x i16> @llvm.fptoui.sat.v16i16.v16f64(<16 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 144 for instruction: %v16f64s32 = call <16 x i32> @llvm.fptosi.sat.v16i32.v16f64(<16 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 80 for instruction: %v16f64u32 = call <16 x i32> @llvm.fptoui.sat.v16i32.v16f64(<16 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 144 for instruction: %v16f64s64 = call <16 x i64> @llvm.fptosi.sat.v16i64.v16f64(<16 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 80 for instruction: %v16f64u64 = call <16 x i64> @llvm.fptoui.sat.v16i64.v16f64(<16 x double> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret void +; + %f32s1 = call i1 @llvm.fptosi.sat.i1.f32(float undef) + %f32u1 = call i1 @llvm.fptoui.sat.i1.f32(float undef) + %f32s8 = call i8 @llvm.fptosi.sat.i8.f32(float undef) + %f32u8 = call i8 @llvm.fptoui.sat.i8.f32(float undef) + %f32s16 = call i16 @llvm.fptosi.sat.i16.f32(float undef) + %f32u16 = call i16 @llvm.fptoui.sat.i16.f32(float undef) + %f32s32 = call i32 @llvm.fptosi.sat.i32.f32(float undef) + %f32u32 = call i32 @llvm.fptoui.sat.i32.f32(float undef) + %f32s64 = call i64 @llvm.fptosi.sat.i64.f32(float undef) + %f32u64 = call i64 @llvm.fptoui.sat.i64.f32(float undef) + + %f64s1 = call i1 @llvm.fptosi.sat.i1.f64(double undef) + %f64u1 = call i1 @llvm.fptoui.sat.i1.f64(double undef) + %f64s8 = call i8 @llvm.fptosi.sat.i8.f64(double undef) + %f64u8 = call i8 @llvm.fptoui.sat.i8.f64(double undef) + %f64s16 = call i16 @llvm.fptosi.sat.i16.f64(double undef) + %f64u16 = call i16 @llvm.fptoui.sat.i16.f64(double undef) + %f64s32 = call i32 @llvm.fptosi.sat.i32.f64(double undef) + %f64u32 = call i32 @llvm.fptoui.sat.i32.f64(double undef) + %f64s64 = call i64 @llvm.fptosi.sat.i64.f64(double undef) + %f64u64 = call i64 @llvm.fptoui.sat.i64.f64(double undef) + + %v2f32s1 = call <2 x i1> @llvm.fptosi.sat.v2i1.v2f32(<2 x float> undef) + %v2f32u1 = call <2 x i1> @llvm.fptoui.sat.v2i1.v2f32(<2 x float> undef) + %v2f32s8 = call <2 x i8> @llvm.fptosi.sat.v2i8.v2f32(<2 x float> undef) + %v2f32u8 = call <2 x i8> @llvm.fptoui.sat.v2i8.v2f32(<2 x float> undef) + %v2f32s16 = call <2 x i16> @llvm.fptosi.sat.v2i16.v2f32(<2 x float> undef) + %v2f32u16 = call <2 x i16> @llvm.fptoui.sat.v2i16.v2f32(<2 x float> undef) + %v2f32s32 = call <2 x i32> @llvm.fptosi.sat.v2i32.v2f32(<2 x float> undef) + %v2f32u32 = call <2 x i32> @llvm.fptoui.sat.v2i32.v2f32(<2 x float> undef) + %v2f32s64 = call <2 x i64> @llvm.fptosi.sat.v2i64.v2f32(<2 x float> undef) + %v2f32u64 = call <2 x i64> @llvm.fptoui.sat.v2i64.v2f32(<2 x float> undef) + + %v2f64s1 = call <2 x i1> @llvm.fptosi.sat.v2i1.v2f64(<2 x double> undef) + %v2f64u1 = call <2 x i1> @llvm.fptoui.sat.v2i1.v2f64(<2 x double> undef) + %v2f64s8 = call <2 x i8> @llvm.fptosi.sat.v2i8.v2f64(<2 x double> undef) + %v2f64u8 = call <2 x i8> @llvm.fptoui.sat.v2i8.v2f64(<2 x double> undef) + %v2f64s16 = call <2 x i16> @llvm.fptosi.sat.v2i16.v2f64(<2 x double> undef) + %v2f64u16 = call <2 x i16> @llvm.fptoui.sat.v2i16.v2f64(<2 x double> undef) + %v2f64s32 = call <2 x i32> @llvm.fptosi.sat.v2i32.v2f64(<2 x double> undef) + %v2f64u32 = call <2 x i32> @llvm.fptoui.sat.v2i32.v2f64(<2 x double> undef) + %v2f64s64 = call <2 x i64> @llvm.fptosi.sat.v2i64.v2f64(<2 x double> undef) + %v2f64u64 = call <2 x i64> @llvm.fptoui.sat.v2i64.v2f64(<2 x double> undef) + + %v4f32s1 = call <4 x i1> @llvm.fptosi.sat.v4i1.v4f32(<4 x float> undef) + %v4f32u1 = call <4 x i1> @llvm.fptoui.sat.v4i1.v4f32(<4 x float> undef) + %v4f32s8 = call <4 x i8> @llvm.fptosi.sat.v4i8.v4f32(<4 x float> undef) + %v4f32u8 = call <4 x i8> @llvm.fptoui.sat.v4i8.v4f32(<4 x float> undef) + %v4f32s16 = call <4 x i16> @llvm.fptosi.sat.v4i16.v4f32(<4 x float> undef) + %v4f32u16 = call <4 x i16> @llvm.fptoui.sat.v4i16.v4f32(<4 x float> undef) + %v4f32s32 = call <4 x i32> @llvm.fptosi.sat.v4i32.v4f32(<4 x float> undef) + %v4f32u32 = call <4 x i32> @llvm.fptoui.sat.v4i32.v4f32(<4 x float> undef) + %v4f32s64 = call <4 x i64> @llvm.fptosi.sat.v4i64.v4f32(<4 x float> undef) + %v4f32u64 = call <4 x i64> @llvm.fptoui.sat.v4i64.v4f32(<4 x float> undef) + + %v4f64s1 = call <4 x i1> @llvm.fptosi.sat.v4i1.v4f64(<4 x double> undef) + %v4f64u1 = call <4 x i1> @llvm.fptoui.sat.v4i1.v4f64(<4 x double> undef) + %v4f64s8 = call <4 x i8> @llvm.fptosi.sat.v4i8.v4f64(<4 x double> undef) + %v4f64u8 = call <4 x i8> @llvm.fptoui.sat.v4i8.v4f64(<4 x double> undef) + %v4f64s16 = call <4 x i16> @llvm.fptosi.sat.v4i16.v4f64(<4 x double> undef) + %v4f64u16 = call <4 x i16> @llvm.fptoui.sat.v4i16.v4f64(<4 x double> undef) + %v4f64s32 = call <4 x i32> @llvm.fptosi.sat.v4i32.v4f64(<4 x double> undef) + %v4f64u32 = call <4 x i32> @llvm.fptoui.sat.v4i32.v4f64(<4 x double> undef) + %v4f64s64 = call <4 x i64> @llvm.fptosi.sat.v4i64.v4f64(<4 x double> undef) + %v4f64u64 = call <4 x i64> @llvm.fptoui.sat.v4i64.v4f64(<4 x double> undef) + + %v8f32s1 = call <8 x i1> @llvm.fptosi.sat.v8i1.v8f32(<8 x float> undef) + %v8f32u1 = call <8 x i1> @llvm.fptoui.sat.v8i1.v8f32(<8 x float> undef) + %v8f32s8 = call <8 x i8> @llvm.fptosi.sat.v8i8.v8f32(<8 x float> undef) + %v8f32u8 = call <8 x i8> @llvm.fptoui.sat.v8i8.v8f32(<8 x float> undef) + %v8f32s16 = call <8 x i16> @llvm.fptosi.sat.v8i16.v8f32(<8 x float> undef) + %v8f32u16 = call <8 x i16> @llvm.fptoui.sat.v8i16.v8f32(<8 x float> undef) + %v8f32s32 = call <8 x i32> @llvm.fptosi.sat.v8i32.v8f32(<8 x float> undef) + %v8f32u32 = call <8 x i32> @llvm.fptoui.sat.v8i32.v8f32(<8 x float> undef) + %v8f32s64 = call <8 x i64> @llvm.fptosi.sat.v8i64.v8f32(<8 x float> undef) + %v8f32u64 = call <8 x i64> @llvm.fptoui.sat.v8i64.v8f32(<8 x float> undef) + + %v8f64s1 = call <8 x i1> @llvm.fptosi.sat.v8i1.v8f64(<8 x double> undef) + %v8f64u1 = call <8 x i1> @llvm.fptoui.sat.v8i1.v8f64(<8 x double> undef) + %v8f64s8 = call <8 x i8> @llvm.fptosi.sat.v8i8.v8f64(<8 x double> undef) + %v8f64u8 = call <8 x i8> @llvm.fptoui.sat.v8i8.v8f64(<8 x double> undef) + %v8f64s16 = call <8 x i16> @llvm.fptosi.sat.v8i16.v8f64(<8 x double> undef) + %v8f64u16 = call <8 x i16> @llvm.fptoui.sat.v8i16.v8f64(<8 x double> undef) + %v8f64s32 = call <8 x i32> @llvm.fptosi.sat.v8i32.v8f64(<8 x double> undef) + %v8f64u32 = call <8 x i32> @llvm.fptoui.sat.v8i32.v8f64(<8 x double> undef) + %v8f64s64 = call <8 x i64> @llvm.fptosi.sat.v8i64.v8f64(<8 x double> undef) + %v8f64u64 = call <8 x i64> @llvm.fptoui.sat.v8i64.v8f64(<8 x double> undef) + + %v16f32s1 = call <16 x i1> @llvm.fptosi.sat.v16i1.v16f32(<16 x float> undef) + %v16f32u1 = call <16 x i1> @llvm.fptoui.sat.v16i1.v16f32(<16 x float> undef) + %v16f32s8 = call <16 x i8> @llvm.fptosi.sat.v16i8.v16f32(<16 x float> undef) + %v16f32u8 = call <16 x i8> @llvm.fptoui.sat.v16i8.v16f32(<16 x float> undef) + %v16f32s16 = call <16 x i16> @llvm.fptosi.sat.v16i16.v16f32(<16 x float> undef) + %v16f32u16 = call <16 x i16> @llvm.fptoui.sat.v16i16.v16f32(<16 x float> undef) + %v16f32s32 = call <16 x i32> @llvm.fptosi.sat.v16i32.v16f32(<16 x float> undef) + %v16f32u32 = call <16 x i32> @llvm.fptoui.sat.v16i32.v16f32(<16 x float> undef) + %v16f32s64 = call <16 x i64> @llvm.fptosi.sat.v16i64.v16f32(<16 x float> undef) + %v16f32u64 = call <16 x i64> @llvm.fptoui.sat.v16i64.v16f32(<16 x float> undef) + + %v16f64s1 = call <16 x i1> @llvm.fptosi.sat.v16i1.v16f64(<16 x double> undef) + %v16f64u1 = call <16 x i1> @llvm.fptoui.sat.v16i1.v16f64(<16 x double> undef) + %v16f64s8 = call <16 x i8> @llvm.fptosi.sat.v16i8.v16f64(<16 x double> undef) + %v16f64u8 = call <16 x i8> @llvm.fptoui.sat.v16i8.v16f64(<16 x double> undef) + %v16f64s16 = call <16 x i16> @llvm.fptosi.sat.v16i16.v16f64(<16 x double> undef) + %v16f64u16 = call <16 x i16> @llvm.fptoui.sat.v16i16.v16f64(<16 x double> undef) + %v16f64s32 = call <16 x i32> @llvm.fptosi.sat.v16i32.v16f64(<16 x double> undef) + %v16f64u32 = call <16 x i32> @llvm.fptoui.sat.v16i32.v16f64(<16 x double> undef) + %v16f64s64 = call <16 x i64> @llvm.fptosi.sat.v16i64.v16f64(<16 x double> undef) + %v16f64u64 = call <16 x i64> @llvm.fptoui.sat.v16i64.v16f64(<16 x double> undef) + + ret void +} + + +declare i1 @llvm.fptosi.sat.i1.f32(float) +declare i1 @llvm.fptoui.sat.i1.f32(float) +declare i8 @llvm.fptosi.sat.i8.f32(float) +declare i8 @llvm.fptoui.sat.i8.f32(float) +declare i16 @llvm.fptosi.sat.i16.f32(float) +declare i16 @llvm.fptoui.sat.i16.f32(float) +declare i32 @llvm.fptosi.sat.i32.f32(float) +declare i32 @llvm.fptoui.sat.i32.f32(float) +declare i64 @llvm.fptosi.sat.i64.f32(float) +declare i64 @llvm.fptoui.sat.i64.f32(float) + +declare i1 @llvm.fptosi.sat.i1.f64(double) +declare i1 @llvm.fptoui.sat.i1.f64(double) +declare i8 @llvm.fptosi.sat.i8.f64(double) +declare i8 @llvm.fptoui.sat.i8.f64(double) +declare i16 @llvm.fptosi.sat.i16.f64(double) +declare i16 @llvm.fptoui.sat.i16.f64(double) +declare i32 @llvm.fptosi.sat.i32.f64(double) +declare i32 @llvm.fptoui.sat.i32.f64(double) +declare i64 @llvm.fptosi.sat.i64.f64(double) +declare i64 @llvm.fptoui.sat.i64.f64(double) + +declare <2 x i1> @llvm.fptosi.sat.v2i1.v2f32(<2 x float>) +declare <2 x i1> @llvm.fptoui.sat.v2i1.v2f32(<2 x float>) +declare <2 x i8> @llvm.fptosi.sat.v2i8.v2f32(<2 x float>) +declare <2 x i8> @llvm.fptoui.sat.v2i8.v2f32(<2 x float>) +declare <2 x i16> @llvm.fptosi.sat.v2i16.v2f32(<2 x float>) +declare <2 x i16> @llvm.fptoui.sat.v2i16.v2f32(<2 x float>) +declare <2 x i32> @llvm.fptosi.sat.v2i32.v2f32(<2 x float>) +declare <2 x i32> @llvm.fptoui.sat.v2i32.v2f32(<2 x float>) +declare <2 x i64> @llvm.fptosi.sat.v2i64.v2f32(<2 x float>) +declare <2 x i64> @llvm.fptoui.sat.v2i64.v2f32(<2 x float>) + +declare <2 x i1> @llvm.fptosi.sat.v2i1.v2f64(<2 x double>) +declare <2 x i1> @llvm.fptoui.sat.v2i1.v2f64(<2 x double>) +declare <2 x i8> @llvm.fptosi.sat.v2i8.v2f64(<2 x double>) +declare <2 x i8> @llvm.fptoui.sat.v2i8.v2f64(<2 x double>) +declare <2 x i16> @llvm.fptosi.sat.v2i16.v2f64(<2 x double>) +declare <2 x i16> @llvm.fptoui.sat.v2i16.v2f64(<2 x double>) +declare <2 x i32> @llvm.fptosi.sat.v2i32.v2f64(<2 x double>) +declare <2 x i32> @llvm.fptoui.sat.v2i32.v2f64(<2 x double>) +declare <2 x i64> @llvm.fptosi.sat.v2i64.v2f64(<2 x double>) +declare <2 x i64> @llvm.fptoui.sat.v2i64.v2f64(<2 x double>) + +declare <4 x i1> @llvm.fptosi.sat.v4i1.v4f32(<4 x float>) +declare <4 x i1> @llvm.fptoui.sat.v4i1.v4f32(<4 x float>) +declare <4 x i8> @llvm.fptosi.sat.v4i8.v4f32(<4 x float>) +declare <4 x i8> @llvm.fptoui.sat.v4i8.v4f32(<4 x float>) +declare <4 x i16> @llvm.fptosi.sat.v4i16.v4f32(<4 x float>) +declare <4 x i16> @llvm.fptoui.sat.v4i16.v4f32(<4 x float>) +declare <4 x i32> @llvm.fptosi.sat.v4i32.v4f32(<4 x float>) +declare <4 x i32> @llvm.fptoui.sat.v4i32.v4f32(<4 x float>) +declare <4 x i64> @llvm.fptosi.sat.v4i64.v4f32(<4 x float>) +declare <4 x i64> @llvm.fptoui.sat.v4i64.v4f32(<4 x float>) + +declare <4 x i1> @llvm.fptosi.sat.v4i1.v4f64(<4 x double>) +declare <4 x i1> @llvm.fptoui.sat.v4i1.v4f64(<4 x double>) +declare <4 x i8> @llvm.fptosi.sat.v4i8.v4f64(<4 x double>) +declare <4 x i8> @llvm.fptoui.sat.v4i8.v4f64(<4 x double>) +declare <4 x i16> @llvm.fptosi.sat.v4i16.v4f64(<4 x double>) +declare <4 x i16> @llvm.fptoui.sat.v4i16.v4f64(<4 x double>) +declare <4 x i32> @llvm.fptosi.sat.v4i32.v4f64(<4 x double>) +declare <4 x i32> @llvm.fptoui.sat.v4i32.v4f64(<4 x double>) +declare <4 x i64> @llvm.fptosi.sat.v4i64.v4f64(<4 x double>) +declare <4 x i64> @llvm.fptoui.sat.v4i64.v4f64(<4 x double>) + +declare <8 x i1> @llvm.fptosi.sat.v8i1.v8f32(<8 x float>) +declare <8 x i1> @llvm.fptoui.sat.v8i1.v8f32(<8 x float>) +declare <8 x i8> @llvm.fptosi.sat.v8i8.v8f32(<8 x float>) +declare <8 x i8> @llvm.fptoui.sat.v8i8.v8f32(<8 x float>) +declare <8 x i16> @llvm.fptosi.sat.v8i16.v8f32(<8 x float>) +declare <8 x i16> @llvm.fptoui.sat.v8i16.v8f32(<8 x float>) +declare <8 x i32> @llvm.fptosi.sat.v8i32.v8f32(<8 x float>) +declare <8 x i32> @llvm.fptoui.sat.v8i32.v8f32(<8 x float>) +declare <8 x i64> @llvm.fptosi.sat.v8i64.v8f32(<8 x float>) +declare <8 x i64> @llvm.fptoui.sat.v8i64.v8f32(<8 x float>) + +declare <8 x i1> @llvm.fptosi.sat.v8i1.v8f64(<8 x double>) +declare <8 x i1> @llvm.fptoui.sat.v8i1.v8f64(<8 x double>) +declare <8 x i8> @llvm.fptosi.sat.v8i8.v8f64(<8 x double>) +declare <8 x i8> @llvm.fptoui.sat.v8i8.v8f64(<8 x double>) +declare <8 x i16> @llvm.fptosi.sat.v8i16.v8f64(<8 x double>) +declare <8 x i16> @llvm.fptoui.sat.v8i16.v8f64(<8 x double>) +declare <8 x i32> @llvm.fptosi.sat.v8i32.v8f64(<8 x double>) +declare <8 x i32> @llvm.fptoui.sat.v8i32.v8f64(<8 x double>) +declare <8 x i64> @llvm.fptosi.sat.v8i64.v8f64(<8 x double>) +declare <8 x i64> @llvm.fptoui.sat.v8i64.v8f64(<8 x double>) + +declare <16 x i1> @llvm.fptosi.sat.v16i1.v16f32(<16 x float>) +declare <16 x i1> @llvm.fptoui.sat.v16i1.v16f32(<16 x float>) +declare <16 x i8> @llvm.fptosi.sat.v16i8.v16f32(<16 x float>) +declare <16 x i8> @llvm.fptoui.sat.v16i8.v16f32(<16 x float>) +declare <16 x i16> @llvm.fptosi.sat.v16i16.v16f32(<16 x float>) +declare <16 x i16> @llvm.fptoui.sat.v16i16.v16f32(<16 x float>) +declare <16 x i32> @llvm.fptosi.sat.v16i32.v16f32(<16 x float>) +declare <16 x i32> @llvm.fptoui.sat.v16i32.v16f32(<16 x float>) +declare <16 x i64> @llvm.fptosi.sat.v16i64.v16f32(<16 x float>) +declare <16 x i64> @llvm.fptoui.sat.v16i64.v16f32(<16 x float>) + +declare <16 x i1> @llvm.fptosi.sat.v16i1.v16f64(<16 x double>) +declare <16 x i1> @llvm.fptoui.sat.v16i1.v16f64(<16 x double>) +declare <16 x i8> @llvm.fptosi.sat.v16i8.v16f64(<16 x double>) +declare <16 x i8> @llvm.fptoui.sat.v16i8.v16f64(<16 x double>) +declare <16 x i16> @llvm.fptosi.sat.v16i16.v16f64(<16 x double>) +declare <16 x i16> @llvm.fptoui.sat.v16i16.v16f64(<16 x double>) +declare <16 x i32> @llvm.fptosi.sat.v16i32.v16f64(<16 x double>) +declare <16 x i32> @llvm.fptoui.sat.v16i32.v16f64(<16 x double>) +declare <16 x i64> @llvm.fptosi.sat.v16i64.v16f64(<16 x double>) +declare <16 x i64> @llvm.fptoui.sat.v16i64.v16f64(<16 x double>) +