Add more TOperator: fma/frexp/ldexp, AddCarry/SubBorrow/MulExtended/Bit*/Find*, (un)pack4x8/2x32, ftransform.

Also corrects some existing ones missing the "Op" part of their name.
This commit is contained in:
John Kessenich 2015-08-18 17:00:37 -06:00
parent f5b2c06b32
commit e88217b7d8
11 changed files with 326 additions and 241 deletions

View File

@ -401,13 +401,13 @@ ERROR: node is still EOpNull!
0:95 'pv3' (temp 3-component vector of float)
0:96 move second child to first child (temp 3-component vector of float)
0:96 'pv3' (temp 3-component vector of float)
0:96 Function Call: fma(vf3;vf3;vf3; (global 3-component vector of float)
0:96 fma (global 3-component vector of float)
0:96 'pv3' (temp 3-component vector of float)
0:96 'pv3' (temp 3-component vector of float)
0:96 'pv3' (temp 3-component vector of float)
0:97 move second child to first child (temp double)
0:97 'd' (temp double)
0:97 Function Call: fma(d1;d1;d1; (global double)
0:97 fma (global double)
0:97 'd' (temp double)
0:97 'd' (temp double)
0:97 'd' (temp double)
@ -1186,13 +1186,13 @@ vertices = 4
0:95 'pv3' (temp 3-component vector of float)
0:96 move second child to first child (temp 3-component vector of float)
0:96 'pv3' (temp 3-component vector of float)
0:96 Function Call: fma(vf3;vf3;vf3; (global 3-component vector of float)
0:96 fma (global 3-component vector of float)
0:96 'pv3' (temp 3-component vector of float)
0:96 'pv3' (temp 3-component vector of float)
0:96 'pv3' (temp 3-component vector of float)
0:97 move second child to first child (temp double)
0:97 'd' (temp double)
0:97 Function Call: fma(d1;d1;d1; (global double)
0:97 fma (global double)
0:97 'd' (temp double)
0:97 'd' (temp double)
0:97 'd' (temp double)

View File

@ -398,7 +398,7 @@ ERROR: node is still EOpNull!
0:? Sequence
0:210 move second child to first child (temp mediump 2-component vector of float)
0:210 'h' (temp mediump 2-component vector of float)
0:210 Function Call: fma(vf2;vf2;vf2; (global mediump 2-component vector of float)
0:210 fma (global mediump 2-component vector of float)
0:210 'inf' (smooth in mediump 2-component vector of float)
0:210 'ing' (smooth in mediump 2-component vector of float)
0:210 'h' (temp mediump 2-component vector of float)
@ -434,7 +434,7 @@ ERROR: node is still EOpNull!
0:? Sequence
0:220 move second child to first child (temp mediump 2-component vector of float)
0:220 'h' (temp mediump 2-component vector of float)
0:220 Function Call: fma(vf2;vf2;vf2; (global mediump 2-component vector of float)
0:220 fma (global mediump 2-component vector of float)
0:220 'inf' (smooth in mediump 2-component vector of float)
0:220 'ing' (smooth in mediump 2-component vector of float)
0:220 'h' (temp mediump 2-component vector of float)
@ -1121,7 +1121,7 @@ ERROR: node is still EOpNull!
0:? Sequence
0:210 move second child to first child (temp mediump 2-component vector of float)
0:210 'h' (temp mediump 2-component vector of float)
0:210 Function Call: fma(vf2;vf2;vf2; (global mediump 2-component vector of float)
0:210 fma (global mediump 2-component vector of float)
0:210 'inf' (smooth in mediump 2-component vector of float)
0:210 'ing' (smooth in mediump 2-component vector of float)
0:210 'h' (temp mediump 2-component vector of float)
@ -1157,7 +1157,7 @@ ERROR: node is still EOpNull!
0:? Sequence
0:220 move second child to first child (temp mediump 2-component vector of float)
0:220 'h' (temp mediump 2-component vector of float)
0:220 Function Call: fma(vf2;vf2;vf2; (global mediump 2-component vector of float)
0:220 fma (global mediump 2-component vector of float)
0:220 'inf' (smooth in mediump 2-component vector of float)
0:220 'ing' (smooth in mediump 2-component vector of float)
0:220 'h' (temp mediump 2-component vector of float)

View File

@ -196,7 +196,7 @@ ERROR: node is still EOpNull!
0:? Sequence
0:95 move second child to first child (temp highp float)
0:95 'd' (temp highp float)
0:95 Function Call: fma(f1;f1;f1; (global highp float)
0:95 fma (global highp float)
0:95 'd' (temp highp float)
0:95 'd' (temp highp float)
0:95 'd' (temp highp float)
@ -230,13 +230,13 @@ ERROR: node is still EOpNull!
0:126 'pv3' (temp highp 3-component vector of float)
0:127 move second child to first child (temp highp 3-component vector of float)
0:127 'pv3' (temp highp 3-component vector of float)
0:127 Function Call: fma(vf3;vf3;vf3; (global highp 3-component vector of float)
0:127 fma (global highp 3-component vector of float)
0:127 'pv3' (temp highp 3-component vector of float)
0:127 'pv3' (temp highp 3-component vector of float)
0:127 'pv3' (temp highp 3-component vector of float)
0:128 move second child to first child (temp highp float)
0:128 'd' (temp highp float)
0:128 Function Call: fma(f1;f1;f1; (global highp float)
0:128 fma (global highp float)
0:128 'd' (temp highp float)
0:128 'd' (temp highp float)
0:128 'd' (temp highp float)
@ -458,7 +458,7 @@ ERROR: node is still EOpNull!
0:? Sequence
0:95 move second child to first child (temp highp float)
0:95 'd' (temp highp float)
0:95 Function Call: fma(f1;f1;f1; (global highp float)
0:95 fma (global highp float)
0:95 'd' (temp highp float)
0:95 'd' (temp highp float)
0:95 'd' (temp highp float)
@ -492,13 +492,13 @@ ERROR: node is still EOpNull!
0:126 'pv3' (temp highp 3-component vector of float)
0:127 move second child to first child (temp highp 3-component vector of float)
0:127 'pv3' (temp highp 3-component vector of float)
0:127 Function Call: fma(vf3;vf3;vf3; (global highp 3-component vector of float)
0:127 fma (global highp 3-component vector of float)
0:127 'pv3' (temp highp 3-component vector of float)
0:127 'pv3' (temp highp 3-component vector of float)
0:127 'pv3' (temp highp 3-component vector of float)
0:128 move second child to first child (temp highp float)
0:128 'd' (temp highp float)
0:128 Function Call: fma(f1;f1;f1; (global highp float)
0:128 fma (global highp float)
0:128 'd' (temp highp float)
0:128 'd' (temp highp float)
0:128 'd' (temp highp float)

View File

@ -107,29 +107,29 @@ ERROR: node is still EOpNull!
0:? Sequence
0:15 move second child to first child (temp highp 2-component vector of uint)
0:15 'u2' (temp highp 2-component vector of uint)
0:15 Function Call: uaddCarry(vu2;vu2;vu2; (global highp 2-component vector of uint)
0:15 addCarry (global highp 2-component vector of uint)
0:15 'u2' (temp highp 2-component vector of uint)
0:15 'u2' (temp highp 2-component vector of uint)
0:15 'u2' (temp highp 2-component vector of uint)
0:17 move second child to first child (temp highp uint)
0:17 'u1' (temp highp uint)
0:17 Function Call: usubBorrow(u1;u1;u1; (global highp uint)
0:17 subBorrow (global highp uint)
0:17 'u1' (temp highp uint)
0:17 'u1' (temp highp uint)
0:17 'u1' (temp highp uint)
0:19 Function Call: umulExtended(vu4;vu4;vu4;vu4; (global void)
0:19 uMulExtended (global void)
0:19 'u4' (temp highp 4-component vector of uint)
0:19 'u4' (temp highp 4-component vector of uint)
0:19 'u4' (temp highp 4-component vector of uint)
0:19 'u4' (temp highp 4-component vector of uint)
0:21 Function Call: imulExtended(vi4;vi4;vi4;vi4; (global void)
0:21 iMulExtended (global void)
0:21 'i4' (temp highp 4-component vector of int)
0:21 'i4' (temp highp 4-component vector of int)
0:21 'i4' (temp highp 4-component vector of int)
0:21 'i4' (temp highp 4-component vector of int)
0:23 move second child to first child (temp highp int)
0:23 'i1' (temp highp int)
0:23 Function Call: bitfieldExtract(i1;i1;i1; (global highp int)
0:23 bitfieldExtract (global highp int)
0:23 'i1' (temp highp int)
0:23 Constant:
0:23 4 (const int)
@ -137,7 +137,7 @@ ERROR: node is still EOpNull!
0:23 5 (const int)
0:25 move second child to first child (temp highp 3-component vector of uint)
0:25 'u3' (temp highp 3-component vector of uint)
0:25 Function Call: bitfieldExtract(vu3;i1;i1; (global highp 3-component vector of uint)
0:25 bitfieldExtract (global highp 3-component vector of uint)
0:25 'u3' (temp highp 3-component vector of uint)
0:25 Constant:
0:25 4 (const int)
@ -145,7 +145,7 @@ ERROR: node is still EOpNull!
0:25 5 (const int)
0:27 move second child to first child (temp highp 3-component vector of int)
0:27 'i3' (temp highp 3-component vector of int)
0:27 Function Call: bitfieldInsert(vi3;vi3;i1;i1; (global highp 3-component vector of int)
0:27 bitfieldInsert (global highp 3-component vector of int)
0:27 'i3' (temp highp 3-component vector of int)
0:27 'i3' (temp highp 3-component vector of int)
0:27 Constant:
@ -154,7 +154,7 @@ ERROR: node is still EOpNull!
0:27 5 (const int)
0:28 move second child to first child (temp highp uint)
0:28 'u1' (temp highp uint)
0:28 Function Call: bitfieldInsert(u1;u1;i1;i1; (global highp uint)
0:28 bitfieldInsert (global highp uint)
0:28 'u1' (temp highp uint)
0:28 'u1' (temp highp uint)
0:28 Constant:
@ -163,61 +163,61 @@ ERROR: node is still EOpNull!
0:28 5 (const int)
0:30 move second child to first child (temp highp 2-component vector of int)
0:30 'i2' (temp highp 2-component vector of int)
0:30 Function Call: bitfieldReverse(vi2; (global highp 2-component vector of int)
0:30 bitFieldReverse (global highp 2-component vector of int)
0:30 'i2' (temp highp 2-component vector of int)
0:31 move second child to first child (temp highp 4-component vector of uint)
0:31 'u4' (temp highp 4-component vector of uint)
0:31 Function Call: bitfieldReverse(vu4; (global highp 4-component vector of uint)
0:31 bitFieldReverse (global highp 4-component vector of uint)
0:31 'u4' (temp highp 4-component vector of uint)
0:32 move second child to first child (temp highp int)
0:32 'i1' (temp highp int)
0:32 Function Call: bitCount(i1; (global highp int)
0:32 bitCount (global highp int)
0:32 'i1' (temp highp int)
0:33 move second child to first child (temp highp 3-component vector of int)
0:33 'i3' (temp highp 3-component vector of int)
0:33 Function Call: bitCount(vu3; (global highp 3-component vector of int)
0:33 bitCount (global highp 3-component vector of int)
0:33 'u3' (temp highp 3-component vector of uint)
0:34 move second child to first child (temp highp 2-component vector of int)
0:34 'i2' (temp highp 2-component vector of int)
0:34 Function Call: findLSB(vi2; (global highp 2-component vector of int)
0:34 findLSB (global highp 2-component vector of int)
0:34 'i2' (temp highp 2-component vector of int)
0:35 move second child to first child (temp highp 4-component vector of int)
0:35 'i4' (temp highp 4-component vector of int)
0:35 Function Call: findLSB(vu4; (global highp 4-component vector of int)
0:35 findLSB (global highp 4-component vector of int)
0:35 'u4' (temp highp 4-component vector of uint)
0:36 move second child to first child (temp highp int)
0:36 'i1' (temp highp int)
0:36 Function Call: findMSB(i1; (global highp int)
0:36 findMSB (global highp int)
0:36 'i1' (temp highp int)
0:37 move second child to first child (temp highp 2-component vector of int)
0:37 'i2' (temp highp 2-component vector of int)
0:37 Function Call: findMSB(vu2; (global highp 2-component vector of int)
0:37 findMSB (global highp 2-component vector of int)
0:37 'u2' (temp highp 2-component vector of uint)
0:40 move second child to first child (temp highp 3-component vector of float)
0:40 'v3' (temp highp 3-component vector of float)
0:40 Function Call: frexp(vf3;vi3; (global highp 3-component vector of float)
0:40 frexp (global highp 3-component vector of float)
0:40 'v3' (temp highp 3-component vector of float)
0:40 'i3' (temp highp 3-component vector of int)
0:42 move second child to first child (temp highp 2-component vector of float)
0:42 'v2' (temp highp 2-component vector of float)
0:42 Function Call: ldexp(vf2;vi2; (global highp 2-component vector of float)
0:42 ldexp (global highp 2-component vector of float)
0:42 'v2' (temp highp 2-component vector of float)
0:42 'i2' (temp highp 2-component vector of int)
0:45 move second child to first child (temp highp uint)
0:45 'u1' (temp highp uint)
0:45 Function Call: packUnorm4x8(vf4; (global highp uint)
0:45 PackUnorm4x8 (global highp uint)
0:45 'v4' (temp mediump 4-component vector of float)
0:46 move second child to first child (temp highp uint)
0:46 'u1' (temp highp uint)
0:46 Function Call: packSnorm4x8(vf4; (global highp uint)
0:46 PackSnorm4x8 (global highp uint)
0:46 'v4' (temp mediump 4-component vector of float)
0:47 move second child to first child (temp mediump 4-component vector of float)
0:47 'v4' (temp mediump 4-component vector of float)
0:47 Function Call: unpackUnorm4x8(u1; (global mediump 4-component vector of float)
0:47 UnpackUnorm4x8 (global mediump 4-component vector of float)
0:47 'u1' (temp highp uint)
0:48 move second child to first child (temp mediump 4-component vector of float)
0:48 'v4' (temp mediump 4-component vector of float)
0:48 Function Call: unpackSnorm4x8(u1; (global mediump 4-component vector of float)
0:48 UnpackSnorm4x8 (global mediump 4-component vector of float)
0:48 'u1' (temp highp uint)
0:60 Function Definition: foo( (global void)
0:60 Function Parameters:
@ -276,7 +276,7 @@ ERROR: node is still EOpNull!
0:? Sequence
0:156 move second child to first child (temp highp 2-component vector of float)
0:156 'h' (temp highp 2-component vector of float)
0:156 Function Call: fma(vf2;vf2;vf2; (global highp 2-component vector of float)
0:156 fma (global highp 2-component vector of float)
0:156 'inf' (in highp 2-component vector of float)
0:156 'ing' (in highp 2-component vector of float)
0:156 'h' (temp highp 2-component vector of float)
@ -351,7 +351,7 @@ ERROR: node is still EOpNull!
0:? Sequence
0:174 move second child to first child (temp highp 2-component vector of float)
0:174 'h' (temp highp 2-component vector of float)
0:174 Function Call: fma(vf2;vf2;vf2; (global highp 2-component vector of float)
0:174 fma (global highp 2-component vector of float)
0:174 'inf' (in highp 2-component vector of float)
0:174 'ing' (in highp 2-component vector of float)
0:174 'h' (temp highp 2-component vector of float)
@ -974,29 +974,29 @@ ERROR: node is still EOpNull!
0:? Sequence
0:15 move second child to first child (temp highp 2-component vector of uint)
0:15 'u2' (temp highp 2-component vector of uint)
0:15 Function Call: uaddCarry(vu2;vu2;vu2; (global highp 2-component vector of uint)
0:15 addCarry (global highp 2-component vector of uint)
0:15 'u2' (temp highp 2-component vector of uint)
0:15 'u2' (temp highp 2-component vector of uint)
0:15 'u2' (temp highp 2-component vector of uint)
0:17 move second child to first child (temp highp uint)
0:17 'u1' (temp highp uint)
0:17 Function Call: usubBorrow(u1;u1;u1; (global highp uint)
0:17 subBorrow (global highp uint)
0:17 'u1' (temp highp uint)
0:17 'u1' (temp highp uint)
0:17 'u1' (temp highp uint)
0:19 Function Call: umulExtended(vu4;vu4;vu4;vu4; (global void)
0:19 uMulExtended (global void)
0:19 'u4' (temp highp 4-component vector of uint)
0:19 'u4' (temp highp 4-component vector of uint)
0:19 'u4' (temp highp 4-component vector of uint)
0:19 'u4' (temp highp 4-component vector of uint)
0:21 Function Call: imulExtended(vi4;vi4;vi4;vi4; (global void)
0:21 iMulExtended (global void)
0:21 'i4' (temp highp 4-component vector of int)
0:21 'i4' (temp highp 4-component vector of int)
0:21 'i4' (temp highp 4-component vector of int)
0:21 'i4' (temp highp 4-component vector of int)
0:23 move second child to first child (temp highp int)
0:23 'i1' (temp highp int)
0:23 Function Call: bitfieldExtract(i1;i1;i1; (global highp int)
0:23 bitfieldExtract (global highp int)
0:23 'i1' (temp highp int)
0:23 Constant:
0:23 4 (const int)
@ -1004,7 +1004,7 @@ ERROR: node is still EOpNull!
0:23 5 (const int)
0:25 move second child to first child (temp highp 3-component vector of uint)
0:25 'u3' (temp highp 3-component vector of uint)
0:25 Function Call: bitfieldExtract(vu3;i1;i1; (global highp 3-component vector of uint)
0:25 bitfieldExtract (global highp 3-component vector of uint)
0:25 'u3' (temp highp 3-component vector of uint)
0:25 Constant:
0:25 4 (const int)
@ -1012,7 +1012,7 @@ ERROR: node is still EOpNull!
0:25 5 (const int)
0:27 move second child to first child (temp highp 3-component vector of int)
0:27 'i3' (temp highp 3-component vector of int)
0:27 Function Call: bitfieldInsert(vi3;vi3;i1;i1; (global highp 3-component vector of int)
0:27 bitfieldInsert (global highp 3-component vector of int)
0:27 'i3' (temp highp 3-component vector of int)
0:27 'i3' (temp highp 3-component vector of int)
0:27 Constant:
@ -1021,7 +1021,7 @@ ERROR: node is still EOpNull!
0:27 5 (const int)
0:28 move second child to first child (temp highp uint)
0:28 'u1' (temp highp uint)
0:28 Function Call: bitfieldInsert(u1;u1;i1;i1; (global highp uint)
0:28 bitfieldInsert (global highp uint)
0:28 'u1' (temp highp uint)
0:28 'u1' (temp highp uint)
0:28 Constant:
@ -1030,61 +1030,61 @@ ERROR: node is still EOpNull!
0:28 5 (const int)
0:30 move second child to first child (temp highp 2-component vector of int)
0:30 'i2' (temp highp 2-component vector of int)
0:30 Function Call: bitfieldReverse(vi2; (global highp 2-component vector of int)
0:30 bitFieldReverse (global highp 2-component vector of int)
0:30 'i2' (temp highp 2-component vector of int)
0:31 move second child to first child (temp highp 4-component vector of uint)
0:31 'u4' (temp highp 4-component vector of uint)
0:31 Function Call: bitfieldReverse(vu4; (global highp 4-component vector of uint)
0:31 bitFieldReverse (global highp 4-component vector of uint)
0:31 'u4' (temp highp 4-component vector of uint)
0:32 move second child to first child (temp highp int)
0:32 'i1' (temp highp int)
0:32 Function Call: bitCount(i1; (global highp int)
0:32 bitCount (global highp int)
0:32 'i1' (temp highp int)
0:33 move second child to first child (temp highp 3-component vector of int)
0:33 'i3' (temp highp 3-component vector of int)
0:33 Function Call: bitCount(vu3; (global highp 3-component vector of int)
0:33 bitCount (global highp 3-component vector of int)
0:33 'u3' (temp highp 3-component vector of uint)
0:34 move second child to first child (temp highp 2-component vector of int)
0:34 'i2' (temp highp 2-component vector of int)
0:34 Function Call: findLSB(vi2; (global highp 2-component vector of int)
0:34 findLSB (global highp 2-component vector of int)
0:34 'i2' (temp highp 2-component vector of int)
0:35 move second child to first child (temp highp 4-component vector of int)
0:35 'i4' (temp highp 4-component vector of int)
0:35 Function Call: findLSB(vu4; (global highp 4-component vector of int)
0:35 findLSB (global highp 4-component vector of int)
0:35 'u4' (temp highp 4-component vector of uint)
0:36 move second child to first child (temp highp int)
0:36 'i1' (temp highp int)
0:36 Function Call: findMSB(i1; (global highp int)
0:36 findMSB (global highp int)
0:36 'i1' (temp highp int)
0:37 move second child to first child (temp highp 2-component vector of int)
0:37 'i2' (temp highp 2-component vector of int)
0:37 Function Call: findMSB(vu2; (global highp 2-component vector of int)
0:37 findMSB (global highp 2-component vector of int)
0:37 'u2' (temp highp 2-component vector of uint)
0:40 move second child to first child (temp highp 3-component vector of float)
0:40 'v3' (temp highp 3-component vector of float)
0:40 Function Call: frexp(vf3;vi3; (global highp 3-component vector of float)
0:40 frexp (global highp 3-component vector of float)
0:40 'v3' (temp highp 3-component vector of float)
0:40 'i3' (temp highp 3-component vector of int)
0:42 move second child to first child (temp highp 2-component vector of float)
0:42 'v2' (temp highp 2-component vector of float)
0:42 Function Call: ldexp(vf2;vi2; (global highp 2-component vector of float)
0:42 ldexp (global highp 2-component vector of float)
0:42 'v2' (temp highp 2-component vector of float)
0:42 'i2' (temp highp 2-component vector of int)
0:45 move second child to first child (temp highp uint)
0:45 'u1' (temp highp uint)
0:45 Function Call: packUnorm4x8(vf4; (global highp uint)
0:45 PackUnorm4x8 (global highp uint)
0:45 'v4' (temp mediump 4-component vector of float)
0:46 move second child to first child (temp highp uint)
0:46 'u1' (temp highp uint)
0:46 Function Call: packSnorm4x8(vf4; (global highp uint)
0:46 PackSnorm4x8 (global highp uint)
0:46 'v4' (temp mediump 4-component vector of float)
0:47 move second child to first child (temp mediump 4-component vector of float)
0:47 'v4' (temp mediump 4-component vector of float)
0:47 Function Call: unpackUnorm4x8(u1; (global mediump 4-component vector of float)
0:47 UnpackUnorm4x8 (global mediump 4-component vector of float)
0:47 'u1' (temp highp uint)
0:48 move second child to first child (temp mediump 4-component vector of float)
0:48 'v4' (temp mediump 4-component vector of float)
0:48 Function Call: unpackSnorm4x8(u1; (global mediump 4-component vector of float)
0:48 UnpackSnorm4x8 (global mediump 4-component vector of float)
0:48 'u1' (temp highp uint)
0:60 Function Definition: foo( (global void)
0:60 Function Parameters:
@ -1143,7 +1143,7 @@ ERROR: node is still EOpNull!
0:? Sequence
0:156 move second child to first child (temp highp 2-component vector of float)
0:156 'h' (temp highp 2-component vector of float)
0:156 Function Call: fma(vf2;vf2;vf2; (global highp 2-component vector of float)
0:156 fma (global highp 2-component vector of float)
0:156 'inf' (in highp 2-component vector of float)
0:156 'ing' (in highp 2-component vector of float)
0:156 'h' (temp highp 2-component vector of float)
@ -1218,7 +1218,7 @@ ERROR: node is still EOpNull!
0:? Sequence
0:174 move second child to first child (temp highp 2-component vector of float)
0:174 'h' (temp highp 2-component vector of float)
0:174 Function Call: fma(vf2;vf2;vf2; (global highp 2-component vector of float)
0:174 fma (global highp 2-component vector of float)
0:174 'inf' (in highp 2-component vector of float)
0:174 'ing' (in highp 2-component vector of float)
0:174 'h' (temp highp 2-component vector of float)

View File

@ -266,37 +266,37 @@ ERROR: node is still EOpNull!
0:84 'in4' (smooth in 4-component vector of float)
0:89 move second child to first child (temp 2-component vector of float)
0:89 'v2' (temp 2-component vector of float)
0:89 Function Call: frexp(vf2;vi2; (global 2-component vector of float)
0:89 frexp (global 2-component vector of float)
0:89 'v2' (temp 2-component vector of float)
0:89 'i2' (temp 2-component vector of int)
0:90 move second child to first child (temp 3-component vector of float)
0:90 'v3' (temp 3-component vector of float)
0:90 Function Call: ldexp(vf3;vi3; (global 3-component vector of float)
0:90 ldexp (global 3-component vector of float)
0:90 'v3' (temp 3-component vector of float)
0:90 'i3' (temp 3-component vector of int)
0:92 move second child to first child (temp uint)
0:92 'u1' (temp uint)
0:92 Function Call: packUnorm4x8(vf4; (global uint)
0:92 PackUnorm4x8 (global uint)
0:92 'v4' (temp 4-component vector of float)
0:93 move second child to first child (temp uint)
0:93 'u1' (temp uint)
0:93 Function Call: packSnorm4x8(vf4; (global uint)
0:93 PackSnorm4x8 (global uint)
0:93 'v4' (temp 4-component vector of float)
0:94 move second child to first child (temp 4-component vector of float)
0:94 'v4' (temp 4-component vector of float)
0:94 Function Call: unpackUnorm4x8(u1; (global 4-component vector of float)
0:94 UnpackUnorm4x8 (global 4-component vector of float)
0:94 'u1' (temp uint)
0:95 move second child to first child (temp 4-component vector of float)
0:95 'v4' (temp 4-component vector of float)
0:95 Function Call: unpackSnorm4x8(u1; (global 4-component vector of float)
0:95 UnpackSnorm4x8 (global 4-component vector of float)
0:95 'u1' (temp uint)
0:99 move second child to first child (temp double)
0:99 'd' (temp double)
0:99 Function Call: packDouble2x32(vu2; (global double)
0:99 PackUnorm4x8 (global double)
0:99 'u2' (temp 2-component vector of uint)
0:100 move second child to first child (temp 2-component vector of uint)
0:100 'u2' (temp 2-component vector of uint)
0:100 Function Call: unpackDouble2x32(d1; (global 2-component vector of uint)
0:100 UnpackUnorm4x8 (global 2-component vector of uint)
0:100 'd' (temp double)
0:? Linker Objects
0:? 'c2D' (smooth in 2-component vector of float)
@ -569,37 +569,37 @@ ERROR: node is still EOpNull!
0:84 'in4' (smooth in 4-component vector of float)
0:89 move second child to first child (temp 2-component vector of float)
0:89 'v2' (temp 2-component vector of float)
0:89 Function Call: frexp(vf2;vi2; (global 2-component vector of float)
0:89 frexp (global 2-component vector of float)
0:89 'v2' (temp 2-component vector of float)
0:89 'i2' (temp 2-component vector of int)
0:90 move second child to first child (temp 3-component vector of float)
0:90 'v3' (temp 3-component vector of float)
0:90 Function Call: ldexp(vf3;vi3; (global 3-component vector of float)
0:90 ldexp (global 3-component vector of float)
0:90 'v3' (temp 3-component vector of float)
0:90 'i3' (temp 3-component vector of int)
0:92 move second child to first child (temp uint)
0:92 'u1' (temp uint)
0:92 Function Call: packUnorm4x8(vf4; (global uint)
0:92 PackUnorm4x8 (global uint)
0:92 'v4' (temp 4-component vector of float)
0:93 move second child to first child (temp uint)
0:93 'u1' (temp uint)
0:93 Function Call: packSnorm4x8(vf4; (global uint)
0:93 PackSnorm4x8 (global uint)
0:93 'v4' (temp 4-component vector of float)
0:94 move second child to first child (temp 4-component vector of float)
0:94 'v4' (temp 4-component vector of float)
0:94 Function Call: unpackUnorm4x8(u1; (global 4-component vector of float)
0:94 UnpackUnorm4x8 (global 4-component vector of float)
0:94 'u1' (temp uint)
0:95 move second child to first child (temp 4-component vector of float)
0:95 'v4' (temp 4-component vector of float)
0:95 Function Call: unpackSnorm4x8(u1; (global 4-component vector of float)
0:95 UnpackSnorm4x8 (global 4-component vector of float)
0:95 'u1' (temp uint)
0:99 move second child to first child (temp double)
0:99 'd' (temp double)
0:99 Function Call: packDouble2x32(vu2; (global double)
0:99 PackUnorm4x8 (global double)
0:99 'u2' (temp 2-component vector of uint)
0:100 move second child to first child (temp 2-component vector of uint)
0:100 'u2' (temp 2-component vector of uint)
0:100 Function Call: unpackDouble2x32(d1; (global 2-component vector of uint)
0:100 UnpackUnorm4x8 (global 2-component vector of uint)
0:100 'd' (temp double)
0:? Linker Objects
0:? 'c2D' (smooth in 2-component vector of float)

View File

@ -79,29 +79,29 @@ ERROR: node is still EOpNull!
0:? Sequence
0:78 move second child to first child (temp 2-component vector of uint)
0:78 'u2' (temp 2-component vector of uint)
0:78 Function Call: uaddCarry(vu2;vu2;vu2; (global 2-component vector of uint)
0:78 addCarry (global 2-component vector of uint)
0:78 'u2' (temp 2-component vector of uint)
0:78 'u2' (temp 2-component vector of uint)
0:78 'u2' (temp 2-component vector of uint)
0:80 move second child to first child (temp uint)
0:80 'u1' (temp uint)
0:80 Function Call: usubBorrow(u1;u1;u1; (global uint)
0:80 subBorrow (global uint)
0:80 'u1' (temp uint)
0:80 'u1' (temp uint)
0:80 'u1' (temp uint)
0:82 Function Call: umulExtended(vu4;vu4;vu4;vu4; (global void)
0:82 uMulExtended (global void)
0:82 'u4' (temp 4-component vector of uint)
0:82 'u4' (temp 4-component vector of uint)
0:82 'u4' (temp 4-component vector of uint)
0:82 'u4' (temp 4-component vector of uint)
0:84 Function Call: imulExtended(vi4;vi4;vi4;vi4; (global void)
0:84 iMulExtended (global void)
0:84 'i4' (temp 4-component vector of int)
0:84 'i4' (temp 4-component vector of int)
0:84 'i4' (temp 4-component vector of int)
0:84 'i4' (temp 4-component vector of int)
0:86 move second child to first child (temp int)
0:86 'i1' (temp int)
0:86 Function Call: bitfieldExtract(i1;i1;i1; (global int)
0:86 bitfieldExtract (global int)
0:86 'i1' (temp int)
0:86 Constant:
0:86 4 (const int)
@ -109,7 +109,7 @@ ERROR: node is still EOpNull!
0:86 5 (const int)
0:88 move second child to first child (temp 3-component vector of uint)
0:88 'u3' (temp 3-component vector of uint)
0:88 Function Call: bitfieldExtract(vu3;i1;i1; (global 3-component vector of uint)
0:88 bitfieldExtract (global 3-component vector of uint)
0:88 'u3' (temp 3-component vector of uint)
0:88 Constant:
0:88 4 (const int)
@ -117,7 +117,7 @@ ERROR: node is still EOpNull!
0:88 5 (const int)
0:90 move second child to first child (temp 3-component vector of int)
0:90 'i3' (temp 3-component vector of int)
0:90 Function Call: bitfieldInsert(vi3;vi3;i1;i1; (global 3-component vector of int)
0:90 bitfieldInsert (global 3-component vector of int)
0:90 'i3' (temp 3-component vector of int)
0:90 'i3' (temp 3-component vector of int)
0:90 Constant:
@ -126,7 +126,7 @@ ERROR: node is still EOpNull!
0:90 5 (const int)
0:91 move second child to first child (temp uint)
0:91 'u1' (temp uint)
0:91 Function Call: bitfieldInsert(u1;u1;i1;i1; (global uint)
0:91 bitfieldInsert (global uint)
0:91 'u1' (temp uint)
0:91 'u1' (temp uint)
0:91 Constant:
@ -135,35 +135,35 @@ ERROR: node is still EOpNull!
0:91 5 (const int)
0:93 move second child to first child (temp 2-component vector of int)
0:93 'i2' (temp 2-component vector of int)
0:93 Function Call: bitfieldReverse(vi2; (global 2-component vector of int)
0:93 bitFieldReverse (global 2-component vector of int)
0:93 'i2' (temp 2-component vector of int)
0:94 move second child to first child (temp 4-component vector of uint)
0:94 'u4' (temp 4-component vector of uint)
0:94 Function Call: bitfieldReverse(vu4; (global 4-component vector of uint)
0:94 bitFieldReverse (global 4-component vector of uint)
0:94 'u4' (temp 4-component vector of uint)
0:95 move second child to first child (temp int)
0:95 'i1' (temp int)
0:95 Function Call: bitCount(i1; (global int)
0:95 bitCount (global int)
0:95 'i1' (temp int)
0:96 move second child to first child (temp 3-component vector of int)
0:96 'i3' (temp 3-component vector of int)
0:96 Function Call: bitCount(vu3; (global 3-component vector of int)
0:96 bitCount (global 3-component vector of int)
0:96 'u3' (temp 3-component vector of uint)
0:97 move second child to first child (temp 2-component vector of int)
0:97 'i2' (temp 2-component vector of int)
0:97 Function Call: findLSB(vi2; (global 2-component vector of int)
0:97 findLSB (global 2-component vector of int)
0:97 'i2' (temp 2-component vector of int)
0:98 move second child to first child (temp 4-component vector of int)
0:98 'i4' (temp 4-component vector of int)
0:98 Function Call: findLSB(vu4; (global 4-component vector of int)
0:98 findLSB (global 4-component vector of int)
0:98 'u4' (temp 4-component vector of uint)
0:99 move second child to first child (temp int)
0:99 'i1' (temp int)
0:99 Function Call: findMSB(i1; (global int)
0:99 findMSB (global int)
0:99 'i1' (temp int)
0:100 move second child to first child (temp 2-component vector of int)
0:100 'i2' (temp 2-component vector of int)
0:100 Function Call: findMSB(vu2; (global 2-component vector of int)
0:100 findMSB (global 2-component vector of int)
0:100 'u2' (temp 2-component vector of uint)
0:? Linker Objects
0:? 'bn' (in 3-element array of block{in int a})
@ -245,29 +245,29 @@ ERROR: node is still EOpNull!
0:? Sequence
0:78 move second child to first child (temp 2-component vector of uint)
0:78 'u2' (temp 2-component vector of uint)
0:78 Function Call: uaddCarry(vu2;vu2;vu2; (global 2-component vector of uint)
0:78 addCarry (global 2-component vector of uint)
0:78 'u2' (temp 2-component vector of uint)
0:78 'u2' (temp 2-component vector of uint)
0:78 'u2' (temp 2-component vector of uint)
0:80 move second child to first child (temp uint)
0:80 'u1' (temp uint)
0:80 Function Call: usubBorrow(u1;u1;u1; (global uint)
0:80 subBorrow (global uint)
0:80 'u1' (temp uint)
0:80 'u1' (temp uint)
0:80 'u1' (temp uint)
0:82 Function Call: umulExtended(vu4;vu4;vu4;vu4; (global void)
0:82 uMulExtended (global void)
0:82 'u4' (temp 4-component vector of uint)
0:82 'u4' (temp 4-component vector of uint)
0:82 'u4' (temp 4-component vector of uint)
0:82 'u4' (temp 4-component vector of uint)
0:84 Function Call: imulExtended(vi4;vi4;vi4;vi4; (global void)
0:84 iMulExtended (global void)
0:84 'i4' (temp 4-component vector of int)
0:84 'i4' (temp 4-component vector of int)
0:84 'i4' (temp 4-component vector of int)
0:84 'i4' (temp 4-component vector of int)
0:86 move second child to first child (temp int)
0:86 'i1' (temp int)
0:86 Function Call: bitfieldExtract(i1;i1;i1; (global int)
0:86 bitfieldExtract (global int)
0:86 'i1' (temp int)
0:86 Constant:
0:86 4 (const int)
@ -275,7 +275,7 @@ ERROR: node is still EOpNull!
0:86 5 (const int)
0:88 move second child to first child (temp 3-component vector of uint)
0:88 'u3' (temp 3-component vector of uint)
0:88 Function Call: bitfieldExtract(vu3;i1;i1; (global 3-component vector of uint)
0:88 bitfieldExtract (global 3-component vector of uint)
0:88 'u3' (temp 3-component vector of uint)
0:88 Constant:
0:88 4 (const int)
@ -283,7 +283,7 @@ ERROR: node is still EOpNull!
0:88 5 (const int)
0:90 move second child to first child (temp 3-component vector of int)
0:90 'i3' (temp 3-component vector of int)
0:90 Function Call: bitfieldInsert(vi3;vi3;i1;i1; (global 3-component vector of int)
0:90 bitfieldInsert (global 3-component vector of int)
0:90 'i3' (temp 3-component vector of int)
0:90 'i3' (temp 3-component vector of int)
0:90 Constant:
@ -292,7 +292,7 @@ ERROR: node is still EOpNull!
0:90 5 (const int)
0:91 move second child to first child (temp uint)
0:91 'u1' (temp uint)
0:91 Function Call: bitfieldInsert(u1;u1;i1;i1; (global uint)
0:91 bitfieldInsert (global uint)
0:91 'u1' (temp uint)
0:91 'u1' (temp uint)
0:91 Constant:
@ -301,35 +301,35 @@ ERROR: node is still EOpNull!
0:91 5 (const int)
0:93 move second child to first child (temp 2-component vector of int)
0:93 'i2' (temp 2-component vector of int)
0:93 Function Call: bitfieldReverse(vi2; (global 2-component vector of int)
0:93 bitFieldReverse (global 2-component vector of int)
0:93 'i2' (temp 2-component vector of int)
0:94 move second child to first child (temp 4-component vector of uint)
0:94 'u4' (temp 4-component vector of uint)
0:94 Function Call: bitfieldReverse(vu4; (global 4-component vector of uint)
0:94 bitFieldReverse (global 4-component vector of uint)
0:94 'u4' (temp 4-component vector of uint)
0:95 move second child to first child (temp int)
0:95 'i1' (temp int)
0:95 Function Call: bitCount(i1; (global int)
0:95 bitCount (global int)
0:95 'i1' (temp int)
0:96 move second child to first child (temp 3-component vector of int)
0:96 'i3' (temp 3-component vector of int)
0:96 Function Call: bitCount(vu3; (global 3-component vector of int)
0:96 bitCount (global 3-component vector of int)
0:96 'u3' (temp 3-component vector of uint)
0:97 move second child to first child (temp 2-component vector of int)
0:97 'i2' (temp 2-component vector of int)
0:97 Function Call: findLSB(vi2; (global 2-component vector of int)
0:97 findLSB (global 2-component vector of int)
0:97 'i2' (temp 2-component vector of int)
0:98 move second child to first child (temp 4-component vector of int)
0:98 'i4' (temp 4-component vector of int)
0:98 Function Call: findLSB(vu4; (global 4-component vector of int)
0:98 findLSB (global 4-component vector of int)
0:98 'u4' (temp 4-component vector of uint)
0:99 move second child to first child (temp int)
0:99 'i1' (temp int)
0:99 Function Call: findMSB(i1; (global int)
0:99 findMSB (global int)
0:99 'i1' (temp int)
0:100 move second child to first child (temp 2-component vector of int)
0:100 'i2' (temp 2-component vector of int)
0:100 Function Call: findMSB(vu2; (global 2-component vector of int)
0:100 findMSB (global 2-component vector of int)
0:100 'u2' (temp 2-component vector of uint)
0:? Linker Objects
0:? 'bn' (in 3-element array of block{in int a})

View File

@ -187,13 +187,13 @@ ERROR: node is still EOpNull!
0:95 'pv3' (temp 3-component vector of float)
0:96 move second child to first child (temp 3-component vector of float)
0:96 'pv3' (temp 3-component vector of float)
0:96 Function Call: fma(vf3;vf3;vf3; (global 3-component vector of float)
0:96 fma (global 3-component vector of float)
0:96 'pv3' (temp 3-component vector of float)
0:96 'pv3' (temp 3-component vector of float)
0:96 'pv3' (temp 3-component vector of float)
0:97 move second child to first child (temp double)
0:97 'd' (temp double)
0:97 Function Call: fma(d1;d1;d1; (global double)
0:97 fma (global double)
0:97 'd' (temp double)
0:97 'd' (temp double)
0:97 'd' (temp double)
@ -385,13 +385,13 @@ ERROR: node is still EOpNull!
0:95 'pv3' (temp 3-component vector of float)
0:96 move second child to first child (temp 3-component vector of float)
0:96 'pv3' (temp 3-component vector of float)
0:96 Function Call: fma(vf3;vf3;vf3; (global 3-component vector of float)
0:96 fma (global 3-component vector of float)
0:96 'pv3' (temp 3-component vector of float)
0:96 'pv3' (temp 3-component vector of float)
0:96 'pv3' (temp 3-component vector of float)
0:97 move second child to first child (temp double)
0:97 'd' (temp double)
0:97 Function Call: fma(d1;d1;d1; (global double)
0:97 fma (global double)
0:97 'd' (temp double)
0:97 'd' (temp double)
0:97 'd' (temp double)

View File

@ -140,7 +140,7 @@ enum TOperator {
EOpMethod,
//
// Built-in functions potentially mapped to operators
// Built-in functions mapped to operators
//
EOpRadians,
@ -185,6 +185,11 @@ enum TOperator {
EOpIsNan,
EOpIsInf,
EOpFma,
EFrexp,
ELdexp,
EOpFloatBitsToInt,
EOpFloatBitsToUint,
EOpIntBitsToFloat,
@ -193,8 +198,14 @@ enum TOperator {
EOpUnpackSnorm2x16,
EOpPackUnorm2x16,
EOpUnpackUnorm2x16,
EOpPackSnorm4x8,
EOpUnpackSnorm4x8,
EOpPackUnorm4x8,
EOpUnpackUnorm4x8,
EOpPackHalf2x16,
EOpUnpackHalf2x16,
EOpPackDouble2x32,
EOpUnpackDouble2x32,
EOpLength,
EOpDistance,
@ -221,6 +232,8 @@ enum TOperator {
EOpMatrixInverse,
EOpTranspose,
EOpFtransform,
EOpEmitVertex, // geometry only
EOpEndPrimitive, // geometry only
EOpEmitStreamVertex, // geometry only
@ -340,46 +353,61 @@ enum TOperator {
// N.B. The following is not being used yet, pending input, as switching
// to it from the current text-based approach will break existing consumers.
EImageQuerySize,
EImageQuerySamples,
EImageLoad,
EImageStore,
EImageAtomicAdd,
EImageAtomicMin,
EImageAtomicMax,
EImageAtomicAnd,
EImageAtomicOr,
EImageAtomicXor,
EImageAtomicExchange,
EImageAtomicCompSwap,
EOpImageQuerySize,
EOpImageQuerySamples,
EOpImageLoad,
EOpImageStore,
EOpImageAtomicAdd,
EOpImageAtomicMin,
EOpImageAtomicMax,
EOpImageAtomicAnd,
EOpImageAtomicOr,
EOpImageAtomicXor,
EOpImageAtomicExchange,
EOpImageAtomicCompSwap,
//
// Texture operations
//
ETextureGuardBegin,
ETextureQuerySize,
ETextureQueryLod,
ETextureQueryLevels,
ETextureQuerySamples,
ETexture,
ETextureProj,
ETextureLod,
ETextureOffset,
ETextureFetch,
ETextureFetchOffset,
ETextureProjOffset,
ETextureLodOffset,
ETextureProjLod,
ETextureProjLodOffset,
ETextureGrad,
ETextureGradOffset,
ETextureProjGrad,
ETextureProjGradOffset,
ETextureGather,
ETextureGatherOffset,
ETextureGatherOffsets,
ETextureGuardEnd,
EOpTextureGuardBegin,
EOpTextureQuerySize,
EOpTextureQueryLod,
EOpTextureQueryLevels,
EOpTextureQuerySamples,
EOpTexture,
EOpTextureProj,
EOpTextureLod,
EOpTextureOffset,
EOpTextureFetch,
EOpTextureFetchOffset,
EOpTextureProjOffset,
EOpTextureLodOffset,
EOpTextureProjLod,
EOpTextureProjLodOffset,
EOpTextureGrad,
EOpTextureGradOffset,
EOpTextureProjGrad,
EOpTextureProjGradOffset,
EOpTextureGather,
EOpTextureGatherOffset,
EOpTextureGatherOffsets,
EOpTextureGuardEnd,
//
// Integer operations
//
EOpAddCarry,
EOpSubBorrow,
EOpUMulExtended,
EOpIMulExtended,
EOpBitfieldExtract,
EOpBitfieldInsert,
EOpBitFieldReverse,
EOpBitCount,
EOpFindLSB,
EOpFindMSB,
};
class TIntermTraverser;

View File

@ -2,5 +2,5 @@
// For the version, it uses the latest git tag followed by the number of commits.
// For the date, it uses the current date (when then script is run).
#define GLSLANG_REVISION "2.3.721"
#define GLSLANG_REVISION "2.3.723"
#define GLSLANG_DATE "18-Aug-2015"

View File

@ -57,7 +57,9 @@ namespace glslang {
bool ARBCompatibility = true;
const bool ForwardCompatibility = false;
const bool PureOperatorBuiltins = false; // could break backward compatibility; pending feedback
// change this back to false if depending on textual spellings of texturing calls when consuming the AST
const bool PureOperatorBuiltins = false;
inline bool IncludeLegacy(int version, EProfile profile)
{
@ -3167,10 +3169,20 @@ void IdentifyBuiltIns(int version, EProfile profile, EShLanguage language, TSymb
symbolTable.relateToOperator("floatBitsToUint", EOpFloatBitsToUint);
symbolTable.relateToOperator("intBitsToFloat", EOpIntBitsToFloat);
symbolTable.relateToOperator("uintBitsToFloat", EOpUintBitsToFloat);
symbolTable.relateToOperator("packSnorm2x16", EOpPackSnorm2x16);
symbolTable.relateToOperator("unpackSnorm2x16", EOpUnpackSnorm2x16);
symbolTable.relateToOperator("packUnorm2x16", EOpPackUnorm2x16);
symbolTable.relateToOperator("unpackUnorm2x16", EOpUnpackUnorm2x16);
symbolTable.relateToOperator("packSnorm4x8", EOpPackSnorm4x8);
symbolTable.relateToOperator("unpackSnorm4x8", EOpUnpackSnorm4x8);
symbolTable.relateToOperator("packUnorm4x8", EOpPackUnorm4x8);
symbolTable.relateToOperator("unpackUnorm4x8", EOpUnpackUnorm4x8);
symbolTable.relateToOperator("packDouble2x32", EOpPackUnorm4x8);
symbolTable.relateToOperator("unpackDouble2x32", EOpUnpackUnorm4x8);
symbolTable.relateToOperator("packHalf2x16", EOpPackHalf2x16);
symbolTable.relateToOperator("unpackHalf2x16", EOpUnpackHalf2x16);
@ -3205,66 +3217,80 @@ void IdentifyBuiltIns(int version, EProfile profile, EShLanguage language, TSymb
symbolTable.relateToOperator("atomicCounterDecrement", EOpAtomicCounterDecrement);
symbolTable.relateToOperator("atomicCounter", EOpAtomicCounter);
if (PureOperatorBuiltins) {
symbolTable.relateToOperator("imageQuerySize", EImageQuerySize);
symbolTable.relateToOperator("imageQuerySamples", EImageQuerySamples);
symbolTable.relateToOperator("imageLoad", EImageLoad);
symbolTable.relateToOperator("imageStore", EImageStore);
symbolTable.relateToOperator("imageAtomicAdd", EImageAtomicAdd);
symbolTable.relateToOperator("imageAtomicMin", EImageAtomicMin);
symbolTable.relateToOperator("imageAtomicMax", EImageAtomicMax);
symbolTable.relateToOperator("imageAtomicAnd", EImageAtomicAnd);
symbolTable.relateToOperator("imageAtomicOr", EImageAtomicOr);
symbolTable.relateToOperator("imageAtomicXor", EImageAtomicXor);
symbolTable.relateToOperator("imageAtomicExchange", EImageAtomicExchange);
symbolTable.relateToOperator("imageAtomicCompSwap", EImageAtomicCompSwap);
symbolTable.relateToOperator("fma", EOpFma);
symbolTable.relateToOperator("frexp", EFrexp);
symbolTable.relateToOperator("ldexp", ELdexp);
symbolTable.relateToOperator("uaddCarry", EOpAddCarry);
symbolTable.relateToOperator("usubBorrow", EOpSubBorrow);
symbolTable.relateToOperator("umulExtended", EOpUMulExtended);
symbolTable.relateToOperator("imulExtended", EOpIMulExtended);
symbolTable.relateToOperator("bitfieldExtract", EOpBitfieldExtract);
symbolTable.relateToOperator("bitfieldInsert", EOpBitfieldInsert);
symbolTable.relateToOperator("bitfieldReverse", EOpBitFieldReverse);
symbolTable.relateToOperator("bitCount", EOpBitCount);
symbolTable.relateToOperator("findLSB", EOpFindLSB);
symbolTable.relateToOperator("findMSB", EOpFindMSB);
symbolTable.relateToOperator("textureSize", ETextureQuerySize);
symbolTable.relateToOperator("textureQueryLod", ETextureQueryLod);
symbolTable.relateToOperator("textureQueryLevels", ETextureQueryLevels);
symbolTable.relateToOperator("textureSamples", ETextureQuerySamples);
symbolTable.relateToOperator("texture", ETexture);
symbolTable.relateToOperator("textureProj", ETextureProj);
symbolTable.relateToOperator("textureLod", ETextureLod);
symbolTable.relateToOperator("textureOffset", ETextureOffset);
symbolTable.relateToOperator("textureFetch", ETextureFetch);
symbolTable.relateToOperator("textureFetchOffset", ETextureFetchOffset);
symbolTable.relateToOperator("textureProjOffset", ETextureProjOffset);
symbolTable.relateToOperator("textureLodOffset", ETextureLodOffset);
symbolTable.relateToOperator("textureProjLod", ETextureProjLod);
symbolTable.relateToOperator("textureProjLodOffset", ETextureProjLodOffset);
symbolTable.relateToOperator("textureGrad", ETextureGrad);
symbolTable.relateToOperator("textureGradOffset", ETextureGradOffset);
symbolTable.relateToOperator("textureProjGrad", ETextureProjGrad);
symbolTable.relateToOperator("textureProjGradOffset", ETextureProjGradOffset);
symbolTable.relateToOperator("textureGather", ETextureGather);
symbolTable.relateToOperator("textureGatherOffset", ETextureGatherOffset);
symbolTable.relateToOperator("textureGatherOffsets", ETextureGatherOffsets);
if (PureOperatorBuiltins) {
symbolTable.relateToOperator("imageSize", EOpImageQuerySize);
symbolTable.relateToOperator("imageSamples", EOpImageQuerySamples);
symbolTable.relateToOperator("imageLoad", EOpImageLoad);
symbolTable.relateToOperator("imageStore", EOpImageStore);
symbolTable.relateToOperator("imageAtomicAdd", EOpImageAtomicAdd);
symbolTable.relateToOperator("imageAtomicMin", EOpImageAtomicMin);
symbolTable.relateToOperator("imageAtomicMax", EOpImageAtomicMax);
symbolTable.relateToOperator("imageAtomicAnd", EOpImageAtomicAnd);
symbolTable.relateToOperator("imageAtomicOr", EOpImageAtomicOr);
symbolTable.relateToOperator("imageAtomicXor", EOpImageAtomicXor);
symbolTable.relateToOperator("imageAtomicExchange", EOpImageAtomicExchange);
symbolTable.relateToOperator("imageAtomicCompSwap", EOpImageAtomicCompSwap);
symbolTable.relateToOperator("textureSize", EOpTextureQuerySize);
symbolTable.relateToOperator("textureQueryLod", EOpTextureQueryLod);
symbolTable.relateToOperator("textureQueryLevels", EOpTextureQueryLevels);
symbolTable.relateToOperator("textureSamples", EOpTextureQuerySamples);
symbolTable.relateToOperator("texture", EOpTexture);
symbolTable.relateToOperator("textureProj", EOpTextureProj);
symbolTable.relateToOperator("textureLod", EOpTextureLod);
symbolTable.relateToOperator("textureOffset", EOpTextureOffset);
symbolTable.relateToOperator("texelFetch", EOpTextureFetch);
symbolTable.relateToOperator("texelFetchOffset", EOpTextureFetchOffset);
symbolTable.relateToOperator("textureProjOffset", EOpTextureProjOffset);
symbolTable.relateToOperator("textureLodOffset", EOpTextureLodOffset);
symbolTable.relateToOperator("textureProjLod", EOpTextureProjLod);
symbolTable.relateToOperator("textureProjLodOffset", EOpTextureProjLodOffset);
symbolTable.relateToOperator("textureGrad", EOpTextureGrad);
symbolTable.relateToOperator("textureGradOffset", EOpTextureGradOffset);
symbolTable.relateToOperator("textureProjGrad", EOpTextureProjGrad);
symbolTable.relateToOperator("textureProjGradOffset", EOpTextureProjGradOffset);
symbolTable.relateToOperator("textureGather", EOpTextureGather);
symbolTable.relateToOperator("textureGatherOffset", EOpTextureGatherOffset);
symbolTable.relateToOperator("textureGatherOffsets", EOpTextureGatherOffsets);
if (IncludeLegacy(version, profile)) {
// TBD: add ftransform(), any others?
symbolTable.relateToOperator("texture1D", ETexture);
symbolTable.relateToOperator("texture1DProj", ETextureProj);
symbolTable.relateToOperator("texture1DLod", ETextureLod);
symbolTable.relateToOperator("texture1DProjLod", ETextureProjLod);
symbolTable.relateToOperator("texture2D", ETexture);
symbolTable.relateToOperator("texture2DProj", ETextureProj);
symbolTable.relateToOperator("texture2DLod", ETextureLod);
symbolTable.relateToOperator("texture2DProjLod", ETextureProjLod);
symbolTable.relateToOperator("texture3D", ETexture);
symbolTable.relateToOperator("texture3DProj", ETextureProj);
symbolTable.relateToOperator("texture3DLod", ETextureLod);
symbolTable.relateToOperator("texture3DProjLod", ETextureProjLod);
symbolTable.relateToOperator("textureCube", ETexture);
symbolTable.relateToOperator("textureCubeLod", ETextureLod);
symbolTable.relateToOperator("shadow1D", ETexture);
symbolTable.relateToOperator("shadow2D", ETexture);
symbolTable.relateToOperator("shadow1DProj", ETextureProj);
symbolTable.relateToOperator("shadow2DProj", ETextureProj);
symbolTable.relateToOperator("shadow1DLod", ETextureLod);
symbolTable.relateToOperator("shadow2DLod", ETextureLod);
symbolTable.relateToOperator("shadow1DProjLod", ETextureProjLod);
symbolTable.relateToOperator("shadow2DProjLod", ETextureProjLod);
symbolTable.relateToOperator("texture1D", EOpTexture);
symbolTable.relateToOperator("texture1DProj", EOpTextureProj);
symbolTable.relateToOperator("texture1DLod", EOpTextureLod);
symbolTable.relateToOperator("texture1DProjLod", EOpTextureProjLod);
symbolTable.relateToOperator("texture2D", EOpTexture);
symbolTable.relateToOperator("texture2DProj", EOpTextureProj);
symbolTable.relateToOperator("texture2DLod", EOpTextureLod);
symbolTable.relateToOperator("texture2DProjLod", EOpTextureProjLod);
symbolTable.relateToOperator("texture3D", EOpTexture);
symbolTable.relateToOperator("texture3DProj", EOpTextureProj);
symbolTable.relateToOperator("texture3DLod", EOpTextureLod);
symbolTable.relateToOperator("texture3DProjLod", EOpTextureProjLod);
symbolTable.relateToOperator("textureCube", EOpTexture);
symbolTable.relateToOperator("textureCubeLod", EOpTextureLod);
symbolTable.relateToOperator("shadow1D", EOpTexture);
symbolTable.relateToOperator("shadow2D", EOpTexture);
symbolTable.relateToOperator("shadow1DProj", EOpTextureProj);
symbolTable.relateToOperator("shadow2DProj", EOpTextureProj);
symbolTable.relateToOperator("shadow1DLod", EOpTextureLod);
symbolTable.relateToOperator("shadow2DLod", EOpTextureLod);
symbolTable.relateToOperator("shadow1DProjLod", EOpTextureProjLod);
symbolTable.relateToOperator("shadow2DProjLod", EOpTextureProjLod);
}
}

View File

@ -268,6 +268,13 @@ bool TOutputTraverser::visitUnary(TVisit /* visit */, TIntermUnary* node)
case EOpPackHalf2x16: out.debug << "packHalf2x16"; break;
case EOpUnpackHalf2x16: out.debug << "unpackHalf2x16"; break;
case EOpPackSnorm4x8: out.debug << "PackSnorm4x8"; break;
case EOpUnpackSnorm4x8: out.debug << "UnpackSnorm4x8"; break;
case EOpPackUnorm4x8: out.debug << "PackUnorm4x8"; break;
case EOpUnpackUnorm4x8: out.debug << "UnpackUnorm4x8"; break;
case EOpPackDouble2x32: out.debug << "PackDouble2x32"; break;
case EOpUnpackDouble2x32: out.debug << "UnpackDouble2x32"; break;
case EOpLength: out.debug << "length"; break;
case EOpNormalize: out.debug << "normalize"; break;
case EOpDPdx: out.debug << "dPdx"; break;
@ -295,6 +302,19 @@ bool TOutputTraverser::visitUnary(TVisit /* visit */, TIntermUnary* node)
case EOpAtomicCounterDecrement: out.debug << "AtomicCounterDecrement";break;
case EOpAtomicCounter: out.debug << "AtomicCounter"; break;
case EOpTextureQuerySize: out.debug << "textureSize"; break;
case EOpTextureQueryLod: out.debug << "textureQueryLod"; break;
case EOpTextureQueryLevels: out.debug << "textureQueryLevels"; break;
case EOpTextureQuerySamples: out.debug << "textureSamples"; break;
case EOpImageQuerySize: out.debug << "imageQuerySize"; break;
case EOpImageQuerySamples: out.debug << "imageQuerySamples"; break;
case EOpImageLoad: out.debug << "imageLoad"; break;
case EOpBitFieldReverse: out.debug << "bitFieldReverse"; break;
case EOpBitCount: out.debug << "bitCount"; break;
case EOpFindLSB: out.debug << "findLSB"; break;
case EOpFindMSB: out.debug << "findMSB"; break;
default: out.debug.message(EPrefixError, "Bad unary op");
}
@ -410,40 +430,51 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node
case EOpAtomicExchange: out.debug << "AtomicExchange"; break;
case EOpAtomicCompSwap: out.debug << "AtomicCompSwap"; break;
case EImageQuerySize: out.debug << "imageQuerySize"; break;
case EImageQuerySamples: out.debug << "imageQuerySamples"; break;
case EImageLoad: out.debug << "imageLoad"; break;
case EImageStore: out.debug << "imageStore"; break;
case EImageAtomicAdd: out.debug << "imageAtomicAdd"; break;
case EImageAtomicMin: out.debug << "imageAtomicMin"; break;
case EImageAtomicMax: out.debug << "imageAtomicMax"; break;
case EImageAtomicAnd: out.debug << "imageAtomicAnd"; break;
case EImageAtomicOr: out.debug << "imageAtomicOr"; break;
case EImageAtomicXor: out.debug << "imageAtomicXor"; break;
case EImageAtomicExchange: out.debug << "imageAtomicExchange"; break;
case EImageAtomicCompSwap: out.debug << "imageAtomicCompSwap"; break;
case EOpImageQuerySize: out.debug << "imageQuerySize"; break;
case EOpImageQuerySamples: out.debug << "imageQuerySamples"; break;
case EOpImageLoad: out.debug << "imageLoad"; break;
case EOpImageStore: out.debug << "imageStore"; break;
case EOpImageAtomicAdd: out.debug << "imageAtomicAdd"; break;
case EOpImageAtomicMin: out.debug << "imageAtomicMin"; break;
case EOpImageAtomicMax: out.debug << "imageAtomicMax"; break;
case EOpImageAtomicAnd: out.debug << "imageAtomicAnd"; break;
case EOpImageAtomicOr: out.debug << "imageAtomicOr"; break;
case EOpImageAtomicXor: out.debug << "imageAtomicXor"; break;
case EOpImageAtomicExchange: out.debug << "imageAtomicExchange"; break;
case EOpImageAtomicCompSwap: out.debug << "imageAtomicCompSwap"; break;
case ETextureQuerySize: out.debug << "textureSize"; break;
case ETextureQueryLod: out.debug << "textureQueryLod"; break;
case ETextureQueryLevels: out.debug << "textureQueryLevels"; break;
case ETextureQuerySamples: out.debug << "textureSamples"; break;
case ETexture: out.debug << "texture"; break;
case ETextureProj: out.debug << "textureProj"; break;
case ETextureLod: out.debug << "textureLod"; break;
case ETextureOffset: out.debug << "textureOffset"; break;
case ETextureFetch: out.debug << "textureFetch"; break;
case ETextureFetchOffset: out.debug << "textureFetchOffset"; break;
case ETextureProjOffset: out.debug << "textureProjOffset"; break;
case ETextureLodOffset: out.debug << "textureLodOffset"; break;
case ETextureProjLod: out.debug << "textureProjLod"; break;
case ETextureProjLodOffset: out.debug << "textureProjLodOffset"; break;
case ETextureGrad: out.debug << "textureGrad"; break;
case ETextureGradOffset: out.debug << "textureGradOffset"; break;
case ETextureProjGrad: out.debug << "textureProjGrad"; break;
case ETextureProjGradOffset: out.debug << "textureProjGradOffset"; break;
case ETextureGather: out.debug << "textureGather"; break;
case ETextureGatherOffset: out.debug << "textureGatherOffset"; break;
case ETextureGatherOffsets: out.debug << "textureGatherOffsets"; break;
case EOpTextureQuerySize: out.debug << "textureSize"; break;
case EOpTextureQueryLod: out.debug << "textureQueryLod"; break;
case EOpTextureQueryLevels: out.debug << "textureQueryLevels"; break;
case EOpTextureQuerySamples: out.debug << "textureSamples"; break;
case EOpTexture: out.debug << "texture"; break;
case EOpTextureProj: out.debug << "textureProj"; break;
case EOpTextureLod: out.debug << "textureLod"; break;
case EOpTextureOffset: out.debug << "textureOffset"; break;
case EOpTextureFetch: out.debug << "textureFetch"; break;
case EOpTextureFetchOffset: out.debug << "textureFetchOffset"; break;
case EOpTextureProjOffset: out.debug << "textureProjOffset"; break;
case EOpTextureLodOffset: out.debug << "textureLodOffset"; break;
case EOpTextureProjLod: out.debug << "textureProjLod"; break;
case EOpTextureProjLodOffset: out.debug << "textureProjLodOffset"; break;
case EOpTextureGrad: out.debug << "textureGrad"; break;
case EOpTextureGradOffset: out.debug << "textureGradOffset"; break;
case EOpTextureProjGrad: out.debug << "textureProjGrad"; break;
case EOpTextureProjGradOffset: out.debug << "textureProjGradOffset"; break;
case EOpTextureGather: out.debug << "textureGather"; break;
case EOpTextureGatherOffset: out.debug << "textureGatherOffset"; break;
case EOpTextureGatherOffsets: out.debug << "textureGatherOffsets"; break;
case EOpAddCarry: out.debug << "addCarry"; break;
case EOpSubBorrow: out.debug << "subBorrow"; break;
case EOpUMulExtended: out.debug << "uMulExtended"; break;
case EOpIMulExtended: out.debug << "iMulExtended"; break;
case EOpBitfieldExtract: out.debug << "bitfieldExtract"; break;
case EOpBitfieldInsert: out.debug << "bitfieldInsert"; break;
case EOpFma: out.debug << "fma"; break;
case EFrexp: out.debug << "frexp"; break;
case ELdexp: out.debug << "ldexp"; break;
default: out.debug.message(EPrefixError, "Bad aggregation op");
}