Remove support for double trig, pow, exp and log

These are not supported in core GLSL or under any extension

Fixes 2793
diff --git a/Test/baseResults/spv.float64.frag.out b/Test/baseResults/spv.float64.frag.out
index dfcfc2d..cd5f80d 100644
--- a/Test/baseResults/spv.float64.frag.out
+++ b/Test/baseResults/spv.float64.frag.out
@@ -2,7 +2,7 @@
 Validation failed
 // Module Version 10300
 // Generated by (magic number): 8000a
-// Id's are bound by 532
+// Id's are bound by 485
 
                               Capability Shader
                               Capability Float16
@@ -14,7 +14,7 @@
                               Capability InterpolationFunction
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 461
+                              EntryPoint Fragment 4  "main" 414
                               ExecutionMode 4 OriginUpperLeft
                               Source GLSL 450
                               SourceExtension  "GL_EXT_shader_explicit_arithmetic_types"
@@ -29,782 +29,710 @@
                               Name 6  "literal("
                               Name 8  "operators("
                               Name 10  "typeCast("
-                              Name 12  "builtinAngleTrigFuncs("
-                              Name 14  "builtinExpFuncs("
-                              Name 16  "builtinCommonFuncs("
-                              Name 18  "builtinGeometryFuncs("
-                              Name 20  "builtinMatrixFuncs("
-                              Name 22  "builtinVecRelFuncs("
-                              Name 24  "builtinFragProcFuncs("
-                              Name 29  "f64v"
-                              Name 40  "f64v"
-                              Name 62  "f64m"
-                              Name 85  "f64"
-                              Name 109  "b"
-                              Name 151  "f64v"
-                              Name 154  "bv"
-                              Name 165  "f16v"
-                              Name 173  "i8v"
-                              Name 179  "i16v"
-                              Name 185  "i32v"
-                              Name 191  "i64v"
-                              Name 197  "u8v"
-                              Name 203  "u16v"
-                              Name 208  "u32v"
-                              Name 214  "u64v"
-                              Name 219  "f64v2"
-                              Name 220  "f64v1"
-                              Name 252  "f64v2"
-                              Name 253  "f64v1"
-                              Name 269  "f64v2"
-                              Name 270  "f64v1"
-                              Name 291  "f64"
-                              Name 295  "f64v3"
-                              Name 335  "bv"
-                              Name 356  "b"
-                              Name 366  "iv"
-                              Name 367  "ResType"
-                              Name 374  "f64"
-                              Name 375  "f64v1"
-                              Name 379  "f64v2"
-                              Name 385  "f64v3"
-                              Name 404  "f64m3"
-                              Name 405  "f64m1"
-                              Name 407  "f64m2"
-                              Name 416  "f64v1"
-                              Name 418  "f64v2"
-                              Name 423  "f64m4"
-                              Name 426  "f64"
-                              Name 429  "f64m5"
-                              Name 434  "f64m6"
-                              Name 435  "f64m7"
-                              Name 438  "bv"
-                              Name 439  "f64v1"
-                              Name 441  "f64v2"
-                              Name 459  "f64v"
-                              Name 461  "if64v"
-                              Name 518  "S"
-                              MemberName 518(S) 0  "x"
-                              MemberName 518(S) 1  "y"
-                              MemberName 518(S) 2  "z"
-                              Name 520  "B1"
-                              MemberName 520(B1) 0  "a"
-                              MemberName 520(B1) 1  "b"
-                              MemberName 520(B1) 2  "c"
-                              MemberName 520(B1) 3  "d"
-                              MemberName 520(B1) 4  "e"
-                              MemberName 520(B1) 5  "f"
-                              MemberName 520(B1) 6  "g"
-                              MemberName 520(B1) 7  "h"
-                              Name 522  ""
-                              Name 523  "sf16"
-                              Name 525  "sf"
-                              Name 526  "sd"
-                              Name 527  "f16_to_f"
-                              Name 529  "f16_to_d"
-                              Name 530  "f_to_f16"
-                              Name 531  "d_to_f16"
-                              Decorate 461(if64v) Flat
-                              Decorate 461(if64v) Location 0
-                              Decorate 516 ArrayStride 16
-                              Decorate 517 ArrayStride 64
-                              MemberDecorate 518(S) 0 Offset 0
-                              MemberDecorate 518(S) 1 Offset 16
-                              MemberDecorate 518(S) 2 Offset 32
-                              Decorate 519 ArrayStride 64
-                              MemberDecorate 520(B1) 0 Offset 0
-                              MemberDecorate 520(B1) 1 Offset 16
-                              MemberDecorate 520(B1) 2 Offset 32
-                              MemberDecorate 520(B1) 3 Offset 64
-                              MemberDecorate 520(B1) 4 ColMajor
-                              MemberDecorate 520(B1) 4 Offset 96
-                              MemberDecorate 520(B1) 4 MatrixStride 32
-                              MemberDecorate 520(B1) 5 ColMajor
-                              MemberDecorate 520(B1) 5 Offset 160
-                              MemberDecorate 520(B1) 5 MatrixStride 32
-                              MemberDecorate 520(B1) 6 Offset 288
-                              MemberDecorate 520(B1) 7 Offset 352
-                              Decorate 520(B1) Block
-                              Decorate 522 DescriptorSet 0
-                              Decorate 522 Binding 0
-                              Decorate 523(sf16) SpecId 100
-                              Decorate 525(sf) SpecId 101
-                              Decorate 526(sd) SpecId 102
+                              Name 12  "builtinTranscendentalFuncs("
+                              Name 14  "builtinCommonFuncs("
+                              Name 16  "builtinGeometryFuncs("
+                              Name 18  "builtinMatrixFuncs("
+                              Name 20  "builtinVecRelFuncs("
+                              Name 22  "builtinFragProcFuncs("
+                              Name 27  "f64v"
+                              Name 38  "f64v"
+                              Name 60  "f64m"
+                              Name 83  "f64"
+                              Name 107  "b"
+                              Name 149  "f64v"
+                              Name 152  "bv"
+                              Name 163  "f16v"
+                              Name 171  "i8v"
+                              Name 177  "i16v"
+                              Name 183  "i32v"
+                              Name 189  "i64v"
+                              Name 195  "u8v"
+                              Name 201  "u16v"
+                              Name 206  "u32v"
+                              Name 212  "u64v"
+                              Name 215  "f64v2"
+                              Name 216  "f64v1"
+                              Name 221  "f64v2"
+                              Name 222  "f64v1"
+                              Name 243  "f64"
+                              Name 247  "f64v3"
+                              Name 287  "bv"
+                              Name 308  "b"
+                              Name 318  "iv"
+                              Name 319  "ResType"
+                              Name 326  "f64"
+                              Name 327  "f64v1"
+                              Name 331  "f64v2"
+                              Name 337  "f64v3"
+                              Name 356  "f64m3"
+                              Name 357  "f64m1"
+                              Name 359  "f64m2"
+                              Name 368  "f64v1"
+                              Name 370  "f64v2"
+                              Name 375  "f64m4"
+                              Name 378  "f64"
+                              Name 381  "f64m5"
+                              Name 387  "f64m6"
+                              Name 388  "f64m7"
+                              Name 391  "bv"
+                              Name 392  "f64v1"
+                              Name 394  "f64v2"
+                              Name 412  "f64v"
+                              Name 414  "if64v"
+                              Name 471  "S"
+                              MemberName 471(S) 0  "x"
+                              MemberName 471(S) 1  "y"
+                              MemberName 471(S) 2  "z"
+                              Name 473  "B1"
+                              MemberName 473(B1) 0  "a"
+                              MemberName 473(B1) 1  "b"
+                              MemberName 473(B1) 2  "c"
+                              MemberName 473(B1) 3  "d"
+                              MemberName 473(B1) 4  "e"
+                              MemberName 473(B1) 5  "f"
+                              MemberName 473(B1) 6  "g"
+                              MemberName 473(B1) 7  "h"
+                              Name 475  ""
+                              Name 476  "sf16"
+                              Name 478  "sf"
+                              Name 479  "sd"
+                              Name 480  "f16_to_f"
+                              Name 482  "f16_to_d"
+                              Name 483  "f_to_f16"
+                              Name 484  "d_to_f16"
+                              Decorate 414(if64v) Flat
+                              Decorate 414(if64v) Location 0
+                              Decorate 469 ArrayStride 16
+                              Decorate 470 ArrayStride 64
+                              MemberDecorate 471(S) 0 Offset 0
+                              MemberDecorate 471(S) 1 Offset 16
+                              MemberDecorate 471(S) 2 Offset 32
+                              Decorate 472 ArrayStride 64
+                              MemberDecorate 473(B1) 0 Offset 0
+                              MemberDecorate 473(B1) 1 Offset 16
+                              MemberDecorate 473(B1) 2 Offset 32
+                              MemberDecorate 473(B1) 3 Offset 64
+                              MemberDecorate 473(B1) 4 ColMajor
+                              MemberDecorate 473(B1) 4 Offset 96
+                              MemberDecorate 473(B1) 4 MatrixStride 32
+                              MemberDecorate 473(B1) 5 ColMajor
+                              MemberDecorate 473(B1) 5 Offset 160
+                              MemberDecorate 473(B1) 5 MatrixStride 32
+                              MemberDecorate 473(B1) 6 Offset 288
+                              MemberDecorate 473(B1) 7 Offset 352
+                              Decorate 473(B1) Block
+                              Decorate 475 DescriptorSet 0
+                              Decorate 475 Binding 0
+                              Decorate 476(sf16) SpecId 100
+                              Decorate 478(sf) SpecId 101
+                              Decorate 479(sd) SpecId 102
                2:             TypeVoid
                3:             TypeFunction 2
-              26:             TypeFloat 64
-              27:             TypeVector 26(float64_t) 2
-              28:             TypePointer Function 27(f64vec2)
-              30:26(float64_t) Constant 2696277389 1051772663
-              31:             TypeInt 32 0
-              32:     31(int) Constant 0
-              33:             TypePointer Function 26(float64_t)
-              35:26(float64_t) Constant 0 3218079744
-              36:26(float64_t) Constant 3951369912 1067366481
-              37: 27(f64vec2) ConstantComposite 35 36
-              54:26(float64_t) Constant 0 1072693248
-              60:             TypeMatrix 27(f64vec2) 2
-              61:             TypePointer Function 60
-              88:     31(int) Constant 1
-             107:             TypeBool
-             108:             TypePointer Function 107(bool)
-             149:             TypeVector 26(float64_t) 3
-             150:             TypePointer Function 149(f64vec3)
-             152:             TypeVector 107(bool) 3
-             153:             TypePointer Function 152(bvec3)
-             156:26(float64_t) Constant 0 0
-             157:149(f64vec3) ConstantComposite 156 156 156
-             158:149(f64vec3) ConstantComposite 54 54 54
-             162:             TypeFloat 16
-             163:             TypeVector 162(float16_t) 3
-             164:             TypePointer Function 163(f16vec3)
-             170:             TypeInt 8 1
-             171:             TypeVector 170(int8_t) 3
-             172:             TypePointer Function 171(i8vec3)
-             176:             TypeInt 16 1
-             177:             TypeVector 176(int16_t) 3
-             178:             TypePointer Function 177(i16vec3)
-             182:             TypeInt 32 1
-             183:             TypeVector 182(int) 3
-             184:             TypePointer Function 183(ivec3)
-             188:             TypeInt 64 1
-             189:             TypeVector 188(int64_t) 3
-             190:             TypePointer Function 189(i64vec3)
-             194:             TypeInt 8 0
-             195:             TypeVector 194(int8_t) 3
-             196:             TypePointer Function 195(i8vec3)
-             200:             TypeInt 16 0
-             201:             TypeVector 200(int16_t) 3
-             202:             TypePointer Function 201(i16vec3)
-             206:             TypeVector 31(int) 3
-             207:             TypePointer Function 206(ivec3)
-             211:             TypeInt 64 0
-             212:             TypeVector 211(int64_t) 3
-             213:             TypePointer Function 212(i64vec3)
-             217:             TypeVector 26(float64_t) 4
-             218:             TypePointer Function 217(f64vec4)
-    367(ResType):             TypeStruct 149(f64vec3) 183(ivec3)
-             402:             TypeMatrix 149(f64vec3) 2
-             403:             TypePointer Function 402
-             421:             TypeMatrix 27(f64vec2) 3
-             422:             TypePointer Function 421
-             427:             TypeMatrix 149(f64vec3) 3
-             428:             TypePointer Function 427
-             432:             TypeMatrix 217(f64vec4) 4
-             433:             TypePointer Function 432
-             460:             TypePointer Input 149(f64vec3)
-      461(if64v):    460(ptr) Variable Input
-             462:             TypePointer Input 26(float64_t)
-             505:    182(int) Constant 1
-             512:26(float64_t) Constant 0 1071644672
-             513: 27(f64vec2) ConstantComposite 512 512
-             515:     31(int) Constant 2
-             516:             TypeArray 26(float64_t) 515
-             517:             TypeArray 402 515
-          518(S):             TypeStruct 26(float64_t) 27(f64vec2) 149(f64vec3)
-             519:             TypeArray 518(S) 515
-         520(B1):             TypeStruct 26(float64_t) 27(f64vec2) 149(f64vec3) 516 402 517 518(S) 519
-             521:             TypePointer Uniform 520(B1)
-             522:    521(ptr) Variable Uniform
-       523(sf16):162(float16_t) SpecConstant 12288
-             524:             TypeFloat 32
-         525(sf):  524(float) SpecConstant 1048576000
-         526(sd):26(float64_t) SpecConstant 0 1071644672
-   527(f16_to_f):  524(float) SpecConstantOp 115 523(sf16)
-             528:  524(float) SpecConstantOp 115 523(sf16)
-   529(f16_to_d):26(float64_t) SpecConstantOp 115 528
-   530(f_to_f16):162(float16_t) SpecConstantOp 115 525(sf)
-   531(d_to_f16):162(float16_t) SpecConstantOp 115 526(sd)
+              24:             TypeFloat 64
+              25:             TypeVector 24(float64_t) 2
+              26:             TypePointer Function 25(f64vec2)
+              28:24(float64_t) Constant 2696277389 1051772663
+              29:             TypeInt 32 0
+              30:     29(int) Constant 0
+              31:             TypePointer Function 24(float64_t)
+              33:24(float64_t) Constant 0 3218079744
+              34:24(float64_t) Constant 3951369912 1067366481
+              35: 25(f64vec2) ConstantComposite 33 34
+              52:24(float64_t) Constant 0 1072693248
+              58:             TypeMatrix 25(f64vec2) 2
+              59:             TypePointer Function 58
+              86:     29(int) Constant 1
+             105:             TypeBool
+             106:             TypePointer Function 105(bool)
+             147:             TypeVector 24(float64_t) 3
+             148:             TypePointer Function 147(f64vec3)
+             150:             TypeVector 105(bool) 3
+             151:             TypePointer Function 150(bvec3)
+             154:24(float64_t) Constant 0 0
+             155:147(f64vec3) ConstantComposite 154 154 154
+             156:147(f64vec3) ConstantComposite 52 52 52
+             160:             TypeFloat 16
+             161:             TypeVector 160(float16_t) 3
+             162:             TypePointer Function 161(f16vec3)
+             168:             TypeInt 8 1
+             169:             TypeVector 168(int8_t) 3
+             170:             TypePointer Function 169(i8vec3)
+             174:             TypeInt 16 1
+             175:             TypeVector 174(int16_t) 3
+             176:             TypePointer Function 175(i16vec3)
+             180:             TypeInt 32 1
+             181:             TypeVector 180(int) 3
+             182:             TypePointer Function 181(ivec3)
+             186:             TypeInt 64 1
+             187:             TypeVector 186(int64_t) 3
+             188:             TypePointer Function 187(i64vec3)
+             192:             TypeInt 8 0
+             193:             TypeVector 192(int8_t) 3
+             194:             TypePointer Function 193(i8vec3)
+             198:             TypeInt 16 0
+             199:             TypeVector 198(int16_t) 3
+             200:             TypePointer Function 199(i16vec3)
+             204:             TypeVector 29(int) 3
+             205:             TypePointer Function 204(ivec3)
+             209:             TypeInt 64 0
+             210:             TypeVector 209(int64_t) 3
+             211:             TypePointer Function 210(i64vec3)
+    319(ResType):             TypeStruct 147(f64vec3) 181(ivec3)
+             354:             TypeMatrix 147(f64vec3) 2
+             355:             TypePointer Function 354
+             373:             TypeMatrix 25(f64vec2) 3
+             374:             TypePointer Function 373
+             379:             TypeMatrix 147(f64vec3) 3
+             380:             TypePointer Function 379
+             384:             TypeVector 24(float64_t) 4
+             385:             TypeMatrix 384(f64vec4) 4
+             386:             TypePointer Function 385
+             413:             TypePointer Input 147(f64vec3)
+      414(if64v):    413(ptr) Variable Input
+             415:             TypePointer Input 24(float64_t)
+             458:    180(int) Constant 1
+             465:24(float64_t) Constant 0 1071644672
+             466: 25(f64vec2) ConstantComposite 465 465
+             468:     29(int) Constant 2
+             469:             TypeArray 24(float64_t) 468
+             470:             TypeArray 354 468
+          471(S):             TypeStruct 24(float64_t) 25(f64vec2) 147(f64vec3)
+             472:             TypeArray 471(S) 468
+         473(B1):             TypeStruct 24(float64_t) 25(f64vec2) 147(f64vec3) 469 354 470 471(S) 472
+             474:             TypePointer Uniform 473(B1)
+             475:    474(ptr) Variable Uniform
+       476(sf16):160(float16_t) SpecConstant 12288
+             477:             TypeFloat 32
+         478(sf):  477(float) SpecConstant 1048576000
+         479(sd):24(float64_t) SpecConstant 0 1071644672
+   480(f16_to_f):  477(float) SpecConstantOp 115 476(sf16)
+             481:  477(float) SpecConstantOp 115 476(sf16)
+   482(f16_to_d):24(float64_t) SpecConstantOp 115 481
+   483(f_to_f16):160(float16_t) SpecConstantOp 115 478(sf)
+   484(d_to_f16):160(float16_t) SpecConstantOp 115 479(sd)
          4(main):           2 Function None 3
                5:             Label
                               Return
                               FunctionEnd
      6(literal():           2 Function None 3
                7:             Label
-        29(f64v):     28(ptr) Variable Function
-              34:     33(ptr) AccessChain 29(f64v) 32
-                              Store 34 30
-              38: 27(f64vec2) Load 29(f64v)
-              39: 27(f64vec2) FAdd 38 37
-                              Store 29(f64v) 39
+        27(f64v):     26(ptr) Variable Function
+              32:     31(ptr) AccessChain 27(f64v) 30
+                              Store 32 28
+              36: 25(f64vec2) Load 27(f64v)
+              37: 25(f64vec2) FAdd 36 35
+                              Store 27(f64v) 37
                               Return
                               FunctionEnd
    8(operators():           2 Function None 3
                9:             Label
-        40(f64v):     28(ptr) Variable Function
-        62(f64m):     61(ptr) Variable Function
-         85(f64):     33(ptr) Variable Function
-          109(b):    108(ptr) Variable Function
-              41: 27(f64vec2) Load 40(f64v)
-              42: 27(f64vec2) Load 40(f64v)
-              43: 27(f64vec2) FAdd 42 41
-                              Store 40(f64v) 43
-              44: 27(f64vec2) Load 40(f64v)
-              45: 27(f64vec2) Load 40(f64v)
-              46: 27(f64vec2) FSub 45 44
-                              Store 40(f64v) 46
-              47: 27(f64vec2) Load 40(f64v)
-              48: 27(f64vec2) Load 40(f64v)
-              49: 27(f64vec2) FMul 48 47
-                              Store 40(f64v) 49
-              50: 27(f64vec2) Load 40(f64v)
-              51: 27(f64vec2) Load 40(f64v)
-              52: 27(f64vec2) FDiv 51 50
-                              Store 40(f64v) 52
-              53: 27(f64vec2) Load 40(f64v)
-              55: 27(f64vec2) CompositeConstruct 54 54
-              56: 27(f64vec2) FAdd 53 55
-                              Store 40(f64v) 56
-              57: 27(f64vec2) Load 40(f64v)
-              58: 27(f64vec2) CompositeConstruct 54 54
-              59: 27(f64vec2) FSub 57 58
-                              Store 40(f64v) 59
-              63:          60 Load 62(f64m)
-              64: 27(f64vec2) CompositeConstruct 54 54
-              65: 27(f64vec2) CompositeExtract 63 0
-              66: 27(f64vec2) FAdd 65 64
-              67: 27(f64vec2) CompositeExtract 63 1
-              68: 27(f64vec2) FAdd 67 64
-              69:          60 CompositeConstruct 66 68
-                              Store 62(f64m) 69
-              70:          60 Load 62(f64m)
-              71: 27(f64vec2) CompositeConstruct 54 54
-              72: 27(f64vec2) CompositeExtract 70 0
-              73: 27(f64vec2) FSub 72 71
-              74: 27(f64vec2) CompositeExtract 70 1
-              75: 27(f64vec2) FSub 74 71
-              76:          60 CompositeConstruct 73 75
-                              Store 62(f64m) 76
-              77: 27(f64vec2) Load 40(f64v)
-              78: 27(f64vec2) FNegate 77
-                              Store 40(f64v) 78
-              79:          60 Load 62(f64m)
-              80: 27(f64vec2) CompositeExtract 79 0
-              81: 27(f64vec2) FNegate 80
-              82: 27(f64vec2) CompositeExtract 79 1
-              83: 27(f64vec2) FNegate 82
-              84:          60 CompositeConstruct 81 83
-                              Store 62(f64m) 84
-              86:     33(ptr) AccessChain 40(f64v) 32
-              87:26(float64_t) Load 86
-              89:     33(ptr) AccessChain 40(f64v) 88
-              90:26(float64_t) Load 89
-              91:26(float64_t) FAdd 87 90
-                              Store 85(f64) 91
-              92:     33(ptr) AccessChain 40(f64v) 32
-              93:26(float64_t) Load 92
-              94:     33(ptr) AccessChain 40(f64v) 88
-              95:26(float64_t) Load 94
-              96:26(float64_t) FSub 93 95
-                              Store 85(f64) 96
-              97:     33(ptr) AccessChain 40(f64v) 32
-              98:26(float64_t) Load 97
-              99:     33(ptr) AccessChain 40(f64v) 88
-             100:26(float64_t) Load 99
-             101:26(float64_t) FMul 98 100
-                              Store 85(f64) 101
-             102:     33(ptr) AccessChain 40(f64v) 32
-             103:26(float64_t) Load 102
-             104:     33(ptr) AccessChain 40(f64v) 88
-             105:26(float64_t) Load 104
-             106:26(float64_t) FDiv 103 105
-                              Store 85(f64) 106
-             110:     33(ptr) AccessChain 40(f64v) 32
-             111:26(float64_t) Load 110
-             112:26(float64_t) Load 85(f64)
-             113:   107(bool) FUnordNotEqual 111 112
-                              Store 109(b) 113
-             114:     33(ptr) AccessChain 40(f64v) 88
-             115:26(float64_t) Load 114
-             116:26(float64_t) Load 85(f64)
-             117:   107(bool) FOrdEqual 115 116
-                              Store 109(b) 117
-             118:     33(ptr) AccessChain 40(f64v) 32
-             119:26(float64_t) Load 118
-             120:26(float64_t) Load 85(f64)
-             121:   107(bool) FOrdGreaterThan 119 120
-                              Store 109(b) 121
-             122:     33(ptr) AccessChain 40(f64v) 88
-             123:26(float64_t) Load 122
-             124:26(float64_t) Load 85(f64)
-             125:   107(bool) FOrdLessThan 123 124
-                              Store 109(b) 125
-             126:     33(ptr) AccessChain 40(f64v) 32
-             127:26(float64_t) Load 126
-             128:26(float64_t) Load 85(f64)
-             129:   107(bool) FOrdGreaterThanEqual 127 128
-                              Store 109(b) 129
-             130:     33(ptr) AccessChain 40(f64v) 88
-             131:26(float64_t) Load 130
-             132:26(float64_t) Load 85(f64)
-             133:   107(bool) FOrdLessThanEqual 131 132
-                              Store 109(b) 133
-             134: 27(f64vec2) Load 40(f64v)
-             135:26(float64_t) Load 85(f64)
-             136: 27(f64vec2) VectorTimesScalar 134 135
-                              Store 40(f64v) 136
-             137:          60 Load 62(f64m)
-             138:26(float64_t) Load 85(f64)
-             139:          60 MatrixTimesScalar 137 138
-                              Store 62(f64m) 139
-             140:          60 Load 62(f64m)
-             141: 27(f64vec2) Load 40(f64v)
-             142: 27(f64vec2) MatrixTimesVector 140 141
-                              Store 40(f64v) 142
-             143: 27(f64vec2) Load 40(f64v)
-             144:          60 Load 62(f64m)
-             145: 27(f64vec2) VectorTimesMatrix 143 144
-                              Store 40(f64v) 145
-             146:          60 Load 62(f64m)
-             147:          60 Load 62(f64m)
-             148:          60 MatrixTimesMatrix 146 147
-                              Store 62(f64m) 148
+        38(f64v):     26(ptr) Variable Function
+        60(f64m):     59(ptr) Variable Function
+         83(f64):     31(ptr) Variable Function
+          107(b):    106(ptr) Variable Function
+              39: 25(f64vec2) Load 38(f64v)
+              40: 25(f64vec2) Load 38(f64v)
+              41: 25(f64vec2) FAdd 40 39
+                              Store 38(f64v) 41
+              42: 25(f64vec2) Load 38(f64v)
+              43: 25(f64vec2) Load 38(f64v)
+              44: 25(f64vec2) FSub 43 42
+                              Store 38(f64v) 44
+              45: 25(f64vec2) Load 38(f64v)
+              46: 25(f64vec2) Load 38(f64v)
+              47: 25(f64vec2) FMul 46 45
+                              Store 38(f64v) 47
+              48: 25(f64vec2) Load 38(f64v)
+              49: 25(f64vec2) Load 38(f64v)
+              50: 25(f64vec2) FDiv 49 48
+                              Store 38(f64v) 50
+              51: 25(f64vec2) Load 38(f64v)
+              53: 25(f64vec2) CompositeConstruct 52 52
+              54: 25(f64vec2) FAdd 51 53
+                              Store 38(f64v) 54
+              55: 25(f64vec2) Load 38(f64v)
+              56: 25(f64vec2) CompositeConstruct 52 52
+              57: 25(f64vec2) FSub 55 56
+                              Store 38(f64v) 57
+              61:          58 Load 60(f64m)
+              62: 25(f64vec2) CompositeConstruct 52 52
+              63: 25(f64vec2) CompositeExtract 61 0
+              64: 25(f64vec2) FAdd 63 62
+              65: 25(f64vec2) CompositeExtract 61 1
+              66: 25(f64vec2) FAdd 65 62
+              67:          58 CompositeConstruct 64 66
+                              Store 60(f64m) 67
+              68:          58 Load 60(f64m)
+              69: 25(f64vec2) CompositeConstruct 52 52
+              70: 25(f64vec2) CompositeExtract 68 0
+              71: 25(f64vec2) FSub 70 69
+              72: 25(f64vec2) CompositeExtract 68 1
+              73: 25(f64vec2) FSub 72 69
+              74:          58 CompositeConstruct 71 73
+                              Store 60(f64m) 74
+              75: 25(f64vec2) Load 38(f64v)
+              76: 25(f64vec2) FNegate 75
+                              Store 38(f64v) 76
+              77:          58 Load 60(f64m)
+              78: 25(f64vec2) CompositeExtract 77 0
+              79: 25(f64vec2) FNegate 78
+              80: 25(f64vec2) CompositeExtract 77 1
+              81: 25(f64vec2) FNegate 80
+              82:          58 CompositeConstruct 79 81
+                              Store 60(f64m) 82
+              84:     31(ptr) AccessChain 38(f64v) 30
+              85:24(float64_t) Load 84
+              87:     31(ptr) AccessChain 38(f64v) 86
+              88:24(float64_t) Load 87
+              89:24(float64_t) FAdd 85 88
+                              Store 83(f64) 89
+              90:     31(ptr) AccessChain 38(f64v) 30
+              91:24(float64_t) Load 90
+              92:     31(ptr) AccessChain 38(f64v) 86
+              93:24(float64_t) Load 92
+              94:24(float64_t) FSub 91 93
+                              Store 83(f64) 94
+              95:     31(ptr) AccessChain 38(f64v) 30
+              96:24(float64_t) Load 95
+              97:     31(ptr) AccessChain 38(f64v) 86
+              98:24(float64_t) Load 97
+              99:24(float64_t) FMul 96 98
+                              Store 83(f64) 99
+             100:     31(ptr) AccessChain 38(f64v) 30
+             101:24(float64_t) Load 100
+             102:     31(ptr) AccessChain 38(f64v) 86
+             103:24(float64_t) Load 102
+             104:24(float64_t) FDiv 101 103
+                              Store 83(f64) 104
+             108:     31(ptr) AccessChain 38(f64v) 30
+             109:24(float64_t) Load 108
+             110:24(float64_t) Load 83(f64)
+             111:   105(bool) FUnordNotEqual 109 110
+                              Store 107(b) 111
+             112:     31(ptr) AccessChain 38(f64v) 86
+             113:24(float64_t) Load 112
+             114:24(float64_t) Load 83(f64)
+             115:   105(bool) FOrdEqual 113 114
+                              Store 107(b) 115
+             116:     31(ptr) AccessChain 38(f64v) 30
+             117:24(float64_t) Load 116
+             118:24(float64_t) Load 83(f64)
+             119:   105(bool) FOrdGreaterThan 117 118
+                              Store 107(b) 119
+             120:     31(ptr) AccessChain 38(f64v) 86
+             121:24(float64_t) Load 120
+             122:24(float64_t) Load 83(f64)
+             123:   105(bool) FOrdLessThan 121 122
+                              Store 107(b) 123
+             124:     31(ptr) AccessChain 38(f64v) 30
+             125:24(float64_t) Load 124
+             126:24(float64_t) Load 83(f64)
+             127:   105(bool) FOrdGreaterThanEqual 125 126
+                              Store 107(b) 127
+             128:     31(ptr) AccessChain 38(f64v) 86
+             129:24(float64_t) Load 128
+             130:24(float64_t) Load 83(f64)
+             131:   105(bool) FOrdLessThanEqual 129 130
+                              Store 107(b) 131
+             132: 25(f64vec2) Load 38(f64v)
+             133:24(float64_t) Load 83(f64)
+             134: 25(f64vec2) VectorTimesScalar 132 133
+                              Store 38(f64v) 134
+             135:          58 Load 60(f64m)
+             136:24(float64_t) Load 83(f64)
+             137:          58 MatrixTimesScalar 135 136
+                              Store 60(f64m) 137
+             138:          58 Load 60(f64m)
+             139: 25(f64vec2) Load 38(f64v)
+             140: 25(f64vec2) MatrixTimesVector 138 139
+                              Store 38(f64v) 140
+             141: 25(f64vec2) Load 38(f64v)
+             142:          58 Load 60(f64m)
+             143: 25(f64vec2) VectorTimesMatrix 141 142
+                              Store 38(f64v) 143
+             144:          58 Load 60(f64m)
+             145:          58 Load 60(f64m)
+             146:          58 MatrixTimesMatrix 144 145
+                              Store 60(f64m) 146
                               Return
                               FunctionEnd
    10(typeCast():           2 Function None 3
               11:             Label
-       151(f64v):    150(ptr) Variable Function
-         154(bv):    153(ptr) Variable Function
-       165(f16v):    164(ptr) Variable Function
-        173(i8v):    172(ptr) Variable Function
-       179(i16v):    178(ptr) Variable Function
-       185(i32v):    184(ptr) Variable Function
-       191(i64v):    190(ptr) Variable Function
-        197(u8v):    196(ptr) Variable Function
-       203(u16v):    202(ptr) Variable Function
-       208(u32v):    207(ptr) Variable Function
-       214(u64v):    213(ptr) Variable Function
-             155:  152(bvec3) Load 154(bv)
-             159:149(f64vec3) Select 155 158 157
-                              Store 151(f64v) 159
-             160:149(f64vec3) Load 151(f64v)
-             161:  152(bvec3) FUnordNotEqual 160 157
-                              Store 154(bv) 161
-             166:163(f16vec3) Load 165(f16v)
-             167:149(f64vec3) FConvert 166
-                              Store 151(f64v) 167
-             168:149(f64vec3) Load 151(f64v)
-             169:163(f16vec3) FConvert 168
-                              Store 165(f16v) 169
-             174:149(f64vec3) Load 151(f64v)
-             175: 171(i8vec3) ConvertFToS 174
-                              Store 173(i8v) 175
-             180:149(f64vec3) Load 151(f64v)
-             181:177(i16vec3) ConvertFToS 180
-                              Store 179(i16v) 181
-             186:149(f64vec3) Load 151(f64v)
-             187:  183(ivec3) ConvertFToS 186
-                              Store 185(i32v) 187
-             192:149(f64vec3) Load 151(f64v)
-             193:189(i64vec3) ConvertFToS 192
-                              Store 191(i64v) 193
-             198:149(f64vec3) Load 151(f64v)
-             199: 195(i8vec3) ConvertFToU 198
-                              Store 197(u8v) 199
-             204:149(f64vec3) Load 151(f64v)
-             205:201(i16vec3) ConvertFToU 204
-                              Store 203(u16v) 205
-             209:149(f64vec3) Load 151(f64v)
-             210:  206(ivec3) ConvertFToU 209
-                              Store 208(u32v) 210
-             215:149(f64vec3) Load 151(f64v)
-             216:212(i64vec3) ConvertFToU 215
-                              Store 214(u64v) 216
+       149(f64v):    148(ptr) Variable Function
+         152(bv):    151(ptr) Variable Function
+       163(f16v):    162(ptr) Variable Function
+        171(i8v):    170(ptr) Variable Function
+       177(i16v):    176(ptr) Variable Function
+       183(i32v):    182(ptr) Variable Function
+       189(i64v):    188(ptr) Variable Function
+        195(u8v):    194(ptr) Variable Function
+       201(u16v):    200(ptr) Variable Function
+       206(u32v):    205(ptr) Variable Function
+       212(u64v):    211(ptr) Variable Function
+             153:  150(bvec3) Load 152(bv)
+             157:147(f64vec3) Select 153 156 155
+                              Store 149(f64v) 157
+             158:147(f64vec3) Load 149(f64v)
+             159:  150(bvec3) FUnordNotEqual 158 155
+                              Store 152(bv) 159
+             164:161(f16vec3) Load 163(f16v)
+             165:147(f64vec3) FConvert 164
+                              Store 149(f64v) 165
+             166:147(f64vec3) Load 149(f64v)
+             167:161(f16vec3) FConvert 166
+                              Store 163(f16v) 167
+             172:147(f64vec3) Load 149(f64v)
+             173: 169(i8vec3) ConvertFToS 172
+                              Store 171(i8v) 173
+             178:147(f64vec3) Load 149(f64v)
+             179:175(i16vec3) ConvertFToS 178
+                              Store 177(i16v) 179
+             184:147(f64vec3) Load 149(f64v)
+             185:  181(ivec3) ConvertFToS 184
+                              Store 183(i32v) 185
+             190:147(f64vec3) Load 149(f64v)
+             191:187(i64vec3) ConvertFToS 190
+                              Store 189(i64v) 191
+             196:147(f64vec3) Load 149(f64v)
+             197: 193(i8vec3) ConvertFToU 196
+                              Store 195(u8v) 197
+             202:147(f64vec3) Load 149(f64v)
+             203:199(i16vec3) ConvertFToU 202
+                              Store 201(u16v) 203
+             207:147(f64vec3) Load 149(f64v)
+             208:  204(ivec3) ConvertFToU 207
+                              Store 206(u32v) 208
+             213:147(f64vec3) Load 149(f64v)
+             214:210(i64vec3) ConvertFToU 213
+                              Store 212(u64v) 214
                               Return
                               FunctionEnd
-12(builtinAngleTrigFuncs():           2 Function None 3
+12(builtinTranscendentalFuncs():           2 Function None 3
               13:             Label
-      219(f64v2):    218(ptr) Variable Function
-      220(f64v1):    218(ptr) Variable Function
-             221:217(f64vec4) Load 220(f64v1)
-             222:217(f64vec4) ExtInst 1(GLSL.std.450) 11(Radians) 221
-                              Store 219(f64v2) 222
-             223:217(f64vec4) Load 220(f64v1)
-             224:217(f64vec4) ExtInst 1(GLSL.std.450) 12(Degrees) 223
-                              Store 219(f64v2) 224
-             225:217(f64vec4) Load 220(f64v1)
-             226:217(f64vec4) ExtInst 1(GLSL.std.450) 13(Sin) 225
-                              Store 219(f64v2) 226
-             227:217(f64vec4) Load 220(f64v1)
-             228:217(f64vec4) ExtInst 1(GLSL.std.450) 14(Cos) 227
-                              Store 219(f64v2) 228
-             229:217(f64vec4) Load 220(f64v1)
-             230:217(f64vec4) ExtInst 1(GLSL.std.450) 15(Tan) 229
-                              Store 219(f64v2) 230
-             231:217(f64vec4) Load 220(f64v1)
-             232:217(f64vec4) ExtInst 1(GLSL.std.450) 16(Asin) 231
-                              Store 219(f64v2) 232
-             233:217(f64vec4) Load 220(f64v1)
-             234:217(f64vec4) ExtInst 1(GLSL.std.450) 17(Acos) 233
-                              Store 219(f64v2) 234
-             235:217(f64vec4) Load 220(f64v1)
-             236:217(f64vec4) Load 219(f64v2)
-             237:217(f64vec4) ExtInst 1(GLSL.std.450) 25(Atan2) 235 236
-                              Store 219(f64v2) 237
-             238:217(f64vec4) Load 220(f64v1)
-             239:217(f64vec4) ExtInst 1(GLSL.std.450) 18(Atan) 238
-                              Store 219(f64v2) 239
-             240:217(f64vec4) Load 220(f64v1)
-             241:217(f64vec4) ExtInst 1(GLSL.std.450) 19(Sinh) 240
-                              Store 219(f64v2) 241
-             242:217(f64vec4) Load 220(f64v1)
-             243:217(f64vec4) ExtInst 1(GLSL.std.450) 20(Cosh) 242
-                              Store 219(f64v2) 243
-             244:217(f64vec4) Load 220(f64v1)
-             245:217(f64vec4) ExtInst 1(GLSL.std.450) 21(Tanh) 244
-                              Store 219(f64v2) 245
-             246:217(f64vec4) Load 220(f64v1)
-             247:217(f64vec4) ExtInst 1(GLSL.std.450) 22(Asinh) 246
-                              Store 219(f64v2) 247
-             248:217(f64vec4) Load 220(f64v1)
-             249:217(f64vec4) ExtInst 1(GLSL.std.450) 23(Acosh) 248
-                              Store 219(f64v2) 249
-             250:217(f64vec4) Load 220(f64v1)
-             251:217(f64vec4) ExtInst 1(GLSL.std.450) 24(Atanh) 250
-                              Store 219(f64v2) 251
+      215(f64v2):     26(ptr) Variable Function
+      216(f64v1):     26(ptr) Variable Function
+             217: 25(f64vec2) Load 216(f64v1)
+             218: 25(f64vec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 217
+                              Store 215(f64v2) 218
+             219: 25(f64vec2) Load 216(f64v1)
+             220: 25(f64vec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 219
+                              Store 215(f64v2) 220
                               Return
                               FunctionEnd
-14(builtinExpFuncs():           2 Function None 3
+14(builtinCommonFuncs():           2 Function None 3
               15:             Label
-      252(f64v2):     28(ptr) Variable Function
-      253(f64v1):     28(ptr) Variable Function
-             254: 27(f64vec2) Load 253(f64v1)
-             255: 27(f64vec2) Load 252(f64v2)
-             256: 27(f64vec2) ExtInst 1(GLSL.std.450) 26(Pow) 254 255
-                              Store 252(f64v2) 256
-             257: 27(f64vec2) Load 253(f64v1)
-             258: 27(f64vec2) ExtInst 1(GLSL.std.450) 27(Exp) 257
-                              Store 252(f64v2) 258
-             259: 27(f64vec2) Load 253(f64v1)
-             260: 27(f64vec2) ExtInst 1(GLSL.std.450) 28(Log) 259
-                              Store 252(f64v2) 260
-             261: 27(f64vec2) Load 253(f64v1)
-             262: 27(f64vec2) ExtInst 1(GLSL.std.450) 29(Exp2) 261
-                              Store 252(f64v2) 262
-             263: 27(f64vec2) Load 253(f64v1)
-             264: 27(f64vec2) ExtInst 1(GLSL.std.450) 30(Log2) 263
-                              Store 252(f64v2) 264
-             265: 27(f64vec2) Load 253(f64v1)
-             266: 27(f64vec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 265
-                              Store 252(f64v2) 266
-             267: 27(f64vec2) Load 253(f64v1)
-             268: 27(f64vec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 267
-                              Store 252(f64v2) 268
+      221(f64v2):    148(ptr) Variable Function
+      222(f64v1):    148(ptr) Variable Function
+        243(f64):     31(ptr) Variable Function
+      247(f64v3):    148(ptr) Variable Function
+         287(bv):    151(ptr) Variable Function
+          308(b):    106(ptr) Variable Function
+         318(iv):    182(ptr) Variable Function
+             223:147(f64vec3) Load 222(f64v1)
+             224:147(f64vec3) ExtInst 1(GLSL.std.450) 4(FAbs) 223
+                              Store 221(f64v2) 224
+             225:147(f64vec3) Load 222(f64v1)
+             226:147(f64vec3) ExtInst 1(GLSL.std.450) 6(FSign) 225
+                              Store 221(f64v2) 226
+             227:147(f64vec3) Load 222(f64v1)
+             228:147(f64vec3) ExtInst 1(GLSL.std.450) 8(Floor) 227
+                              Store 221(f64v2) 228
+             229:147(f64vec3) Load 222(f64v1)
+             230:147(f64vec3) ExtInst 1(GLSL.std.450) 3(Trunc) 229
+                              Store 221(f64v2) 230
+             231:147(f64vec3) Load 222(f64v1)
+             232:147(f64vec3) ExtInst 1(GLSL.std.450) 1(Round) 231
+                              Store 221(f64v2) 232
+             233:147(f64vec3) Load 222(f64v1)
+             234:147(f64vec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 233
+                              Store 221(f64v2) 234
+             235:147(f64vec3) Load 222(f64v1)
+             236:147(f64vec3) ExtInst 1(GLSL.std.450) 9(Ceil) 235
+                              Store 221(f64v2) 236
+             237:147(f64vec3) Load 222(f64v1)
+             238:147(f64vec3) ExtInst 1(GLSL.std.450) 10(Fract) 237
+                              Store 221(f64v2) 238
+             239:147(f64vec3) Load 222(f64v1)
+             240:147(f64vec3) Load 221(f64v2)
+             241:147(f64vec3) FMod 239 240
+                              Store 221(f64v2) 241
+             242:147(f64vec3) Load 222(f64v1)
+             244:24(float64_t) Load 243(f64)
+             245:147(f64vec3) CompositeConstruct 244 244 244
+             246:147(f64vec3) FMod 242 245
+                              Store 221(f64v2) 246
+             248:147(f64vec3) Load 222(f64v1)
+             249:147(f64vec3) ExtInst 1(GLSL.std.450) 35(Modf) 248 221(f64v2)
+                              Store 247(f64v3) 249
+             250:147(f64vec3) Load 222(f64v1)
+             251:147(f64vec3) Load 221(f64v2)
+             252:147(f64vec3) ExtInst 1(GLSL.std.450) 37(FMin) 250 251
+                              Store 247(f64v3) 252
+             253:147(f64vec3) Load 222(f64v1)
+             254:24(float64_t) Load 243(f64)
+             255:147(f64vec3) CompositeConstruct 254 254 254
+             256:147(f64vec3) ExtInst 1(GLSL.std.450) 37(FMin) 253 255
+                              Store 247(f64v3) 256
+             257:147(f64vec3) Load 222(f64v1)
+             258:147(f64vec3) Load 221(f64v2)
+             259:147(f64vec3) ExtInst 1(GLSL.std.450) 40(FMax) 257 258
+                              Store 247(f64v3) 259
+             260:147(f64vec3) Load 222(f64v1)
+             261:24(float64_t) Load 243(f64)
+             262:147(f64vec3) CompositeConstruct 261 261 261
+             263:147(f64vec3) ExtInst 1(GLSL.std.450) 40(FMax) 260 262
+                              Store 247(f64v3) 263
+             264:147(f64vec3) Load 222(f64v1)
+             265:24(float64_t) Load 243(f64)
+             266:     31(ptr) AccessChain 221(f64v2) 30
+             267:24(float64_t) Load 266
+             268:147(f64vec3) CompositeConstruct 265 265 265
+             269:147(f64vec3) CompositeConstruct 267 267 267
+             270:147(f64vec3) ExtInst 1(GLSL.std.450) 43(FClamp) 264 268 269
+                              Store 247(f64v3) 270
+             271:147(f64vec3) Load 222(f64v1)
+             272:147(f64vec3) Load 221(f64v2)
+             273:24(float64_t) Load 243(f64)
+             274:147(f64vec3) CompositeConstruct 273 273 273
+             275:147(f64vec3) ExtInst 1(GLSL.std.450) 43(FClamp) 271 272 274
+                              Store 247(f64v3) 275
+             276:147(f64vec3) Load 222(f64v1)
+             277:147(f64vec3) Load 221(f64v2)
+             278:24(float64_t) Load 243(f64)
+             279:147(f64vec3) CompositeConstruct 278 278 278
+             280:147(f64vec3) ExtInst 1(GLSL.std.450) 46(FMix) 276 277 279
+                              Store 247(f64v3) 280
+             281:147(f64vec3) Load 222(f64v1)
+             282:147(f64vec3) Load 221(f64v2)
+             283:147(f64vec3) Load 247(f64v3)
+             284:147(f64vec3) ExtInst 1(GLSL.std.450) 46(FMix) 281 282 283
+                              Store 247(f64v3) 284
+             285:147(f64vec3) Load 222(f64v1)
+             286:147(f64vec3) Load 221(f64v2)
+             288:  150(bvec3) Load 287(bv)
+             289:147(f64vec3) Select 288 286 285
+                              Store 247(f64v3) 289
+             290:147(f64vec3) Load 222(f64v1)
+             291:147(f64vec3) Load 221(f64v2)
+             292:147(f64vec3) ExtInst 1(GLSL.std.450) 48(Step) 290 291
+                              Store 247(f64v3) 292
+             293:24(float64_t) Load 243(f64)
+             294:147(f64vec3) Load 247(f64v3)
+             295:147(f64vec3) CompositeConstruct 293 293 293
+             296:147(f64vec3) ExtInst 1(GLSL.std.450) 48(Step) 295 294
+                              Store 247(f64v3) 296
+             297:147(f64vec3) Load 222(f64v1)
+             298:147(f64vec3) Load 221(f64v2)
+             299:147(f64vec3) Load 247(f64v3)
+             300:147(f64vec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 297 298 299
+                              Store 247(f64v3) 300
+             301:24(float64_t) Load 243(f64)
+             302:     31(ptr) AccessChain 222(f64v1) 30
+             303:24(float64_t) Load 302
+             304:147(f64vec3) Load 221(f64v2)
+             305:147(f64vec3) CompositeConstruct 301 301 301
+             306:147(f64vec3) CompositeConstruct 303 303 303
+             307:147(f64vec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 305 306 304
+                              Store 247(f64v3) 307
+             309:24(float64_t) Load 243(f64)
+             310:   105(bool) IsNan 309
+                              Store 308(b) 310
+             311:147(f64vec3) Load 222(f64v1)
+             312:  150(bvec3) IsInf 311
+                              Store 287(bv) 312
+             313:147(f64vec3) Load 222(f64v1)
+             314:147(f64vec3) Load 221(f64v2)
+             315:147(f64vec3) Load 247(f64v3)
+             316:147(f64vec3) ExtInst 1(GLSL.std.450) 50(Fma) 313 314 315
+                              Store 247(f64v3) 316
+             317:147(f64vec3) Load 222(f64v1)
+             320:319(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 317
+             321:  181(ivec3) CompositeExtract 320 1
+                              Store 318(iv) 321
+             322:147(f64vec3) CompositeExtract 320 0
+                              Store 221(f64v2) 322
+             323:147(f64vec3) Load 222(f64v1)
+             324:  181(ivec3) Load 318(iv)
+             325:147(f64vec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 323 324
+                              Store 221(f64v2) 325
                               Return
                               FunctionEnd
-16(builtinCommonFuncs():           2 Function None 3
+16(builtinGeometryFuncs():           2 Function None 3
               17:             Label
-      269(f64v2):    150(ptr) Variable Function
-      270(f64v1):    150(ptr) Variable Function
-        291(f64):     33(ptr) Variable Function
-      295(f64v3):    150(ptr) Variable Function
-         335(bv):    153(ptr) Variable Function
-          356(b):    108(ptr) Variable Function
-         366(iv):    184(ptr) Variable Function
-             271:149(f64vec3) Load 270(f64v1)
-             272:149(f64vec3) ExtInst 1(GLSL.std.450) 4(FAbs) 271
-                              Store 269(f64v2) 272
-             273:149(f64vec3) Load 270(f64v1)
-             274:149(f64vec3) ExtInst 1(GLSL.std.450) 6(FSign) 273
-                              Store 269(f64v2) 274
-             275:149(f64vec3) Load 270(f64v1)
-             276:149(f64vec3) ExtInst 1(GLSL.std.450) 8(Floor) 275
-                              Store 269(f64v2) 276
-             277:149(f64vec3) Load 270(f64v1)
-             278:149(f64vec3) ExtInst 1(GLSL.std.450) 3(Trunc) 277
-                              Store 269(f64v2) 278
-             279:149(f64vec3) Load 270(f64v1)
-             280:149(f64vec3) ExtInst 1(GLSL.std.450) 1(Round) 279
-                              Store 269(f64v2) 280
-             281:149(f64vec3) Load 270(f64v1)
-             282:149(f64vec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 281
-                              Store 269(f64v2) 282
-             283:149(f64vec3) Load 270(f64v1)
-             284:149(f64vec3) ExtInst 1(GLSL.std.450) 9(Ceil) 283
-                              Store 269(f64v2) 284
-             285:149(f64vec3) Load 270(f64v1)
-             286:149(f64vec3) ExtInst 1(GLSL.std.450) 10(Fract) 285
-                              Store 269(f64v2) 286
-             287:149(f64vec3) Load 270(f64v1)
-             288:149(f64vec3) Load 269(f64v2)
-             289:149(f64vec3) FMod 287 288
-                              Store 269(f64v2) 289
-             290:149(f64vec3) Load 270(f64v1)
-             292:26(float64_t) Load 291(f64)
-             293:149(f64vec3) CompositeConstruct 292 292 292
-             294:149(f64vec3) FMod 290 293
-                              Store 269(f64v2) 294
-             296:149(f64vec3) Load 270(f64v1)
-             297:149(f64vec3) ExtInst 1(GLSL.std.450) 35(Modf) 296 269(f64v2)
-                              Store 295(f64v3) 297
-             298:149(f64vec3) Load 270(f64v1)
-             299:149(f64vec3) Load 269(f64v2)
-             300:149(f64vec3) ExtInst 1(GLSL.std.450) 37(FMin) 298 299
-                              Store 295(f64v3) 300
-             301:149(f64vec3) Load 270(f64v1)
-             302:26(float64_t) Load 291(f64)
-             303:149(f64vec3) CompositeConstruct 302 302 302
-             304:149(f64vec3) ExtInst 1(GLSL.std.450) 37(FMin) 301 303
-                              Store 295(f64v3) 304
-             305:149(f64vec3) Load 270(f64v1)
-             306:149(f64vec3) Load 269(f64v2)
-             307:149(f64vec3) ExtInst 1(GLSL.std.450) 40(FMax) 305 306
-                              Store 295(f64v3) 307
-             308:149(f64vec3) Load 270(f64v1)
-             309:26(float64_t) Load 291(f64)
-             310:149(f64vec3) CompositeConstruct 309 309 309
-             311:149(f64vec3) ExtInst 1(GLSL.std.450) 40(FMax) 308 310
-                              Store 295(f64v3) 311
-             312:149(f64vec3) Load 270(f64v1)
-             313:26(float64_t) Load 291(f64)
-             314:     33(ptr) AccessChain 269(f64v2) 32
-             315:26(float64_t) Load 314
-             316:149(f64vec3) CompositeConstruct 313 313 313
-             317:149(f64vec3) CompositeConstruct 315 315 315
-             318:149(f64vec3) ExtInst 1(GLSL.std.450) 43(FClamp) 312 316 317
-                              Store 295(f64v3) 318
-             319:149(f64vec3) Load 270(f64v1)
-             320:149(f64vec3) Load 269(f64v2)
-             321:26(float64_t) Load 291(f64)
-             322:149(f64vec3) CompositeConstruct 321 321 321
-             323:149(f64vec3) ExtInst 1(GLSL.std.450) 43(FClamp) 319 320 322
-                              Store 295(f64v3) 323
-             324:149(f64vec3) Load 270(f64v1)
-             325:149(f64vec3) Load 269(f64v2)
-             326:26(float64_t) Load 291(f64)
-             327:149(f64vec3) CompositeConstruct 326 326 326
-             328:149(f64vec3) ExtInst 1(GLSL.std.450) 46(FMix) 324 325 327
-                              Store 295(f64v3) 328
-             329:149(f64vec3) Load 270(f64v1)
-             330:149(f64vec3) Load 269(f64v2)
-             331:149(f64vec3) Load 295(f64v3)
-             332:149(f64vec3) ExtInst 1(GLSL.std.450) 46(FMix) 329 330 331
-                              Store 295(f64v3) 332
-             333:149(f64vec3) Load 270(f64v1)
-             334:149(f64vec3) Load 269(f64v2)
-             336:  152(bvec3) Load 335(bv)
-             337:149(f64vec3) Select 336 334 333
-                              Store 295(f64v3) 337
-             338:149(f64vec3) Load 270(f64v1)
-             339:149(f64vec3) Load 269(f64v2)
-             340:149(f64vec3) ExtInst 1(GLSL.std.450) 48(Step) 338 339
-                              Store 295(f64v3) 340
-             341:26(float64_t) Load 291(f64)
-             342:149(f64vec3) Load 295(f64v3)
-             343:149(f64vec3) CompositeConstruct 341 341 341
-             344:149(f64vec3) ExtInst 1(GLSL.std.450) 48(Step) 343 342
-                              Store 295(f64v3) 344
-             345:149(f64vec3) Load 270(f64v1)
-             346:149(f64vec3) Load 269(f64v2)
-             347:149(f64vec3) Load 295(f64v3)
-             348:149(f64vec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 345 346 347
-                              Store 295(f64v3) 348
-             349:26(float64_t) Load 291(f64)
-             350:     33(ptr) AccessChain 270(f64v1) 32
-             351:26(float64_t) Load 350
-             352:149(f64vec3) Load 269(f64v2)
-             353:149(f64vec3) CompositeConstruct 349 349 349
-             354:149(f64vec3) CompositeConstruct 351 351 351
-             355:149(f64vec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 353 354 352
-                              Store 295(f64v3) 355
-             357:26(float64_t) Load 291(f64)
-             358:   107(bool) IsNan 357
-                              Store 356(b) 358
-             359:149(f64vec3) Load 270(f64v1)
-             360:  152(bvec3) IsInf 359
-                              Store 335(bv) 360
-             361:149(f64vec3) Load 270(f64v1)
-             362:149(f64vec3) Load 269(f64v2)
-             363:149(f64vec3) Load 295(f64v3)
-             364:149(f64vec3) ExtInst 1(GLSL.std.450) 50(Fma) 361 362 363
-                              Store 295(f64v3) 364
-             365:149(f64vec3) Load 270(f64v1)
-             368:367(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 365
-             369:  183(ivec3) CompositeExtract 368 1
-                              Store 366(iv) 369
-             370:149(f64vec3) CompositeExtract 368 0
-                              Store 269(f64v2) 370
-             371:149(f64vec3) Load 270(f64v1)
-             372:  183(ivec3) Load 366(iv)
-             373:149(f64vec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 371 372
-                              Store 269(f64v2) 373
+        326(f64):     31(ptr) Variable Function
+      327(f64v1):    148(ptr) Variable Function
+      331(f64v2):    148(ptr) Variable Function
+      337(f64v3):    148(ptr) Variable Function
+             328:147(f64vec3) Load 327(f64v1)
+             329:24(float64_t) ExtInst 1(GLSL.std.450) 66(Length) 328
+                              Store 326(f64) 329
+             330:147(f64vec3) Load 327(f64v1)
+             332:147(f64vec3) Load 331(f64v2)
+             333:24(float64_t) ExtInst 1(GLSL.std.450) 67(Distance) 330 332
+                              Store 326(f64) 333
+             334:147(f64vec3) Load 327(f64v1)
+             335:147(f64vec3) Load 331(f64v2)
+             336:24(float64_t) Dot 334 335
+                              Store 326(f64) 336
+             338:147(f64vec3) Load 327(f64v1)
+             339:147(f64vec3) Load 331(f64v2)
+             340:147(f64vec3) ExtInst 1(GLSL.std.450) 68(Cross) 338 339
+                              Store 337(f64v3) 340
+             341:147(f64vec3) Load 327(f64v1)
+             342:147(f64vec3) ExtInst 1(GLSL.std.450) 69(Normalize) 341
+                              Store 331(f64v2) 342
+             343:147(f64vec3) Load 327(f64v1)
+             344:147(f64vec3) Load 331(f64v2)
+             345:147(f64vec3) Load 337(f64v3)
+             346:147(f64vec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 343 344 345
+                              Store 337(f64v3) 346
+             347:147(f64vec3) Load 327(f64v1)
+             348:147(f64vec3) Load 331(f64v2)
+             349:147(f64vec3) ExtInst 1(GLSL.std.450) 71(Reflect) 347 348
+                              Store 337(f64v3) 349
+             350:147(f64vec3) Load 327(f64v1)
+             351:147(f64vec3) Load 331(f64v2)
+             352:24(float64_t) Load 326(f64)
+             353:147(f64vec3) ExtInst 1(GLSL.std.450) 72(Refract) 350 351 352
+                              Store 337(f64v3) 353
                               Return
                               FunctionEnd
-18(builtinGeometryFuncs():           2 Function None 3
+18(builtinMatrixFuncs():           2 Function None 3
               19:             Label
-        374(f64):     33(ptr) Variable Function
-      375(f64v1):    150(ptr) Variable Function
-      379(f64v2):    150(ptr) Variable Function
-      385(f64v3):    150(ptr) Variable Function
-             376:149(f64vec3) Load 375(f64v1)
-             377:26(float64_t) ExtInst 1(GLSL.std.450) 66(Length) 376
-                              Store 374(f64) 377
-             378:149(f64vec3) Load 375(f64v1)
-             380:149(f64vec3) Load 379(f64v2)
-             381:26(float64_t) ExtInst 1(GLSL.std.450) 67(Distance) 378 380
-                              Store 374(f64) 381
-             382:149(f64vec3) Load 375(f64v1)
-             383:149(f64vec3) Load 379(f64v2)
-             384:26(float64_t) Dot 382 383
-                              Store 374(f64) 384
-             386:149(f64vec3) Load 375(f64v1)
-             387:149(f64vec3) Load 379(f64v2)
-             388:149(f64vec3) ExtInst 1(GLSL.std.450) 68(Cross) 386 387
-                              Store 385(f64v3) 388
-             389:149(f64vec3) Load 375(f64v1)
-             390:149(f64vec3) ExtInst 1(GLSL.std.450) 69(Normalize) 389
-                              Store 379(f64v2) 390
-             391:149(f64vec3) Load 375(f64v1)
-             392:149(f64vec3) Load 379(f64v2)
-             393:149(f64vec3) Load 385(f64v3)
-             394:149(f64vec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 391 392 393
-                              Store 385(f64v3) 394
-             395:149(f64vec3) Load 375(f64v1)
-             396:149(f64vec3) Load 379(f64v2)
-             397:149(f64vec3) ExtInst 1(GLSL.std.450) 71(Reflect) 395 396
-                              Store 385(f64v3) 397
-             398:149(f64vec3) Load 375(f64v1)
-             399:149(f64vec3) Load 379(f64v2)
-             400:26(float64_t) Load 374(f64)
-             401:149(f64vec3) ExtInst 1(GLSL.std.450) 72(Refract) 398 399 400
-                              Store 385(f64v3) 401
+      356(f64m3):    355(ptr) Variable Function
+      357(f64m1):    355(ptr) Variable Function
+      359(f64m2):    355(ptr) Variable Function
+      368(f64v1):    148(ptr) Variable Function
+      370(f64v2):     26(ptr) Variable Function
+      375(f64m4):    374(ptr) Variable Function
+        378(f64):     31(ptr) Variable Function
+      381(f64m5):    380(ptr) Variable Function
+      387(f64m6):    386(ptr) Variable Function
+      388(f64m7):    386(ptr) Variable Function
+             358:         354 Load 357(f64m1)
+             360:         354 Load 359(f64m2)
+             361:147(f64vec3) CompositeExtract 358 0
+             362:147(f64vec3) CompositeExtract 360 0
+             363:147(f64vec3) FMul 361 362
+             364:147(f64vec3) CompositeExtract 358 1
+             365:147(f64vec3) CompositeExtract 360 1
+             366:147(f64vec3) FMul 364 365
+             367:         354 CompositeConstruct 363 366
+                              Store 356(f64m3) 367
+             369:147(f64vec3) Load 368(f64v1)
+             371: 25(f64vec2) Load 370(f64v2)
+             372:         354 OuterProduct 369 371
+                              Store 357(f64m1) 372
+             376:         354 Load 357(f64m1)
+             377:         373 Transpose 376
+                              Store 375(f64m4) 377
+             382:         379 Load 381(f64m5)
+             383:24(float64_t) ExtInst 1(GLSL.std.450) 33(Determinant) 382
+                              Store 378(f64) 383
+             389:         385 Load 388(f64m7)
+             390:         385 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 389
+                              Store 387(f64m6) 390
                               Return
                               FunctionEnd
-20(builtinMatrixFuncs():           2 Function None 3
+20(builtinVecRelFuncs():           2 Function None 3
               21:             Label
-      404(f64m3):    403(ptr) Variable Function
-      405(f64m1):    403(ptr) Variable Function
-      407(f64m2):    403(ptr) Variable Function
-      416(f64v1):    150(ptr) Variable Function
-      418(f64v2):     28(ptr) Variable Function
-      423(f64m4):    422(ptr) Variable Function
-        426(f64):     33(ptr) Variable Function
-      429(f64m5):    428(ptr) Variable Function
-      434(f64m6):    433(ptr) Variable Function
-      435(f64m7):    433(ptr) Variable Function
-             406:         402 Load 405(f64m1)
-             408:         402 Load 407(f64m2)
-             409:149(f64vec3) CompositeExtract 406 0
-             410:149(f64vec3) CompositeExtract 408 0
-             411:149(f64vec3) FMul 409 410
-             412:149(f64vec3) CompositeExtract 406 1
-             413:149(f64vec3) CompositeExtract 408 1
-             414:149(f64vec3) FMul 412 413
-             415:         402 CompositeConstruct 411 414
-                              Store 404(f64m3) 415
-             417:149(f64vec3) Load 416(f64v1)
-             419: 27(f64vec2) Load 418(f64v2)
-             420:         402 OuterProduct 417 419
-                              Store 405(f64m1) 420
-             424:         402 Load 405(f64m1)
-             425:         421 Transpose 424
-                              Store 423(f64m4) 425
-             430:         427 Load 429(f64m5)
-             431:26(float64_t) ExtInst 1(GLSL.std.450) 33(Determinant) 430
-                              Store 426(f64) 431
-             436:         432 Load 435(f64m7)
-             437:         432 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 436
-                              Store 434(f64m6) 437
+         391(bv):    151(ptr) Variable Function
+      392(f64v1):    148(ptr) Variable Function
+      394(f64v2):    148(ptr) Variable Function
+             393:147(f64vec3) Load 392(f64v1)
+             395:147(f64vec3) Load 394(f64v2)
+             396:  150(bvec3) FOrdLessThan 393 395
+                              Store 391(bv) 396
+             397:147(f64vec3) Load 392(f64v1)
+             398:147(f64vec3) Load 394(f64v2)
+             399:  150(bvec3) FOrdLessThanEqual 397 398
+                              Store 391(bv) 399
+             400:147(f64vec3) Load 392(f64v1)
+             401:147(f64vec3) Load 394(f64v2)
+             402:  150(bvec3) FOrdGreaterThan 400 401
+                              Store 391(bv) 402
+             403:147(f64vec3) Load 392(f64v1)
+             404:147(f64vec3) Load 394(f64v2)
+             405:  150(bvec3) FOrdGreaterThanEqual 403 404
+                              Store 391(bv) 405
+             406:147(f64vec3) Load 392(f64v1)
+             407:147(f64vec3) Load 394(f64v2)
+             408:  150(bvec3) FOrdEqual 406 407
+                              Store 391(bv) 408
+             409:147(f64vec3) Load 392(f64v1)
+             410:147(f64vec3) Load 394(f64v2)
+             411:  150(bvec3) FUnordNotEqual 409 410
+                              Store 391(bv) 411
                               Return
                               FunctionEnd
-22(builtinVecRelFuncs():           2 Function None 3
+22(builtinFragProcFuncs():           2 Function None 3
               23:             Label
-         438(bv):    153(ptr) Variable Function
-      439(f64v1):    150(ptr) Variable Function
-      441(f64v2):    150(ptr) Variable Function
-             440:149(f64vec3) Load 439(f64v1)
-             442:149(f64vec3) Load 441(f64v2)
-             443:  152(bvec3) FOrdLessThan 440 442
-                              Store 438(bv) 443
-             444:149(f64vec3) Load 439(f64v1)
-             445:149(f64vec3) Load 441(f64v2)
-             446:  152(bvec3) FOrdLessThanEqual 444 445
-                              Store 438(bv) 446
-             447:149(f64vec3) Load 439(f64v1)
-             448:149(f64vec3) Load 441(f64v2)
-             449:  152(bvec3) FOrdGreaterThan 447 448
-                              Store 438(bv) 449
-             450:149(f64vec3) Load 439(f64v1)
-             451:149(f64vec3) Load 441(f64v2)
-             452:  152(bvec3) FOrdGreaterThanEqual 450 451
-                              Store 438(bv) 452
-             453:149(f64vec3) Load 439(f64v1)
-             454:149(f64vec3) Load 441(f64v2)
-             455:  152(bvec3) FOrdEqual 453 454
-                              Store 438(bv) 455
-             456:149(f64vec3) Load 439(f64v1)
-             457:149(f64vec3) Load 441(f64v2)
-             458:  152(bvec3) FUnordNotEqual 456 457
-                              Store 438(bv) 458
-                              Return
-                              FunctionEnd
-24(builtinFragProcFuncs():           2 Function None 3
-              25:             Label
-       459(f64v):    150(ptr) Variable Function
-             463:    462(ptr) AccessChain 461(if64v) 32
-             464:26(float64_t) Load 463
-             465:26(float64_t) DPdx 464
-             466:     33(ptr) AccessChain 459(f64v) 32
-                              Store 466 465
-             467:    462(ptr) AccessChain 461(if64v) 88
-             468:26(float64_t) Load 467
-             469:26(float64_t) DPdy 468
-             470:     33(ptr) AccessChain 459(f64v) 88
-                              Store 470 469
-             471:149(f64vec3) Load 461(if64v)
-             472: 27(f64vec2) VectorShuffle 471 471 0 1
-             473: 27(f64vec2) DPdxFine 472
-             474:     33(ptr) AccessChain 459(f64v) 32
-             475:26(float64_t) CompositeExtract 473 0
-                              Store 474 475
-             476:     33(ptr) AccessChain 459(f64v) 88
-             477:26(float64_t) CompositeExtract 473 1
-                              Store 476 477
-             478:149(f64vec3) Load 461(if64v)
-             479: 27(f64vec2) VectorShuffle 478 478 0 1
-             480: 27(f64vec2) DPdyFine 479
-             481:     33(ptr) AccessChain 459(f64v) 32
-             482:26(float64_t) CompositeExtract 480 0
-                              Store 481 482
-             483:     33(ptr) AccessChain 459(f64v) 88
-             484:26(float64_t) CompositeExtract 480 1
-                              Store 483 484
-             485:149(f64vec3) Load 461(if64v)
-             486:149(f64vec3) DPdxCoarse 485
-                              Store 459(f64v) 486
-             487:149(f64vec3) Load 461(if64v)
-             488:149(f64vec3) DPdxCoarse 487
-                              Store 459(f64v) 488
-             489:    462(ptr) AccessChain 461(if64v) 32
-             490:26(float64_t) Load 489
-             491:26(float64_t) Fwidth 490
-             492:     33(ptr) AccessChain 459(f64v) 32
-                              Store 492 491
-             493:149(f64vec3) Load 461(if64v)
-             494: 27(f64vec2) VectorShuffle 493 493 0 1
-             495: 27(f64vec2) FwidthFine 494
-             496:     33(ptr) AccessChain 459(f64v) 32
-             497:26(float64_t) CompositeExtract 495 0
-                              Store 496 497
-             498:     33(ptr) AccessChain 459(f64v) 88
-             499:26(float64_t) CompositeExtract 495 1
-                              Store 498 499
-             500:149(f64vec3) Load 461(if64v)
-             501:149(f64vec3) FwidthCoarse 500
-                              Store 459(f64v) 501
-             502:    462(ptr) AccessChain 461(if64v) 32
-             503:26(float64_t) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 502
-             504:     33(ptr) AccessChain 459(f64v) 32
-                              Store 504 503
-             506:149(f64vec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 461(if64v) 505
-             507: 27(f64vec2) VectorShuffle 506 506 0 1
-             508:     33(ptr) AccessChain 459(f64v) 32
-             509:26(float64_t) CompositeExtract 507 0
-                              Store 508 509
-             510:     33(ptr) AccessChain 459(f64v) 88
-             511:26(float64_t) CompositeExtract 507 1
-                              Store 510 511
-             514:149(f64vec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 461(if64v) 513
-                              Store 459(f64v) 514
+       412(f64v):    148(ptr) Variable Function
+             416:    415(ptr) AccessChain 414(if64v) 30
+             417:24(float64_t) Load 416
+             418:24(float64_t) DPdx 417
+             419:     31(ptr) AccessChain 412(f64v) 30
+                              Store 419 418
+             420:    415(ptr) AccessChain 414(if64v) 86
+             421:24(float64_t) Load 420
+             422:24(float64_t) DPdy 421
+             423:     31(ptr) AccessChain 412(f64v) 86
+                              Store 423 422
+             424:147(f64vec3) Load 414(if64v)
+             425: 25(f64vec2) VectorShuffle 424 424 0 1
+             426: 25(f64vec2) DPdxFine 425
+             427:     31(ptr) AccessChain 412(f64v) 30
+             428:24(float64_t) CompositeExtract 426 0
+                              Store 427 428
+             429:     31(ptr) AccessChain 412(f64v) 86
+             430:24(float64_t) CompositeExtract 426 1
+                              Store 429 430
+             431:147(f64vec3) Load 414(if64v)
+             432: 25(f64vec2) VectorShuffle 431 431 0 1
+             433: 25(f64vec2) DPdyFine 432
+             434:     31(ptr) AccessChain 412(f64v) 30
+             435:24(float64_t) CompositeExtract 433 0
+                              Store 434 435
+             436:     31(ptr) AccessChain 412(f64v) 86
+             437:24(float64_t) CompositeExtract 433 1
+                              Store 436 437
+             438:147(f64vec3) Load 414(if64v)
+             439:147(f64vec3) DPdxCoarse 438
+                              Store 412(f64v) 439
+             440:147(f64vec3) Load 414(if64v)
+             441:147(f64vec3) DPdxCoarse 440
+                              Store 412(f64v) 441
+             442:    415(ptr) AccessChain 414(if64v) 30
+             443:24(float64_t) Load 442
+             444:24(float64_t) Fwidth 443
+             445:     31(ptr) AccessChain 412(f64v) 30
+                              Store 445 444
+             446:147(f64vec3) Load 414(if64v)
+             447: 25(f64vec2) VectorShuffle 446 446 0 1
+             448: 25(f64vec2) FwidthFine 447
+             449:     31(ptr) AccessChain 412(f64v) 30
+             450:24(float64_t) CompositeExtract 448 0
+                              Store 449 450
+             451:     31(ptr) AccessChain 412(f64v) 86
+             452:24(float64_t) CompositeExtract 448 1
+                              Store 451 452
+             453:147(f64vec3) Load 414(if64v)
+             454:147(f64vec3) FwidthCoarse 453
+                              Store 412(f64v) 454
+             455:    415(ptr) AccessChain 414(if64v) 30
+             456:24(float64_t) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 455
+             457:     31(ptr) AccessChain 412(f64v) 30
+                              Store 457 456
+             459:147(f64vec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 414(if64v) 458
+             460: 25(f64vec2) VectorShuffle 459 459 0 1
+             461:     31(ptr) AccessChain 412(f64v) 30
+             462:24(float64_t) CompositeExtract 460 0
+                              Store 461 462
+             463:     31(ptr) AccessChain 412(f64v) 86
+             464:24(float64_t) CompositeExtract 460 1
+                              Store 463 464
+             467:147(f64vec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 414(if64v) 466
+                              Store 412(f64v) 467
                               Return
                               FunctionEnd
diff --git a/Test/spv.float64.frag b/Test/spv.float64.frag
index faaac23..6e9f22d 100644
--- a/Test/spv.float64.frag
+++ b/Test/spv.float64.frag
@@ -127,36 +127,12 @@
     u64v = u64vec3(f64v);    // float64 -> uint64
 }
 
-void builtinAngleTrigFuncs()
-{
-    f64vec4 f64v1, f64v2;
+// Trig, pow, exp and log are not supported for f64
 
-    f64v2 = radians(f64v1);
-    f64v2 = degrees(f64v1);
-    f64v2 = sin(f64v1);
-    f64v2 = cos(f64v1);
-    f64v2 = tan(f64v1);
-    f64v2 = asin(f64v1);
-    f64v2 = acos(f64v1);
-    f64v2 = atan(f64v1, f64v2);
-    f64v2 = atan(f64v1);
-    f64v2 = sinh(f64v1);
-    f64v2 = cosh(f64v1);
-    f64v2 = tanh(f64v1);
-    f64v2 = asinh(f64v1);
-    f64v2 = acosh(f64v1);
-    f64v2 = atanh(f64v1);
-}
-
-void builtinExpFuncs()
+void builtinTranscendentalFuncs()
 {
     f64vec2 f64v1, f64v2;
 
-    f64v2 = pow(f64v1, f64v2);
-    f64v2 = exp(f64v1);
-    f64v2 = log(f64v1);
-    f64v2 = exp2(f64v1);
-    f64v2 = log2(f64v1);
     f64v2 = sqrt(f64v1);
     f64v2 = inversesqrt(f64v1);
 }
diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp
index b633331..728cd4a 100644
--- a/glslang/MachineIndependent/Initialize.cpp
+++ b/glslang/MachineIndependent/Initialize.cpp
@@ -4159,106 +4159,6 @@
             "u16vec4  unpack16(uint64_t);"
             "i32vec2  unpack32(int64_t);"
             "u32vec2  unpack32(uint64_t);"
-
-            "float64_t radians(float64_t);"
-            "f64vec2   radians(f64vec2);"
-            "f64vec3   radians(f64vec3);"
-            "f64vec4   radians(f64vec4);"
-
-            "float64_t degrees(float64_t);"
-            "f64vec2   degrees(f64vec2);"
-            "f64vec3   degrees(f64vec3);"
-            "f64vec4   degrees(f64vec4);"
-
-            "float64_t sin(float64_t);"
-            "f64vec2   sin(f64vec2);"
-            "f64vec3   sin(f64vec3);"
-            "f64vec4   sin(f64vec4);"
-
-            "float64_t cos(float64_t);"
-            "f64vec2   cos(f64vec2);"
-            "f64vec3   cos(f64vec3);"
-            "f64vec4   cos(f64vec4);"
-
-            "float64_t tan(float64_t);"
-            "f64vec2   tan(f64vec2);"
-            "f64vec3   tan(f64vec3);"
-            "f64vec4   tan(f64vec4);"
-
-            "float64_t asin(float64_t);"
-            "f64vec2   asin(f64vec2);"
-            "f64vec3   asin(f64vec3);"
-            "f64vec4   asin(f64vec4);"
-
-            "float64_t acos(float64_t);"
-            "f64vec2   acos(f64vec2);"
-            "f64vec3   acos(f64vec3);"
-            "f64vec4   acos(f64vec4);"
-
-            "float64_t atan(float64_t, float64_t);"
-            "f64vec2   atan(f64vec2,   f64vec2);"
-            "f64vec3   atan(f64vec3,   f64vec3);"
-            "f64vec4   atan(f64vec4,   f64vec4);"
-
-            "float64_t atan(float64_t);"
-            "f64vec2   atan(f64vec2);"
-            "f64vec3   atan(f64vec3);"
-            "f64vec4   atan(f64vec4);"
-
-            "float64_t sinh(float64_t);"
-            "f64vec2   sinh(f64vec2);"
-            "f64vec3   sinh(f64vec3);"
-            "f64vec4   sinh(f64vec4);"
-
-            "float64_t cosh(float64_t);"
-            "f64vec2   cosh(f64vec2);"
-            "f64vec3   cosh(f64vec3);"
-            "f64vec4   cosh(f64vec4);"
-
-            "float64_t tanh(float64_t);"
-            "f64vec2   tanh(f64vec2);"
-            "f64vec3   tanh(f64vec3);"
-            "f64vec4   tanh(f64vec4);"
-
-            "float64_t asinh(float64_t);"
-            "f64vec2   asinh(f64vec2);"
-            "f64vec3   asinh(f64vec3);"
-            "f64vec4   asinh(f64vec4);"
-
-            "float64_t acosh(float64_t);"
-            "f64vec2   acosh(f64vec2);"
-            "f64vec3   acosh(f64vec3);"
-            "f64vec4   acosh(f64vec4);"
-
-            "float64_t atanh(float64_t);"
-            "f64vec2   atanh(f64vec2);"
-            "f64vec3   atanh(f64vec3);"
-            "f64vec4   atanh(f64vec4);"
-
-            "float64_t pow(float64_t, float64_t);"
-            "f64vec2   pow(f64vec2,   f64vec2);"
-            "f64vec3   pow(f64vec3,   f64vec3);"
-            "f64vec4   pow(f64vec4,   f64vec4);"
-
-            "float64_t exp(float64_t);"
-            "f64vec2   exp(f64vec2);"
-            "f64vec3   exp(f64vec3);"
-            "f64vec4   exp(f64vec4);"
-
-            "float64_t log(float64_t);"
-            "f64vec2   log(f64vec2);"
-            "f64vec3   log(f64vec3);"
-            "f64vec4   log(f64vec4);"
-
-            "float64_t exp2(float64_t);"
-            "f64vec2   exp2(f64vec2);"
-            "f64vec3   exp2(f64vec3);"
-            "f64vec4   exp2(f64vec4);"
-
-            "float64_t log2(float64_t);"
-            "f64vec2   log2(f64vec2);"
-            "f64vec3   log2(f64vec3);"
-            "f64vec4   log2(f64vec4);"
             "\n");
     }