Merge pull request #1457 from KhronosGroup/parse-floats

Tests: Add more string -> float tests. Related to #1456.
This commit is contained in:
John Kessenich 2018-07-27 12:46:35 -07:00 committed by GitHub
commit e99a26810f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 178 additions and 7 deletions

View File

@ -1,5 +1,6 @@
stringToDouble.vert stringToDouble.vert
Shader version: 460 Shader version: 460
Requested GL_KHX_shader_explicit_arithmetic_types_float16
0:? Sequence 0:? Sequence
0:3 Function Definition: main( ( global void) 0:3 Function Definition: main( ( global void)
0:3 Function Parameters: 0:3 Function Parameters:
@ -440,10 +441,80 @@ Shader version: 460
0:95 Constant: 0:95 Constant:
0:95 5.7089907708238e+45 0:95 5.7089907708238e+45
0:97 Sequence 0:97 Sequence
0:97 move second child to first child ( temp double) 0:97 move second child to first child ( temp float)
0:97 'pi' ( temp double) 0:97 'pi1' ( temp float)
0:97 Constant: 0:97 Constant:
0:97 3.141593 0:97 3.141593
0:98 Sequence
0:98 move second child to first child ( temp float)
0:98 'pi2' ( temp float)
0:98 Constant:
0:98 3.141593
0:99 Sequence
0:99 move second child to first child ( temp float)
0:99 'pi3' ( temp float)
0:99 Constant:
0:99 3.141593
0:101 Sequence
0:101 move second child to first child ( temp double)
0:101 'dpi1' ( temp double)
0:101 Constant:
0:101 3.141593
0:102 Sequence
0:102 move second child to first child ( temp double)
0:102 'dpi2' ( temp double)
0:102 Constant:
0:102 3.141593
0:103 Sequence
0:103 move second child to first child ( temp double)
0:103 'dpi3' ( temp double)
0:103 Constant:
0:103 3.141593
0:105 Sequence
0:105 move second child to first child ( temp float)
0:105 'dfpi1' ( temp float)
0:105 Constant:
0:105 3.141593
0:106 Sequence
0:106 move second child to first child ( temp float)
0:106 'dfpi2' ( temp float)
0:106 Constant:
0:106 3.141593
0:107 Sequence
0:107 move second child to first child ( temp float)
0:107 'dfpi3' ( temp float)
0:107 Constant:
0:107 3.141593
0:109 Sequence
0:109 move second child to first child ( temp double)
0:109 'lfpi1' ( temp double)
0:109 Constant:
0:109 3.141593
0:110 Sequence
0:110 move second child to first child ( temp double)
0:110 'lfpi2' ( temp double)
0:110 Constant:
0:110 3.141593
0:111 Sequence
0:111 move second child to first child ( temp double)
0:111 'lfpi3' ( temp double)
0:111 Constant:
0:111 3.141593
0:113 Sequence
0:113 move second child to first child ( temp double)
0:113 'hfpi1' ( temp double)
0:113 Constant:
0:113 3.141593
0:114 Sequence
0:114 move second child to first child ( temp double)
0:114 'hfpi2' ( temp double)
0:114 Constant:
0:114 3.141593
0:115 Sequence
0:115 move second child to first child ( temp double)
0:115 'hfpi3' ( temp double)
0:115 Constant:
0:115 3.141593
0:? Linker Objects 0:? Linker Objects
0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_VertexID' ( gl_VertexId int VertexId)
0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
@ -453,6 +524,7 @@ Linked vertex stage:
Shader version: 460 Shader version: 460
Requested GL_KHX_shader_explicit_arithmetic_types_float16
0:? Sequence 0:? Sequence
0:3 Function Definition: main( ( global void) 0:3 Function Definition: main( ( global void)
0:3 Function Parameters: 0:3 Function Parameters:
@ -893,10 +965,80 @@ Shader version: 460
0:95 Constant: 0:95 Constant:
0:95 5.7089907708238e+45 0:95 5.7089907708238e+45
0:97 Sequence 0:97 Sequence
0:97 move second child to first child ( temp double) 0:97 move second child to first child ( temp float)
0:97 'pi' ( temp double) 0:97 'pi1' ( temp float)
0:97 Constant: 0:97 Constant:
0:97 3.141593 0:97 3.141593
0:98 Sequence
0:98 move second child to first child ( temp float)
0:98 'pi2' ( temp float)
0:98 Constant:
0:98 3.141593
0:99 Sequence
0:99 move second child to first child ( temp float)
0:99 'pi3' ( temp float)
0:99 Constant:
0:99 3.141593
0:101 Sequence
0:101 move second child to first child ( temp double)
0:101 'dpi1' ( temp double)
0:101 Constant:
0:101 3.141593
0:102 Sequence
0:102 move second child to first child ( temp double)
0:102 'dpi2' ( temp double)
0:102 Constant:
0:102 3.141593
0:103 Sequence
0:103 move second child to first child ( temp double)
0:103 'dpi3' ( temp double)
0:103 Constant:
0:103 3.141593
0:105 Sequence
0:105 move second child to first child ( temp float)
0:105 'dfpi1' ( temp float)
0:105 Constant:
0:105 3.141593
0:106 Sequence
0:106 move second child to first child ( temp float)
0:106 'dfpi2' ( temp float)
0:106 Constant:
0:106 3.141593
0:107 Sequence
0:107 move second child to first child ( temp float)
0:107 'dfpi3' ( temp float)
0:107 Constant:
0:107 3.141593
0:109 Sequence
0:109 move second child to first child ( temp double)
0:109 'lfpi1' ( temp double)
0:109 Constant:
0:109 3.141593
0:110 Sequence
0:110 move second child to first child ( temp double)
0:110 'lfpi2' ( temp double)
0:110 Constant:
0:110 3.141593
0:111 Sequence
0:111 move second child to first child ( temp double)
0:111 'lfpi3' ( temp double)
0:111 Constant:
0:111 3.141593
0:113 Sequence
0:113 move second child to first child ( temp double)
0:113 'hfpi1' ( temp double)
0:113 Constant:
0:113 3.141593
0:114 Sequence
0:114 move second child to first child ( temp double)
0:114 'hfpi2' ( temp double)
0:114 Constant:
0:114 3.141593
0:115 Sequence
0:115 move second child to first child ( temp double)
0:115 'hfpi3' ( temp double)
0:115 Constant:
0:115 3.141593
0:? Linker Objects 0:? Linker Objects
0:? 'gl_VertexID' ( gl_VertexId int VertexId) 0:? 'gl_VertexID' ( gl_VertexId int VertexId)
0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)

View File

@ -1,5 +1,5 @@
#version 460 #version 460
//#pragma glslang_binary_double_output #extension GL_KHX_shader_explicit_arithmetic_types_float16 : enable
void main() void main()
{ {
float w1 = 00000.000; float w1 = 00000.000;
@ -94,5 +94,23 @@ void main()
double b44 = 5708990770823839207320493820740630171355185151999e-3; double b44 = 5708990770823839207320493820740630171355185151999e-3;
double b45 = 5708990770823839207320493820740630171355185152001e-3; double b45 = 5708990770823839207320493820740630171355185152001e-3;
double pi = 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679; float pi1 = 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679f;
float pi2 = 3.14159265358979f;
float pi3 = 3.141592653589793f;
double dpi1 = 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679;
double dpi2 = 3.14159265358979;
double dpi3 = 3.141592653589793;
float dfpi1 = 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679f;
float dfpi2 = 3.14159265358979f;
float dfpi3 = 3.141592653589793f;
double lfpi1 = 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679LF;
double lfpi2 = 3.14159265358979Lf;
double lfpi3 = 3.141592653589793lF;
double hfpi1 = 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679hF;
double hfpi2 = 3.14159265358979hF;
double hfpi3 = 3.141592653589793hf;
} }

View File

@ -317,8 +317,19 @@ int TPpContext::lFloatConst(int len, int ch, TPpToken* ppToken)
} else { } else {
// slow path // slow path
ppToken->dval = 0.0; ppToken->dval = 0.0;
// remove suffix
TString numstr(ppToken->name);
if (numstr.back() == 'f' || numstr.back() == 'F')
numstr.pop_back();
if (numstr.back() == 'h' || numstr.back() == 'H')
numstr.pop_back();
if (numstr.back() == 'l' || numstr.back() == 'L')
numstr.pop_back();
// use platform library
strtodStream.clear(); strtodStream.clear();
strtodStream.str(ppToken->name); strtodStream.str(numstr.c_str());
strtodStream >> ppToken->dval; strtodStream >> ppToken->dval;
if (strtodStream.fail()) { if (strtodStream.fail()) {
// Assume failure combined with a large exponent was overflow, in // Assume failure combined with a large exponent was overflow, in