dawn-cmake/test/bug/tint/977.spvasm.expected.hlsl
Ben Clayton 81d4ed0d9c Fix operator% for f32 and vecN<f32>
https://github.com/gpuweb/gpuweb/pull/1945 changes the SPIR-V mapping of this operator so that it now maps to OpFRem instead of OpFMod. Polyfill OpFMod with `x - y * floor(x / y)`

Also map the MSL output of this operator to use `fmod()`.

Behavior of this operator is now consistent across all backends.

Fixed: tint:945
Fixed: tint:977
Fixed: tint:1010
Change-Id: Iefa009b905989c55ace24e073ab0e261c7cf69b0
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/58393
Auto-Submit: Ben Clayton <bclayton@google.com>
Commit-Queue: Ben Clayton <bclayton@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: David Neto <dneto@google.com>
2021-07-21 14:11:01 +00:00

56 lines
1.4 KiB
HLSL

static uint3 gl_GlobalInvocationID = uint3(0u, 0u, 0u);
RWByteAddressBuffer resultMatrix : register(u2, space0);
ByteAddressBuffer firstMatrix : register(t0, space0);
ByteAddressBuffer secondMatrix : register(t1, space0);
cbuffer cbuffer_x_46 : register(b3, space0) {
uint4 x_46[1];
};
float binaryOperation_f1_f1_(inout float a, inout float b) {
float x_26 = 0.0f;
const float x_13 = b;
if ((x_13 == 0.0f)) {
return 1.0f;
}
const float x_21 = b;
if (!((round((x_21 - (2.0f * floor((x_21 / 2.0f))))) == 1.0f))) {
const float x_29 = a;
const float x_31 = b;
x_26 = pow(abs(x_29), x_31);
} else {
const float x_34 = a;
const float x_36 = a;
const float x_38 = b;
x_26 = (sign(x_34) * pow(abs(x_36), x_38));
}
return x_26;
}
void main_1() {
int index = 0;
int a_1 = 0;
float param = 0.0f;
float param_1 = 0.0f;
const uint x_54 = gl_GlobalInvocationID.x;
index = asint(x_54);
a_1 = -10;
const int x_63 = index;
param = -4.0f;
param_1 = -3.0f;
const float x_68 = binaryOperation_f1_f1_(param, param_1);
resultMatrix.Store((4u * uint(x_63)), asuint(x_68));
return;
}
struct tint_symbol_1 {
uint3 gl_GlobalInvocationID_param : SV_DispatchThreadID;
};
[numthreads(1, 1, 1)]
void main(tint_symbol_1 tint_symbol) {
const uint3 gl_GlobalInvocationID_param = tint_symbol.gl_GlobalInvocationID_param;
gl_GlobalInvocationID = gl_GlobalInvocationID_param;
main_1();
return;
}