blob: 21044bf241520a73787b9c729c5996d40610eb19 [file] [log] [blame]
// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
// VMOptions=--optimization-counter-threshold=10 --use-far-branches
// Library tag to be able to run in html test framework.
library float32x4_shuffle_test;
import "package:expect/expect.dart";
import 'dart:typed_data';
void testShuffle0() {
var m = new Float32x4(1.0, 2.0, 3.0, 4.0);
var c;
c = m.xxxx;
Expect.equals(1.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(1.0, c.w);
c = m.xxxy;
Expect.equals(1.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(2.0, c.w);
c = m.xxxz;
Expect.equals(1.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(3.0, c.w);
c = m.xxxw;
Expect.equals(1.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(4.0, c.w);
c = m.xxyx;
Expect.equals(1.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(1.0, c.w);
c = m.xxyy;
Expect.equals(1.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(2.0, c.w);
c = m.xxyz;
Expect.equals(1.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(3.0, c.w);
c = m.xxyw;
Expect.equals(1.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(4.0, c.w);
c = m.xxzx;
Expect.equals(1.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(1.0, c.w);
c = m.xxzy;
Expect.equals(1.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(2.0, c.w);
c = m.xxzz;
Expect.equals(1.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(3.0, c.w);
c = m.xxzw;
Expect.equals(1.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(4.0, c.w);
c = m.xxwx;
Expect.equals(1.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(1.0, c.w);
c = m.xxwy;
Expect.equals(1.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(2.0, c.w);
c = m.xxwz;
Expect.equals(1.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(3.0, c.w);
c = m.xxww;
Expect.equals(1.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(4.0, c.w);
c = m.xyxx;
Expect.equals(1.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(1.0, c.w);
c = m.xyxy;
Expect.equals(1.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(2.0, c.w);
c = m.xyxz;
Expect.equals(1.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(3.0, c.w);
c = m.xyxw;
Expect.equals(1.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(4.0, c.w);
c = m.xyyx;
Expect.equals(1.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(1.0, c.w);
c = m.xyyy;
Expect.equals(1.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(2.0, c.w);
c = m.xyyz;
Expect.equals(1.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(3.0, c.w);
c = m.xyyw;
Expect.equals(1.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(4.0, c.w);
c = m.xyzx;
Expect.equals(1.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(1.0, c.w);
c = m.xyzy;
Expect.equals(1.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(2.0, c.w);
c = m.xyzz;
Expect.equals(1.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(3.0, c.w);
c = m.xyzw;
Expect.equals(1.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(4.0, c.w);
c = m.xywx;
Expect.equals(1.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(1.0, c.w);
c = m.xywy;
Expect.equals(1.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(2.0, c.w);
c = m.xywz;
Expect.equals(1.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(3.0, c.w);
c = m.xyww;
Expect.equals(1.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(4.0, c.w);
c = m.xzxx;
Expect.equals(1.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(1.0, c.w);
c = m.xzxy;
Expect.equals(1.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(2.0, c.w);
c = m.xzxz;
Expect.equals(1.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(3.0, c.w);
c = m.xzxw;
Expect.equals(1.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(4.0, c.w);
c = m.xzyx;
Expect.equals(1.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(1.0, c.w);
c = m.xzyy;
Expect.equals(1.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(2.0, c.w);
c = m.xzyz;
Expect.equals(1.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(3.0, c.w);
c = m.xzyw;
Expect.equals(1.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(4.0, c.w);
c = m.xzzx;
Expect.equals(1.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(1.0, c.w);
c = m.xzzy;
Expect.equals(1.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(2.0, c.w);
c = m.xzzz;
Expect.equals(1.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(3.0, c.w);
c = m.xzzw;
Expect.equals(1.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(4.0, c.w);
c = m.xzwx;
Expect.equals(1.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(1.0, c.w);
c = m.xzwy;
Expect.equals(1.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(2.0, c.w);
c = m.xzwz;
Expect.equals(1.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(3.0, c.w);
c = m.xzww;
Expect.equals(1.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(4.0, c.w);
c = m.xwxx;
Expect.equals(1.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(1.0, c.w);
c = m.xwxy;
Expect.equals(1.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(2.0, c.w);
c = m.xwxz;
Expect.equals(1.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(3.0, c.w);
c = m.xwxw;
Expect.equals(1.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(4.0, c.w);
c = m.xwyx;
Expect.equals(1.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(1.0, c.w);
c = m.xwyy;
Expect.equals(1.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(2.0, c.w);
c = m.xwyz;
Expect.equals(1.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(3.0, c.w);
c = m.xwyw;
Expect.equals(1.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(4.0, c.w);
c = m.xwzx;
Expect.equals(1.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(1.0, c.w);
c = m.xwzy;
Expect.equals(1.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(2.0, c.w);
c = m.xwzz;
Expect.equals(1.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(3.0, c.w);
c = m.xwzw;
Expect.equals(1.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(4.0, c.w);
c = m.xwwx;
Expect.equals(1.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(1.0, c.w);
c = m.xwwy;
Expect.equals(1.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(2.0, c.w);
c = m.xwwz;
Expect.equals(1.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(3.0, c.w);
c = m.xwww;
Expect.equals(1.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(4.0, c.w);
}
void testShuffle1() {
var m = new Float32x4(1.0, 2.0, 3.0, 4.0);
var c;
c = m.yxxx;
Expect.equals(2.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(1.0, c.w);
c = m.yxxy;
Expect.equals(2.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(2.0, c.w);
c = m.yxxz;
Expect.equals(2.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(3.0, c.w);
c = m.yxxw;
Expect.equals(2.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(4.0, c.w);
c = m.yxyx;
Expect.equals(2.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(1.0, c.w);
c = m.yxyy;
Expect.equals(2.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(2.0, c.w);
c = m.yxyz;
Expect.equals(2.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(3.0, c.w);
c = m.yxyw;
Expect.equals(2.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(4.0, c.w);
c = m.yxzx;
Expect.equals(2.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(1.0, c.w);
c = m.yxzy;
Expect.equals(2.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(2.0, c.w);
c = m.yxzz;
Expect.equals(2.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(3.0, c.w);
c = m.yxzw;
Expect.equals(2.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(4.0, c.w);
c = m.yxwx;
Expect.equals(2.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(1.0, c.w);
c = m.yxwy;
Expect.equals(2.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(2.0, c.w);
c = m.yxwz;
Expect.equals(2.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(3.0, c.w);
c = m.yxww;
Expect.equals(2.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(4.0, c.w);
c = m.yyxx;
Expect.equals(2.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(1.0, c.w);
c = m.yyxy;
Expect.equals(2.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(2.0, c.w);
c = m.yyxz;
Expect.equals(2.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(3.0, c.w);
c = m.yyxw;
Expect.equals(2.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(4.0, c.w);
c = m.yyyx;
Expect.equals(2.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(1.0, c.w);
c = m.yyyy;
Expect.equals(2.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(2.0, c.w);
c = m.yyyz;
Expect.equals(2.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(3.0, c.w);
c = m.yyyw;
Expect.equals(2.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(4.0, c.w);
c = m.yyzx;
Expect.equals(2.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(1.0, c.w);
c = m.yyzy;
Expect.equals(2.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(2.0, c.w);
c = m.yyzz;
Expect.equals(2.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(3.0, c.w);
c = m.yyzw;
Expect.equals(2.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(4.0, c.w);
c = m.yywx;
Expect.equals(2.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(1.0, c.w);
c = m.yywy;
Expect.equals(2.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(2.0, c.w);
c = m.yywz;
Expect.equals(2.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(3.0, c.w);
c = m.yyww;
Expect.equals(2.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(4.0, c.w);
c = m.yzxx;
Expect.equals(2.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(1.0, c.w);
c = m.yzxy;
Expect.equals(2.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(2.0, c.w);
c = m.yzxz;
Expect.equals(2.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(3.0, c.w);
c = m.yzxw;
Expect.equals(2.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(4.0, c.w);
c = m.yzyx;
Expect.equals(2.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(1.0, c.w);
c = m.yzyy;
Expect.equals(2.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(2.0, c.w);
c = m.yzyz;
Expect.equals(2.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(3.0, c.w);
c = m.yzyw;
Expect.equals(2.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(4.0, c.w);
c = m.yzzx;
Expect.equals(2.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(1.0, c.w);
c = m.yzzy;
Expect.equals(2.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(2.0, c.w);
c = m.yzzz;
Expect.equals(2.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(3.0, c.w);
c = m.yzzw;
Expect.equals(2.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(4.0, c.w);
c = m.yzwx;
Expect.equals(2.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(1.0, c.w);
c = m.yzwy;
Expect.equals(2.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(2.0, c.w);
c = m.yzwz;
Expect.equals(2.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(3.0, c.w);
c = m.yzww;
Expect.equals(2.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(4.0, c.w);
c = m.ywxx;
Expect.equals(2.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(1.0, c.w);
c = m.ywxy;
Expect.equals(2.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(2.0, c.w);
c = m.ywxz;
Expect.equals(2.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(3.0, c.w);
c = m.ywxw;
Expect.equals(2.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(4.0, c.w);
c = m.ywyx;
Expect.equals(2.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(1.0, c.w);
c = m.ywyy;
Expect.equals(2.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(2.0, c.w);
c = m.ywyz;
Expect.equals(2.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(3.0, c.w);
c = m.ywyw;
Expect.equals(2.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(4.0, c.w);
c = m.ywzx;
Expect.equals(2.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(1.0, c.w);
c = m.ywzy;
Expect.equals(2.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(2.0, c.w);
c = m.ywzz;
Expect.equals(2.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(3.0, c.w);
c = m.ywzw;
Expect.equals(2.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(4.0, c.w);
c = m.ywwx;
Expect.equals(2.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(1.0, c.w);
c = m.ywwy;
Expect.equals(2.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(2.0, c.w);
c = m.ywwz;
Expect.equals(2.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(3.0, c.w);
c = m.ywww;
Expect.equals(2.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(4.0, c.w);
}
void testShuffle2() {
var m = new Float32x4(1.0, 2.0, 3.0, 4.0);
var c;
c = m.zxxx;
Expect.equals(3.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(1.0, c.w);
c = m.zxxy;
Expect.equals(3.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(2.0, c.w);
c = m.zxxz;
Expect.equals(3.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(3.0, c.w);
c = m.zxxw;
Expect.equals(3.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(4.0, c.w);
c = m.zxyx;
Expect.equals(3.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(1.0, c.w);
c = m.zxyy;
Expect.equals(3.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(2.0, c.w);
c = m.zxyz;
Expect.equals(3.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(3.0, c.w);
c = m.zxyw;
Expect.equals(3.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(4.0, c.w);
c = m.zxzx;
Expect.equals(3.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(1.0, c.w);
c = m.zxzy;
Expect.equals(3.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(2.0, c.w);
c = m.zxzz;
Expect.equals(3.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(3.0, c.w);
c = m.zxzw;
Expect.equals(3.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(4.0, c.w);
c = m.zxwx;
Expect.equals(3.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(1.0, c.w);
c = m.zxwy;
Expect.equals(3.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(2.0, c.w);
c = m.zxwz;
Expect.equals(3.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(3.0, c.w);
c = m.zxww;
Expect.equals(3.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(4.0, c.w);
c = m.zyxx;
Expect.equals(3.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(1.0, c.w);
c = m.zyxy;
Expect.equals(3.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(2.0, c.w);
c = m.zyxz;
Expect.equals(3.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(3.0, c.w);
c = m.zyxw;
Expect.equals(3.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(4.0, c.w);
c = m.zyyx;
Expect.equals(3.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(1.0, c.w);
c = m.zyyy;
Expect.equals(3.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(2.0, c.w);
c = m.zyyz;
Expect.equals(3.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(3.0, c.w);
c = m.zyyw;
Expect.equals(3.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(4.0, c.w);
c = m.zyzx;
Expect.equals(3.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(1.0, c.w);
c = m.zyzy;
Expect.equals(3.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(2.0, c.w);
c = m.zyzz;
Expect.equals(3.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(3.0, c.w);
c = m.zyzw;
Expect.equals(3.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(4.0, c.w);
c = m.zywx;
Expect.equals(3.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(1.0, c.w);
c = m.zywy;
Expect.equals(3.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(2.0, c.w);
c = m.zywz;
Expect.equals(3.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(3.0, c.w);
c = m.zyww;
Expect.equals(3.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(4.0, c.w);
c = m.zzxx;
Expect.equals(3.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(1.0, c.w);
c = m.zzxy;
Expect.equals(3.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(2.0, c.w);
c = m.zzxz;
Expect.equals(3.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(3.0, c.w);
c = m.zzxw;
Expect.equals(3.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(4.0, c.w);
c = m.zzyx;
Expect.equals(3.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(1.0, c.w);
c = m.zzyy;
Expect.equals(3.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(2.0, c.w);
c = m.zzyz;
Expect.equals(3.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(3.0, c.w);
c = m.zzyw;
Expect.equals(3.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(4.0, c.w);
c = m.zzzx;
Expect.equals(3.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(1.0, c.w);
c = m.zzzy;
Expect.equals(3.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(2.0, c.w);
c = m.zzzz;
Expect.equals(3.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(3.0, c.w);
c = m.zzzw;
Expect.equals(3.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(4.0, c.w);
c = m.zzwx;
Expect.equals(3.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(1.0, c.w);
c = m.zzwy;
Expect.equals(3.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(2.0, c.w);
c = m.zzwz;
Expect.equals(3.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(3.0, c.w);
c = m.zzww;
Expect.equals(3.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(4.0, c.w);
c = m.zwxx;
Expect.equals(3.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(1.0, c.w);
c = m.zwxy;
Expect.equals(3.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(2.0, c.w);
c = m.zwxz;
Expect.equals(3.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(3.0, c.w);
c = m.zwxw;
Expect.equals(3.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(4.0, c.w);
c = m.zwyx;
Expect.equals(3.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(1.0, c.w);
c = m.zwyy;
Expect.equals(3.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(2.0, c.w);
c = m.zwyz;
Expect.equals(3.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(3.0, c.w);
c = m.zwyw;
Expect.equals(3.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(4.0, c.w);
c = m.zwzx;
Expect.equals(3.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(1.0, c.w);
c = m.zwzy;
Expect.equals(3.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(2.0, c.w);
c = m.zwzz;
Expect.equals(3.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(3.0, c.w);
c = m.zwzw;
Expect.equals(3.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(4.0, c.w);
c = m.zwwx;
Expect.equals(3.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(1.0, c.w);
c = m.zwwy;
Expect.equals(3.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(2.0, c.w);
c = m.zwwz;
Expect.equals(3.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(3.0, c.w);
c = m.zwww;
Expect.equals(3.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(4.0, c.w);
}
void testShuffle3() {
var m = new Float32x4(1.0, 2.0, 3.0, 4.0);
var c;
c = m.wxxx;
Expect.equals(4.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(1.0, c.w);
c = m.wxxy;
Expect.equals(4.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(2.0, c.w);
c = m.wxxz;
Expect.equals(4.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(3.0, c.w);
c = m.wxxw;
Expect.equals(4.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(4.0, c.w);
c = m.wxyx;
Expect.equals(4.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(1.0, c.w);
c = m.wxyy;
Expect.equals(4.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(2.0, c.w);
c = m.wxyz;
Expect.equals(4.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(3.0, c.w);
c = m.wxyw;
Expect.equals(4.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(4.0, c.w);
c = m.wxzx;
Expect.equals(4.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(1.0, c.w);
c = m.wxzy;
Expect.equals(4.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(2.0, c.w);
c = m.wxzz;
Expect.equals(4.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(3.0, c.w);
c = m.wxzw;
Expect.equals(4.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(4.0, c.w);
c = m.wxwx;
Expect.equals(4.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(1.0, c.w);
c = m.wxwy;
Expect.equals(4.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(2.0, c.w);
c = m.wxwz;
Expect.equals(4.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(3.0, c.w);
c = m.wxww;
Expect.equals(4.0, c.x);
Expect.equals(1.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(4.0, c.w);
c = m.wyxx;
Expect.equals(4.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(1.0, c.w);
c = m.wyxy;
Expect.equals(4.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(2.0, c.w);
c = m.wyxz;
Expect.equals(4.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(3.0, c.w);
c = m.wyxw;
Expect.equals(4.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(4.0, c.w);
c = m.wyyx;
Expect.equals(4.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(1.0, c.w);
c = m.wyyy;
Expect.equals(4.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(2.0, c.w);
c = m.wyyz;
Expect.equals(4.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(3.0, c.w);
c = m.wyyw;
Expect.equals(4.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(4.0, c.w);
c = m.wyzx;
Expect.equals(4.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(1.0, c.w);
c = m.wyzy;
Expect.equals(4.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(2.0, c.w);
c = m.wyzz;
Expect.equals(4.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(3.0, c.w);
c = m.wyzw;
Expect.equals(4.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(4.0, c.w);
c = m.wywx;
Expect.equals(4.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(1.0, c.w);
c = m.wywy;
Expect.equals(4.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(2.0, c.w);
c = m.wywz;
Expect.equals(4.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(3.0, c.w);
c = m.wyww;
Expect.equals(4.0, c.x);
Expect.equals(2.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(4.0, c.w);
c = m.wzxx;
Expect.equals(4.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(1.0, c.w);
c = m.wzxy;
Expect.equals(4.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(2.0, c.w);
c = m.wzxz;
Expect.equals(4.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(3.0, c.w);
c = m.wzxw;
Expect.equals(4.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(4.0, c.w);
c = m.wzyx;
Expect.equals(4.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(1.0, c.w);
c = m.wzyy;
Expect.equals(4.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(2.0, c.w);
c = m.wzyz;
Expect.equals(4.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(3.0, c.w);
c = m.wzyw;
Expect.equals(4.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(4.0, c.w);
c = m.wzzx;
Expect.equals(4.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(1.0, c.w);
c = m.wzzy;
Expect.equals(4.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(2.0, c.w);
c = m.wzzz;
Expect.equals(4.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(3.0, c.w);
c = m.wzzw;
Expect.equals(4.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(4.0, c.w);
c = m.wzwx;
Expect.equals(4.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(1.0, c.w);
c = m.wzwy;
Expect.equals(4.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(2.0, c.w);
c = m.wzwz;
Expect.equals(4.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(3.0, c.w);
c = m.wzww;
Expect.equals(4.0, c.x);
Expect.equals(3.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(4.0, c.w);
c = m.wwxx;
Expect.equals(4.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(1.0, c.w);
c = m.wwxy;
Expect.equals(4.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(2.0, c.w);
c = m.wwxz;
Expect.equals(4.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(3.0, c.w);
c = m.wwxw;
Expect.equals(4.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(1.0, c.z);
Expect.equals(4.0, c.w);
c = m.wwyx;
Expect.equals(4.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(1.0, c.w);
c = m.wwyy;
Expect.equals(4.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(2.0, c.w);
c = m.wwyz;
Expect.equals(4.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(3.0, c.w);
c = m.wwyw;
Expect.equals(4.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(2.0, c.z);
Expect.equals(4.0, c.w);
c = m.wwzx;
Expect.equals(4.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(1.0, c.w);
c = m.wwzy;
Expect.equals(4.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(2.0, c.w);
c = m.wwzz;
Expect.equals(4.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(3.0, c.w);
c = m.wwzw;
Expect.equals(4.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(3.0, c.z);
Expect.equals(4.0, c.w);
c = m.wwwx;
Expect.equals(4.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(1.0, c.w);
c = m.wwwy;
Expect.equals(4.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(2.0, c.w);
c = m.wwwz;
Expect.equals(4.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(3.0, c.w);
c = m.wwww;
Expect.equals(4.0, c.x);
Expect.equals(4.0, c.y);
Expect.equals(4.0, c.z);
Expect.equals(4.0, c.w);
}
main() {
for (int i = 0; i < 20; i++) {
testShuffle0();
testShuffle1();
testShuffle2();
testShuffle3();
}
}