1#!amber 2# Test OpSDiv instruction 3 4SHADER compute test SPIRV-ASM 5 OpCapability Shader 6 7 OpMemoryModel Logical GLSL450 8 OpEntryPoint GLCompute %main "main" %gl_GlobalInvocationId 9 OpExecutionMode %main LocalSize 1 1 1 10 11 OpDecorate %gl_GlobalInvocationId BuiltIn GlobalInvocationId 12 OpDecorate %ra_uint ArrayStride 4 13 OpDecorate %struct_uint3 BufferBlock 14 OpMemberDecorate %struct_uint3 0 Offset 0 15 OpDecorate %input0 DescriptorSet 0 16 OpDecorate %input0 Binding 0 17 OpDecorate %input1 DescriptorSet 0 18 OpDecorate %input1 Binding 1 19 OpDecorate %output DescriptorSet 0 20 OpDecorate %output Binding 2 21 22 %uint = OpTypeInt 32 0 23 %ptr_uint = OpTypePointer Uniform %uint 24 %ptr_input_uint = OpTypePointer Input %uint 25 %uint3 = OpTypeVector %uint 3 26 %ptr_input_uint3 = OpTypePointer Input %uint3 27 %void = OpTypeVoid 28 %voidFn = OpTypeFunction %void 29 30 %uint_0 = OpConstant %uint 0 31 %uint_1 = OpConstant %uint 1 32 %ra_uint = OpTypeRuntimeArray %uint 33 %struct_uint3 = OpTypeStruct %ra_uint 34 %ptr_struct_uint3 = OpTypePointer Uniform %struct_uint3 35 36%gl_GlobalInvocationId = OpVariable %ptr_input_uint3 Input 37 %input0 = OpVariable %ptr_struct_uint3 Uniform 38 %input1 = OpVariable %ptr_struct_uint3 Uniform 39 40 %output = OpVariable %ptr_struct_uint3 Uniform 41 %main = OpFunction %void None %voidFn 42 %mainStart = OpLabel 43 %index_ptr = OpAccessChain %ptr_input_uint %gl_GlobalInvocationId %uint_0 44 %index = OpLoad %uint %index_ptr 45 %in_ptr0 = OpAccessChain %ptr_uint %input0 %uint_0 %index 46 %invalue0 = OpLoad %uint %in_ptr0 47 %in_ptr1 = OpAccessChain %ptr_uint %input1 %uint_0 %index 48 %invalue1 = OpLoad %uint %in_ptr1 49 50 %outvalue = OpSDiv %uint %invalue0 %invalue1 51 %out_ptr = OpAccessChain %ptr_uint %output %uint_0 %index 52 OpStore %out_ptr %outvalue 53 54 OpReturn 55 OpFunctionEnd 56END 57BUFFER data0 DATA_TYPE int32 DATA 58 0 -2 3 4 -5 59END 60 61BUFFER data1 DATA_TYPE int32 DATA 62 1 -1 -1 1 1 63END 64 65BUFFER data2 DATA_TYPE int32 DATA 66 8 8 8 8 8 67END 68 69BUFFER expected0 DATA_TYPE int32 DATA 70 0 2 -3 4 -5 71END 72 73PIPELINE compute compute_pipeline 74 ATTACH test 75 BIND BUFFER data0 AS storage DESCRIPTOR_SET 0 BINDING 0 76 BIND BUFFER data1 AS storage DESCRIPTOR_SET 0 BINDING 1 77 BIND BUFFER data2 AS storage DESCRIPTOR_SET 0 BINDING 2 78END 79 80RUN compute_pipeline 5 1 1 81 82EXPECT data2 EQ_BUFFER expected0 83