[WSL] Add tests for storing to arrays
authorfpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 1 Sep 2017 18:57:15 +0000 (18:57 +0000)
committerfpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 1 Sep 2017 18:57:15 +0000 (18:57 +0000)
https://bugs.webkit.org/show_bug.cgi?id=176237

Reviewed by Myles Maxfield.

Storing to arrays works now.

* WebGPUShadingLanguageRI/ArrayType.js:
(ArrayType):
* WebGPUShadingLanguageRI/Test.js:
(TEST_threadArrayStore):
(TEST_deviceArrayStore):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@221490 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Tools/ChangeLog
Tools/WebGPUShadingLanguageRI/ArrayType.js
Tools/WebGPUShadingLanguageRI/Test.js

index 8dbc042..e1a7a4d 100644 (file)
@@ -1,3 +1,18 @@
+2017-09-01  Filip Pizlo  <fpizlo@apple.com>
+
+        [WSL] Add tests for storing to arrays
+        https://bugs.webkit.org/show_bug.cgi?id=176237
+
+        Reviewed by Myles Maxfield.
+        
+        Storing to arrays works now.
+
+        * WebGPUShadingLanguageRI/ArrayType.js:
+        (ArrayType):
+        * WebGPUShadingLanguageRI/Test.js:
+        (TEST_threadArrayStore):
+        (TEST_deviceArrayStore):
+
 2017-09-01  Alex Christensen  <achristensen@webkit.org>
 
         Replace WKUIDelegatePrivate's isPlayingMediaDidChange with KVO _isPlayingAudio on WKWebView
index acd85f6..9d0caf1 100644 (file)
@@ -27,6 +27,7 @@
 class ArrayType extends Type {
     constructor(origin, elementType, numElements)
     {
+        super();
         this._origin = origin;
         this._elementType = elementType;
         this._numElements = numElements;
index b570f8c..3c0cc45 100644 (file)
@@ -183,6 +183,46 @@ function TEST_deviceArrayLoad()
     checkInt(program, result, 89);
 }
 
+function TEST_threadArrayStore()
+{
+    let program = doPrep(`
+        void foo(thread int[] array, int value)
+        {
+            array[0u] = value;
+        }`);
+    let buffer = new EBuffer(1);
+    buffer.set(0, 15);
+    let arrayRef = TypedValue.box(
+        new ArrayRefType(null, "thread", program.intrinsics.int32),
+        new EArrayRef(new EPtr(buffer, 0), 1));
+    callFunction(program, "foo", [], [arrayRef, makeInt(program, 65)]);
+    if (buffer.get(0) != 65)
+        throw new Error("Bad value stored into buffer (expected 65): " + buffer.get(0));
+    callFunction(program, "foo", [], [arrayRef, makeInt(program, -111)]);
+    if (buffer.get(0) != -111)
+        throw new Error("Bad value stored into buffer (expected -111): " + buffer.get(0));
+}
+
+function TEST_deviceArrayStore()
+{
+    let program = doPrep(`
+        void foo(device int[] array, int value)
+        {
+            array[0u] = value;
+        }`);
+    let buffer = new EBuffer(1);
+    buffer.set(0, 15);
+    let arrayRef = TypedValue.box(
+        new ArrayRefType(null, "device", program.intrinsics.int32),
+        new EArrayRef(new EPtr(buffer, 0), 1));
+    callFunction(program, "foo", [], [arrayRef, makeInt(program, 65)]);
+    if (buffer.get(0) != 65)
+        throw new Error("Bad value stored into buffer (expected 65): " + buffer.get(0));
+    callFunction(program, "foo", [], [arrayRef, makeInt(program, -111)]);
+    if (buffer.get(0) != -111)
+        throw new Error("Bad value stored into buffer (expected -111): " + buffer.get(0));
+}
+
 let before = preciseTime();
 
 let filter = /.*/; // run everything by default