Parser: Add 64-bit type conversion for specialization constant.
This commit is contained in:
		
							parent
							
								
									7d01bd6f0b
								
							
						
					
					
						commit
						64bcfdb632
					
				| @ -3761,8 +3761,8 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, spv::Dec | |||||||
|     case glslang::EOpConvInt64ToUint64: |     case glslang::EOpConvInt64ToUint64: | ||||||
|         if (builder.isInSpecConstCodeGenMode()) { |         if (builder.isInSpecConstCodeGenMode()) { | ||||||
|             // Build zero scalar or vector for OpIAdd.
 |             // Build zero scalar or vector for OpIAdd.
 | ||||||
|             zero = (op == glslang::EOpConvUintToInt64 || |             zero = (op == glslang::EOpConvUint64ToInt64 || | ||||||
|                     op == glslang::EOpConvIntToUint64) ? builder.makeUint64Constant(0) : builder.makeUintConstant(0); |                     op == glslang::EOpConvInt64ToUint64) ? builder.makeUint64Constant(0) : builder.makeUintConstant(0); | ||||||
|             zero = makeSmearedConstant(zero, vectorSize); |             zero = makeSmearedConstant(zero, vectorSize); | ||||||
|             // Use OpIAdd, instead of OpBitcast to do the conversion when
 |             // Use OpIAdd, instead of OpBitcast to do the conversion when
 | ||||||
|             // generating for OpSpecConstantOp instruction.
 |             // generating for OpSpecConstantOp instruction.
 | ||||||
|  | |||||||
| @ -8,7 +8,7 @@ Linked fragment stage: | |||||||
| Missing functionality: shader int64 | Missing functionality: shader int64 | ||||||
| // Module Version 10000 | // Module Version 10000 | ||||||
| // Generated by (magic number): 80001 | // Generated by (magic number): 80001 | ||||||
| // Id's are bound by 455 | // Id's are bound by 478 | ||||||
| 
 | 
 | ||||||
|                               Capability Shader |                               Capability Shader | ||||||
|                               Capability Float64 |                               Capability Float64 | ||||||
| @ -64,6 +64,11 @@ Missing functionality: shader int64 | |||||||
|                               Decorate 452(Block) Block |                               Decorate 452(Block) Block | ||||||
|                               Decorate 454(block) DescriptorSet 0 |                               Decorate 454(block) DescriptorSet 0 | ||||||
|                               Decorate 454(block) Binding 1 |                               Decorate 454(block) Binding 1 | ||||||
|  |                               Decorate 455 SpecId 100 | ||||||
|  |                               Decorate 456 SpecId 101 | ||||||
|  |                               Decorate 457 SpecId 102 | ||||||
|  |                               Decorate 458 SpecId 103 | ||||||
|  |                               Decorate 459 SpecId 104 | ||||||
|                2:             TypeVoid |                2:             TypeVoid | ||||||
|                3:             TypeFunction 2 |                3:             TypeFunction 2 | ||||||
|               14:             TypeInt 64 1 |               14:             TypeInt 64 1 | ||||||
| @ -145,6 +150,29 @@ Missing functionality: shader int64 | |||||||
|       452(Block):             TypeStruct 134(ivec3) 36(int) |       452(Block):             TypeStruct 134(ivec3) 36(int) | ||||||
|              453:             TypePointer Uniform 452(Block) |              453:             TypePointer Uniform 452(Block) | ||||||
|       454(block):    453(ptr) Variable Uniform |       454(block):    453(ptr) Variable Uniform | ||||||
|  |              455:     14(int) SpecConstant 4294967286 4294967295 | ||||||
|  |              456:     36(int) SpecConstant 20 0 | ||||||
|  |              457:     27(int) SpecConstant 4294967291 | ||||||
|  |              458:     17(int) SpecConstant 4 | ||||||
|  |              459:    53(bool) SpecConstantTrue | ||||||
|  |              460:    53(bool) SpecConstantOp 171 455 67 | ||||||
|  |              461:    53(bool) SpecConstantOp 171 456 67 | ||||||
|  |              462:     14(int) SpecConstantOp 169 459 59 58 | ||||||
|  |              463:     36(int) SpecConstantOp 169 459 68 67 | ||||||
|  |              464:     27(int) SpecConstantOp 114 455 | ||||||
|  |              465:     14(int) SpecConstantOp 114 457 | ||||||
|  |              466:     17(int) SpecConstantOp 113 456 | ||||||
|  |              467:     36(int) SpecConstantOp 113 458 | ||||||
|  |              468:     14(int) SpecConstantOp 128 456 67 | ||||||
|  |              469:     36(int) SpecConstantOp 128 455 67 | ||||||
|  |              470:     17(int) SpecConstantOp 113 456 | ||||||
|  |              471:     27(int) SpecConstantOp 128 470 217 | ||||||
|  |              472:     14(int) SpecConstantOp 114 457 | ||||||
|  |              473:     36(int) SpecConstantOp 128 472 67 | ||||||
|  |              474:     27(int) SpecConstantOp 114 455 | ||||||
|  |              475:     17(int) SpecConstantOp 128 474 217 | ||||||
|  |              476:     36(int) SpecConstantOp 113 458 | ||||||
|  |              477:     14(int) SpecConstantOp 128 476 67 | ||||||
|          4(main):           2 Function None 3 |          4(main):           2 Function None 3 | ||||||
|                5:             Label |                5:             Label | ||||||
|                               Return |                               Return | ||||||
|  | |||||||
| @ -61,6 +61,7 @@ Linked vertex stage: | |||||||
|               38:             TypeFloat 64 |               38:             TypeFloat 64 | ||||||
|               39:   38(float) SpecConstant 1413754136 1074340347 |               39:   38(float) SpecConstant 1413754136 1074340347 | ||||||
|               40:    6(float) SpecConstant 1078523331 |               40:    6(float) SpecConstant 1078523331 | ||||||
|  |               41:   38(float) SpecConstantOp 115 40 | ||||||
|               50:      8(int) SpecConstant 12 |               50:      8(int) SpecConstant 12 | ||||||
|               51:             TypeArray 7(fvec4) 50 |               51:             TypeArray 7(fvec4) 50 | ||||||
|               52:             TypePointer Input 51 |               52:             TypePointer Input 51 | ||||||
| @ -69,6 +70,7 @@ Linked vertex stage: | |||||||
|               63:     33(int) SpecConstant 2 |               63:     33(int) SpecConstant 2 | ||||||
|               67:   38(float) SpecConstant 1413754136 1074340347 |               67:   38(float) SpecConstant 1413754136 1074340347 | ||||||
|               68:    6(float) SpecConstant 1078523331 |               68:    6(float) SpecConstant 1078523331 | ||||||
|  |               69:   38(float) SpecConstantOp 115 68 | ||||||
|               75:             TypePointer Function 8(int) |               75:             TypePointer Function 8(int) | ||||||
|               77:      8(int) SpecConstant 8 |               77:      8(int) SpecConstant 8 | ||||||
|          4(main):           2 Function None 3 |          4(main):           2 Function None 3 | ||||||
| @ -87,7 +89,6 @@ Linked vertex stage: | |||||||
|                                 Store 20(color) 37 |                                 Store 20(color) 37 | ||||||
|                                 Branch 32 |                                 Branch 32 | ||||||
|               32:             Label |               32:             Label | ||||||
|               41:   38(float) FConvert 40 |  | ||||||
|               42:   38(float) FDiv 39 41 |               42:   38(float) FDiv 39 41 | ||||||
|               43:    6(float) FConvert 42 |               43:    6(float) FConvert 42 | ||||||
|               44:    7(fvec4) Load 20(color) |               44:    7(fvec4) Load 20(color) | ||||||
| @ -119,7 +120,6 @@ Linked vertex stage: | |||||||
|                                 Store 20(color) 66 |                                 Store 20(color) 66 | ||||||
|                                 Branch 62 |                                 Branch 62 | ||||||
|               62:             Label |               62:             Label | ||||||
|               69:   38(float) FConvert 68 |  | ||||||
|               70:   38(float) FDiv 67 69 |               70:   38(float) FDiv 67 69 | ||||||
|               71:    6(float) FConvert 70 |               71:    6(float) FConvert 70 | ||||||
|               72:    7(fvec4) Load 20(color) |               72:    7(fvec4) Load 20(color) | ||||||
|  | |||||||
| @ -7,9 +7,10 @@ Linked vertex stage: | |||||||
| 
 | 
 | ||||||
| // Module Version 10000 | // Module Version 10000 | ||||||
| // Generated by (magic number): 80001 | // Generated by (magic number): 80001 | ||||||
| // Id's are bound by 131 | // Id's are bound by 135 | ||||||
| 
 | 
 | ||||||
|                               Capability Shader |                               Capability Shader | ||||||
|  |                               Capability Float64 | ||||||
|                1:             ExtInstImport  "GLSL.std.450" |                1:             ExtInstImport  "GLSL.std.450" | ||||||
|                               MemoryModel Logical GLSL450 |                               MemoryModel Logical GLSL450 | ||||||
|                               EntryPoint Vertex 4  "main" |                               EntryPoint Vertex 4  "main" | ||||||
| @ -22,6 +23,7 @@ Linked vertex stage: | |||||||
|                               Decorate 40 SpecId 200 |                               Decorate 40 SpecId 200 | ||||||
|                               Decorate 42 SpecId 202 |                               Decorate 42 SpecId 202 | ||||||
|                               Decorate 43 SpecId 203 |                               Decorate 43 SpecId 203 | ||||||
|  |                               Decorate 45 SpecId 204 | ||||||
|                2:             TypeVoid |                2:             TypeVoid | ||||||
|                3:             TypeFunction 2 |                3:             TypeFunction 2 | ||||||
|                6:             TypeInt 32 1 |                6:             TypeInt 32 1 | ||||||
| @ -43,93 +45,97 @@ Linked vertex stage: | |||||||
|               41:             TypeInt 32 0 |               41:             TypeInt 32 0 | ||||||
|               42:     41(int) SpecConstant 100 |               42:     41(int) SpecConstant 100 | ||||||
|               43:      6(int) SpecConstant 4294967286 |               43:      6(int) SpecConstant 4294967286 | ||||||
|               44:     41(int) Constant 0 |               44:             TypeFloat 64 | ||||||
|               45:    22(bool) SpecConstantOp 171 19 44 |               45:   44(float) SpecConstant 2333366019 1074118410 | ||||||
|               46:    22(bool) SpecConstantOp 171 42 44 |               46:   39(float) SpecConstantOp 115 45 | ||||||
|               47:      6(int) SpecConstantOp 169 45 32 12 |               47:   44(float) SpecConstantOp 115 40 | ||||||
|               48:     41(int) Constant 1 |               48:     41(int) Constant 0 | ||||||
|               49:     41(int) SpecConstantOp 169 45 48 44 |               49:    22(bool) SpecConstantOp 171 19 48 | ||||||
|               50:     41(int) SpecConstantOp 128 43 44 |               50:    22(bool) SpecConstantOp 171 42 48 | ||||||
|               51:      6(int) SpecConstantOp 128 42 44 |               51:      6(int) SpecConstantOp 169 49 32 12 | ||||||
|               52:      6(int) SpecConstantOp 126 19 |               52:     41(int) Constant 1 | ||||||
|               53:      6(int) SpecConstantOp 200 19 |               53:     41(int) SpecConstantOp 169 49 52 48 | ||||||
|               54:      6(int) SpecConstantOp 128 19 20 |               54:     41(int) SpecConstantOp 128 43 48 | ||||||
|               55:      6(int) SpecConstantOp 128 19 20 |               55:      6(int) SpecConstantOp 128 42 48 | ||||||
|               56:      6(int) Constant 3 |               56:      6(int) SpecConstantOp 126 19 | ||||||
|               57:      6(int) SpecConstantOp 130 55 56 |               57:      6(int) SpecConstantOp 200 19 | ||||||
|               58:      6(int) Constant 4 |               58:      6(int) SpecConstantOp 128 19 20 | ||||||
|               59:      6(int) SpecConstantOp 130 54 58 |               59:      6(int) SpecConstantOp 128 19 20 | ||||||
|               60:      6(int) SpecConstantOp 132 43 20 |               60:      6(int) Constant 3 | ||||||
|               61:     41(int) Constant 2 |               61:      6(int) SpecConstantOp 130 59 60 | ||||||
|               62:     41(int) SpecConstantOp 132 42 61 |               62:      6(int) Constant 4 | ||||||
|               63:      6(int) Constant 5 |               63:      6(int) SpecConstantOp 130 58 62 | ||||||
|               64:      6(int) SpecConstantOp 135 60 63 |               64:      6(int) SpecConstantOp 132 43 20 | ||||||
|               65:     41(int) Constant 5 |               65:     41(int) Constant 2 | ||||||
|               66:     41(int) SpecConstantOp 134 62 65 |               66:     41(int) SpecConstantOp 132 42 65 | ||||||
|               67:      6(int) SpecConstantOp 139 43 58 |               67:      6(int) Constant 5 | ||||||
|               68:     41(int) Constant 4 |               68:      6(int) SpecConstantOp 135 64 67 | ||||||
|               69:     41(int) SpecConstantOp 137 42 68 |               69:     41(int) Constant 5 | ||||||
|               70:      6(int) SpecConstantOp 132 43 56 |               70:     41(int) SpecConstantOp 134 66 69 | ||||||
|               71:      6(int) SpecConstantOp 135 70 63 |               71:      6(int) SpecConstantOp 139 43 62 | ||||||
|               72:      6(int) Constant 10 |               72:     41(int) Constant 4 | ||||||
|               73:      6(int) SpecConstantOp 195 43 72 |               73:     41(int) SpecConstantOp 137 42 72 | ||||||
|               74:      6(int) Constant 20 |               74:      6(int) SpecConstantOp 132 43 60 | ||||||
|               75:     41(int) SpecConstantOp 194 42 74 |               75:      6(int) SpecConstantOp 135 74 67 | ||||||
|               76:      6(int) SpecConstantOp 196 43 32 |               76:      6(int) Constant 10 | ||||||
|               77:     41(int) SpecConstantOp 196 42 20 |               77:      6(int) SpecConstantOp 195 43 76 | ||||||
|               78:      6(int) Constant 256 |               78:      6(int) Constant 20 | ||||||
|               79:      6(int) SpecConstantOp 197 43 78 |               79:     41(int) SpecConstantOp 194 42 78 | ||||||
|               80:     41(int) Constant 512 |               80:      6(int) SpecConstantOp 196 43 32 | ||||||
|               81:     41(int) SpecConstantOp 198 42 80 |               81:     41(int) SpecConstantOp 196 42 20 | ||||||
|               82:    22(bool) SpecConstantOp 177 19 43 |               82:      6(int) Constant 256 | ||||||
|               83:    22(bool) SpecConstantOp 170 42 42 |               83:      6(int) SpecConstantOp 197 43 82 | ||||||
|               84:    22(bool) SpecConstantOp 173 19 43 |               84:     41(int) Constant 512 | ||||||
|               85:      6(int) Constant 30 |               85:     41(int) SpecConstantOp 198 42 84 | ||||||
|               86:             TypeVector 6(int) 4 |               86:    22(bool) SpecConstantOp 177 19 43 | ||||||
|               87:   86(ivec4) SpecConstantComposite 74 85 19 19 |               87:    22(bool) SpecConstantOp 170 42 42 | ||||||
|               88:     41(int) Constant 4294967295 |               88:    22(bool) SpecConstantOp 173 19 43 | ||||||
|               89:     41(int) Constant 4294967294 |               89:      6(int) Constant 30 | ||||||
|               90:             TypeVector 41(int) 4 |               90:             TypeVector 6(int) 4 | ||||||
|               91:   90(ivec4) SpecConstantComposite 42 42 88 89 |               91:   90(ivec4) SpecConstantComposite 78 89 19 19 | ||||||
|               92:             TypeVector 22(bool) 4 |               92:     41(int) Constant 4294967295 | ||||||
|               93:   90(ivec4) ConstantComposite 44 44 44 44 |               93:     41(int) Constant 4294967294 | ||||||
|               94:   92(bvec4) SpecConstantOp 171 87 93 |               94:             TypeVector 41(int) 4 | ||||||
|               95:   92(bvec4) SpecConstantOp 171 91 93 |               95:   94(ivec4) SpecConstantComposite 42 42 92 93 | ||||||
|               96:   86(ivec4) ConstantComposite 12 12 12 12 |               96:             TypeVector 22(bool) 4 | ||||||
|               97:   86(ivec4) ConstantComposite 32 32 32 32 |               97:   94(ivec4) ConstantComposite 48 48 48 48 | ||||||
|               98:   86(ivec4) SpecConstantOp 169 94 97 96 |               98:   96(bvec4) SpecConstantOp 171 91 97 | ||||||
|               99:   90(ivec4) ConstantComposite 48 48 48 48 |               99:   96(bvec4) SpecConstantOp 171 95 97 | ||||||
|              100:   90(ivec4) SpecConstantOp 169 94 99 93 |              100:   90(ivec4) ConstantComposite 12 12 12 12 | ||||||
|              101:   90(ivec4) SpecConstantOp 128 87 93 |              101:   90(ivec4) ConstantComposite 32 32 32 32 | ||||||
|              102:   86(ivec4) SpecConstantOp 128 91 93 |              102:   90(ivec4) SpecConstantOp 169 98 101 100 | ||||||
|              103:   86(ivec4) SpecConstantOp 200 87 |              103:   94(ivec4) ConstantComposite 52 52 52 52 | ||||||
|              104:   86(ivec4) SpecConstantOp 126 87 |              104:   94(ivec4) SpecConstantOp 169 98 103 97 | ||||||
|              105:   86(ivec4) ConstantComposite 20 20 20 20 |              105:   94(ivec4) SpecConstantOp 128 91 97 | ||||||
|              106:   86(ivec4) SpecConstantOp 128 87 105 |              106:   90(ivec4) SpecConstantOp 128 95 97 | ||||||
|              107:   86(ivec4) SpecConstantOp 128 87 105 |              107:   90(ivec4) SpecConstantOp 200 91 | ||||||
|              108:   86(ivec4) ConstantComposite 56 56 56 56 |              108:   90(ivec4) SpecConstantOp 126 91 | ||||||
|              109:   86(ivec4) SpecConstantOp 130 107 108 |              109:   90(ivec4) ConstantComposite 20 20 20 20 | ||||||
|              110:   86(ivec4) ConstantComposite 58 58 58 58 |              110:   90(ivec4) SpecConstantOp 128 91 109 | ||||||
|              111:   86(ivec4) SpecConstantOp 130 109 110 |              111:   90(ivec4) SpecConstantOp 128 91 109 | ||||||
|              112:   86(ivec4) SpecConstantOp 132 87 105 |              112:   90(ivec4) ConstantComposite 60 60 60 60 | ||||||
|              113:   86(ivec4) ConstantComposite 63 63 63 63 |              113:   90(ivec4) SpecConstantOp 130 111 112 | ||||||
|              114:   86(ivec4) SpecConstantOp 135 112 113 |              114:   90(ivec4) ConstantComposite 62 62 62 62 | ||||||
|              115:   86(ivec4) SpecConstantOp 139 87 110 |              115:   90(ivec4) SpecConstantOp 130 113 114 | ||||||
|              116:   86(ivec4) ConstantComposite 72 72 72 72 |              116:   90(ivec4) SpecConstantOp 132 91 109 | ||||||
|              117:   86(ivec4) SpecConstantOp 195 87 116 |              117:   90(ivec4) ConstantComposite 67 67 67 67 | ||||||
|              118:   86(ivec4) SpecConstantOp 196 87 105 |              118:   90(ivec4) SpecConstantOp 135 116 117 | ||||||
|              119:      6(int) Constant 1024 |              119:   90(ivec4) SpecConstantOp 139 91 114 | ||||||
|              120:   86(ivec4) ConstantComposite 119 119 119 119 |              120:   90(ivec4) ConstantComposite 76 76 76 76 | ||||||
|              121:   86(ivec4) SpecConstantOp 197 87 120 |              121:   90(ivec4) SpecConstantOp 195 91 120 | ||||||
|              122:     41(int) Constant 2048 |              122:   90(ivec4) SpecConstantOp 196 91 109 | ||||||
|              123:   90(ivec4) ConstantComposite 122 122 122 122 |              123:      6(int) Constant 1024 | ||||||
|              124:   90(ivec4) SpecConstantOp 198 91 123 |              124:   90(ivec4) ConstantComposite 123 123 123 123 | ||||||
|              125:      6(int) SpecConstantOp 81 87 0 |              125:   90(ivec4) SpecConstantOp 197 91 124 | ||||||
|              126:             TypeVector 6(int) 2 |              126:     41(int) Constant 2048 | ||||||
|              127:  126(ivec2) SpecConstantOp 79 87 87 1(GLSL.std.450) 0 |              127:   94(ivec4) ConstantComposite 126 126 126 126 | ||||||
|              128:             TypeVector 6(int) 3 |              128:   94(ivec4) SpecConstantOp 198 95 127 | ||||||
|              129:  128(ivec3) SpecConstantOp 79 87 87 2 1(GLSL.std.450) 0 |              129:      6(int) SpecConstantOp 81 91 0 | ||||||
|              130:   86(ivec4) SpecConstantOp 79 87 87 1(GLSL.std.450) 2 0 3 |              130:             TypeVector 6(int) 2 | ||||||
|  |              131:  130(ivec2) SpecConstantOp 79 91 91 1(GLSL.std.450) 0 | ||||||
|  |              132:             TypeVector 6(int) 3 | ||||||
|  |              133:  132(ivec3) SpecConstantOp 79 91 91 2 1(GLSL.std.450) 0 | ||||||
|  |              134:   90(ivec4) SpecConstantOp 79 91 91 1(GLSL.std.450) 2 0 3 | ||||||
|          4(main):           2 Function None 3 |          4(main):           2 Function None 3 | ||||||
|                5:             Label |                5:             Label | ||||||
|                               Return |                               Return | ||||||
|  | |||||||
| @ -225,4 +225,37 @@ void builtinFuncs() | |||||||
|     // notEqual() |     // notEqual() | ||||||
|     bv    = notEqual(u64v, u64vec3(u64)); |     bv    = notEqual(u64v, u64vec3(u64)); | ||||||
|     bv.xy = notEqual(i64v, i64vec2(i64)); |     bv.xy = notEqual(i64v, i64vec2(i64)); | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | // Type conversion for specialization constant | ||||||
|  | layout(constant_id = 100) const int64_t  si64 = -10L; | ||||||
|  | layout(constant_id = 101) const uint64_t su64 = 20UL; | ||||||
|  | layout(constant_id = 102) const int  si = -5; | ||||||
|  | layout(constant_id = 103) const uint su = 4; | ||||||
|  | layout(constant_id = 104) const bool sb = true; | ||||||
|  | 
 | ||||||
|  | // bool <-> int64/uint64 | ||||||
|  | const bool i64_to_b = bool(si64); | ||||||
|  | const bool u64_to_b = bool(su64); | ||||||
|  | const int64_t  b_to_i64 = int64_t(sb); | ||||||
|  | const uint64_t b_to_u64 = uint64_t(sb); | ||||||
|  | 
 | ||||||
|  | // int <-> int64 | ||||||
|  | const int     i64_to_i = int(si64); | ||||||
|  | const int64_t i_to_i64 = int64_t(si); | ||||||
|  | 
 | ||||||
|  | // uint <-> uint64 | ||||||
|  | const uint     u64_to_u = uint(su64); | ||||||
|  | const uint64_t u_to_u64 = uint64_t(su); | ||||||
|  | 
 | ||||||
|  | // int64 <-> uint64 | ||||||
|  | const int64_t  u64_to_i64 = int64_t(su64); | ||||||
|  | const uint64_t i64_to_u64 = uint64_t(si64); | ||||||
|  | 
 | ||||||
|  | // int <-> uint64 | ||||||
|  | const int      u64_to_i = int(su64); | ||||||
|  | const uint64_t i_to_u64 = uint64_t(si); | ||||||
|  | 
 | ||||||
|  | // uint <-> int64 | ||||||
|  | const uint    i64_to_u = uint(si64); | ||||||
|  | const int64_t u_to_i64 = int64_t(su); | ||||||
| @ -4,12 +4,16 @@ layout(constant_id = 200) const float sp_float = 3.1415926; | |||||||
| layout(constant_id = 201) const int sp_int = 10; | layout(constant_id = 201) const int sp_int = 10; | ||||||
| layout(constant_id = 202) const uint sp_uint = 100; | layout(constant_id = 202) const uint sp_uint = 100; | ||||||
| layout(constant_id = 203) const int sp_sint = -10; | layout(constant_id = 203) const int sp_sint = -10; | ||||||
| 
 | layout(constant_id = 204) const double sp_double = 2.718281828459; | ||||||
| 
 | 
 | ||||||
| // | // | ||||||
| // Scalars | // Scalars | ||||||
| // | // | ||||||
| 
 | 
 | ||||||
|  | // float <-> double conversion | ||||||
|  | const float float_from_double = float(sp_double); | ||||||
|  | const double double_from_float = double(sp_float); | ||||||
|  | 
 | ||||||
| // uint/int <-> bool conversion | // uint/int <-> bool conversion | ||||||
| const bool bool_from_int = bool(sp_int); | const bool bool_from_int = bool(sp_int); | ||||||
| const bool bool_from_uint = bool(sp_uint); | const bool bool_from_uint = bool(sp_uint); | ||||||
|  | |||||||
| @ -1444,6 +1444,8 @@ bool TIntermediate::isSpecializationOperation(const TIntermOperator& node) const | |||||||
|         case EOpIndexIndirect: |         case EOpIndexIndirect: | ||||||
|         case EOpIndexDirectStruct: |         case EOpIndexDirectStruct: | ||||||
|         case EOpVectorSwizzle: |         case EOpVectorSwizzle: | ||||||
|  |         case EOpConvFloatToDouble: | ||||||
|  |         case EOpConvDoubleToFloat: | ||||||
|             return true; |             return true; | ||||||
|         default: |         default: | ||||||
|             return false; |             return false; | ||||||
| @ -1474,6 +1476,20 @@ bool TIntermediate::isSpecializationOperation(const TIntermOperator& node) const | |||||||
|     case EOpConvBoolToInt: |     case EOpConvBoolToInt: | ||||||
|     case EOpConvIntToUint: |     case EOpConvIntToUint: | ||||||
|     case EOpConvBoolToUint: |     case EOpConvBoolToUint: | ||||||
|  |     case EOpConvInt64ToBool: | ||||||
|  |     case EOpConvBoolToInt64: | ||||||
|  |     case EOpConvUint64ToBool: | ||||||
|  |     case EOpConvBoolToUint64: | ||||||
|  |     case EOpConvInt64ToInt: | ||||||
|  |     case EOpConvIntToInt64: | ||||||
|  |     case EOpConvUint64ToUint: | ||||||
|  |     case EOpConvUintToUint64: | ||||||
|  |     case EOpConvInt64ToUint64: | ||||||
|  |     case EOpConvUint64ToInt64: | ||||||
|  |     case EOpConvInt64ToUint: | ||||||
|  |     case EOpConvUintToInt64: | ||||||
|  |     case EOpConvUint64ToInt: | ||||||
|  |     case EOpConvIntToUint64: | ||||||
| 
 | 
 | ||||||
|     // unary operations
 |     // unary operations
 | ||||||
|     case EOpNegative: |     case EOpNegative: | ||||||
|  | |||||||
| @ -4942,7 +4942,7 @@ const TFunction* TParseContext::findFunction120(const TSourceLoc& loc, const TFu | |||||||
| // "When function calls are resolved, an exact type match for all the arguments
 | // "When function calls are resolved, an exact type match for all the arguments
 | ||||||
| // is sought. If an exact match is found, all other functions are ignored, and
 | // is sought. If an exact match is found, all other functions are ignored, and
 | ||||||
| // the exact match is used. If no exact match is found, then the implicit
 | // the exact match is used. If no exact match is found, then the implicit
 | ||||||
| // conversions in section 4.1.10 “Implicit Conversions” will be applied to find
 | // conversions in section 4.1.10 Implicit Conversions will be applied to find
 | ||||||
| // a match. Mismatched types on input parameters (in or inout or default) must
 | // a match. Mismatched types on input parameters (in or inout or default) must
 | ||||||
| // have a conversion from the calling argument type to the formal parameter type.
 | // have a conversion from the calling argument type to the formal parameter type.
 | ||||||
| // Mismatched types on output parameters (out or inout) must have a conversion
 | // Mismatched types on output parameters (out or inout) must have a conversion
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Rex Xu
						Rex Xu