blob: d647e0248776a617c31bdd0883ebb50ec522d317 [file] [log] [blame]
<!DOCTYPE html>
<html>
<meta charset=utf-8>
<meta name="timeout" content="long">
<title>Times.</title>
<script src="js/test-harness.js"></script>
<script src="../js/webgpu-functions.js"></script>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script>
const whlslTests = {};
const epsilon = 0.0001;
whlslTests.vectorTimes = async () => {
const program = `
float foo() {
float2 x = float2(2, 5);
float2 y = float2(3, 10);
float2 r = y * x;
return r.x / r.y;
}
`;
assert_approx_equals(await callFloatFunction(program, "foo", []), 6/50, epsilon);
};
whlslTests.vectorTimesWithScalar = async () => {
const program = `
float foo() {
float2 x = float2(10, 20);
float2 r = x * 2.0;
return r.x * r.y;
}
`;
assert_approx_equals(await callFloatFunction(program, "foo", []), 20 * 40, epsilon);
};
whlslTests.vectorTimesWithScalar2 = async () => {
const program = `
float foo() {
float2 x = float2(10, 20);
float2 r = 2.0 * x;
return r.x * r.y;
}
`;
assert_approx_equals(await callFloatFunction(program, "foo", []), 20 * 40, epsilon);
};
whlslTests.matrixTimes = async () => {
const program = `
bool foo() {
float2x2 m;
m[0] = float2(20, 30);
m[1] = float2(40, 50);
float2x2 m2;
m2[0] = float2(-1.0, -1.0);
m2[1] = float2(-1.0, -1.0);
m = m * m2;
if (m[0][0] == -20.0 && m[0][1] == -30.0 && m[1][0] == -40.0 && m[1][1] == -50.0)
return true;
return false;
}
`;
assert_equals(await callBoolFunction(program, "foo", []), true);
};
whlslTests.matrixTimesScalar = async () => {
const program = `
bool foo() {
float2x2 m;
m[0] = float2(20, 30);
m[1] = float2(40, 50);
m = m * -1.0;
if (m[0][0] == -20.0 && m[0][1] == -30.0 && m[1][0] == -40.0 && m[1][1] == -50.0)
return true;
return false;
}
`;
assert_equals(await callBoolFunction(program, "foo", []), true);
};
whlslTests.matrixTimesScalar2 = async () => {
const program = `
bool foo() {
float2x2 m;
m[0] = float2(20, 30);
m[1] = float2(40, 50);
m = -1.0 * m;
if (m[0][0] == -20.0 && m[0][1] == -30.0 && m[1][0] == -40.0 && m[1][1] == -50.0)
return true;
return false;
}
`;
assert_equals(await callBoolFunction(program, "foo", []), true);
};
runTests(whlslTests);
</script>
</html>