brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.9 KiB · 7bc6f5b Raw
97 lines · plain
1; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv32-unknown-unknown --spirv-ext=+SPV_INTEL_bfloat16_conversion %s -o - | FileCheck %s2; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv64-unknown-unknown --spirv-ext=+SPV_INTEL_bfloat16_conversion %s -o - -filetype=obj | spirv-val %}3 4; RUN: not llc -O0 -mtriple=spirv32-unknown-unknown %s -o %t.spvt 2>&1 | FileCheck %s --check-prefix=CHECK-ERROR5; CHECK-ERROR: the builtin requires the following SPIR-V extension: SPV_INTEL_bfloat16_conversion6 7; CHECK: OpCapability BFloat16ConversionINTEL8; CHECK: OpExtension "SPV_INTEL_bfloat16_conversion"9 10; CHECK-DAG: %[[VoidTy:.*]] = OpTypeVoid11; CHECK-DAG: %[[Int16Ty:.*]] = OpTypeInt 16 012; CHECK-DAG: %[[FP32Ty:.*]] = OpTypeFloat 3213; CHECK-DAG: %[[VecFloat2:.*]] = OpTypeVector %[[FP32Ty]] 214; CHECK-DAG: %[[VecInt162:.*]] = OpTypeVector %[[Int16Ty]] 215; CHECK-DAG: %[[VecFloat3:.*]] = OpTypeVector %[[FP32Ty]] 316; CHECK-DAG: %[[VecInt163:.*]] = OpTypeVector %[[Int16Ty]] 317; CHECK-DAG: %[[VecFloat4:.*]] = OpTypeVector %[[FP32Ty]] 418; CHECK-DAG: %[[VecInt164:.*]] = OpTypeVector %[[Int16Ty]] 419; CHECK-DAG: %[[VecFloat8:.*]] = OpTypeVector %[[FP32Ty]] 820; CHECK-DAG: %[[VecInt168:.*]] = OpTypeVector %[[Int16Ty]] 821; CHECK-DAG: %[[VecFloat16:.*]] = OpTypeVector %[[FP32Ty]] 1622; CHECK-DAG: %[[VecInt1616:.*]] = OpTypeVector %[[Int16Ty]] 1623; CHECK-DAG: %[[IntConstId:.*]] = OpConstant %[[Int16Ty]] 6724; CHECK-DAG: %[[FloatConstId:.*]] = OpConstant %[[FP32Ty]] 1.525 26; CHECK: OpFunction %[[VoidTy]]27; CHECK: %[[FP32ValId:.*]] = OpFunctionParameter %[[FP32Ty]]28; CHECK: %[[FP32v8ValId:.*]] = OpFunctionParameter %[[VecFloat8]]29 30; CHECK: %[[Int16ValId:.*]] = OpConvertFToBF16INTEL %[[Int16Ty]] %[[FP32ValId]]31; CHECK: OpConvertBF16ToFINTEL %[[FP32Ty]] %[[Int16ValId]]32; CHECK: %[[Int16v8ValId:.*]] = OpConvertFToBF16INTEL %[[VecInt168]] %[[FP32v8ValId]]33; CHECK: OpConvertBF16ToFINTEL %[[VecFloat8]] %[[Int16v8ValId]]34; CHECK: OpConvertFToBF16INTEL %[[Int16Ty]] %[[FloatConstId]]35; CHECK: OpConvertBF16ToFINTEL %[[FP32Ty]] %[[IntConstId]]36 37; CHECK: OpConvertFToBF16INTEL %[[Int16Ty]]38; CHECK: OpConvertFToBF16INTEL %[[VecInt162]]39; CHECK: OpConvertFToBF16INTEL %[[VecInt163]]40; CHECK: OpConvertFToBF16INTEL %[[VecInt164]]41; CHECK: OpConvertFToBF16INTEL %[[VecInt168]]42; CHECK: OpConvertFToBF16INTEL %[[VecInt1616]]43; CHECK: OpConvertBF16ToFINTEL %[[FP32Ty]]44; CHECK: OpConvertBF16ToFINTEL %[[VecFloat2]]45; CHECK: OpConvertBF16ToFINTEL %[[VecFloat3]]46; CHECK: OpConvertBF16ToFINTEL %[[VecFloat4]]47; CHECK: OpConvertBF16ToFINTEL %[[VecFloat8]]48; CHECK: OpConvertBF16ToFINTEL %[[VecFloat16]]49 50target datalayout = "e-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-n8:16:32:64"51target triple = "spir64-unknown-unknown"52 53define spir_func void @test(float %a, <8 x float> %in) {54  %res1 = tail call spir_func zeroext i16 @_Z27__spirv_ConvertFToBF16INTELf(float %a)55  %res2 = tail call spir_func float @_Z27__spirv_ConvertBF16ToFINTELs(i16 zeroext %res1)56  %res3 = tail call spir_func <8 x i16> @_Z27__spirv_ConvertFToBF16INTELDv8_f(<8 x float> %in)57  %res4 = tail call spir_func <8 x float> @_Z27__spirv_ConvertBF16ToFINTELDv8_s(<8 x i16> %res3)58  %res5 = tail call spir_func zeroext i16 @_Z27__spirv_ConvertFToBF16INTELf(float 1.500000e+00)59  %res6 = tail call spir_func float @_Z27__spirv_ConvertBF16ToFINTELs(i16 67)60  ret void61}62 63declare spir_func zeroext i16 @_Z27__spirv_ConvertFToBF16INTELf(float)64declare spir_func float @_Z27__spirv_ConvertBF16ToFINTELs(i16 zeroext)65declare spir_func <8 x i16> @_Z27__spirv_ConvertFToBF16INTELDv8_f(<8 x float>)66declare spir_func <8 x float> @_Z27__spirv_ConvertBF16ToFINTELDv8_s(<8 x i16>)67 68define dso_local spir_kernel void @test_ocl() {69entry:70  %res = call spir_func zeroext i16 @_Z32intel_convert_bfloat16_as_ushortf(float 0.000000e+00)71  %res1 = call spir_func <2 x i16> @_Z34intel_convert_bfloat162_as_ushort2Dv2_f(<2 x float> zeroinitializer)72  %res2 = call spir_func <3 x i16> @_Z34intel_convert_bfloat163_as_ushort3Dv3_f(<3 x float> zeroinitializer)73  %res3 = call spir_func <4 x i16> @_Z34intel_convert_bfloat164_as_ushort4Dv4_f(<4 x float> zeroinitializer)74  %res4 = call spir_func <8 x i16> @_Z34intel_convert_bfloat168_as_ushort8Dv8_f(<8 x float> zeroinitializer)75  %res5 = call spir_func <16 x i16> @_Z36intel_convert_bfloat1616_as_ushort16Dv16_f(<16 x float> zeroinitializer)76  %res6 = call spir_func float @_Z31intel_convert_as_bfloat16_floatt(i16 zeroext 0)77  %res7 = call spir_func <2 x float> @_Z33intel_convert_as_bfloat162_float2Dv2_t(<2 x i16> zeroinitializer)78  %res8 = call spir_func <3 x float> @_Z33intel_convert_as_bfloat163_float3Dv3_t(<3 x i16> zeroinitializer)79  %res9 = call spir_func <4 x float> @_Z33intel_convert_as_bfloat164_float4Dv4_t(<4 x i16> zeroinitializer)80  %res10 = call spir_func <8 x float> @_Z33intel_convert_as_bfloat168_float8Dv8_t(<8 x i16> zeroinitializer)81  %res11 = call spir_func <16 x float> @_Z35intel_convert_as_bfloat1616_float16Dv16_t(<16 x i16> zeroinitializer)82  ret void83}84 85declare spir_func zeroext i16 @_Z32intel_convert_bfloat16_as_ushortf(float)86declare spir_func <2 x i16> @_Z34intel_convert_bfloat162_as_ushort2Dv2_f(<2 x float>)87declare spir_func <3 x i16> @_Z34intel_convert_bfloat163_as_ushort3Dv3_f(<3 x float>)88declare spir_func <4 x i16> @_Z34intel_convert_bfloat164_as_ushort4Dv4_f(<4 x float>)89declare spir_func <8 x i16> @_Z34intel_convert_bfloat168_as_ushort8Dv8_f(<8 x float>)90declare spir_func <16 x i16> @_Z36intel_convert_bfloat1616_as_ushort16Dv16_f(<16 x float>)91declare spir_func float @_Z31intel_convert_as_bfloat16_floatt(i16 zeroext)92declare spir_func <2 x float> @_Z33intel_convert_as_bfloat162_float2Dv2_t(<2 x i16>)93declare spir_func <3 x float> @_Z33intel_convert_as_bfloat163_float3Dv3_t(<3 x i16>)94declare spir_func <4 x float> @_Z33intel_convert_as_bfloat164_float4Dv4_t(<4 x i16>)95declare spir_func <8 x float> @_Z33intel_convert_as_bfloat168_float8Dv8_t(<8 x i16>)96declare spir_func <16 x float> @_Z35intel_convert_as_bfloat1616_float16Dv16_t(<16 x i16>)97