SPV: Implement GLSL built-in bitcast functions.
diff --git a/Test/baseResults/spv.bitCast.frag.out b/Test/baseResults/spv.bitCast.frag.out
new file mode 100644
index 0000000..53f2d96
--- /dev/null
+++ b/Test/baseResults/spv.bitCast.frag.out
@@ -0,0 +1,232 @@
+spv.bitCast.frag
+Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
+
+
+Linked fragment stage:
+
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 172
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 154
+                              ExecutionMode 4 OriginLowerLeft
+                              Source GLSL 450
+                              Name 4  "main"
+                              Name 9  "idata"
+                              Name 14  "f1"
+                              Name 26  "f2"
+                              Name 37  "f3"
+                              Name 48  "f4"
+                              Name 55  "udata"
+                              Name 85  "fdata"
+                              Name 89  "i1"
+                              Name 98  "i2"
+                              Name 107  "i3"
+                              Name 116  "i4"
+                              Name 122  "u1"
+                              Name 130  "u2"
+                              Name 139  "u3"
+                              Name 148  "u4"
+                              Name 154  "fragColor"
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 1
+               7:             TypeVector 6(int) 4
+               8:             TypePointer Function 7(ivec4)
+              10:      6(int) Constant 0
+              11:    7(ivec4) ConstantComposite 10 10 10 10
+              12:             TypeFloat 32
+              13:             TypePointer UniformConstant 12(float)
+          14(f1):     13(ptr) Variable UniformConstant
+              17:             TypeInt 32 0
+              18:     17(int) Constant 0
+              19:             TypePointer Function 6(int)
+              24:             TypeVector 12(float) 2
+              25:             TypePointer UniformConstant 24(fvec2)
+          26(f2):     25(ptr) Variable UniformConstant
+              28:             TypeVector 6(int) 2
+              35:             TypeVector 12(float) 3
+              36:             TypePointer UniformConstant 35(fvec3)
+          37(f3):     36(ptr) Variable UniformConstant
+              39:             TypeVector 6(int) 3
+              46:             TypeVector 12(float) 4
+              47:             TypePointer UniformConstant 46(fvec4)
+          48(f4):     47(ptr) Variable UniformConstant
+              53:             TypeVector 17(int) 4
+              54:             TypePointer Function 53(ivec4)
+              56:   53(ivec4) ConstantComposite 18 18 18 18
+              59:             TypePointer Function 17(int)
+              65:             TypeVector 17(int) 2
+              73:             TypeVector 17(int) 3
+              84:             TypePointer Function 46(fvec4)
+              86:   12(float) Constant 0
+              87:   46(fvec4) ConstantComposite 86 86 86 86
+              88:             TypePointer UniformConstant 6(int)
+          89(i1):     88(ptr) Variable UniformConstant
+              92:             TypePointer Function 12(float)
+              97:             TypePointer UniformConstant 28(ivec2)
+          98(i2):     97(ptr) Variable UniformConstant
+             106:             TypePointer UniformConstant 39(ivec3)
+         107(i3):    106(ptr) Variable UniformConstant
+             115:             TypePointer UniformConstant 7(ivec4)
+         116(i4):    115(ptr) Variable UniformConstant
+             121:             TypePointer UniformConstant 17(int)
+         122(u1):    121(ptr) Variable UniformConstant
+             129:             TypePointer UniformConstant 65(ivec2)
+         130(u2):    129(ptr) Variable UniformConstant
+             138:             TypePointer UniformConstant 73(ivec3)
+         139(u3):    138(ptr) Variable UniformConstant
+             147:             TypePointer UniformConstant 53(ivec4)
+         148(u4):    147(ptr) Variable UniformConstant
+             153:             TypePointer Output 46(fvec4)
+  154(fragColor):    153(ptr) Variable Output
+             159:             TypeBool
+             160:             TypeVector 159(bool) 4
+             168:   12(float) Constant 1045220557
+             169:   46(fvec4) ConstantComposite 168 168 168 168
+         4(main):           2 Function None 3
+               5:             Label
+        9(idata):      8(ptr) Variable Function
+       55(udata):     54(ptr) Variable Function
+       85(fdata):     84(ptr) Variable Function
+             155:     84(ptr) Variable Function
+                              Store 9(idata) 11
+              15:   12(float) Load 14(f1)
+              16:      6(int) Bitcast 15
+              20:     19(ptr) AccessChain 9(idata) 18
+              21:      6(int) Load 20
+              22:      6(int) IAdd 21 16
+              23:     19(ptr) AccessChain 9(idata) 18
+                              Store 23 22
+              27:   24(fvec2) Load 26(f2)
+              29:   28(ivec2) Bitcast 27
+              30:    7(ivec4) Load 9(idata)
+              31:   28(ivec2) VectorShuffle 30 30 0 1
+              32:   28(ivec2) IAdd 31 29
+              33:    7(ivec4) Load 9(idata)
+              34:    7(ivec4) VectorShuffle 33 32 4 5 2 3
+                              Store 9(idata) 34
+              38:   35(fvec3) Load 37(f3)
+              40:   39(ivec3) Bitcast 38
+              41:    7(ivec4) Load 9(idata)
+              42:   39(ivec3) VectorShuffle 41 41 0 1 2
+              43:   39(ivec3) IAdd 42 40
+              44:    7(ivec4) Load 9(idata)
+              45:    7(ivec4) VectorShuffle 44 43 4 5 6 3
+                              Store 9(idata) 45
+              49:   46(fvec4) Load 48(f4)
+              50:    7(ivec4) Bitcast 49
+              51:    7(ivec4) Load 9(idata)
+              52:    7(ivec4) IAdd 51 50
+                              Store 9(idata) 52
+                              Store 55(udata) 56
+              57:   12(float) Load 14(f1)
+              58:     17(int) Bitcast 57
+              60:     59(ptr) AccessChain 55(udata) 18
+              61:     17(int) Load 60
+              62:     17(int) IAdd 61 58
+              63:     59(ptr) AccessChain 55(udata) 18
+                              Store 63 62
+              64:   24(fvec2) Load 26(f2)
+              66:   65(ivec2) Bitcast 64
+              67:   53(ivec4) Load 55(udata)
+              68:   65(ivec2) VectorShuffle 67 67 0 1
+              69:   65(ivec2) IAdd 68 66
+              70:   53(ivec4) Load 55(udata)
+              71:   53(ivec4) VectorShuffle 70 69 4 5 2 3
+                              Store 55(udata) 71
+              72:   35(fvec3) Load 37(f3)
+              74:   73(ivec3) Bitcast 72
+              75:   53(ivec4) Load 55(udata)
+              76:   73(ivec3) VectorShuffle 75 75 0 1 2
+              77:   73(ivec3) IAdd 76 74
+              78:   53(ivec4) Load 55(udata)
+              79:   53(ivec4) VectorShuffle 78 77 4 5 6 3
+                              Store 55(udata) 79
+              80:   46(fvec4) Load 48(f4)
+              81:   53(ivec4) Bitcast 80
+              82:   53(ivec4) Load 55(udata)
+              83:   53(ivec4) IAdd 82 81
+                              Store 55(udata) 83
+                              Store 85(fdata) 87
+              90:      6(int) Load 89(i1)
+              91:   12(float) Bitcast 90
+              93:     92(ptr) AccessChain 85(fdata) 18
+              94:   12(float) Load 93
+              95:   12(float) FAdd 94 91
+              96:     92(ptr) AccessChain 85(fdata) 18
+                              Store 96 95
+              99:   28(ivec2) Load 98(i2)
+             100:   24(fvec2) Bitcast 99
+             101:   46(fvec4) Load 85(fdata)
+             102:   24(fvec2) VectorShuffle 101 101 0 1
+             103:   24(fvec2) FAdd 102 100
+             104:   46(fvec4) Load 85(fdata)
+             105:   46(fvec4) VectorShuffle 104 103 4 5 2 3
+                              Store 85(fdata) 105
+             108:   39(ivec3) Load 107(i3)
+             109:   35(fvec3) Bitcast 108
+             110:   46(fvec4) Load 85(fdata)
+             111:   35(fvec3) VectorShuffle 110 110 0 1 2
+             112:   35(fvec3) FAdd 111 109
+             113:   46(fvec4) Load 85(fdata)
+             114:   46(fvec4) VectorShuffle 113 112 4 5 6 3
+                              Store 85(fdata) 114
+             117:    7(ivec4) Load 116(i4)
+             118:   46(fvec4) Bitcast 117
+             119:   46(fvec4) Load 85(fdata)
+             120:   46(fvec4) FAdd 119 118
+                              Store 85(fdata) 120
+             123:     17(int) Load 122(u1)
+             124:   12(float) Bitcast 123
+             125:     92(ptr) AccessChain 85(fdata) 18
+             126:   12(float) Load 125
+             127:   12(float) FAdd 126 124
+             128:     92(ptr) AccessChain 85(fdata) 18
+                              Store 128 127
+             131:   65(ivec2) Load 130(u2)
+             132:   24(fvec2) Bitcast 131
+             133:   46(fvec4) Load 85(fdata)
+             134:   24(fvec2) VectorShuffle 133 133 0 1
+             135:   24(fvec2) FAdd 134 132
+             136:   46(fvec4) Load 85(fdata)
+             137:   46(fvec4) VectorShuffle 136 135 4 5 2 3
+                              Store 85(fdata) 137
+             140:   73(ivec3) Load 139(u3)
+             141:   35(fvec3) Bitcast 140
+             142:   46(fvec4) Load 85(fdata)
+             143:   35(fvec3) VectorShuffle 142 142 0 1 2
+             144:   35(fvec3) FAdd 143 141
+             145:   46(fvec4) Load 85(fdata)
+             146:   46(fvec4) VectorShuffle 145 144 4 5 6 3
+                              Store 85(fdata) 146
+             149:   53(ivec4) Load 148(u4)
+             150:   46(fvec4) Bitcast 149
+             151:   46(fvec4) Load 85(fdata)
+             152:   46(fvec4) FAdd 151 150
+                              Store 85(fdata) 152
+             156:    7(ivec4) Load 9(idata)
+             157:   53(ivec4) Bitcast 156
+             158:   53(ivec4) Load 55(udata)
+             161:  160(bvec4) IEqual 157 158
+             162:   159(bool) All 161
+                              SelectionMerge 164 None
+                              BranchConditional 162 163 166
+             163:               Label
+             165:   46(fvec4)   Load 85(fdata)
+                                Store 155 165
+                                Branch 164
+             166:               Label
+             167:   46(fvec4)   Load 85(fdata)
+             170:   46(fvec4)   FAdd 167 169
+                                Store 155 170
+                                Branch 164
+             164:             Label
+             171:   46(fvec4) Load 155
+                              Store 154(fragColor) 171
+                              Return
+                              FunctionEnd