Log Message
[WHLSL] Add unary plus https://bugs.webkit.org/show_bug.cgi?id=200753 Reviewed by Saam Barati.
Source/WebCore: HLSL has these, so we should too. Test: webgpu/whlsl/vector-matrix-addition-subtraction.html * Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt: LayoutTests: * webgpu/whlsl/vector-matrix-addition-subtraction-expected.txt: Added. * webgpu/whlsl/vector-matrix-addition-subtraction.html: Added.
Modified Paths
- trunk/LayoutTests/ChangeLog
- trunk/Source/WebCore/ChangeLog
- trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (248755 => 248756)
--- trunk/LayoutTests/ChangeLog 2019-08-16 01:50:05 UTC (rev 248755)
+++ trunk/LayoutTests/ChangeLog 2019-08-16 01:54:20 UTC (rev 248756)
@@ -1,5 +1,15 @@
2019-08-15 Myles C. Maxfield <mmaxfi...@apple.com>
+ [WHLSL] Add unary plus
+ https://bugs.webkit.org/show_bug.cgi?id=200753
+
+ Reviewed by Saam Barati.
+
+ * webgpu/whlsl/vector-matrix-addition-subtraction-expected.txt: Added.
+ * webgpu/whlsl/vector-matrix-addition-subtraction.html: Added.
+
+2019-08-15 Myles C. Maxfield <mmaxfi...@apple.com>
+
[WHLSL] Matrices should have constructors that take a flattened list of scalars
https://bugs.webkit.org/show_bug.cgi?id=200804
Added: trunk/LayoutTests/webgpu/whlsl/vector-matrix-addition-subtraction-expected.txt (0 => 248756)
--- trunk/LayoutTests/webgpu/whlsl/vector-matrix-addition-subtraction-expected.txt (rev 0)
+++ trunk/LayoutTests/webgpu/whlsl/vector-matrix-addition-subtraction-expected.txt 2019-08-16 01:54:20 UTC (rev 248756)
@@ -0,0 +1,6 @@
+
+PASS vectorAddition
+PASS vectorSubtraction
+PASS matrixAddition
+PASS matrixSubtraction
+
Added: trunk/LayoutTests/webgpu/whlsl/vector-matrix-addition-subtraction.html (0 => 248756)
--- trunk/LayoutTests/webgpu/whlsl/vector-matrix-addition-subtraction.html (rev 0)
+++ trunk/LayoutTests/webgpu/whlsl/vector-matrix-addition-subtraction.html 2019-08-16 01:54:20 UTC (rev 248756)
@@ -0,0 +1,208 @@
+<!DOCTYPE html>
+<html>
+<meta charset=utf-8>
+<meta name="timeout" content="long">
+<title>Test prefix/postfix.</title>
+<script src=""
+<script src=""
+<script src=""
+<script src=""
+<script>
+const whlslTests = {};
+const epsilon = 0.0001;
+
+whlslTests.vectorAddition = async () => {
+ let program = `
+ float a()
+ {
+ float2 v = float2(3, 4);
+ float2 u = v + 7;
+ return u.x;
+ }
+ float b()
+ {
+ float2 v = float2(3, 4);
+ float2 u = v + 7;
+ return u.y;
+ }
+ float c()
+ {
+ float2 v = float2(3, 4);
+ float2 u = 7 + v;
+ return u.x;
+ }
+ float d()
+ {
+ float2 v = float2(3, 4);
+ float2 u = 7 + v;
+ return u.y;
+ }
+ float e()
+ {
+ float2 v = float2(3, 4);
+ float2 u = +v;
+ return u.x;
+ }
+ float f()
+ {
+ float2 v = float2(3, 4);
+ float2 u = +v;
+ return u.y;
+ }
+ `;
+
+ assert_approx_equals(await callFloatFunction(program, "a", []), 10, epsilon);
+ assert_approx_equals(await callFloatFunction(program, "b", []), 11, epsilon);
+ assert_approx_equals(await callFloatFunction(program, "c", []), 10, epsilon);
+ assert_approx_equals(await callFloatFunction(program, "d", []), 11, epsilon);
+ assert_approx_equals(await callFloatFunction(program, "e", []), 3, epsilon);
+ assert_approx_equals(await callFloatFunction(program, "f", []), 4, epsilon);
+};
+
+whlslTests.vectorSubtraction = async () => {
+ let program = `
+ float a()
+ {
+ float2 v = float2(3, 4);
+ float2 u = v - 7;
+ return u.x;
+ }
+ float b()
+ {
+ float2 v = float2(3, 4);
+ float2 u = v - 7;
+ return u.y;
+ }
+ float c()
+ {
+ float2 v = float2(3, 4);
+ float2 u = 7 - v;
+ return u.x;
+ }
+ float d()
+ {
+ float2 v = float2(3, 4);
+ float2 u = 7 - v;
+ return u.y;
+ }
+ float e()
+ {
+ float2 v = float2(3, 4);
+ float2 u = -v;
+ return u.x;
+ }
+ float f()
+ {
+ float2 v = float2(3, 4);
+ float2 u = -v;
+ return u.y;
+ }
+ `;
+
+ assert_approx_equals(await callFloatFunction(program, "a", []), -4, epsilon);
+ assert_approx_equals(await callFloatFunction(program, "b", []), -3, epsilon);
+ assert_approx_equals(await callFloatFunction(program, "c", []), 4, epsilon);
+ assert_approx_equals(await callFloatFunction(program, "d", []), 3, epsilon);
+ assert_approx_equals(await callFloatFunction(program, "e", []), -3, epsilon);
+ assert_approx_equals(await callFloatFunction(program, "f", []), -4, epsilon);
+};
+
+whlslTests.matrixAddition = async () => {
+ let program = `
+ float a()
+ {
+ float2x2 m = float2x2(float2(3, 4), float2(5, 6));
+ float2x2 n = m + 7;
+ return n[0][0];
+ }
+ float b()
+ {
+ float2x2 m = float2x2(float2(3, 4), float2(5, 6));
+ float2x2 n = m + 7;
+ return n[0][1];
+ }
+ float c()
+ {
+ float2x2 m = float2x2(float2(3, 4), float2(5, 6));
+ float2x2 n = 7 + m;
+ return n[0][0];
+ }
+ float d()
+ {
+ float2x2 m = float2x2(float2(3, 4), float2(5, 6));
+ float2x2 n = 7 + m;
+ return n[0][1];
+ }
+ float e()
+ {
+ float2x2 m = float2x2(float2(3, 4), float2(5, 6));
+ float2x2 n = +m;
+ return n[0][0];
+ }
+ float f()
+ {
+ float2x2 m = float2x2(float2(3, 4), float2(5, 6));
+ float2x2 n = +m;
+ return n[0][1];
+ }
+ `;
+
+ assert_approx_equals(await callFloatFunction(program, "a", []), 10, epsilon);
+ assert_approx_equals(await callFloatFunction(program, "b", []), 11, epsilon);
+ assert_approx_equals(await callFloatFunction(program, "c", []), 10, epsilon);
+ assert_approx_equals(await callFloatFunction(program, "d", []), 11, epsilon);
+ assert_approx_equals(await callFloatFunction(program, "e", []), 3, epsilon);
+ assert_approx_equals(await callFloatFunction(program, "f", []), 4, epsilon);
+};
+
+whlslTests.matrixSubtraction = async () => {
+ let program = `
+ float a()
+ {
+ float2x2 m = float2x2(float2(3, 4), float2(5, 6));
+ float2x2 n = m - 7;
+ return n[0][0];
+ }
+ float b()
+ {
+ float2x2 m = float2x2(float2(3, 4), float2(5, 6));
+ float2x2 n = m - 7;
+ return n[0][1];
+ }
+ float c()
+ {
+ float2x2 m = float2x2(float2(3, 4), float2(5, 6));
+ float2x2 n = 7 - m;
+ return n[0][0];
+ }
+ float d()
+ {
+ float2x2 m = float2x2(float2(3, 4), float2(5, 6));
+ float2x2 n = 7 - m;
+ return n[0][1];
+ }
+ float e()
+ {
+ float2x2 m = float2x2(float2(3, 4), float2(5, 6));
+ float2x2 n = -m;
+ return n[0][0];
+ }
+ float f()
+ {
+ float2x2 m = float2x2(float2(3, 4), float2(5, 6));
+ float2x2 n = -m;
+ return n[0][1];
+ }
+ `;
+
+ assert_approx_equals(await callFloatFunction(program, "a", []), -4, epsilon);
+ assert_approx_equals(await callFloatFunction(program, "b", []), -3, epsilon);
+ assert_approx_equals(await callFloatFunction(program, "c", []), 4, epsilon);
+ assert_approx_equals(await callFloatFunction(program, "d", []), 3, epsilon);
+ assert_approx_equals(await callFloatFunction(program, "e", []), -3, epsilon);
+ assert_approx_equals(await callFloatFunction(program, "f", []), -4, epsilon);
+};
+
+runTests(whlslTests);
+</script>
+</html>
Modified: trunk/Source/WebCore/ChangeLog (248755 => 248756)
--- trunk/Source/WebCore/ChangeLog 2019-08-16 01:50:05 UTC (rev 248755)
+++ trunk/Source/WebCore/ChangeLog 2019-08-16 01:54:20 UTC (rev 248756)
@@ -1,5 +1,18 @@
2019-08-15 Myles C. Maxfield <mmaxfi...@apple.com>
+ [WHLSL] Add unary plus
+ https://bugs.webkit.org/show_bug.cgi?id=200753
+
+ Reviewed by Saam Barati.
+
+ HLSL has these, so we should too.
+
+ Test: webgpu/whlsl/vector-matrix-addition-subtraction.html
+
+ * Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt:
+
+2019-08-15 Myles C. Maxfield <mmaxfi...@apple.com>
+
[WHLSL] Matrices should have constructors that take a flattened list of scalars
https://bugs.webkit.org/show_bug.cgi?id=200804
Modified: trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt (248755 => 248756)
--- trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt 2019-08-16 01:50:05 UTC (rev 248755)
+++ trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt 2019-08-16 01:54:20 UTC (rev 248756)
@@ -32994,6 +32994,24 @@
native float4x4 operator+(float4x4, float4x4);
native float4x4 operator+(float, float4x4);
native float4x4 operator+(float4x4, float);
+native uint2 operator+(uint2);
+native uint3 operator+(uint3);
+native uint4 operator+(uint4);
+native int2 operator+(int2);
+native int3 operator+(int3);
+native int4 operator+(int4);
+native float2 operator+(float2);
+native float3 operator+(float3);
+native float4 operator+(float4);
+native float2x2 operator+(float2x2);
+native float2x3 operator+(float2x3);
+native float2x4 operator+(float2x4);
+native float3x2 operator+(float3x2);
+native float3x3 operator+(float3x3);
+native float3x4 operator+(float3x4);
+native float4x2 operator+(float4x2);
+native float4x3 operator+(float4x3);
+native float4x4 operator+(float4x4);
/* Functions named operator.zxx */
bool3 operator.zxx(bool3 v) {
_______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes