MSL writer: make signed int overflow defined behaviour

Bug: tint:124
Change-Id: Icf545b633d6390ceb7f639e80111390005e311a1
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/60100
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Reviewed-by: David Neto <dneto@google.com>
This commit is contained in:
Antonio Maiorano
2021-07-29 13:51:47 +00:00
committed by Tint LUCI CQ
parent 1f0200a3ff
commit e5dbe24e94
651 changed files with 3963 additions and 3048 deletions

View File

@@ -1,6 +1,11 @@
#include <metal_stdlib>
using namespace metal;
int tint_unary_minus(const int v) {
return select(-v, v, v == -2147483648);
}
struct tint_padded_array_element {
/* 0x0000 */ int el;
/* 0x0004 */ int8_t tint_pad[12];
@@ -29,11 +34,11 @@ void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
break;
}
int const x_33 = a;
a = ((x_33 / 2) - 1);
a = as_type<int>((as_type<uint>((x_33 / 2)) - as_type<uint>(1)));
}
int const x_36 = a;
int const x_38 = x_6.x_GLF_uniform_int_values.arr[0].el;
if ((x_36 == -(x_38))) {
if ((x_36 == tint_unary_minus(x_38))) {
int const x_45 = x_6.x_GLF_uniform_int_values.arr[0].el;
int const x_48 = x_6.x_GLF_uniform_int_values.arr[1].el;
int const x_51 = x_6.x_GLF_uniform_int_values.arr[1].el;

View File

@@ -1,6 +1,11 @@
#include <metal_stdlib>
using namespace metal;
int tint_unary_minus(const int v) {
return select(-v, v, v == -2147483648);
}
struct tint_padded_array_element {
/* 0x0000 */ int el;
/* 0x0004 */ int8_t tint_pad[12];
@@ -29,11 +34,11 @@ void main_1(constant buf0& x_6, thread float4* const tint_symbol_4) {
break;
}
int const x_33 = a;
a = ((x_33 / 2) - 1);
a = as_type<int>((as_type<uint>((x_33 / 2)) - as_type<uint>(1)));
}
int const x_36 = a;
int const x_38 = x_6.x_GLF_uniform_int_values.arr[0].el;
if ((x_36 == -(x_38))) {
if ((x_36 == tint_unary_minus(x_38))) {
int const x_45 = x_6.x_GLF_uniform_int_values.arr[0].el;
int const x_48 = x_6.x_GLF_uniform_int_values.arr[1].el;
int const x_51 = x_6.x_GLF_uniform_int_values.arr[1].el;