Merge branch 'master' of github.com:KhronosGroup/glslang
This commit is contained in:
		
						commit
						aa1dd61257
					
				@ -2531,6 +2531,13 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, spv:
 | 
			
		||||
        unaryOp = spv::OpIsInf;
 | 
			
		||||
        break;
 | 
			
		||||
 | 
			
		||||
    case glslang::EOpFloatBitsToInt:
 | 
			
		||||
    case glslang::EOpFloatBitsToUint:
 | 
			
		||||
    case glslang::EOpIntBitsToFloat:
 | 
			
		||||
    case glslang::EOpUintBitsToFloat:
 | 
			
		||||
        unaryOp = spv::OpBitcast;
 | 
			
		||||
        break;
 | 
			
		||||
 | 
			
		||||
    case glslang::EOpPackSnorm2x16:
 | 
			
		||||
        libCall = spv::GLSLstd450PackSnorm2x16;
 | 
			
		||||
        break;
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										232
									
								
								Test/baseResults/spv.bitCast.frag.out
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										232
									
								
								Test/baseResults/spv.bitCast.frag.out
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,232 @@
 | 
			
		||||
spv.bitCast.frag
 | 
			
		||||
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Linked fragment stage:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Module Version 10000
 | 
			
		||||
// Generated by (magic number): 80001
 | 
			
		||||
// Id's are bound by 172
 | 
			
		||||
 | 
			
		||||
                              Capability Shader
 | 
			
		||||
               1:             ExtInstImport  "GLSL.std.450"
 | 
			
		||||
                              MemoryModel Logical GLSL450
 | 
			
		||||
                              EntryPoint Fragment 4  "main" 154
 | 
			
		||||
                              ExecutionMode 4 OriginLowerLeft
 | 
			
		||||
                              Source GLSL 450
 | 
			
		||||
                              Name 4  "main"
 | 
			
		||||
                              Name 9  "idata"
 | 
			
		||||
                              Name 14  "f1"
 | 
			
		||||
                              Name 26  "f2"
 | 
			
		||||
                              Name 37  "f3"
 | 
			
		||||
                              Name 48  "f4"
 | 
			
		||||
                              Name 55  "udata"
 | 
			
		||||
                              Name 85  "fdata"
 | 
			
		||||
                              Name 89  "i1"
 | 
			
		||||
                              Name 98  "i2"
 | 
			
		||||
                              Name 107  "i3"
 | 
			
		||||
                              Name 116  "i4"
 | 
			
		||||
                              Name 122  "u1"
 | 
			
		||||
                              Name 130  "u2"
 | 
			
		||||
                              Name 139  "u3"
 | 
			
		||||
                              Name 148  "u4"
 | 
			
		||||
                              Name 154  "fragColor"
 | 
			
		||||
               2:             TypeVoid
 | 
			
		||||
               3:             TypeFunction 2
 | 
			
		||||
               6:             TypeInt 32 1
 | 
			
		||||
               7:             TypeVector 6(int) 4
 | 
			
		||||
               8:             TypePointer Function 7(ivec4)
 | 
			
		||||
              10:      6(int) Constant 0
 | 
			
		||||
              11:    7(ivec4) ConstantComposite 10 10 10 10
 | 
			
		||||
              12:             TypeFloat 32
 | 
			
		||||
              13:             TypePointer UniformConstant 12(float)
 | 
			
		||||
          14(f1):     13(ptr) Variable UniformConstant
 | 
			
		||||
              17:             TypeInt 32 0
 | 
			
		||||
              18:     17(int) Constant 0
 | 
			
		||||
              19:             TypePointer Function 6(int)
 | 
			
		||||
              24:             TypeVector 12(float) 2
 | 
			
		||||
              25:             TypePointer UniformConstant 24(fvec2)
 | 
			
		||||
          26(f2):     25(ptr) Variable UniformConstant
 | 
			
		||||
              28:             TypeVector 6(int) 2
 | 
			
		||||
              35:             TypeVector 12(float) 3
 | 
			
		||||
              36:             TypePointer UniformConstant 35(fvec3)
 | 
			
		||||
          37(f3):     36(ptr) Variable UniformConstant
 | 
			
		||||
              39:             TypeVector 6(int) 3
 | 
			
		||||
              46:             TypeVector 12(float) 4
 | 
			
		||||
              47:             TypePointer UniformConstant 46(fvec4)
 | 
			
		||||
          48(f4):     47(ptr) Variable UniformConstant
 | 
			
		||||
              53:             TypeVector 17(int) 4
 | 
			
		||||
              54:             TypePointer Function 53(ivec4)
 | 
			
		||||
              56:   53(ivec4) ConstantComposite 18 18 18 18
 | 
			
		||||
              59:             TypePointer Function 17(int)
 | 
			
		||||
              65:             TypeVector 17(int) 2
 | 
			
		||||
              73:             TypeVector 17(int) 3
 | 
			
		||||
              84:             TypePointer Function 46(fvec4)
 | 
			
		||||
              86:   12(float) Constant 0
 | 
			
		||||
              87:   46(fvec4) ConstantComposite 86 86 86 86
 | 
			
		||||
              88:             TypePointer UniformConstant 6(int)
 | 
			
		||||
          89(i1):     88(ptr) Variable UniformConstant
 | 
			
		||||
              92:             TypePointer Function 12(float)
 | 
			
		||||
              97:             TypePointer UniformConstant 28(ivec2)
 | 
			
		||||
          98(i2):     97(ptr) Variable UniformConstant
 | 
			
		||||
             106:             TypePointer UniformConstant 39(ivec3)
 | 
			
		||||
         107(i3):    106(ptr) Variable UniformConstant
 | 
			
		||||
             115:             TypePointer UniformConstant 7(ivec4)
 | 
			
		||||
         116(i4):    115(ptr) Variable UniformConstant
 | 
			
		||||
             121:             TypePointer UniformConstant 17(int)
 | 
			
		||||
         122(u1):    121(ptr) Variable UniformConstant
 | 
			
		||||
             129:             TypePointer UniformConstant 65(ivec2)
 | 
			
		||||
         130(u2):    129(ptr) Variable UniformConstant
 | 
			
		||||
             138:             TypePointer UniformConstant 73(ivec3)
 | 
			
		||||
         139(u3):    138(ptr) Variable UniformConstant
 | 
			
		||||
             147:             TypePointer UniformConstant 53(ivec4)
 | 
			
		||||
         148(u4):    147(ptr) Variable UniformConstant
 | 
			
		||||
             153:             TypePointer Output 46(fvec4)
 | 
			
		||||
  154(fragColor):    153(ptr) Variable Output
 | 
			
		||||
             159:             TypeBool
 | 
			
		||||
             160:             TypeVector 159(bool) 4
 | 
			
		||||
             168:   12(float) Constant 1045220557
 | 
			
		||||
             169:   46(fvec4) ConstantComposite 168 168 168 168
 | 
			
		||||
         4(main):           2 Function None 3
 | 
			
		||||
               5:             Label
 | 
			
		||||
        9(idata):      8(ptr) Variable Function
 | 
			
		||||
       55(udata):     54(ptr) Variable Function
 | 
			
		||||
       85(fdata):     84(ptr) Variable Function
 | 
			
		||||
             155:     84(ptr) Variable Function
 | 
			
		||||
                              Store 9(idata) 11
 | 
			
		||||
              15:   12(float) Load 14(f1)
 | 
			
		||||
              16:      6(int) Bitcast 15
 | 
			
		||||
              20:     19(ptr) AccessChain 9(idata) 18
 | 
			
		||||
              21:      6(int) Load 20
 | 
			
		||||
              22:      6(int) IAdd 21 16
 | 
			
		||||
              23:     19(ptr) AccessChain 9(idata) 18
 | 
			
		||||
                              Store 23 22
 | 
			
		||||
              27:   24(fvec2) Load 26(f2)
 | 
			
		||||
              29:   28(ivec2) Bitcast 27
 | 
			
		||||
              30:    7(ivec4) Load 9(idata)
 | 
			
		||||
              31:   28(ivec2) VectorShuffle 30 30 0 1
 | 
			
		||||
              32:   28(ivec2) IAdd 31 29
 | 
			
		||||
              33:    7(ivec4) Load 9(idata)
 | 
			
		||||
              34:    7(ivec4) VectorShuffle 33 32 4 5 2 3
 | 
			
		||||
                              Store 9(idata) 34
 | 
			
		||||
              38:   35(fvec3) Load 37(f3)
 | 
			
		||||
              40:   39(ivec3) Bitcast 38
 | 
			
		||||
              41:    7(ivec4) Load 9(idata)
 | 
			
		||||
              42:   39(ivec3) VectorShuffle 41 41 0 1 2
 | 
			
		||||
              43:   39(ivec3) IAdd 42 40
 | 
			
		||||
              44:    7(ivec4) Load 9(idata)
 | 
			
		||||
              45:    7(ivec4) VectorShuffle 44 43 4 5 6 3
 | 
			
		||||
                              Store 9(idata) 45
 | 
			
		||||
              49:   46(fvec4) Load 48(f4)
 | 
			
		||||
              50:    7(ivec4) Bitcast 49
 | 
			
		||||
              51:    7(ivec4) Load 9(idata)
 | 
			
		||||
              52:    7(ivec4) IAdd 51 50
 | 
			
		||||
                              Store 9(idata) 52
 | 
			
		||||
                              Store 55(udata) 56
 | 
			
		||||
              57:   12(float) Load 14(f1)
 | 
			
		||||
              58:     17(int) Bitcast 57
 | 
			
		||||
              60:     59(ptr) AccessChain 55(udata) 18
 | 
			
		||||
              61:     17(int) Load 60
 | 
			
		||||
              62:     17(int) IAdd 61 58
 | 
			
		||||
              63:     59(ptr) AccessChain 55(udata) 18
 | 
			
		||||
                              Store 63 62
 | 
			
		||||
              64:   24(fvec2) Load 26(f2)
 | 
			
		||||
              66:   65(ivec2) Bitcast 64
 | 
			
		||||
              67:   53(ivec4) Load 55(udata)
 | 
			
		||||
              68:   65(ivec2) VectorShuffle 67 67 0 1
 | 
			
		||||
              69:   65(ivec2) IAdd 68 66
 | 
			
		||||
              70:   53(ivec4) Load 55(udata)
 | 
			
		||||
              71:   53(ivec4) VectorShuffle 70 69 4 5 2 3
 | 
			
		||||
                              Store 55(udata) 71
 | 
			
		||||
              72:   35(fvec3) Load 37(f3)
 | 
			
		||||
              74:   73(ivec3) Bitcast 72
 | 
			
		||||
              75:   53(ivec4) Load 55(udata)
 | 
			
		||||
              76:   73(ivec3) VectorShuffle 75 75 0 1 2
 | 
			
		||||
              77:   73(ivec3) IAdd 76 74
 | 
			
		||||
              78:   53(ivec4) Load 55(udata)
 | 
			
		||||
              79:   53(ivec4) VectorShuffle 78 77 4 5 6 3
 | 
			
		||||
                              Store 55(udata) 79
 | 
			
		||||
              80:   46(fvec4) Load 48(f4)
 | 
			
		||||
              81:   53(ivec4) Bitcast 80
 | 
			
		||||
              82:   53(ivec4) Load 55(udata)
 | 
			
		||||
              83:   53(ivec4) IAdd 82 81
 | 
			
		||||
                              Store 55(udata) 83
 | 
			
		||||
                              Store 85(fdata) 87
 | 
			
		||||
              90:      6(int) Load 89(i1)
 | 
			
		||||
              91:   12(float) Bitcast 90
 | 
			
		||||
              93:     92(ptr) AccessChain 85(fdata) 18
 | 
			
		||||
              94:   12(float) Load 93
 | 
			
		||||
              95:   12(float) FAdd 94 91
 | 
			
		||||
              96:     92(ptr) AccessChain 85(fdata) 18
 | 
			
		||||
                              Store 96 95
 | 
			
		||||
              99:   28(ivec2) Load 98(i2)
 | 
			
		||||
             100:   24(fvec2) Bitcast 99
 | 
			
		||||
             101:   46(fvec4) Load 85(fdata)
 | 
			
		||||
             102:   24(fvec2) VectorShuffle 101 101 0 1
 | 
			
		||||
             103:   24(fvec2) FAdd 102 100
 | 
			
		||||
             104:   46(fvec4) Load 85(fdata)
 | 
			
		||||
             105:   46(fvec4) VectorShuffle 104 103 4 5 2 3
 | 
			
		||||
                              Store 85(fdata) 105
 | 
			
		||||
             108:   39(ivec3) Load 107(i3)
 | 
			
		||||
             109:   35(fvec3) Bitcast 108
 | 
			
		||||
             110:   46(fvec4) Load 85(fdata)
 | 
			
		||||
             111:   35(fvec3) VectorShuffle 110 110 0 1 2
 | 
			
		||||
             112:   35(fvec3) FAdd 111 109
 | 
			
		||||
             113:   46(fvec4) Load 85(fdata)
 | 
			
		||||
             114:   46(fvec4) VectorShuffle 113 112 4 5 6 3
 | 
			
		||||
                              Store 85(fdata) 114
 | 
			
		||||
             117:    7(ivec4) Load 116(i4)
 | 
			
		||||
             118:   46(fvec4) Bitcast 117
 | 
			
		||||
             119:   46(fvec4) Load 85(fdata)
 | 
			
		||||
             120:   46(fvec4) FAdd 119 118
 | 
			
		||||
                              Store 85(fdata) 120
 | 
			
		||||
             123:     17(int) Load 122(u1)
 | 
			
		||||
             124:   12(float) Bitcast 123
 | 
			
		||||
             125:     92(ptr) AccessChain 85(fdata) 18
 | 
			
		||||
             126:   12(float) Load 125
 | 
			
		||||
             127:   12(float) FAdd 126 124
 | 
			
		||||
             128:     92(ptr) AccessChain 85(fdata) 18
 | 
			
		||||
                              Store 128 127
 | 
			
		||||
             131:   65(ivec2) Load 130(u2)
 | 
			
		||||
             132:   24(fvec2) Bitcast 131
 | 
			
		||||
             133:   46(fvec4) Load 85(fdata)
 | 
			
		||||
             134:   24(fvec2) VectorShuffle 133 133 0 1
 | 
			
		||||
             135:   24(fvec2) FAdd 134 132
 | 
			
		||||
             136:   46(fvec4) Load 85(fdata)
 | 
			
		||||
             137:   46(fvec4) VectorShuffle 136 135 4 5 2 3
 | 
			
		||||
                              Store 85(fdata) 137
 | 
			
		||||
             140:   73(ivec3) Load 139(u3)
 | 
			
		||||
             141:   35(fvec3) Bitcast 140
 | 
			
		||||
             142:   46(fvec4) Load 85(fdata)
 | 
			
		||||
             143:   35(fvec3) VectorShuffle 142 142 0 1 2
 | 
			
		||||
             144:   35(fvec3) FAdd 143 141
 | 
			
		||||
             145:   46(fvec4) Load 85(fdata)
 | 
			
		||||
             146:   46(fvec4) VectorShuffle 145 144 4 5 6 3
 | 
			
		||||
                              Store 85(fdata) 146
 | 
			
		||||
             149:   53(ivec4) Load 148(u4)
 | 
			
		||||
             150:   46(fvec4) Bitcast 149
 | 
			
		||||
             151:   46(fvec4) Load 85(fdata)
 | 
			
		||||
             152:   46(fvec4) FAdd 151 150
 | 
			
		||||
                              Store 85(fdata) 152
 | 
			
		||||
             156:    7(ivec4) Load 9(idata)
 | 
			
		||||
             157:   53(ivec4) Bitcast 156
 | 
			
		||||
             158:   53(ivec4) Load 55(udata)
 | 
			
		||||
             161:  160(bvec4) IEqual 157 158
 | 
			
		||||
             162:   159(bool) All 161
 | 
			
		||||
                              SelectionMerge 164 None
 | 
			
		||||
                              BranchConditional 162 163 166
 | 
			
		||||
             163:               Label
 | 
			
		||||
             165:   46(fvec4)   Load 85(fdata)
 | 
			
		||||
                                Store 155 165
 | 
			
		||||
                                Branch 164
 | 
			
		||||
             166:               Label
 | 
			
		||||
             167:   46(fvec4)   Load 85(fdata)
 | 
			
		||||
             170:   46(fvec4)   FAdd 167 169
 | 
			
		||||
                                Store 155 170
 | 
			
		||||
                                Branch 164
 | 
			
		||||
             164:             Label
 | 
			
		||||
             171:   46(fvec4) Load 155
 | 
			
		||||
                              Store 154(fragColor) 171
 | 
			
		||||
                              Return
 | 
			
		||||
                              FunctionEnd
 | 
			
		||||
							
								
								
									
										45
									
								
								Test/spv.bitCast.frag
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								Test/spv.bitCast.frag
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,45 @@
 | 
			
		||||
#version 450
 | 
			
		||||
 | 
			
		||||
uniform int   i1;
 | 
			
		||||
uniform ivec2 i2;
 | 
			
		||||
uniform ivec3 i3;
 | 
			
		||||
uniform ivec4 i4;
 | 
			
		||||
 | 
			
		||||
uniform uint  u1;
 | 
			
		||||
uniform uvec2 u2;
 | 
			
		||||
uniform uvec3 u3;
 | 
			
		||||
uniform uvec4 u4;
 | 
			
		||||
 | 
			
		||||
uniform float f1;
 | 
			
		||||
uniform vec2  f2;
 | 
			
		||||
uniform vec3  f3;
 | 
			
		||||
uniform vec4  f4;
 | 
			
		||||
 | 
			
		||||
out vec4 fragColor;
 | 
			
		||||
 | 
			
		||||
void main()
 | 
			
		||||
{
 | 
			
		||||
	ivec4 idata = ivec4(0);
 | 
			
		||||
	idata.x     += floatBitsToInt(f1);
 | 
			
		||||
	idata.xy    += floatBitsToInt(f2);
 | 
			
		||||
	idata.xyz   += floatBitsToInt(f3);
 | 
			
		||||
	idata       += floatBitsToInt(f4);
 | 
			
		||||
 | 
			
		||||
	uvec4 udata = uvec4(0);
 | 
			
		||||
	udata.x     += floatBitsToUint(f1);
 | 
			
		||||
	udata.xy    += floatBitsToUint(f2);
 | 
			
		||||
	udata.xyz   += floatBitsToUint(f3);
 | 
			
		||||
	udata       += floatBitsToUint(f4);
 | 
			
		||||
 | 
			
		||||
	vec4 fdata = vec4(0.0);
 | 
			
		||||
	fdata.x     += intBitsToFloat(i1);
 | 
			
		||||
	fdata.xy    += intBitsToFloat(i2);
 | 
			
		||||
	fdata.xyz   += intBitsToFloat(i3);
 | 
			
		||||
	fdata       += intBitsToFloat(i4);
 | 
			
		||||
    fdata.x     += uintBitsToFloat(u1);
 | 
			
		||||
	fdata.xy    += uintBitsToFloat(u2);
 | 
			
		||||
	fdata.xyz   += uintBitsToFloat(u3);
 | 
			
		||||
	fdata       += uintBitsToFloat(u4);
 | 
			
		||||
 | 
			
		||||
    fragColor = (idata == udata) ? fdata : fdata + vec4(0.2);
 | 
			
		||||
}
 | 
			
		||||
@ -30,6 +30,7 @@ spv.accessChain.frag
 | 
			
		||||
spv.aggOps.frag
 | 
			
		||||
spv.always-discard.frag
 | 
			
		||||
spv.always-discard2.frag
 | 
			
		||||
spv.bitCast.frag
 | 
			
		||||
spv.bool.vert
 | 
			
		||||
spv.conditionalDiscard.frag
 | 
			
		||||
spv.conversion.frag
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user