mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-10 05:57:51 +00:00
Update MSL generator to handle casts of packed types.
Currently in the MSL backend we cast int values to uint in order to get the correct WGSL behaviour for over/under flow. This fails in the case of host shareable buffers as they use `packed` types which need to get cast to the non-packed version first. Bug: tint:1677 Change-Id: I57b70abaa8ca614472a26d63f19c1aef2bd64668 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/103986 Reviewed-by: Ben Clayton <bclayton@google.com> Kokoro: Kokoro <noreply+kokoro@google.com> Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
This commit is contained in:
committed by
Dawn LUCI CQ
parent
d1a5f93630
commit
2bcade246a
@@ -4,7 +4,7 @@ using namespace metal;
|
||||
kernel void f() {
|
||||
int const a = 4;
|
||||
int3 const b = int3(1, 2, 3);
|
||||
int3 const r = as_type<int3>((as_type<uint>(a) + as_type<uint3>(b)));
|
||||
int3 const r = as_type<int3>((as_type<uint>(a) + as_type<uint3>(as_type<int3>(b))));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ using namespace metal;
|
||||
kernel void f() {
|
||||
int3 const a = int3(1, 2, 3);
|
||||
int const b = 4;
|
||||
int3 const r = as_type<int3>((as_type<uint3>(a) + as_type<uint>(b)));
|
||||
int3 const r = as_type<int3>((as_type<uint3>(as_type<int3>(a)) + as_type<uint>(b)));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ using namespace metal;
|
||||
kernel void f() {
|
||||
int3 const a = int3(1, 2, 3);
|
||||
int3 const b = int3(4, 5, 6);
|
||||
int3 const r = as_type<int3>((as_type<uint3>(a) + as_type<uint3>(b)));
|
||||
int3 const r = as_type<int3>((as_type<uint3>(as_type<int3>(a)) + as_type<uint3>(as_type<int3>(b))));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ using namespace metal;
|
||||
kernel void f() {
|
||||
int a = 4;
|
||||
int3 b = int3(0, 2, 0);
|
||||
int3 const r = (a / as_type<int3>((as_type<uint3>(b) + as_type<uint3>(b))));
|
||||
int3 const r = (a / as_type<int3>((as_type<uint3>(as_type<int3>(b)) + as_type<uint3>(as_type<int3>(b)))));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ using namespace metal;
|
||||
kernel void f() {
|
||||
int3 a = int3(1, 2, 3);
|
||||
int3 b = int3(0, 5, 0);
|
||||
int3 const r = (a / as_type<int3>((as_type<uint3>(b) + as_type<uint3>(b))));
|
||||
int3 const r = (a / as_type<int3>((as_type<uint3>(as_type<int3>(b)) + as_type<uint3>(as_type<int3>(b)))));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ using namespace metal;
|
||||
kernel void f() {
|
||||
int a = 4;
|
||||
int3 b = int3(0, 2, 0);
|
||||
int3 const r = (a % as_type<int3>((as_type<uint3>(b) + as_type<uint3>(b))));
|
||||
int3 const r = (a % as_type<int3>((as_type<uint3>(as_type<int3>(b)) + as_type<uint3>(as_type<int3>(b)))));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ using namespace metal;
|
||||
kernel void f() {
|
||||
int3 a = int3(1, 2, 3);
|
||||
int3 b = int3(0, 5, 0);
|
||||
int3 const r = (a % as_type<int3>((as_type<uint3>(b) + as_type<uint3>(b))));
|
||||
int3 const r = (a % as_type<int3>((as_type<uint3>(as_type<int3>(b)) + as_type<uint3>(as_type<int3>(b)))));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ using namespace metal;
|
||||
kernel void f() {
|
||||
int const a = 4;
|
||||
int3 const b = int3(1, 2, 3);
|
||||
int3 const r = as_type<int3>((as_type<uint>(a) * as_type<uint3>(b)));
|
||||
int3 const r = as_type<int3>((as_type<uint>(a) * as_type<uint3>(as_type<int3>(b))));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ using namespace metal;
|
||||
kernel void f() {
|
||||
int3 const a = int3(1, 2, 3);
|
||||
int const b = 4;
|
||||
int3 const r = as_type<int3>((as_type<uint3>(a) * as_type<uint>(b)));
|
||||
int3 const r = as_type<int3>((as_type<uint3>(as_type<int3>(a)) * as_type<uint>(b)));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ using namespace metal;
|
||||
kernel void f() {
|
||||
int3 const a = int3(1, 2, 3);
|
||||
int3 const b = int3(4, 5, 6);
|
||||
int3 const r = as_type<int3>((as_type<uint3>(a) * as_type<uint3>(b)));
|
||||
int3 const r = as_type<int3>((as_type<uint3>(as_type<int3>(a)) * as_type<uint3>(as_type<int3>(b))));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ using namespace metal;
|
||||
kernel void f() {
|
||||
int const a = 4;
|
||||
int3 const b = int3(1, 2, 3);
|
||||
int3 const r = as_type<int3>((as_type<uint>(a) - as_type<uint3>(b)));
|
||||
int3 const r = as_type<int3>((as_type<uint>(a) - as_type<uint3>(as_type<int3>(b))));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ using namespace metal;
|
||||
kernel void f() {
|
||||
int3 const a = int3(1, 2, 3);
|
||||
int const b = 4;
|
||||
int3 const r = as_type<int3>((as_type<uint3>(a) - as_type<uint>(b)));
|
||||
int3 const r = as_type<int3>((as_type<uint3>(as_type<int3>(a)) - as_type<uint>(b)));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ using namespace metal;
|
||||
kernel void f() {
|
||||
int3 const a = int3(1, 2, 3);
|
||||
int3 const b = int3(4, 5, 6);
|
||||
int3 const r = as_type<int3>((as_type<uint3>(a) - as_type<uint3>(b)));
|
||||
int3 const r = as_type<int3>((as_type<uint3>(as_type<int3>(a)) - as_type<uint3>(as_type<int3>(b))));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user