summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2019-05-22 12:00:21 -0400
committerTim Foley <tfoleyNV@users.noreply.github.com>2019-05-22 09:00:20 -0700
commit3247174cdb00836435794e3f07daad70bc92b66f (patch)
treed83ccbb72ae3d5eb66c14fcaff7984962549010e /tests
parent7a24a4285c342ca5dea9a3b3fe176c4348aa9a51 (diff)
Hotfix/improve glsl semantic conversion review (#968)
* Small changes based on review * Remove the explicit 'nominal' tests * Made isValueEqual and isEqual on on IRConstant take a pointer * Small improvements to comments, and clarity of using 'nominal' * Simplify comparison by just using isTypeOperandEqual as basis for isTypeEqual * Use cross compile to test half-texture.slang on glsl * Don't need half-texture.slang.expected * Fix handling of nominal comparison based on review, ensuring that for nominal insts, they can only be compared by pointer.
Diffstat (limited to 'tests')
-rw-r--r--tests/compute/half-texture.slang2
-rw-r--r--tests/compute/half-texture.slang.expected181
-rw-r--r--tests/compute/half-texture.slang.glsl41
3 files changed, 42 insertions, 182 deletions
diff --git a/tests/compute/half-texture.slang b/tests/compute/half-texture.slang
index 635336c66..3f2c5500e 100644
--- a/tests/compute/half-texture.slang
+++ b/tests/compute/half-texture.slang
@@ -1,4 +1,4 @@
-//TEST:SIMPLE: -target spirv -entry computeMain -profile cs_6_2
+//TEST:CROSS_COMPILE: -target spirv -entry computeMain -profile cs_6_2
//TEST:SIMPLE: -target hlsl -entry computeMain -profile cs_6_2
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0], stride=16):dxbinding(0),glbinding(0),out
diff --git a/tests/compute/half-texture.slang.expected b/tests/compute/half-texture.slang.expected
deleted file mode 100644
index eb1ee705f..000000000
--- a/tests/compute/half-texture.slang.expected
+++ /dev/null
@@ -1,181 +0,0 @@
-result code = 0
-standard error = {
-}
-standard output = {
-// Module Version 10000
-// Generated by (magic number): 80007
-// Id's are bound by 125
-
- Capability Shader
- Capability Float16
- Capability StorageImageExtendedFormats
- 1: ExtInstImport "GLSL.std.450"
- MemoryModel Logical GLSL450
- EntryPoint GLCompute 4 "main" 13
- ExecutionMode 4 LocalSize 4 4 1
- Source GLSL 450
- SourceExtension "GL_EXT_shader_16bit_storage"
- SourceExtension "GL_EXT_shader_explicit_arithmetic_types"
- SourceExtension "GL_GOOGLE_cpp_style_line_directive"
- Name 4 "main"
- Name 9 "pos_0"
- Name 13 "gl_GlobalInvocationID"
- Name 18 "pos2_0"
- Name 32 "h_0"
- Name 36 "halfTexture_0"
- Name 47 "h2_0"
- Name 50 "halfTexture2_0"
- Name 61 "h4_0"
- Name 64 "halfTexture4_0"
- Name 104 "index_0"
- Name 113 "_S1"
- MemberName 113(_S1) 0 "_data"
- Name 115 "outputBuffer_0"
- Decorate 13(gl_GlobalInvocationID) BuiltIn GlobalInvocationId
- Decorate 36(halfTexture_0) DescriptorSet 0
- Decorate 36(halfTexture_0) Binding 1
- Decorate 50(halfTexture2_0) DescriptorSet 0
- Decorate 50(halfTexture2_0) Binding 2
- Decorate 64(halfTexture4_0) DescriptorSet 0
- Decorate 64(halfTexture4_0) Binding 3
- Decorate 112 ArrayStride 4
- MemberDecorate 113(_S1) 0 Offset 0
- Decorate 113(_S1) BufferBlock
- Decorate 115(outputBuffer_0) DescriptorSet 0
- Decorate 115(outputBuffer_0) Binding 0
- Decorate 124 BuiltIn WorkgroupSize
- 2: TypeVoid
- 3: TypeFunction 2
- 6: TypeInt 32 1
- 7: TypeVector 6(int) 2
- 8: TypePointer Function 7(ivec2)
- 10: TypeInt 32 0
- 11: TypeVector 10(int) 3
- 12: TypePointer Input 11(ivec3)
-13(gl_GlobalInvocationID): 12(ptr) Variable Input
- 14: TypeVector 10(int) 2
- 19: 6(int) Constant 3
- 20: 10(int) Constant 1
- 21: TypePointer Function 6(int)
- 25: 10(int) Constant 0
- 30: TypeFloat 16
- 31: TypePointer Function 30(float16_t)
- 33: TypeFloat 32
- 34: TypeImage 33(float) 2D nonsampled format:R16f
- 35: TypePointer UniformConstant 34
-36(halfTexture_0): 35(ptr) Variable UniformConstant
- 41: TypeVector 33(float) 4
- 45: TypeVector 30(float16_t) 2
- 46: TypePointer Function 45(f16vec2)
- 48: TypeImage 33(float) 2D nonsampled format:Rg16f
- 49: TypePointer UniformConstant 48
-50(halfTexture2_0): 49(ptr) Variable UniformConstant
- 56: TypeVector 33(float) 2
- 59: TypeVector 30(float16_t) 4
- 60: TypePointer Function 59(f16vec4)
- 62: TypeImage 33(float) 2D nonsampled format:Rgba16f
- 63: TypePointer UniformConstant 62
-64(halfTexture4_0): 63(ptr) Variable UniformConstant
- 80:30(float16_t) Constant 0
- 109: 6(int) Constant 4
- 112: TypeRuntimeArray 6(int)
- 113(_S1): TypeStruct 112
- 114: TypePointer Uniform 113(_S1)
-115(outputBuffer_0): 114(ptr) Variable Uniform
- 116: 6(int) Constant 0
- 120: TypePointer Uniform 6(int)
- 123: 10(int) Constant 4
- 124: 11(ivec3) ConstantComposite 123 123 20
- 4(main): 2 Function None 3
- 5: Label
- 9(pos_0): 8(ptr) Variable Function
- 18(pos2_0): 8(ptr) Variable Function
- 32(h_0): 31(ptr) Variable Function
- 47(h2_0): 46(ptr) Variable Function
- 61(h4_0): 60(ptr) Variable Function
- 104(index_0): 21(ptr) Variable Function
- 15: 11(ivec3) Load 13(gl_GlobalInvocationID)
- 16: 14(ivec2) VectorShuffle 15 15 0 1
- 17: 7(ivec2) Bitcast 16
- Store 9(pos_0) 17
- 22: 21(ptr) AccessChain 9(pos_0) 20
- 23: 6(int) Load 22
- 24: 6(int) ISub 19 23
- 26: 21(ptr) AccessChain 9(pos_0) 25
- 27: 6(int) Load 26
- 28: 6(int) ISub 19 27
- 29: 7(ivec2) CompositeConstruct 24 28
- Store 18(pos2_0) 29
- 37: 34 Load 36(halfTexture_0)
- 38: 7(ivec2) Load 18(pos2_0)
- 39: 14(ivec2) Bitcast 38
- 40: 7(ivec2) Bitcast 39
- 42: 41(fvec4) ImageRead 37 40
- 43: 33(float) CompositeExtract 42 0
- 44:30(float16_t) FConvert 43
- Store 32(h_0) 44
- 51: 48 Load 50(halfTexture2_0)
- 52: 7(ivec2) Load 18(pos2_0)
- 53: 14(ivec2) Bitcast 52
- 54: 7(ivec2) Bitcast 53
- 55: 41(fvec4) ImageRead 51 54
- 57: 56(fvec2) VectorShuffle 55 55 0 1
- 58: 45(f16vec2) FConvert 57
- Store 47(h2_0) 58
- 65: 62 Load 64(halfTexture4_0)
- 66: 7(ivec2) Load 18(pos2_0)
- 67: 14(ivec2) Bitcast 66
- 68: 7(ivec2) Bitcast 67
- 69: 41(fvec4) ImageRead 65 68
- 70: 59(f16vec4) FConvert 69
- Store 61(h4_0) 70
- 71: 34 Load 36(halfTexture_0)
- 72: 7(ivec2) Load 9(pos_0)
- 73: 14(ivec2) Bitcast 72
- 74: 7(ivec2) Bitcast 73
- 75: 31(ptr) AccessChain 47(h2_0) 25
- 76:30(float16_t) Load 75
- 77: 31(ptr) AccessChain 47(h2_0) 20
- 78:30(float16_t) Load 77
- 79:30(float16_t) FAdd 76 78
- 81: 59(f16vec4) CompositeConstruct 79 80 80 80
- 82: 41(fvec4) FConvert 81
- ImageWrite 71 74 82
- 83: 48 Load 50(halfTexture2_0)
- 84: 7(ivec2) Load 9(pos_0)
- 85: 14(ivec2) Bitcast 84
- 86: 7(ivec2) Bitcast 85
- 87: 59(f16vec4) Load 61(h4_0)
- 88: 45(f16vec2) VectorShuffle 87 87 0 1
- 89:30(float16_t) CompositeExtract 88 0
- 90:30(float16_t) CompositeExtract 88 1
- 91: 59(f16vec4) CompositeConstruct 89 90 80 80
- 92: 41(fvec4) FConvert 91
- ImageWrite 83 86 92
- 93: 62 Load 64(halfTexture4_0)
- 94: 7(ivec2) Load 9(pos_0)
- 95: 14(ivec2) Bitcast 94
- 96: 7(ivec2) Bitcast 95
- 97: 45(f16vec2) Load 47(h2_0)
- 98:30(float16_t) Load 32(h_0)
- 99:30(float16_t) Load 32(h_0)
- 100:30(float16_t) CompositeExtract 97 0
- 101:30(float16_t) CompositeExtract 97 1
- 102: 59(f16vec4) CompositeConstruct 100 101 98 99
- 103: 41(fvec4) FConvert 102
- ImageWrite 93 96 103
- 105: 21(ptr) AccessChain 9(pos_0) 25
- 106: 6(int) Load 105
- 107: 21(ptr) AccessChain 9(pos_0) 20
- 108: 6(int) Load 107
- 110: 6(int) IMul 108 109
- 111: 6(int) IAdd 106 110
- Store 104(index_0) 111
- 117: 6(int) Load 104(index_0)
- 118: 10(int) Bitcast 117
- 119: 6(int) Load 104(index_0)
- 121: 120(ptr) AccessChain 115(outputBuffer_0) 116 118
- Store 121 119
- Return
- FunctionEnd
-}
diff --git a/tests/compute/half-texture.slang.glsl b/tests/compute/half-texture.slang.glsl
new file mode 100644
index 000000000..88f585378
--- /dev/null
+++ b/tests/compute/half-texture.slang.glsl
@@ -0,0 +1,41 @@
+//TEST_IGNORE_FILE:
+#version 450
+layout(row_major) uniform;
+layout(row_major) buffer;
+#extension GL_EXT_shader_16bit_storage : require
+#extension GL_EXT_shader_explicit_arithmetic_types : require
+
+layout(r16f)
+layout(binding = 1)
+uniform image2D halfTexture_0;
+
+layout(rg16f)
+layout(binding = 2)
+uniform image2D halfTexture2_0;
+
+layout(rgba16f)
+layout(binding = 3)
+uniform image2D halfTexture4_0;
+
+layout(std430, binding = 0) buffer _S1 {
+ int _data[];
+} outputBuffer_0;
+
+layout(local_size_x = 4, local_size_y = 4, local_size_z = 1) in;void main()
+{
+ ivec2 pos_0 = ivec2(gl_GlobalInvocationID.xy);
+ const float _S2 = 1.00000000000000000000 / 3.00000000000000000000;
+ ivec2 pos2_0 = ivec2(3 - pos_0.y, 3 - pos_0.x);
+
+ float16_t h_0 = (float16_t(imageLoad((halfTexture_0), ivec2((uvec2(pos2_0)))).x));
+ f16vec2 h2_0 = (f16vec2(imageLoad((halfTexture2_0), ivec2((uvec2(pos2_0)))).xy));
+ f16vec4 h4_0 = (f16vec4(imageLoad((halfTexture4_0), ivec2((uvec2(pos2_0))))));
+ imageStore((halfTexture_0), ivec2((uvec2(pos_0))), f16vec4(h2_0.x + h2_0.y, float16_t(0), float16_t(0), float16_t(0)));
+ imageStore((halfTexture2_0), ivec2((uvec2(pos_0))), f16vec4(h4_0.xy, float16_t(0), float16_t(0)));
+ imageStore((halfTexture4_0), ivec2((uvec2(pos_0))), f16vec4(h2_0, h_0, h_0));
+
+ int index_0 = pos_0.x + pos_0.y * 4;
+ ((outputBuffer_0)._data[(uint(index_0))]) = index_0;
+
+ return;
+} \ No newline at end of file