reader/wgsl: Generate ForLoopStatements

Instead of LoopStatements.

Update the writers to handle these.

Fixed: tint:952
Change-Id: Ibef66e133224810efc28c224d910b5e21f71f8d6
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/57203
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: James Price <jrprice@google.com>
This commit is contained in:
Ben Clayton
2021-07-08 21:23:33 +00:00
committed by Tint LUCI CQ
parent 03c8393213
commit 1b03f0a07a
67 changed files with 1059 additions and 1274 deletions

View File

@@ -32,8 +32,7 @@ static bool2 v2b = bool2(false, false);
void foo() {
{
int i = 0;
for(; !(!((i < 2))); i = (i + 1)) {
for(int i = 0; (i < 2); i = (i + 1)) {
Set_float2(v2f, i, 1.0f);
Set_int3(v3i, i, 1);
Set_uint4(v4u, i, 1u);
@@ -45,8 +44,7 @@ void foo() {
[numthreads(1, 1, 1)]
void main() {
{
int i = 0;
for(; !(!((i < 2))); i = (i + 1)) {
for(int i = 0; (i < 2); i = (i + 1)) {
foo();
}
}

View File

@@ -2,20 +2,11 @@
using namespace metal;
void foo(thread float2* const tint_symbol_1, thread int3* const tint_symbol_2, thread uint4* const tint_symbol_3, thread bool2* const tint_symbol_4) {
{
int i = 0;
while (true) {
if (!((i < 2))) {
break;
}
(*(tint_symbol_1))[i] = 1.0f;
(*(tint_symbol_2))[i] = 1;
(*(tint_symbol_3))[i] = 1u;
(*(tint_symbol_4))[i] = true;
{
i = (i + 1);
}
}
for(int i = 0; (i < 2); i = (i + 1)) {
(*(tint_symbol_1))[i] = 1.0f;
(*(tint_symbol_2))[i] = 1;
(*(tint_symbol_3))[i] = 1u;
(*(tint_symbol_4))[i] = true;
}
}
@@ -24,17 +15,8 @@ kernel void tint_symbol() {
thread int3 tint_symbol_6 = 0;
thread uint4 tint_symbol_7 = 0u;
thread bool2 tint_symbol_8 = false;
{
int i = 0;
while (true) {
if (!((i < 2))) {
break;
}
foo(&(tint_symbol_5), &(tint_symbol_6), &(tint_symbol_7), &(tint_symbol_8));
{
i = (i + 1);
}
}
for(int i = 0; (i < 2); i = (i + 1)) {
foo(&(tint_symbol_5), &(tint_symbol_6), &(tint_symbol_7), &(tint_symbol_8));
}
return;
}

View File

@@ -7,37 +7,17 @@ var<private> v4u : vec4<u32>;
var<private> v2b : vec2<bool>;
fn foo() {
{
var i : i32 = 0;
loop {
if (!((i < 2))) {
break;
}
v2f[i] = 1.0;
v3i[i] = 1;
v4u[i] = 1u;
v2b[i] = true;
continuing {
i = (i + 1);
}
}
for(var i : i32 = 0; (i < 2); i = (i + 1)) {
v2f[i] = 1.0;
v3i[i] = 1;
v4u[i] = 1u;
v2b[i] = true;
}
}
[[stage(compute), workgroup_size(1, 1, 1)]]
fn main() {
{
var i : i32 = 0;
loop {
if (!((i < 2))) {
break;
}
foo();
continuing {
i = (i + 1);
}
}
for(var i : i32 = 0; (i < 2); i = (i + 1)) {
foo();
}
}

View File

@@ -14,8 +14,7 @@ void foo() {
[numthreads(1, 1, 1)]
void main() {
{
int i = 0;
for(; !(!((i < 2))); i = (i + 1)) {
for(int i = 0; (i < 2); i = (i + 1)) {
foo();
}
}

View File

@@ -14,17 +14,8 @@ kernel void tint_symbol() {
thread int3 tint_symbol_6 = 0;
thread uint4 tint_symbol_7 = 0u;
thread bool2 tint_symbol_8 = false;
{
int i = 0;
while (true) {
if (!((i < 2))) {
break;
}
foo(&(tint_symbol_5), &(tint_symbol_6), &(tint_symbol_7), &(tint_symbol_8));
{
i = (i + 1);
}
}
for(int i = 0; (i < 2); i = (i + 1)) {
foo(&(tint_symbol_5), &(tint_symbol_6), &(tint_symbol_7), &(tint_symbol_8));
}
return;
}

View File

@@ -16,17 +16,7 @@ fn foo() {
[[stage(compute), workgroup_size(1, 1, 1)]]
fn main() {
{
var i : i32 = 0;
loop {
if (!((i < 2))) {
break;
}
foo();
continuing {
i = (i + 1);
}
}
for(var i : i32 = 0; (i < 2); i = (i + 1)) {
foo();
}
}

View File

@@ -97,8 +97,7 @@ void main() {
bool3 v3b = bool3(false, false, false);
bool4 v4b = bool4(false, false, false, false);
{
int i = 0;
for(; !(!((i < 2))); i = (i + 1)) {
for(int i = 0; (i < 2); i = (i + 1)) {
Set_float2(v2f, i, 1.0f);
Set_float3(v3f, i, 1.0f);
Set_float4(v4f, i, 1.0f);

View File

@@ -14,28 +14,19 @@ kernel void tint_symbol() {
bool2 v2b = false;
bool3 v3b = false;
bool4 v4b = false;
{
int i = 0;
while (true) {
if (!((i < 2))) {
break;
}
v2f[i] = 1.0f;
v3f[i] = 1.0f;
v4f[i] = 1.0f;
v2i[i] = 1;
v3i[i] = 1;
v4i[i] = 1;
v2u[i] = 1u;
v3u[i] = 1u;
v4u[i] = 1u;
v2b[i] = true;
v3b[i] = true;
v4b[i] = true;
{
i = (i + 1);
}
}
for(int i = 0; (i < 2); i = (i + 1)) {
v2f[i] = 1.0f;
v3f[i] = 1.0f;
v4f[i] = 1.0f;
v2i[i] = 1;
v3i[i] = 1;
v4i[i] = 1;
v2u[i] = 1u;
v3u[i] = 1u;
v4u[i] = 1u;
v2b[i] = true;
v3b[i] = true;
v4b[i] = true;
}
return;
}

View File

@@ -12,28 +12,18 @@ fn main() {
var v2b : vec2<bool>;
var v3b : vec3<bool>;
var v4b : vec4<bool>;
{
var i : i32 = 0;
loop {
if (!((i < 2))) {
break;
}
v2f[i] = 1.0;
v3f[i] = 1.0;
v4f[i] = 1.0;
v2i[i] = 1;
v3i[i] = 1;
v4i[i] = 1;
v2u[i] = 1u;
v3u[i] = 1u;
v4u[i] = 1u;
v2b[i] = true;
v3b[i] = true;
v4b[i] = true;
continuing {
i = (i + 1);
}
}
for(var i : i32 = 0; (i < 2); i = (i + 1)) {
v2f[i] = 1.0;
v3f[i] = 1.0;
v4f[i] = 1.0;
v2i[i] = 1;
v3i[i] = 1;
v4i[i] = 1;
v2u[i] = 1u;
v3u[i] = 1u;
v4u[i] = 1u;
v2b[i] = true;
v3b[i] = true;
v4b[i] = true;
}
}

View File

@@ -36,8 +36,7 @@ void main() {
bool2 v2b = bool2(false, false);
bool2 v2b_2 = bool2(false, false);
{
int i = 0;
for(; !(!((i < 2))); i = (i + 1)) {
for(int i = 0; (i < 2); i = (i + 1)) {
Set_float2(v2f, i, 1.0f);
Set_int3(v3i, i, 1);
Set_uint4(v4u, i, 1u);

View File

@@ -10,24 +10,15 @@ kernel void tint_symbol() {
uint4 v4u_2 = 0u;
bool2 v2b = false;
bool2 v2b_2 = false;
{
int i = 0;
while (true) {
if (!((i < 2))) {
break;
}
v2f[i] = 1.0f;
v3i[i] = 1;
v4u[i] = 1u;
v2b[i] = true;
v2f_2[i] = 1.0f;
v3i_2[i] = 1;
v4u_2[i] = 1u;
v2b_2[i] = true;
{
i = (i + 1);
}
}
for(int i = 0; (i < 2); i = (i + 1)) {
v2f[i] = 1.0f;
v3i[i] = 1;
v4u[i] = 1u;
v2b[i] = true;
v2f_2[i] = 1.0f;
v3i_2[i] = 1;
v4u_2[i] = 1u;
v2b_2[i] = true;
}
return;
}

View File

@@ -8,24 +8,14 @@ fn main() {
var v4u_2 : vec4<u32>;
var v2b : vec2<bool>;
var v2b_2 : vec2<bool>;
{
var i : i32 = 0;
loop {
if (!((i < 2))) {
break;
}
v2f[i] = 1.0;
v3i[i] = 1;
v4u[i] = 1u;
v2b[i] = true;
v2f_2[i] = 1.0;
v3i_2[i] = 1;
v4u_2[i] = 1u;
v2b_2[i] = true;
continuing {
i = (i + 1);
}
}
for(var i : i32 = 0; (i < 2); i = (i + 1)) {
v2f[i] = 1.0;
v3i[i] = 1;
v4u[i] = 1u;
v2b[i] = true;
v2f_2[i] = 1.0;
v3i_2[i] = 1;
v4u_2[i] = 1u;
v2b_2[i] = true;
}
}

View File

@@ -37,8 +37,7 @@ void main() {
bool3 v3b = bool3(false, false, false);
bool4 v4b = bool4(false, false, false, false);
{
int i = 0;
for(; !(!((i < 2))); i = (i + 1)) {
for(int i = 0; (i < 2); i = (i + 1)) {
Set_float2(v2f, i, 1.0f);
Set_int2(v2i, i, 1);
Set_uint2(v2u, i, 1u);

View File

@@ -14,20 +14,11 @@ kernel void tint_symbol() {
bool2 v2b = false;
bool3 v3b = false;
bool4 v4b = false;
{
int i = 0;
while (true) {
if (!((i < 2))) {
break;
}
v2f[i] = 1.0f;
v2i[i] = 1;
v2u[i] = 1u;
v2b[i] = true;
{
i = (i + 1);
}
}
for(int i = 0; (i < 2); i = (i + 1)) {
v2f[i] = 1.0f;
v2i[i] = 1;
v2u[i] = 1u;
v2b[i] = true;
}
int i = 0;
v3f[i] = 1.0f;

View File

@@ -12,21 +12,11 @@ fn main() {
var v2b : vec2<bool>;
var v3b : vec3<bool>;
var v4b : vec4<bool>;
{
var i : i32 = 0;
loop {
if (!((i < 2))) {
break;
}
v2f[i] = 1.0;
v2i[i] = 1;
v2u[i] = 1u;
v2b[i] = true;
continuing {
i = (i + 1);
}
}
for(var i : i32 = 0; (i < 2); i = (i + 1)) {
v2f[i] = 1.0;
v2i[i] = 1;
v2u[i] = 1u;
v2b[i] = true;
}
var i : i32 = 0;
v3f[i] = 1.0;