Front-end: Implement 2nd task of issue #400; precision of result and operation.
From the ES spec + Bugzilla 15931 and GL_KHR_vulkan_glsl: - Update precision qualifiers for all built-in function prototypes. - Implement the new algorithm used to distinguish built-in function operation precisions from result precisions. Also add tracking of separate result and operation precisions, and use that in generating SPIR-V. (SPIR-V cares about precision of operation, while the front-end cares about precision of result, for propagation.)
This commit is contained in:
parent
6c136223ed
commit
f6640761c4
18 changed files with 408 additions and 308 deletions
|
|
@ -125,12 +125,12 @@ ERROR: node is still EOpNull!
|
|||
0:17 'u1' (temp highp uint)
|
||||
0:17 'u1' (temp highp uint)
|
||||
0:17 'u1' (temp highp uint)
|
||||
0:19 uMulExtended (global void)
|
||||
0:19 uMulExtended (global highp void)
|
||||
0:19 'u4' (temp highp 4-component vector of uint)
|
||||
0:19 'u4' (temp highp 4-component vector of uint)
|
||||
0:19 'u4' (temp highp 4-component vector of uint)
|
||||
0:19 'u4' (temp highp 4-component vector of uint)
|
||||
0:21 iMulExtended (global void)
|
||||
0:21 iMulExtended (global highp void)
|
||||
0:21 'i4' (temp highp 4-component vector of int)
|
||||
0:21 'i4' (temp highp 4-component vector of int)
|
||||
0:21 'i4' (temp highp 4-component vector of int)
|
||||
|
|
@ -179,27 +179,27 @@ ERROR: node is still EOpNull!
|
|||
0:31 'u4' (temp highp 4-component vector of uint)
|
||||
0:32 move second child to first child (temp highp int)
|
||||
0:32 'i1' (temp highp int)
|
||||
0:32 bitCount (global highp int)
|
||||
0:32 bitCount (global lowp int, operation at highp)
|
||||
0:32 'i1' (temp highp int)
|
||||
0:33 move second child to first child (temp highp 3-component vector of int)
|
||||
0:33 'i3' (temp highp 3-component vector of int)
|
||||
0:33 bitCount (global highp 3-component vector of int)
|
||||
0:33 bitCount (global lowp 3-component vector of int, operation at highp)
|
||||
0:33 'u3' (temp highp 3-component vector of uint)
|
||||
0:34 move second child to first child (temp highp 2-component vector of int)
|
||||
0:34 'i2' (temp highp 2-component vector of int)
|
||||
0:34 findLSB (global highp 2-component vector of int)
|
||||
0:34 findLSB (global lowp 2-component vector of int, operation at highp)
|
||||
0:34 'i2' (temp highp 2-component vector of int)
|
||||
0:35 move second child to first child (temp highp 4-component vector of int)
|
||||
0:35 'i4' (temp highp 4-component vector of int)
|
||||
0:35 findLSB (global highp 4-component vector of int)
|
||||
0:35 findLSB (global lowp 4-component vector of int, operation at highp)
|
||||
0:35 'u4' (temp highp 4-component vector of uint)
|
||||
0:36 move second child to first child (temp highp int)
|
||||
0:36 'i1' (temp highp int)
|
||||
0:36 findMSB (global highp int)
|
||||
0:36 findMSB (global lowp int, operation at highp)
|
||||
0:36 'i1' (temp highp int)
|
||||
0:37 move second child to first child (temp highp 2-component vector of int)
|
||||
0:37 'i2' (temp highp 2-component vector of int)
|
||||
0:37 findMSB (global highp 2-component vector of int)
|
||||
0:37 findMSB (global lowp 2-component vector of int, operation at highp)
|
||||
0:37 'u2' (temp highp 2-component vector of uint)
|
||||
0:40 move second child to first child (temp highp 3-component vector of float)
|
||||
0:40 'v3' (temp highp 3-component vector of float)
|
||||
|
|
@ -213,19 +213,19 @@ ERROR: node is still EOpNull!
|
|||
0:42 'i2' (temp highp 2-component vector of int)
|
||||
0:45 move second child to first child (temp highp uint)
|
||||
0:45 'u1' (temp highp uint)
|
||||
0:45 PackUnorm4x8 (global highp uint)
|
||||
0:45 PackUnorm4x8 (global highp uint, operation at mediump)
|
||||
0:45 'v4' (temp mediump 4-component vector of float)
|
||||
0:46 move second child to first child (temp highp uint)
|
||||
0:46 'u1' (temp highp uint)
|
||||
0:46 PackSnorm4x8 (global highp uint)
|
||||
0:46 PackSnorm4x8 (global highp uint, operation at mediump)
|
||||
0:46 'v4' (temp mediump 4-component vector of float)
|
||||
0:47 move second child to first child (temp highp 4-component vector of float)
|
||||
0:47 move second child to first child (temp mediump 4-component vector of float)
|
||||
0:47 'v4' (temp mediump 4-component vector of float)
|
||||
0:47 UnpackUnorm4x8 (global highp 4-component vector of float)
|
||||
0:47 UnpackUnorm4x8 (global mediump 4-component vector of float, operation at highp)
|
||||
0:47 'u1' (temp highp uint)
|
||||
0:48 move second child to first child (temp highp 4-component vector of float)
|
||||
0:48 move second child to first child (temp mediump 4-component vector of float)
|
||||
0:48 'v4' (temp mediump 4-component vector of float)
|
||||
0:48 UnpackSnorm4x8 (global highp 4-component vector of float)
|
||||
0:48 UnpackSnorm4x8 (global mediump 4-component vector of float, operation at highp)
|
||||
0:48 'u1' (temp highp uint)
|
||||
0:60 Function Definition: foo( (global void)
|
||||
0:60 Function Parameters:
|
||||
|
|
@ -340,7 +340,7 @@ ERROR: node is still EOpNull!
|
|||
0:165 0.100000
|
||||
0:165 Convert float to int (temp lowp 2-component vector of int)
|
||||
0:165 'inf' (in highp 2-component vector of float)
|
||||
0:166 textureGatherOffsets (global lowp 4-component vector of float)
|
||||
0:166 textureGatherOffsets (global lowp 4-component vector of float, operation at highp)
|
||||
0:166 direct index (temp lowp sampler2D)
|
||||
0:166 'sArray' (uniform 4-element array of lowp sampler2D)
|
||||
0:166 Constant:
|
||||
|
|
@ -404,7 +404,7 @@ ERROR: node is still EOpNull!
|
|||
0:180 0.100000
|
||||
0:180 Convert float to int (temp lowp 2-component vector of int)
|
||||
0:180 'inf' (in highp 2-component vector of float)
|
||||
0:181 textureGatherOffsets (global lowp 4-component vector of float)
|
||||
0:181 textureGatherOffsets (global lowp 4-component vector of float, operation at highp)
|
||||
0:181 direct index (temp lowp sampler2D)
|
||||
0:181 'sArray' (uniform 4-element array of lowp sampler2D)
|
||||
0:181 Constant:
|
||||
|
|
@ -421,7 +421,7 @@ ERROR: node is still EOpNull!
|
|||
0:181 0 (const int)
|
||||
0:181 0 (const int)
|
||||
0:181 0 (const int)
|
||||
0:182 textureGatherOffsets (global lowp 4-component vector of float)
|
||||
0:182 textureGatherOffsets (global lowp 4-component vector of float, operation at highp)
|
||||
0:182 direct index (temp lowp sampler2D)
|
||||
0:182 'sArray' (uniform 4-element array of lowp sampler2D)
|
||||
0:182 Constant:
|
||||
|
|
@ -1056,12 +1056,12 @@ ERROR: node is still EOpNull!
|
|||
0:17 'u1' (temp highp uint)
|
||||
0:17 'u1' (temp highp uint)
|
||||
0:17 'u1' (temp highp uint)
|
||||
0:19 uMulExtended (global void)
|
||||
0:19 uMulExtended (global highp void)
|
||||
0:19 'u4' (temp highp 4-component vector of uint)
|
||||
0:19 'u4' (temp highp 4-component vector of uint)
|
||||
0:19 'u4' (temp highp 4-component vector of uint)
|
||||
0:19 'u4' (temp highp 4-component vector of uint)
|
||||
0:21 iMulExtended (global void)
|
||||
0:21 iMulExtended (global highp void)
|
||||
0:21 'i4' (temp highp 4-component vector of int)
|
||||
0:21 'i4' (temp highp 4-component vector of int)
|
||||
0:21 'i4' (temp highp 4-component vector of int)
|
||||
|
|
@ -1110,27 +1110,27 @@ ERROR: node is still EOpNull!
|
|||
0:31 'u4' (temp highp 4-component vector of uint)
|
||||
0:32 move second child to first child (temp highp int)
|
||||
0:32 'i1' (temp highp int)
|
||||
0:32 bitCount (global highp int)
|
||||
0:32 bitCount (global lowp int, operation at highp)
|
||||
0:32 'i1' (temp highp int)
|
||||
0:33 move second child to first child (temp highp 3-component vector of int)
|
||||
0:33 'i3' (temp highp 3-component vector of int)
|
||||
0:33 bitCount (global highp 3-component vector of int)
|
||||
0:33 bitCount (global lowp 3-component vector of int, operation at highp)
|
||||
0:33 'u3' (temp highp 3-component vector of uint)
|
||||
0:34 move second child to first child (temp highp 2-component vector of int)
|
||||
0:34 'i2' (temp highp 2-component vector of int)
|
||||
0:34 findLSB (global highp 2-component vector of int)
|
||||
0:34 findLSB (global lowp 2-component vector of int, operation at highp)
|
||||
0:34 'i2' (temp highp 2-component vector of int)
|
||||
0:35 move second child to first child (temp highp 4-component vector of int)
|
||||
0:35 'i4' (temp highp 4-component vector of int)
|
||||
0:35 findLSB (global highp 4-component vector of int)
|
||||
0:35 findLSB (global lowp 4-component vector of int, operation at highp)
|
||||
0:35 'u4' (temp highp 4-component vector of uint)
|
||||
0:36 move second child to first child (temp highp int)
|
||||
0:36 'i1' (temp highp int)
|
||||
0:36 findMSB (global highp int)
|
||||
0:36 findMSB (global lowp int, operation at highp)
|
||||
0:36 'i1' (temp highp int)
|
||||
0:37 move second child to first child (temp highp 2-component vector of int)
|
||||
0:37 'i2' (temp highp 2-component vector of int)
|
||||
0:37 findMSB (global highp 2-component vector of int)
|
||||
0:37 findMSB (global lowp 2-component vector of int, operation at highp)
|
||||
0:37 'u2' (temp highp 2-component vector of uint)
|
||||
0:40 move second child to first child (temp highp 3-component vector of float)
|
||||
0:40 'v3' (temp highp 3-component vector of float)
|
||||
|
|
@ -1144,19 +1144,19 @@ ERROR: node is still EOpNull!
|
|||
0:42 'i2' (temp highp 2-component vector of int)
|
||||
0:45 move second child to first child (temp highp uint)
|
||||
0:45 'u1' (temp highp uint)
|
||||
0:45 PackUnorm4x8 (global highp uint)
|
||||
0:45 PackUnorm4x8 (global highp uint, operation at mediump)
|
||||
0:45 'v4' (temp mediump 4-component vector of float)
|
||||
0:46 move second child to first child (temp highp uint)
|
||||
0:46 'u1' (temp highp uint)
|
||||
0:46 PackSnorm4x8 (global highp uint)
|
||||
0:46 PackSnorm4x8 (global highp uint, operation at mediump)
|
||||
0:46 'v4' (temp mediump 4-component vector of float)
|
||||
0:47 move second child to first child (temp highp 4-component vector of float)
|
||||
0:47 move second child to first child (temp mediump 4-component vector of float)
|
||||
0:47 'v4' (temp mediump 4-component vector of float)
|
||||
0:47 UnpackUnorm4x8 (global highp 4-component vector of float)
|
||||
0:47 UnpackUnorm4x8 (global mediump 4-component vector of float, operation at highp)
|
||||
0:47 'u1' (temp highp uint)
|
||||
0:48 move second child to first child (temp highp 4-component vector of float)
|
||||
0:48 move second child to first child (temp mediump 4-component vector of float)
|
||||
0:48 'v4' (temp mediump 4-component vector of float)
|
||||
0:48 UnpackSnorm4x8 (global highp 4-component vector of float)
|
||||
0:48 UnpackSnorm4x8 (global mediump 4-component vector of float, operation at highp)
|
||||
0:48 'u1' (temp highp uint)
|
||||
0:60 Function Definition: foo( (global void)
|
||||
0:60 Function Parameters:
|
||||
|
|
@ -1271,7 +1271,7 @@ ERROR: node is still EOpNull!
|
|||
0:165 0.100000
|
||||
0:165 Convert float to int (temp lowp 2-component vector of int)
|
||||
0:165 'inf' (in highp 2-component vector of float)
|
||||
0:166 textureGatherOffsets (global lowp 4-component vector of float)
|
||||
0:166 textureGatherOffsets (global lowp 4-component vector of float, operation at highp)
|
||||
0:166 direct index (temp lowp sampler2D)
|
||||
0:166 'sArray' (uniform 4-element array of lowp sampler2D)
|
||||
0:166 Constant:
|
||||
|
|
@ -1335,7 +1335,7 @@ ERROR: node is still EOpNull!
|
|||
0:180 0.100000
|
||||
0:180 Convert float to int (temp lowp 2-component vector of int)
|
||||
0:180 'inf' (in highp 2-component vector of float)
|
||||
0:181 textureGatherOffsets (global lowp 4-component vector of float)
|
||||
0:181 textureGatherOffsets (global lowp 4-component vector of float, operation at highp)
|
||||
0:181 direct index (temp lowp sampler2D)
|
||||
0:181 'sArray' (uniform 4-element array of lowp sampler2D)
|
||||
0:181 Constant:
|
||||
|
|
@ -1352,7 +1352,7 @@ ERROR: node is still EOpNull!
|
|||
0:181 0 (const int)
|
||||
0:181 0 (const int)
|
||||
0:181 0 (const int)
|
||||
0:182 textureGatherOffsets (global lowp 4-component vector of float)
|
||||
0:182 textureGatherOffsets (global lowp 4-component vector of float, operation at highp)
|
||||
0:182 direct index (temp lowp sampler2D)
|
||||
0:182 'sArray' (uniform 4-element array of lowp sampler2D)
|
||||
0:182 Constant:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue