diff --git a/test/Basic/matrix_m-based_getter.test b/test/Basic/matrix_m-based_getter.test new file mode 100644 index 000000000..f52bbf6c7 --- /dev/null +++ b/test/Basic/matrix_m-based_getter.test @@ -0,0 +1,84 @@ +#--- source.hlsl + +RWBuffer In : register(u0); +RWBuffer Out : register(u1); + +[numthreads(4,1,1)] +void main(uint GI : SV_GroupIndex) { + int2x2 A; + switch(GI) { + case 0: + A._m00 = In[GI]; + break; + case 1: + A._m01 = In[GI]; + break; + case 2: + A._m10 = In[GI]; + break; + case 3: + A._m11 = In[GI]; + break; + } + + switch(GI) { + case 0: + Out[GI] = A._m00; + break; + case 1: + Out[GI] = A._m01; + break; + case 2: + Out[GI] = A._m10; + break; + case 3: + Out[GI] = A._m11; + break; + } +} + +//--- pipeline.yaml + +--- +Shaders: + - Stage: Compute + Entry: main + DispatchSize: [1, 1, 1] +Buffers: + - Name: In + Format: Int32 + Data: [ 1, 2, 3, 4] + - Name: Out + Format: Int32 + ZeroInitSize: 16 + - Name: ExpectedOut + Format: Int32 + Data: [ 1, 2, 3, 4 ] +Results: + - Result: Out + Rule: BufferExact + Actual: Out + Expected: ExpectedOut +DescriptorSets: + - Resources: + - Name: In + Kind: RWBuffer + DirectXBinding: + Register: 0 + Space: 0 + VulkanBinding: + Binding: 0 + - Name: Out + Kind: RWBuffer + DirectXBinding: + Register: 1 + Space: 0 + VulkanBinding: + Binding: 1 +... +#--- end + +# UNSUPPORTED: Clang +# RUN: split-file %s %t +# RUN: %dxc_target -T cs_6_0 -Fo %t.o %t/source.hlsl +# RUN: %offloader %t/pipeline.yaml %t.o diff --git a/test/Basic/matrix_one-based_getter.test b/test/Basic/matrix_one-based_getter.test new file mode 100644 index 000000000..20ef90506 --- /dev/null +++ b/test/Basic/matrix_one-based_getter.test @@ -0,0 +1,86 @@ +#--- source.hlsl + +RWBuffer In : register(u0); +RWBuffer Out : register(u1); + +[numthreads(4,1,1)] +void main(uint GI : SV_GroupIndex) { + int2x2 A; + switch(GI) { + case 0: + A._11 = In[GI]; + break; + case 1: + A._12 = In[GI]; + break; + case 2: + A._21 = In[GI]; + break; + case 3: + A._22 = In[GI]; + break; + + } + + switch(GI) { + case 0: + Out[GI] = A._11; + break; + case 1: + Out[GI] = A._12; + break; + case 2: + Out[GI] = A._21; + break; + case 3: + Out[GI] = A._22; + break; + + } +} + +//--- pipeline.yaml + +--- +Shaders: + - Stage: Compute + Entry: main + DispatchSize: [1, 1, 1] +Buffers: + - Name: In + Format: Int32 + Data: [ 1, 2, 3, 4] + - Name: Out + Format: Int32 + ZeroInitSize: 16 + - Name: ExpectedOut + Format: Int32 + Data: [ 1, 2, 3, 4 ] +Results: + - Result: Out + Rule: BufferExact + Actual: Out + Expected: ExpectedOut +DescriptorSets: + - Resources: + - Name: In + Kind: RWBuffer + DirectXBinding: + Register: 0 + Space: 0 + VulkanBinding: + Binding: 0 + - Name: Out + Kind: RWBuffer + DirectXBinding: + Register: 1 + Space: 0 + VulkanBinding: + Binding: 1 +... +#--- end + +# UNSUPPORTED: Clang +# RUN: split-file %s %t +# RUN: %dxc_target -T cs_6_0 -Fo %t.o %t/source.hlsl +# RUN: %offloader %t/pipeline.yaml %t.o diff --git a/test/Basic/matrix_scalar_arithmetic.test b/test/Basic/matrix_scalar_arithmetic.test new file mode 100644 index 000000000..e98ecd204 --- /dev/null +++ b/test/Basic/matrix_scalar_arithmetic.test @@ -0,0 +1,104 @@ +#--- source.hlsl + +RWBuffer In : register(u0); +RWBuffer DivOut : register(u1); +RWBuffer MulOut : register(u2); +RWBuffer AddOut : register(u3); +RWBuffer SubOut : register(u4); + +[numthreads(6,1,1)] +void main(uint GI : SV_GroupIndex) { + int2x3 A = int2x3(In[0], In[1], In[2], + In[3], In[4], In[5]); + + int row = GI / 2; + int col = GI % 2; + DivOut[GI] = A[col][row] / 2; + MulOut[GI] = A[col][row] * 2; + AddOut[GI] = A[col][row] + 1; + SubOut[GI] = A[col][row] - 1; +} + +//--- pipeline.yaml + +--- +Shaders: + - Stage: Compute + Entry: main + DispatchSize: [1, 1, 1] +Buffers: + - Name: In + Format: Int32 + Data: [ 2, 4, 6, 8, 10, 12 ] + - Name: DivOut + Format: Int32 + ZeroInitSize: 24 + - Name: MulOut + Format: Int32 + ZeroInitSize: 24 + - Name: AddOut + Format: Int32 + ZeroInitSize: 24 + - Name: SubOut + Format: Int32 + ZeroInitSize: 24 +DescriptorSets: + - Resources: + - Name: In + Kind: RWBuffer + DirectXBinding: + Register: 0 + Space: 0 + VulkanBinding: + Binding: 0 + - Name: DivOut + Kind: RWBuffer + DirectXBinding: + Register: 1 + Space: 0 + VulkanBinding: + Binding: 1 + - Name: MulOut + Kind: RWBuffer + DirectXBinding: + Register: 2 + Space: 0 + VulkanBinding: + Binding: 2 + - Name: AddOut + Kind: RWBuffer + DirectXBinding: + Register: 3 + Space: 0 + VulkanBinding: + Binding: 3 + - Name: SubOut + Kind: RWBuffer + DirectXBinding: + Register: 4 + Space: 0 + VulkanBinding: + Binding: 4 +... +#--- end + +# UNSUPPORTED: Clang +# RUN: split-file %s %t +# RUN: %dxc_target -T cs_6_0 -Fo %t.o %t/source.hlsl +# RUN: %offloader %t/pipeline.yaml %t.o | FileCheck %s + +# CHECK: Name: In +# CHECK: Format: Int32 +# CHECK: Data: [ 2, 4, 6, 8, 10, 12 ] +# CHECK: Name: DivOut +# CHECK: Format: Int32 +# CHECK: Data: [ 1, 4, 2, 5, 3, 6 ] +# CHECK: Name: MulOut +# CHECK: Format: Int32 +# CHECK: Data: [ 4, 16, 8, 20, 12, 24 ] +# CHECK: Name: AddOut +# CHECK: Format: Int32 +# CHECK: Data: [ 3, 9, 5, 11, 7, 13 ] +# CHECK: Name: SubOut +# CHECK: Format: Int32 +# CHECK: Data: [ 1, 7, 3, 9, 5, 11 ] diff --git a/test/Basic/matrix_scalar_constructor.test b/test/Basic/matrix_scalar_constructor.test new file mode 100644 index 000000000..3df226cb9 --- /dev/null +++ b/test/Basic/matrix_scalar_constructor.test @@ -0,0 +1,60 @@ +#--- source.hlsl + +RWBuffer In : register(u0); +RWBuffer Out : register(u1); + +[numthreads(6,1,1)] +void main(uint GI : SV_GroupIndex) { + int2x3 A = int2x3(In[0], In[1], In[2], + In[3], In[4], In[5]); + + int row = GI / 2; + int col = GI % 2; + Out[GI] = A[col][row]; +} + +//--- pipeline.yaml + +--- +Shaders: + - Stage: Compute + Entry: main + DispatchSize: [1, 1, 1] +Buffers: + - Name: In + Format: Int32 + Data: [ 1, 2, 3, 4, 5, 6] + - Name: Out + Format: Int32 + ZeroInitSize: 24 + - Name: ExpectedOut + Format: Int32 + Data: [ 1, 4, 2, 5, 3, 6 ] +Results: + - Result: Out + Rule: BufferExact + Actual: Out + Expected: ExpectedOut +DescriptorSets: + - Resources: + - Name: In + Kind: RWBuffer + DirectXBinding: + Register: 0 + Space: 0 + VulkanBinding: + Binding: 0 + - Name: Out + Kind: RWBuffer + DirectXBinding: + Register: 1 + Space: 0 + VulkanBinding: + Binding: 1 +... +#--- end + +# UNSUPPORTED: Clang +# RUN: split-file %s %t +# RUN: %dxc_target -T cs_6_0 -Fo %t.o %t/source.hlsl +# RUN: %offloader %t/pipeline.yaml %t.o