Title: [248756] trunk
Revision
248756
Author
mmaxfi...@apple.com
Date
2019-08-15 18:54:20 -0700 (Thu, 15 Aug 2019)

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

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

Reply via email to