Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
glslang
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chen Yisong
glslang
Commits
2173c650
Unverified
Commit
2173c650
authored
Nov 27, 2018
by
John Kessenich
Committed by
GitHub
Nov 27, 2018
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1597 from sheredom/add_conversion_folding
Add conversion folding when the source is a constant.
parents
fb7a7ea2
81a63f1d
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
1012 additions
and
40 deletions
+1012
-40
constantUnaryConversion.comp.out
Test/baseResults/constantUnaryConversion.comp.out
+645
-0
spv.16bitstorage-int.frag.out
Test/baseResults/spv.16bitstorage-int.frag.out
+9
-8
spv.16bitstorage-uint.frag.out
Test/baseResults/spv.16bitstorage-uint.frag.out
+6
-6
spv.16bitstorage.frag.out
Test/baseResults/spv.16bitstorage.frag.out
+7
-8
spv.8bitstorage-int.frag.out
Test/baseResults/spv.8bitstorage-int.frag.out
+9
-8
spv.8bitstorage-uint.frag.out
Test/baseResults/spv.8bitstorage-uint.frag.out
+6
-6
constantUnaryConversion.comp
Test/constantUnaryConversion.comp
+48
-0
Constant.cpp
glslang/MachineIndependent/Constant.cpp
+273
-0
Intermediate.cpp
glslang/MachineIndependent/Intermediate.cpp
+7
-3
localintermediate.h
glslang/MachineIndependent/localintermediate.h
+1
-1
AST.FromFile.cpp
gtests/AST.FromFile.cpp
+1
-0
No files found.
Test/baseResults/constantUnaryConversion.comp.out
0 → 100644
View file @
2173c650
constantUnaryConversion.comp
Shader version: 450
Requested GL_KHX_shader_explicit_arithmetic_types
local_size = (1, 1, 1)
0:? Sequence
0:48 Function Definition: main( ( global void)
0:48 Function Parameters:
0:? Linker Objects
0:? 'bool_init' ( const bool)
0:? true (const bool)
0:? 'int8_t_init' ( const int8_t)
0:? -1 (const int)
0:? 'int16_t_init' ( const int16_t)
0:? -2 (const int)
0:? 'int32_t_init' ( const int)
0:? -3 (const int)
0:? 'int64_t_init' ( const int64_t)
0:? -4 (const int64_t)
0:? 'uint8_t_init' ( const uint8_t)
0:? 1 (const int)
0:? 'uint16_t_init' ( const uint16_t)
0:? 2 (const int)
0:? 'uint32_t_init' ( const uint)
0:? 3 (const uint)
0:? 'uint64_t_init' ( const uint64_t)
0:? 4 (const uint64_t)
0:? 'float16_t_init' ( const float16_t)
0:? 42.000000
0:? 'float32_t_init' ( const float)
0:? 13.000000
0:? 'float64_t_init' ( const double)
0:? -4.000000
0:? 'bool_to_bool' ( const bool)
0:? true (const bool)
0:? 'int8_t_to_bool' ( const bool)
0:? -1 (const int)
0:? 'int16_t_to_bool' ( const bool)
0:? -2 (const int)
0:? 'int32_t_to_bool' ( const bool)
0:? true (const bool)
0:? 'int64_t_to_bool' ( const bool)
0:? true (const bool)
0:? 'uint8_t_to_bool' ( const bool)
0:? 1 (const int)
0:? 'uint16_t_to_bool' ( const bool)
0:? 2 (const int)
0:? 'uint32_t_to_bool' ( const bool)
0:? true (const bool)
0:? 'uint64_t_to_bool' ( const bool)
0:? true (const bool)
0:? 'float16_t_to_bool' ( const bool)
0:? true (const bool)
0:? 'float32_t_to_bool' ( const bool)
0:? true (const bool)
0:? 'float64_t_to_bool' ( const bool)
0:? true (const bool)
0:? 'bool_to_int8_t' ( const int8_t)
0:? true (const bool)
0:? 'int8_t_to_int8_t' ( const int8_t)
0:? -1 (const int)
0:? 'int16_t_to_int8_t' ( const int8_t)
0:? -2 (const int)
0:? 'int32_t_to_int8_t' ( const int8_t)
0:? -3 (const int)
0:? 'int64_t_to_int8_t' ( const int8_t)
0:? -4 (const int64_t)
0:? 'uint8_t_to_int8_t' ( const int8_t)
0:? 1 (const int)
0:? 'uint16_t_to_int8_t' ( const int8_t)
0:? 2 (const int)
0:? 'uint32_t_to_int8_t' ( const int8_t)
0:? 3 (const uint)
0:? 'uint64_t_to_int8_t' ( const int8_t)
0:? 4 (const uint64_t)
0:? 'float16_t_to_int8_t' ( const int8_t)
0:? 42.000000
0:? 'float32_t_to_int8_t' ( const int8_t)
0:? 13.000000
0:? 'float64_t_to_int8_t' ( const int8_t)
0:? -4.000000
0:? 'bool_to_int16_t' ( const int16_t)
0:? true (const bool)
0:? 'int8_t_to_int16_t' ( const int16_t)
0:? -1 (const int)
0:? 'int16_t_to_int16_t' ( const int16_t)
0:? -2 (const int)
0:? 'int32_t_to_int16_t' ( const int16_t)
0:? -3 (const int)
0:? 'int64_t_to_int16_t' ( const int16_t)
0:? -4 (const int64_t)
0:? 'uint8_t_to_int16_t' ( const int16_t)
0:? 1 (const int)
0:? 'uint16_t_to_int16_t' ( const int16_t)
0:? 2 (const int)
0:? 'uint32_t_to_int16_t' ( const int16_t)
0:? 3 (const uint)
0:? 'uint64_t_to_int16_t' ( const int16_t)
0:? 4 (const uint64_t)
0:? 'float16_t_to_int16_t' ( const int16_t)
0:? 42.000000
0:? 'float32_t_to_int16_t' ( const int16_t)
0:? 13.000000
0:? 'float64_t_to_int16_t' ( const int16_t)
0:? -4.000000
0:? 'bool_to_int32_t' ( const int)
0:? 1 (const int)
0:? 'int8_t_to_int32_t' ( const int)
0:? -1 (const int)
0:? 'int16_t_to_int32_t' ( const int)
0:? -2 (const int)
0:? 'int32_t_to_int32_t' ( const int)
0:? -3 (const int)
0:? 'int64_t_to_int32_t' ( const int)
0:? -4 (const int)
0:? 'uint8_t_to_int32_t' ( const int)
0:? 1 (const int)
0:? 'uint16_t_to_int32_t' ( const int)
0:? 2 (const int)
0:? 'uint32_t_to_int32_t' ( const int)
0:? 3 (const int)
0:? 'uint64_t_to_int32_t' ( const int)
0:? 4 (const int)
0:? 'float16_t_to_int32_t' ( const int)
0:? 42 (const int)
0:? 'float32_t_to_int32_t' ( const int)
0:? 13 (const int)
0:? 'float64_t_to_int32_t' ( const int)
0:? -4 (const int)
0:? 'bool_to_int64_t' ( const int64_t)
0:? 1 (const int64_t)
0:? 'int8_t_to_int64_t' ( const int64_t)
0:? -1 (const int)
0:? 'int16_t_to_int64_t' ( const int64_t)
0:? -2 (const int)
0:? 'int32_t_to_int64_t' ( const int64_t)
0:? -3 (const int64_t)
0:? 'int64_t_to_int64_t' ( const int64_t)
0:? -4 (const int64_t)
0:? 'uint8_t_to_int64_t' ( const int64_t)
0:? 1 (const int)
0:? 'uint16_t_to_int64_t' ( const int64_t)
0:? 2 (const int)
0:? 'uint32_t_to_int64_t' ( const int64_t)
0:? 3 (const int64_t)
0:? 'uint64_t_to_int64_t' ( const int64_t)
0:? 4 (const int64_t)
0:? 'float16_t_to_int64_t' ( const int64_t)
0:? 42 (const int64_t)
0:? 'float32_t_to_int64_t' ( const int64_t)
0:? 13 (const int64_t)
0:? 'float64_t_to_int64_t' ( const int64_t)
0:? -4 (const int64_t)
0:? 'bool_to_uint8_t' ( const uint8_t)
0:? true (const bool)
0:? 'int8_t_to_uint8_t' ( const uint8_t)
0:? -1 (const int)
0:? 'int16_t_to_uint8_t' ( const uint8_t)
0:? -2 (const int)
0:? 'int32_t_to_uint8_t' ( const uint8_t)
0:? -3 (const int)
0:? 'int64_t_to_uint8_t' ( const uint8_t)
0:? -4 (const int64_t)
0:? 'uint8_t_to_uint8_t' ( const uint8_t)
0:? 1 (const int)
0:? 'uint16_t_to_uint8_t' ( const uint8_t)
0:? 2 (const int)
0:? 'uint32_t_to_uint8_t' ( const uint8_t)
0:? 3 (const uint)
0:? 'uint64_t_to_uint8_t' ( const uint8_t)
0:? 4 (const uint64_t)
0:? 'float16_t_to_uint8_t' ( const uint8_t)
0:? 42.000000
0:? 'float32_t_to_uint8_t' ( const uint8_t)
0:? 13.000000
0:? 'float64_t_to_uint8_t' ( const uint8_t)
0:? -4.000000
0:? 'bool_to_uint16_t' ( const uint16_t)
0:? true (const bool)
0:? 'int8_t_to_uint16_t' ( const uint16_t)
0:? -1 (const int)
0:? 'int16_t_to_uint16_t' ( const uint16_t)
0:? -2 (const int)
0:? 'int32_t_to_uint16_t' ( const uint16_t)
0:? -3 (const int)
0:? 'int64_t_to_uint16_t' ( const uint16_t)
0:? -4 (const int64_t)
0:? 'uint8_t_to_uint16_t' ( const uint16_t)
0:? 1 (const int)
0:? 'uint16_t_to_uint16_t' ( const uint16_t)
0:? 2 (const int)
0:? 'uint32_t_to_uint16_t' ( const uint16_t)
0:? 3 (const uint)
0:? 'uint64_t_to_uint16_t' ( const uint16_t)
0:? 4 (const uint64_t)
0:? 'float16_t_to_uint16_t' ( const uint16_t)
0:? 42.000000
0:? 'float32_t_to_uint16_t' ( const uint16_t)
0:? 13.000000
0:? 'float64_t_to_uint16_t' ( const uint16_t)
0:? -4.000000
0:? 'bool_to_uint32_t' ( const uint)
0:? 1 (const uint)
0:? 'int8_t_to_uint32_t' ( const uint)
0:? -1 (const int)
0:? 'int16_t_to_uint32_t' ( const uint)
0:? -2 (const int)
0:? 'int32_t_to_uint32_t' ( const uint)
0:? 4294967293 (const uint)
0:? 'int64_t_to_uint32_t' ( const uint)
0:? 4294967292 (const uint)
0:? 'uint8_t_to_uint32_t' ( const uint)
0:? 1 (const int)
0:? 'uint16_t_to_uint32_t' ( const uint)
0:? 2 (const int)
0:? 'uint32_t_to_uint32_t' ( const uint)
0:? 3 (const uint)
0:? 'uint64_t_to_uint32_t' ( const uint)
0:? 4 (const uint)
0:? 'float16_t_to_uint32_t' ( const uint)
0:? 42 (const uint)
0:? 'float32_t_to_uint32_t' ( const uint)
0:? 13 (const uint)
0:? 'float64_t_to_uint32_t' ( const uint)
0:? 4294967292 (const uint)
0:? 'bool_to_uint64_t' ( const uint64_t)
0:? 1 (const uint64_t)
0:? 'int8_t_to_uint64_t' ( const uint64_t)
0:? -1 (const int)
0:? 'int16_t_to_uint64_t' ( const uint64_t)
0:? -2 (const int)
0:? 'int32_t_to_uint64_t' ( const uint64_t)
0:? 18446744073709551613 (const uint64_t)
0:? 'int64_t_to_uint64_t' ( const uint64_t)
0:? 18446744073709551612 (const uint64_t)
0:? 'uint8_t_to_uint64_t' ( const uint64_t)
0:? 1 (const int)
0:? 'uint16_t_to_uint64_t' ( const uint64_t)
0:? 2 (const int)
0:? 'uint32_t_to_uint64_t' ( const uint64_t)
0:? 3 (const uint64_t)
0:? 'uint64_t_to_uint64_t' ( const uint64_t)
0:? 4 (const uint64_t)
0:? 'float16_t_to_uint64_t' ( const uint64_t)
0:? 42 (const uint64_t)
0:? 'float32_t_to_uint64_t' ( const uint64_t)
0:? 13 (const uint64_t)
0:? 'float64_t_to_uint64_t' ( const uint64_t)
0:? 18446744073709551612 (const uint64_t)
0:? 'bool_to_float16_t' ( const float16_t)
0:? 1.000000
0:? 'int8_t_to_float16_t' ( const float16_t)
0:? -1 (const int)
0:? 'int16_t_to_float16_t' ( const float16_t)
0:? -2 (const int)
0:? 'int32_t_to_float16_t' ( const float16_t)
0:? -3.000000
0:? 'int64_t_to_float16_t' ( const float16_t)
0:? -4.000000
0:? 'uint8_t_to_float16_t' ( const float16_t)
0:? 1 (const int)
0:? 'uint16_t_to_float16_t' ( const float16_t)
0:? 2 (const int)
0:? 'uint32_t_to_float16_t' ( const float16_t)
0:? 3.000000
0:? 'uint64_t_to_float16_t' ( const float16_t)
0:? 4.000000
0:? 'float16_t_to_float16_t' ( const float16_t)
0:? 42.000000
0:? 'float32_t_to_float16_t' ( const float16_t)
0:? 13.000000
0:? 'float64_t_to_float16_t' ( const float16_t)
0:? -4.000000
0:? 'bool_to_float32_t' ( const float)
0:? 1.000000
0:? 'int8_t_to_float32_t' ( const float)
0:? -1 (const int)
0:? 'int16_t_to_float32_t' ( const float)
0:? -2 (const int)
0:? 'int32_t_to_float32_t' ( const float)
0:? -3.000000
0:? 'int64_t_to_float32_t' ( const float)
0:? -4.000000
0:? 'uint8_t_to_float32_t' ( const float)
0:? 1 (const int)
0:? 'uint16_t_to_float32_t' ( const float)
0:? 2 (const int)
0:? 'uint32_t_to_float32_t' ( const float)
0:? 3.000000
0:? 'uint64_t_to_float32_t' ( const float)
0:? 4.000000
0:? 'float16_t_to_float32_t' ( const float)
0:? 42.000000
0:? 'float32_t_to_float32_t' ( const float)
0:? 13.000000
0:? 'float64_t_to_float32_t' ( const float)
0:? -4.000000
0:? 'bool_to_float64_t' ( const double)
0:? 1.000000
0:? 'int8_t_to_float64_t' ( const double)
0:? -1 (const int)
0:? 'int16_t_to_float64_t' ( const double)
0:? -2 (const int)
0:? 'int32_t_to_float64_t' ( const double)
0:? -3.000000
0:? 'int64_t_to_float64_t' ( const double)
0:? -4.000000
0:? 'uint8_t_to_float64_t' ( const double)
0:? 1 (const int)
0:? 'uint16_t_to_float64_t' ( const double)
0:? 2 (const int)
0:? 'uint32_t_to_float64_t' ( const double)
0:? 3.000000
0:? 'uint64_t_to_float64_t' ( const double)
0:? 4.000000
0:? 'float16_t_to_float64_t' ( const double)
0:? 42.000000
0:? 'float32_t_to_float64_t' ( const double)
0:? 13.000000
0:? 'float64_t_to_float64_t' ( const double)
0:? -4.000000
Linked compute stage:
Shader version: 450
Requested GL_KHX_shader_explicit_arithmetic_types
local_size = (1, 1, 1)
0:? Sequence
0:48 Function Definition: main( ( global void)
0:48 Function Parameters:
0:? Linker Objects
0:? 'bool_init' ( const bool)
0:? true (const bool)
0:? 'int8_t_init' ( const int8_t)
0:? -1 (const int)
0:? 'int16_t_init' ( const int16_t)
0:? -2 (const int)
0:? 'int32_t_init' ( const int)
0:? -3 (const int)
0:? 'int64_t_init' ( const int64_t)
0:? -4 (const int64_t)
0:? 'uint8_t_init' ( const uint8_t)
0:? 1 (const int)
0:? 'uint16_t_init' ( const uint16_t)
0:? 2 (const int)
0:? 'uint32_t_init' ( const uint)
0:? 3 (const uint)
0:? 'uint64_t_init' ( const uint64_t)
0:? 4 (const uint64_t)
0:? 'float16_t_init' ( const float16_t)
0:? 42.000000
0:? 'float32_t_init' ( const float)
0:? 13.000000
0:? 'float64_t_init' ( const double)
0:? -4.000000
0:? 'bool_to_bool' ( const bool)
0:? true (const bool)
0:? 'int8_t_to_bool' ( const bool)
0:? -1 (const int)
0:? 'int16_t_to_bool' ( const bool)
0:? -2 (const int)
0:? 'int32_t_to_bool' ( const bool)
0:? true (const bool)
0:? 'int64_t_to_bool' ( const bool)
0:? true (const bool)
0:? 'uint8_t_to_bool' ( const bool)
0:? 1 (const int)
0:? 'uint16_t_to_bool' ( const bool)
0:? 2 (const int)
0:? 'uint32_t_to_bool' ( const bool)
0:? true (const bool)
0:? 'uint64_t_to_bool' ( const bool)
0:? true (const bool)
0:? 'float16_t_to_bool' ( const bool)
0:? true (const bool)
0:? 'float32_t_to_bool' ( const bool)
0:? true (const bool)
0:? 'float64_t_to_bool' ( const bool)
0:? true (const bool)
0:? 'bool_to_int8_t' ( const int8_t)
0:? true (const bool)
0:? 'int8_t_to_int8_t' ( const int8_t)
0:? -1 (const int)
0:? 'int16_t_to_int8_t' ( const int8_t)
0:? -2 (const int)
0:? 'int32_t_to_int8_t' ( const int8_t)
0:? -3 (const int)
0:? 'int64_t_to_int8_t' ( const int8_t)
0:? -4 (const int64_t)
0:? 'uint8_t_to_int8_t' ( const int8_t)
0:? 1 (const int)
0:? 'uint16_t_to_int8_t' ( const int8_t)
0:? 2 (const int)
0:? 'uint32_t_to_int8_t' ( const int8_t)
0:? 3 (const uint)
0:? 'uint64_t_to_int8_t' ( const int8_t)
0:? 4 (const uint64_t)
0:? 'float16_t_to_int8_t' ( const int8_t)
0:? 42.000000
0:? 'float32_t_to_int8_t' ( const int8_t)
0:? 13.000000
0:? 'float64_t_to_int8_t' ( const int8_t)
0:? -4.000000
0:? 'bool_to_int16_t' ( const int16_t)
0:? true (const bool)
0:? 'int8_t_to_int16_t' ( const int16_t)
0:? -1 (const int)
0:? 'int16_t_to_int16_t' ( const int16_t)
0:? -2 (const int)
0:? 'int32_t_to_int16_t' ( const int16_t)
0:? -3 (const int)
0:? 'int64_t_to_int16_t' ( const int16_t)
0:? -4 (const int64_t)
0:? 'uint8_t_to_int16_t' ( const int16_t)
0:? 1 (const int)
0:? 'uint16_t_to_int16_t' ( const int16_t)
0:? 2 (const int)
0:? 'uint32_t_to_int16_t' ( const int16_t)
0:? 3 (const uint)
0:? 'uint64_t_to_int16_t' ( const int16_t)
0:? 4 (const uint64_t)
0:? 'float16_t_to_int16_t' ( const int16_t)
0:? 42.000000
0:? 'float32_t_to_int16_t' ( const int16_t)
0:? 13.000000
0:? 'float64_t_to_int16_t' ( const int16_t)
0:? -4.000000
0:? 'bool_to_int32_t' ( const int)
0:? 1 (const int)
0:? 'int8_t_to_int32_t' ( const int)
0:? -1 (const int)
0:? 'int16_t_to_int32_t' ( const int)
0:? -2 (const int)
0:? 'int32_t_to_int32_t' ( const int)
0:? -3 (const int)
0:? 'int64_t_to_int32_t' ( const int)
0:? -4 (const int)
0:? 'uint8_t_to_int32_t' ( const int)
0:? 1 (const int)
0:? 'uint16_t_to_int32_t' ( const int)
0:? 2 (const int)
0:? 'uint32_t_to_int32_t' ( const int)
0:? 3 (const int)
0:? 'uint64_t_to_int32_t' ( const int)
0:? 4 (const int)
0:? 'float16_t_to_int32_t' ( const int)
0:? 42 (const int)
0:? 'float32_t_to_int32_t' ( const int)
0:? 13 (const int)
0:? 'float64_t_to_int32_t' ( const int)
0:? -4 (const int)
0:? 'bool_to_int64_t' ( const int64_t)
0:? 1 (const int64_t)
0:? 'int8_t_to_int64_t' ( const int64_t)
0:? -1 (const int)
0:? 'int16_t_to_int64_t' ( const int64_t)
0:? -2 (const int)
0:? 'int32_t_to_int64_t' ( const int64_t)
0:? -3 (const int64_t)
0:? 'int64_t_to_int64_t' ( const int64_t)
0:? -4 (const int64_t)
0:? 'uint8_t_to_int64_t' ( const int64_t)
0:? 1 (const int)
0:? 'uint16_t_to_int64_t' ( const int64_t)
0:? 2 (const int)
0:? 'uint32_t_to_int64_t' ( const int64_t)
0:? 3 (const int64_t)
0:? 'uint64_t_to_int64_t' ( const int64_t)
0:? 4 (const int64_t)
0:? 'float16_t_to_int64_t' ( const int64_t)
0:? 42 (const int64_t)
0:? 'float32_t_to_int64_t' ( const int64_t)
0:? 13 (const int64_t)
0:? 'float64_t_to_int64_t' ( const int64_t)
0:? -4 (const int64_t)
0:? 'bool_to_uint8_t' ( const uint8_t)
0:? true (const bool)
0:? 'int8_t_to_uint8_t' ( const uint8_t)
0:? -1 (const int)
0:? 'int16_t_to_uint8_t' ( const uint8_t)
0:? -2 (const int)
0:? 'int32_t_to_uint8_t' ( const uint8_t)
0:? -3 (const int)
0:? 'int64_t_to_uint8_t' ( const uint8_t)
0:? -4 (const int64_t)
0:? 'uint8_t_to_uint8_t' ( const uint8_t)
0:? 1 (const int)
0:? 'uint16_t_to_uint8_t' ( const uint8_t)
0:? 2 (const int)
0:? 'uint32_t_to_uint8_t' ( const uint8_t)
0:? 3 (const uint)
0:? 'uint64_t_to_uint8_t' ( const uint8_t)
0:? 4 (const uint64_t)
0:? 'float16_t_to_uint8_t' ( const uint8_t)
0:? 42.000000
0:? 'float32_t_to_uint8_t' ( const uint8_t)
0:? 13.000000
0:? 'float64_t_to_uint8_t' ( const uint8_t)
0:? -4.000000
0:? 'bool_to_uint16_t' ( const uint16_t)
0:? true (const bool)
0:? 'int8_t_to_uint16_t' ( const uint16_t)
0:? -1 (const int)
0:? 'int16_t_to_uint16_t' ( const uint16_t)
0:? -2 (const int)
0:? 'int32_t_to_uint16_t' ( const uint16_t)
0:? -3 (const int)
0:? 'int64_t_to_uint16_t' ( const uint16_t)
0:? -4 (const int64_t)
0:? 'uint8_t_to_uint16_t' ( const uint16_t)
0:? 1 (const int)
0:? 'uint16_t_to_uint16_t' ( const uint16_t)
0:? 2 (const int)
0:? 'uint32_t_to_uint16_t' ( const uint16_t)
0:? 3 (const uint)
0:? 'uint64_t_to_uint16_t' ( const uint16_t)
0:? 4 (const uint64_t)
0:? 'float16_t_to_uint16_t' ( const uint16_t)
0:? 42.000000
0:? 'float32_t_to_uint16_t' ( const uint16_t)
0:? 13.000000
0:? 'float64_t_to_uint16_t' ( const uint16_t)
0:? -4.000000
0:? 'bool_to_uint32_t' ( const uint)
0:? 1 (const uint)
0:? 'int8_t_to_uint32_t' ( const uint)
0:? -1 (const int)
0:? 'int16_t_to_uint32_t' ( const uint)
0:? -2 (const int)
0:? 'int32_t_to_uint32_t' ( const uint)
0:? 4294967293 (const uint)
0:? 'int64_t_to_uint32_t' ( const uint)
0:? 4294967292 (const uint)
0:? 'uint8_t_to_uint32_t' ( const uint)
0:? 1 (const int)
0:? 'uint16_t_to_uint32_t' ( const uint)
0:? 2 (const int)
0:? 'uint32_t_to_uint32_t' ( const uint)
0:? 3 (const uint)
0:? 'uint64_t_to_uint32_t' ( const uint)
0:? 4 (const uint)
0:? 'float16_t_to_uint32_t' ( const uint)
0:? 42 (const uint)
0:? 'float32_t_to_uint32_t' ( const uint)
0:? 13 (const uint)
0:? 'float64_t_to_uint32_t' ( const uint)
0:? 4294967292 (const uint)
0:? 'bool_to_uint64_t' ( const uint64_t)
0:? 1 (const uint64_t)
0:? 'int8_t_to_uint64_t' ( const uint64_t)
0:? -1 (const int)
0:? 'int16_t_to_uint64_t' ( const uint64_t)
0:? -2 (const int)
0:? 'int32_t_to_uint64_t' ( const uint64_t)
0:? 18446744073709551613 (const uint64_t)
0:? 'int64_t_to_uint64_t' ( const uint64_t)
0:? 18446744073709551612 (const uint64_t)
0:? 'uint8_t_to_uint64_t' ( const uint64_t)
0:? 1 (const int)
0:? 'uint16_t_to_uint64_t' ( const uint64_t)
0:? 2 (const int)
0:? 'uint32_t_to_uint64_t' ( const uint64_t)
0:? 3 (const uint64_t)
0:? 'uint64_t_to_uint64_t' ( const uint64_t)
0:? 4 (const uint64_t)
0:? 'float16_t_to_uint64_t' ( const uint64_t)
0:? 42 (const uint64_t)
0:? 'float32_t_to_uint64_t' ( const uint64_t)
0:? 13 (const uint64_t)
0:? 'float64_t_to_uint64_t' ( const uint64_t)
0:? 18446744073709551612 (const uint64_t)
0:? 'bool_to_float16_t' ( const float16_t)
0:? 1.000000
0:? 'int8_t_to_float16_t' ( const float16_t)
0:? -1 (const int)
0:? 'int16_t_to_float16_t' ( const float16_t)
0:? -2 (const int)
0:? 'int32_t_to_float16_t' ( const float16_t)
0:? -3.000000
0:? 'int64_t_to_float16_t' ( const float16_t)
0:? -4.000000
0:? 'uint8_t_to_float16_t' ( const float16_t)
0:? 1 (const int)
0:? 'uint16_t_to_float16_t' ( const float16_t)
0:? 2 (const int)
0:? 'uint32_t_to_float16_t' ( const float16_t)
0:? 3.000000
0:? 'uint64_t_to_float16_t' ( const float16_t)
0:? 4.000000
0:? 'float16_t_to_float16_t' ( const float16_t)
0:? 42.000000
0:? 'float32_t_to_float16_t' ( const float16_t)
0:? 13.000000
0:? 'float64_t_to_float16_t' ( const float16_t)
0:? -4.000000
0:? 'bool_to_float32_t' ( const float)
0:? 1.000000
0:? 'int8_t_to_float32_t' ( const float)
0:? -1 (const int)
0:? 'int16_t_to_float32_t' ( const float)
0:? -2 (const int)
0:? 'int32_t_to_float32_t' ( const float)
0:? -3.000000
0:? 'int64_t_to_float32_t' ( const float)
0:? -4.000000
0:? 'uint8_t_to_float32_t' ( const float)
0:? 1 (const int)
0:? 'uint16_t_to_float32_t' ( const float)
0:? 2 (const int)
0:? 'uint32_t_to_float32_t' ( const float)
0:? 3.000000
0:? 'uint64_t_to_float32_t' ( const float)
0:? 4.000000
0:? 'float16_t_to_float32_t' ( const float)
0:? 42.000000
0:? 'float32_t_to_float32_t' ( const float)
0:? 13.000000
0:? 'float64_t_to_float32_t' ( const float)
0:? -4.000000
0:? 'bool_to_float64_t' ( const double)
0:? 1.000000
0:? 'int8_t_to_float64_t' ( const double)
0:? -1 (const int)
0:? 'int16_t_to_float64_t' ( const double)
0:? -2 (const int)
0:? 'int32_t_to_float64_t' ( const double)
0:? -3.000000
0:? 'int64_t_to_float64_t' ( const double)
0:? -4.000000
0:? 'uint8_t_to_float64_t' ( const double)
0:? 1 (const int)
0:? 'uint16_t_to_float64_t' ( const double)
0:? 2 (const int)
0:? 'uint32_t_to_float64_t' ( const double)
0:? 3.000000
0:? 'uint64_t_to_float64_t' ( const double)
0:? 4.000000
0:? 'float16_t_to_float64_t' ( const double)
0:? 42.000000
0:? 'float32_t_to_float64_t' ( const double)
0:? 13.000000
0:? 'float64_t_to_float64_t' ( const double)
0:? -4.000000
Test/baseResults/spv.16bitstorage-int.frag.out
View file @
2173c650
spv.16bitstorage-int.frag
spv.16bitstorage-int.frag
// Module Version 10000
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80007
// Id's are bound by 17
1
// Id's are bound by 17
2
Capability Shader
Capability Shader
Capability StorageUniformBufferBlock16
Capability StorageUniformBufferBlock16
...
@@ -204,7 +204,10 @@ spv.16bitstorage-int.frag
...
@@ -204,7 +204,10 @@ spv.16bitstorage-int.frag
114: 20(int) Constant 7
114: 20(int) Constant 7
115: 20(int) Constant 6
115: 20(int) Constant 6
116: TypePointer Uniform 20(int)
116: TypePointer Uniform 20(int)
166: 39(ivec2) ConstantComposite 32 33
166: 6(int16_t) Constant 1
167: 6(int16_t) Constant 2
168: 7(i16vec2) ConstantComposite 166 167
170: 6(int16_t) Constant 3
4(main): 2 Function None 3
4(main): 2 Function None 3
5: Label
5: Label
69(x0): 68(ptr) Variable Function
69(x0): 68(ptr) Variable Function
...
@@ -324,11 +327,9 @@ spv.16bitstorage-int.frag
...
@@ -324,11 +327,9 @@ spv.16bitstorage-int.frag
164: 6(int16_t) Load 163
164: 6(int16_t) Load 163
165: 28(ptr) AccessChain 19(b2) 21
165: 28(ptr) AccessChain 19(b2) 21
Store 165 164
Store 165 164
167: 7(i16vec2) SConvert 166
169: 42(ptr) AccessChain 19(b2) 32
168: 42(ptr) AccessChain 19(b2) 32
Store 169 168
Store 168 167
171: 28(ptr) AccessChain 19(b2) 21
169: 6(int16_t) SConvert 58
Store 171 170
170: 28(ptr) AccessChain 19(b2) 21
Store 170 169
Return
Return
FunctionEnd
FunctionEnd
Test/baseResults/spv.16bitstorage-uint.frag.out
View file @
2173c650
...
@@ -205,8 +205,10 @@ spv.16bitstorage-uint.frag
...
@@ -205,8 +205,10 @@ spv.16bitstorage-uint.frag
115: 20(int) Constant 7
115: 20(int) Constant 7
116: 20(int) Constant 6
116: 20(int) Constant 6
117: TypePointer Uniform 9(int)
117: TypePointer Uniform 9(int)
167: 39(ivec2) ConstantComposite 82 10
167: 6(int16_t) Constant 1
170: 9(int) Constant 3
168: 6(int16_t) Constant 2
169: 7(i16vec2) ConstantComposite 167 168
171: 6(int16_t) Constant 3
4(main): 2 Function None 3
4(main): 2 Function None 3
5: Label
5: Label
69(x0): 68(ptr) Variable Function
69(x0): 68(ptr) Variable Function
...
@@ -326,10 +328,8 @@ spv.16bitstorage-uint.frag
...
@@ -326,10 +328,8 @@ spv.16bitstorage-uint.frag
165: 6(int16_t) Load 164
165: 6(int16_t) Load 164
166: 28(ptr) AccessChain 19(b2) 21
166: 28(ptr) AccessChain 19(b2) 21
Store 166 165
Store 166 165
168: 7(i16vec2) UConvert 167
170: 42(ptr) AccessChain 19(b2) 32
169: 42(ptr) AccessChain 19(b2) 32
Store 170 169
Store 169 168
171: 6(int16_t) UConvert 170
172: 28(ptr) AccessChain 19(b2) 21
172: 28(ptr) AccessChain 19(b2) 21
Store 172 171
Store 172 171
Return
Return
...
...
Test/baseResults/spv.16bitstorage.frag.out
View file @
2173c650
spv.16bitstorage.frag
spv.16bitstorage.frag
// Module Version 10000
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80007
// Id's are bound by 17
3
// Id's are bound by 17
2
Capability Shader
Capability Shader
Capability StorageUniformBufferBlock16
Capability StorageUniformBufferBlock16
...
@@ -204,9 +204,10 @@ spv.16bitstorage.frag
...
@@ -204,9 +204,10 @@ spv.16bitstorage.frag
114: 20(int) Constant 7
114: 20(int) Constant 7
115: 20(int) Constant 6
115: 20(int) Constant 6
116: TypePointer Uniform 20(int)
116: TypePointer Uniform 20(int)
166: 37(float) Constant 1073741824
166:6(float16_t) Constant 15360
167: 40(fvec2) ConstantComposite 83 166
167:6(float16_t) Constant 16384
170: 37(float) Constant 1077936128
168: 7(f16vec2) ConstantComposite 166 167
170:6(float16_t) Constant 16896
4(main): 2 Function None 3
4(main): 2 Function None 3
5: Label
5: Label
70(x0): 69(ptr) Variable Function
70(x0): 69(ptr) Variable Function
...
@@ -326,11 +327,9 @@ spv.16bitstorage.frag
...
@@ -326,11 +327,9 @@ spv.16bitstorage.frag
164:6(float16_t) Load 163
164:6(float16_t) Load 163
165: 28(ptr) AccessChain 19(b2) 21
165: 28(ptr) AccessChain 19(b2) 21
Store 165 164
Store 165 164
168: 7(f16vec2) FConvert 167
169: 43(ptr) AccessChain 19(b2) 32
169: 43(ptr) AccessChain 19(b2) 32
Store 169 168
Store 169 168
171:6(float16_t) FConvert 170
171: 28(ptr) AccessChain 19(b2) 21
172: 28(ptr) AccessChain 19(b2) 21
Store 171 170
Store 172 171
Return
Return
FunctionEnd
FunctionEnd
Test/baseResults/spv.8bitstorage-int.frag.out
View file @
2173c650
spv.8bitstorage-int.frag
spv.8bitstorage-int.frag
// Module Version 10000
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80007
// Id's are bound by 17
1
// Id's are bound by 17
2
Capability Shader
Capability Shader
Capability CapabilityUniformAndStorageBuffer8BitAccess
Capability CapabilityUniformAndStorageBuffer8BitAccess
...
@@ -203,7 +203,10 @@ spv.8bitstorage-int.frag
...
@@ -203,7 +203,10 @@ spv.8bitstorage-int.frag
114: 20(int) Constant 7
114: 20(int) Constant 7
115: 20(int) Constant 6
115: 20(int) Constant 6
116: TypePointer Uniform 20(int)
116: TypePointer Uniform 20(int)
166: 39(ivec2) ConstantComposite 32 33
166: 6(int8_t) Constant 1
167: 6(int8_t) Constant 2
168: 7(i8vec2) ConstantComposite 166 167
170: 6(int8_t) Constant 3
4(main): 2 Function None 3
4(main): 2 Function None 3
5: Label
5: Label
69(x0): 68(ptr) Variable Function
69(x0): 68(ptr) Variable Function
...
@@ -323,11 +326,9 @@ spv.8bitstorage-int.frag
...
@@ -323,11 +326,9 @@ spv.8bitstorage-int.frag
164: 6(int8_t) Load 163
164: 6(int8_t) Load 163
165: 28(ptr) AccessChain 19(b2) 21
165: 28(ptr) AccessChain 19(b2) 21
Store 165 164
Store 165 164
167: 7(i8vec2) SConvert 166
169: 42(ptr) AccessChain 19(b2) 32
168: 42(ptr) AccessChain 19(b2) 32
Store 169 168
Store 168 167
171: 28(ptr) AccessChain 19(b2) 21
169: 6(int8_t) SConvert 58
Store 171 170
170: 28(ptr) AccessChain 19(b2) 21
Store 170 169
Return
Return
FunctionEnd
FunctionEnd
Test/baseResults/spv.8bitstorage-uint.frag.out
View file @
2173c650
...
@@ -204,8 +204,10 @@ spv.8bitstorage-uint.frag
...
@@ -204,8 +204,10 @@ spv.8bitstorage-uint.frag
115: 20(int) Constant 7
115: 20(int) Constant 7
116: 20(int) Constant 6
116: 20(int) Constant 6
117: TypePointer Uniform 9(int)
117: TypePointer Uniform 9(int)
167: 39(ivec2) ConstantComposite 82 10
167: 6(int8_t) Constant 1
170: 9(int) Constant 3
168: 6(int8_t) Constant 2
169: 7(i8vec2) ConstantComposite 167 168
171: 6(int8_t) Constant 3
4(main): 2 Function None 3
4(main): 2 Function None 3
5: Label
5: Label
69(x0): 68(ptr) Variable Function
69(x0): 68(ptr) Variable Function
...
@@ -325,10 +327,8 @@ spv.8bitstorage-uint.frag
...
@@ -325,10 +327,8 @@ spv.8bitstorage-uint.frag
165: 6(int8_t) Load 164
165: 6(int8_t) Load 164
166: 28(ptr) AccessChain 19(b2) 21
166: 28(ptr) AccessChain 19(b2) 21
Store 166 165
Store 166 165
168: 7(i8vec2) UConvert 167
170: 42(ptr) AccessChain 19(b2) 32
169: 42(ptr) AccessChain 19(b2) 32
Store 170 169
Store 169 168
171: 6(int8_t) UConvert 170
172: 28(ptr) AccessChain 19(b2) 21
172: 28(ptr) AccessChain 19(b2) 21
Store 172 171
Store 172 171
Return
Return
...
...
Test/constantUnaryConversion.comp
0 → 100644
View file @
2173c650
#version 450
#extension GL_KHX_shader_explicit_arithmetic_types : require
const bool bool_init = true;
const int8_t int8_t_init = int8_t(-1);
const int16_t int16_t_init = int16_t(-2);
const int32_t int32_t_init = int32_t(-3);
const int64_t int64_t_init = int64_t(-4);
const uint8_t uint8_t_init = uint8_t(1);
const uint16_t uint16_t_init = uint16_t(2);
const uint32_t uint32_t_init = uint32_t(3);
const uint64_t uint64_t_init = uint64_t(4);
const float16_t float16_t_init = float16_t(42.0);
const float32_t float32_t_init = float32_t(13.0);
const float64_t float64_t_init = float64_t(-4.0);
#define TYPE_TO_TYPE(x, y) \
const x y##_to_##x = x(y##_init)
#define TYPE_TO(x) \
TYPE_TO_TYPE(x, bool); \
TYPE_TO_TYPE(x, int8_t); \
TYPE_TO_TYPE(x, int16_t); \
TYPE_TO_TYPE(x, int32_t); \
TYPE_TO_TYPE(x, int64_t); \
TYPE_TO_TYPE(x, uint8_t); \
TYPE_TO_TYPE(x, uint16_t); \
TYPE_TO_TYPE(x, uint32_t); \
TYPE_TO_TYPE(x, uint64_t); \
TYPE_TO_TYPE(x, float16_t); \
TYPE_TO_TYPE(x, float32_t); \
TYPE_TO_TYPE(x, float64_t)
TYPE_TO(bool);
TYPE_TO(int8_t);
TYPE_TO(int16_t);
TYPE_TO(int32_t);
TYPE_TO(int64_t);
TYPE_TO(uint8_t);
TYPE_TO(uint16_t);
TYPE_TO(uint32_t);
TYPE_TO(uint64_t);
TYPE_TO(float16_t);
TYPE_TO(float32_t);
TYPE_TO(float64_t);
void main() {}
glslang/MachineIndependent/Constant.cpp
View file @
2173c650
...
@@ -670,6 +670,279 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType)
...
@@ -670,6 +670,279 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType)
break
;
break
;
}
}
case
EOpConvInt8ToBool
:
newConstArray
[
i
].
setBConst
(
unionArray
[
i
].
getI8Const
());
break
;
case
EOpConvUint8ToBool
:
newConstArray
[
i
].
setBConst
(
unionArray
[
i
].
getU8Const
());
break
;
case
EOpConvInt16ToBool
:
newConstArray
[
i
].
setBConst
(
unionArray
[
i
].
getI16Const
());
break
;
case
EOpConvUint16ToBool
:
newConstArray
[
i
].
setBConst
(
unionArray
[
i
].
getU16Const
());
break
;
case
EOpConvIntToBool
:
newConstArray
[
i
].
setBConst
(
unionArray
[
i
].
getIConst
());
break
;
case
EOpConvUintToBool
:
newConstArray
[
i
].
setBConst
(
unionArray
[
i
].
getUConst
());
break
;
case
EOpConvInt64ToBool
:
newConstArray
[
i
].
setBConst
(
unionArray
[
i
].
getI64Const
());
break
;
case
EOpConvUint64ToBool
:
newConstArray
[
i
].
setBConst
(
unionArray
[
i
].
getI64Const
());
break
;
case
EOpConvFloat16ToBool
:
newConstArray
[
i
].
setBConst
(
unionArray
[
i
].
getDConst
());
break
;
case
EOpConvFloatToBool
:
newConstArray
[
i
].
setBConst
(
unionArray
[
i
].
getDConst
());
break
;
case
EOpConvDoubleToBool
:
newConstArray
[
i
].
setBConst
(
unionArray
[
i
].
getDConst
());
break
;
case
EOpConvBoolToInt8
:
newConstArray
[
i
].
setI8Const
(
unionArray
[
i
].
getBConst
());
break
;
case
EOpConvBoolToUint8
:
newConstArray
[
i
].
setU8Const
(
unionArray
[
i
].
getBConst
());
break
;
case
EOpConvBoolToInt16
:
newConstArray
[
i
].
setI16Const
(
unionArray
[
i
].
getBConst
());
break
;
case
EOpConvBoolToUint16
:
newConstArray
[
i
].
setU16Const
(
unionArray
[
i
].
getBConst
());
break
;
case
EOpConvBoolToInt
:
newConstArray
[
i
].
setIConst
(
unionArray
[
i
].
getBConst
());
break
;
case
EOpConvBoolToUint
:
newConstArray
[
i
].
setUConst
(
unionArray
[
i
].
getBConst
());
break
;
case
EOpConvBoolToInt64
:
newConstArray
[
i
].
setI64Const
(
unionArray
[
i
].
getBConst
());
break
;
case
EOpConvBoolToUint64
:
newConstArray
[
i
].
setU64Const
(
unionArray
[
i
].
getBConst
());
break
;
case
EOpConvBoolToFloat16
:
newConstArray
[
i
].
setDConst
(
unionArray
[
i
].
getBConst
());
break
;
case
EOpConvBoolToFloat
:
newConstArray
[
i
].
setDConst
(
unionArray
[
i
].
getBConst
());
break
;
case
EOpConvBoolToDouble
:
newConstArray
[
i
].
setDConst
(
unionArray
[
i
].
getBConst
());
break
;
case
EOpConvInt8ToInt16
:
newConstArray
[
i
].
setI16Const
(
unionArray
[
i
].
getI8Const
());
break
;
case
EOpConvInt8ToInt
:
newConstArray
[
i
].
setIConst
(
unionArray
[
i
].
getI8Const
());
break
;
case
EOpConvInt8ToInt64
:
newConstArray
[
i
].
setI64Const
(
unionArray
[
i
].
getI8Const
());
break
;
case
EOpConvInt8ToUint8
:
newConstArray
[
i
].
setU8Const
(
unionArray
[
i
].
getI8Const
());
break
;
case
EOpConvInt8ToUint16
:
newConstArray
[
i
].
setU16Const
(
unionArray
[
i
].
getI8Const
());
break
;
case
EOpConvInt8ToUint
:
newConstArray
[
i
].
setUConst
(
unionArray
[
i
].
getI8Const
());
break
;
case
EOpConvInt8ToUint64
:
newConstArray
[
i
].
setU64Const
(
unionArray
[
i
].
getI8Const
());
break
;
case
EOpConvUint8ToInt8
:
newConstArray
[
i
].
setI8Const
(
unionArray
[
i
].
getU8Const
());
break
;
case
EOpConvUint8ToInt16
:
newConstArray
[
i
].
setI16Const
(
unionArray
[
i
].
getU8Const
());
break
;
case
EOpConvUint8ToInt
:
newConstArray
[
i
].
setIConst
(
unionArray
[
i
].
getU8Const
());
break
;
case
EOpConvUint8ToInt64
:
newConstArray
[
i
].
setI64Const
(
unionArray
[
i
].
getU8Const
());
break
;
case
EOpConvUint8ToUint16
:
newConstArray
[
i
].
setU16Const
(
unionArray
[
i
].
getU8Const
());
break
;
case
EOpConvUint8ToUint
:
newConstArray
[
i
].
setUConst
(
unionArray
[
i
].
getU8Const
());
break
;
case
EOpConvUint8ToUint64
:
newConstArray
[
i
].
setU64Const
(
unionArray
[
i
].
getU8Const
());
break
;
case
EOpConvInt8ToFloat16
:
newConstArray
[
i
].
setDConst
(
unionArray
[
i
].
getI8Const
());
break
;
case
EOpConvInt8ToFloat
:
newConstArray
[
i
].
setDConst
(
unionArray
[
i
].
getI8Const
());
break
;
case
EOpConvInt8ToDouble
:
newConstArray
[
i
].
setDConst
(
unionArray
[
i
].
getI8Const
());
break
;
case
EOpConvUint8ToFloat16
:
newConstArray
[
i
].
setDConst
(
unionArray
[
i
].
getU8Const
());
break
;
case
EOpConvUint8ToFloat
:
newConstArray
[
i
].
setDConst
(
unionArray
[
i
].
getU8Const
());
break
;
case
EOpConvUint8ToDouble
:
newConstArray
[
i
].
setDConst
(
unionArray
[
i
].
getU8Const
());
break
;
case
EOpConvInt16ToInt8
:
newConstArray
[
i
].
setI8Const
(
static_cast
<
int8_t
>
(
unionArray
[
i
].
getI16Const
()));
break
;
case
EOpConvInt16ToInt
:
newConstArray
[
i
].
setIConst
(
unionArray
[
i
].
getI16Const
());
break
;
case
EOpConvInt16ToInt64
:
newConstArray
[
i
].
setI64Const
(
unionArray
[
i
].
getI16Const
());
break
;
case
EOpConvInt16ToUint8
:
newConstArray
[
i
].
setU8Const
(
static_cast
<
uint8_t
>
(
unionArray
[
i
].
getI16Const
()));
break
;
case
EOpConvInt16ToUint16
:
newConstArray
[
i
].
setU16Const
(
unionArray
[
i
].
getI16Const
());
break
;
case
EOpConvInt16ToUint
:
newConstArray
[
i
].
setUConst
(
unionArray
[
i
].
getI16Const
());
break
;
case
EOpConvInt16ToUint64
:
newConstArray
[
i
].
setU64Const
(
unionArray
[
i
].
getI16Const
());
break
;
case
EOpConvUint16ToInt8
:
newConstArray
[
i
].
setI8Const
(
static_cast
<
int8_t
>
(
unionArray
[
i
].
getU16Const
()));
break
;
case
EOpConvUint16ToInt16
:
newConstArray
[
i
].
setI16Const
(
unionArray
[
i
].
getU16Const
());
break
;
case
EOpConvUint16ToInt
:
newConstArray
[
i
].
setIConst
(
unionArray
[
i
].
getU16Const
());
break
;
case
EOpConvUint16ToInt64
:
newConstArray
[
i
].
setI64Const
(
unionArray
[
i
].
getU16Const
());
break
;
case
EOpConvUint16ToUint8
:
newConstArray
[
i
].
setU8Const
(
static_cast
<
uint8_t
>
(
unionArray
[
i
].
getU16Const
()));
break
;
case
EOpConvUint16ToUint
:
newConstArray
[
i
].
setUConst
(
unionArray
[
i
].
getU16Const
());
break
;
case
EOpConvUint16ToUint64
:
newConstArray
[
i
].
setU64Const
(
unionArray
[
i
].
getU16Const
());
break
;
case
EOpConvInt16ToFloat16
:
newConstArray
[
i
].
setDConst
(
unionArray
[
i
].
getI16Const
());
break
;
case
EOpConvInt16ToFloat
:
newConstArray
[
i
].
setDConst
(
unionArray
[
i
].
getI16Const
());
break
;
case
EOpConvInt16ToDouble
:
newConstArray
[
i
].
setDConst
(
unionArray
[
i
].
getI16Const
());
break
;
case
EOpConvUint16ToFloat16
:
newConstArray
[
i
].
setDConst
(
unionArray
[
i
].
getU16Const
());
break
;
case
EOpConvUint16ToFloat
:
newConstArray
[
i
].
setDConst
(
unionArray
[
i
].
getU16Const
());
break
;
case
EOpConvUint16ToDouble
:
newConstArray
[
i
].
setDConst
(
unionArray
[
i
].
getU16Const
());
break
;
case
EOpConvIntToInt8
:
newConstArray
[
i
].
setI8Const
(
unionArray
[
i
].
getIConst
());
break
;
case
EOpConvIntToInt16
:
newConstArray
[
i
].
setI16Const
(
unionArray
[
i
].
getIConst
());
break
;
case
EOpConvIntToInt64
:
newConstArray
[
i
].
setI64Const
(
unionArray
[
i
].
getIConst
());
break
;
case
EOpConvIntToUint8
:
newConstArray
[
i
].
setU8Const
(
unionArray
[
i
].
getIConst
());
break
;
case
EOpConvIntToUint16
:
newConstArray
[
i
].
setU16Const
(
unionArray
[
i
].
getIConst
());
break
;
case
EOpConvIntToUint
:
newConstArray
[
i
].
setUConst
(
unionArray
[
i
].
getIConst
());
break
;
case
EOpConvIntToUint64
:
newConstArray
[
i
].
setU64Const
(
unionArray
[
i
].
getIConst
());
break
;
case
EOpConvUintToInt8
:
newConstArray
[
i
].
setI8Const
(
unionArray
[
i
].
getUConst
());
break
;
case
EOpConvUintToInt16
:
newConstArray
[
i
].
setI16Const
(
unionArray
[
i
].
getUConst
());
break
;
case
EOpConvUintToInt
:
newConstArray
[
i
].
setIConst
(
unionArray
[
i
].
getUConst
());
break
;
case
EOpConvUintToInt64
:
newConstArray
[
i
].
setI64Const
(
unionArray
[
i
].
getUConst
());
break
;
case
EOpConvUintToUint8
:
newConstArray
[
i
].
setU8Const
(
unionArray
[
i
].
getUConst
());
break
;
case
EOpConvUintToUint16
:
newConstArray
[
i
].
setU16Const
(
unionArray
[
i
].
getUConst
());
break
;
case
EOpConvUintToUint64
:
newConstArray
[
i
].
setU64Const
(
unionArray
[
i
].
getUConst
());
break
;
case
EOpConvIntToFloat16
:
newConstArray
[
i
].
setDConst
(
unionArray
[
i
].
getIConst
());
break
;
case
EOpConvIntToFloat
:
newConstArray
[
i
].
setDConst
(
unionArray
[
i
].
getIConst
());
break
;
case
EOpConvIntToDouble
:
newConstArray
[
i
].
setDConst
(
unionArray
[
i
].
getIConst
());
break
;
case
EOpConvUintToFloat16
:
newConstArray
[
i
].
setDConst
(
unionArray
[
i
].
getUConst
());
break
;
case
EOpConvUintToFloat
:
newConstArray
[
i
].
setDConst
(
unionArray
[
i
].
getUConst
());
break
;
case
EOpConvUintToDouble
:
newConstArray
[
i
].
setDConst
(
unionArray
[
i
].
getUConst
());
break
;
case
EOpConvInt64ToInt8
:
newConstArray
[
i
].
setI8Const
(
static_cast
<
int8_t
>
(
unionArray
[
i
].
getI64Const
()));
break
;
case
EOpConvInt64ToInt16
:
newConstArray
[
i
].
setI16Const
(
static_cast
<
int16_t
>
(
unionArray
[
i
].
getI64Const
()));
break
;
case
EOpConvInt64ToInt
:
newConstArray
[
i
].
setIConst
(
static_cast
<
int32_t
>
(
unionArray
[
i
].
getI64Const
()));
break
;
case
EOpConvInt64ToUint8
:
newConstArray
[
i
].
setU8Const
(
static_cast
<
uint8_t
>
(
unionArray
[
i
].
getI64Const
()));
break
;
case
EOpConvInt64ToUint16
:
newConstArray
[
i
].
setU16Const
(
static_cast
<
uint16_t
>
(
unionArray
[
i
].
getI64Const
()));
break
;
case
EOpConvInt64ToUint
:
newConstArray
[
i
].
setUConst
(
static_cast
<
uint32_t
>
(
unionArray
[
i
].
getI64Const
()));
break
;
case
EOpConvInt64ToUint64
:
newConstArray
[
i
].
setU64Const
(
unionArray
[
i
].
getI64Const
());
break
;
case
EOpConvUint64ToInt8
:
newConstArray
[
i
].
setI8Const
(
static_cast
<
int8_t
>
(
unionArray
[
i
].
getU64Const
()));
break
;
case
EOpConvUint64ToInt16
:
newConstArray
[
i
].
setI16Const
(
static_cast
<
int16_t
>
(
unionArray
[
i
].
getU64Const
()));
break
;
case
EOpConvUint64ToInt
:
newConstArray
[
i
].
setIConst
(
static_cast
<
int32_t
>
(
unionArray
[
i
].
getU64Const
()));
break
;
case
EOpConvUint64ToInt64
:
newConstArray
[
i
].
setI64Const
(
unionArray
[
i
].
getU64Const
());
break
;
case
EOpConvUint64ToUint8
:
newConstArray
[
i
].
setU8Const
(
static_cast
<
uint8_t
>
(
unionArray
[
i
].
getU64Const
()));
break
;
case
EOpConvUint64ToUint16
:
newConstArray
[
i
].
setU16Const
(
static_cast
<
uint16_t
>
(
unionArray
[
i
].
getU64Const
()));
break
;
case
EOpConvUint64ToUint
:
newConstArray
[
i
].
setUConst
(
static_cast
<
uint32_t
>
(
unionArray
[
i
].
getU64Const
()));
break
;
case
EOpConvInt64ToFloat16
:
newConstArray
[
i
].
setDConst
(
static_cast
<
double
>
(
unionArray
[
i
].
getI64Const
()));
break
;
case
EOpConvInt64ToFloat
:
newConstArray
[
i
].
setDConst
(
static_cast
<
double
>
(
unionArray
[
i
].
getI64Const
()));
break
;
case
EOpConvInt64ToDouble
:
newConstArray
[
i
].
setDConst
(
static_cast
<
double
>
(
unionArray
[
i
].
getI64Const
()));
break
;
case
EOpConvUint64ToFloat16
:
newConstArray
[
i
].
setDConst
(
static_cast
<
double
>
(
unionArray
[
i
].
getU64Const
()));
break
;
case
EOpConvUint64ToFloat
:
newConstArray
[
i
].
setDConst
(
static_cast
<
double
>
(
unionArray
[
i
].
getU64Const
()));
break
;
case
EOpConvUint64ToDouble
:
newConstArray
[
i
].
setDConst
(
static_cast
<
double
>
(
unionArray
[
i
].
getU64Const
()));
break
;
case
EOpConvFloat16ToInt8
:
newConstArray
[
i
].
setI8Const
(
static_cast
<
int8_t
>
(
unionArray
[
i
].
getDConst
()));
break
;
case
EOpConvFloat16ToInt16
:
newConstArray
[
i
].
setI16Const
(
static_cast
<
int16_t
>
(
unionArray
[
i
].
getDConst
()));
break
;
case
EOpConvFloat16ToInt
:
newConstArray
[
i
].
setIConst
(
static_cast
<
int32_t
>
(
unionArray
[
i
].
getDConst
()));
break
;
case
EOpConvFloat16ToInt64
:
newConstArray
[
i
].
setI64Const
(
static_cast
<
int64_t
>
(
unionArray
[
i
].
getDConst
()));
break
;
case
EOpConvFloat16ToUint8
:
newConstArray
[
i
].
setU8Const
(
static_cast
<
uint8_t
>
(
unionArray
[
i
].
getDConst
()));
break
;
case
EOpConvFloat16ToUint16
:
newConstArray
[
i
].
setU16Const
(
static_cast
<
uint16_t
>
(
unionArray
[
i
].
getDConst
()));
break
;
case
EOpConvFloat16ToUint
:
newConstArray
[
i
].
setUConst
(
static_cast
<
uint32_t
>
(
unionArray
[
i
].
getDConst
()));
break
;
case
EOpConvFloat16ToUint64
:
newConstArray
[
i
].
setU64Const
(
static_cast
<
uint64_t
>
(
unionArray
[
i
].
getDConst
()));
break
;
case
EOpConvFloat16ToFloat
:
newConstArray
[
i
].
setDConst
(
unionArray
[
i
].
getDConst
());
break
;
case
EOpConvFloat16ToDouble
:
newConstArray
[
i
].
setDConst
(
unionArray
[
i
].
getDConst
());
break
;
case
EOpConvFloatToInt8
:
newConstArray
[
i
].
setI8Const
(
static_cast
<
int8_t
>
(
unionArray
[
i
].
getDConst
()));
break
;
case
EOpConvFloatToInt16
:
newConstArray
[
i
].
setI16Const
(
static_cast
<
int16_t
>
(
unionArray
[
i
].
getDConst
()));
break
;
case
EOpConvFloatToInt
:
newConstArray
[
i
].
setIConst
(
static_cast
<
int32_t
>
(
unionArray
[
i
].
getDConst
()));
break
;
case
EOpConvFloatToInt64
:
newConstArray
[
i
].
setI64Const
(
static_cast
<
int64_t
>
(
unionArray
[
i
].
getDConst
()));
break
;
case
EOpConvFloatToUint8
:
newConstArray
[
i
].
setU8Const
(
static_cast
<
uint8_t
>
(
unionArray
[
i
].
getDConst
()));
break
;
case
EOpConvFloatToUint16
:
newConstArray
[
i
].
setU16Const
(
static_cast
<
uint16_t
>
(
unionArray
[
i
].
getDConst
()));
break
;
case
EOpConvFloatToUint
:
newConstArray
[
i
].
setUConst
(
static_cast
<
uint32_t
>
(
unionArray
[
i
].
getDConst
()));
break
;
case
EOpConvFloatToUint64
:
newConstArray
[
i
].
setU64Const
(
static_cast
<
uint64_t
>
(
unionArray
[
i
].
getDConst
()));
break
;
case
EOpConvFloatToFloat16
:
newConstArray
[
i
].
setDConst
(
unionArray
[
i
].
getDConst
());
break
;
case
EOpConvFloatToDouble
:
newConstArray
[
i
].
setDConst
(
unionArray
[
i
].
getDConst
());
break
;
case
EOpConvDoubleToInt8
:
newConstArray
[
i
].
setI8Const
(
static_cast
<
int8_t
>
(
unionArray
[
i
].
getDConst
()));
break
;
case
EOpConvDoubleToInt16
:
newConstArray
[
i
].
setI16Const
(
static_cast
<
int16_t
>
(
unionArray
[
i
].
getDConst
()));
break
;
case
EOpConvDoubleToInt
:
newConstArray
[
i
].
setIConst
(
static_cast
<
int32_t
>
(
unionArray
[
i
].
getDConst
()));
break
;
case
EOpConvDoubleToInt64
:
newConstArray
[
i
].
setI64Const
(
static_cast
<
int64_t
>
(
unionArray
[
i
].
getDConst
()));
break
;
case
EOpConvDoubleToUint8
:
newConstArray
[
i
].
setU8Const
(
static_cast
<
uint8_t
>
(
unionArray
[
i
].
getDConst
()));
break
;
case
EOpConvDoubleToUint16
:
newConstArray
[
i
].
setU16Const
(
static_cast
<
uint16_t
>
(
unionArray
[
i
].
getDConst
()));
break
;
case
EOpConvDoubleToUint
:
newConstArray
[
i
].
setUConst
(
static_cast
<
uint32_t
>
(
unionArray
[
i
].
getDConst
()));
break
;
case
EOpConvDoubleToUint64
:
newConstArray
[
i
].
setU64Const
(
static_cast
<
uint64_t
>
(
unionArray
[
i
].
getDConst
()));
break
;
case
EOpConvDoubleToFloat16
:
newConstArray
[
i
].
setDConst
(
unionArray
[
i
].
getDConst
());
break
;
case
EOpConvDoubleToFloat
:
newConstArray
[
i
].
setDConst
(
unionArray
[
i
].
getDConst
());
break
;
// TODO: 3.0 Functionality: unary constant folding: the rest of the ops have to be fleshed out
// TODO: 3.0 Functionality: unary constant folding: the rest of the ops have to be fleshed out
case
EOpSinh
:
case
EOpSinh
:
...
...
glslang/MachineIndependent/Intermediate.cpp
View file @
2173c650
...
@@ -489,7 +489,7 @@ bool TIntermediate::isConversionAllowed(TOperator op, TIntermTyped* node) const
...
@@ -489,7 +489,7 @@ bool TIntermediate::isConversionAllowed(TOperator op, TIntermTyped* node) const
// This is 'mechanism' here, it does any conversion told.
// This is 'mechanism' here, it does any conversion told.
// It is about basic type, not about shape.
// It is about basic type, not about shape.
// The policy comes from the shader or the calling code.
// The policy comes from the shader or the calling code.
TInterm
Unary
*
TIntermediate
::
createConversion
(
TBasicType
convertTo
,
TIntermTyped
*
node
)
const
TInterm
Typed
*
TIntermediate
::
createConversion
(
TBasicType
convertTo
,
TIntermTyped
*
node
)
const
{
{
//
//
// Add a new newNode for the conversion.
// Add a new newNode for the conversion.
...
@@ -712,7 +712,11 @@ TIntermUnary* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped
...
@@ -712,7 +712,11 @@ TIntermUnary* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped
TType
newType
(
convertTo
,
EvqTemporary
,
node
->
getVectorSize
(),
node
->
getMatrixCols
(),
node
->
getMatrixRows
());
TType
newType
(
convertTo
,
EvqTemporary
,
node
->
getVectorSize
(),
node
->
getMatrixCols
(),
node
->
getMatrixRows
());
newNode
=
addUnaryNode
(
newOp
,
node
,
node
->
getLoc
(),
newType
);
newNode
=
addUnaryNode
(
newOp
,
node
,
node
->
getLoc
(),
newType
);
// TODO: it seems that some unary folding operations should occur here, but are not
if
(
node
->
getAsConstantUnion
())
{
TIntermTyped
*
folded
=
node
->
getAsConstantUnion
()
->
fold
(
newOp
,
newType
);
if
(
folded
)
return
folded
;
}
// Propagate specialization-constant-ness, if allowed
// Propagate specialization-constant-ness, if allowed
if
(
node
->
getType
().
getQualifier
().
isSpecConstant
()
&&
isSpecializationOperation
(
*
newNode
))
if
(
node
->
getType
().
getQualifier
().
isSpecConstant
()
&&
isSpecializationOperation
(
*
newNode
))
...
@@ -1021,7 +1025,7 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
...
@@ -1021,7 +1025,7 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
//
//
// Add a new newNode for the conversion.
// Add a new newNode for the conversion.
//
//
TInterm
Unary
*
newNode
=
createConversion
(
promoteTo
,
node
);
TInterm
Typed
*
newNode
=
createConversion
(
promoteTo
,
node
);
return
newNode
;
return
newNode
;
}
}
...
...
glslang/MachineIndependent/localintermediate.h
View file @
2173c650
...
@@ -732,7 +732,7 @@ protected:
...
@@ -732,7 +732,7 @@ protected:
bool
specConstantPropagates
(
const
TIntermTyped
&
,
const
TIntermTyped
&
);
bool
specConstantPropagates
(
const
TIntermTyped
&
,
const
TIntermTyped
&
);
void
performTextureUpgradeAndSamplerRemovalTransformation
(
TIntermNode
*
root
);
void
performTextureUpgradeAndSamplerRemovalTransformation
(
TIntermNode
*
root
);
bool
isConversionAllowed
(
TOperator
op
,
TIntermTyped
*
node
)
const
;
bool
isConversionAllowed
(
TOperator
op
,
TIntermTyped
*
node
)
const
;
TInterm
Unary
*
createConversion
(
TBasicType
convertTo
,
TIntermTyped
*
node
)
const
;
TInterm
Typed
*
createConversion
(
TBasicType
convertTo
,
TIntermTyped
*
node
)
const
;
std
::
tuple
<
TBasicType
,
TBasicType
>
getConversionDestinatonType
(
TBasicType
type0
,
TBasicType
type1
,
TOperator
op
)
const
;
std
::
tuple
<
TBasicType
,
TBasicType
>
getConversionDestinatonType
(
TBasicType
type0
,
TBasicType
type1
,
TOperator
op
)
const
;
bool
extensionRequested
(
const
char
*
extension
)
const
{
return
requestedExtensions
.
find
(
extension
)
!=
requestedExtensions
.
end
();}
bool
extensionRequested
(
const
char
*
extension
)
const
{
return
requestedExtensions
.
find
(
extension
)
!=
requestedExtensions
.
end
();}
static
const
char
*
getResourceName
(
TResourceType
);
static
const
char
*
getResourceName
(
TResourceType
);
...
...
gtests/AST.FromFile.cpp
View file @
2173c650
...
@@ -231,6 +231,7 @@ INSTANTIATE_TEST_CASE_P(
...
@@ -231,6 +231,7 @@ INSTANTIATE_TEST_CASE_P(
"precise_struct_block.vert"
,
"precise_struct_block.vert"
,
"maxClipDistances.vert"
,
"maxClipDistances.vert"
,
"findFunction.frag"
,
"findFunction.frag"
,
"constantUnaryConversion.comp"
})),
})),
FileNameAsCustomTestSuffix
FileNameAsCustomTestSuffix
);
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment