mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-16 00:17:03 +00:00
writer/msl: Fix continuing block emission
Inline the `continuing` block in the places where `continue` is called. Simplifies the emission, and fixes emission of `let` statements in the loop. This fix matches the same approach in writer/hlsl. See: https://dawn-review.googlesource.com/c/tint/+/51784 Fixed: tint:833 Fixed: tint:914 Change-Id: If4d8cde62dfaf8efa24272854ca7ff5edc0a8234 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/55341 Commit-Queue: Ben Clayton <bclayton@chromium.org> Kokoro: Kokoro <noreply+kokoro@google.com> Reviewed-by: David Neto <dneto@google.com>
This commit is contained in:
committed by
Tint LUCI CQ
parent
c15baf695d
commit
663271dca4
@@ -1,37 +1,33 @@
|
||||
SKIP: FAILED
|
||||
#include <metal_stdlib>
|
||||
|
||||
|
||||
[[block]]
|
||||
using namespace metal;
|
||||
struct tint_symbol_2 {
|
||||
/* 0x0000 */ uint buffer_size[2];
|
||||
};
|
||||
struct SB_RO {
|
||||
arg_0 : array<i32>;
|
||||
/* 0x0000 */ int arg_0[1];
|
||||
};
|
||||
struct tint_symbol {
|
||||
float4 value [[position]];
|
||||
};
|
||||
|
||||
[[group(0), binding(1)]] var<storage, read> sb_ro : SB_RO;
|
||||
|
||||
fn arrayLength_1588cd() {
|
||||
var res : u32 = arrayLength(&(sb_ro.arg_0));
|
||||
void arrayLength_1588cd(constant tint_symbol_2& tint_symbol_3) {
|
||||
uint res = ((tint_symbol_3.buffer_size[1u] - 0u) / 4u);
|
||||
}
|
||||
|
||||
struct tint_symbol {
|
||||
[[builtin(position)]]
|
||||
value : vec4<f32>;
|
||||
};
|
||||
|
||||
[[stage(vertex)]]
|
||||
fn vertex_main() -> tint_symbol {
|
||||
arrayLength_1588cd();
|
||||
let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
|
||||
vertex tint_symbol vertex_main(constant tint_symbol_2& tint_symbol_3 [[buffer(30)]]) {
|
||||
arrayLength_1588cd(tint_symbol_3);
|
||||
tint_symbol const tint_symbol_1 = {.value=float4()};
|
||||
return tint_symbol_1;
|
||||
}
|
||||
|
||||
[[stage(fragment)]]
|
||||
fn fragment_main() {
|
||||
arrayLength_1588cd();
|
||||
fragment void fragment_main(constant tint_symbol_2& tint_symbol_3 [[buffer(30)]]) {
|
||||
arrayLength_1588cd(tint_symbol_3);
|
||||
return;
|
||||
}
|
||||
|
||||
[[stage(compute)]]
|
||||
fn compute_main() {
|
||||
arrayLength_1588cd();
|
||||
kernel void compute_main(constant tint_symbol_2& tint_symbol_3 [[buffer(30)]]) {
|
||||
arrayLength_1588cd(tint_symbol_3);
|
||||
return;
|
||||
}
|
||||
|
||||
Failed to generate: error: Unknown import method: arrayLength
|
||||
|
||||
@@ -1,37 +1,33 @@
|
||||
SKIP: FAILED
|
||||
#include <metal_stdlib>
|
||||
|
||||
|
||||
[[block]]
|
||||
using namespace metal;
|
||||
struct tint_symbol_2 {
|
||||
/* 0x0000 */ uint buffer_size[1];
|
||||
};
|
||||
struct SB_RW {
|
||||
arg_0 : array<i32>;
|
||||
/* 0x0000 */ int arg_0[1];
|
||||
};
|
||||
struct tint_symbol {
|
||||
float4 value [[position]];
|
||||
};
|
||||
|
||||
[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
|
||||
|
||||
fn arrayLength_61b1c7() {
|
||||
var res : u32 = arrayLength(&(sb_rw.arg_0));
|
||||
void arrayLength_61b1c7(constant tint_symbol_2& tint_symbol_3) {
|
||||
uint res = ((tint_symbol_3.buffer_size[0u] - 0u) / 4u);
|
||||
}
|
||||
|
||||
struct tint_symbol {
|
||||
[[builtin(position)]]
|
||||
value : vec4<f32>;
|
||||
};
|
||||
|
||||
[[stage(vertex)]]
|
||||
fn vertex_main() -> tint_symbol {
|
||||
arrayLength_61b1c7();
|
||||
let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
|
||||
vertex tint_symbol vertex_main(constant tint_symbol_2& tint_symbol_3 [[buffer(30)]]) {
|
||||
arrayLength_61b1c7(tint_symbol_3);
|
||||
tint_symbol const tint_symbol_1 = {.value=float4()};
|
||||
return tint_symbol_1;
|
||||
}
|
||||
|
||||
[[stage(fragment)]]
|
||||
fn fragment_main() {
|
||||
arrayLength_61b1c7();
|
||||
fragment void fragment_main(constant tint_symbol_2& tint_symbol_3 [[buffer(30)]]) {
|
||||
arrayLength_61b1c7(tint_symbol_3);
|
||||
return;
|
||||
}
|
||||
|
||||
[[stage(compute)]]
|
||||
fn compute_main() {
|
||||
arrayLength_61b1c7();
|
||||
kernel void compute_main(constant tint_symbol_2& tint_symbol_3 [[buffer(30)]]) {
|
||||
arrayLength_61b1c7(tint_symbol_3);
|
||||
return;
|
||||
}
|
||||
|
||||
Failed to generate: error: Unknown import method: arrayLength
|
||||
|
||||
@@ -1,37 +1,33 @@
|
||||
SKIP: FAILED
|
||||
#include <metal_stdlib>
|
||||
|
||||
|
||||
[[block]]
|
||||
using namespace metal;
|
||||
struct tint_symbol_2 {
|
||||
/* 0x0000 */ uint buffer_size[2];
|
||||
};
|
||||
struct SB_RO {
|
||||
arg_0 : array<f32>;
|
||||
/* 0x0000 */ float arg_0[1];
|
||||
};
|
||||
struct tint_symbol {
|
||||
float4 value [[position]];
|
||||
};
|
||||
|
||||
[[group(0), binding(1)]] var<storage, read> sb_ro : SB_RO;
|
||||
|
||||
fn arrayLength_a0f5ca() {
|
||||
var res : u32 = arrayLength(&(sb_ro.arg_0));
|
||||
void arrayLength_a0f5ca(constant tint_symbol_2& tint_symbol_3) {
|
||||
uint res = ((tint_symbol_3.buffer_size[1u] - 0u) / 4u);
|
||||
}
|
||||
|
||||
struct tint_symbol {
|
||||
[[builtin(position)]]
|
||||
value : vec4<f32>;
|
||||
};
|
||||
|
||||
[[stage(vertex)]]
|
||||
fn vertex_main() -> tint_symbol {
|
||||
arrayLength_a0f5ca();
|
||||
let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
|
||||
vertex tint_symbol vertex_main(constant tint_symbol_2& tint_symbol_3 [[buffer(30)]]) {
|
||||
arrayLength_a0f5ca(tint_symbol_3);
|
||||
tint_symbol const tint_symbol_1 = {.value=float4()};
|
||||
return tint_symbol_1;
|
||||
}
|
||||
|
||||
[[stage(fragment)]]
|
||||
fn fragment_main() {
|
||||
arrayLength_a0f5ca();
|
||||
fragment void fragment_main(constant tint_symbol_2& tint_symbol_3 [[buffer(30)]]) {
|
||||
arrayLength_a0f5ca(tint_symbol_3);
|
||||
return;
|
||||
}
|
||||
|
||||
[[stage(compute)]]
|
||||
fn compute_main() {
|
||||
arrayLength_a0f5ca();
|
||||
kernel void compute_main(constant tint_symbol_2& tint_symbol_3 [[buffer(30)]]) {
|
||||
arrayLength_a0f5ca(tint_symbol_3);
|
||||
return;
|
||||
}
|
||||
|
||||
Failed to generate: error: Unknown import method: arrayLength
|
||||
|
||||
@@ -1,37 +1,33 @@
|
||||
SKIP: FAILED
|
||||
#include <metal_stdlib>
|
||||
|
||||
|
||||
[[block]]
|
||||
using namespace metal;
|
||||
struct tint_symbol_2 {
|
||||
/* 0x0000 */ uint buffer_size[1];
|
||||
};
|
||||
struct SB_RW {
|
||||
arg_0 : array<f32>;
|
||||
/* 0x0000 */ float arg_0[1];
|
||||
};
|
||||
struct tint_symbol {
|
||||
float4 value [[position]];
|
||||
};
|
||||
|
||||
[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
|
||||
|
||||
fn arrayLength_cdd123() {
|
||||
var res : u32 = arrayLength(&(sb_rw.arg_0));
|
||||
void arrayLength_cdd123(constant tint_symbol_2& tint_symbol_3) {
|
||||
uint res = ((tint_symbol_3.buffer_size[0u] - 0u) / 4u);
|
||||
}
|
||||
|
||||
struct tint_symbol {
|
||||
[[builtin(position)]]
|
||||
value : vec4<f32>;
|
||||
};
|
||||
|
||||
[[stage(vertex)]]
|
||||
fn vertex_main() -> tint_symbol {
|
||||
arrayLength_cdd123();
|
||||
let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
|
||||
vertex tint_symbol vertex_main(constant tint_symbol_2& tint_symbol_3 [[buffer(30)]]) {
|
||||
arrayLength_cdd123(tint_symbol_3);
|
||||
tint_symbol const tint_symbol_1 = {.value=float4()};
|
||||
return tint_symbol_1;
|
||||
}
|
||||
|
||||
[[stage(fragment)]]
|
||||
fn fragment_main() {
|
||||
arrayLength_cdd123();
|
||||
fragment void fragment_main(constant tint_symbol_2& tint_symbol_3 [[buffer(30)]]) {
|
||||
arrayLength_cdd123(tint_symbol_3);
|
||||
return;
|
||||
}
|
||||
|
||||
[[stage(compute)]]
|
||||
fn compute_main() {
|
||||
arrayLength_cdd123();
|
||||
kernel void compute_main(constant tint_symbol_2& tint_symbol_3 [[buffer(30)]]) {
|
||||
arrayLength_cdd123(tint_symbol_3);
|
||||
return;
|
||||
}
|
||||
|
||||
Failed to generate: error: Unknown import method: arrayLength
|
||||
|
||||
@@ -1,37 +1,33 @@
|
||||
SKIP: FAILED
|
||||
#include <metal_stdlib>
|
||||
|
||||
|
||||
[[block]]
|
||||
using namespace metal;
|
||||
struct tint_symbol_2 {
|
||||
/* 0x0000 */ uint buffer_size[2];
|
||||
};
|
||||
struct SB_RO {
|
||||
arg_0 : array<u32>;
|
||||
/* 0x0000 */ uint arg_0[1];
|
||||
};
|
||||
struct tint_symbol {
|
||||
float4 value [[position]];
|
||||
};
|
||||
|
||||
[[group(0), binding(1)]] var<storage, read> sb_ro : SB_RO;
|
||||
|
||||
fn arrayLength_cfca0a() {
|
||||
var res : u32 = arrayLength(&(sb_ro.arg_0));
|
||||
void arrayLength_cfca0a(constant tint_symbol_2& tint_symbol_3) {
|
||||
uint res = ((tint_symbol_3.buffer_size[1u] - 0u) / 4u);
|
||||
}
|
||||
|
||||
struct tint_symbol {
|
||||
[[builtin(position)]]
|
||||
value : vec4<f32>;
|
||||
};
|
||||
|
||||
[[stage(vertex)]]
|
||||
fn vertex_main() -> tint_symbol {
|
||||
arrayLength_cfca0a();
|
||||
let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
|
||||
vertex tint_symbol vertex_main(constant tint_symbol_2& tint_symbol_3 [[buffer(30)]]) {
|
||||
arrayLength_cfca0a(tint_symbol_3);
|
||||
tint_symbol const tint_symbol_1 = {.value=float4()};
|
||||
return tint_symbol_1;
|
||||
}
|
||||
|
||||
[[stage(fragment)]]
|
||||
fn fragment_main() {
|
||||
arrayLength_cfca0a();
|
||||
fragment void fragment_main(constant tint_symbol_2& tint_symbol_3 [[buffer(30)]]) {
|
||||
arrayLength_cfca0a(tint_symbol_3);
|
||||
return;
|
||||
}
|
||||
|
||||
[[stage(compute)]]
|
||||
fn compute_main() {
|
||||
arrayLength_cfca0a();
|
||||
kernel void compute_main(constant tint_symbol_2& tint_symbol_3 [[buffer(30)]]) {
|
||||
arrayLength_cfca0a(tint_symbol_3);
|
||||
return;
|
||||
}
|
||||
|
||||
Failed to generate: error: Unknown import method: arrayLength
|
||||
|
||||
@@ -1,37 +1,33 @@
|
||||
SKIP: FAILED
|
||||
#include <metal_stdlib>
|
||||
|
||||
|
||||
[[block]]
|
||||
using namespace metal;
|
||||
struct tint_symbol_2 {
|
||||
/* 0x0000 */ uint buffer_size[1];
|
||||
};
|
||||
struct SB_RW {
|
||||
arg_0 : array<u32>;
|
||||
/* 0x0000 */ uint arg_0[1];
|
||||
};
|
||||
struct tint_symbol {
|
||||
float4 value [[position]];
|
||||
};
|
||||
|
||||
[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
|
||||
|
||||
fn arrayLength_eb510f() {
|
||||
var res : u32 = arrayLength(&(sb_rw.arg_0));
|
||||
void arrayLength_eb510f(constant tint_symbol_2& tint_symbol_3) {
|
||||
uint res = ((tint_symbol_3.buffer_size[0u] - 0u) / 4u);
|
||||
}
|
||||
|
||||
struct tint_symbol {
|
||||
[[builtin(position)]]
|
||||
value : vec4<f32>;
|
||||
};
|
||||
|
||||
[[stage(vertex)]]
|
||||
fn vertex_main() -> tint_symbol {
|
||||
arrayLength_eb510f();
|
||||
let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
|
||||
vertex tint_symbol vertex_main(constant tint_symbol_2& tint_symbol_3 [[buffer(30)]]) {
|
||||
arrayLength_eb510f(tint_symbol_3);
|
||||
tint_symbol const tint_symbol_1 = {.value=float4()};
|
||||
return tint_symbol_1;
|
||||
}
|
||||
|
||||
[[stage(fragment)]]
|
||||
fn fragment_main() {
|
||||
arrayLength_eb510f();
|
||||
fragment void fragment_main(constant tint_symbol_2& tint_symbol_3 [[buffer(30)]]) {
|
||||
arrayLength_eb510f(tint_symbol_3);
|
||||
return;
|
||||
}
|
||||
|
||||
[[stage(compute)]]
|
||||
fn compute_main() {
|
||||
arrayLength_eb510f();
|
||||
kernel void compute_main(constant tint_symbol_2& tint_symbol_3 [[buffer(30)]]) {
|
||||
arrayLength_eb510f(tint_symbol_3);
|
||||
return;
|
||||
}
|
||||
|
||||
Failed to generate: error: Unknown import method: arrayLength
|
||||
|
||||
Reference in New Issue
Block a user