brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.1 KiB · 056673f Raw
127 lines · plain
1 ; RUN: llc -O0 -verify-machineinstrs -mtriple=spirv-unknown-unknown %s -o - | FileCheck %s2 3; CHECK-DAG: %[[#float_64:]] = OpTypeFloat 644; CHECK-DAG: %[[#float_32:]] = OpTypeFloat 325; CHECK-DAG: %[[#float_16:]] = OpTypeFloat 166; CHECK-DAG: %[[#vec2_float_16:]] = OpTypeVector %[[#float_16]] 27; CHECK-DAG: %[[#vec2_float_32:]] = OpTypeVector %[[#float_32]] 28; CHECK-DAG: %[[#vec2_float_64:]] = OpTypeVector %[[#float_64]] 29; CHECK-DAG: %[[#vec3_float_16:]] = OpTypeVector %[[#float_16]] 310; CHECK-DAG: %[[#vec3_float_32:]] = OpTypeVector %[[#float_32]] 311; CHECK-DAG: %[[#vec3_float_64:]] = OpTypeVector %[[#float_64]] 312; CHECK-DAG: %[[#vec4_float_16:]] = OpTypeVector %[[#float_16]] 413; CHECK-DAG: %[[#vec4_float_32:]] = OpTypeVector %[[#float_32]] 414; CHECK-DAG: %[[#vec4_float_64:]] = OpTypeVector %[[#float_64]] 415; CHECK-DAG: %[[#const_f64_1:]] = OpConstant %[[#float_64]] 116; CHECK-DAG: %[[#const_f32_1:]] = OpConstant %[[#float_32]] 117; CHECK-DAG: %[[#const_f16_1:]] = OpConstant %[[#float_16]] 118 19; CHECK-DAG: %[[#vec2_const_ones_f16:]] = OpConstantComposite %[[#vec2_float_16]] %[[#const_f16_1]] %[[#const_f16_1]]20; CHECK-DAG: %[[#vec3_const_ones_f16:]] = OpConstantComposite %[[#vec3_float_16]] %[[#const_f16_1]] %[[#const_f16_1]] %[[#const_f16_1]]21; CHECK-DAG: %[[#vec4_const_ones_f16:]] = OpConstantComposite %[[#vec4_float_16]] %[[#const_f16_1]] %[[#const_f16_1]] %[[#const_f16_1]] %[[#const_f16_1]]22 23; CHECK-DAG: %[[#vec2_const_ones_f32:]] = OpConstantComposite %[[#vec2_float_32]] %[[#const_f32_1]] %[[#const_f32_1]]24; CHECK-DAG: %[[#vec3_const_ones_f32:]] = OpConstantComposite %[[#vec3_float_32]] %[[#const_f32_1]] %[[#const_f32_1]] %[[#const_f32_1]]25; CHECK-DAG: %[[#vec4_const_ones_f32:]] = OpConstantComposite %[[#vec4_float_32]] %[[#const_f32_1]] %[[#const_f32_1]] %[[#const_f32_1]] %[[#const_f32_1]]26 27; CHECK-DAG: %[[#vec2_const_ones_f64:]] = OpConstantComposite %[[#vec2_float_64]] %[[#const_f64_1]] %[[#const_f64_1]]28; CHECK-DAG: %[[#vec3_const_ones_f64:]] = OpConstantComposite %[[#vec3_float_64]] %[[#const_f64_1]] %[[#const_f64_1]] %[[#const_f64_1]]29; CHECK-DAG: %[[#vec4_const_ones_f64:]] = OpConstantComposite %[[#vec4_float_64]] %[[#const_f64_1]] %[[#const_f64_1]] %[[#const_f64_1]] %[[#const_f64_1]]30 31 32define spir_func noundef half @test_rcp_half(half noundef %p0) #0 {33entry:34  ; CHECK: %[[#arg0:]] = OpFunctionParameter %[[#float_16]]35  ; CHECK: OpFDiv %[[#float_16]] %[[#const_f16_1]] %[[#arg0]]36  %hlsl.rcp = fdiv half 0xH3C00, %p037  ret half %hlsl.rcp38}39 40define spir_func noundef <2 x half> @test_rcp_half2(<2 x half> noundef %p0) #0 {41entry:42  ; CHECK: %[[#arg0:]] = OpFunctionParameter %[[#vec2_float_16]]43  ; CHECK: OpFDiv %[[#vec2_float_16]] %[[#vec2_const_ones_f16]] %[[#arg0]]44  %hlsl.rcp = fdiv <2 x half> <half 0xH3C00, half 0xH3C00>, %p045  ret <2 x half> %hlsl.rcp46}47 48define spir_func noundef <3 x half> @test_rcp_half3(<3 x half> noundef %p0) #0 {49entry:50  ; CHECK: %[[#arg0:]] = OpFunctionParameter %[[#vec3_float_16]]51  ; CHECK: OpFDiv %[[#vec3_float_16]] %[[#vec3_const_ones_f16]] %[[#arg0]]52  %hlsl.rcp = fdiv <3 x half> <half 0xH3C00, half 0xH3C00, half 0xH3C00>, %p053  ret <3 x half> %hlsl.rcp54}55 56define spir_func noundef <4 x half> @test_rcp_half4(<4 x half> noundef %p0) #0 {57entry:58  ; CHECK: %[[#arg0:]] = OpFunctionParameter %[[#vec4_float_16]]59  ; CHECK: OpFDiv %[[#vec4_float_16]] %[[#vec4_const_ones_f16]] %[[#arg0]]60  %hlsl.rcp = fdiv <4 x half> <half 0xH3C00, half 0xH3C00, half 0xH3C00, half 0xH3C00>, %p061  ret <4 x half> %hlsl.rcp62}63 64define spir_func noundef float @test_rcp_float(float noundef %p0) #0 {65entry:66  ; CHECK: %[[#arg0:]] = OpFunctionParameter %[[#float_32]]67  ; CHECK: OpFDiv %[[#float_32]] %[[#const_f32_1]] %[[#arg0]]68  %hlsl.rcp = fdiv float 1.000000e+00, %p069  ret float %hlsl.rcp70}71 72define spir_func noundef <2 x float> @test_rcp_float2(<2 x float> noundef %p0) #0 {73entry:74  ; CHECK: %[[#arg0:]] = OpFunctionParameter %[[#vec2_float_32]]75  ; CHECK: OpFDiv %[[#vec2_float_32]] %[[#vec2_const_ones_f32]] %[[#arg0]]76  %hlsl.rcp = fdiv <2 x float> <float 1.000000e+00, float 1.000000e+00>, %p077  ret <2 x float> %hlsl.rcp78}79 80define spir_func noundef <3 x float> @test_rcp_float3(<3 x float> noundef %p0) #0 {81entry:82  ; CHECK: %[[#arg0:]] = OpFunctionParameter %[[#vec3_float_32]]83  ; CHECK: OpFDiv %[[#vec3_float_32]] %[[#vec3_const_ones_f32]] %[[#arg0]]84  %hlsl.rcp = fdiv <3 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, %p085  ret <3 x float> %hlsl.rcp86}87 88define spir_func noundef <4 x float> @test_rcp_float4(<4 x float> noundef %p0) #0 {89entry:90  ; CHECK: %[[#arg0:]] = OpFunctionParameter %[[#vec4_float_32]]91  ; CHECK: OpFDiv %[[#vec4_float_32]] %[[#vec4_const_ones_f32]] %[[#arg0]]92  %hlsl.rcp = fdiv <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, %p093  ret <4 x float> %hlsl.rcp94}95 96define spir_func noundef double @test_rcp_double(double noundef %p0) #0 {97entry:98  ; CHECK: %[[#arg0:]] = OpFunctionParameter %[[#float_64]]99  ; CHECK: OpFDiv %[[#float_64]] %[[#const_f64_1]] %[[#arg0]]100  %hlsl.rcp = fdiv double 1.000000e+00, %p0101  ret double %hlsl.rcp102}103 104define spir_func noundef <2 x double> @test_rcp_double2(<2 x double> noundef %p0) #0 {105entry:106  ; CHECK: %[[#arg0:]] = OpFunctionParameter %[[#vec2_float_64:]]107  ; CHECK: OpFDiv %[[#vec2_float_64]] %[[#vec2_const_ones_f64]] %[[#arg0]]108  %hlsl.rcp = fdiv <2 x double> <double 1.000000e+00, double 1.000000e+00>, %p0109  ret <2 x double> %hlsl.rcp110}111 112define spir_func noundef <3 x double> @test_rcp_double3(<3 x double> noundef %p0) #0 {113entry:114  ; CHECK: %[[#arg0:]] = OpFunctionParameter %[[#vec3_float_64:]]115  ; CHECK: OpFDiv %[[#vec3_float_64]] %[[#vec3_const_ones_f64]] %[[#arg0]]116  %hlsl.rcp = fdiv <3 x double> <double 1.000000e+00, double 1.000000e+00, double 1.000000e+00>, %p0117  ret <3 x double> %hlsl.rcp118}119 120define spir_func noundef <4 x double> @test_rcp_double4(<4 x double> noundef %p0) #0 {121entry:122  ; CHECK: %[[#arg0:]] = OpFunctionParameter %[[#vec4_float_64]]123  ; CHECK: OpFDiv %[[#vec4_float_64]] %[[#vec4_const_ones_f64]] %[[#arg0]]124  %hlsl.rcp = fdiv <4 x double> <double 1.000000e+00, double 1.000000e+00, double 1.000000e+00, double 1.000000e+00>, %p0125  ret <4 x double> %hlsl.rcp126}127