1// RUN: mlir-translate -test-spirv-roundtrip -split-input-file %s | FileCheck %s 2 3spv.module Logical GLSL450 requires #spv.vce<v1.0, [Shader], []> { 4 spv.func @bit_cast(%arg0 : f32) "None" { 5 // CHECK: {{%.*}} = spv.Bitcast {{%.*}} : f32 to i32 6 %0 = spv.Bitcast %arg0 : f32 to i32 7 // CHECK: {{%.*}} = spv.Bitcast {{%.*}} : i32 to si32 8 %1 = spv.Bitcast %0 : i32 to si32 9 // CHECK: {{%.*}} = spv.Bitcast {{%.*}} : si32 to i32 10 %2 = spv.Bitcast %1 : si32 to ui32 11 spv.Return 12 } 13} 14 15// ----- 16 17spv.module Logical GLSL450 requires #spv.vce<v1.0, [Shader], []> { 18 spv.func @convert_f_to_s(%arg0 : f32) -> i32 "None" { 19 // CHECK: {{%.*}} = spv.ConvertFToS {{%.*}} : f32 to i32 20 %0 = spv.ConvertFToS %arg0 : f32 to i32 21 spv.ReturnValue %0 : i32 22 } 23 spv.func @convert_f64_to_s32(%arg0 : f64) -> i32 "None" { 24 // CHECK: {{%.*}} = spv.ConvertFToS {{%.*}} : f64 to i32 25 %0 = spv.ConvertFToS %arg0 : f64 to i32 26 spv.ReturnValue %0 : i32 27 } 28 spv.func @convert_f_to_u(%arg0 : f32) -> i32 "None" { 29 // CHECK: {{%.*}} = spv.ConvertFToU {{%.*}} : f32 to i32 30 %0 = spv.ConvertFToU %arg0 : f32 to i32 31 spv.ReturnValue %0 : i32 32 } 33 spv.func @convert_f64_to_u32(%arg0 : f64) -> i32 "None" { 34 // CHECK: {{%.*}} = spv.ConvertFToU {{%.*}} : f64 to i32 35 %0 = spv.ConvertFToU %arg0 : f64 to i32 36 spv.ReturnValue %0 : i32 37 } 38 spv.func @convert_s_to_f(%arg0 : i32) -> f32 "None" { 39 // CHECK: {{%.*}} = spv.ConvertSToF {{%.*}} : i32 to f32 40 %0 = spv.ConvertSToF %arg0 : i32 to f32 41 spv.ReturnValue %0 : f32 42 } 43 spv.func @convert_s64_to_f32(%arg0 : i64) -> f32 "None" { 44 // CHECK: {{%.*}} = spv.ConvertSToF {{%.*}} : i64 to f32 45 %0 = spv.ConvertSToF %arg0 : i64 to f32 46 spv.ReturnValue %0 : f32 47 } 48 spv.func @convert_u_to_f(%arg0 : i32) -> f32 "None" { 49 // CHECK: {{%.*}} = spv.ConvertUToF {{%.*}} : i32 to f32 50 %0 = spv.ConvertUToF %arg0 : i32 to f32 51 spv.ReturnValue %0 : f32 52 } 53 spv.func @convert_u64_to_f32(%arg0 : i64) -> f32 "None" { 54 // CHECK: {{%.*}} = spv.ConvertUToF {{%.*}} : i64 to f32 55 %0 = spv.ConvertUToF %arg0 : i64 to f32 56 spv.ReturnValue %0 : f32 57 } 58 spv.func @f_convert(%arg0 : f32) -> f64 "None" { 59 // CHECK: {{%.*}} = spv.FConvert {{%.*}} : f32 to f64 60 %0 = spv.FConvert %arg0 : f32 to f64 61 spv.ReturnValue %0 : f64 62 } 63 spv.func @s_convert(%arg0 : i32) -> i64 "None" { 64 // CHECK: {{%.*}} = spv.SConvert {{%.*}} : i32 to i64 65 %0 = spv.SConvert %arg0 : i32 to i64 66 spv.ReturnValue %0 : i64 67 } 68 spv.func @u_convert(%arg0 : i32) -> i64 "None" { 69 // CHECK: {{%.*}} = spv.UConvert {{%.*}} : i32 to i64 70 %0 = spv.UConvert %arg0 : i32 to i64 71 spv.ReturnValue %0 : i64 72 } 73} 74