tint/hlsl+glsl: fix workgroupUniformLoad polyfills

The BuiltinPolyfill transform expects the DirectVariableAccess transform
to run after it, but this regressed as part of
https://dawn-review.googlesource.com/c/dawn/+/122203

Add unit test along with e2e 1926.wgsl test.

Bug: tint:1926
Change-Id: I5107453ce152b12e6f2f36930846e1fffa775708
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/131020
Reviewed-by: James Price <jrprice@google.com>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
This commit is contained in:
Antonio Maiorano
2023-05-03 15:30:54 +00:00
committed by Dawn LUCI CQ
parent e903396ff2
commit fa00fe9d41
63 changed files with 590 additions and 247 deletions

View File

@@ -1,15 +1,16 @@
uint tint_workgroupUniformLoad(inout uint p) {
groupshared uint arg_0;
uint tint_workgroupUniformLoad_arg_0() {
GroupMemoryBarrierWithGroupSync();
const uint result = p;
const uint result = arg_0;
GroupMemoryBarrierWithGroupSync();
return result;
}
groupshared uint arg_0;
RWByteAddressBuffer prevent_dce : register(u0, space2);
void workgroupUniformLoad_37307c() {
uint res = tint_workgroupUniformLoad(arg_0);
uint res = tint_workgroupUniformLoad_arg_0();
prevent_dce.Store(0u, asuint(res));
}

View File

@@ -1,15 +1,16 @@
uint tint_workgroupUniformLoad(inout uint p) {
groupshared uint arg_0;
uint tint_workgroupUniformLoad_arg_0() {
GroupMemoryBarrierWithGroupSync();
const uint result = p;
const uint result = arg_0;
GroupMemoryBarrierWithGroupSync();
return result;
}
groupshared uint arg_0;
RWByteAddressBuffer prevent_dce : register(u0, space2);
void workgroupUniformLoad_37307c() {
uint res = tint_workgroupUniformLoad(arg_0);
uint res = tint_workgroupUniformLoad_arg_0();
prevent_dce.Store(0u, asuint(res));
}

View File

@@ -1,19 +1,19 @@
#version 310 es
uint tint_workgroupUniformLoad(inout uint p) {
shared uint arg_0;
uint tint_workgroupUniformLoad_arg_0() {
barrier();
uint result = p;
uint result = arg_0;
barrier();
return result;
}
shared uint arg_0;
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
uint inner;
} prevent_dce;
void workgroupUniformLoad_37307c() {
uint res = tint_workgroupUniformLoad(arg_0);
uint res = tint_workgroupUniformLoad_arg_0();
prevent_dce.inner = res;
}

View File

@@ -1,15 +1,16 @@
float tint_workgroupUniformLoad(inout float p) {
groupshared float arg_0;
float tint_workgroupUniformLoad_arg_0() {
GroupMemoryBarrierWithGroupSync();
const float result = p;
const float result = arg_0;
GroupMemoryBarrierWithGroupSync();
return result;
}
groupshared float arg_0;
RWByteAddressBuffer prevent_dce : register(u0, space2);
void workgroupUniformLoad_7a857c() {
float res = tint_workgroupUniformLoad(arg_0);
float res = tint_workgroupUniformLoad_arg_0();
prevent_dce.Store(0u, asuint(res));
}

View File

@@ -1,15 +1,16 @@
float tint_workgroupUniformLoad(inout float p) {
groupshared float arg_0;
float tint_workgroupUniformLoad_arg_0() {
GroupMemoryBarrierWithGroupSync();
const float result = p;
const float result = arg_0;
GroupMemoryBarrierWithGroupSync();
return result;
}
groupshared float arg_0;
RWByteAddressBuffer prevent_dce : register(u0, space2);
void workgroupUniformLoad_7a857c() {
float res = tint_workgroupUniformLoad(arg_0);
float res = tint_workgroupUniformLoad_arg_0();
prevent_dce.Store(0u, asuint(res));
}

View File

@@ -1,19 +1,19 @@
#version 310 es
float tint_workgroupUniformLoad(inout float p) {
shared float arg_0;
float tint_workgroupUniformLoad_arg_0() {
barrier();
float result = p;
float result = arg_0;
barrier();
return result;
}
shared float arg_0;
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
float inner;
} prevent_dce;
void workgroupUniformLoad_7a857c() {
float res = tint_workgroupUniformLoad(arg_0);
float res = tint_workgroupUniformLoad_arg_0();
prevent_dce.inner = res;
}

View File

@@ -1,15 +1,16 @@
int tint_workgroupUniformLoad(inout int p) {
groupshared int arg_0;
int tint_workgroupUniformLoad_arg_0() {
GroupMemoryBarrierWithGroupSync();
const int result = p;
const int result = arg_0;
GroupMemoryBarrierWithGroupSync();
return result;
}
groupshared int arg_0;
RWByteAddressBuffer prevent_dce : register(u0, space2);
void workgroupUniformLoad_9d33de() {
int res = tint_workgroupUniformLoad(arg_0);
int res = tint_workgroupUniformLoad_arg_0();
prevent_dce.Store(0u, asuint(res));
}

View File

@@ -1,15 +1,16 @@
int tint_workgroupUniformLoad(inout int p) {
groupshared int arg_0;
int tint_workgroupUniformLoad_arg_0() {
GroupMemoryBarrierWithGroupSync();
const int result = p;
const int result = arg_0;
GroupMemoryBarrierWithGroupSync();
return result;
}
groupshared int arg_0;
RWByteAddressBuffer prevent_dce : register(u0, space2);
void workgroupUniformLoad_9d33de() {
int res = tint_workgroupUniformLoad(arg_0);
int res = tint_workgroupUniformLoad_arg_0();
prevent_dce.Store(0u, asuint(res));
}

View File

@@ -1,19 +1,19 @@
#version 310 es
int tint_workgroupUniformLoad(inout int p) {
shared int arg_0;
int tint_workgroupUniformLoad_arg_0() {
barrier();
int result = p;
int result = arg_0;
barrier();
return result;
}
shared int arg_0;
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
int inner;
} prevent_dce;
void workgroupUniformLoad_9d33de() {
int res = tint_workgroupUniformLoad(arg_0);
int res = tint_workgroupUniformLoad_arg_0();
prevent_dce.inner = res;
}

View File

@@ -1,15 +1,16 @@
float16_t tint_workgroupUniformLoad(inout float16_t p) {
groupshared float16_t arg_0;
float16_t tint_workgroupUniformLoad_arg_0() {
GroupMemoryBarrierWithGroupSync();
const float16_t result = p;
const float16_t result = arg_0;
GroupMemoryBarrierWithGroupSync();
return result;
}
groupshared float16_t arg_0;
RWByteAddressBuffer prevent_dce : register(u0, space2);
void workgroupUniformLoad_e07d08() {
float16_t res = tint_workgroupUniformLoad(arg_0);
float16_t res = tint_workgroupUniformLoad_arg_0();
prevent_dce.Store<float16_t>(0u, res);
}

View File

@@ -1,20 +1,20 @@
#version 310 es
#extension GL_AMD_gpu_shader_half_float : require
float16_t tint_workgroupUniformLoad(inout float16_t p) {
shared float16_t arg_0;
float16_t tint_workgroupUniformLoad_arg_0() {
barrier();
float16_t result = p;
float16_t result = arg_0;
barrier();
return result;
}
shared float16_t arg_0;
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
float16_t inner;
} prevent_dce;
void workgroupUniformLoad_e07d08() {
float16_t res = tint_workgroupUniformLoad(arg_0);
float16_t res = tint_workgroupUniformLoad_arg_0();
prevent_dce.inner = res;
}