test: Add case for tint:977
Bug: tint:977 Change-Id: I50778c6e1778717c0ad9b02b2ea25b13c4a3da97 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/58065 Auto-Submit: Ben Clayton <bclayton@google.com> Reviewed-by: Antonio Maiorano <amaiorano@google.com> Commit-Queue: Ben Clayton <bclayton@google.com> Kokoro: Kokoro <noreply+kokoro@google.com>
This commit is contained in:
parent
0bff3fb3b7
commit
1da4073870
|
@ -0,0 +1,153 @@
|
|||
; SPIR-V
|
||||
; Version: 1.0
|
||||
; Generator: Khronos Glslang Reference Front End; 10
|
||||
; Bound: 82
|
||||
; Schema: 0
|
||||
OpCapability Shader
|
||||
%1 = OpExtInstImport "GLSL.std.450"
|
||||
OpMemoryModel Logical GLSL450
|
||||
OpEntryPoint GLCompute %main "main" %gl_GlobalInvocationID
|
||||
OpExecutionMode %main LocalSize 1 1 1
|
||||
OpSource GLSL 450
|
||||
OpName %main "main"
|
||||
OpName %binaryOperation_f1_f1_ "binaryOperation(f1;f1;"
|
||||
OpName %a "a"
|
||||
OpName %b "b"
|
||||
OpName %index "index"
|
||||
OpName %gl_GlobalInvocationID "gl_GlobalInvocationID"
|
||||
OpName %a_0 "a"
|
||||
OpName %ResultMatrix "ResultMatrix"
|
||||
OpMemberName %ResultMatrix 0 "numbers"
|
||||
OpName %resultMatrix "resultMatrix"
|
||||
OpName %param "param"
|
||||
OpName %param_0 "param"
|
||||
OpName %FirstMatrix "FirstMatrix"
|
||||
OpMemberName %FirstMatrix 0 "numbers"
|
||||
OpName %firstMatrix "firstMatrix"
|
||||
OpName %SecondMatrix "SecondMatrix"
|
||||
OpMemberName %SecondMatrix 0 "numbers"
|
||||
OpName %secondMatrix "secondMatrix"
|
||||
OpName %Uniforms "Uniforms"
|
||||
OpMemberName %Uniforms 0 "NAN"
|
||||
OpMemberName %Uniforms 1 "sizeA"
|
||||
OpMemberName %Uniforms 2 "sizeB"
|
||||
OpName %_ ""
|
||||
OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId
|
||||
OpDecorate %_runtimearr_float ArrayStride 4
|
||||
OpMemberDecorate %ResultMatrix 0 Offset 0
|
||||
OpDecorate %ResultMatrix BufferBlock
|
||||
OpDecorate %resultMatrix DescriptorSet 0
|
||||
OpDecorate %resultMatrix Binding 2
|
||||
OpDecorate %_runtimearr_float_0 ArrayStride 4
|
||||
OpMemberDecorate %FirstMatrix 0 NonWritable
|
||||
OpMemberDecorate %FirstMatrix 0 Offset 0
|
||||
OpDecorate %FirstMatrix BufferBlock
|
||||
OpDecorate %firstMatrix DescriptorSet 0
|
||||
OpDecorate %firstMatrix Binding 0
|
||||
OpDecorate %_runtimearr_float_1 ArrayStride 4
|
||||
OpMemberDecorate %SecondMatrix 0 NonWritable
|
||||
OpMemberDecorate %SecondMatrix 0 Offset 0
|
||||
OpDecorate %SecondMatrix BufferBlock
|
||||
OpDecorate %secondMatrix DescriptorSet 0
|
||||
OpDecorate %secondMatrix Binding 1
|
||||
OpMemberDecorate %Uniforms 0 Offset 0
|
||||
OpMemberDecorate %Uniforms 1 Offset 4
|
||||
OpMemberDecorate %Uniforms 2 Offset 8
|
||||
OpDecorate %Uniforms Block
|
||||
OpDecorate %_ DescriptorSet 0
|
||||
OpDecorate %_ Binding 3
|
||||
%void = OpTypeVoid
|
||||
%3 = OpTypeFunction %void
|
||||
%float = OpTypeFloat 32
|
||||
%_ptr_Function_float = OpTypePointer Function %float
|
||||
%8 = OpTypeFunction %float %_ptr_Function_float %_ptr_Function_float
|
||||
%float_0 = OpConstant %float 0
|
||||
%bool = OpTypeBool
|
||||
%float_1 = OpConstant %float 1
|
||||
%float_2 = OpConstant %float 2
|
||||
%int = OpTypeInt 32 1
|
||||
%_ptr_Function_int = OpTypePointer Function %int
|
||||
%uint = OpTypeInt 32 0
|
||||
%v3uint = OpTypeVector %uint 3
|
||||
%_ptr_Input_v3uint = OpTypePointer Input %v3uint
|
||||
%gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input
|
||||
%uint_0 = OpConstant %uint 0
|
||||
%_ptr_Input_uint = OpTypePointer Input %uint
|
||||
%int_n10 = OpConstant %int -10
|
||||
%_runtimearr_float = OpTypeRuntimeArray %float
|
||||
%ResultMatrix = OpTypeStruct %_runtimearr_float
|
||||
%_ptr_Uniform_ResultMatrix = OpTypePointer Uniform %ResultMatrix
|
||||
%resultMatrix = OpVariable %_ptr_Uniform_ResultMatrix Uniform
|
||||
%int_0 = OpConstant %int 0
|
||||
%float_n4 = OpConstant %float -4
|
||||
%float_n3 = OpConstant %float -3
|
||||
%_ptr_Uniform_float = OpTypePointer Uniform %float
|
||||
%_runtimearr_float_0 = OpTypeRuntimeArray %float
|
||||
%FirstMatrix = OpTypeStruct %_runtimearr_float_0
|
||||
%_ptr_Uniform_FirstMatrix = OpTypePointer Uniform %FirstMatrix
|
||||
%firstMatrix = OpVariable %_ptr_Uniform_FirstMatrix Uniform
|
||||
%_runtimearr_float_1 = OpTypeRuntimeArray %float
|
||||
%SecondMatrix = OpTypeStruct %_runtimearr_float_1
|
||||
%_ptr_Uniform_SecondMatrix = OpTypePointer Uniform %SecondMatrix
|
||||
%secondMatrix = OpVariable %_ptr_Uniform_SecondMatrix Uniform
|
||||
%Uniforms = OpTypeStruct %float %int %int
|
||||
%_ptr_Uniform_Uniforms = OpTypePointer Uniform %Uniforms
|
||||
%_ = OpVariable %_ptr_Uniform_Uniforms Uniform
|
||||
%main = OpFunction %void None %3
|
||||
%5 = OpLabel
|
||||
%index = OpVariable %_ptr_Function_int Function
|
||||
%a_0 = OpVariable %_ptr_Function_int Function
|
||||
%param = OpVariable %_ptr_Function_float Function
|
||||
%param_0 = OpVariable %_ptr_Function_float Function
|
||||
%53 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_0
|
||||
%54 = OpLoad %uint %53
|
||||
%55 = OpBitcast %int %54
|
||||
OpStore %index %55
|
||||
OpStore %a_0 %int_n10
|
||||
%63 = OpLoad %int %index
|
||||
OpStore %param %float_n4
|
||||
OpStore %param_0 %float_n3
|
||||
%68 = OpFunctionCall %float %binaryOperation_f1_f1_ %param %param_0
|
||||
%70 = OpAccessChain %_ptr_Uniform_float %resultMatrix %int_0 %63
|
||||
OpStore %70 %68
|
||||
OpReturn
|
||||
OpFunctionEnd
|
||||
%binaryOperation_f1_f1_ = OpFunction %float None %8
|
||||
%a = OpFunctionParameter %_ptr_Function_float
|
||||
%b = OpFunctionParameter %_ptr_Function_float
|
||||
%12 = OpLabel
|
||||
%26 = OpVariable %_ptr_Function_float Function
|
||||
%13 = OpLoad %float %b
|
||||
%16 = OpFOrdEqual %bool %13 %float_0
|
||||
OpSelectionMerge %18 None
|
||||
OpBranchConditional %16 %17 %18
|
||||
%17 = OpLabel
|
||||
OpReturnValue %float_1
|
||||
%18 = OpLabel
|
||||
%21 = OpLoad %float %b
|
||||
%23 = OpFMod %float %21 %float_2
|
||||
%24 = OpExtInst %float %1 Round %23
|
||||
%25 = OpFUnordNotEqual %bool %24 %float_1
|
||||
OpSelectionMerge %28 None
|
||||
OpBranchConditional %25 %27 %33
|
||||
%27 = OpLabel
|
||||
%29 = OpLoad %float %a
|
||||
%30 = OpExtInst %float %1 FAbs %29
|
||||
%31 = OpLoad %float %b
|
||||
%32 = OpExtInst %float %1 Pow %30 %31
|
||||
OpStore %26 %32
|
||||
OpBranch %28
|
||||
%33 = OpLabel
|
||||
%34 = OpLoad %float %a
|
||||
%35 = OpExtInst %float %1 FSign %34
|
||||
%36 = OpLoad %float %a
|
||||
%37 = OpExtInst %float %1 FAbs %36
|
||||
%38 = OpLoad %float %b
|
||||
%39 = OpExtInst %float %1 Pow %37 %38
|
||||
%40 = OpFMul %float %35 %39
|
||||
OpStore %26 %40
|
||||
OpBranch %28
|
||||
%28 = OpLabel
|
||||
%41 = OpLoad %float %26
|
||||
OpReturnValue %41
|
||||
OpFunctionEnd
|
|
@ -0,0 +1,55 @@
|
|||
static uint3 gl_GlobalInvocationID = uint3(0u, 0u, 0u);
|
||||
RWByteAddressBuffer resultMatrix : register(u2, space0);
|
||||
ByteAddressBuffer firstMatrix : register(t0, space0);
|
||||
ByteAddressBuffer secondMatrix : register(t1, space0);
|
||||
cbuffer cbuffer_x_46 : register(b3, space0) {
|
||||
uint4 x_46[1];
|
||||
};
|
||||
|
||||
float binaryOperation_f1_f1_(inout float a, inout float b) {
|
||||
float x_26 = 0.0f;
|
||||
const float x_13 = b;
|
||||
if ((x_13 == 0.0f)) {
|
||||
return 1.0f;
|
||||
}
|
||||
const float x_21 = b;
|
||||
if (!((round((x_21 % 2.0f)) == 1.0f))) {
|
||||
const float x_29 = a;
|
||||
const float x_31 = b;
|
||||
x_26 = pow(abs(x_29), x_31);
|
||||
} else {
|
||||
const float x_34 = a;
|
||||
const float x_36 = a;
|
||||
const float x_38 = b;
|
||||
x_26 = (sign(x_34) * pow(abs(x_36), x_38));
|
||||
}
|
||||
return x_26;
|
||||
}
|
||||
|
||||
void main_1() {
|
||||
int index = 0;
|
||||
int a_1 = 0;
|
||||
float param = 0.0f;
|
||||
float param_1 = 0.0f;
|
||||
const uint x_54 = gl_GlobalInvocationID.x;
|
||||
index = asint(x_54);
|
||||
a_1 = -10;
|
||||
const int x_63 = index;
|
||||
param = -4.0f;
|
||||
param_1 = -3.0f;
|
||||
const float x_68 = binaryOperation_f1_f1_(param, param_1);
|
||||
resultMatrix.Store((4u * uint(x_63)), asuint(x_68));
|
||||
return;
|
||||
}
|
||||
|
||||
struct tint_symbol_1 {
|
||||
uint3 gl_GlobalInvocationID_param : SV_DispatchThreadID;
|
||||
};
|
||||
|
||||
[numthreads(1, 1, 1)]
|
||||
void main(tint_symbol_1 tint_symbol) {
|
||||
const uint3 gl_GlobalInvocationID_param = tint_symbol.gl_GlobalInvocationID_param;
|
||||
gl_GlobalInvocationID = gl_GlobalInvocationID_param;
|
||||
main_1();
|
||||
return;
|
||||
}
|
|
@ -0,0 +1,71 @@
|
|||
SKIP: FAILED
|
||||
|
||||
#include <metal_stdlib>
|
||||
|
||||
using namespace metal;
|
||||
struct ResultMatrix {
|
||||
/* 0x0000 */ float numbers[1];
|
||||
};
|
||||
struct FirstMatrix {
|
||||
/* 0x0000 */ float numbers[1];
|
||||
};
|
||||
struct SecondMatrix {
|
||||
/* 0x0000 */ float numbers[1];
|
||||
};
|
||||
struct Uniforms {
|
||||
/* 0x0000 */ float tint_symbol;
|
||||
/* 0x0004 */ int sizeA;
|
||||
/* 0x0008 */ int sizeB;
|
||||
};
|
||||
|
||||
float binaryOperation_f1_f1_(thread float* const a, thread float* const b) {
|
||||
float x_26 = 0.0f;
|
||||
float const x_13 = *(b);
|
||||
if ((x_13 == 0.0f)) {
|
||||
return 1.0f;
|
||||
}
|
||||
float const x_21 = *(b);
|
||||
if (!((rint((x_21 % 2.0f)) == 1.0f))) {
|
||||
float const x_29 = *(a);
|
||||
float const x_31 = *(b);
|
||||
x_26 = pow(fabs(x_29), x_31);
|
||||
} else {
|
||||
float const x_34 = *(a);
|
||||
float const x_36 = *(a);
|
||||
float const x_38 = *(b);
|
||||
x_26 = (sign(x_34) * pow(fabs(x_36), x_38));
|
||||
}
|
||||
float const x_41 = x_26;
|
||||
return x_41;
|
||||
}
|
||||
|
||||
void main_1(device ResultMatrix& resultMatrix, thread uint3* const tint_symbol_3) {
|
||||
int index = 0;
|
||||
int a_1 = 0;
|
||||
float param = 0.0f;
|
||||
float param_1 = 0.0f;
|
||||
uint const x_54 = (*(tint_symbol_3)).x;
|
||||
index = as_type<int>(x_54);
|
||||
a_1 = -10;
|
||||
int const x_63 = index;
|
||||
param = -4.0f;
|
||||
param_1 = -3.0f;
|
||||
float const x_68 = binaryOperation_f1_f1_(&(param), &(param_1));
|
||||
resultMatrix.numbers[x_63] = x_68;
|
||||
return;
|
||||
}
|
||||
|
||||
kernel void tint_symbol_1(uint3 gl_GlobalInvocationID_param [[thread_position_in_grid]], device ResultMatrix& resultMatrix [[buffer(2)]]) {
|
||||
thread uint3 tint_symbol_4 = 0u;
|
||||
tint_symbol_4 = gl_GlobalInvocationID_param;
|
||||
main_1(resultMatrix, &(tint_symbol_4));
|
||||
return;
|
||||
}
|
||||
|
||||
Compilation failed:
|
||||
|
||||
program_source:26:21: error: invalid operands to binary expression ('const float' and 'float')
|
||||
if (!((rint((x_21 % 2.0f)) == 1.0f))) {
|
||||
~~~~ ^ ~~~~
|
||||
|
||||
|
|
@ -0,0 +1,164 @@
|
|||
; SPIR-V
|
||||
; Version: 1.3
|
||||
; Generator: Google Tint Compiler; 0
|
||||
; Bound: 95
|
||||
; Schema: 0
|
||||
OpCapability Shader
|
||||
%43 = OpExtInstImport "GLSL.std.450"
|
||||
OpMemoryModel Logical GLSL450
|
||||
OpEntryPoint GLCompute %main "main" %tint_symbol
|
||||
OpExecutionMode %main LocalSize 1 1 1
|
||||
OpName %gl_GlobalInvocationID "gl_GlobalInvocationID"
|
||||
OpName %ResultMatrix "ResultMatrix"
|
||||
OpMemberName %ResultMatrix 0 "numbers"
|
||||
OpName %resultMatrix "resultMatrix"
|
||||
OpName %FirstMatrix "FirstMatrix"
|
||||
OpMemberName %FirstMatrix 0 "numbers"
|
||||
OpName %firstMatrix "firstMatrix"
|
||||
OpName %SecondMatrix "SecondMatrix"
|
||||
OpMemberName %SecondMatrix 0 "numbers"
|
||||
OpName %secondMatrix "secondMatrix"
|
||||
OpName %Uniforms "Uniforms"
|
||||
OpMemberName %Uniforms 0 "NAN"
|
||||
OpMemberName %Uniforms 1 "sizeA"
|
||||
OpMemberName %Uniforms 2 "sizeB"
|
||||
OpName %x_46 "x_46"
|
||||
OpName %tint_symbol "tint_symbol"
|
||||
OpName %binaryOperation_f1_f1_ "binaryOperation_f1_f1_"
|
||||
OpName %a "a"
|
||||
OpName %b "b"
|
||||
OpName %x_26 "x_26"
|
||||
OpName %main_1 "main_1"
|
||||
OpName %index "index"
|
||||
OpName %a_1 "a_1"
|
||||
OpName %param "param"
|
||||
OpName %param_1 "param_1"
|
||||
OpName %main "main"
|
||||
OpDecorate %ResultMatrix Block
|
||||
OpMemberDecorate %ResultMatrix 0 Offset 0
|
||||
OpDecorate %_runtimearr_float ArrayStride 4
|
||||
OpDecorate %resultMatrix DescriptorSet 0
|
||||
OpDecorate %resultMatrix Binding 2
|
||||
OpDecorate %FirstMatrix Block
|
||||
OpMemberDecorate %FirstMatrix 0 Offset 0
|
||||
OpDecorate %firstMatrix NonWritable
|
||||
OpDecorate %firstMatrix DescriptorSet 0
|
||||
OpDecorate %firstMatrix Binding 0
|
||||
OpDecorate %SecondMatrix Block
|
||||
OpMemberDecorate %SecondMatrix 0 Offset 0
|
||||
OpDecorate %secondMatrix NonWritable
|
||||
OpDecorate %secondMatrix DescriptorSet 0
|
||||
OpDecorate %secondMatrix Binding 1
|
||||
OpDecorate %Uniforms Block
|
||||
OpMemberDecorate %Uniforms 0 Offset 0
|
||||
OpMemberDecorate %Uniforms 1 Offset 4
|
||||
OpMemberDecorate %Uniforms 2 Offset 8
|
||||
OpDecorate %x_46 NonWritable
|
||||
OpDecorate %x_46 DescriptorSet 0
|
||||
OpDecorate %x_46 Binding 3
|
||||
OpDecorate %tint_symbol BuiltIn GlobalInvocationId
|
||||
%uint = OpTypeInt 32 0
|
||||
%v3uint = OpTypeVector %uint 3
|
||||
%_ptr_Private_v3uint = OpTypePointer Private %v3uint
|
||||
%5 = OpConstantNull %v3uint
|
||||
%gl_GlobalInvocationID = OpVariable %_ptr_Private_v3uint Private %5
|
||||
%float = OpTypeFloat 32
|
||||
%_runtimearr_float = OpTypeRuntimeArray %float
|
||||
%ResultMatrix = OpTypeStruct %_runtimearr_float
|
||||
%_ptr_StorageBuffer_ResultMatrix = OpTypePointer StorageBuffer %ResultMatrix
|
||||
%resultMatrix = OpVariable %_ptr_StorageBuffer_ResultMatrix StorageBuffer
|
||||
%FirstMatrix = OpTypeStruct %_runtimearr_float
|
||||
%_ptr_StorageBuffer_FirstMatrix = OpTypePointer StorageBuffer %FirstMatrix
|
||||
%firstMatrix = OpVariable %_ptr_StorageBuffer_FirstMatrix StorageBuffer
|
||||
%SecondMatrix = OpTypeStruct %_runtimearr_float
|
||||
%_ptr_StorageBuffer_SecondMatrix = OpTypePointer StorageBuffer %SecondMatrix
|
||||
%secondMatrix = OpVariable %_ptr_StorageBuffer_SecondMatrix StorageBuffer
|
||||
%int = OpTypeInt 32 1
|
||||
%Uniforms = OpTypeStruct %float %int %int
|
||||
%_ptr_Uniform_Uniforms = OpTypePointer Uniform %Uniforms
|
||||
%x_46 = OpVariable %_ptr_Uniform_Uniforms Uniform
|
||||
%_ptr_Input_v3uint = OpTypePointer Input %v3uint
|
||||
%tint_symbol = OpVariable %_ptr_Input_v3uint Input
|
||||
%_ptr_Function_float = OpTypePointer Function %float
|
||||
%23 = OpTypeFunction %float %_ptr_Function_float %_ptr_Function_float
|
||||
%30 = OpConstantNull %float
|
||||
%float_0 = OpConstant %float 0
|
||||
%bool = OpTypeBool
|
||||
%float_1 = OpConstant %float 1
|
||||
%float_2 = OpConstant %float 2
|
||||
%void = OpTypeVoid
|
||||
%67 = OpTypeFunction %void
|
||||
%_ptr_Function_int = OpTypePointer Function %int
|
||||
%73 = OpConstantNull %int
|
||||
%uint_0 = OpConstant %uint 0
|
||||
%_ptr_Private_uint = OpTypePointer Private %uint
|
||||
%int_n10 = OpConstant %int -10
|
||||
%float_n4 = OpConstant %float -4
|
||||
%float_n3 = OpConstant %float -3
|
||||
%_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
|
||||
%binaryOperation_f1_f1_ = OpFunction %float None %23
|
||||
%a = OpFunctionParameter %_ptr_Function_float
|
||||
%b = OpFunctionParameter %_ptr_Function_float
|
||||
%28 = OpLabel
|
||||
%x_26 = OpVariable %_ptr_Function_float Function %30
|
||||
%32 = OpLoad %float %b
|
||||
%34 = OpFOrdEqual %bool %32 %float_0
|
||||
OpSelectionMerge %36 None
|
||||
OpBranchConditional %34 %37 %36
|
||||
%37 = OpLabel
|
||||
OpReturnValue %float_1
|
||||
%36 = OpLabel
|
||||
%40 = OpLoad %float %b
|
||||
%45 = OpFMod %float %40 %float_2
|
||||
%42 = OpExtInst %float %43 RoundEven %45
|
||||
%46 = OpFOrdEqual %bool %42 %float_1
|
||||
%41 = OpLogicalNot %bool %46
|
||||
OpSelectionMerge %47 None
|
||||
OpBranchConditional %41 %48 %49
|
||||
%48 = OpLabel
|
||||
%51 = OpLoad %float %a
|
||||
%53 = OpLoad %float %b
|
||||
%55 = OpExtInst %float %43 FAbs %51
|
||||
%54 = OpExtInst %float %43 Pow %55 %53
|
||||
OpStore %x_26 %54
|
||||
OpBranch %47
|
||||
%49 = OpLabel
|
||||
%57 = OpLoad %float %a
|
||||
%59 = OpLoad %float %a
|
||||
%61 = OpLoad %float %b
|
||||
%62 = OpExtInst %float %43 FSign %57
|
||||
%64 = OpExtInst %float %43 FAbs %59
|
||||
%63 = OpExtInst %float %43 Pow %64 %61
|
||||
%65 = OpFMul %float %62 %63
|
||||
OpStore %x_26 %65
|
||||
OpBranch %47
|
||||
%47 = OpLabel
|
||||
%66 = OpLoad %float %x_26
|
||||
OpReturnValue %66
|
||||
OpFunctionEnd
|
||||
%main_1 = OpFunction %void None %67
|
||||
%70 = OpLabel
|
||||
%index = OpVariable %_ptr_Function_int Function %73
|
||||
%a_1 = OpVariable %_ptr_Function_int Function %73
|
||||
%param = OpVariable %_ptr_Function_float Function %30
|
||||
%param_1 = OpVariable %_ptr_Function_float Function %30
|
||||
%79 = OpAccessChain %_ptr_Private_uint %gl_GlobalInvocationID %uint_0
|
||||
%80 = OpLoad %uint %79
|
||||
%81 = OpBitcast %int %80
|
||||
OpStore %index %81
|
||||
OpStore %a_1 %int_n10
|
||||
%83 = OpLoad %int %index
|
||||
OpStore %param %float_n4
|
||||
OpStore %param_1 %float_n3
|
||||
%86 = OpFunctionCall %float %binaryOperation_f1_f1_ %param %param_1
|
||||
%90 = OpAccessChain %_ptr_StorageBuffer_float %resultMatrix %uint_0 %83
|
||||
OpStore %90 %86
|
||||
OpReturn
|
||||
OpFunctionEnd
|
||||
%main = OpFunction %void None %67
|
||||
%92 = OpLabel
|
||||
%93 = OpLoad %v3uint %tint_symbol
|
||||
OpStore %gl_GlobalInvocationID %93
|
||||
%94 = OpFunctionCall %void %main_1
|
||||
OpReturn
|
||||
OpFunctionEnd
|
|
@ -0,0 +1,80 @@
|
|||
type RTArr = [[stride(4)]] array<f32>;
|
||||
|
||||
type RTArr_1 = [[stride(4)]] array<f32>;
|
||||
|
||||
[[block]]
|
||||
struct ResultMatrix {
|
||||
numbers : RTArr_1;
|
||||
};
|
||||
|
||||
type RTArr_2 = [[stride(4)]] array<f32>;
|
||||
|
||||
[[block]]
|
||||
struct FirstMatrix {
|
||||
numbers : RTArr_1;
|
||||
};
|
||||
|
||||
[[block]]
|
||||
struct SecondMatrix {
|
||||
numbers : RTArr_1;
|
||||
};
|
||||
|
||||
[[block]]
|
||||
struct Uniforms {
|
||||
NAN : f32;
|
||||
sizeA : i32;
|
||||
sizeB : i32;
|
||||
};
|
||||
|
||||
var<private> gl_GlobalInvocationID : vec3<u32>;
|
||||
|
||||
[[group(0), binding(2)]] var<storage, read_write> resultMatrix : ResultMatrix;
|
||||
|
||||
[[group(0), binding(0)]] var<storage, read> firstMatrix : FirstMatrix;
|
||||
|
||||
[[group(0), binding(1)]] var<storage, read> secondMatrix : SecondMatrix;
|
||||
|
||||
[[group(0), binding(3)]] var<uniform> x_46 : Uniforms;
|
||||
|
||||
fn binaryOperation_f1_f1_(a : ptr<function, f32>, b : ptr<function, f32>) -> f32 {
|
||||
var x_26 : f32;
|
||||
let x_13 : f32 = *(b);
|
||||
if ((x_13 == 0.0)) {
|
||||
return 1.0;
|
||||
}
|
||||
let x_21 : f32 = *(b);
|
||||
if (!((round((x_21 % 2.0)) == 1.0))) {
|
||||
let x_29 : f32 = *(a);
|
||||
let x_31 : f32 = *(b);
|
||||
x_26 = pow(abs(x_29), x_31);
|
||||
} else {
|
||||
let x_34 : f32 = *(a);
|
||||
let x_36 : f32 = *(a);
|
||||
let x_38 : f32 = *(b);
|
||||
x_26 = (sign(x_34) * pow(abs(x_36), x_38));
|
||||
}
|
||||
let x_41 : f32 = x_26;
|
||||
return x_41;
|
||||
}
|
||||
|
||||
fn main_1() {
|
||||
var index : i32;
|
||||
var a_1 : i32;
|
||||
var param : f32;
|
||||
var param_1 : f32;
|
||||
let x_54 : u32 = gl_GlobalInvocationID.x;
|
||||
index = bitcast<i32>(x_54);
|
||||
a_1 = -10;
|
||||
let x_63 : i32 = index;
|
||||
param = -4.0;
|
||||
param_1 = -3.0;
|
||||
let x_68 : f32 = binaryOperation_f1_f1_(&(param), &(param_1));
|
||||
resultMatrix.numbers[x_63] = x_68;
|
||||
return;
|
||||
}
|
||||
|
||||
[[stage(compute), workgroup_size(1, 1, 1)]]
|
||||
fn main([[builtin(global_invocation_id)]] gl_GlobalInvocationID_param : vec3<u32>) {
|
||||
gl_GlobalInvocationID = gl_GlobalInvocationID_param;
|
||||
main_1();
|
||||
}
|
Loading…
Reference in New Issue