Commit 297ae211 by steve-lunarg

WIP: HLSL: Treat HLSL rows as GLSL columns.

WIP: HLSL: EOpGenMul arg reversal
parent a21187a7
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -1101,20 +1101,20 @@ Shader version: 450 ...@@ -1101,20 +1101,20 @@ Shader version: 450
0:378 move second child to first child (temp float) 0:378 move second child to first child (temp float)
0:378 'r0' (temp float) 0:378 'r0' (temp float)
0:378 component-wise multiply (temp float) 0:378 component-wise multiply (temp float)
0:378 'inF0' (in float)
0:378 'inF1' (in float) 0:378 'inF1' (in float)
0:378 'inF0' (in float)
0:378 Sequence 0:378 Sequence
0:378 move second child to first child (temp 2-component vector of float) 0:378 move second child to first child (temp 2-component vector of float)
0:378 'r1' (temp 2-component vector of float) 0:378 'r1' (temp 2-component vector of float)
0:378 vector-scale (temp 2-component vector of float) 0:378 vector-scale (temp 2-component vector of float)
0:378 'inFV0' (in 2-component vector of float)
0:378 'inF0' (in float) 0:378 'inF0' (in float)
0:378 'inFV0' (in 2-component vector of float)
0:378 Sequence 0:378 Sequence
0:378 move second child to first child (temp 2-component vector of float) 0:378 move second child to first child (temp 2-component vector of float)
0:378 'r2' (temp 2-component vector of float) 0:378 'r2' (temp 2-component vector of float)
0:378 vector-scale (temp 2-component vector of float) 0:378 vector-scale (temp 2-component vector of float)
0:378 'inF0' (in float)
0:378 'inFV0' (in 2-component vector of float) 0:378 'inFV0' (in 2-component vector of float)
0:378 'inF0' (in float)
0:378 Sequence 0:378 Sequence
0:378 move second child to first child (temp float) 0:378 move second child to first child (temp float)
0:378 'r3' (temp float) 0:378 'r3' (temp float)
...@@ -1124,33 +1124,33 @@ Shader version: 450 ...@@ -1124,33 +1124,33 @@ Shader version: 450
0:378 Sequence 0:378 Sequence
0:378 move second child to first child (temp 2-component vector of float) 0:378 move second child to first child (temp 2-component vector of float)
0:378 'r4' (temp 2-component vector of float) 0:378 'r4' (temp 2-component vector of float)
0:378 matrix-times-vector (temp 2-component vector of float) 0:378 vector-times-matrix (temp 2-component vector of float)
0:378 'inFM0' (in 2X2 matrix of float)
0:378 'inFV0' (in 2-component vector of float) 0:378 'inFV0' (in 2-component vector of float)
0:378 'inFM0' (in 2X2 matrix of float)
0:378 Sequence 0:378 Sequence
0:378 move second child to first child (temp 2-component vector of float) 0:378 move second child to first child (temp 2-component vector of float)
0:378 'r5' (temp 2-component vector of float) 0:378 'r5' (temp 2-component vector of float)
0:378 vector-times-matrix (temp 2-component vector of float) 0:378 matrix-times-vector (temp 2-component vector of float)
0:378 'inFV0' (in 2-component vector of float)
0:378 'inFM0' (in 2X2 matrix of float) 0:378 'inFM0' (in 2X2 matrix of float)
0:378 'inFV0' (in 2-component vector of float)
0:378 Sequence 0:378 Sequence
0:378 move second child to first child (temp 2X2 matrix of float) 0:378 move second child to first child (temp 2X2 matrix of float)
0:378 'r6' (temp 2X2 matrix of float) 0:378 'r6' (temp 2X2 matrix of float)
0:378 matrix-scale (temp 2X2 matrix of float) 0:378 matrix-scale (temp 2X2 matrix of float)
0:378 'inFM0' (in 2X2 matrix of float)
0:378 'inF0' (in float) 0:378 'inF0' (in float)
0:378 'inFM0' (in 2X2 matrix of float)
0:378 Sequence 0:378 Sequence
0:378 move second child to first child (temp 2X2 matrix of float) 0:378 move second child to first child (temp 2X2 matrix of float)
0:378 'r7' (temp 2X2 matrix of float) 0:378 'r7' (temp 2X2 matrix of float)
0:378 matrix-scale (temp 2X2 matrix of float) 0:378 matrix-scale (temp 2X2 matrix of float)
0:378 'inF0' (in float)
0:378 'inFM0' (in 2X2 matrix of float) 0:378 'inFM0' (in 2X2 matrix of float)
0:378 'inF0' (in float)
0:378 Sequence 0:378 Sequence
0:378 move second child to first child (temp 2X2 matrix of float) 0:378 move second child to first child (temp 2X2 matrix of float)
0:378 'r8' (temp 2X2 matrix of float) 0:378 'r8' (temp 2X2 matrix of float)
0:378 matrix-multiply (temp 2X2 matrix of float) 0:378 matrix-multiply (temp 2X2 matrix of float)
0:378 'inFM0' (in 2X2 matrix of float)
0:378 'inFM1' (in 2X2 matrix of float) 0:378 'inFM1' (in 2X2 matrix of float)
0:378 'inFM0' (in 2X2 matrix of float)
0:384 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; (global void) 0:384 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; (global void)
0:384 Function Parameters: 0:384 Function Parameters:
0:384 'inF0' (in float) 0:384 'inF0' (in float)
...@@ -1164,20 +1164,20 @@ Shader version: 450 ...@@ -1164,20 +1164,20 @@ Shader version: 450
0:385 move second child to first child (temp float) 0:385 move second child to first child (temp float)
0:385 'r0' (temp float) 0:385 'r0' (temp float)
0:385 component-wise multiply (temp float) 0:385 component-wise multiply (temp float)
0:385 'inF0' (in float)
0:385 'inF1' (in float) 0:385 'inF1' (in float)
0:385 'inF0' (in float)
0:385 Sequence 0:385 Sequence
0:385 move second child to first child (temp 3-component vector of float) 0:385 move second child to first child (temp 3-component vector of float)
0:385 'r1' (temp 3-component vector of float) 0:385 'r1' (temp 3-component vector of float)
0:385 vector-scale (temp 3-component vector of float) 0:385 vector-scale (temp 3-component vector of float)
0:385 'inFV0' (in 3-component vector of float)
0:385 'inF0' (in float) 0:385 'inF0' (in float)
0:385 'inFV0' (in 3-component vector of float)
0:385 Sequence 0:385 Sequence
0:385 move second child to first child (temp 3-component vector of float) 0:385 move second child to first child (temp 3-component vector of float)
0:385 'r2' (temp 3-component vector of float) 0:385 'r2' (temp 3-component vector of float)
0:385 vector-scale (temp 3-component vector of float) 0:385 vector-scale (temp 3-component vector of float)
0:385 'inF0' (in float)
0:385 'inFV0' (in 3-component vector of float) 0:385 'inFV0' (in 3-component vector of float)
0:385 'inF0' (in float)
0:385 Sequence 0:385 Sequence
0:385 move second child to first child (temp float) 0:385 move second child to first child (temp float)
0:385 'r3' (temp float) 0:385 'r3' (temp float)
...@@ -1187,33 +1187,33 @@ Shader version: 450 ...@@ -1187,33 +1187,33 @@ Shader version: 450
0:385 Sequence 0:385 Sequence
0:385 move second child to first child (temp 3-component vector of float) 0:385 move second child to first child (temp 3-component vector of float)
0:385 'r4' (temp 3-component vector of float) 0:385 'r4' (temp 3-component vector of float)
0:385 matrix-times-vector (temp 3-component vector of float) 0:385 vector-times-matrix (temp 3-component vector of float)
0:385 'inFM0' (in 3X3 matrix of float)
0:385 'inFV0' (in 3-component vector of float) 0:385 'inFV0' (in 3-component vector of float)
0:385 'inFM0' (in 3X3 matrix of float)
0:385 Sequence 0:385 Sequence
0:385 move second child to first child (temp 3-component vector of float) 0:385 move second child to first child (temp 3-component vector of float)
0:385 'r5' (temp 3-component vector of float) 0:385 'r5' (temp 3-component vector of float)
0:385 vector-times-matrix (temp 3-component vector of float) 0:385 matrix-times-vector (temp 3-component vector of float)
0:385 'inFV0' (in 3-component vector of float)
0:385 'inFM0' (in 3X3 matrix of float) 0:385 'inFM0' (in 3X3 matrix of float)
0:385 'inFV0' (in 3-component vector of float)
0:385 Sequence 0:385 Sequence
0:385 move second child to first child (temp 3X3 matrix of float) 0:385 move second child to first child (temp 3X3 matrix of float)
0:385 'r6' (temp 3X3 matrix of float) 0:385 'r6' (temp 3X3 matrix of float)
0:385 matrix-scale (temp 3X3 matrix of float) 0:385 matrix-scale (temp 3X3 matrix of float)
0:385 'inFM0' (in 3X3 matrix of float)
0:385 'inF0' (in float) 0:385 'inF0' (in float)
0:385 'inFM0' (in 3X3 matrix of float)
0:385 Sequence 0:385 Sequence
0:385 move second child to first child (temp 3X3 matrix of float) 0:385 move second child to first child (temp 3X3 matrix of float)
0:385 'r7' (temp 3X3 matrix of float) 0:385 'r7' (temp 3X3 matrix of float)
0:385 matrix-scale (temp 3X3 matrix of float) 0:385 matrix-scale (temp 3X3 matrix of float)
0:385 'inF0' (in float)
0:385 'inFM0' (in 3X3 matrix of float) 0:385 'inFM0' (in 3X3 matrix of float)
0:385 'inF0' (in float)
0:385 Sequence 0:385 Sequence
0:385 move second child to first child (temp 3X3 matrix of float) 0:385 move second child to first child (temp 3X3 matrix of float)
0:385 'r8' (temp 3X3 matrix of float) 0:385 'r8' (temp 3X3 matrix of float)
0:385 matrix-multiply (temp 3X3 matrix of float) 0:385 matrix-multiply (temp 3X3 matrix of float)
0:385 'inFM0' (in 3X3 matrix of float)
0:385 'inFM1' (in 3X3 matrix of float) 0:385 'inFM1' (in 3X3 matrix of float)
0:385 'inFM0' (in 3X3 matrix of float)
0:391 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; (global void) 0:391 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; (global void)
0:391 Function Parameters: 0:391 Function Parameters:
0:391 'inF0' (in float) 0:391 'inF0' (in float)
...@@ -1227,20 +1227,20 @@ Shader version: 450 ...@@ -1227,20 +1227,20 @@ Shader version: 450
0:392 move second child to first child (temp float) 0:392 move second child to first child (temp float)
0:392 'r0' (temp float) 0:392 'r0' (temp float)
0:392 component-wise multiply (temp float) 0:392 component-wise multiply (temp float)
0:392 'inF0' (in float)
0:392 'inF1' (in float) 0:392 'inF1' (in float)
0:392 'inF0' (in float)
0:392 Sequence 0:392 Sequence
0:392 move second child to first child (temp 4-component vector of float) 0:392 move second child to first child (temp 4-component vector of float)
0:392 'r1' (temp 4-component vector of float) 0:392 'r1' (temp 4-component vector of float)
0:392 vector-scale (temp 4-component vector of float) 0:392 vector-scale (temp 4-component vector of float)
0:392 'inFV0' (in 4-component vector of float)
0:392 'inF0' (in float) 0:392 'inF0' (in float)
0:392 'inFV0' (in 4-component vector of float)
0:392 Sequence 0:392 Sequence
0:392 move second child to first child (temp 4-component vector of float) 0:392 move second child to first child (temp 4-component vector of float)
0:392 'r2' (temp 4-component vector of float) 0:392 'r2' (temp 4-component vector of float)
0:392 vector-scale (temp 4-component vector of float) 0:392 vector-scale (temp 4-component vector of float)
0:392 'inF0' (in float)
0:392 'inFV0' (in 4-component vector of float) 0:392 'inFV0' (in 4-component vector of float)
0:392 'inF0' (in float)
0:392 Sequence 0:392 Sequence
0:392 move second child to first child (temp float) 0:392 move second child to first child (temp float)
0:392 'r3' (temp float) 0:392 'r3' (temp float)
...@@ -1250,75 +1250,75 @@ Shader version: 450 ...@@ -1250,75 +1250,75 @@ Shader version: 450
0:392 Sequence 0:392 Sequence
0:392 move second child to first child (temp 4-component vector of float) 0:392 move second child to first child (temp 4-component vector of float)
0:392 'r4' (temp 4-component vector of float) 0:392 'r4' (temp 4-component vector of float)
0:392 matrix-times-vector (temp 4-component vector of float) 0:392 vector-times-matrix (temp 4-component vector of float)
0:392 'inFM0' (in 4X4 matrix of float)
0:392 'inFV0' (in 4-component vector of float) 0:392 'inFV0' (in 4-component vector of float)
0:392 'inFM0' (in 4X4 matrix of float)
0:392 Sequence 0:392 Sequence
0:392 move second child to first child (temp 4-component vector of float) 0:392 move second child to first child (temp 4-component vector of float)
0:392 'r5' (temp 4-component vector of float) 0:392 'r5' (temp 4-component vector of float)
0:392 vector-times-matrix (temp 4-component vector of float) 0:392 matrix-times-vector (temp 4-component vector of float)
0:392 'inFV0' (in 4-component vector of float)
0:392 'inFM0' (in 4X4 matrix of float) 0:392 'inFM0' (in 4X4 matrix of float)
0:392 'inFV0' (in 4-component vector of float)
0:392 Sequence 0:392 Sequence
0:392 move second child to first child (temp 4X4 matrix of float) 0:392 move second child to first child (temp 4X4 matrix of float)
0:392 'r6' (temp 4X4 matrix of float) 0:392 'r6' (temp 4X4 matrix of float)
0:392 matrix-scale (temp 4X4 matrix of float) 0:392 matrix-scale (temp 4X4 matrix of float)
0:392 'inFM0' (in 4X4 matrix of float)
0:392 'inF0' (in float) 0:392 'inF0' (in float)
0:392 'inFM0' (in 4X4 matrix of float)
0:392 Sequence 0:392 Sequence
0:392 move second child to first child (temp 4X4 matrix of float) 0:392 move second child to first child (temp 4X4 matrix of float)
0:392 'r7' (temp 4X4 matrix of float) 0:392 'r7' (temp 4X4 matrix of float)
0:392 matrix-scale (temp 4X4 matrix of float) 0:392 matrix-scale (temp 4X4 matrix of float)
0:392 'inF0' (in float)
0:392 'inFM0' (in 4X4 matrix of float) 0:392 'inFM0' (in 4X4 matrix of float)
0:392 'inF0' (in float)
0:392 Sequence 0:392 Sequence
0:392 move second child to first child (temp 4X4 matrix of float) 0:392 move second child to first child (temp 4X4 matrix of float)
0:392 'r8' (temp 4X4 matrix of float) 0:392 'r8' (temp 4X4 matrix of float)
0:392 matrix-multiply (temp 4X4 matrix of float) 0:392 matrix-multiply (temp 4X4 matrix of float)
0:392 'inFM0' (in 4X4 matrix of float)
0:392 'inFM1' (in 4X4 matrix of float) 0:392 'inFM1' (in 4X4 matrix of float)
0:401 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf32;mf23;mf33;mf43;mf42; (global void) 0:392 'inFM0' (in 4X4 matrix of float)
0:401 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; (global void)
0:401 Function Parameters: 0:401 Function Parameters:
0:401 'inF0' (in float) 0:401 'inF0' (in float)
0:401 'inF1' (in float) 0:401 'inF1' (in float)
0:401 'inFV2' (in 2-component vector of float) 0:401 'inFV2' (in 2-component vector of float)
0:401 'inFV3' (in 3-component vector of float) 0:401 'inFV3' (in 3-component vector of float)
0:401 'inFM2x3' (in 3X2 matrix of float) 0:401 'inFM2x3' (in 2X3 matrix of float)
0:401 'inFM3x2' (in 2X3 matrix of float) 0:401 'inFM3x2' (in 3X2 matrix of float)
0:401 'inFM3x3' (in 3X3 matrix of float) 0:401 'inFM3x3' (in 3X3 matrix of float)
0:401 'inFM3x4' (in 4X3 matrix of float) 0:401 'inFM3x4' (in 3X4 matrix of float)
0:401 'inFM2x4' (in 4X2 matrix of float) 0:401 'inFM2x4' (in 2X4 matrix of float)
0:? Sequence 0:? Sequence
0:402 Sequence 0:402 Sequence
0:402 move second child to first child (temp float) 0:402 move second child to first child (temp float)
0:402 'r00' (temp float) 0:402 'r00' (temp float)
0:402 component-wise multiply (temp float) 0:402 component-wise multiply (temp float)
0:402 'inF0' (in float)
0:402 'inF1' (in float) 0:402 'inF1' (in float)
0:402 'inF0' (in float)
0:403 Sequence 0:403 Sequence
0:403 move second child to first child (temp 2-component vector of float) 0:403 move second child to first child (temp 2-component vector of float)
0:403 'r01' (temp 2-component vector of float) 0:403 'r01' (temp 2-component vector of float)
0:403 vector-scale (temp 2-component vector of float) 0:403 vector-scale (temp 2-component vector of float)
0:403 'inFV2' (in 2-component vector of float)
0:403 'inF0' (in float) 0:403 'inF0' (in float)
0:403 'inFV2' (in 2-component vector of float)
0:404 Sequence 0:404 Sequence
0:404 move second child to first child (temp 3-component vector of float) 0:404 move second child to first child (temp 3-component vector of float)
0:404 'r02' (temp 3-component vector of float) 0:404 'r02' (temp 3-component vector of float)
0:404 vector-scale (temp 3-component vector of float) 0:404 vector-scale (temp 3-component vector of float)
0:404 'inFV3' (in 3-component vector of float)
0:404 'inF0' (in float) 0:404 'inF0' (in float)
0:404 'inFV3' (in 3-component vector of float)
0:405 Sequence 0:405 Sequence
0:405 move second child to first child (temp 2-component vector of float) 0:405 move second child to first child (temp 2-component vector of float)
0:405 'r03' (temp 2-component vector of float) 0:405 'r03' (temp 2-component vector of float)
0:405 vector-scale (temp 2-component vector of float) 0:405 vector-scale (temp 2-component vector of float)
0:405 'inF0' (in float)
0:405 'inFV2' (in 2-component vector of float) 0:405 'inFV2' (in 2-component vector of float)
0:405 'inF0' (in float)
0:406 Sequence 0:406 Sequence
0:406 move second child to first child (temp 3-component vector of float) 0:406 move second child to first child (temp 3-component vector of float)
0:406 'r04' (temp 3-component vector of float) 0:406 'r04' (temp 3-component vector of float)
0:406 vector-scale (temp 3-component vector of float) 0:406 vector-scale (temp 3-component vector of float)
0:406 'inF0' (in float)
0:406 'inFV3' (in 3-component vector of float) 0:406 'inFV3' (in 3-component vector of float)
0:406 'inF0' (in float)
0:407 Sequence 0:407 Sequence
0:407 move second child to first child (temp float) 0:407 move second child to first child (temp float)
0:407 'r05' (temp float) 0:407 'r05' (temp float)
...@@ -1334,63 +1334,63 @@ Shader version: 450 ...@@ -1334,63 +1334,63 @@ Shader version: 450
0:409 Sequence 0:409 Sequence
0:409 move second child to first child (temp 3-component vector of float) 0:409 move second child to first child (temp 3-component vector of float)
0:409 'r07' (temp 3-component vector of float) 0:409 'r07' (temp 3-component vector of float)
0:409 vector-times-matrix (temp 3-component vector of float) 0:409 matrix-times-vector (temp 3-component vector of float)
0:409 'inFM2x3' (in 2X3 matrix of float)
0:409 'inFV2' (in 2-component vector of float) 0:409 'inFV2' (in 2-component vector of float)
0:409 'inFM2x3' (in 3X2 matrix of float)
0:410 Sequence 0:410 Sequence
0:410 move second child to first child (temp 2-component vector of float) 0:410 move second child to first child (temp 2-component vector of float)
0:410 'r08' (temp 2-component vector of float) 0:410 'r08' (temp 2-component vector of float)
0:410 vector-times-matrix (temp 2-component vector of float) 0:410 matrix-times-vector (temp 2-component vector of float)
0:410 'inFM3x2' (in 3X2 matrix of float)
0:410 'inFV3' (in 3-component vector of float) 0:410 'inFV3' (in 3-component vector of float)
0:410 'inFM3x2' (in 2X3 matrix of float)
0:411 Sequence 0:411 Sequence
0:411 move second child to first child (temp 2-component vector of float) 0:411 move second child to first child (temp 2-component vector of float)
0:411 'r09' (temp 2-component vector of float) 0:411 'r09' (temp 2-component vector of float)
0:411 matrix-times-vector (temp 2-component vector of float) 0:411 vector-times-matrix (temp 2-component vector of float)
0:411 'inFM2x3' (in 3X2 matrix of float)
0:411 'inFV3' (in 3-component vector of float) 0:411 'inFV3' (in 3-component vector of float)
0:411 'inFM2x3' (in 2X3 matrix of float)
0:412 Sequence 0:412 Sequence
0:412 move second child to first child (temp 3-component vector of float) 0:412 move second child to first child (temp 3-component vector of float)
0:412 'r10' (temp 3-component vector of float) 0:412 'r10' (temp 3-component vector of float)
0:412 matrix-times-vector (temp 3-component vector of float) 0:412 vector-times-matrix (temp 3-component vector of float)
0:412 'inFM3x2' (in 2X3 matrix of float)
0:412 'inFV2' (in 2-component vector of float) 0:412 'inFV2' (in 2-component vector of float)
0:412 'inFM3x2' (in 3X2 matrix of float)
0:413 Sequence 0:413 Sequence
0:413 move second child to first child (temp 3X2 matrix of float) 0:413 move second child to first child (temp 2X3 matrix of float)
0:413 'r11' (temp 3X2 matrix of float) 0:413 'r11' (temp 2X3 matrix of float)
0:413 matrix-scale (temp 3X2 matrix of float) 0:413 matrix-scale (temp 2X3 matrix of float)
0:413 'inFM2x3' (in 3X2 matrix of float)
0:413 'inF0' (in float) 0:413 'inF0' (in float)
0:413 'inFM2x3' (in 2X3 matrix of float)
0:414 Sequence 0:414 Sequence
0:414 move second child to first child (temp 2X3 matrix of float) 0:414 move second child to first child (temp 3X2 matrix of float)
0:414 'r12' (temp 2X3 matrix of float) 0:414 'r12' (temp 3X2 matrix of float)
0:414 matrix-scale (temp 2X3 matrix of float) 0:414 matrix-scale (temp 3X2 matrix of float)
0:414 'inFM3x2' (in 2X3 matrix of float)
0:414 'inF0' (in float) 0:414 'inF0' (in float)
0:414 'inFM3x2' (in 3X2 matrix of float)
0:415 Sequence 0:415 Sequence
0:415 move second child to first child (temp 2X2 matrix of float) 0:415 move second child to first child (temp 2X2 matrix of float)
0:415 'r13' (temp 2X2 matrix of float) 0:415 'r13' (temp 2X2 matrix of float)
0:415 matrix-multiply (temp 2X2 matrix of float) 0:415 matrix-multiply (temp 2X2 matrix of float)
0:415 'inFM2x3' (in 3X2 matrix of float) 0:415 'inFM3x2' (in 3X2 matrix of float)
0:415 'inFM3x2' (in 2X3 matrix of float) 0:415 'inFM2x3' (in 2X3 matrix of float)
0:416 Sequence 0:416 Sequence
0:416 move second child to first child (temp 3X2 matrix of float) 0:416 move second child to first child (temp 2X3 matrix of float)
0:416 'r14' (temp 3X2 matrix of float) 0:416 'r14' (temp 2X3 matrix of float)
0:416 matrix-multiply (temp 3X2 matrix of float) 0:416 matrix-multiply (temp 2X3 matrix of float)
0:416 'inFM2x3' (in 3X2 matrix of float)
0:416 'inFM3x3' (in 3X3 matrix of float) 0:416 'inFM3x3' (in 3X3 matrix of float)
0:416 'inFM2x3' (in 2X3 matrix of float)
0:417 Sequence 0:417 Sequence
0:417 move second child to first child (temp 4X2 matrix of float) 0:417 move second child to first child (temp 2X4 matrix of float)
0:417 'r15' (temp 4X2 matrix of float) 0:417 'r15' (temp 2X4 matrix of float)
0:417 matrix-multiply (temp 4X2 matrix of float) 0:417 matrix-multiply (temp 2X4 matrix of float)
0:417 'inFM2x3' (in 3X2 matrix of float) 0:417 'inFM3x4' (in 3X4 matrix of float)
0:417 'inFM3x4' (in 4X3 matrix of float) 0:417 'inFM2x3' (in 2X3 matrix of float)
0:418 Sequence 0:418 Sequence
0:418 move second child to first child (temp 4X3 matrix of float) 0:418 move second child to first child (temp 3X4 matrix of float)
0:418 'r16' (temp 4X3 matrix of float) 0:418 'r16' (temp 3X4 matrix of float)
0:418 matrix-multiply (temp 4X3 matrix of float) 0:418 matrix-multiply (temp 3X4 matrix of float)
0:418 'inFM3x2' (in 2X3 matrix of float) 0:418 'inFM2x4' (in 2X4 matrix of float)
0:418 'inFM2x4' (in 4X2 matrix of float) 0:418 'inFM3x2' (in 3X2 matrix of float)
0:? Linker Objects 0:? Linker Objects
...@@ -2499,20 +2499,20 @@ Shader version: 450 ...@@ -2499,20 +2499,20 @@ Shader version: 450
0:378 move second child to first child (temp float) 0:378 move second child to first child (temp float)
0:378 'r0' (temp float) 0:378 'r0' (temp float)
0:378 component-wise multiply (temp float) 0:378 component-wise multiply (temp float)
0:378 'inF0' (in float)
0:378 'inF1' (in float) 0:378 'inF1' (in float)
0:378 'inF0' (in float)
0:378 Sequence 0:378 Sequence
0:378 move second child to first child (temp 2-component vector of float) 0:378 move second child to first child (temp 2-component vector of float)
0:378 'r1' (temp 2-component vector of float) 0:378 'r1' (temp 2-component vector of float)
0:378 vector-scale (temp 2-component vector of float) 0:378 vector-scale (temp 2-component vector of float)
0:378 'inFV0' (in 2-component vector of float)
0:378 'inF0' (in float) 0:378 'inF0' (in float)
0:378 'inFV0' (in 2-component vector of float)
0:378 Sequence 0:378 Sequence
0:378 move second child to first child (temp 2-component vector of float) 0:378 move second child to first child (temp 2-component vector of float)
0:378 'r2' (temp 2-component vector of float) 0:378 'r2' (temp 2-component vector of float)
0:378 vector-scale (temp 2-component vector of float) 0:378 vector-scale (temp 2-component vector of float)
0:378 'inF0' (in float)
0:378 'inFV0' (in 2-component vector of float) 0:378 'inFV0' (in 2-component vector of float)
0:378 'inF0' (in float)
0:378 Sequence 0:378 Sequence
0:378 move second child to first child (temp float) 0:378 move second child to first child (temp float)
0:378 'r3' (temp float) 0:378 'r3' (temp float)
...@@ -2522,33 +2522,33 @@ Shader version: 450 ...@@ -2522,33 +2522,33 @@ Shader version: 450
0:378 Sequence 0:378 Sequence
0:378 move second child to first child (temp 2-component vector of float) 0:378 move second child to first child (temp 2-component vector of float)
0:378 'r4' (temp 2-component vector of float) 0:378 'r4' (temp 2-component vector of float)
0:378 matrix-times-vector (temp 2-component vector of float) 0:378 vector-times-matrix (temp 2-component vector of float)
0:378 'inFM0' (in 2X2 matrix of float)
0:378 'inFV0' (in 2-component vector of float) 0:378 'inFV0' (in 2-component vector of float)
0:378 'inFM0' (in 2X2 matrix of float)
0:378 Sequence 0:378 Sequence
0:378 move second child to first child (temp 2-component vector of float) 0:378 move second child to first child (temp 2-component vector of float)
0:378 'r5' (temp 2-component vector of float) 0:378 'r5' (temp 2-component vector of float)
0:378 vector-times-matrix (temp 2-component vector of float) 0:378 matrix-times-vector (temp 2-component vector of float)
0:378 'inFV0' (in 2-component vector of float)
0:378 'inFM0' (in 2X2 matrix of float) 0:378 'inFM0' (in 2X2 matrix of float)
0:378 'inFV0' (in 2-component vector of float)
0:378 Sequence 0:378 Sequence
0:378 move second child to first child (temp 2X2 matrix of float) 0:378 move second child to first child (temp 2X2 matrix of float)
0:378 'r6' (temp 2X2 matrix of float) 0:378 'r6' (temp 2X2 matrix of float)
0:378 matrix-scale (temp 2X2 matrix of float) 0:378 matrix-scale (temp 2X2 matrix of float)
0:378 'inFM0' (in 2X2 matrix of float)
0:378 'inF0' (in float) 0:378 'inF0' (in float)
0:378 'inFM0' (in 2X2 matrix of float)
0:378 Sequence 0:378 Sequence
0:378 move second child to first child (temp 2X2 matrix of float) 0:378 move second child to first child (temp 2X2 matrix of float)
0:378 'r7' (temp 2X2 matrix of float) 0:378 'r7' (temp 2X2 matrix of float)
0:378 matrix-scale (temp 2X2 matrix of float) 0:378 matrix-scale (temp 2X2 matrix of float)
0:378 'inF0' (in float)
0:378 'inFM0' (in 2X2 matrix of float) 0:378 'inFM0' (in 2X2 matrix of float)
0:378 'inF0' (in float)
0:378 Sequence 0:378 Sequence
0:378 move second child to first child (temp 2X2 matrix of float) 0:378 move second child to first child (temp 2X2 matrix of float)
0:378 'r8' (temp 2X2 matrix of float) 0:378 'r8' (temp 2X2 matrix of float)
0:378 matrix-multiply (temp 2X2 matrix of float) 0:378 matrix-multiply (temp 2X2 matrix of float)
0:378 'inFM0' (in 2X2 matrix of float)
0:378 'inFM1' (in 2X2 matrix of float) 0:378 'inFM1' (in 2X2 matrix of float)
0:378 'inFM0' (in 2X2 matrix of float)
0:384 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; (global void) 0:384 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; (global void)
0:384 Function Parameters: 0:384 Function Parameters:
0:384 'inF0' (in float) 0:384 'inF0' (in float)
...@@ -2562,20 +2562,20 @@ Shader version: 450 ...@@ -2562,20 +2562,20 @@ Shader version: 450
0:385 move second child to first child (temp float) 0:385 move second child to first child (temp float)
0:385 'r0' (temp float) 0:385 'r0' (temp float)
0:385 component-wise multiply (temp float) 0:385 component-wise multiply (temp float)
0:385 'inF0' (in float)
0:385 'inF1' (in float) 0:385 'inF1' (in float)
0:385 'inF0' (in float)
0:385 Sequence 0:385 Sequence
0:385 move second child to first child (temp 3-component vector of float) 0:385 move second child to first child (temp 3-component vector of float)
0:385 'r1' (temp 3-component vector of float) 0:385 'r1' (temp 3-component vector of float)
0:385 vector-scale (temp 3-component vector of float) 0:385 vector-scale (temp 3-component vector of float)
0:385 'inFV0' (in 3-component vector of float)
0:385 'inF0' (in float) 0:385 'inF0' (in float)
0:385 'inFV0' (in 3-component vector of float)
0:385 Sequence 0:385 Sequence
0:385 move second child to first child (temp 3-component vector of float) 0:385 move second child to first child (temp 3-component vector of float)
0:385 'r2' (temp 3-component vector of float) 0:385 'r2' (temp 3-component vector of float)
0:385 vector-scale (temp 3-component vector of float) 0:385 vector-scale (temp 3-component vector of float)
0:385 'inF0' (in float)
0:385 'inFV0' (in 3-component vector of float) 0:385 'inFV0' (in 3-component vector of float)
0:385 'inF0' (in float)
0:385 Sequence 0:385 Sequence
0:385 move second child to first child (temp float) 0:385 move second child to first child (temp float)
0:385 'r3' (temp float) 0:385 'r3' (temp float)
...@@ -2585,33 +2585,33 @@ Shader version: 450 ...@@ -2585,33 +2585,33 @@ Shader version: 450
0:385 Sequence 0:385 Sequence
0:385 move second child to first child (temp 3-component vector of float) 0:385 move second child to first child (temp 3-component vector of float)
0:385 'r4' (temp 3-component vector of float) 0:385 'r4' (temp 3-component vector of float)
0:385 matrix-times-vector (temp 3-component vector of float) 0:385 vector-times-matrix (temp 3-component vector of float)
0:385 'inFM0' (in 3X3 matrix of float)
0:385 'inFV0' (in 3-component vector of float) 0:385 'inFV0' (in 3-component vector of float)
0:385 'inFM0' (in 3X3 matrix of float)
0:385 Sequence 0:385 Sequence
0:385 move second child to first child (temp 3-component vector of float) 0:385 move second child to first child (temp 3-component vector of float)
0:385 'r5' (temp 3-component vector of float) 0:385 'r5' (temp 3-component vector of float)
0:385 vector-times-matrix (temp 3-component vector of float) 0:385 matrix-times-vector (temp 3-component vector of float)
0:385 'inFV0' (in 3-component vector of float)
0:385 'inFM0' (in 3X3 matrix of float) 0:385 'inFM0' (in 3X3 matrix of float)
0:385 'inFV0' (in 3-component vector of float)
0:385 Sequence 0:385 Sequence
0:385 move second child to first child (temp 3X3 matrix of float) 0:385 move second child to first child (temp 3X3 matrix of float)
0:385 'r6' (temp 3X3 matrix of float) 0:385 'r6' (temp 3X3 matrix of float)
0:385 matrix-scale (temp 3X3 matrix of float) 0:385 matrix-scale (temp 3X3 matrix of float)
0:385 'inFM0' (in 3X3 matrix of float)
0:385 'inF0' (in float) 0:385 'inF0' (in float)
0:385 'inFM0' (in 3X3 matrix of float)
0:385 Sequence 0:385 Sequence
0:385 move second child to first child (temp 3X3 matrix of float) 0:385 move second child to first child (temp 3X3 matrix of float)
0:385 'r7' (temp 3X3 matrix of float) 0:385 'r7' (temp 3X3 matrix of float)
0:385 matrix-scale (temp 3X3 matrix of float) 0:385 matrix-scale (temp 3X3 matrix of float)
0:385 'inF0' (in float)
0:385 'inFM0' (in 3X3 matrix of float) 0:385 'inFM0' (in 3X3 matrix of float)
0:385 'inF0' (in float)
0:385 Sequence 0:385 Sequence
0:385 move second child to first child (temp 3X3 matrix of float) 0:385 move second child to first child (temp 3X3 matrix of float)
0:385 'r8' (temp 3X3 matrix of float) 0:385 'r8' (temp 3X3 matrix of float)
0:385 matrix-multiply (temp 3X3 matrix of float) 0:385 matrix-multiply (temp 3X3 matrix of float)
0:385 'inFM0' (in 3X3 matrix of float)
0:385 'inFM1' (in 3X3 matrix of float) 0:385 'inFM1' (in 3X3 matrix of float)
0:385 'inFM0' (in 3X3 matrix of float)
0:391 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; (global void) 0:391 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; (global void)
0:391 Function Parameters: 0:391 Function Parameters:
0:391 'inF0' (in float) 0:391 'inF0' (in float)
...@@ -2625,20 +2625,20 @@ Shader version: 450 ...@@ -2625,20 +2625,20 @@ Shader version: 450
0:392 move second child to first child (temp float) 0:392 move second child to first child (temp float)
0:392 'r0' (temp float) 0:392 'r0' (temp float)
0:392 component-wise multiply (temp float) 0:392 component-wise multiply (temp float)
0:392 'inF0' (in float)
0:392 'inF1' (in float) 0:392 'inF1' (in float)
0:392 'inF0' (in float)
0:392 Sequence 0:392 Sequence
0:392 move second child to first child (temp 4-component vector of float) 0:392 move second child to first child (temp 4-component vector of float)
0:392 'r1' (temp 4-component vector of float) 0:392 'r1' (temp 4-component vector of float)
0:392 vector-scale (temp 4-component vector of float) 0:392 vector-scale (temp 4-component vector of float)
0:392 'inFV0' (in 4-component vector of float)
0:392 'inF0' (in float) 0:392 'inF0' (in float)
0:392 'inFV0' (in 4-component vector of float)
0:392 Sequence 0:392 Sequence
0:392 move second child to first child (temp 4-component vector of float) 0:392 move second child to first child (temp 4-component vector of float)
0:392 'r2' (temp 4-component vector of float) 0:392 'r2' (temp 4-component vector of float)
0:392 vector-scale (temp 4-component vector of float) 0:392 vector-scale (temp 4-component vector of float)
0:392 'inF0' (in float)
0:392 'inFV0' (in 4-component vector of float) 0:392 'inFV0' (in 4-component vector of float)
0:392 'inF0' (in float)
0:392 Sequence 0:392 Sequence
0:392 move second child to first child (temp float) 0:392 move second child to first child (temp float)
0:392 'r3' (temp float) 0:392 'r3' (temp float)
...@@ -2648,75 +2648,75 @@ Shader version: 450 ...@@ -2648,75 +2648,75 @@ Shader version: 450
0:392 Sequence 0:392 Sequence
0:392 move second child to first child (temp 4-component vector of float) 0:392 move second child to first child (temp 4-component vector of float)
0:392 'r4' (temp 4-component vector of float) 0:392 'r4' (temp 4-component vector of float)
0:392 matrix-times-vector (temp 4-component vector of float) 0:392 vector-times-matrix (temp 4-component vector of float)
0:392 'inFM0' (in 4X4 matrix of float)
0:392 'inFV0' (in 4-component vector of float) 0:392 'inFV0' (in 4-component vector of float)
0:392 'inFM0' (in 4X4 matrix of float)
0:392 Sequence 0:392 Sequence
0:392 move second child to first child (temp 4-component vector of float) 0:392 move second child to first child (temp 4-component vector of float)
0:392 'r5' (temp 4-component vector of float) 0:392 'r5' (temp 4-component vector of float)
0:392 vector-times-matrix (temp 4-component vector of float) 0:392 matrix-times-vector (temp 4-component vector of float)
0:392 'inFV0' (in 4-component vector of float)
0:392 'inFM0' (in 4X4 matrix of float) 0:392 'inFM0' (in 4X4 matrix of float)
0:392 'inFV0' (in 4-component vector of float)
0:392 Sequence 0:392 Sequence
0:392 move second child to first child (temp 4X4 matrix of float) 0:392 move second child to first child (temp 4X4 matrix of float)
0:392 'r6' (temp 4X4 matrix of float) 0:392 'r6' (temp 4X4 matrix of float)
0:392 matrix-scale (temp 4X4 matrix of float) 0:392 matrix-scale (temp 4X4 matrix of float)
0:392 'inFM0' (in 4X4 matrix of float)
0:392 'inF0' (in float) 0:392 'inF0' (in float)
0:392 'inFM0' (in 4X4 matrix of float)
0:392 Sequence 0:392 Sequence
0:392 move second child to first child (temp 4X4 matrix of float) 0:392 move second child to first child (temp 4X4 matrix of float)
0:392 'r7' (temp 4X4 matrix of float) 0:392 'r7' (temp 4X4 matrix of float)
0:392 matrix-scale (temp 4X4 matrix of float) 0:392 matrix-scale (temp 4X4 matrix of float)
0:392 'inF0' (in float)
0:392 'inFM0' (in 4X4 matrix of float) 0:392 'inFM0' (in 4X4 matrix of float)
0:392 'inF0' (in float)
0:392 Sequence 0:392 Sequence
0:392 move second child to first child (temp 4X4 matrix of float) 0:392 move second child to first child (temp 4X4 matrix of float)
0:392 'r8' (temp 4X4 matrix of float) 0:392 'r8' (temp 4X4 matrix of float)
0:392 matrix-multiply (temp 4X4 matrix of float) 0:392 matrix-multiply (temp 4X4 matrix of float)
0:392 'inFM0' (in 4X4 matrix of float)
0:392 'inFM1' (in 4X4 matrix of float) 0:392 'inFM1' (in 4X4 matrix of float)
0:401 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf32;mf23;mf33;mf43;mf42; (global void) 0:392 'inFM0' (in 4X4 matrix of float)
0:401 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; (global void)
0:401 Function Parameters: 0:401 Function Parameters:
0:401 'inF0' (in float) 0:401 'inF0' (in float)
0:401 'inF1' (in float) 0:401 'inF1' (in float)
0:401 'inFV2' (in 2-component vector of float) 0:401 'inFV2' (in 2-component vector of float)
0:401 'inFV3' (in 3-component vector of float) 0:401 'inFV3' (in 3-component vector of float)
0:401 'inFM2x3' (in 3X2 matrix of float) 0:401 'inFM2x3' (in 2X3 matrix of float)
0:401 'inFM3x2' (in 2X3 matrix of float) 0:401 'inFM3x2' (in 3X2 matrix of float)
0:401 'inFM3x3' (in 3X3 matrix of float) 0:401 'inFM3x3' (in 3X3 matrix of float)
0:401 'inFM3x4' (in 4X3 matrix of float) 0:401 'inFM3x4' (in 3X4 matrix of float)
0:401 'inFM2x4' (in 4X2 matrix of float) 0:401 'inFM2x4' (in 2X4 matrix of float)
0:? Sequence 0:? Sequence
0:402 Sequence 0:402 Sequence
0:402 move second child to first child (temp float) 0:402 move second child to first child (temp float)
0:402 'r00' (temp float) 0:402 'r00' (temp float)
0:402 component-wise multiply (temp float) 0:402 component-wise multiply (temp float)
0:402 'inF0' (in float)
0:402 'inF1' (in float) 0:402 'inF1' (in float)
0:402 'inF0' (in float)
0:403 Sequence 0:403 Sequence
0:403 move second child to first child (temp 2-component vector of float) 0:403 move second child to first child (temp 2-component vector of float)
0:403 'r01' (temp 2-component vector of float) 0:403 'r01' (temp 2-component vector of float)
0:403 vector-scale (temp 2-component vector of float) 0:403 vector-scale (temp 2-component vector of float)
0:403 'inFV2' (in 2-component vector of float)
0:403 'inF0' (in float) 0:403 'inF0' (in float)
0:403 'inFV2' (in 2-component vector of float)
0:404 Sequence 0:404 Sequence
0:404 move second child to first child (temp 3-component vector of float) 0:404 move second child to first child (temp 3-component vector of float)
0:404 'r02' (temp 3-component vector of float) 0:404 'r02' (temp 3-component vector of float)
0:404 vector-scale (temp 3-component vector of float) 0:404 vector-scale (temp 3-component vector of float)
0:404 'inFV3' (in 3-component vector of float)
0:404 'inF0' (in float) 0:404 'inF0' (in float)
0:404 'inFV3' (in 3-component vector of float)
0:405 Sequence 0:405 Sequence
0:405 move second child to first child (temp 2-component vector of float) 0:405 move second child to first child (temp 2-component vector of float)
0:405 'r03' (temp 2-component vector of float) 0:405 'r03' (temp 2-component vector of float)
0:405 vector-scale (temp 2-component vector of float) 0:405 vector-scale (temp 2-component vector of float)
0:405 'inF0' (in float)
0:405 'inFV2' (in 2-component vector of float) 0:405 'inFV2' (in 2-component vector of float)
0:405 'inF0' (in float)
0:406 Sequence 0:406 Sequence
0:406 move second child to first child (temp 3-component vector of float) 0:406 move second child to first child (temp 3-component vector of float)
0:406 'r04' (temp 3-component vector of float) 0:406 'r04' (temp 3-component vector of float)
0:406 vector-scale (temp 3-component vector of float) 0:406 vector-scale (temp 3-component vector of float)
0:406 'inF0' (in float)
0:406 'inFV3' (in 3-component vector of float) 0:406 'inFV3' (in 3-component vector of float)
0:406 'inF0' (in float)
0:407 Sequence 0:407 Sequence
0:407 move second child to first child (temp float) 0:407 move second child to first child (temp float)
0:407 'r05' (temp float) 0:407 'r05' (temp float)
...@@ -2732,63 +2732,63 @@ Shader version: 450 ...@@ -2732,63 +2732,63 @@ Shader version: 450
0:409 Sequence 0:409 Sequence
0:409 move second child to first child (temp 3-component vector of float) 0:409 move second child to first child (temp 3-component vector of float)
0:409 'r07' (temp 3-component vector of float) 0:409 'r07' (temp 3-component vector of float)
0:409 vector-times-matrix (temp 3-component vector of float) 0:409 matrix-times-vector (temp 3-component vector of float)
0:409 'inFM2x3' (in 2X3 matrix of float)
0:409 'inFV2' (in 2-component vector of float) 0:409 'inFV2' (in 2-component vector of float)
0:409 'inFM2x3' (in 3X2 matrix of float)
0:410 Sequence 0:410 Sequence
0:410 move second child to first child (temp 2-component vector of float) 0:410 move second child to first child (temp 2-component vector of float)
0:410 'r08' (temp 2-component vector of float) 0:410 'r08' (temp 2-component vector of float)
0:410 vector-times-matrix (temp 2-component vector of float) 0:410 matrix-times-vector (temp 2-component vector of float)
0:410 'inFM3x2' (in 3X2 matrix of float)
0:410 'inFV3' (in 3-component vector of float) 0:410 'inFV3' (in 3-component vector of float)
0:410 'inFM3x2' (in 2X3 matrix of float)
0:411 Sequence 0:411 Sequence
0:411 move second child to first child (temp 2-component vector of float) 0:411 move second child to first child (temp 2-component vector of float)
0:411 'r09' (temp 2-component vector of float) 0:411 'r09' (temp 2-component vector of float)
0:411 matrix-times-vector (temp 2-component vector of float) 0:411 vector-times-matrix (temp 2-component vector of float)
0:411 'inFM2x3' (in 3X2 matrix of float)
0:411 'inFV3' (in 3-component vector of float) 0:411 'inFV3' (in 3-component vector of float)
0:411 'inFM2x3' (in 2X3 matrix of float)
0:412 Sequence 0:412 Sequence
0:412 move second child to first child (temp 3-component vector of float) 0:412 move second child to first child (temp 3-component vector of float)
0:412 'r10' (temp 3-component vector of float) 0:412 'r10' (temp 3-component vector of float)
0:412 matrix-times-vector (temp 3-component vector of float) 0:412 vector-times-matrix (temp 3-component vector of float)
0:412 'inFM3x2' (in 2X3 matrix of float)
0:412 'inFV2' (in 2-component vector of float) 0:412 'inFV2' (in 2-component vector of float)
0:412 'inFM3x2' (in 3X2 matrix of float)
0:413 Sequence 0:413 Sequence
0:413 move second child to first child (temp 3X2 matrix of float) 0:413 move second child to first child (temp 2X3 matrix of float)
0:413 'r11' (temp 3X2 matrix of float) 0:413 'r11' (temp 2X3 matrix of float)
0:413 matrix-scale (temp 3X2 matrix of float) 0:413 matrix-scale (temp 2X3 matrix of float)
0:413 'inFM2x3' (in 3X2 matrix of float)
0:413 'inF0' (in float) 0:413 'inF0' (in float)
0:413 'inFM2x3' (in 2X3 matrix of float)
0:414 Sequence 0:414 Sequence
0:414 move second child to first child (temp 2X3 matrix of float) 0:414 move second child to first child (temp 3X2 matrix of float)
0:414 'r12' (temp 2X3 matrix of float) 0:414 'r12' (temp 3X2 matrix of float)
0:414 matrix-scale (temp 2X3 matrix of float) 0:414 matrix-scale (temp 3X2 matrix of float)
0:414 'inFM3x2' (in 2X3 matrix of float)
0:414 'inF0' (in float) 0:414 'inF0' (in float)
0:414 'inFM3x2' (in 3X2 matrix of float)
0:415 Sequence 0:415 Sequence
0:415 move second child to first child (temp 2X2 matrix of float) 0:415 move second child to first child (temp 2X2 matrix of float)
0:415 'r13' (temp 2X2 matrix of float) 0:415 'r13' (temp 2X2 matrix of float)
0:415 matrix-multiply (temp 2X2 matrix of float) 0:415 matrix-multiply (temp 2X2 matrix of float)
0:415 'inFM2x3' (in 3X2 matrix of float) 0:415 'inFM3x2' (in 3X2 matrix of float)
0:415 'inFM3x2' (in 2X3 matrix of float) 0:415 'inFM2x3' (in 2X3 matrix of float)
0:416 Sequence 0:416 Sequence
0:416 move second child to first child (temp 3X2 matrix of float) 0:416 move second child to first child (temp 2X3 matrix of float)
0:416 'r14' (temp 3X2 matrix of float) 0:416 'r14' (temp 2X3 matrix of float)
0:416 matrix-multiply (temp 3X2 matrix of float) 0:416 matrix-multiply (temp 2X3 matrix of float)
0:416 'inFM2x3' (in 3X2 matrix of float)
0:416 'inFM3x3' (in 3X3 matrix of float) 0:416 'inFM3x3' (in 3X3 matrix of float)
0:416 'inFM2x3' (in 2X3 matrix of float)
0:417 Sequence 0:417 Sequence
0:417 move second child to first child (temp 4X2 matrix of float) 0:417 move second child to first child (temp 2X4 matrix of float)
0:417 'r15' (temp 4X2 matrix of float) 0:417 'r15' (temp 2X4 matrix of float)
0:417 matrix-multiply (temp 4X2 matrix of float) 0:417 matrix-multiply (temp 2X4 matrix of float)
0:417 'inFM2x3' (in 3X2 matrix of float) 0:417 'inFM3x4' (in 3X4 matrix of float)
0:417 'inFM3x4' (in 4X3 matrix of float) 0:417 'inFM2x3' (in 2X3 matrix of float)
0:418 Sequence 0:418 Sequence
0:418 move second child to first child (temp 4X3 matrix of float) 0:418 move second child to first child (temp 3X4 matrix of float)
0:418 'r16' (temp 4X3 matrix of float) 0:418 'r16' (temp 3X4 matrix of float)
0:418 matrix-multiply (temp 4X3 matrix of float) 0:418 matrix-multiply (temp 3X4 matrix of float)
0:418 'inFM3x2' (in 2X3 matrix of float) 0:418 'inFM2x4' (in 2X4 matrix of float)
0:418 'inFM2x4' (in 4X2 matrix of float) 0:418 'inFM3x2' (in 3X2 matrix of float)
0:? Linker Objects 0:? Linker Objects
// Module Version 10000 // Module Version 10000
...@@ -2861,7 +2861,7 @@ Shader version: 450 ...@@ -2861,7 +2861,7 @@ Shader version: 450
Name 106 "inFV1" Name 106 "inFV1"
Name 107 "inFM0" Name 107 "inFM0"
Name 108 "inFM1" Name 108 "inFM1"
Name 129 "TestGenMulNxM(f1;f1;vf2;vf3;mf32;mf23;mf33;mf43;mf42;" Name 129 "TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24;"
Name 120 "inF0" Name 120 "inF0"
Name 121 "inF1" Name 121 "inF1"
Name 122 "inFV2" Name 122 "inFV2"
...@@ -2957,13 +2957,13 @@ Shader version: 450 ...@@ -2957,13 +2957,13 @@ Shader version: 450
84: TypeFunction 2 7(ptr) 7(ptr) 25(ptr) 25(ptr) 61(ptr) 61(ptr) 84: TypeFunction 2 7(ptr) 7(ptr) 25(ptr) 25(ptr) 61(ptr) 61(ptr)
93: TypeFunction 2 7(ptr) 7(ptr) 37(ptr) 37(ptr) 69(ptr) 69(ptr) 93: TypeFunction 2 7(ptr) 7(ptr) 37(ptr) 37(ptr) 69(ptr) 69(ptr)
102: TypeFunction 2 7(ptr) 7(ptr) 49(ptr) 49(ptr) 77(ptr) 77(ptr) 102: TypeFunction 2 7(ptr) 7(ptr) 49(ptr) 49(ptr) 77(ptr) 77(ptr)
111: TypeMatrix 24(fvec2) 3 111: TypeMatrix 36(fvec3) 2
112: TypePointer Function 111 112: TypePointer Function 111
113: TypeMatrix 36(fvec3) 2 113: TypeMatrix 24(fvec2) 3
114: TypePointer Function 113 114: TypePointer Function 113
115: TypeMatrix 36(fvec3) 4 115: TypeMatrix 48(fvec4) 3
116: TypePointer Function 115 116: TypePointer Function 115
117: TypeMatrix 24(fvec2) 4 117: TypeMatrix 48(fvec4) 2
118: TypePointer Function 117 118: TypePointer Function 117
119: TypeFunction 2 7(ptr) 7(ptr) 25(ptr) 37(ptr) 112(ptr) 114(ptr) 69(ptr) 116(ptr) 118(ptr) 119: TypeFunction 2 7(ptr) 7(ptr) 25(ptr) 37(ptr) 112(ptr) 114(ptr) 69(ptr) 116(ptr) 118(ptr)
132: TypeBool 132: TypeBool
...@@ -3986,40 +3986,40 @@ Shader version: 450 ...@@ -3986,40 +3986,40 @@ Shader version: 450
1086(r6): 61(ptr) Variable Function 1086(r6): 61(ptr) Variable Function
1090(r7): 61(ptr) Variable Function 1090(r7): 61(ptr) Variable Function
1094(r8): 61(ptr) Variable Function 1094(r8): 61(ptr) Variable Function
1063: 6(float) Load 85(inF0) 1063: 6(float) Load 86(inF1)
1064: 6(float) Load 86(inF1) 1064: 6(float) Load 85(inF0)
1065: 6(float) FMul 1063 1064 1065: 6(float) FMul 1063 1064
Store 1062(r0) 1065 Store 1062(r0) 1065
1067: 24(fvec2) Load 87(inFV0) 1067: 6(float) Load 85(inF0)
1068: 6(float) Load 85(inF0) 1068: 24(fvec2) Load 87(inFV0)
1069: 24(fvec2) VectorTimesScalar 1067 1068 1069: 24(fvec2) VectorTimesScalar 1068 1067
Store 1066(r1) 1069 Store 1066(r1) 1069
1071: 6(float) Load 85(inF0) 1071: 24(fvec2) Load 87(inFV0)
1072: 24(fvec2) Load 87(inFV0) 1072: 6(float) Load 85(inF0)
1073: 24(fvec2) VectorTimesScalar 1072 1071 1073: 24(fvec2) VectorTimesScalar 1071 1072
Store 1070(r2) 1073 Store 1070(r2) 1073
1075: 24(fvec2) Load 87(inFV0) 1075: 24(fvec2) Load 87(inFV0)
1076: 24(fvec2) Load 88(inFV1) 1076: 24(fvec2) Load 88(inFV1)
1077: 6(float) Dot 1075 1076 1077: 6(float) Dot 1075 1076
Store 1074(r3) 1077 Store 1074(r3) 1077
1079: 60 Load 89(inFM0) 1079: 24(fvec2) Load 87(inFV0)
1080: 24(fvec2) Load 87(inFV0) 1080: 60 Load 89(inFM0)
1081: 24(fvec2) MatrixTimesVector 1079 1080 1081: 24(fvec2) VectorTimesMatrix 1079 1080
Store 1078(r4) 1081 Store 1078(r4) 1081
1083: 24(fvec2) Load 87(inFV0) 1083: 60 Load 89(inFM0)
1084: 60 Load 89(inFM0) 1084: 24(fvec2) Load 87(inFV0)
1085: 24(fvec2) VectorTimesMatrix 1083 1084 1085: 24(fvec2) MatrixTimesVector 1083 1084
Store 1082(r5) 1085 Store 1082(r5) 1085
1087: 60 Load 89(inFM0) 1087: 6(float) Load 85(inF0)
1088: 6(float) Load 85(inF0) 1088: 60 Load 89(inFM0)
1089: 60 MatrixTimesScalar 1087 1088 1089: 60 MatrixTimesScalar 1088 1087
Store 1086(r6) 1089 Store 1086(r6) 1089
1091: 6(float) Load 85(inF0) 1091: 60 Load 89(inFM0)
1092: 60 Load 89(inFM0) 1092: 6(float) Load 85(inF0)
1093: 60 MatrixTimesScalar 1092 1091 1093: 60 MatrixTimesScalar 1091 1092
Store 1090(r7) 1093 Store 1090(r7) 1093
1095: 60 Load 89(inFM0) 1095: 60 Load 90(inFM1)
1096: 60 Load 90(inFM1) 1096: 60 Load 89(inFM0)
1097: 60 MatrixTimesMatrix 1095 1096 1097: 60 MatrixTimesMatrix 1095 1096
Store 1094(r8) 1097 Store 1094(r8) 1097
Return Return
...@@ -4041,40 +4041,40 @@ Shader version: 450 ...@@ -4041,40 +4041,40 @@ Shader version: 450
1122(r6): 69(ptr) Variable Function 1122(r6): 69(ptr) Variable Function
1126(r7): 69(ptr) Variable Function 1126(r7): 69(ptr) Variable Function
1130(r8): 69(ptr) Variable Function 1130(r8): 69(ptr) Variable Function
1099: 6(float) Load 94(inF0) 1099: 6(float) Load 95(inF1)
1100: 6(float) Load 95(inF1) 1100: 6(float) Load 94(inF0)
1101: 6(float) FMul 1099 1100 1101: 6(float) FMul 1099 1100
Store 1098(r0) 1101 Store 1098(r0) 1101
1103: 36(fvec3) Load 96(inFV0) 1103: 6(float) Load 94(inF0)
1104: 6(float) Load 94(inF0) 1104: 36(fvec3) Load 96(inFV0)
1105: 36(fvec3) VectorTimesScalar 1103 1104 1105: 36(fvec3) VectorTimesScalar 1104 1103
Store 1102(r1) 1105 Store 1102(r1) 1105
1107: 6(float) Load 94(inF0) 1107: 36(fvec3) Load 96(inFV0)
1108: 36(fvec3) Load 96(inFV0) 1108: 6(float) Load 94(inF0)
1109: 36(fvec3) VectorTimesScalar 1108 1107 1109: 36(fvec3) VectorTimesScalar 1107 1108
Store 1106(r2) 1109 Store 1106(r2) 1109
1111: 36(fvec3) Load 96(inFV0) 1111: 36(fvec3) Load 96(inFV0)
1112: 36(fvec3) Load 97(inFV1) 1112: 36(fvec3) Load 97(inFV1)
1113: 6(float) Dot 1111 1112 1113: 6(float) Dot 1111 1112
Store 1110(r3) 1113 Store 1110(r3) 1113
1115: 68 Load 98(inFM0) 1115: 36(fvec3) Load 96(inFV0)
1116: 36(fvec3) Load 96(inFV0) 1116: 68 Load 98(inFM0)
1117: 36(fvec3) MatrixTimesVector 1115 1116 1117: 36(fvec3) VectorTimesMatrix 1115 1116
Store 1114(r4) 1117 Store 1114(r4) 1117
1119: 36(fvec3) Load 96(inFV0) 1119: 68 Load 98(inFM0)
1120: 68 Load 98(inFM0) 1120: 36(fvec3) Load 96(inFV0)
1121: 36(fvec3) VectorTimesMatrix 1119 1120 1121: 36(fvec3) MatrixTimesVector 1119 1120
Store 1118(r5) 1121 Store 1118(r5) 1121
1123: 68 Load 98(inFM0) 1123: 6(float) Load 94(inF0)
1124: 6(float) Load 94(inF0) 1124: 68 Load 98(inFM0)
1125: 68 MatrixTimesScalar 1123 1124 1125: 68 MatrixTimesScalar 1124 1123
Store 1122(r6) 1125 Store 1122(r6) 1125
1127: 6(float) Load 94(inF0) 1127: 68 Load 98(inFM0)
1128: 68 Load 98(inFM0) 1128: 6(float) Load 94(inF0)
1129: 68 MatrixTimesScalar 1128 1127 1129: 68 MatrixTimesScalar 1127 1128
Store 1126(r7) 1129 Store 1126(r7) 1129
1131: 68 Load 98(inFM0) 1131: 68 Load 99(inFM1)
1132: 68 Load 99(inFM1) 1132: 68 Load 98(inFM0)
1133: 68 MatrixTimesMatrix 1131 1132 1133: 68 MatrixTimesMatrix 1131 1132
Store 1130(r8) 1133 Store 1130(r8) 1133
Return Return
...@@ -4096,45 +4096,45 @@ Shader version: 450 ...@@ -4096,45 +4096,45 @@ Shader version: 450
1158(r6): 77(ptr) Variable Function 1158(r6): 77(ptr) Variable Function
1162(r7): 77(ptr) Variable Function 1162(r7): 77(ptr) Variable Function
1166(r8): 77(ptr) Variable Function 1166(r8): 77(ptr) Variable Function
1135: 6(float) Load 103(inF0) 1135: 6(float) Load 104(inF1)
1136: 6(float) Load 104(inF1) 1136: 6(float) Load 103(inF0)
1137: 6(float) FMul 1135 1136 1137: 6(float) FMul 1135 1136
Store 1134(r0) 1137 Store 1134(r0) 1137
1139: 48(fvec4) Load 105(inFV0) 1139: 6(float) Load 103(inF0)
1140: 6(float) Load 103(inF0) 1140: 48(fvec4) Load 105(inFV0)
1141: 48(fvec4) VectorTimesScalar 1139 1140 1141: 48(fvec4) VectorTimesScalar 1140 1139
Store 1138(r1) 1141 Store 1138(r1) 1141
1143: 6(float) Load 103(inF0) 1143: 48(fvec4) Load 105(inFV0)
1144: 48(fvec4) Load 105(inFV0) 1144: 6(float) Load 103(inF0)
1145: 48(fvec4) VectorTimesScalar 1144 1143 1145: 48(fvec4) VectorTimesScalar 1143 1144
Store 1142(r2) 1145 Store 1142(r2) 1145
1147: 48(fvec4) Load 105(inFV0) 1147: 48(fvec4) Load 105(inFV0)
1148: 48(fvec4) Load 106(inFV1) 1148: 48(fvec4) Load 106(inFV1)
1149: 6(float) Dot 1147 1148 1149: 6(float) Dot 1147 1148
Store 1146(r3) 1149 Store 1146(r3) 1149
1151: 76 Load 107(inFM0) 1151: 48(fvec4) Load 105(inFV0)
1152: 48(fvec4) Load 105(inFV0) 1152: 76 Load 107(inFM0)
1153: 48(fvec4) MatrixTimesVector 1151 1152 1153: 48(fvec4) VectorTimesMatrix 1151 1152
Store 1150(r4) 1153 Store 1150(r4) 1153
1155: 48(fvec4) Load 105(inFV0) 1155: 76 Load 107(inFM0)
1156: 76 Load 107(inFM0) 1156: 48(fvec4) Load 105(inFV0)
1157: 48(fvec4) VectorTimesMatrix 1155 1156 1157: 48(fvec4) MatrixTimesVector 1155 1156
Store 1154(r5) 1157 Store 1154(r5) 1157
1159: 76 Load 107(inFM0) 1159: 6(float) Load 103(inF0)
1160: 6(float) Load 103(inF0) 1160: 76 Load 107(inFM0)
1161: 76 MatrixTimesScalar 1159 1160 1161: 76 MatrixTimesScalar 1160 1159
Store 1158(r6) 1161 Store 1158(r6) 1161
1163: 6(float) Load 103(inF0) 1163: 76 Load 107(inFM0)
1164: 76 Load 107(inFM0) 1164: 6(float) Load 103(inF0)
1165: 76 MatrixTimesScalar 1164 1163 1165: 76 MatrixTimesScalar 1163 1164
Store 1162(r7) 1165 Store 1162(r7) 1165
1167: 76 Load 107(inFM0) 1167: 76 Load 108(inFM1)
1168: 76 Load 108(inFM1) 1168: 76 Load 107(inFM0)
1169: 76 MatrixTimesMatrix 1167 1168 1169: 76 MatrixTimesMatrix 1167 1168
Store 1166(r8) 1169 Store 1166(r8) 1169
Return Return
FunctionEnd FunctionEnd
129(TestGenMulNxM(f1;f1;vf2;vf3;mf32;mf23;mf33;mf43;mf42;): 2 Function None 119 129(TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24;): 2 Function None 119
120(inF0): 7(ptr) FunctionParameter 120(inF0): 7(ptr) FunctionParameter
121(inF1): 7(ptr) FunctionParameter 121(inF1): 7(ptr) FunctionParameter
122(inFV2): 25(ptr) FunctionParameter 122(inFV2): 25(ptr) FunctionParameter
...@@ -4162,25 +4162,25 @@ Shader version: 450 ...@@ -4162,25 +4162,25 @@ Shader version: 450
1226(r14): 112(ptr) Variable Function 1226(r14): 112(ptr) Variable Function
1230(r15): 118(ptr) Variable Function 1230(r15): 118(ptr) Variable Function
1234(r16): 116(ptr) Variable Function 1234(r16): 116(ptr) Variable Function
1171: 6(float) Load 120(inF0) 1171: 6(float) Load 121(inF1)
1172: 6(float) Load 121(inF1) 1172: 6(float) Load 120(inF0)
1173: 6(float) FMul 1171 1172 1173: 6(float) FMul 1171 1172
Store 1170(r00) 1173 Store 1170(r00) 1173
1175: 24(fvec2) Load 122(inFV2) 1175: 6(float) Load 120(inF0)
1176: 6(float) Load 120(inF0) 1176: 24(fvec2) Load 122(inFV2)
1177: 24(fvec2) VectorTimesScalar 1175 1176 1177: 24(fvec2) VectorTimesScalar 1176 1175
Store 1174(r01) 1177 Store 1174(r01) 1177
1179: 36(fvec3) Load 123(inFV3) 1179: 6(float) Load 120(inF0)
1180: 6(float) Load 120(inF0) 1180: 36(fvec3) Load 123(inFV3)
1181: 36(fvec3) VectorTimesScalar 1179 1180 1181: 36(fvec3) VectorTimesScalar 1180 1179
Store 1178(r02) 1181 Store 1178(r02) 1181
1183: 6(float) Load 120(inF0) 1183: 24(fvec2) Load 122(inFV2)
1184: 24(fvec2) Load 122(inFV2) 1184: 6(float) Load 120(inF0)
1185: 24(fvec2) VectorTimesScalar 1184 1183 1185: 24(fvec2) VectorTimesScalar 1183 1184
Store 1182(r03) 1185 Store 1182(r03) 1185
1187: 6(float) Load 120(inF0) 1187: 36(fvec3) Load 123(inFV3)
1188: 36(fvec3) Load 123(inFV3) 1188: 6(float) Load 120(inF0)
1189: 36(fvec3) VectorTimesScalar 1188 1187 1189: 36(fvec3) VectorTimesScalar 1187 1188
Store 1186(r04) 1189 Store 1186(r04) 1189
1191: 24(fvec2) Load 122(inFV2) 1191: 24(fvec2) Load 122(inFV2)
1192: 24(fvec2) Load 122(inFV2) 1192: 24(fvec2) Load 122(inFV2)
...@@ -4190,44 +4190,44 @@ Shader version: 450 ...@@ -4190,44 +4190,44 @@ Shader version: 450
1196: 36(fvec3) Load 123(inFV3) 1196: 36(fvec3) Load 123(inFV3)
1197: 6(float) Dot 1195 1196 1197: 6(float) Dot 1195 1196
Store 1194(r06) 1197 Store 1194(r06) 1197
1199: 24(fvec2) Load 122(inFV2) 1199: 111 Load 124(inFM2x3)
1200: 111 Load 124(inFM2x3) 1200: 24(fvec2) Load 122(inFV2)
1201: 36(fvec3) VectorTimesMatrix 1199 1200 1201: 36(fvec3) MatrixTimesVector 1199 1200
Store 1198(r07) 1201 Store 1198(r07) 1201
1203: 36(fvec3) Load 123(inFV3) 1203: 113 Load 125(inFM3x2)
1204: 113 Load 125(inFM3x2) 1204: 36(fvec3) Load 123(inFV3)
1205: 24(fvec2) VectorTimesMatrix 1203 1204 1205: 24(fvec2) MatrixTimesVector 1203 1204
Store 1202(r08) 1205 Store 1202(r08) 1205
1207: 111 Load 124(inFM2x3) 1207: 36(fvec3) Load 123(inFV3)
1208: 36(fvec3) Load 123(inFV3) 1208: 111 Load 124(inFM2x3)
1209: 24(fvec2) MatrixTimesVector 1207 1208 1209: 24(fvec2) VectorTimesMatrix 1207 1208
Store 1206(r09) 1209 Store 1206(r09) 1209
1211: 113 Load 125(inFM3x2) 1211: 24(fvec2) Load 122(inFV2)
1212: 24(fvec2) Load 122(inFV2) 1212: 113 Load 125(inFM3x2)
1213: 36(fvec3) MatrixTimesVector 1211 1212 1213: 36(fvec3) VectorTimesMatrix 1211 1212
Store 1210(r10) 1213 Store 1210(r10) 1213
1215: 111 Load 124(inFM2x3) 1215: 6(float) Load 120(inF0)
1216: 6(float) Load 120(inF0) 1216: 111 Load 124(inFM2x3)
1217: 111 MatrixTimesScalar 1215 1216 1217: 111 MatrixTimesScalar 1216 1215
Store 1214(r11) 1217 Store 1214(r11) 1217
1219: 113 Load 125(inFM3x2) 1219: 6(float) Load 120(inF0)
1220: 6(float) Load 120(inF0) 1220: 113 Load 125(inFM3x2)
1221: 113 MatrixTimesScalar 1219 1220 1221: 113 MatrixTimesScalar 1220 1219
Store 1218(r12) 1221 Store 1218(r12) 1221
1223: 111 Load 124(inFM2x3) 1223: 113 Load 125(inFM3x2)
1224: 113 Load 125(inFM3x2) 1224: 111 Load 124(inFM2x3)
1225: 60 MatrixTimesMatrix 1223 1224 1225: 60 MatrixTimesMatrix 1223 1224
Store 1222(r13) 1225 Store 1222(r13) 1225
1227: 111 Load 124(inFM2x3) 1227: 68 Load 126(inFM3x3)
1228: 68 Load 126(inFM3x3) 1228: 111 Load 124(inFM2x3)
1229: 111 MatrixTimesMatrix 1227 1228 1229: 111 MatrixTimesMatrix 1227 1228
Store 1226(r14) 1229 Store 1226(r14) 1229
1231: 111 Load 124(inFM2x3) 1231: 115 Load 127(inFM3x4)
1232: 115 Load 127(inFM3x4) 1232: 111 Load 124(inFM2x3)
1233: 117 MatrixTimesMatrix 1231 1232 1233: 117 MatrixTimesMatrix 1231 1232
Store 1230(r15) 1233 Store 1230(r15) 1233
1235: 113 Load 125(inFM3x2) 1235: 117 Load 128(inFM2x4)
1236: 117 Load 128(inFM2x4) 1236: 113 Load 125(inFM3x2)
1237: 115 MatrixTimesMatrix 1235 1236 1237: 115 MatrixTimesMatrix 1235 1236
Store 1234(r16) 1237 Store 1234(r16) 1237
Return Return
......
...@@ -17,9 +17,9 @@ gl_FragCoord origin is upper left ...@@ -17,9 +17,9 @@ gl_FragCoord origin is upper left
0:? Linker Objects 0:? Linker Objects
0:? 'f1' (global 1-component vector of float) 0:? 'f1' (global 1-component vector of float)
0:? 'fmat11' (global 1X1 matrix of float) 0:? 'fmat11' (global 1X1 matrix of float)
0:? 'fmat41' (global 1X4 matrix of float) 0:? 'fmat41' (global 4X1 matrix of float)
0:? 'fmat12' (global 2X1 matrix of float) 0:? 'fmat12' (global 1X2 matrix of float)
0:? 'dmat23' (global 3X2 matrix of double) 0:? 'dmat23' (global 2X3 matrix of double)
0:? 'int44' (global 4X4 matrix of int) 0:? 'int44' (global 4X4 matrix of int)
...@@ -44,9 +44,9 @@ gl_FragCoord origin is upper left ...@@ -44,9 +44,9 @@ gl_FragCoord origin is upper left
0:? Linker Objects 0:? Linker Objects
0:? 'f1' (global 1-component vector of float) 0:? 'f1' (global 1-component vector of float)
0:? 'fmat11' (global 1X1 matrix of float) 0:? 'fmat11' (global 1X1 matrix of float)
0:? 'fmat41' (global 1X4 matrix of float) 0:? 'fmat41' (global 4X1 matrix of float)
0:? 'fmat12' (global 2X1 matrix of float) 0:? 'fmat12' (global 1X2 matrix of float)
0:? 'dmat23' (global 3X2 matrix of double) 0:? 'dmat23' (global 2X3 matrix of double)
0:? 'int44' (global 4X4 matrix of int) 0:? 'int44' (global 4X4 matrix of int)
// Module Version 10000 // Module Version 10000
...@@ -65,7 +65,7 @@ gl_FragCoord origin is upper left ...@@ -65,7 +65,7 @@ gl_FragCoord origin is upper left
Name 10 "inScalar" Name 10 "inScalar"
Name 14 "f1" Name 14 "f1"
Name 22 "fmat11" Name 22 "fmat11"
Name 26 "fmat41" Name 25 "fmat41"
Name 29 "fmat12" Name 29 "fmat12"
Name 34 "dmat23" Name 34 "dmat23"
Name 39 "int44" Name 39 "int44"
...@@ -81,16 +81,16 @@ gl_FragCoord origin is upper left ...@@ -81,16 +81,16 @@ gl_FragCoord origin is upper left
20: TypeMatrix 19(fvec) 1 20: TypeMatrix 19(fvec) 1
21: TypePointer Private 20 21: TypePointer Private 20
22(fmat11): 21(ptr) Variable Private 22(fmat11): 21(ptr) Variable Private
23: TypeVector 6(float) 4 23: TypeMatrix 19(fvec) 4
24: TypeMatrix 23(fvec4) 1 24: TypePointer Private 23
25: TypePointer Private 24 25(fmat41): 24(ptr) Variable Private
26(fmat41): 25(ptr) Variable Private 26: TypeVector 6(float) 2
27: TypeMatrix 19(fvec) 2 27: TypeMatrix 26(fvec2) 1
28: TypePointer Private 27 28: TypePointer Private 27
29(fmat12): 28(ptr) Variable Private 29(fmat12): 28(ptr) Variable Private
30: TypeFloat 64 30: TypeFloat 64
31: TypeVector 30(float) 2 31: TypeVector 30(float) 3
32: TypeMatrix 31(fvec2) 3 32: TypeMatrix 31(fvec3) 2
33: TypePointer Private 32 33: TypePointer Private 32
34(dmat23): 33(ptr) Variable Private 34(dmat23): 33(ptr) Variable Private
35: TypeInt 32 1 35: TypeInt 32 1
......
hlsl.matrixindex.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:10 Function Definition: main( (global structure{temp 4-component vector of float Color})
0:10 Function Parameters:
0:? Sequence
0:22 Sequence
0:22 move second child to first child (temp float)
0:22 'e1_00' (temp float)
0:22 Constant:
0:22 10.000000
0:23 Sequence
0:23 move second child to first child (temp float)
0:23 'e1_01' (temp float)
0:23 Constant:
0:23 11.000000
0:24 Sequence
0:24 move second child to first child (temp float)
0:24 'e1_10' (temp float)
0:24 Constant:
0:24 12.000000
0:25 Sequence
0:25 move second child to first child (temp float)
0:25 'e1_11' (temp float)
0:25 Constant:
0:25 13.000000
0:26 Sequence
0:26 move second child to first child (temp float)
0:26 'e1_20' (temp float)
0:26 Constant:
0:26 14.000000
0:27 Sequence
0:27 move second child to first child (temp float)
0:27 'e1_21' (temp float)
0:27 Constant:
0:27 15.000000
0:29 Sequence
0:29 move second child to first child (temp float)
0:29 'e2_00' (temp float)
0:29 Constant:
0:29 20.000000
0:30 Sequence
0:30 move second child to first child (temp float)
0:30 'e2_01' (temp float)
0:30 Constant:
0:30 21.000000
0:31 Sequence
0:31 move second child to first child (temp float)
0:31 'e2_10' (temp float)
0:31 Constant:
0:31 22.000000
0:32 Sequence
0:32 move second child to first child (temp float)
0:32 'e2_11' (temp float)
0:32 Constant:
0:32 23.000000
0:33 Sequence
0:33 move second child to first child (temp float)
0:33 'e2_20' (temp float)
0:33 Constant:
0:33 24.000000
0:34 Sequence
0:34 move second child to first child (temp float)
0:34 'e2_21' (temp float)
0:34 Constant:
0:34 25.000000
0:39 Sequence
0:39 move second child to first child (temp 2-component vector of float)
0:39 'r0a' (temp 2-component vector of float)
0:39 Constant:
0:39 10.000000
0:39 11.000000
0:40 Sequence
0:40 move second child to first child (temp 2-component vector of float)
0:40 'r1a' (temp 2-component vector of float)
0:40 Constant:
0:40 12.000000
0:40 13.000000
0:41 Sequence
0:41 move second child to first child (temp 2-component vector of float)
0:41 'r2a' (temp 2-component vector of float)
0:41 Constant:
0:41 14.000000
0:41 15.000000
0:43 Sequence
0:43 move second child to first child (temp 2-component vector of float)
0:43 'r0b' (temp 2-component vector of float)
0:43 indirect index (temp 2-component vector of float)
0:43 Constant:
0:43 20.000000
0:43 21.000000
0:43 22.000000
0:43 23.000000
0:43 24.000000
0:43 25.000000
0:43 'idx' (uniform int)
0:44 Sequence
0:44 move second child to first child (temp 2-component vector of float)
0:44 'r0c' (temp 2-component vector of float)
0:44 indirect index (temp 2-component vector of float)
0:44 'um' (uniform 3X2 matrix of float)
0:44 'idx' (uniform int)
0:47 move second child to first child (temp 4-component vector of float)
0:47 Color: direct index for structure (temp 4-component vector of float)
0:47 'psout' (temp structure{temp 4-component vector of float Color})
0:47 Constant:
0:47 0 (const int)
0:47 Construct vec4 (temp 4-component vector of float)
0:47 'e2_11' (temp float)
0:48 Sequence
0:48 move second child to first child (temp structure{temp 4-component vector of float Color})
0:? '@entryPointOutput' (layout(location=0 ) out structure{temp 4-component vector of float Color})
0:48 'psout' (temp structure{temp 4-component vector of float Color})
0:48 Branch: Return
0:? Linker Objects
0:? 'idx' (uniform int)
0:? 'um' (uniform 3X2 matrix of float)
Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:10 Function Definition: main( (global structure{temp 4-component vector of float Color})
0:10 Function Parameters:
0:? Sequence
0:22 Sequence
0:22 move second child to first child (temp float)
0:22 'e1_00' (temp float)
0:22 Constant:
0:22 10.000000
0:23 Sequence
0:23 move second child to first child (temp float)
0:23 'e1_01' (temp float)
0:23 Constant:
0:23 11.000000
0:24 Sequence
0:24 move second child to first child (temp float)
0:24 'e1_10' (temp float)
0:24 Constant:
0:24 12.000000
0:25 Sequence
0:25 move second child to first child (temp float)
0:25 'e1_11' (temp float)
0:25 Constant:
0:25 13.000000
0:26 Sequence
0:26 move second child to first child (temp float)
0:26 'e1_20' (temp float)
0:26 Constant:
0:26 14.000000
0:27 Sequence
0:27 move second child to first child (temp float)
0:27 'e1_21' (temp float)
0:27 Constant:
0:27 15.000000
0:29 Sequence
0:29 move second child to first child (temp float)
0:29 'e2_00' (temp float)
0:29 Constant:
0:29 20.000000
0:30 Sequence
0:30 move second child to first child (temp float)
0:30 'e2_01' (temp float)
0:30 Constant:
0:30 21.000000
0:31 Sequence
0:31 move second child to first child (temp float)
0:31 'e2_10' (temp float)
0:31 Constant:
0:31 22.000000
0:32 Sequence
0:32 move second child to first child (temp float)
0:32 'e2_11' (temp float)
0:32 Constant:
0:32 23.000000
0:33 Sequence
0:33 move second child to first child (temp float)
0:33 'e2_20' (temp float)
0:33 Constant:
0:33 24.000000
0:34 Sequence
0:34 move second child to first child (temp float)
0:34 'e2_21' (temp float)
0:34 Constant:
0:34 25.000000
0:39 Sequence
0:39 move second child to first child (temp 2-component vector of float)
0:39 'r0a' (temp 2-component vector of float)
0:39 Constant:
0:39 10.000000
0:39 11.000000
0:40 Sequence
0:40 move second child to first child (temp 2-component vector of float)
0:40 'r1a' (temp 2-component vector of float)
0:40 Constant:
0:40 12.000000
0:40 13.000000
0:41 Sequence
0:41 move second child to first child (temp 2-component vector of float)
0:41 'r2a' (temp 2-component vector of float)
0:41 Constant:
0:41 14.000000
0:41 15.000000
0:43 Sequence
0:43 move second child to first child (temp 2-component vector of float)
0:43 'r0b' (temp 2-component vector of float)
0:43 indirect index (temp 2-component vector of float)
0:43 Constant:
0:43 20.000000
0:43 21.000000
0:43 22.000000
0:43 23.000000
0:43 24.000000
0:43 25.000000
0:43 'idx' (uniform int)
0:44 Sequence
0:44 move second child to first child (temp 2-component vector of float)
0:44 'r0c' (temp 2-component vector of float)
0:44 indirect index (temp 2-component vector of float)
0:44 'um' (uniform 3X2 matrix of float)
0:44 'idx' (uniform int)
0:47 move second child to first child (temp 4-component vector of float)
0:47 Color: direct index for structure (temp 4-component vector of float)
0:47 'psout' (temp structure{temp 4-component vector of float Color})
0:47 Constant:
0:47 0 (const int)
0:47 Construct vec4 (temp 4-component vector of float)
0:47 'e2_11' (temp float)
0:48 Sequence
0:48 move second child to first child (temp structure{temp 4-component vector of float Color})
0:? '@entryPointOutput' (layout(location=0 ) out structure{temp 4-component vector of float Color})
0:48 'psout' (temp structure{temp 4-component vector of float Color})
0:48 Branch: Return
0:? Linker Objects
0:? 'idx' (uniform int)
0:? 'um' (uniform 3X2 matrix of float)
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 74
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 71
ExecutionMode 4 OriginUpperLeft
Name 4 "main"
Name 8 "e1_00"
Name 10 "e1_01"
Name 12 "e1_10"
Name 14 "e1_11"
Name 16 "e1_20"
Name 18 "e1_21"
Name 20 "e2_00"
Name 22 "e2_01"
Name 24 "e2_10"
Name 26 "e2_11"
Name 28 "e2_20"
Name 30 "e2_21"
Name 34 "r0a"
Name 36 "r1a"
Name 38 "r2a"
Name 40 "r0b"
Name 48 "idx"
Name 51 "indexable"
Name 54 "r0c"
Name 56 "um"
Name 62 "PS_OUTPUT"
MemberName 62(PS_OUTPUT) 0 "Color"
Name 64 "psout"
Name 71 "@entryPointOutput"
Decorate 71(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypePointer Function 6(float)
9: 6(float) Constant 1092616192
11: 6(float) Constant 1093664768
13: 6(float) Constant 1094713344
15: 6(float) Constant 1095761920
17: 6(float) Constant 1096810496
19: 6(float) Constant 1097859072
21: 6(float) Constant 1101004800
23: 6(float) Constant 1101529088
25: 6(float) Constant 1102053376
27: 6(float) Constant 1102577664
29: 6(float) Constant 1103101952
31: 6(float) Constant 1103626240
32: TypeVector 6(float) 2
33: TypePointer Function 32(fvec2)
35: 32(fvec2) ConstantComposite 9 11
37: 32(fvec2) ConstantComposite 13 15
39: 32(fvec2) ConstantComposite 17 19
41: TypeMatrix 32(fvec2) 3
42: 32(fvec2) ConstantComposite 21 23
43: 32(fvec2) ConstantComposite 25 27
44: 32(fvec2) ConstantComposite 29 31
45: 41 ConstantComposite 42 43 44
46: TypeInt 32 1
47: TypePointer UniformConstant 46(int)
48(idx): 47(ptr) Variable UniformConstant
50: TypePointer Function 41
55: TypePointer UniformConstant 41
56(um): 55(ptr) Variable UniformConstant
58: TypePointer UniformConstant 32(fvec2)
61: TypeVector 6(float) 4
62(PS_OUTPUT): TypeStruct 61(fvec4)
63: TypePointer Function 62(PS_OUTPUT)
65: 46(int) Constant 0
68: TypePointer Function 61(fvec4)
70: TypePointer Output 62(PS_OUTPUT)
71(@entryPointOutput): 70(ptr) Variable Output
4(main): 2 Function None 3
5: Label
8(e1_00): 7(ptr) Variable Function
10(e1_01): 7(ptr) Variable Function
12(e1_10): 7(ptr) Variable Function
14(e1_11): 7(ptr) Variable Function
16(e1_20): 7(ptr) Variable Function
18(e1_21): 7(ptr) Variable Function
20(e2_00): 7(ptr) Variable Function
22(e2_01): 7(ptr) Variable Function
24(e2_10): 7(ptr) Variable Function
26(e2_11): 7(ptr) Variable Function
28(e2_20): 7(ptr) Variable Function
30(e2_21): 7(ptr) Variable Function
34(r0a): 33(ptr) Variable Function
36(r1a): 33(ptr) Variable Function
38(r2a): 33(ptr) Variable Function
40(r0b): 33(ptr) Variable Function
51(indexable): 50(ptr) Variable Function
54(r0c): 33(ptr) Variable Function
64(psout): 63(ptr) Variable Function
Store 8(e1_00) 9
Store 10(e1_01) 11
Store 12(e1_10) 13
Store 14(e1_11) 15
Store 16(e1_20) 17
Store 18(e1_21) 19
Store 20(e2_00) 21
Store 22(e2_01) 23
Store 24(e2_10) 25
Store 26(e2_11) 27
Store 28(e2_20) 29
Store 30(e2_21) 31
Store 34(r0a) 35
Store 36(r1a) 37
Store 38(r2a) 39
49: 46(int) Load 48(idx)
Store 51(indexable) 45
52: 33(ptr) AccessChain 51(indexable) 49
53: 32(fvec2) Load 52
Store 40(r0b) 53
57: 46(int) Load 48(idx)
59: 58(ptr) AccessChain 56(um) 57
60: 32(fvec2) Load 59
Store 54(r0c) 60
66: 6(float) Load 26(e2_11)
67: 61(fvec4) CompositeConstruct 66 66 66 66
69: 68(ptr) AccessChain 64(psout) 65
Store 69 67
72:62(PS_OUTPUT) Load 64(psout)
Store 71(@entryPointOutput) 72
Return
FunctionEnd
...@@ -192,8 +192,8 @@ gl_FragCoord origin is upper left ...@@ -192,8 +192,8 @@ gl_FragCoord origin is upper left
0:? 14.000000 0:? 14.000000
0:? 15.000000 0:? 15.000000
0:35 Sequence 0:35 Sequence
0:35 move second child to first child (temp 3X2 matrix of float) 0:35 move second child to first child (temp 2X3 matrix of float)
0:35 'r61' (temp 3X2 matrix of float) 0:35 'r61' (temp 2X3 matrix of float)
0:? Constant: 0:? Constant:
0:? 1.000000 0:? 1.000000
0:? 2.000000 0:? 2.000000
...@@ -202,8 +202,8 @@ gl_FragCoord origin is upper left ...@@ -202,8 +202,8 @@ gl_FragCoord origin is upper left
0:? 5.000000 0:? 5.000000
0:? 6.000000 0:? 6.000000
0:36 Sequence 0:36 Sequence
0:36 move second child to first child (temp 2X3 matrix of float) 0:36 move second child to first child (temp 3X2 matrix of float)
0:36 'r62' (temp 2X3 matrix of float) 0:36 'r62' (temp 3X2 matrix of float)
0:? Constant: 0:? Constant:
0:? 1.000000 0:? 1.000000
0:? 2.000000 0:? 2.000000
...@@ -212,8 +212,8 @@ gl_FragCoord origin is upper left ...@@ -212,8 +212,8 @@ gl_FragCoord origin is upper left
0:? 5.000000 0:? 5.000000
0:? 6.000000 0:? 6.000000
0:39 Sequence 0:39 Sequence
0:39 move second child to first child (temp 2X4 matrix of float) 0:39 move second child to first child (temp 4X2 matrix of float)
0:39 'r65' (temp 2X4 matrix of float) 0:39 'r65' (temp 4X2 matrix of float)
0:? Constant: 0:? Constant:
0:? 1.000000 0:? 1.000000
0:? 2.000000 0:? 2.000000
...@@ -224,8 +224,8 @@ gl_FragCoord origin is upper left ...@@ -224,8 +224,8 @@ gl_FragCoord origin is upper left
0:? 7.000000 0:? 7.000000
0:? 8.000000 0:? 8.000000
0:40 Sequence 0:40 Sequence
0:40 move second child to first child (temp 3X4 matrix of float) 0:40 move second child to first child (temp 4X3 matrix of float)
0:40 'r66' (temp 3X4 matrix of float) 0:40 'r66' (temp 4X3 matrix of float)
0:? Constant: 0:? Constant:
0:? 1.000000 0:? 1.000000
0:? 2.000000 0:? 2.000000
...@@ -444,8 +444,8 @@ gl_FragCoord origin is upper left ...@@ -444,8 +444,8 @@ gl_FragCoord origin is upper left
0:? 14.000000 0:? 14.000000
0:? 15.000000 0:? 15.000000
0:35 Sequence 0:35 Sequence
0:35 move second child to first child (temp 3X2 matrix of float) 0:35 move second child to first child (temp 2X3 matrix of float)
0:35 'r61' (temp 3X2 matrix of float) 0:35 'r61' (temp 2X3 matrix of float)
0:? Constant: 0:? Constant:
0:? 1.000000 0:? 1.000000
0:? 2.000000 0:? 2.000000
...@@ -454,8 +454,8 @@ gl_FragCoord origin is upper left ...@@ -454,8 +454,8 @@ gl_FragCoord origin is upper left
0:? 5.000000 0:? 5.000000
0:? 6.000000 0:? 6.000000
0:36 Sequence 0:36 Sequence
0:36 move second child to first child (temp 2X3 matrix of float) 0:36 move second child to first child (temp 3X2 matrix of float)
0:36 'r62' (temp 2X3 matrix of float) 0:36 'r62' (temp 3X2 matrix of float)
0:? Constant: 0:? Constant:
0:? 1.000000 0:? 1.000000
0:? 2.000000 0:? 2.000000
...@@ -464,8 +464,8 @@ gl_FragCoord origin is upper left ...@@ -464,8 +464,8 @@ gl_FragCoord origin is upper left
0:? 5.000000 0:? 5.000000
0:? 6.000000 0:? 6.000000
0:39 Sequence 0:39 Sequence
0:39 move second child to first child (temp 2X4 matrix of float) 0:39 move second child to first child (temp 4X2 matrix of float)
0:39 'r65' (temp 2X4 matrix of float) 0:39 'r65' (temp 4X2 matrix of float)
0:? Constant: 0:? Constant:
0:? 1.000000 0:? 1.000000
0:? 2.000000 0:? 2.000000
...@@ -476,8 +476,8 @@ gl_FragCoord origin is upper left ...@@ -476,8 +476,8 @@ gl_FragCoord origin is upper left
0:? 7.000000 0:? 7.000000
0:? 8.000000 0:? 8.000000
0:40 Sequence 0:40 Sequence
0:40 move second child to first child (temp 3X4 matrix of float) 0:40 move second child to first child (temp 4X3 matrix of float)
0:40 'r66' (temp 3X4 matrix of float) 0:40 'r66' (temp 4X3 matrix of float)
0:? Constant: 0:? Constant:
0:? 1.000000 0:? 1.000000
0:? 2.000000 0:? 2.000000
...@@ -501,13 +501,13 @@ gl_FragCoord origin is upper left ...@@ -501,13 +501,13 @@ gl_FragCoord origin is upper left
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 147 // Id's are bound by 148
Capability Shader Capability Shader
Capability Float64 Capability Float64
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" 145 EntryPoint Fragment 4 "PixelShaderFunction" 146
ExecutionMode 4 OriginUpperLeft ExecutionMode 4 OriginUpperLeft
Name 4 "PixelShaderFunction" Name 4 "PixelShaderFunction"
Name 9 "r00" Name 9 "r00"
...@@ -535,11 +535,11 @@ gl_FragCoord origin is upper left ...@@ -535,11 +535,11 @@ gl_FragCoord origin is upper left
Name 105 "r50" Name 105 "r50"
Name 122 "r51" Name 122 "r51"
Name 125 "r61" Name 125 "r61"
Name 131 "r62" Name 130 "r62"
Name 136 "r65" Name 136 "r65"
Name 141 "r66" Name 141 "r66"
Name 145 "@entryPointOutput" Name 146 "@entryPointOutput"
Decorate 145(@entryPointOutput) Location 0 Decorate 146(@entryPointOutput) Location 0
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
...@@ -635,25 +635,26 @@ gl_FragCoord origin is upper left ...@@ -635,25 +635,26 @@ gl_FragCoord origin is upper left
119: 6(float) Constant 1097859072 119: 6(float) Constant 1097859072
120: 7(fvec4) ConstantComposite 116 117 118 119 120: 7(fvec4) ConstantComposite 116 117 118 119
121: 103 ConstantComposite 107 110 115 120 121: 103 ConstantComposite 107 110 115 120
123: TypeMatrix 46(fvec2) 3 123: TypeMatrix 69(fvec3) 2
124: TypePointer Function 123 124: TypePointer Function 123
126: 46(fvec2) ConstantComposite 12 13 126: 69(fvec3) ConstantComposite 13 16 108
127: 46(fvec2) ConstantComposite 16 108 127: 123 ConstantComposite 72 126
128: 123 ConstantComposite 49 126 127 128: TypeMatrix 46(fvec2) 3
129: TypeMatrix 69(fvec3) 2 129: TypePointer Function 128
130: TypePointer Function 129 131: 46(fvec2) ConstantComposite 12 13
132: 69(fvec3) ConstantComposite 13 16 108 132: 46(fvec2) ConstantComposite 16 108
133: 129 ConstantComposite 72 132 133: 128 ConstantComposite 49 131 132
134: TypeMatrix 7(fvec4) 2 134: TypeMatrix 46(fvec2) 4
135: TypePointer Function 134 135: TypePointer Function 134
137: 7(fvec4) ConstantComposite 16 108 109 111 137: 46(fvec2) ConstantComposite 109 111
138: 134 ConstantComposite 14 137 138: 134 ConstantComposite 49 131 132 137
139: TypeMatrix 7(fvec4) 3 139: TypeMatrix 69(fvec3) 4
140: TypePointer Function 139 140: TypePointer Function 139
142: 7(fvec4) ConstantComposite 112 113 114 116 142: 69(fvec3) ConstantComposite 109 111 112
143: 139 ConstantComposite 14 137 142 143: 69(fvec3) ConstantComposite 113 114 116
144: TypePointer Output 6(float) 144: 139 ConstantComposite 72 126 142 143
145(@entryPointOutput): 144(ptr) Variable Output 145: TypePointer Output 6(float)
146(@entryPointOutput): 145(ptr) Variable Output
4(PixelShaderFunction): 2 Function None 3 4(PixelShaderFunction): 2 Function None 3
5: Label 5: Label
9(r00): 8(ptr) Variable Function 9(r00): 8(ptr) Variable Function
...@@ -681,7 +682,7 @@ gl_FragCoord origin is upper left ...@@ -681,7 +682,7 @@ gl_FragCoord origin is upper left
105(r50): 104(ptr) Variable Function 105(r50): 104(ptr) Variable Function
122(r51): 104(ptr) Variable Function 122(r51): 104(ptr) Variable Function
125(r61): 124(ptr) Variable Function 125(r61): 124(ptr) Variable Function
131(r62): 130(ptr) Variable Function 130(r62): 129(ptr) Variable Function
136(r65): 135(ptr) Variable Function 136(r65): 135(ptr) Variable Function
141(r66): 140(ptr) Variable Function 141(r66): 140(ptr) Variable Function
Store 9(r00) 14 Store 9(r00) 14
...@@ -708,10 +709,10 @@ gl_FragCoord origin is upper left ...@@ -708,10 +709,10 @@ gl_FragCoord origin is upper left
Store 100(r44) 102 Store 100(r44) 102
Store 105(r50) 121 Store 105(r50) 121
Store 122(r51) 121 Store 122(r51) 121
Store 125(r61) 128 Store 125(r61) 127
Store 131(r62) 133 Store 130(r62) 133
Store 136(r65) 138 Store 136(r65) 138
Store 141(r66) 143 Store 141(r66) 144
Store 145(@entryPointOutput) 106 Store 146(@entryPointOutput) 106
Return Return
FunctionEnd FunctionEnd
...@@ -5,7 +5,7 @@ Linked fragment stage: ...@@ -5,7 +5,7 @@ Linked fragment stage:
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 144 // Id's are bound by 145
Capability Shader Capability Shader
Capability Float64 Capability Float64
...@@ -39,7 +39,7 @@ Linked fragment stage: ...@@ -39,7 +39,7 @@ Linked fragment stage:
Name 105 "r50" Name 105 "r50"
Name 122 "r51" Name 122 "r51"
Name 125 "r61" Name 125 "r61"
Name 131 "r62" Name 130 "r62"
Name 136 "r65" Name 136 "r65"
Name 141 "r66" Name 141 "r66"
2: TypeVoid 2: TypeVoid
...@@ -137,23 +137,24 @@ Linked fragment stage: ...@@ -137,23 +137,24 @@ Linked fragment stage:
119: 6(float) Constant 1097859072 119: 6(float) Constant 1097859072
120: 7(fvec4) ConstantComposite 116 117 118 119 120: 7(fvec4) ConstantComposite 116 117 118 119
121: 103 ConstantComposite 107 110 115 120 121: 103 ConstantComposite 107 110 115 120
123: TypeMatrix 46(fvec2) 3 123: TypeMatrix 69(fvec3) 2
124: TypePointer Function 123 124: TypePointer Function 123
126: 46(fvec2) ConstantComposite 12 13 126: 69(fvec3) ConstantComposite 13 16 108
127: 46(fvec2) ConstantComposite 16 108 127: 123 ConstantComposite 72 126
128: 123 ConstantComposite 49 126 127 128: TypeMatrix 46(fvec2) 3
129: TypeMatrix 69(fvec3) 2 129: TypePointer Function 128
130: TypePointer Function 129 131: 46(fvec2) ConstantComposite 12 13
132: 69(fvec3) ConstantComposite 13 16 108 132: 46(fvec2) ConstantComposite 16 108
133: 129 ConstantComposite 72 132 133: 128 ConstantComposite 49 131 132
134: TypeMatrix 7(fvec4) 2 134: TypeMatrix 46(fvec2) 4
135: TypePointer Function 134 135: TypePointer Function 134
137: 7(fvec4) ConstantComposite 16 108 109 111 137: 46(fvec2) ConstantComposite 109 111
138: 134 ConstantComposite 14 137 138: 134 ConstantComposite 49 131 132 137
139: TypeMatrix 7(fvec4) 3 139: TypeMatrix 69(fvec3) 4
140: TypePointer Function 139 140: TypePointer Function 139
142: 7(fvec4) ConstantComposite 112 113 114 116 142: 69(fvec3) ConstantComposite 109 111 112
143: 139 ConstantComposite 14 137 142 143: 69(fvec3) ConstantComposite 113 114 116
144: 139 ConstantComposite 72 126 142 143
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
9(r00): 8(ptr) Variable Function 9(r00): 8(ptr) Variable Function
...@@ -181,7 +182,7 @@ Linked fragment stage: ...@@ -181,7 +182,7 @@ Linked fragment stage:
105(r50): 104(ptr) Variable Function 105(r50): 104(ptr) Variable Function
122(r51): 104(ptr) Variable Function 122(r51): 104(ptr) Variable Function
125(r61): 124(ptr) Variable Function 125(r61): 124(ptr) Variable Function
131(r62): 130(ptr) Variable Function 130(r62): 129(ptr) Variable Function
136(r65): 135(ptr) Variable Function 136(r65): 135(ptr) Variable Function
141(r66): 140(ptr) Variable Function 141(r66): 140(ptr) Variable Function
Store 9(r00) 14 Store 9(r00) 14
...@@ -208,9 +209,9 @@ Linked fragment stage: ...@@ -208,9 +209,9 @@ Linked fragment stage:
Store 100(r44) 102 Store 100(r44) 102
Store 105(r50) 121 Store 105(r50) 121
Store 122(r51) 121 Store 122(r51) 121
Store 125(r61) 128 Store 125(r61) 127
Store 131(r62) 133 Store 130(r62) 133
Store 136(r65) 138 Store 136(r65) 138
Store 141(r66) 143 Store 141(r66) 144
ReturnValue 106 ReturnValue 106
FunctionEnd FunctionEnd
...@@ -482,3 +482,12 @@ void TestGenMulNxM(float inF0, float inF1, ...@@ -482,3 +482,12 @@ void TestGenMulNxM(float inF0, float inF1,
float2x4 r15 = mul(inFM2x3, inFM3x4); float2x4 r15 = mul(inFM2x3, inFM3x4);
float3x4 r16 = mul(inFM3x2, inFM2x4); float3x4 r16 = mul(inFM3x2, inFM2x4);
} }
struct PS_OUTPUT { float4 color : SV_Target0; };
PS_OUTPUT main()
{
PS_OUTPUT ps_output;
ps_output.color = 1.0;
return ps_output;
};
uniform int idx;
uniform float3x2 um;
struct PS_OUTPUT
{
float4 Color : SV_Target0;
};
PS_OUTPUT main()
{
// matrices of 3 rows, 2 columns (regardless of row vs col major storage)
const float3x2 m1 = { { 10, 11 }, // row-wise initialization
{ 12, 13 },
{ 14, 15 } };
const float3x2 m2 = { 20, 21, 22, 23, 24, 25 }; // component-wise matrix initialization is allowed
const float3x2 m3 = { 30, 31, 33, 33, 34, 35 }; // component-wise matrix initialization is allowed
// These can be observed in the AST post-const folding to ensure we obtain the right value,
// as given in comments to the right of each line. Note that the first indirection into a
// matrix returns a row vector.
float e1_00 = m1[0][0]; // 10
float e1_01 = m1[0][1]; // 11
float e1_10 = m1[1][0]; // 12
float e1_11 = m1[1][1]; // 13
float e1_20 = m1[2][0]; // 14
float e1_21 = m1[2][1]; // 15
float e2_00 = m2[0][0]; // 20
float e2_01 = m2[0][1]; // 21
float e2_10 = m2[1][0]; // 22
float e2_11 = m2[1][1]; // 23
float e2_20 = m2[2][0]; // 24
float e2_21 = m2[2][1]; // 25
// float e3a_00 = m3._m00; // TODO... also as an lvalue for a non-const matrix
// float e3b_00 = m3._11; // TODO... also as an lvalue for a non-const matrix
float2 r0a = m1[0]; // row0: 10,11: types must match: constant index into constant
float2 r1a = m1[1]; // row1: 12,13: ...
float2 r2a = m1[2]; // row2: 14,15: ...
float2 r0b = m2[idx]; // types should match: variable index into constant
float2 r0c = um[idx]; // types should match: variable index into variable
PS_OUTPUT psout;
psout.Color = e2_11; // 23
return psout;
}
...@@ -110,7 +110,7 @@ INSTANTIATE_TEST_CASE_P( ...@@ -110,7 +110,7 @@ INSTANTIATE_TEST_CASE_P(
{"hlsl.intrinsics.evalfns.frag", "main"}, {"hlsl.intrinsics.evalfns.frag", "main"},
{"hlsl.intrinsics.double.frag", "PixelShaderFunction"}, {"hlsl.intrinsics.double.frag", "PixelShaderFunction"},
{"hlsl.intrinsics.f1632.frag", "PixelShaderFunction"}, {"hlsl.intrinsics.f1632.frag", "PixelShaderFunction"},
{"hlsl.intrinsics.frag", "PixelShaderFunction"}, {"hlsl.intrinsics.frag", "main"},
{"hlsl.intrinsics.lit.frag", "PixelShaderFunction"}, {"hlsl.intrinsics.lit.frag", "PixelShaderFunction"},
{"hlsl.intrinsics.negative.comp", "ComputeShaderFunction"}, {"hlsl.intrinsics.negative.comp", "ComputeShaderFunction"},
{"hlsl.intrinsics.negative.frag", "PixelShaderFunction"}, {"hlsl.intrinsics.negative.frag", "PixelShaderFunction"},
...@@ -124,6 +124,7 @@ INSTANTIATE_TEST_CASE_P( ...@@ -124,6 +124,7 @@ INSTANTIATE_TEST_CASE_P(
{"hlsl.load.offset.dx10.frag", "main"}, {"hlsl.load.offset.dx10.frag", "main"},
{"hlsl.load.offsetarray.dx10.frag", "main"}, {"hlsl.load.offsetarray.dx10.frag", "main"},
{"hlsl.multiEntry.vert", "RealEntrypoint"}, {"hlsl.multiEntry.vert", "RealEntrypoint"},
{"hlsl.matrixindex.frag", "main"},
{"hlsl.numericsuffixes.frag", "main"}, {"hlsl.numericsuffixes.frag", "main"},
{"hlsl.overload.frag", "PixelShaderFunction"}, {"hlsl.overload.frag", "PixelShaderFunction"},
{"hlsl.pp.line.frag", "main"}, {"hlsl.pp.line.frag", "main"},
......
...@@ -711,8 +711,8 @@ bool HlslGrammar::acceptMatrixTemplateType(TType& type) ...@@ -711,8 +711,8 @@ bool HlslGrammar::acceptMatrixTemplateType(TType& type)
return false; return false;
new(&type) TType(basicType, EvqTemporary, 0, new(&type) TType(basicType, EvqTemporary, 0,
cols->getAsConstantUnion()->getConstArray()[0].getIConst(), rows->getAsConstantUnion()->getConstArray()[0].getIConst(),
rows->getAsConstantUnion()->getConstArray()[0].getIConst()); cols->getAsConstantUnion()->getConstArray()[0].getIConst());
if (!acceptTokenClass(EHTokRightAngle)) { if (!acceptTokenClass(EHTokRightAngle)) {
expected("right angle bracket"); expected("right angle bracket");
...@@ -1031,46 +1031,46 @@ bool HlslGrammar::acceptType(TType& type) ...@@ -1031,46 +1031,46 @@ bool HlslGrammar::acceptType(TType& type)
new(&type) TType(EbtInt, EvqTemporary, 0, 1, 1); new(&type) TType(EbtInt, EvqTemporary, 0, 1, 1);
break; break;
case EHTokInt1x2: case EHTokInt1x2:
new(&type) TType(EbtInt, EvqTemporary, 0, 2, 1); new(&type) TType(EbtInt, EvqTemporary, 0, 1, 2);
break; break;
case EHTokInt1x3: case EHTokInt1x3:
new(&type) TType(EbtInt, EvqTemporary, 0, 3, 1); new(&type) TType(EbtInt, EvqTemporary, 0, 1, 3);
break; break;
case EHTokInt1x4: case EHTokInt1x4:
new(&type) TType(EbtInt, EvqTemporary, 0, 4, 1); new(&type) TType(EbtInt, EvqTemporary, 0, 1, 4);
break; break;
case EHTokInt2x1: case EHTokInt2x1:
new(&type) TType(EbtInt, EvqTemporary, 0, 1, 2); new(&type) TType(EbtInt, EvqTemporary, 0, 2, 1);
break; break;
case EHTokInt2x2: case EHTokInt2x2:
new(&type) TType(EbtInt, EvqTemporary, 0, 2, 2); new(&type) TType(EbtInt, EvqTemporary, 0, 2, 2);
break; break;
case EHTokInt2x3: case EHTokInt2x3:
new(&type) TType(EbtInt, EvqTemporary, 0, 3, 2); new(&type) TType(EbtInt, EvqTemporary, 0, 2, 3);
break; break;
case EHTokInt2x4: case EHTokInt2x4:
new(&type) TType(EbtInt, EvqTemporary, 0, 4, 2); new(&type) TType(EbtInt, EvqTemporary, 0, 2, 4);
break; break;
case EHTokInt3x1: case EHTokInt3x1:
new(&type) TType(EbtInt, EvqTemporary, 0, 1, 3); new(&type) TType(EbtInt, EvqTemporary, 0, 3, 1);
break; break;
case EHTokInt3x2: case EHTokInt3x2:
new(&type) TType(EbtInt, EvqTemporary, 0, 2, 3); new(&type) TType(EbtInt, EvqTemporary, 0, 3, 2);
break; break;
case EHTokInt3x3: case EHTokInt3x3:
new(&type) TType(EbtInt, EvqTemporary, 0, 3, 3); new(&type) TType(EbtInt, EvqTemporary, 0, 3, 3);
break; break;
case EHTokInt3x4: case EHTokInt3x4:
new(&type) TType(EbtInt, EvqTemporary, 0, 4, 3); new(&type) TType(EbtInt, EvqTemporary, 0, 3, 4);
break; break;
case EHTokInt4x1: case EHTokInt4x1:
new(&type) TType(EbtInt, EvqTemporary, 0, 1, 4); new(&type) TType(EbtInt, EvqTemporary, 0, 4, 1);
break; break;
case EHTokInt4x2: case EHTokInt4x2:
new(&type) TType(EbtInt, EvqTemporary, 0, 2, 4); new(&type) TType(EbtInt, EvqTemporary, 0, 4, 2);
break; break;
case EHTokInt4x3: case EHTokInt4x3:
new(&type) TType(EbtInt, EvqTemporary, 0, 3, 4); new(&type) TType(EbtInt, EvqTemporary, 0, 4, 3);
break; break;
case EHTokInt4x4: case EHTokInt4x4:
new(&type) TType(EbtInt, EvqTemporary, 0, 4, 4); new(&type) TType(EbtInt, EvqTemporary, 0, 4, 4);
...@@ -1080,46 +1080,46 @@ bool HlslGrammar::acceptType(TType& type) ...@@ -1080,46 +1080,46 @@ bool HlslGrammar::acceptType(TType& type)
new(&type) TType(EbtUint, EvqTemporary, 0, 1, 1); new(&type) TType(EbtUint, EvqTemporary, 0, 1, 1);
break; break;
case EHTokUint1x2: case EHTokUint1x2:
new(&type) TType(EbtUint, EvqTemporary, 0, 2, 1); new(&type) TType(EbtUint, EvqTemporary, 0, 1, 2);
break; break;
case EHTokUint1x3: case EHTokUint1x3:
new(&type) TType(EbtUint, EvqTemporary, 0, 3, 1); new(&type) TType(EbtUint, EvqTemporary, 0, 1, 3);
break; break;
case EHTokUint1x4: case EHTokUint1x4:
new(&type) TType(EbtUint, EvqTemporary, 0, 4, 1); new(&type) TType(EbtUint, EvqTemporary, 0, 1, 4);
break; break;
case EHTokUint2x1: case EHTokUint2x1:
new(&type) TType(EbtUint, EvqTemporary, 0, 1, 2); new(&type) TType(EbtUint, EvqTemporary, 0, 2, 1);
break; break;
case EHTokUint2x2: case EHTokUint2x2:
new(&type) TType(EbtUint, EvqTemporary, 0, 2, 2); new(&type) TType(EbtUint, EvqTemporary, 0, 2, 2);
break; break;
case EHTokUint2x3: case EHTokUint2x3:
new(&type) TType(EbtUint, EvqTemporary, 0, 3, 2); new(&type) TType(EbtUint, EvqTemporary, 0, 2, 3);
break; break;
case EHTokUint2x4: case EHTokUint2x4:
new(&type) TType(EbtUint, EvqTemporary, 0, 4, 2); new(&type) TType(EbtUint, EvqTemporary, 0, 2, 4);
break; break;
case EHTokUint3x1: case EHTokUint3x1:
new(&type) TType(EbtUint, EvqTemporary, 0, 1, 3); new(&type) TType(EbtUint, EvqTemporary, 0, 3, 1);
break; break;
case EHTokUint3x2: case EHTokUint3x2:
new(&type) TType(EbtUint, EvqTemporary, 0, 2, 3); new(&type) TType(EbtUint, EvqTemporary, 0, 3, 2);
break; break;
case EHTokUint3x3: case EHTokUint3x3:
new(&type) TType(EbtUint, EvqTemporary, 0, 3, 3); new(&type) TType(EbtUint, EvqTemporary, 0, 3, 3);
break; break;
case EHTokUint3x4: case EHTokUint3x4:
new(&type) TType(EbtUint, EvqTemporary, 0, 4, 3); new(&type) TType(EbtUint, EvqTemporary, 0, 3, 4);
break; break;
case EHTokUint4x1: case EHTokUint4x1:
new(&type) TType(EbtUint, EvqTemporary, 0, 1, 4); new(&type) TType(EbtUint, EvqTemporary, 0, 4, 1);
break; break;
case EHTokUint4x2: case EHTokUint4x2:
new(&type) TType(EbtUint, EvqTemporary, 0, 2, 4); new(&type) TType(EbtUint, EvqTemporary, 0, 4, 2);
break; break;
case EHTokUint4x3: case EHTokUint4x3:
new(&type) TType(EbtUint, EvqTemporary, 0, 3, 4); new(&type) TType(EbtUint, EvqTemporary, 0, 4, 3);
break; break;
case EHTokUint4x4: case EHTokUint4x4:
new(&type) TType(EbtUint, EvqTemporary, 0, 4, 4); new(&type) TType(EbtUint, EvqTemporary, 0, 4, 4);
...@@ -1129,46 +1129,46 @@ bool HlslGrammar::acceptType(TType& type) ...@@ -1129,46 +1129,46 @@ bool HlslGrammar::acceptType(TType& type)
new(&type) TType(EbtBool, EvqTemporary, 0, 1, 1); new(&type) TType(EbtBool, EvqTemporary, 0, 1, 1);
break; break;
case EHTokBool1x2: case EHTokBool1x2:
new(&type) TType(EbtBool, EvqTemporary, 0, 2, 1); new(&type) TType(EbtBool, EvqTemporary, 0, 1, 2);
break; break;
case EHTokBool1x3: case EHTokBool1x3:
new(&type) TType(EbtBool, EvqTemporary, 0, 3, 1); new(&type) TType(EbtBool, EvqTemporary, 0, 1, 3);
break; break;
case EHTokBool1x4: case EHTokBool1x4:
new(&type) TType(EbtBool, EvqTemporary, 0, 4, 1); new(&type) TType(EbtBool, EvqTemporary, 0, 1, 4);
break; break;
case EHTokBool2x1: case EHTokBool2x1:
new(&type) TType(EbtBool, EvqTemporary, 0, 1, 2); new(&type) TType(EbtBool, EvqTemporary, 0, 2, 1);
break; break;
case EHTokBool2x2: case EHTokBool2x2:
new(&type) TType(EbtBool, EvqTemporary, 0, 2, 2); new(&type) TType(EbtBool, EvqTemporary, 0, 2, 2);
break; break;
case EHTokBool2x3: case EHTokBool2x3:
new(&type) TType(EbtBool, EvqTemporary, 0, 3, 2); new(&type) TType(EbtBool, EvqTemporary, 0, 2, 3);
break; break;
case EHTokBool2x4: case EHTokBool2x4:
new(&type) TType(EbtBool, EvqTemporary, 0, 4, 2); new(&type) TType(EbtBool, EvqTemporary, 0, 2, 4);
break; break;
case EHTokBool3x1: case EHTokBool3x1:
new(&type) TType(EbtBool, EvqTemporary, 0, 1, 3); new(&type) TType(EbtBool, EvqTemporary, 0, 3, 1);
break; break;
case EHTokBool3x2: case EHTokBool3x2:
new(&type) TType(EbtBool, EvqTemporary, 0, 2, 3); new(&type) TType(EbtBool, EvqTemporary, 0, 3, 2);
break; break;
case EHTokBool3x3: case EHTokBool3x3:
new(&type) TType(EbtBool, EvqTemporary, 0, 3, 3); new(&type) TType(EbtBool, EvqTemporary, 0, 3, 3);
break; break;
case EHTokBool3x4: case EHTokBool3x4:
new(&type) TType(EbtBool, EvqTemporary, 0, 4, 3); new(&type) TType(EbtBool, EvqTemporary, 0, 3, 4);
break; break;
case EHTokBool4x1: case EHTokBool4x1:
new(&type) TType(EbtBool, EvqTemporary, 0, 1, 4); new(&type) TType(EbtBool, EvqTemporary, 0, 4, 1);
break; break;
case EHTokBool4x2: case EHTokBool4x2:
new(&type) TType(EbtBool, EvqTemporary, 0, 2, 4); new(&type) TType(EbtBool, EvqTemporary, 0, 4, 2);
break; break;
case EHTokBool4x3: case EHTokBool4x3:
new(&type) TType(EbtBool, EvqTemporary, 0, 3, 4); new(&type) TType(EbtBool, EvqTemporary, 0, 4, 3);
break; break;
case EHTokBool4x4: case EHTokBool4x4:
new(&type) TType(EbtBool, EvqTemporary, 0, 4, 4); new(&type) TType(EbtBool, EvqTemporary, 0, 4, 4);
...@@ -1178,46 +1178,46 @@ bool HlslGrammar::acceptType(TType& type) ...@@ -1178,46 +1178,46 @@ bool HlslGrammar::acceptType(TType& type)
new(&type) TType(EbtFloat, EvqTemporary, 0, 1, 1); new(&type) TType(EbtFloat, EvqTemporary, 0, 1, 1);
break; break;
case EHTokFloat1x2: case EHTokFloat1x2:
new(&type) TType(EbtFloat, EvqTemporary, 0, 2, 1); new(&type) TType(EbtFloat, EvqTemporary, 0, 1, 2);
break; break;
case EHTokFloat1x3: case EHTokFloat1x3:
new(&type) TType(EbtFloat, EvqTemporary, 0, 3, 1); new(&type) TType(EbtFloat, EvqTemporary, 0, 1, 3);
break; break;
case EHTokFloat1x4: case EHTokFloat1x4:
new(&type) TType(EbtFloat, EvqTemporary, 0, 4, 1); new(&type) TType(EbtFloat, EvqTemporary, 0, 1, 4);
break; break;
case EHTokFloat2x1: case EHTokFloat2x1:
new(&type) TType(EbtFloat, EvqTemporary, 0, 1, 2); new(&type) TType(EbtFloat, EvqTemporary, 0, 2, 1);
break; break;
case EHTokFloat2x2: case EHTokFloat2x2:
new(&type) TType(EbtFloat, EvqTemporary, 0, 2, 2); new(&type) TType(EbtFloat, EvqTemporary, 0, 2, 2);
break; break;
case EHTokFloat2x3: case EHTokFloat2x3:
new(&type) TType(EbtFloat, EvqTemporary, 0, 3, 2); new(&type) TType(EbtFloat, EvqTemporary, 0, 2, 3);
break; break;
case EHTokFloat2x4: case EHTokFloat2x4:
new(&type) TType(EbtFloat, EvqTemporary, 0, 4, 2); new(&type) TType(EbtFloat, EvqTemporary, 0, 2, 4);
break; break;
case EHTokFloat3x1: case EHTokFloat3x1:
new(&type) TType(EbtFloat, EvqTemporary, 0, 1, 3); new(&type) TType(EbtFloat, EvqTemporary, 0, 3, 1);
break; break;
case EHTokFloat3x2: case EHTokFloat3x2:
new(&type) TType(EbtFloat, EvqTemporary, 0, 2, 3); new(&type) TType(EbtFloat, EvqTemporary, 0, 3, 2);
break; break;
case EHTokFloat3x3: case EHTokFloat3x3:
new(&type) TType(EbtFloat, EvqTemporary, 0, 3, 3); new(&type) TType(EbtFloat, EvqTemporary, 0, 3, 3);
break; break;
case EHTokFloat3x4: case EHTokFloat3x4:
new(&type) TType(EbtFloat, EvqTemporary, 0, 4, 3); new(&type) TType(EbtFloat, EvqTemporary, 0, 3, 4);
break; break;
case EHTokFloat4x1: case EHTokFloat4x1:
new(&type) TType(EbtFloat, EvqTemporary, 0, 1, 4); new(&type) TType(EbtFloat, EvqTemporary, 0, 4, 1);
break; break;
case EHTokFloat4x2: case EHTokFloat4x2:
new(&type) TType(EbtFloat, EvqTemporary, 0, 2, 4); new(&type) TType(EbtFloat, EvqTemporary, 0, 4, 2);
break; break;
case EHTokFloat4x3: case EHTokFloat4x3:
new(&type) TType(EbtFloat, EvqTemporary, 0, 3, 4); new(&type) TType(EbtFloat, EvqTemporary, 0, 4, 3);
break; break;
case EHTokFloat4x4: case EHTokFloat4x4:
new(&type) TType(EbtFloat, EvqTemporary, 0, 4, 4); new(&type) TType(EbtFloat, EvqTemporary, 0, 4, 4);
...@@ -1227,46 +1227,46 @@ bool HlslGrammar::acceptType(TType& type) ...@@ -1227,46 +1227,46 @@ bool HlslGrammar::acceptType(TType& type)
new(&type) TType(EbtDouble, EvqTemporary, 0, 1, 1); new(&type) TType(EbtDouble, EvqTemporary, 0, 1, 1);
break; break;
case EHTokDouble1x2: case EHTokDouble1x2:
new(&type) TType(EbtDouble, EvqTemporary, 0, 2, 1); new(&type) TType(EbtDouble, EvqTemporary, 0, 1, 2);
break; break;
case EHTokDouble1x3: case EHTokDouble1x3:
new(&type) TType(EbtDouble, EvqTemporary, 0, 3, 1); new(&type) TType(EbtDouble, EvqTemporary, 0, 1, 3);
break; break;
case EHTokDouble1x4: case EHTokDouble1x4:
new(&type) TType(EbtDouble, EvqTemporary, 0, 4, 1); new(&type) TType(EbtDouble, EvqTemporary, 0, 1, 4);
break; break;
case EHTokDouble2x1: case EHTokDouble2x1:
new(&type) TType(EbtDouble, EvqTemporary, 0, 1, 2); new(&type) TType(EbtDouble, EvqTemporary, 0, 2, 1);
break; break;
case EHTokDouble2x2: case EHTokDouble2x2:
new(&type) TType(EbtDouble, EvqTemporary, 0, 2, 2); new(&type) TType(EbtDouble, EvqTemporary, 0, 2, 2);
break; break;
case EHTokDouble2x3: case EHTokDouble2x3:
new(&type) TType(EbtDouble, EvqTemporary, 0, 3, 2); new(&type) TType(EbtDouble, EvqTemporary, 0, 2, 3);
break; break;
case EHTokDouble2x4: case EHTokDouble2x4:
new(&type) TType(EbtDouble, EvqTemporary, 0, 4, 2); new(&type) TType(EbtDouble, EvqTemporary, 0, 2, 4);
break; break;
case EHTokDouble3x1: case EHTokDouble3x1:
new(&type) TType(EbtDouble, EvqTemporary, 0, 1, 3); new(&type) TType(EbtDouble, EvqTemporary, 0, 3, 1);
break; break;
case EHTokDouble3x2: case EHTokDouble3x2:
new(&type) TType(EbtDouble, EvqTemporary, 0, 2, 3); new(&type) TType(EbtDouble, EvqTemporary, 0, 3, 2);
break; break;
case EHTokDouble3x3: case EHTokDouble3x3:
new(&type) TType(EbtDouble, EvqTemporary, 0, 3, 3); new(&type) TType(EbtDouble, EvqTemporary, 0, 3, 3);
break; break;
case EHTokDouble3x4: case EHTokDouble3x4:
new(&type) TType(EbtDouble, EvqTemporary, 0, 4, 3); new(&type) TType(EbtDouble, EvqTemporary, 0, 3, 4);
break; break;
case EHTokDouble4x1: case EHTokDouble4x1:
new(&type) TType(EbtDouble, EvqTemporary, 0, 1, 4); new(&type) TType(EbtDouble, EvqTemporary, 0, 4, 1);
break; break;
case EHTokDouble4x2: case EHTokDouble4x2:
new(&type) TType(EbtDouble, EvqTemporary, 0, 2, 4); new(&type) TType(EbtDouble, EvqTemporary, 0, 4, 2);
break; break;
case EHTokDouble4x3: case EHTokDouble4x3:
new(&type) TType(EbtDouble, EvqTemporary, 0, 3, 4); new(&type) TType(EbtDouble, EvqTemporary, 0, 4, 3);
break; break;
case EHTokDouble4x4: case EHTokDouble4x4:
new(&type) TType(EbtDouble, EvqTemporary, 0, 4, 4); new(&type) TType(EbtDouble, EvqTemporary, 0, 4, 4);
......
...@@ -1597,8 +1597,10 @@ void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*& ...@@ -1597,8 +1597,10 @@ void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*&
case EOpGenMul: case EOpGenMul:
{ {
// mul(a,b) -> MatrixTimesMatrix, MatrixTimesVector, MatrixTimesScalar, VectorTimesScalar, Dot, Mul // mul(a,b) -> MatrixTimesMatrix, MatrixTimesVector, MatrixTimesScalar, VectorTimesScalar, Dot, Mul
TIntermTyped* arg0 = argAggregate->getSequence()[0]->getAsTyped(); // Since we are treating HLSL rows like GLSL columns (the first matrix indirection),
TIntermTyped* arg1 = argAggregate->getSequence()[1]->getAsTyped(); // we must reverse the operand order here. Hence, arg0 gets sequence[1], etc.
TIntermTyped* arg0 = argAggregate->getSequence()[1]->getAsTyped();
TIntermTyped* arg1 = argAggregate->getSequence()[0]->getAsTyped();
if (arg0->isVector() && arg1->isVector()) { // vec * vec if (arg0->isVector() && arg1->isVector()) { // vec * vec
node->getAsAggregate()->setOperator(EOpDot); node->getAsAggregate()->setOperator(EOpDot);
...@@ -4144,15 +4146,21 @@ TIntermTyped* HlslParseContext::convertInitializerList(const TSourceLoc& loc, co ...@@ -4144,15 +4146,21 @@ TIntermTyped* HlslParseContext::convertInitializerList(const TSourceLoc& loc, co
return nullptr; return nullptr;
} }
} else if (type.isMatrix()) { } else if (type.isMatrix()) {
if (type.getMatrixCols() != (int)initList->getSequence().size()) { if (type.computeNumComponents() == (int)initList->getSequence().size()) {
error(loc, "wrong number of matrix columns:", "initializer list", type.getCompleteString().c_str()); // This means the matrix is initialized component-wise, rather than as
return nullptr; // a series of rows and columns. We can just use the list directly as
} // a constructor; no further processing needed.
TType vectorType(type, 0); // dereferenced type } else {
for (int i = 0; i < type.getMatrixCols(); ++i) { if (type.getMatrixCols() != (int)initList->getSequence().size()) {
initList->getSequence()[i] = convertInitializerList(loc, vectorType, initList->getSequence()[i]->getAsTyped()); error(loc, "wrong number of matrix columns:", "initializer list", type.getCompleteString().c_str());
if (initList->getSequence()[i] == nullptr)
return nullptr; return nullptr;
}
TType vectorType(type, 0); // dereferenced type
for (int i = 0; i < type.getMatrixCols(); ++i) {
initList->getSequence()[i] = convertInitializerList(loc, vectorType, initList->getSequence()[i]->getAsTyped());
if (initList->getSequence()[i] == nullptr)
return nullptr;
}
} }
} else if (type.isVector()) { } else if (type.isVector()) {
if (type.getVectorSize() != (int)initList->getSequence().size()) { if (type.getVectorSize() != (int)initList->getSequence().size()) {
......
...@@ -218,7 +218,6 @@ int FixedVecSize(const char* arg) ...@@ -218,7 +218,6 @@ int FixedVecSize(const char* arg)
glslang::TString& AppendTypeName(glslang::TString& s, const char* argOrder, const char* argType, int dim0, int dim1) glslang::TString& AppendTypeName(glslang::TString& s, const char* argOrder, const char* argType, int dim0, int dim1)
{ {
const bool isTranspose = (argOrder[0] == '^'); const bool isTranspose = (argOrder[0] == '^');
const bool isMatMul = (argOrder[0] == '#');
const bool isTexture = IsTextureType(argOrder[0]); const bool isTexture = IsTextureType(argOrder[0]);
const bool isArrayed = IsTextureArrayed(argOrder[0]); const bool isArrayed = IsTextureArrayed(argOrder[0]);
const bool isSampler = IsSamplerType(argType[0]); const bool isSampler = IsSamplerType(argType[0]);
...@@ -229,8 +228,6 @@ glslang::TString& AppendTypeName(glslang::TString& s, const char* argOrder, cons ...@@ -229,8 +228,6 @@ glslang::TString& AppendTypeName(glslang::TString& s, const char* argOrder, cons
if (isTranspose) { // Take transpose of matrix dimensions if (isTranspose) { // Take transpose of matrix dimensions
std::swap(dim0, dim1); std::swap(dim0, dim1);
} else if (isMatMul) {
dim0 = dim1; // set vector dimension to mat col
} else if (isTexture) { } else if (isTexture) {
if (type == 'F') // map base type to texture of that type. if (type == 'F') // map base type to texture of that type.
type = 'T'; // e.g, int -> itexture, uint -> utexture, etc. type = 'T'; // e.g, int -> itexture, uint -> utexture, etc.
...@@ -240,7 +237,7 @@ glslang::TString& AppendTypeName(glslang::TString& s, const char* argOrder, cons ...@@ -240,7 +237,7 @@ glslang::TString& AppendTypeName(glslang::TString& s, const char* argOrder, cons
type = 'u'; type = 'u';
} }
if (isTranspose || isMatMul) if (isTranspose)
++argOrder; ++argOrder;
char order = *argOrder; char order = *argOrder;
...@@ -312,16 +309,14 @@ glslang::TString& AppendTypeName(glslang::TString& s, const char* argOrder, cons ...@@ -312,16 +309,14 @@ glslang::TString& AppendTypeName(glslang::TString& s, const char* argOrder, cons
switch (order) { switch (order) {
case '-': break; // no dimensions for voids case '-': break; // no dimensions for voids
case 'S': break; // no dimensions on scalars case 'S': break; // no dimensions on scalars
case 'V': s += ('0' + char(dim0)); break; case 'V':
s += ('0' + char(dim0));
break;
case 'M': case 'M':
{ s += ('0' + char(dim0));
if (!UseHlslTypes) // GLSL has column first for mat types s += 'x';
std::swap(dim0, dim1); s += ('0' + char(dim1));
s += ('0' + char(dim0)); break;
s += 'x';
s += ('0' + char(dim1));
break;
}
default: default:
break; break;
} }
...@@ -427,6 +422,7 @@ void TBuiltInParseablesHlsl::createMatTimesMat() ...@@ -427,6 +422,7 @@ void TBuiltInParseablesHlsl::createMatTimesMat()
const int retRows = xRows; const int retRows = xRows;
const int retCols = yCols; const int retCols = yCols;
// Create a mat * mat of the appropriate dimensions
AppendTypeName(s, "M", "F", retRows, retCols); // add return type AppendTypeName(s, "M", "F", retRows, retCols); // add return type
s.append(" "); // space between type and name s.append(" "); // space between type and name
s.append("mul"); // intrinsic name s.append("mul"); // intrinsic name
...@@ -438,6 +434,31 @@ void TBuiltInParseablesHlsl::createMatTimesMat() ...@@ -438,6 +434,31 @@ void TBuiltInParseablesHlsl::createMatTimesMat()
s.append(");\n"); // close paren s.append(");\n"); // close paren
} }
// Create M*V
AppendTypeName(s, "V", "F", xRows, 1); // add return type
s.append(" "); // space between type and name
s.append("mul"); // intrinsic name
s.append("("); // open paren
AppendTypeName(s, "M", "F", xRows, xCols); // add X input
s.append(", ");
AppendTypeName(s, "V", "F", xCols, 1); // add Y input
s.append(");\n"); // close paren
// Create V*M
AppendTypeName(s, "V", "F", xCols, 1); // add return type
s.append(" "); // space between type and name
s.append("mul"); // intrinsic name
s.append("("); // open paren
AppendTypeName(s, "V", "F", xRows, 1); // add Y input
s.append(", ");
AppendTypeName(s, "M", "F", xRows, xCols); // add X input
s.append(");\n"); // close paren
} }
} }
} }
...@@ -482,7 +503,6 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c ...@@ -482,7 +503,6 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c
// '>' as first letter of order creates an output parameter // '>' as first letter of order creates an output parameter
// '<' as first letter of order creates an input parameter // '<' as first letter of order creates an input parameter
// '^' as first letter of order takes transpose dimensions // '^' as first letter of order takes transpose dimensions
// '#' as first letter of order sets rows=cols for mats
// '%' as first letter of order creates texture of given F/I/U type (texture, itexture, etc) // '%' as first letter of order creates texture of given F/I/U type (texture, itexture, etc)
// '@' as first letter of order creates arrayed texture of given type // '@' as first letter of order creates arrayed texture of given type
// '$' / '&' as first letter of order creates 2DMS / 2DMSArray textures // '$' / '&' as first letter of order creates 2DMS / 2DMSArray textures
...@@ -592,9 +612,7 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c ...@@ -592,9 +612,7 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c
{ "mul", "M", nullptr, "S,M", "FI,", EShLangAll }, { "mul", "M", nullptr, "S,M", "FI,", EShLangAll },
{ "mul", "V", nullptr, "V,S", "FI,", EShLangAll }, { "mul", "V", nullptr, "V,S", "FI,", EShLangAll },
{ "mul", "S", nullptr, "V,V", "FI,", EShLangAll }, { "mul", "S", nullptr, "V,V", "FI,", EShLangAll },
{ "mul", "#V", nullptr, "V,M", "FI,", EShLangAll },
{ "mul", "M", nullptr, "M,S", "FI,", EShLangAll }, { "mul", "M", nullptr, "M,S", "FI,", EShLangAll },
{ "mul", "V", nullptr, "M,#V", "FI,", EShLangAll },
// mat*mat form of mul is handled in createMatTimesMat() // mat*mat form of mul is handled in createMatTimesMat()
{ "noise", "S", "F", "V", "F", EShLangPS }, { "noise", "S", "F", "V", "F", EShLangPS },
{ "normalize", nullptr, nullptr, "V", "F", EShLangAll }, { "normalize", nullptr, nullptr, "V", "F", EShLangAll },
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment