Files
wgpu/tests/out/ir/access.ron
teoxoy a730236b68 [wgsl-in] eagerly evaluate const-expressions
[wgsl-in] support const-expressions in attributes

allow `Splat` as an evaluated const-expression type
2023-10-12 13:13:26 +02:00

2320 lines
61 KiB
Plaintext

(
types: [
(
name: None,
inner: Scalar(
kind: Uint,
width: 4,
),
),
(
name: None,
inner: Vector(
size: Tri,
kind: Uint,
width: 4,
),
),
(
name: None,
inner: Scalar(
kind: Sint,
width: 4,
),
),
(
name: Some("GlobalConst"),
inner: Struct(
members: [
(
name: Some("a"),
ty: 1,
binding: None,
offset: 0,
),
(
name: Some("b"),
ty: 2,
binding: None,
offset: 16,
),
(
name: Some("c"),
ty: 3,
binding: None,
offset: 28,
),
],
span: 32,
),
),
(
name: Some("AlignedWrapper"),
inner: Struct(
members: [
(
name: Some("value"),
ty: 3,
binding: None,
offset: 0,
),
],
span: 8,
),
),
(
name: None,
inner: Matrix(
columns: Quad,
rows: Tri,
width: 4,
),
),
(
name: None,
inner: Matrix(
columns: Bi,
rows: Bi,
width: 4,
),
),
(
name: None,
inner: Array(
base: 7,
size: Constant(2),
stride: 16,
),
),
(
name: None,
inner: Atomic(
kind: Sint,
width: 4,
),
),
(
name: None,
inner: Array(
base: 9,
size: Constant(10),
stride: 4,
),
),
(
name: None,
inner: Vector(
size: Bi,
kind: Uint,
width: 4,
),
),
(
name: None,
inner: Array(
base: 11,
size: Constant(2),
stride: 8,
),
),
(
name: None,
inner: Array(
base: 5,
size: Dynamic,
stride: 8,
),
),
(
name: Some("Bar"),
inner: Struct(
members: [
(
name: Some("_matrix"),
ty: 6,
binding: None,
offset: 0,
),
(
name: Some("matrix_array"),
ty: 8,
binding: None,
offset: 64,
),
(
name: Some("atom"),
ty: 9,
binding: None,
offset: 96,
),
(
name: Some("atom_arr"),
ty: 10,
binding: None,
offset: 100,
),
(
name: Some("arr"),
ty: 12,
binding: None,
offset: 144,
),
(
name: Some("data"),
ty: 13,
binding: None,
offset: 160,
),
],
span: 176,
),
),
(
name: None,
inner: Matrix(
columns: Tri,
rows: Bi,
width: 4,
),
),
(
name: Some("Baz"),
inner: Struct(
members: [
(
name: Some("m"),
ty: 15,
binding: None,
offset: 0,
),
],
span: 24,
),
),
(
name: None,
inner: Vector(
size: Bi,
kind: Sint,
width: 4,
),
),
(
name: None,
inner: Vector(
size: Bi,
kind: Float,
width: 4,
),
),
(
name: None,
inner: Matrix(
columns: Quad,
rows: Bi,
width: 4,
),
),
(
name: None,
inner: Array(
base: 19,
size: Constant(2),
stride: 32,
),
),
(
name: Some("MatCx2InArray"),
inner: Struct(
members: [
(
name: Some("am"),
ty: 20,
binding: None,
offset: 0,
),
],
span: 64,
),
),
(
name: None,
inner: Scalar(
kind: Float,
width: 4,
),
),
(
name: None,
inner: Pointer(
base: 22,
space: Function,
),
),
(
name: None,
inner: Array(
base: 22,
size: Constant(10),
stride: 4,
),
),
(
name: None,
inner: Array(
base: 24,
size: Constant(5),
stride: 40,
),
),
(
name: None,
inner: Vector(
size: Quad,
kind: Float,
width: 4,
),
),
(
name: None,
inner: Pointer(
base: 3,
space: Storage(
access: ("LOAD | STORE"),
),
),
),
(
name: None,
inner: Array(
base: 3,
size: Constant(5),
stride: 4,
),
),
(
name: None,
inner: Vector(
size: Quad,
kind: Sint,
width: 4,
),
),
(
name: None,
inner: Vector(
size: Tri,
kind: Float,
width: 4,
),
),
(
name: None,
inner: Pointer(
base: 1,
space: WorkGroup,
),
),
(
name: None,
inner: Array(
base: 26,
size: Constant(2),
stride: 16,
),
),
(
name: None,
inner: Pointer(
base: 32,
space: Function,
),
),
],
special_types: (
ray_desc: None,
ray_intersection: None,
predeclared_types: {},
),
constants: [],
global_variables: [
(
name: Some("global_const"),
space: Private,
binding: None,
ty: 4,
init: Some(7),
),
(
name: Some("bar"),
space: Storage(
access: ("LOAD | STORE"),
),
binding: Some((
group: 0,
binding: 0,
)),
ty: 14,
init: None,
),
(
name: Some("baz"),
space: Uniform,
binding: Some((
group: 0,
binding: 1,
)),
ty: 16,
init: None,
),
(
name: Some("qux"),
space: Storage(
access: ("LOAD | STORE"),
),
binding: Some((
group: 0,
binding: 2,
)),
ty: 17,
init: None,
),
(
name: Some("nested_mat_cx2"),
space: Uniform,
binding: Some((
group: 0,
binding: 3,
)),
ty: 21,
init: None,
),
(
name: Some("val"),
space: WorkGroup,
binding: None,
ty: 1,
init: None,
),
],
const_expressions: [
Literal(U32(0)),
Literal(U32(0)),
Literal(U32(0)),
Literal(U32(0)),
Compose(
ty: 2,
components: [
2,
3,
4,
],
),
Literal(I32(0)),
Compose(
ty: 4,
components: [
1,
5,
6,
],
),
Literal(I32(8)),
Literal(I32(2)),
Literal(I32(10)),
Literal(I32(2)),
Literal(I32(0)),
Literal(I32(0)),
Literal(I32(0)),
Literal(I32(1)),
Literal(I32(0)),
Literal(I32(2)),
Literal(I32(2)),
Literal(I32(0)),
Literal(I32(3)),
Literal(I32(2)),
Literal(I32(2)),
Literal(I32(10)),
Literal(I32(5)),
Literal(I32(5)),
Literal(I32(10)),
Literal(I32(5)),
Literal(I32(0)),
Literal(I32(2)),
Literal(I32(2)),
Literal(I32(2)),
Literal(I32(2)),
Literal(I32(1)),
],
functions: [
(
name: Some("test_matrix_within_struct_accesses"),
arguments: [],
result: None,
local_variables: [
(
name: Some("idx"),
ty: 3,
init: None,
),
(
name: Some("t"),
ty: 16,
init: None,
),
],
expressions: [
Literal(I32(1)),
LocalVariable(1),
Literal(I32(1)),
Load(
pointer: 2,
),
Binary(
op: Subtract,
left: 4,
right: 3,
),
GlobalVariable(3),
AccessIndex(
base: 6,
index: 0,
),
Load(
pointer: 7,
),
GlobalVariable(3),
AccessIndex(
base: 9,
index: 0,
),
Literal(I32(0)),
AccessIndex(
base: 10,
index: 0,
),
Load(
pointer: 12,
),
GlobalVariable(3),
AccessIndex(
base: 14,
index: 0,
),
Load(
pointer: 2,
),
Access(
base: 15,
index: 16,
),
Load(
pointer: 17,
),
GlobalVariable(3),
AccessIndex(
base: 19,
index: 0,
),
Literal(I32(0)),
AccessIndex(
base: 20,
index: 0,
),
Literal(I32(1)),
AccessIndex(
base: 22,
index: 1,
),
Load(
pointer: 24,
),
GlobalVariable(3),
AccessIndex(
base: 26,
index: 0,
),
Literal(I32(0)),
AccessIndex(
base: 27,
index: 0,
),
Load(
pointer: 2,
),
Access(
base: 29,
index: 30,
),
Load(
pointer: 31,
),
GlobalVariable(3),
AccessIndex(
base: 33,
index: 0,
),
Load(
pointer: 2,
),
Access(
base: 34,
index: 35,
),
Literal(I32(1)),
AccessIndex(
base: 36,
index: 1,
),
Load(
pointer: 38,
),
GlobalVariable(3),
AccessIndex(
base: 40,
index: 0,
),
Load(
pointer: 2,
),
Access(
base: 41,
index: 42,
),
Load(
pointer: 2,
),
Access(
base: 43,
index: 44,
),
Load(
pointer: 45,
),
Literal(F32(1.0)),
Splat(
size: Bi,
value: 47,
),
Literal(F32(2.0)),
Splat(
size: Bi,
value: 49,
),
Literal(F32(3.0)),
Splat(
size: Bi,
value: 51,
),
Compose(
ty: 15,
components: [
48,
50,
52,
],
),
Compose(
ty: 16,
components: [
53,
],
),
LocalVariable(2),
Literal(I32(1)),
Load(
pointer: 2,
),
Binary(
op: Add,
left: 57,
right: 56,
),
AccessIndex(
base: 55,
index: 0,
),
Literal(F32(6.0)),
Splat(
size: Bi,
value: 60,
),
Literal(F32(5.0)),
Splat(
size: Bi,
value: 62,
),
Literal(F32(4.0)),
Splat(
size: Bi,
value: 64,
),
Compose(
ty: 15,
components: [
61,
63,
65,
],
),
AccessIndex(
base: 55,
index: 0,
),
Literal(I32(0)),
AccessIndex(
base: 67,
index: 0,
),
Literal(F32(9.0)),
Splat(
size: Bi,
value: 70,
),
AccessIndex(
base: 55,
index: 0,
),
Load(
pointer: 2,
),
Access(
base: 72,
index: 73,
),
Literal(F32(90.0)),
Splat(
size: Bi,
value: 75,
),
AccessIndex(
base: 55,
index: 0,
),
Literal(I32(0)),
AccessIndex(
base: 77,
index: 0,
),
Literal(I32(1)),
AccessIndex(
base: 79,
index: 1,
),
Literal(F32(10.0)),
AccessIndex(
base: 55,
index: 0,
),
Literal(I32(0)),
AccessIndex(
base: 83,
index: 0,
),
Load(
pointer: 2,
),
Access(
base: 85,
index: 86,
),
Literal(F32(20.0)),
AccessIndex(
base: 55,
index: 0,
),
Load(
pointer: 2,
),
Access(
base: 89,
index: 90,
),
Literal(I32(1)),
AccessIndex(
base: 91,
index: 1,
),
Literal(F32(30.0)),
AccessIndex(
base: 55,
index: 0,
),
Load(
pointer: 2,
),
Access(
base: 95,
index: 96,
),
Load(
pointer: 2,
),
Access(
base: 97,
index: 98,
),
Literal(F32(40.0)),
],
named_expressions: {
8: "l0",
13: "l1",
18: "l2",
25: "l3",
32: "l4",
39: "l5",
46: "l6",
},
body: [
Store(
pointer: 2,
value: 1,
),
Emit((
start: 3,
end: 5,
)),
Store(
pointer: 2,
value: 5,
),
Emit((
start: 6,
end: 8,
)),
Emit((
start: 9,
end: 10,
)),
Emit((
start: 11,
end: 13,
)),
Emit((
start: 14,
end: 18,
)),
Emit((
start: 19,
end: 20,
)),
Emit((
start: 21,
end: 22,
)),
Emit((
start: 23,
end: 25,
)),
Emit((
start: 26,
end: 27,
)),
Emit((
start: 28,
end: 32,
)),
Emit((
start: 33,
end: 36,
)),
Emit((
start: 37,
end: 39,
)),
Emit((
start: 40,
end: 46,
)),
Emit((
start: 47,
end: 48,
)),
Emit((
start: 49,
end: 50,
)),
Emit((
start: 51,
end: 54,
)),
Store(
pointer: 55,
value: 54,
),
Emit((
start: 56,
end: 58,
)),
Store(
pointer: 2,
value: 58,
),
Emit((
start: 58,
end: 59,
)),
Emit((
start: 60,
end: 61,
)),
Emit((
start: 62,
end: 63,
)),
Emit((
start: 64,
end: 66,
)),
Store(
pointer: 59,
value: 66,
),
Emit((
start: 66,
end: 67,
)),
Emit((
start: 68,
end: 69,
)),
Emit((
start: 70,
end: 71,
)),
Store(
pointer: 69,
value: 71,
),
Emit((
start: 71,
end: 74,
)),
Emit((
start: 75,
end: 76,
)),
Store(
pointer: 74,
value: 76,
),
Emit((
start: 76,
end: 77,
)),
Emit((
start: 78,
end: 79,
)),
Emit((
start: 80,
end: 81,
)),
Store(
pointer: 81,
value: 82,
),
Emit((
start: 82,
end: 83,
)),
Emit((
start: 84,
end: 87,
)),
Store(
pointer: 87,
value: 88,
),
Emit((
start: 88,
end: 91,
)),
Emit((
start: 92,
end: 93,
)),
Store(
pointer: 93,
value: 94,
),
Emit((
start: 94,
end: 99,
)),
Store(
pointer: 99,
value: 100,
),
Return(
value: None,
),
],
),
(
name: Some("test_matrix_within_array_within_struct_accesses"),
arguments: [],
result: None,
local_variables: [
(
name: Some("idx"),
ty: 3,
init: None,
),
(
name: Some("t"),
ty: 21,
init: None,
),
],
expressions: [
Literal(I32(1)),
LocalVariable(1),
Literal(I32(1)),
Load(
pointer: 2,
),
Binary(
op: Subtract,
left: 4,
right: 3,
),
GlobalVariable(5),
AccessIndex(
base: 6,
index: 0,
),
Load(
pointer: 7,
),
GlobalVariable(5),
AccessIndex(
base: 9,
index: 0,
),
Literal(I32(0)),
AccessIndex(
base: 10,
index: 0,
),
Load(
pointer: 12,
),
GlobalVariable(5),
AccessIndex(
base: 14,
index: 0,
),
Literal(I32(0)),
AccessIndex(
base: 15,
index: 0,
),
Literal(I32(0)),
AccessIndex(
base: 17,
index: 0,
),
Load(
pointer: 19,
),
GlobalVariable(5),
AccessIndex(
base: 21,
index: 0,
),
Literal(I32(0)),
AccessIndex(
base: 22,
index: 0,
),
Load(
pointer: 2,
),
Access(
base: 24,
index: 25,
),
Load(
pointer: 26,
),
GlobalVariable(5),
AccessIndex(
base: 28,
index: 0,
),
Literal(I32(0)),
AccessIndex(
base: 29,
index: 0,
),
Literal(I32(0)),
AccessIndex(
base: 31,
index: 0,
),
Literal(I32(1)),
AccessIndex(
base: 33,
index: 1,
),
Load(
pointer: 35,
),
GlobalVariable(5),
AccessIndex(
base: 37,
index: 0,
),
Literal(I32(0)),
AccessIndex(
base: 38,
index: 0,
),
Literal(I32(0)),
AccessIndex(
base: 40,
index: 0,
),
Load(
pointer: 2,
),
Access(
base: 42,
index: 43,
),
Load(
pointer: 44,
),
GlobalVariable(5),
AccessIndex(
base: 46,
index: 0,
),
Literal(I32(0)),
AccessIndex(
base: 47,
index: 0,
),
Load(
pointer: 2,
),
Access(
base: 49,
index: 50,
),
Literal(I32(1)),
AccessIndex(
base: 51,
index: 1,
),
Load(
pointer: 53,
),
GlobalVariable(5),
AccessIndex(
base: 55,
index: 0,
),
Literal(I32(0)),
AccessIndex(
base: 56,
index: 0,
),
Load(
pointer: 2,
),
Access(
base: 58,
index: 59,
),
Load(
pointer: 2,
),
Access(
base: 60,
index: 61,
),
Load(
pointer: 62,
),
ZeroValue(20),
Compose(
ty: 21,
components: [
64,
],
),
LocalVariable(2),
Literal(I32(1)),
Load(
pointer: 2,
),
Binary(
op: Add,
left: 68,
right: 67,
),
AccessIndex(
base: 66,
index: 0,
),
ZeroValue(20),
AccessIndex(
base: 66,
index: 0,
),
Literal(I32(0)),
AccessIndex(
base: 72,
index: 0,
),
Literal(F32(8.0)),
Splat(
size: Bi,
value: 75,
),
Literal(F32(7.0)),
Splat(
size: Bi,
value: 77,
),
Literal(F32(6.0)),
Splat(
size: Bi,
value: 79,
),
Literal(F32(5.0)),
Splat(
size: Bi,
value: 81,
),
Compose(
ty: 19,
components: [
76,
78,
80,
82,
],
),
AccessIndex(
base: 66,
index: 0,
),
Literal(I32(0)),
AccessIndex(
base: 84,
index: 0,
),
Literal(I32(0)),
AccessIndex(
base: 86,
index: 0,
),
Literal(F32(9.0)),
Splat(
size: Bi,
value: 89,
),
AccessIndex(
base: 66,
index: 0,
),
Literal(I32(0)),
AccessIndex(
base: 91,
index: 0,
),
Load(
pointer: 2,
),
Access(
base: 93,
index: 94,
),
Literal(F32(90.0)),
Splat(
size: Bi,
value: 96,
),
AccessIndex(
base: 66,
index: 0,
),
Literal(I32(0)),
AccessIndex(
base: 98,
index: 0,
),
Literal(I32(0)),
AccessIndex(
base: 100,
index: 0,
),
Literal(I32(1)),
AccessIndex(
base: 102,
index: 1,
),
Literal(F32(10.0)),
AccessIndex(
base: 66,
index: 0,
),
Literal(I32(0)),
AccessIndex(
base: 106,
index: 0,
),
Literal(I32(0)),
AccessIndex(
base: 108,
index: 0,
),
Load(
pointer: 2,
),
Access(
base: 110,
index: 111,
),
Literal(F32(20.0)),
AccessIndex(
base: 66,
index: 0,
),
Literal(I32(0)),
AccessIndex(
base: 114,
index: 0,
),
Load(
pointer: 2,
),
Access(
base: 116,
index: 117,
),
Literal(I32(1)),
AccessIndex(
base: 118,
index: 1,
),
Literal(F32(30.0)),
AccessIndex(
base: 66,
index: 0,
),
Literal(I32(0)),
AccessIndex(
base: 122,
index: 0,
),
Load(
pointer: 2,
),
Access(
base: 124,
index: 125,
),
Load(
pointer: 2,
),
Access(
base: 126,
index: 127,
),
Literal(F32(40.0)),
],
named_expressions: {
8: "l0",
13: "l1",
20: "l2",
27: "l3",
36: "l4",
45: "l5",
54: "l6",
63: "l7",
},
body: [
Store(
pointer: 2,
value: 1,
),
Emit((
start: 3,
end: 5,
)),
Store(
pointer: 2,
value: 5,
),
Emit((
start: 6,
end: 8,
)),
Emit((
start: 9,
end: 10,
)),
Emit((
start: 11,
end: 13,
)),
Emit((
start: 14,
end: 15,
)),
Emit((
start: 16,
end: 17,
)),
Emit((
start: 18,
end: 20,
)),
Emit((
start: 21,
end: 22,
)),
Emit((
start: 23,
end: 27,
)),
Emit((
start: 28,
end: 29,
)),
Emit((
start: 30,
end: 31,
)),
Emit((
start: 32,
end: 33,
)),
Emit((
start: 34,
end: 36,
)),
Emit((
start: 37,
end: 38,
)),
Emit((
start: 39,
end: 40,
)),
Emit((
start: 41,
end: 45,
)),
Emit((
start: 46,
end: 47,
)),
Emit((
start: 48,
end: 51,
)),
Emit((
start: 52,
end: 54,
)),
Emit((
start: 55,
end: 56,
)),
Emit((
start: 57,
end: 63,
)),
Emit((
start: 64,
end: 65,
)),
Store(
pointer: 66,
value: 65,
),
Emit((
start: 67,
end: 69,
)),
Store(
pointer: 2,
value: 69,
),
Emit((
start: 69,
end: 70,
)),
Store(
pointer: 70,
value: 71,
),
Emit((
start: 71,
end: 72,
)),
Emit((
start: 73,
end: 74,
)),
Emit((
start: 75,
end: 76,
)),
Emit((
start: 77,
end: 78,
)),
Emit((
start: 79,
end: 80,
)),
Emit((
start: 81,
end: 83,
)),
Store(
pointer: 74,
value: 83,
),
Emit((
start: 83,
end: 84,
)),
Emit((
start: 85,
end: 86,
)),
Emit((
start: 87,
end: 88,
)),
Emit((
start: 89,
end: 90,
)),
Store(
pointer: 88,
value: 90,
),
Emit((
start: 90,
end: 91,
)),
Emit((
start: 92,
end: 95,
)),
Emit((
start: 96,
end: 97,
)),
Store(
pointer: 95,
value: 97,
),
Emit((
start: 97,
end: 98,
)),
Emit((
start: 99,
end: 100,
)),
Emit((
start: 101,
end: 102,
)),
Emit((
start: 103,
end: 104,
)),
Store(
pointer: 104,
value: 105,
),
Emit((
start: 105,
end: 106,
)),
Emit((
start: 107,
end: 108,
)),
Emit((
start: 109,
end: 112,
)),
Store(
pointer: 112,
value: 113,
),
Emit((
start: 113,
end: 114,
)),
Emit((
start: 115,
end: 118,
)),
Emit((
start: 119,
end: 120,
)),
Store(
pointer: 120,
value: 121,
),
Emit((
start: 121,
end: 122,
)),
Emit((
start: 123,
end: 128,
)),
Store(
pointer: 128,
value: 129,
),
Return(
value: None,
),
],
),
(
name: Some("read_from_private"),
arguments: [
(
name: Some("foo"),
ty: 23,
binding: None,
),
],
result: Some((
ty: 22,
binding: None,
)),
local_variables: [],
expressions: [
FunctionArgument(0),
Load(
pointer: 1,
),
],
named_expressions: {
1: "foo",
},
body: [
Emit((
start: 1,
end: 2,
)),
Return(
value: Some(2),
),
],
),
(
name: Some("test_arr_as_arg"),
arguments: [
(
name: Some("a"),
ty: 25,
binding: None,
),
],
result: Some((
ty: 22,
binding: None,
)),
local_variables: [],
expressions: [
FunctionArgument(0),
Literal(I32(4)),
AccessIndex(
base: 1,
index: 4,
),
Literal(I32(9)),
AccessIndex(
base: 3,
index: 9,
),
],
named_expressions: {
1: "a",
},
body: [
Emit((
start: 2,
end: 3,
)),
Emit((
start: 4,
end: 5,
)),
Return(
value: Some(5),
),
],
),
(
name: Some("assign_through_ptr_fn"),
arguments: [
(
name: Some("p"),
ty: 31,
binding: None,
),
],
result: None,
local_variables: [],
expressions: [
FunctionArgument(0),
Literal(U32(42)),
],
named_expressions: {
1: "p",
},
body: [
Store(
pointer: 1,
value: 2,
),
Return(
value: None,
),
],
),
(
name: Some("assign_array_through_ptr_fn"),
arguments: [
(
name: Some("foo"),
ty: 33,
binding: None,
),
],
result: None,
local_variables: [],
expressions: [
FunctionArgument(0),
Literal(F32(1.0)),
Splat(
size: Quad,
value: 2,
),
Literal(F32(2.0)),
Splat(
size: Quad,
value: 4,
),
Compose(
ty: 32,
components: [
3,
5,
],
),
],
named_expressions: {
1: "foo",
},
body: [
Emit((
start: 2,
end: 3,
)),
Emit((
start: 4,
end: 6,
)),
Store(
pointer: 1,
value: 6,
),
Return(
value: None,
),
],
),
],
entry_points: [
(
name: "foo_vert",
stage: Vertex,
early_depth_test: None,
workgroup_size: (0, 0, 0),
function: (
name: Some("foo_vert"),
arguments: [
(
name: Some("vi"),
ty: 1,
binding: Some(BuiltIn(VertexIndex)),
),
],
result: Some((
ty: 26,
binding: Some(BuiltIn(Position(
invariant: false,
))),
)),
local_variables: [
(
name: Some("foo"),
ty: 22,
init: None,
),
(
name: Some("c2"),
ty: 28,
init: None,
),
],
expressions: [
FunctionArgument(0),
Literal(F32(0.0)),
LocalVariable(1),
Load(
pointer: 3,
),
Literal(F32(1.0)),
GlobalVariable(2),
AccessIndex(
base: 6,
index: 0,
),
Load(
pointer: 7,
),
GlobalVariable(2),
AccessIndex(
base: 9,
index: 4,
),
Load(
pointer: 10,
),
Literal(U32(3)),
GlobalVariable(2),
AccessIndex(
base: 13,
index: 0,
),
AccessIndex(
base: 14,
index: 3,
),
AccessIndex(
base: 15,
index: 0,
),
Load(
pointer: 16,
),
GlobalVariable(2),
AccessIndex(
base: 18,
index: 5,
),
GlobalVariable(2),
AccessIndex(
base: 20,
index: 5,
),
ArrayLength(21),
Literal(U32(2)),
Binary(
op: Subtract,
left: 22,
right: 23,
),
Access(
base: 19,
index: 24,
),
AccessIndex(
base: 25,
index: 0,
),
Load(
pointer: 26,
),
GlobalVariable(4),
Load(
pointer: 28,
),
GlobalVariable(2),
AccessIndex(
base: 30,
index: 5,
),
Literal(I32(0)),
AccessIndex(
base: 31,
index: 0,
),
AccessIndex(
base: 33,
index: 0,
),
CallResult(3),
As(
expr: 17,
kind: Sint,
convert: Some(4),
),
Literal(I32(3)),
Literal(I32(4)),
Literal(I32(5)),
Compose(
ty: 28,
components: [
27,
36,
37,
38,
39,
],
),
LocalVariable(2),
Literal(U32(1)),
Binary(
op: Add,
left: 1,
right: 42,
),
Access(
base: 41,
index: 43,
),
Literal(I32(42)),
Access(
base: 41,
index: 1,
),
Load(
pointer: 46,
),
ZeroValue(25),
CallResult(4),
Splat(
size: Quad,
value: 47,
),
As(
expr: 50,
kind: Float,
convert: Some(4),
),
Binary(
op: Multiply,
left: 8,
right: 51,
),
Literal(F32(2.0)),
Compose(
ty: 26,
components: [
52,
53,
],
),
],
named_expressions: {
1: "vi",
4: "baz",
8: "_matrix",
11: "arr",
12: "index",
17: "b",
27: "a",
29: "c",
34: "data_pointer",
35: "foo_value",
47: "value",
},
body: [
Store(
pointer: 3,
value: 2,
),
Emit((
start: 3,
end: 4,
)),
Store(
pointer: 3,
value: 5,
),
Call(
function: 1,
arguments: [],
result: None,
),
Call(
function: 2,
arguments: [],
result: None,
),
Emit((
start: 6,
end: 8,
)),
Emit((
start: 9,
end: 11,
)),
Emit((
start: 13,
end: 17,
)),
Emit((
start: 18,
end: 19,
)),
Emit((
start: 20,
end: 22,
)),
Emit((
start: 23,
end: 27,
)),
Emit((
start: 28,
end: 29,
)),
Emit((
start: 30,
end: 31,
)),
Emit((
start: 32,
end: 34,
)),
Call(
function: 3,
arguments: [
3,
],
result: Some(35),
),
Emit((
start: 35,
end: 36,
)),
Emit((
start: 39,
end: 40,
)),
Store(
pointer: 41,
value: 40,
),
Emit((
start: 42,
end: 44,
)),
Store(
pointer: 44,
value: 45,
),
Emit((
start: 45,
end: 47,
)),
Call(
function: 4,
arguments: [
48,
],
result: Some(49),
),
Emit((
start: 49,
end: 52,
)),
Emit((
start: 53,
end: 54,
)),
Return(
value: Some(54),
),
],
),
),
(
name: "foo_frag",
stage: Fragment,
early_depth_test: None,
workgroup_size: (0, 0, 0),
function: (
name: Some("foo_frag"),
arguments: [],
result: Some((
ty: 26,
binding: Some(Location(
location: 0,
second_blend_source: false,
interpolation: Some(Perspective),
sampling: Some(Center),
)),
)),
local_variables: [],
expressions: [
GlobalVariable(2),
AccessIndex(
base: 1,
index: 0,
),
Literal(I32(1)),
AccessIndex(
base: 2,
index: 1,
),
AccessIndex(
base: 4,
index: 2,
),
Literal(F32(1.0)),
GlobalVariable(2),
AccessIndex(
base: 7,
index: 0,
),
Literal(F32(0.0)),
Splat(
size: Tri,
value: 9,
),
Literal(F32(1.0)),
Splat(
size: Tri,
value: 11,
),
Literal(F32(2.0)),
Splat(
size: Tri,
value: 13,
),
Literal(F32(3.0)),
Splat(
size: Tri,
value: 15,
),
Compose(
ty: 6,
components: [
10,
12,
14,
16,
],
),
GlobalVariable(2),
AccessIndex(
base: 18,
index: 4,
),
Literal(U32(0)),
Splat(
size: Bi,
value: 20,
),
Literal(U32(1)),
Splat(
size: Bi,
value: 22,
),
Compose(
ty: 12,
components: [
21,
23,
],
),
GlobalVariable(2),
AccessIndex(
base: 25,
index: 5,
),
Literal(I32(1)),
AccessIndex(
base: 26,
index: 1,
),
AccessIndex(
base: 28,
index: 0,
),
Literal(I32(1)),
GlobalVariable(4),
ZeroValue(17),
Literal(F32(0.0)),
Splat(
size: Quad,
value: 33,
),
],
named_expressions: {},
body: [
Emit((
start: 1,
end: 2,
)),
Emit((
start: 3,
end: 5,
)),
Store(
pointer: 5,
value: 6,
),
Emit((
start: 7,
end: 8,
)),
Emit((
start: 9,
end: 10,
)),
Emit((
start: 11,
end: 12,
)),
Emit((
start: 13,
end: 14,
)),
Emit((
start: 15,
end: 17,
)),
Store(
pointer: 8,
value: 17,
),
Emit((
start: 18,
end: 19,
)),
Emit((
start: 20,
end: 21,
)),
Emit((
start: 22,
end: 24,
)),
Store(
pointer: 19,
value: 24,
),
Emit((
start: 25,
end: 26,
)),
Emit((
start: 27,
end: 29,
)),
Store(
pointer: 29,
value: 30,
),
Store(
pointer: 31,
value: 32,
),
Emit((
start: 33,
end: 34,
)),
Return(
value: Some(34),
),
],
),
),
(
name: "assign_through_ptr",
stage: Compute,
early_depth_test: None,
workgroup_size: (1, 1, 1),
function: (
name: Some("assign_through_ptr"),
arguments: [],
result: None,
local_variables: [
(
name: Some("arr"),
ty: 32,
init: None,
),
],
expressions: [
Literal(F32(6.0)),
Splat(
size: Quad,
value: 1,
),
Literal(F32(7.0)),
Splat(
size: Quad,
value: 3,
),
Compose(
ty: 32,
components: [
2,
4,
],
),
LocalVariable(1),
GlobalVariable(6),
],
named_expressions: {},
body: [
Emit((
start: 1,
end: 2,
)),
Emit((
start: 3,
end: 5,
)),
Store(
pointer: 6,
value: 5,
),
Call(
function: 5,
arguments: [
7,
],
result: None,
),
Call(
function: 6,
arguments: [
6,
],
result: None,
),
Return(
value: None,
),
],
),
),
],
)