Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions include/dxc/Test/DxcTestUtils.h
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,10 @@ class FileRunCommandPart {
FileRunCommandResult RunTee(const FileRunCommandResult *Prior);
FileRunCommandResult RunXFail(const FileRunCommandResult *Prior);
FileRunCommandResult RunDxilVer(dxc::DxcDllSupport& DllSupport, const FileRunCommandResult* Prior);
#ifdef ENABLE_DXIL2SPV
FileRunCommandResult RunDxil2Spv(dxc::DxcDllSupport &DllSupport,
const FileRunCommandResult *Prior);
#endif
FileRunCommandResult RunDxcHashTest(dxc::DxcDllSupport &DllSupport);
FileRunCommandResult RunFromPath(const std::string &path, const FileRunCommandResult *Prior);
FileRunCommandResult RunFileCompareText(const FileRunCommandResult *Prior);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,18 +26,19 @@ namespace hlsl {
namespace testOptions {

/// \brief Command line option that specifies the path to the directory that
/// contains files that have the HLSL source code (used for the CodeGen test flow).
/// contains files that have the HLSL source code (used for the CodeGen test
/// flow).
#define ARG_DECLARE(argname) extern std::string argname;

#define ARG_LIST(ARGOP)\
ARGOP(HlslDataDir)\
ARGOP(TestName)\
ARGOP(DXBC)\
ARGOP(SaveImages)\
ARGOP(ExperimentalShaders)\
ARGOP(DebugLayer)\
ARGOP(SuitePath)\
ARGOP(InputPath)
#define ARG_LIST(ARGOP) \
ARGOP(HlslDataDir) \
ARGOP(TestName) \
ARGOP(DXBC) \
ARGOP(SaveImages) \
ARGOP(ExperimentalShaders) \
ARGOP(DebugLayer) \
ARGOP(SuitePath) \
ARGOP(InputPath)

ARG_LIST(ARG_DECLARE)

Expand Down
183 changes: 91 additions & 92 deletions tools/clang/test/Dxil2Spv/passthru-cs.ll
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
; RUN: %dxil2spv
; RUN: %dxil2spv | %FileCheck %s
Comment thread
sudonatalie marked this conversation as resolved.
;
; Input signature:
;
Expand Down Expand Up @@ -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
Comment thread
kuhar marked this conversation as resolved.
; 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
105 changes: 52 additions & 53 deletions tools/clang/test/Dxil2Spv/passthru-ps.ll
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
; RUN: %dxil2spv
; RUN: %dxil2spv | %FileCheck %s
;
; Input signature:
;
Expand Down Expand Up @@ -101,55 +101,54 @@ attributes #1 = { nounwind }
!12 = !{!13}
!13 = !{i32 0, !"SV_Target", i8 9, i8 16, !9, i8 0, i32 1, i8 4, i32 0, i8 0, !11}

; CHECK-WHOLE-SPIR-V:
; ; SPIR-V
; ; Version: 1.0
; ; Generator: Google spiregg; 0
; ; Bound: 31
; ; Schema: 0
; OpCapability Shader
; OpMemoryModel Logical GLSL450
; OpEntryPoint Fragment %PSMain "PSMain" %gl_Position %COLOR %SV_Target
; OpExecutionMode %PSMain OriginUpperLeft
; OpName %COLOR "COLOR"
; OpName %SV_Target "SV_Target"
; OpName %PSMain "PSMain"
; OpDecorate %gl_Position BuiltIn Position
; OpDecorate %COLOR Location 1
; OpDecorate %SV_Target Location 0
; %uint = OpTypeInt 32 0
; %uint_0 = OpConstant %uint 0
; %uint_1 = OpConstant %uint 1
; %uint_2 = OpConstant %uint 2
; %uint_3 = OpConstant %uint 3
; %float = OpTypeFloat 32
; %v4float = OpTypeVector %float 4
; %_ptr_Input_v4float = OpTypePointer Input %v4float
; %_ptr_Output_v4float = OpTypePointer Output %v4float
; %void = OpTypeVoid
; %15 = OpTypeFunction %void
; %_ptr_Input_float = OpTypePointer Input %float
; %_ptr_Output_float = OpTypePointer Output %float
; %gl_Position = OpVariable %_ptr_Input_v4float Input
; %COLOR = OpVariable %_ptr_Input_v4float Input
; %SV_Target = OpVariable %_ptr_Output_v4float Output
; %PSMain = OpFunction %void None %15
; %16 = OpLabel
; %18 = OpAccessChain %_ptr_Input_float %COLOR %uint_0
; %19 = OpLoad %float %18
; %20 = OpAccessChain %_ptr_Input_float %COLOR %uint_1
; %21 = OpLoad %float %20
; %22 = OpAccessChain %_ptr_Input_float %COLOR %uint_2
; %23 = OpLoad %float %22
; %24 = OpAccessChain %_ptr_Input_float %COLOR %uint_3
; %25 = OpLoad %float %24
; %27 = OpAccessChain %_ptr_Output_float %SV_Target %uint_0
; OpStore %27 %19
; %28 = OpAccessChain %_ptr_Output_float %SV_Target %uint_1
; OpStore %28 %21
; %29 = OpAccessChain %_ptr_Output_float %SV_Target %uint_2
; OpStore %29 %23
; %30 = OpAccessChain %_ptr_Output_float %SV_Target %uint_3
; OpStore %30 %25
; OpReturn
; OpFunctionEnd
; CHECK: ; SPIR-V
; CHECK-NEXT: ; Version: 1.0
; CHECK-NEXT: ; Generator: Google spiregg; 0
; CHECK-NEXT: ; Bound: 31
; CHECK-NEXT: ; Schema: 0
; CHECK-NEXT: OpCapability Shader
; CHECK-NEXT: OpMemoryModel Logical GLSL450
; CHECK-NEXT: OpEntryPoint Fragment %PSMain "PSMain" %gl_Position %COLOR %SV_Target
; CHECK-NEXT: OpExecutionMode %PSMain OriginUpperLeft
; CHECK-NEXT: OpName %COLOR "COLOR"
; CHECK-NEXT: OpName %SV_Target "SV_Target"
; CHECK-NEXT: OpName %PSMain "PSMain"
; CHECK-NEXT: OpDecorate %gl_Position BuiltIn Position
; CHECK-NEXT: OpDecorate %COLOR Location 1
; CHECK-NEXT: OpDecorate %SV_Target Location 0
; CHECK-NEXT: %uint = OpTypeInt 32 0
; CHECK-NEXT: %uint_0 = OpConstant %uint 0
; CHECK-NEXT: %uint_1 = OpConstant %uint 1
; CHECK-NEXT: %uint_2 = OpConstant %uint 2
; CHECK-NEXT: %uint_3 = OpConstant %uint 3
; CHECK-NEXT: %float = OpTypeFloat 32
; CHECK-NEXT: %v4float = OpTypeVector %float 4
; CHECK-NEXT: %_ptr_Input_v4float = OpTypePointer Input %v4float
; CHECK-NEXT: %_ptr_Output_v4float = OpTypePointer Output %v4float
; CHECK-NEXT: %void = OpTypeVoid
; CHECK-NEXT: %15 = OpTypeFunction %void
; CHECK-NEXT: %_ptr_Input_float = OpTypePointer Input %float
; CHECK-NEXT: %_ptr_Output_float = OpTypePointer Output %float
; CHECK-NEXT: %gl_Position = OpVariable %_ptr_Input_v4float Input
; CHECK-NEXT: %COLOR = OpVariable %_ptr_Input_v4float Input
; CHECK-NEXT: %SV_Target = OpVariable %_ptr_Output_v4float Output
; CHECK-NEXT: %PSMain = OpFunction %void None %15
; CHECK-NEXT: %16 = OpLabel
; CHECK-NEXT: %18 = OpAccessChain %_ptr_Input_float %COLOR %uint_0
; CHECK-NEXT: %19 = OpLoad %float %18
; CHECK-NEXT: %20 = OpAccessChain %_ptr_Input_float %COLOR %uint_1
; CHECK-NEXT: %21 = OpLoad %float %20
; CHECK-NEXT: %22 = OpAccessChain %_ptr_Input_float %COLOR %uint_2
; CHECK-NEXT: %23 = OpLoad %float %22
; CHECK-NEXT: %24 = OpAccessChain %_ptr_Input_float %COLOR %uint_3
; CHECK-NEXT: %25 = OpLoad %float %24
; CHECK-NEXT: %27 = OpAccessChain %_ptr_Output_float %SV_Target %uint_0
; CHECK-NEXT: OpStore %27 %19
; CHECK-NEXT: %28 = OpAccessChain %_ptr_Output_float %SV_Target %uint_1
; CHECK-NEXT: OpStore %28 %21
; CHECK-NEXT: %29 = OpAccessChain %_ptr_Output_float %SV_Target %uint_2
; CHECK-NEXT: OpStore %29 %23
; CHECK-NEXT: %30 = OpAccessChain %_ptr_Output_float %SV_Target %uint_3
; CHECK-NEXT: OpStore %30 %25
; CHECK-NEXT: OpReturn
; CHECK-NEXT: OpFunctionEnd
Loading