mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-13 23:26:24 +00:00
Restore "MSL writer: make signed int overflow defined behaviour"
This reverts commit e33b0baa08.
Added tests/expressions/literals/intmin.wgsl test.
Bug: tint:124
Change-Id: I3d46f939ff20fa377ddb5fcb52f9afe728b8e430
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/60441
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Reviewed-by: David Neto <dneto@google.com>
This commit is contained in:
committed by
Tint LUCI CQ
parent
9bdf2dcc6b
commit
d388bc9b36
@@ -1,6 +1,11 @@
|
||||
#include <metal_stdlib>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
int tint_unary_minus(const int v) {
|
||||
return select(-v, v, v == -2147483648);
|
||||
}
|
||||
|
||||
struct buf0 {
|
||||
/* 0x0000 */ int minusOne;
|
||||
};
|
||||
@@ -16,11 +21,11 @@ void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
|
||||
int negMinValue = 0;
|
||||
minValue = (-2147483647 - 1);
|
||||
int const x_25 = minValue;
|
||||
negMinValue = -(x_25);
|
||||
negMinValue = tint_unary_minus(x_25);
|
||||
int const x_27 = negMinValue;
|
||||
int const x_28 = minValue;
|
||||
int const x_30 = x_7.minusOne;
|
||||
if ((x_27 == (x_28 * x_30))) {
|
||||
if ((x_27 == as_type<int>((as_type<uint>(x_28) * as_type<uint>(x_30))))) {
|
||||
*(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
|
||||
} else {
|
||||
*(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
#include <metal_stdlib>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
int tint_unary_minus(const int v) {
|
||||
return select(-v, v, v == -2147483648);
|
||||
}
|
||||
|
||||
struct buf0 {
|
||||
/* 0x0000 */ int minusOne;
|
||||
};
|
||||
@@ -16,11 +21,11 @@ void main_1(constant buf0& x_7, thread float4* const tint_symbol_4) {
|
||||
int negMinValue = 0;
|
||||
minValue = (-2147483647 - 1);
|
||||
int const x_25 = minValue;
|
||||
negMinValue = -(x_25);
|
||||
negMinValue = tint_unary_minus(x_25);
|
||||
int const x_27 = negMinValue;
|
||||
int const x_28 = minValue;
|
||||
int const x_30 = x_7.minusOne;
|
||||
if ((x_27 == (x_28 * x_30))) {
|
||||
if ((x_27 == as_type<int>((as_type<uint>(x_28) * as_type<uint>(x_30))))) {
|
||||
*(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
|
||||
} else {
|
||||
*(tint_symbol_4) = float4(0.0f, 0.0f, 0.0f, 0.0f);
|
||||
|
||||
Reference in New Issue
Block a user