mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-05-14 03:11:29 +00:00
Change ast::Array to use an ast::Expression for its `size` field. The WGSL frontend now parses the array size as an `primary_expression`, and the Resolver is responsible for validating the expression is a signed or unsigned integer, and either a literal or a non-overridable module-scope constant. The Resolver evaluates the constant value of the size expression, and so the resolved sem::Array type still has a constant size as before. Fixed: tint:1068 Fixed: tint:1117 Change-Id: Icfa141482ea1e47ea8c21a25e9eb48221f176e9a Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/63061 Auto-Submit: James Price <jrprice@google.com> Kokoro: Kokoro <noreply+kokoro@google.com> Commit-Queue: James Price <jrprice@google.com> Reviewed-by: Ben Clayton <bclayton@google.com>
40 lines
1.6 KiB
Plaintext
40 lines
1.6 KiB
Plaintext
; SPIR-V
|
|
; Version: 1.3
|
|
; Generator: Google Tint Compiler; 0
|
|
; Bound: 19
|
|
; Schema: 0
|
|
OpCapability Shader
|
|
OpMemoryModel Logical GLSL450
|
|
OpEntryPoint Fragment %main "main"
|
|
OpExecutionMode %main OriginUpperLeft
|
|
OpName %slen "slen"
|
|
OpName %ulen "ulen"
|
|
OpName %main "main"
|
|
OpName %signed_literal "signed_literal"
|
|
OpName %unsigned_literal "unsigned_literal"
|
|
OpName %signed_constant "signed_constant"
|
|
OpName %unsigned_constant "unsigned_constant"
|
|
OpDecorate %_arr_float_ulen ArrayStride 4
|
|
%int = OpTypeInt 32 1
|
|
%slen = OpConstant %int 4
|
|
%uint = OpTypeInt 32 0
|
|
%ulen = OpConstant %uint 4
|
|
%void = OpTypeVoid
|
|
%5 = OpTypeFunction %void
|
|
%float = OpTypeFloat 32
|
|
%_arr_float_ulen = OpTypeArray %float %ulen
|
|
%_ptr_Function__arr_float_ulen = OpTypePointer Function %_arr_float_ulen
|
|
%13 = OpConstantNull %_arr_float_ulen
|
|
%main = OpFunction %void None %5
|
|
%8 = OpLabel
|
|
%signed_literal = OpVariable %_ptr_Function__arr_float_ulen Function %13
|
|
%unsigned_literal = OpVariable %_ptr_Function__arr_float_ulen Function %13
|
|
%signed_constant = OpVariable %_ptr_Function__arr_float_ulen Function %13
|
|
%unsigned_constant = OpVariable %_ptr_Function__arr_float_ulen Function %13
|
|
%17 = OpLoad %_arr_float_ulen %unsigned_constant
|
|
OpStore %signed_literal %17
|
|
%18 = OpLoad %_arr_float_ulen %unsigned_literal
|
|
OpStore %signed_constant %18
|
|
OpReturn
|
|
OpFunctionEnd
|