diff --git a/src/spread/mult-expr.case b/src/spread/mult-expr.case
new file mode 100644
index 0000000000000000000000000000000000000000..3f5fd6c2fd15ab62a6337f8a384153fc34eee090
--- /dev/null
+++ b/src/spread/mult-expr.case
@@ -0,0 +1,33 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: Spread operator applied to AssignmentExpression following other elements
+template: default
+info: |
+    12.3.6.1 Runtime Semantics: ArgumentListEvaluation
+
+    ArgumentList : ArgumentList , ... AssignmentExpression
+
+    1. Let precedingArgs be the result of evaluating ArgumentList.
+    2. Let spreadRef be the result of evaluating AssignmentExpression.
+    3. Let iterator be GetIterator(GetValue(spreadRef) ).
+    4. ReturnIfAbrupt(iterator).
+    5. Repeat
+       a. Let next be IteratorStep(iterator).
+       b. ReturnIfAbrupt(next).
+       c. If next is false, return precedingArgs.
+---*/
+
+//- setup
+var source = [3, 4, 5];
+var target;
+//- args
+1, 2, ...target = source
+//- body
+assert.sameValue(arguments.length, 5);
+assert.sameValue(arguments[0], 1);
+assert.sameValue(arguments[1], 2);
+assert.sameValue(arguments[2], 3);
+assert.sameValue(arguments[3], 4);
+assert.sameValue(arguments[4], 5);
+assert.sameValue(target, source);
diff --git a/src/spread/mult-literal.case b/src/spread/mult-literal.case
new file mode 100644
index 0000000000000000000000000000000000000000..a949b590f14e7f62d08ecf1177b6eb53be2303cd
--- /dev/null
+++ b/src/spread/mult-literal.case
@@ -0,0 +1,29 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: Spread operator applied to AssignmentExpression following other elements
+template: default
+info: |
+    12.3.6.1 Runtime Semantics: ArgumentListEvaluation
+
+    ArgumentList : ArgumentList , ... AssignmentExpression
+
+    1. Let precedingArgs be the result of evaluating ArgumentList.
+    2. Let spreadRef be the result of evaluating AssignmentExpression.
+    3. Let iterator be GetIterator(GetValue(spreadRef) ).
+    4. ReturnIfAbrupt(iterator).
+    5. Repeat
+       a. Let next be IteratorStep(iterator).
+       b. ReturnIfAbrupt(next).
+       c. If next is false, return precedingArgs.
+---*/
+
+//- args
+5, ...[6, 7, 8], 9
+//- body
+assert.sameValue(arguments.length, 5);
+assert.sameValue(arguments[0], 5);
+assert.sameValue(arguments[1], 6);
+assert.sameValue(arguments[2], 7);
+assert.sameValue(arguments[3], 8);
+assert.sameValue(arguments[4], 9);
diff --git a/src/spread/sngl-expr.case b/src/spread/sngl-expr.case
new file mode 100644
index 0000000000000000000000000000000000000000..e1c5b85d04a66525ab6303f139b514530780cc88
--- /dev/null
+++ b/src/spread/sngl-expr.case
@@ -0,0 +1,35 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: Spread operator applied to AssignmentExpression as only element
+template: default
+info: |
+    12.3.6.1 Runtime Semantics: ArgumentListEvaluation
+
+    ArgumentList : ... AssignmentExpression
+
+    1. Let list be an empty List.
+    2. Let spreadRef be the result of evaluating AssignmentExpression.
+    3. Let spreadObj be GetValue(spreadRef).
+    4. Let iterator be GetIterator(spreadObj).
+    5. ReturnIfAbrupt(iterator).
+    6. Repeat
+       a. Let next be IteratorStep(iterator).
+       b. ReturnIfAbrupt(next).
+       c. If next is false, return list.
+       d. Let nextArg be IteratorValue(next).
+       e. ReturnIfAbrupt(nextArg).
+       f. Append nextArg as the last element of list.
+---*/
+
+//- setup
+var source = [2, 3, 4];
+var target;
+//- args
+...target = source
+//- body
+assert.sameValue(arguments.length, 3);
+assert.sameValue(arguments[0], 2);
+assert.sameValue(arguments[1], 3);
+assert.sameValue(arguments[2], 4);
+assert.sameValue(target, source);
diff --git a/src/spread/sngl-literal.case b/src/spread/sngl-literal.case
new file mode 100644
index 0000000000000000000000000000000000000000..1e647fd1802382a1f82c3ce7331b6792fb09c8a1
--- /dev/null
+++ b/src/spread/sngl-literal.case
@@ -0,0 +1,31 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: Spread operator applied to array literal as only element
+template: default
+info: |
+    12.3.6.1 Runtime Semantics: ArgumentListEvaluation
+
+    ArgumentList : ... AssignmentExpression
+
+    1. Let list be an empty List.
+    2. Let spreadRef be the result of evaluating AssignmentExpression.
+    3. Let spreadObj be GetValue(spreadRef).
+    4. Let iterator be GetIterator(spreadObj).
+    5. ReturnIfAbrupt(iterator).
+    6. Repeat
+       a. Let next be IteratorStep(iterator).
+       b. ReturnIfAbrupt(next).
+       c. If next is false, return list.
+       d. Let nextArg be IteratorValue(next).
+       e. ReturnIfAbrupt(nextArg).
+       f. Append nextArg as the last element of list.
+---*/
+
+//- args
+...[3, 4, 5]
+//- body
+assert.sameValue(arguments.length, 3);
+assert.sameValue(arguments[0], 3);
+assert.sameValue(arguments[1], 4);
+assert.sameValue(arguments[2], 5);