197 lines · plain
1; RUN: llc -O0 -verify-machineinstrs -mtriple=spirv64-unkown-unknown %s -o - | FileCheck %s2; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv64-unkown-unknown %s -o - -filetype=obj | spirv-val %}3 4; CHECK: OpDecorate %[[#SAT1:]] SaturatedConversion5; CHECK: OpDecorate %[[#SAT2:]] SaturatedConversion6; CHECK: OpDecorate %[[#SAT3:]] SaturatedConversion7; CHECK: OpDecorate %[[#SAT4:]] SaturatedConversion8; CHECK: OpDecorate %[[#SAT5:]] SaturatedConversion9; CHECK: OpDecorate %[[#SAT6:]] SaturatedConversion10; CHECK: OpDecorate %[[#SAT7:]] SaturatedConversion11; CHECK: OpDecorate %[[#SAT8:]] SaturatedConversion12; CHECK: OpDecorate %[[#SAT9:]] SaturatedConversion13; CHECK: OpDecorate %[[#SAT10:]] SaturatedConversion14; CHECK: OpDecorate %[[#SAT11:]] SaturatedConversion15; CHECK: OpDecorate %[[#SAT12:]] SaturatedConversion16; CHECK: OpDecorate %[[#SAT13:]] SaturatedConversion17; CHECK: OpDecorate %[[#SAT14:]] SaturatedConversion18; CHECK: OpDecorate %[[#SAT15:]] SaturatedConversion19; CHECK: OpDecorate %[[#SAT16:]] SaturatedConversion20 21 22; CHECK: %[[#SAT1]] = OpConvertFToS %[[#]] %[[#]]23define spir_kernel void @testfunction_float_to_signed_i8(float %input) {24entry:25 %ptr = alloca i826 %signed_int = call i8 @llvm.fptosi.sat.i8.f32(float %input)27 store i8 %signed_int, i8* %ptr28 ret void29 30}31declare i8 @llvm.fptosi.sat.i8.f32(float)32 33 34; CHECK: %[[#SAT2]] = OpConvertFToS %[[#]] %[[#]]35define spir_kernel void @testfunction_float_to_signed_i16(float %input) {36entry:37 %ptr = alloca i1638 %signed_int = call i16 @llvm.fptosi.sat.i16.f32(float %input)39 store i16 %signed_int, i16* %ptr40 ret void41 42}43declare i16 @llvm.fptosi.sat.i16.f32(float)44 45; CHECK: %[[#SAT3]] = OpConvertFToS %[[#]] %[[#]]46define spir_kernel void @testfunction_float_to_signed_i32(float %input) {47entry:48 %ptr = alloca i3249 %signed_int = call i32 @llvm.fptosi.sat.i32.f32(float %input)50 store i32 %signed_int, i32* %ptr51 ret void52 53}54declare i32 @llvm.fptosi.sat.i32.f32(float)55 56 57; CHECK: %[[#SAT4]] = OpConvertFToS %[[#]] %[[#]]58define spir_kernel void @testfunction_float_to_signed_i64(float %input) {59entry:60 %ptr = alloca i6461 %signed_int = call i64 @llvm.fptosi.sat.i64.f32(float %input)62 store i64 %signed_int, i64* %ptr63 ret void64}65declare i64 @llvm.fptosi.sat.i64.f32(float)66 67 68; CHECK: %[[#SAT5]] = OpConvertFToS %[[#]] %[[#]]69define spir_kernel void @testfunction_double_to_signed_i8(double %input) {70entry:71 %ptr = alloca i872 %signed_int = call i8 @llvm.fptosi.sat.i8.f64(double %input)73 store i8 %signed_int, i8* %ptr74 ret void75}76declare i8 @llvm.fptosi.sat.i8.f64(double)77 78 79; CHECK: %[[#SAT6]] = OpConvertFToS %[[#]] %[[#]]80define spir_kernel void @testfunction_double_to_signed_i16(double %input) {81entry:82 %ptr = alloca i1683 %signed_int = call i16 @llvm.fptosi.sat.i16.f64(double %input)84 store i16 %signed_int, i16* %ptr85 ret void86}87declare i16 @llvm.fptosi.sat.i16.f64(double)88 89 90; CHECK: %[[#SAT7]] = OpConvertFToS %[[#]] %[[#]]91define spir_kernel void @testfunction_double_to_signed_i32(double %input) {92entry:93 %ptr = alloca i3294 %signed_int = call i32 @llvm.fptosi.sat.i32.f64(double %input)95 store i32 %signed_int, i32* %ptr96 ret void97}98declare i32 @llvm.fptosi.sat.i32.f64(double)99 100 101; CHECK: %[[#SAT8]] = OpConvertFToS %[[#]] %[[#]]102define spir_kernel void @testfunction_double_to_signed_i64(double %input) {103entry:104 %ptr = alloca i64105 %signed_int = call i64 @llvm.fptosi.sat.i64.f64(double %input)106 store i64 %signed_int, i64* %ptr107 ret void108}109declare i64 @llvm.fptosi.sat.i64.f64(double)110 111; CHECK: %[[#SAT9]] = OpConvertFToU %[[#]] %[[#]]112define spir_kernel void @testfunction_float_to_unsigned_i8(float %input) {113entry:114 %ptr = alloca i8115 %unsigned_int = call i8 @llvm.fptoui.sat.i8.f32(float %input)116 store i8 %unsigned_int, i8* %ptr117 ret void118}119declare i8 @llvm.fptoui.sat.i8.f32(float)120 121 122; CHECK: %[[#SAT10]] = OpConvertFToU %[[#]] %[[#]]123define spir_kernel void @testfunction_float_to_unsigned_i16(float %input) {124entry:125 %ptr = alloca i16126 %unsigned_int = call i16 @llvm.fptoui.sat.i16.f32(float %input)127 store i16 %unsigned_int, i16* %ptr128 ret void129}130declare i16 @llvm.fptoui.sat.i16.f32(float)131 132 133; CHECK: %[[#SAT11]] = OpConvertFToU %[[#]] %[[#]]134define spir_kernel void @testfunction_float_to_unsigned_i32(float %input) {135entry:136 %ptr = alloca i32137 %unsigned_int = call i32 @llvm.fptoui.sat.i32.f32(float %input)138 store i32 %unsigned_int, i32* %ptr139 ret void140}141declare i32 @llvm.fptoui.sat.i32.f32(float)142 143 144; CHECK: %[[#SAT12]] = OpConvertFToU %[[#]] %[[#]]145define spir_kernel void @testfunction_float_to_unsigned_i64(float %input) {146entry:147 %ptr = alloca i64148 %unsigned_int = call i64 @llvm.fptoui.sat.i64.f32(float %input)149 store i64 %unsigned_int, i64* %ptr150 ret void151}152declare i64 @llvm.fptoui.sat.i64.f32(float)153 154 155; CHECK: %[[#SAT13]] = OpConvertFToU %[[#]] %[[#]]156define spir_kernel void @testfunction_double_to_unsigned_i8(double %input) {157entry:158 %ptr = alloca i8159 %unsigned_int = call i8 @llvm.fptoui.sat.i8.f64(double %input)160 store i8 %unsigned_int, i8* %ptr161 ret void162}163declare i8 @llvm.fptoui.sat.i8.f64(double)164 165 166; CHECK: %[[#SAT14]] = OpConvertFToU %[[#]] %[[#]]167define spir_kernel void @testfunction_double_to_unsigned_i16(double %input) {168entry:169 %ptr = alloca i16170 %unsigned_int = call i16 @llvm.fptoui.sat.i16.f64(double %input)171 store i16 %unsigned_int, i16* %ptr172 ret void173}174declare i16 @llvm.fptoui.sat.i16.f64(double)175 176 177; CHECK: %[[#SAT15]] = OpConvertFToU %[[#]] %[[#]]178define spir_kernel void @testfunction_double_to_unsigned_i32(double %input) {179entry:180 %ptr = alloca i32181 %unsigned_int = call i32 @llvm.fptoui.sat.i32.f64(double %input)182 store i32 %unsigned_int, i32* %ptr183 ret void184}185declare i32 @llvm.fptoui.sat.i32.f64(double)186 187 188; CHECK: %[[#SAT16]] = OpConvertFToU %[[#]] %[[#]]189define spir_kernel void @testfunction_double_to_unsigned_i64(double %input) {190entry:191 %ptr = alloca i64192 %unsigned_int = call i64 @llvm.fptoui.sat.i64.f64(double %input)193 store i64 %unsigned_int, i64* %ptr194 ret void195}196declare i64 @llvm.fptoui.sat.i64.f64(double)197