|
@@ -1,4 +1,4 @@
|
|
|
-; RUN: %dxil2spv
|
|
|
+; RUN: %dxil2spv | %FileCheck %s
|
|
|
;
|
|
|
; Input signature:
|
|
|
;
|
|
@@ -82,94 +82,93 @@ attributes #2 = { nounwind }
|
|
|
!10 = !{i32 0, i64 16, i32 4, !11}
|
|
|
!11 = !{i32 1, i32 1, i32 1}
|
|
|
|
|
|
-; CHECK-WHOLE-SPIR-V:
|
|
|
-; ; SPIR-V
|
|
|
-; ; Version: 1.0
|
|
|
-; ; Generator: Google spiregg; 0
|
|
|
-; ; Bound: 59
|
|
|
-; ; Schema: 0
|
|
|
-; OpCapability Shader
|
|
|
-; OpMemoryModel Logical GLSL450
|
|
|
-; OpEntryPoint GLCompute %main "main" %gl_GlobalInvocationID
|
|
|
-; OpExecutionMode %main LocalSize 1 1 1
|
|
|
-; OpName %type_ByteAddressBuffer "type.ByteAddressBuffer"
|
|
|
-; OpName %type_RWByteAddressBuffer "type.RWByteAddressBuffer"
|
|
|
-; OpName %main "main"
|
|
|
-; OpName %dx_types_ResRet_i32 "dx.types.ResRet.i32"
|
|
|
-; OpDecorate %3 DescriptorSet 0
|
|
|
-; OpDecorate %3 Binding 0
|
|
|
-; OpDecorate %4 DescriptorSet 0
|
|
|
-; OpDecorate %4 Binding 1
|
|
|
-; OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId
|
|
|
-; OpDecorate %_runtimearr_uint ArrayStride 4
|
|
|
-; OpMemberDecorate %type_ByteAddressBuffer 0 Offset 0
|
|
|
-; OpMemberDecorate %type_ByteAddressBuffer 0 NonWritable
|
|
|
-; OpDecorate %type_ByteAddressBuffer BufferBlock
|
|
|
-; OpMemberDecorate %type_RWByteAddressBuffer 0 Offset 0
|
|
|
-; OpDecorate %type_RWByteAddressBuffer BufferBlock
|
|
|
-; %uint = OpTypeInt 32 0
|
|
|
-; %uint_0 = OpConstant %uint 0
|
|
|
-; %uint_2 = OpConstant %uint 2
|
|
|
-; %uint_1 = OpConstant %uint 1
|
|
|
-; %uint_3 = OpConstant %uint 3
|
|
|
-; %uint_4 = OpConstant %uint 4
|
|
|
-; %_runtimearr_uint = OpTypeRuntimeArray %uint
|
|
|
-; %type_ByteAddressBuffer = OpTypeStruct %_runtimearr_uint
|
|
|
-; %_ptr_Uniform_type_ByteAddressBuffer = OpTypePointer Uniform %type_ByteAddressBuffer
|
|
|
-; %type_RWByteAddressBuffer = OpTypeStruct %_runtimearr_uint
|
|
|
-; %_ptr_Uniform_type_RWByteAddressBuffer = OpTypePointer Uniform %type_RWByteAddressBuffer
|
|
|
-; %v3uint = OpTypeVector %uint 3
|
|
|
-; %_ptr_Input_v3uint = OpTypePointer Input %v3uint
|
|
|
-; %void = OpTypeVoid
|
|
|
-; %19 = OpTypeFunction %void
|
|
|
-; %int = OpTypeInt 32 1
|
|
|
-; %dx_types_ResRet_i32 = OpTypeStruct %int %int %int %int %int
|
|
|
-; %_ptr_Function_dx_types_ResRet_i32 = OpTypePointer Function %dx_types_ResRet_i32
|
|
|
-; %_ptr_Input_uint = OpTypePointer Input %uint
|
|
|
-; %_ptr_Uniform_uint = OpTypePointer Uniform %uint
|
|
|
-; %_ptr_Function_int = OpTypePointer Function %int
|
|
|
-; %3 = OpVariable %_ptr_Uniform_type_ByteAddressBuffer Uniform
|
|
|
-; %4 = OpVariable %_ptr_Uniform_type_RWByteAddressBuffer Uniform
|
|
|
-; %gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input
|
|
|
-; %main = OpFunction %void None %19
|
|
|
-; %20 = OpLabel
|
|
|
-; %24 = OpVariable %_ptr_Function_dx_types_ResRet_i32 Function
|
|
|
-; %26 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_0
|
|
|
-; %27 = OpLoad %uint %26
|
|
|
-; %28 = OpShiftLeftLogical %uint %27 %uint_2
|
|
|
-; %29 = OpIAdd %uint %28 %uint_0
|
|
|
-; %31 = OpAccessChain %_ptr_Uniform_uint %3 %uint_0 %29
|
|
|
-; %32 = OpLoad %uint %31
|
|
|
-; %34 = OpAccessChain %_ptr_Function_int %24 %uint_0
|
|
|
-; %35 = OpBitcast %int %32
|
|
|
-; OpStore %34 %35
|
|
|
-; %36 = OpIAdd %uint %28 %uint_1
|
|
|
-; %37 = OpAccessChain %_ptr_Uniform_uint %3 %uint_0 %36
|
|
|
-; %38 = OpLoad %uint %37
|
|
|
-; %39 = OpAccessChain %_ptr_Function_int %24 %uint_1
|
|
|
-; %40 = OpBitcast %int %38
|
|
|
-; OpStore %39 %40
|
|
|
-; %41 = OpIAdd %uint %28 %uint_2
|
|
|
-; %42 = OpAccessChain %_ptr_Uniform_uint %3 %uint_0 %41
|
|
|
-; %43 = OpLoad %uint %42
|
|
|
-; %44 = OpAccessChain %_ptr_Function_int %24 %uint_2
|
|
|
-; %45 = OpBitcast %int %43
|
|
|
-; OpStore %44 %45
|
|
|
-; %46 = OpIAdd %uint %28 %uint_3
|
|
|
-; %47 = OpAccessChain %_ptr_Uniform_uint %3 %uint_0 %46
|
|
|
-; %48 = OpLoad %uint %47
|
|
|
-; %49 = OpAccessChain %_ptr_Function_int %24 %uint_3
|
|
|
-; %50 = OpBitcast %int %48
|
|
|
-; OpStore %49 %50
|
|
|
-; %51 = OpIAdd %uint %28 %uint_4
|
|
|
-; %52 = OpAccessChain %_ptr_Uniform_uint %3 %uint_0 %51
|
|
|
-; %53 = OpLoad %uint %52
|
|
|
-; %54 = OpAccessChain %_ptr_Function_int %24 %uint_4
|
|
|
-; %55 = OpBitcast %int %53
|
|
|
-; OpStore %54 %55
|
|
|
-; %56 = OpAccessChain %_ptr_Function_int %24 %uint_0
|
|
|
-; %57 = OpAccessChain %_ptr_Uniform_uint %4 %uint_0 %28
|
|
|
-; %58 = OpBitcast %uint %56
|
|
|
-; OpStore %57 %58
|
|
|
-; OpReturn
|
|
|
-; OpFunctionEnd
|
|
|
+; CHECK: ; SPIR-V
|
|
|
+; CHECK-NEXT: ; Version: 1.0
|
|
|
+; CHECK-NEXT: ; Generator: Google spiregg; 0
|
|
|
+; CHECK-NEXT: ; Bound: 59
|
|
|
+; CHECK-NEXT: ; Schema: 0
|
|
|
+; CHECK-NEXT: OpCapability Shader
|
|
|
+; CHECK-NEXT: OpMemoryModel Logical GLSL450
|
|
|
+; CHECK-NEXT: OpEntryPoint GLCompute %main "main" %gl_GlobalInvocationID
|
|
|
+; CHECK-NEXT: OpExecutionMode %main LocalSize 1 1 1
|
|
|
+; CHECK-NEXT: OpName %type_ByteAddressBuffer "type.ByteAddressBuffer"
|
|
|
+; CHECK-NEXT: OpName %type_RWByteAddressBuffer "type.RWByteAddressBuffer"
|
|
|
+; CHECK-NEXT: OpName %main "main"
|
|
|
+; CHECK-NEXT: OpName %dx_types_ResRet_i32 "dx.types.ResRet.i32"
|
|
|
+; CHECK-NEXT: OpDecorate %3 DescriptorSet 0
|
|
|
+; CHECK-NEXT: OpDecorate %3 Binding 0
|
|
|
+; CHECK-NEXT: OpDecorate %4 DescriptorSet 0
|
|
|
+; CHECK-NEXT: OpDecorate %4 Binding 1
|
|
|
+; CHECK-NEXT: OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId
|
|
|
+; CHECK-NEXT: OpDecorate %_runtimearr_uint ArrayStride 4
|
|
|
+; CHECK-NEXT: OpMemberDecorate %type_ByteAddressBuffer 0 Offset 0
|
|
|
+; CHECK-NEXT: OpMemberDecorate %type_ByteAddressBuffer 0 NonWritable
|
|
|
+; CHECK-NEXT: OpDecorate %type_ByteAddressBuffer BufferBlock
|
|
|
+; CHECK-NEXT: OpMemberDecorate %type_RWByteAddressBuffer 0 Offset 0
|
|
|
+; CHECK-NEXT: OpDecorate %type_RWByteAddressBuffer BufferBlock
|
|
|
+; CHECK-NEXT: %uint = OpTypeInt 32 0
|
|
|
+; CHECK-NEXT: %uint_0 = OpConstant %uint 0
|
|
|
+; CHECK-NEXT: %uint_2 = OpConstant %uint 2
|
|
|
+; CHECK-NEXT: %uint_1 = OpConstant %uint 1
|
|
|
+; CHECK-NEXT: %uint_3 = OpConstant %uint 3
|
|
|
+; CHECK-NEXT: %uint_4 = OpConstant %uint 4
|
|
|
+; CHECK-NEXT: %_runtimearr_uint = OpTypeRuntimeArray %uint
|
|
|
+; CHECK-NEXT: %type_ByteAddressBuffer = OpTypeStruct %_runtimearr_uint
|
|
|
+; CHECK-NEXT: %_ptr_Uniform_type_ByteAddressBuffer = OpTypePointer Uniform %type_ByteAddressBuffer
|
|
|
+; CHECK-NEXT: %type_RWByteAddressBuffer = OpTypeStruct %_runtimearr_uint
|
|
|
+; CHECK-NEXT: %_ptr_Uniform_type_RWByteAddressBuffer = OpTypePointer Uniform %type_RWByteAddressBuffer
|
|
|
+; CHECK-NEXT: %v3uint = OpTypeVector %uint 3
|
|
|
+; CHECK-NEXT: %_ptr_Input_v3uint = OpTypePointer Input %v3uint
|
|
|
+; CHECK-NEXT: %void = OpTypeVoid
|
|
|
+; CHECK-NEXT: %19 = OpTypeFunction %void
|
|
|
+; CHECK-NEXT: %int = OpTypeInt 32 1
|
|
|
+; CHECK-NEXT: %dx_types_ResRet_i32 = OpTypeStruct %int %int %int %int %int
|
|
|
+; CHECK-NEXT: %_ptr_Function_dx_types_ResRet_i32 = OpTypePointer Function %dx_types_ResRet_i32
|
|
|
+; CHECK-NEXT: %_ptr_Input_uint = OpTypePointer Input %uint
|
|
|
+; CHECK-NEXT: %_ptr_Uniform_uint = OpTypePointer Uniform %uint
|
|
|
+; CHECK-NEXT: %_ptr_Function_int = OpTypePointer Function %int
|
|
|
+; CHECK-NEXT: %3 = OpVariable %_ptr_Uniform_type_ByteAddressBuffer Uniform
|
|
|
+; CHECK-NEXT: %4 = OpVariable %_ptr_Uniform_type_RWByteAddressBuffer Uniform
|
|
|
+; CHECK-NEXT: %gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input
|
|
|
+; CHECK-NEXT: %main = OpFunction %void None %19
|
|
|
+; CHECK-NEXT: %20 = OpLabel
|
|
|
+; CHECK-NEXT: %24 = OpVariable %_ptr_Function_dx_types_ResRet_i32 Function
|
|
|
+; CHECK-NEXT: %26 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_0
|
|
|
+; CHECK-NEXT: %27 = OpLoad %uint %26
|
|
|
+; CHECK-NEXT: %28 = OpShiftLeftLogical %uint %27 %uint_2
|
|
|
+; CHECK-NEXT: %29 = OpIAdd %uint %28 %uint_0
|
|
|
+; CHECK-NEXT: %31 = OpAccessChain %_ptr_Uniform_uint %3 %uint_0 %29
|
|
|
+; CHECK-NEXT: %32 = OpLoad %uint %31
|
|
|
+; CHECK-NEXT: %34 = OpAccessChain %_ptr_Function_int %24 %uint_0
|
|
|
+; CHECK-NEXT: %35 = OpBitcast %int %32
|
|
|
+; CHECK-NEXT: OpStore %34 %35
|
|
|
+; CHECK-NEXT: %36 = OpIAdd %uint %28 %uint_1
|
|
|
+; CHECK-NEXT: %37 = OpAccessChain %_ptr_Uniform_uint %3 %uint_0 %36
|
|
|
+; CHECK-NEXT: %38 = OpLoad %uint %37
|
|
|
+; CHECK-NEXT: %39 = OpAccessChain %_ptr_Function_int %24 %uint_1
|
|
|
+; CHECK-NEXT: %40 = OpBitcast %int %38
|
|
|
+; CHECK-NEXT: OpStore %39 %40
|
|
|
+; CHECK-NEXT: %41 = OpIAdd %uint %28 %uint_2
|
|
|
+; CHECK-NEXT: %42 = OpAccessChain %_ptr_Uniform_uint %3 %uint_0 %41
|
|
|
+; CHECK-NEXT: %43 = OpLoad %uint %42
|
|
|
+; CHECK-NEXT: %44 = OpAccessChain %_ptr_Function_int %24 %uint_2
|
|
|
+; CHECK-NEXT: %45 = OpBitcast %int %43
|
|
|
+; CHECK-NEXT: OpStore %44 %45
|
|
|
+; CHECK-NEXT: %46 = OpIAdd %uint %28 %uint_3
|
|
|
+; CHECK-NEXT: %47 = OpAccessChain %_ptr_Uniform_uint %3 %uint_0 %46
|
|
|
+; CHECK-NEXT: %48 = OpLoad %uint %47
|
|
|
+; CHECK-NEXT: %49 = OpAccessChain %_ptr_Function_int %24 %uint_3
|
|
|
+; CHECK-NEXT: %50 = OpBitcast %int %48
|
|
|
+; CHECK-NEXT: OpStore %49 %50
|
|
|
+; CHECK-NEXT: %51 = OpIAdd %uint %28 %uint_4
|
|
|
+; CHECK-NEXT: %52 = OpAccessChain %_ptr_Uniform_uint %3 %uint_0 %51
|
|
|
+; CHECK-NEXT: %53 = OpLoad %uint %52
|
|
|
+; CHECK-NEXT: %54 = OpAccessChain %_ptr_Function_int %24 %uint_4
|
|
|
+; CHECK-NEXT: %55 = OpBitcast %int %53
|
|
|
+; CHECK-NEXT: OpStore %54 %55
|
|
|
+; CHECK-NEXT: %56 = OpAccessChain %_ptr_Function_int %24 %uint_0
|
|
|
+; CHECK-NEXT: %57 = OpAccessChain %_ptr_Uniform_uint %4 %uint_0 %28
|
|
|
+; CHECK-NEXT: %58 = OpBitcast %uint %56
|
|
|
+; CHECK-NEXT: OpStore %57 %58
|
|
|
+; CHECK-NEXT: OpReturn
|
|
|
+; CHECK-NEXT: OpFunctionEnd
|