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
6113723e
Commit
6113723e
authored
May 03, 2021
by
Panagiotis Christopoulos Charitos
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add support for 64bit integer types and 64bit integer vector types to bitCount() builtin.
Fixes #2630
parent
56b17b2f
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
95 additions
and
63 deletions
+95
-63
spv.int64.frag.out
Test/baseResults/spv.int64.frag.out
+77
-63
spv.int64.frag
Test/spv.int64.frag
+8
-0
Initialize.cpp
glslang/MachineIndependent/Initialize.cpp
+10
-0
No files found.
Test/baseResults/spv.int64.frag.out
View file @
6113723e
...
...
@@ -2,7 +2,7 @@ spv.int64.frag
Validation failed
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 4
8
9
// Id's are bound by 4
9
9
Capability Shader
Capability Float64
...
...
@@ -47,45 +47,45 @@ Validation failed
Name 392 "iv"
Name 397 "uv"
Name 401 "bv"
Name 4
6
2 "Block"
MemberName 4
6
2(Block) 0 "i64v"
MemberName 4
6
2(Block) 1 "u64"
Name 4
6
4 "block"
Name 4
6
5 "si64"
Name 4
6
6 "su64"
Name 4
6
7 "si"
Name 4
6
8 "su"
Name 4
6
9 "sb"
Name 4
7
0 "su64inc"
Name 4
7
1 "i64_to_b"
Name 4
7
2 "u64_to_b"
Name 4
7
3 "b_to_i64"
Name 4
7
4 "b_to_u64"
Name 4
7
5 "i64_to_i"
Name 4
7
6 "i_to_i64"
Name 4
7
7 "u64_to_u"
Name 4
7
8 "u_to_u64"
Name 4
7
9 "u64_to_i64"
Name 4
8
0 "i64_to_u64"
Name 4
8
2 "u64_to_i"
Name 4
8
4 "i_to_u64"
Name 4
8
6 "i64_to_u"
Name 4
8
8 "u_to_i64"
Name 4
7
2 "Block"
MemberName 4
7
2(Block) 0 "i64v"
MemberName 4
7
2(Block) 1 "u64"
Name 4
7
4 "block"
Name 4
7
5 "si64"
Name 4
7
6 "su64"
Name 4
7
7 "si"
Name 4
7
8 "su"
Name 4
7
9 "sb"
Name 4
8
0 "su64inc"
Name 4
8
1 "i64_to_b"
Name 4
8
2 "u64_to_b"
Name 4
8
3 "b_to_i64"
Name 4
8
4 "b_to_u64"
Name 4
8
5 "i64_to_i"
Name 4
8
6 "i_to_i64"
Name 4
8
7 "u64_to_u"
Name 4
8
8 "u_to_u64"
Name 4
8
9 "u64_to_i64"
Name 4
9
0 "i64_to_u64"
Name 4
9
2 "u64_to_i"
Name 4
9
4 "i_to_u64"
Name 4
9
6 "i64_to_u"
Name 4
9
8 "u_to_i64"
MemberDecorate 28(Uniforms) 0 Offset 0
Decorate 28(Uniforms) Block
Decorate 30 DescriptorSet 0
Decorate 30 Binding 0
MemberDecorate 4
6
2(Block) 0 Offset 0
MemberDecorate 4
6
2(Block) 1 Offset 24
Decorate 4
6
2(Block) Block
Decorate 4
6
4(block) DescriptorSet 0
Decorate 4
6
4(block) Binding 1
Decorate 4
6
5(si64) SpecId 100
Decorate 4
6
6(su64) SpecId 101
Decorate 4
6
7(si) SpecId 102
Decorate 4
6
8(su) SpecId 103
Decorate 4
6
9(sb) SpecId 104
Decorate 4
7
0(su64inc) SpecId 105
MemberDecorate 4
7
2(Block) 0 Offset 0
MemberDecorate 4
7
2(Block) 1 Offset 24
Decorate 4
7
2(Block) Block
Decorate 4
7
4(block) DescriptorSet 0
Decorate 4
7
4(block) Binding 1
Decorate 4
7
5(si64) SpecId 100
Decorate 4
7
6(su64) SpecId 101
Decorate 4
7
7(si) SpecId 102
Decorate 4
7
8(su) SpecId 103
Decorate 4
7
9(sb) SpecId 104
Decorate 4
8
0(su64inc) SpecId 105
2: TypeVoid
3: TypeFunction 2
14: TypeInt 64 0
...
...
@@ -166,33 +166,33 @@ Validation failed
390: 74(ivec2) ConstantComposite 388 389
395: 81(ivec2) ConstantComposite 217 22
400: TypePointer Function 368(bvec3)
4
6
2(Block): TypeStruct 136(i64vec3) 14(int64_t)
4
63: TypePointer Uniform 46
2(Block)
4
64(block): 46
3(ptr) Variable Uniform
4
6
5(si64): 18(int64_t) SpecConstant 4294967286 4294967295
4
6
6(su64): 14(int64_t) SpecConstant 20 0
4
6
7(si): 31(int) SpecConstant 4294967291
4
6
8(su): 21(int) SpecConstant 4
4
6
9(sb): 55(bool) SpecConstantTrue
4
70(su64inc): 14(int64_t) SpecConstantOp 128 46
6(su64) 70
4
71(i64_to_b): 55(bool) SpecConstantOp 171 46
5(si64) 69
4
72(u64_to_b): 55(bool) SpecConstantOp 171 46
6(su64) 69
4
73(b_to_i64): 18(int64_t) SpecConstantOp 169 46
9(sb) 61 60
4
74(b_to_u64): 14(int64_t) SpecConstantOp 169 46
9(sb) 70 69
4
75(i64_to_i): 31(int) SpecConstantOp 114 46
5(si64)
4
76(i_to_i64): 18(int64_t) SpecConstantOp 114 46
7(si)
4
77(u64_to_u): 21(int) SpecConstantOp 113 46
6(su64)
4
78(u_to_u64): 14(int64_t) SpecConstantOp 113 46
8(su)
4
79(u64_to_i64): 18(int64_t) SpecConstantOp 128 46
6(su64) 69
4
80(i64_to_u64): 14(int64_t) SpecConstantOp 128 46
5(si64) 69
4
81: 21(int) SpecConstantOp 113 46
6(su64)
4
82(u64_to_i): 31(int) SpecConstantOp 128 48
1 227
4
83: 18(int64_t) SpecConstantOp 114 46
7(si)
4
84(i_to_u64): 14(int64_t) SpecConstantOp 128 48
3 69
4
85: 31(int) SpecConstantOp 114 46
5(si64)
4
86(i64_to_u): 21(int) SpecConstantOp 128 48
5 227
4
87: 14(int64_t) SpecConstantOp 113 46
8(su)
4
88(u_to_i64): 18(int64_t) SpecConstantOp 128 48
7 69
4
7
2(Block): TypeStruct 136(i64vec3) 14(int64_t)
4
73: TypePointer Uniform 47
2(Block)
4
74(block): 47
3(ptr) Variable Uniform
4
7
5(si64): 18(int64_t) SpecConstant 4294967286 4294967295
4
7
6(su64): 14(int64_t) SpecConstant 20 0
4
7
7(si): 31(int) SpecConstant 4294967291
4
7
8(su): 21(int) SpecConstant 4
4
7
9(sb): 55(bool) SpecConstantTrue
4
80(su64inc): 14(int64_t) SpecConstantOp 128 47
6(su64) 70
4
81(i64_to_b): 55(bool) SpecConstantOp 171 47
5(si64) 69
4
82(u64_to_b): 55(bool) SpecConstantOp 171 47
6(su64) 69
4
83(b_to_i64): 18(int64_t) SpecConstantOp 169 47
9(sb) 61 60
4
84(b_to_u64): 14(int64_t) SpecConstantOp 169 47
9(sb) 70 69
4
85(i64_to_i): 31(int) SpecConstantOp 114 47
5(si64)
4
86(i_to_i64): 18(int64_t) SpecConstantOp 114 47
7(si)
4
87(u64_to_u): 21(int) SpecConstantOp 113 47
6(su64)
4
88(u_to_u64): 14(int64_t) SpecConstantOp 113 47
8(su)
4
89(u64_to_i64): 18(int64_t) SpecConstantOp 128 47
6(su64) 69
4
90(i64_to_u64): 14(int64_t) SpecConstantOp 128 47
5(si64) 69
4
91: 21(int) SpecConstantOp 113 47
6(su64)
4
92(u64_to_i): 31(int) SpecConstantOp 128 49
1 227
4
93: 18(int64_t) SpecConstantOp 114 47
7(si)
4
94(i_to_u64): 14(int64_t) SpecConstantOp 128 49
3 69
4
95: 31(int) SpecConstantOp 114 47
5(si64)
4
96(i64_to_u): 21(int) SpecConstantOp 128 49
5 227
4
97: 14(int64_t) SpecConstantOp 113 47
8(su)
4
98(u_to_i64): 18(int64_t) SpecConstantOp 128 49
7 69
4(main): 2 Function None 3
5: Label
Store 16(u64Max) 17
...
...
@@ -681,5 +681,19 @@ Validation failed
460: 368(bvec3) Load 401(bv)
461: 368(bvec3) VectorShuffle 460 459 3 4 2
Store 401(bv) 461
462: 14(int64_t) Load 301(u64)
463: 18(int64_t) ExtInst 1(GLSL.std.450) 73(FindILsb) 462
Store 289(i64) 463
464: 14(int64_t) Load 301(u64)
465: 65(i64vec2) CompositeConstruct 464 464
466: 52(i64vec2) ExtInst 1(GLSL.std.450) 73(FindILsb) 465
Store 286(i64v) 466
467: 14(int64_t) Load 301(u64)
468: 18(int64_t) BitCount 467
Store 289(i64) 468
469: 14(int64_t) Load 301(u64)
470: 65(i64vec2) CompositeConstruct 469 469
471: 52(i64vec2) BitCount 470
Store 286(i64v) 471
Return
FunctionEnd
Test/spv.int64.frag
View file @
6113723e
...
...
@@ -228,6 +228,14 @@ void builtinFuncs()
// notEqual()
bv
=
notEqual
(
u64v
,
u64vec3
(
u64
));
bv
.
xy
=
notEqual
(
i64v
,
i64vec2
(
i64
));
// findLSB()
i64
=
findLSB
(
u64
);
i64v
=
findLSB
(
u64vec2
(
u64
));
// bitCount()
i64
=
bitCount
(
u64
);
i64v
=
bitCount
(
u64vec2
(
u64
));
}
// Type conversion for specialization constant
...
...
glslang/MachineIndependent/Initialize.cpp
View file @
6113723e
...
...
@@ -1261,6 +1261,16 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"bvec3 notEqual(u64vec3, u64vec3);"
"bvec4 notEqual(u64vec4, u64vec4);"
"int64_t bitCount(int64_t);"
"i64vec2 bitCount(i64vec2);"
"i64vec3 bitCount(i64vec3);"
"i64vec4 bitCount(i64vec4);"
"int64_t bitCount(uint64_t);"
"i64vec2 bitCount(u64vec2);"
"i64vec3 bitCount(u64vec3);"
"i64vec4 bitCount(u64vec4);"
"int64_t findLSB(int64_t);"
"i64vec2 findLSB(i64vec2);"
"i64vec3 findLSB(i64vec3);"
...
...
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