Bug 1129491: Remove coercion role of SIMD constructors; r=luke
authorBenjamin Bouvier <benj@benj.me>
Thu, 12 Feb 2015 20:04:40 +0100
changeset 229423 5de196d1152280b040fb9f3eb3fcb444a233c25b
parent 229422 c6e50e83f7cbbd0d267fe5c3ec7bdaf568af8e09
child 229424 308e00e6f6e86fa36f1821fa64b82fbb766513ec
push id55697
push userbenj@benj.me
push dateTue, 17 Feb 2015 16:58:52 +0000
treeherdermozilla-inbound@5de196d11522 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersluke
bugs1129491
milestone38.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1129491: Remove coercion role of SIMD constructors; r=luke
js/src/asmjs/AsmJSValidate.cpp
js/src/builtin/SIMD.cpp
js/src/jit-test/tests/asm.js/simd-mandelbrot.js
js/src/jit-test/tests/asm.js/testSIMD-load-store.js
js/src/jit-test/tests/asm.js/testSIMD.js
js/src/tests/ecma_7/SIMD/constructors.js
--- a/js/src/asmjs/AsmJSValidate.cpp
+++ b/js/src/asmjs/AsmJSValidate.cpp
@@ -2132,23 +2132,18 @@ IsCoercionCall(ModuleCompiler &m, ParseN
     if (coercedExpr)
         *coercedExpr = CallArgList(pn);
 
     if (global->isMathFunction() && global->mathBuiltinFunction() == AsmJSMathBuiltin_fround) {
         *coercion = AsmJS_FRound;
         return true;
     }
 
-    if (global->isSimdCtor() ||
-        (global->isSimdOperation() && global->simdOperation() == AsmJSSimdOperation_check))
-    {
-        AsmJSSimdType type = global->isSimdCtor()
-                             ? global->simdCtorType()
-                             : global->simdOperationType();
-        switch (type) {
+    if (global->isSimdOperation() && global->simdOperation() == AsmJSSimdOperation_check) {
+        switch (global->simdOperationType()) {
           case AsmJSSimdType_int32x4:
             *coercion = AsmJS_ToInt32x4;
             return true;
           case AsmJSSimdType_float32x4:
             *coercion = AsmJS_ToFloat32x4;
             return true;
         }
     }
@@ -5976,21 +5971,16 @@ CheckSimdOperationCall(FunctionCompiler 
 }
 
 static bool
 CheckSimdCtorCall(FunctionCompiler &f, ParseNode *call, const ModuleCompiler::Global *global,
                   MDefinition **def, Type *type)
 {
     MOZ_ASSERT(call->isKind(PNK_CALL));
 
-    AsmJSCoercion coercion;
-    ParseNode *argNode;
-    if (IsCoercionCall(f.m(), call, &coercion, &argNode))
-        return CheckCoercionArg(f, argNode, coercion, def, type);
-
     AsmJSSimdType simdType = global->simdCtorType();
     unsigned length = SimdTypeToLength(simdType);
     DefinitionVector defs;
     if (!CheckSimdCallArgs(f, call, length, CheckSimdScalarArgs(simdType), &defs))
         return false;
 
     // This code will need to be generalized when we handle float64x2
     MOZ_ASSERT(length == 4);
--- a/js/src/builtin/SIMD.cpp
+++ b/js/src/builtin/SIMD.cpp
@@ -345,27 +345,16 @@ SimdTypeToMinimumLanesNumber(SimdTypeDes
 }
 
 bool
 SimdTypeDescr::call(JSContext *cx, unsigned argc, Value *vp)
 {
     CallArgs args = CallArgsFromVp(argc, vp);
 
     Rooted<SimdTypeDescr*> descr(cx, &args.callee().as<SimdTypeDescr>());
-    if (args.length() == 1) {
-        // SIMD type used as a coercion
-        if (!CheckVectorObject(args[0], descr->type())) {
-            JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_SIMD_NOT_A_VECTOR);
-            return false;
-        }
-
-        args.rval().setObject(args[0].toObject());
-        return true;
-    }
-
     MOZ_ASSERT(size_t(static_cast<TypeDescr*>(descr)->size()) <= InlineTypedObject::MaximumSize,
                "inline storage is needed for using InternalHandle belows");
 
     Rooted<TypedObject*> result(cx, TypedObject::createZeroed(cx, descr, 0));
     if (!result)
         return false;
 
     switch (descr->type()) {
--- a/js/src/jit-test/tests/asm.js/simd-mandelbrot.js
+++ b/js/src/jit-test/tests/asm.js/simd-mandelbrot.js
@@ -1,1815 +1,1816 @@
 // |jit-test| test-also-noasmjs
-/* -*- Mode: javascript; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 ; js-indent-level : 2 ; js-curly-indent-offset: 0 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
-
-// Mandelbrot using SIMD
-// Author: Peter Jensen, Intel Corporation
-
-load(libdir + "asm.js");
-if (!isSimdAvailable() || typeof SIMD === 'undefined') {
-    print("won't run tests as simd extensions aren't activated yet");
-    quit(0);
-}
-
-// global variables
-const MAX_ITERATIONS = 10;
-const DRAW_ITERATIONS = 10;
-
-const CANVAS_WIDTH = 20;
-const CANVAS_HEIGHT = 20;
-
-const LIMIT_SHOW = 20 * 20 * 4;
-
-// Asm.js module buffer.
-var buffer = new ArrayBuffer(16 * 1024 * 1024);
-var view = new Uint8Array(buffer);
-
-var moduleCode = `
-  "use asm"
-  var b8 = new global.Uint8Array(buffer);
-  var toF = global.Math.fround;
-  var i4 = global.SIMD.int32x4;
-  var f4 = global.SIMD.float32x4;
-  var i4add = i4.add;
-  var i4and = i4.and;
-  var f4add = f4.add;
-  var f4sub = f4.sub;
-  var f4mul = f4.mul;
-  var f4lessThanOrEqual = f4.lessThanOrEqual;
-  var f4splat = f4.splat;
-  var imul = global.Math.imul;
-  const one4 = i4(1,1,1,1), two4 = f4(2,2,2,2), four4 = f4(4,4,4,4);
-
-  const mk0 = 0x007fffff;
-
-  function declareHeapLength() {
-    b8[0x00ffffff] = 0;
-  }
-
-  function mapColorAndSetPixel (x, y, width, value, max_iterations) {
-    x = x | 0;
-    y = y | 0;
-    width = width | 0;
-    value = value | 0;
-    max_iterations = max_iterations | 0;
-
-    var rgb = 0, r = 0, g = 0, b = 0, index = 0;
-
-    index = (((imul((width >>> 0), (y >>> 0)) + x) | 0) * 4) | 0;
-    if ((value | 0) == (max_iterations | 0)) {
-      r = 0;
-      g = 0;
-      b = 0;
-    } else {
-      rgb = ~~toF(toF(toF(toF(value >>> 0) * toF(0xffff)) / toF(max_iterations >>> 0)) * toF(0xff));
-      r = rgb & 0xff;
-      g = (rgb >>> 8) & 0xff;
-      b = (rgb >>> 16) & 0xff;
-    }
-    b8[(index & mk0) >> 0] = r;
-    b8[(index & mk0) + 1 >> 0] = g;
-    b8[(index & mk0) + 2 >> 0] = b;
-    b8[(index & mk0) + 3 >> 0] = 255;
-  }
-
-  function mandelPixelX4 (xf, yf, yd, max_iterations) {
-    xf = toF(xf);
-    yf = toF(yf);
-    yd = toF(yd);
-    max_iterations = max_iterations | 0;
-    var c_re4  = f4(0,0,0,0), c_im4  = f4(0,0,0,0);
-    var z_re4  = f4(0,0,0,0), z_im4  = f4(0,0,0,0);
-    var count4 = i4(0,0,0,0);
-    var z_re24 = f4(0,0,0,0), z_im24 = f4(0,0,0,0);
-    var new_re4 = f4(0,0,0,0), new_im4 = f4(0,0,0,0);
-    var i = 0;
-    var mi4 = i4(0,0,0,0);
-
-    c_re4 = f4splat(xf);
-    c_im4 = f4(yf, toF(yd + yf), toF(yd + toF(yd + yf)), toF(yd + toF(yd + toF(yd + yf))));
-
-    z_re4  = c_re4;
-    z_im4  = c_im4;
-
-    for (i = 0; (i | 0) < (max_iterations | 0); i = (i + 1) | 0) {
-      z_re24 = f4mul(z_re4, z_re4);
-      z_im24 = f4mul(z_im4, z_im4);
-      mi4 = f4lessThanOrEqual(f4add(z_re24, z_im24), four4);
-      // If all 4 values are greater than 4.0, there's no reason to continue.
-      if ((mi4.signMask | 0) == 0x00)
-        break;
-
-      new_re4 = f4sub(z_re24, z_im24);
-      new_im4 = f4mul(f4mul(two4, z_re4), z_im4);
-      z_re4   = f4add(c_re4, new_re4);
-      z_im4   = f4add(c_im4, new_im4);
-      count4  = i4add(count4, i4and(mi4, one4));
-    }
-    return i4(count4);
-  }
-
-  function mandelColumnX4 (x, width, height, xf, yf, yd, max_iterations) {
-    x = x | 0;
-    width = width | 0;
-    height = height | 0;
-    xf = toF(xf);
-    yf = toF(yf);
-    yd = toF(yd);
-    max_iterations = max_iterations | 0;
-
-    var y = 0;
-    var ydx4 = toF(0);
-    var m4 = i4(0,0,0,0);
-
-    ydx4 = toF(yd * toF(4));
-    for (y = 0; (y | 0) < (height | 0); y = (y + 4) | 0) {
-      m4   = i4(mandelPixelX4(toF(xf), toF(yf), toF(yd), max_iterations));
-      mapColorAndSetPixel(x | 0, y | 0,   width, m4.x, max_iterations);
-      mapColorAndSetPixel(x | 0, (y + 1) | 0, width, m4.y, max_iterations);
-      mapColorAndSetPixel(x | 0, (y + 2) | 0, width, m4.z, max_iterations);
-      mapColorAndSetPixel(x | 0, (y + 3) | 0, width, m4.w, max_iterations);
-      yf = toF(yf + ydx4);
-    }
-  }
-
-  function mandel (width, height, xc, yc, scale, max_iterations) {
-    width = width | 0;
-    height = height | 0;
-    xc = toF(xc);
-    yc = toF(yc);
-    scale = toF(scale);
-    max_iterations = max_iterations | 0;
-
-    var x0 = toF(0), y0 = toF(0);
-    var xd = toF(0), yd = toF(0);
-    var xf = toF(0);
-    var x = 0;
-
-    x0 = toF(xc - toF(scale * toF(1.5)));
-    y0 = toF(yc - scale);
-    xd = toF(toF(scale * toF(3)) / toF(width >>> 0));
-    yd = toF(toF(scale * toF(2)) / toF(height >>> 0));
-    xf = x0;
-
-    for (x = 0; (x | 0) < (width | 0); x = (x + 1) | 0) {
-      mandelColumnX4(x, width, height, xf, y0, yd, max_iterations);
-      xf = toF(xf + xd);
-    }
-  }
-
-  return mandel;
-`;
-
-var FFI = {};
-var mandelbro = asmLink(asmCompile('global', 'ffi', 'buffer', moduleCode), this, FFI, buffer);
-
-function animateMandelbrot () {
-  var scale_start = 1.0;
-  var scale_end   = 0.0005;
-  var xc_start    = -0.5;
-  var yc_start    = 0.0;
-  var xc_end      = 0.0;
-  var yc_end      = 0.75;
-  var steps       = 200.0;
-  var scale_step  = (scale_end - scale_start)/steps;
-  var xc_step     = (xc_end - xc_start)/steps;
-  var yc_step     = (yc_end - yc_start)/steps;
-  var scale       = scale_start;
-  var xc          = xc_start;
-  var yc          = yc_start;
-  var i           = 0;
-  var now         = dateNow();
-
-  function draw1 () {
-    mandelbro(CANVAS_WIDTH, CANVAS_HEIGHT, xc, yc, scale, MAX_ITERATIONS);
-    if (scale < scale_end || scale > scale_start) {
-      scale_step = -scale_step;
-      xc_step = -xc_step;
-      yc_step = -yc_step;
-    }
-    scale += scale_step;
-    xc += xc_step;
-    yc += yc_step;
-    i++;
-  }
-
-  var b = dateNow();
-  for (var j = DRAW_ITERATIONS; j --> 0;)
-    draw1();
-  print(dateNow() - b);
-}
-
-animateMandelbrot();
-
-assertEq(view[0], 0, "0th value should be 0");
-assertEq(view[1], 0, "1th value should be 0");
-assertEq(view[2], 0, "2th value should be 0");
-assertEq(view[3], 255, "3th value should be 255");
-assertEq(view[4], 230, "4th value should be 230");
-assertEq(view[5], 127, "5th value should be 127");
-assertEq(view[6], 25, "6th value should be 25");
-assertEq(view[7], 255, "7th value should be 255");
-assertEq(view[8], 230, "8th value should be 230");
-assertEq(view[9], 127, "9th value should be 127");
-assertEq(view[10], 25, "10th value should be 25");
-assertEq(view[11], 255, "11th value should be 255");
-assertEq(view[12], 205, "12th value should be 205");
-assertEq(view[13], 255, "13th value should be 255");
-assertEq(view[14], 50, "14th value should be 50");
-assertEq(view[15], 255, "15th value should be 255");
-assertEq(view[16], 205, "16th value should be 205");
-assertEq(view[17], 255, "17th value should be 255");
-assertEq(view[18], 50, "18th value should be 50");
-assertEq(view[19], 255, "19th value should be 255");
-assertEq(view[20], 205, "20th value should be 205");
-assertEq(view[21], 255, "21th value should be 255");
-assertEq(view[22], 50, "22th value should be 50");
-assertEq(view[23], 255, "23th value should be 255");
-assertEq(view[24], 205, "24th value should be 205");
-assertEq(view[25], 255, "25th value should be 255");
-assertEq(view[26], 50, "26th value should be 50");
-assertEq(view[27], 255, "27th value should be 255");
-assertEq(view[28], 205, "28th value should be 205");
-assertEq(view[29], 255, "29th value should be 255");
-assertEq(view[30], 50, "30th value should be 50");
-assertEq(view[31], 255, "31th value should be 255");
-assertEq(view[32], 179, "32th value should be 179");
-assertEq(view[33], 127, "33th value should be 127");
-assertEq(view[34], 76, "34th value should be 76");
-assertEq(view[35], 255, "35th value should be 255");
-assertEq(view[36], 179, "36th value should be 179");
-assertEq(view[37], 127, "37th value should be 127");
-assertEq(view[38], 76, "38th value should be 76");
-assertEq(view[39], 255, "39th value should be 255");
-assertEq(view[40], 179, "40th value should be 179");
-assertEq(view[41], 127, "41th value should be 127");
-assertEq(view[42], 76, "42th value should be 76");
-assertEq(view[43], 255, "43th value should be 255");
-assertEq(view[44], 154, "44th value should be 154");
-assertEq(view[45], 255, "45th value should be 255");
-assertEq(view[46], 101, "46th value should be 101");
-assertEq(view[47], 255, "47th value should be 255");
-assertEq(view[48], 78, "48th value should be 78");
-assertEq(view[49], 127, "49th value should be 127");
-assertEq(view[50], 178, "50th value should be 178");
-assertEq(view[51], 255, "51th value should be 255");
-assertEq(view[52], 52, "52th value should be 52");
-assertEq(view[53], 255, "53th value should be 255");
-assertEq(view[54], 203, "54th value should be 203");
-assertEq(view[55], 255, "55th value should be 255");
-assertEq(view[56], 154, "56th value should be 154");
-assertEq(view[57], 255, "57th value should be 255");
-assertEq(view[58], 101, "58th value should be 101");
-assertEq(view[59], 255, "59th value should be 255");
-assertEq(view[60], 179, "60th value should be 179");
-assertEq(view[61], 127, "61th value should be 127");
-assertEq(view[62], 76, "62th value should be 76");
-assertEq(view[63], 255, "63th value should be 255");
-assertEq(view[64], 205, "64th value should be 205");
-assertEq(view[65], 255, "65th value should be 255");
-assertEq(view[66], 50, "66th value should be 50");
-assertEq(view[67], 255, "67th value should be 255");
-assertEq(view[68], 205, "68th value should be 205");
-assertEq(view[69], 255, "69th value should be 255");
-assertEq(view[70], 50, "70th value should be 50");
-assertEq(view[71], 255, "71th value should be 255");
-assertEq(view[72], 230, "72th value should be 230");
-assertEq(view[73], 127, "73th value should be 127");
-assertEq(view[74], 25, "74th value should be 25");
-assertEq(view[75], 255, "75th value should be 255");
-assertEq(view[76], 230, "76th value should be 230");
-assertEq(view[77], 127, "77th value should be 127");
-assertEq(view[78], 25, "78th value should be 25");
-assertEq(view[79], 255, "79th value should be 255");
-assertEq(view[80], 0, "80th value should be 0");
-assertEq(view[81], 0, "81th value should be 0");
-assertEq(view[82], 0, "82th value should be 0");
-assertEq(view[83], 255, "83th value should be 255");
-assertEq(view[84], 230, "84th value should be 230");
-assertEq(view[85], 127, "85th value should be 127");
-assertEq(view[86], 25, "86th value should be 25");
-assertEq(view[87], 255, "87th value should be 255");
-assertEq(view[88], 205, "88th value should be 205");
-assertEq(view[89], 255, "89th value should be 255");
-assertEq(view[90], 50, "90th value should be 50");
-assertEq(view[91], 255, "91th value should be 255");
-assertEq(view[92], 205, "92th value should be 205");
-assertEq(view[93], 255, "93th value should be 255");
-assertEq(view[94], 50, "94th value should be 50");
-assertEq(view[95], 255, "95th value should be 255");
-assertEq(view[96], 205, "96th value should be 205");
-assertEq(view[97], 255, "97th value should be 255");
-assertEq(view[98], 50, "98th value should be 50");
-assertEq(view[99], 255, "99th value should be 255");
-assertEq(view[100], 205, "100th value should be 205");
-assertEq(view[101], 255, "101th value should be 255");
-assertEq(view[102], 50, "102th value should be 50");
-assertEq(view[103], 255, "103th value should be 255");
-assertEq(view[104], 205, "104th value should be 205");
-assertEq(view[105], 255, "105th value should be 255");
-assertEq(view[106], 50, "106th value should be 50");
-assertEq(view[107], 255, "107th value should be 255");
-assertEq(view[108], 205, "108th value should be 205");
-assertEq(view[109], 255, "109th value should be 255");
-assertEq(view[110], 50, "110th value should be 50");
-assertEq(view[111], 255, "111th value should be 255");
-assertEq(view[112], 179, "112th value should be 179");
-assertEq(view[113], 127, "113th value should be 127");
-assertEq(view[114], 76, "114th value should be 76");
-assertEq(view[115], 255, "115th value should be 255");
-assertEq(view[116], 179, "116th value should be 179");
-assertEq(view[117], 127, "117th value should be 127");
-assertEq(view[118], 76, "118th value should be 76");
-assertEq(view[119], 255, "119th value should be 255");
-assertEq(view[120], 154, "120th value should be 154");
-assertEq(view[121], 255, "121th value should be 255");
-assertEq(view[122], 101, "122th value should be 101");
-assertEq(view[123], 255, "123th value should be 255");
-assertEq(view[124], 103, "124th value should be 103");
-assertEq(view[125], 255, "125th value should be 255");
-assertEq(view[126], 152, "126th value should be 152");
-assertEq(view[127], 255, "127th value should be 255");
-assertEq(view[128], 0, "128th value should be 0");
-assertEq(view[129], 0, "129th value should be 0");
-assertEq(view[130], 0, "130th value should be 0");
-assertEq(view[131], 255, "131th value should be 255");
-assertEq(view[132], 0, "132th value should be 0");
-assertEq(view[133], 0, "133th value should be 0");
-assertEq(view[134], 0, "134th value should be 0");
-assertEq(view[135], 255, "135th value should be 255");
-assertEq(view[136], 128, "136th value should be 128");
-assertEq(view[137], 127, "137th value should be 127");
-assertEq(view[138], 127, "138th value should be 127");
-assertEq(view[139], 255, "139th value should be 255");
-assertEq(view[140], 154, "140th value should be 154");
-assertEq(view[141], 255, "141th value should be 255");
-assertEq(view[142], 101, "142th value should be 101");
-assertEq(view[143], 255, "143th value should be 255");
-assertEq(view[144], 179, "144th value should be 179");
-assertEq(view[145], 127, "145th value should be 127");
-assertEq(view[146], 76, "146th value should be 76");
-assertEq(view[147], 255, "147th value should be 255");
-assertEq(view[148], 205, "148th value should be 205");
-assertEq(view[149], 255, "149th value should be 255");
-assertEq(view[150], 50, "150th value should be 50");
-assertEq(view[151], 255, "151th value should be 255");
-assertEq(view[152], 205, "152th value should be 205");
-assertEq(view[153], 255, "153th value should be 255");
-assertEq(view[154], 50, "154th value should be 50");
-assertEq(view[155], 255, "155th value should be 255");
-assertEq(view[156], 230, "156th value should be 230");
-assertEq(view[157], 127, "157th value should be 127");
-assertEq(view[158], 25, "158th value should be 25");
-assertEq(view[159], 255, "159th value should be 255");
-assertEq(view[160], 0, "160th value should be 0");
-assertEq(view[161], 0, "161th value should be 0");
-assertEq(view[162], 0, "162th value should be 0");
-assertEq(view[163], 255, "163th value should be 255");
-assertEq(view[164], 230, "164th value should be 230");
-assertEq(view[165], 127, "165th value should be 127");
-assertEq(view[166], 25, "166th value should be 25");
-assertEq(view[167], 255, "167th value should be 255");
-assertEq(view[168], 205, "168th value should be 205");
-assertEq(view[169], 255, "169th value should be 255");
-assertEq(view[170], 50, "170th value should be 50");
-assertEq(view[171], 255, "171th value should be 255");
-assertEq(view[172], 205, "172th value should be 205");
-assertEq(view[173], 255, "173th value should be 255");
-assertEq(view[174], 50, "174th value should be 50");
-assertEq(view[175], 255, "175th value should be 255");
-assertEq(view[176], 205, "176th value should be 205");
-assertEq(view[177], 255, "177th value should be 255");
-assertEq(view[178], 50, "178th value should be 50");
-assertEq(view[179], 255, "179th value should be 255");
-assertEq(view[180], 205, "180th value should be 205");
-assertEq(view[181], 255, "181th value should be 255");
-assertEq(view[182], 50, "182th value should be 50");
-assertEq(view[183], 255, "183th value should be 255");
-assertEq(view[184], 205, "184th value should be 205");
-assertEq(view[185], 255, "185th value should be 255");
-assertEq(view[186], 50, "186th value should be 50");
-assertEq(view[187], 255, "187th value should be 255");
-assertEq(view[188], 179, "188th value should be 179");
-assertEq(view[189], 127, "189th value should be 127");
-assertEq(view[190], 76, "190th value should be 76");
-assertEq(view[191], 255, "191th value should be 255");
-assertEq(view[192], 179, "192th value should be 179");
-assertEq(view[193], 127, "193th value should be 127");
-assertEq(view[194], 76, "194th value should be 76");
-assertEq(view[195], 255, "195th value should be 255");
-assertEq(view[196], 154, "196th value should be 154");
-assertEq(view[197], 255, "197th value should be 255");
-assertEq(view[198], 101, "198th value should be 101");
-assertEq(view[199], 255, "199th value should be 255");
-assertEq(view[200], 103, "200th value should be 103");
-assertEq(view[201], 255, "201th value should be 255");
-assertEq(view[202], 152, "202th value should be 152");
-assertEq(view[203], 255, "203th value should be 255");
-assertEq(view[204], 78, "204th value should be 78");
-assertEq(view[205], 127, "205th value should be 127");
-assertEq(view[206], 178, "206th value should be 178");
-assertEq(view[207], 255, "207th value should be 255");
-assertEq(view[208], 0, "208th value should be 0");
-assertEq(view[209], 0, "209th value should be 0");
-assertEq(view[210], 0, "210th value should be 0");
-assertEq(view[211], 255, "211th value should be 255");
-assertEq(view[212], 0, "212th value should be 0");
-assertEq(view[213], 0, "213th value should be 0");
-assertEq(view[214], 0, "214th value should be 0");
-assertEq(view[215], 255, "215th value should be 255");
-assertEq(view[216], 78, "216th value should be 78");
-assertEq(view[217], 127, "217th value should be 127");
-assertEq(view[218], 178, "218th value should be 178");
-assertEq(view[219], 255, "219th value should be 255");
-assertEq(view[220], 128, "220th value should be 128");
-assertEq(view[221], 127, "221th value should be 127");
-assertEq(view[222], 127, "222th value should be 127");
-assertEq(view[223], 255, "223th value should be 255");
-assertEq(view[224], 154, "224th value should be 154");
-assertEq(view[225], 255, "225th value should be 255");
-assertEq(view[226], 101, "226th value should be 101");
-assertEq(view[227], 255, "227th value should be 255");
-assertEq(view[228], 205, "228th value should be 205");
-assertEq(view[229], 255, "229th value should be 255");
-assertEq(view[230], 50, "230th value should be 50");
-assertEq(view[231], 255, "231th value should be 255");
-assertEq(view[232], 205, "232th value should be 205");
-assertEq(view[233], 255, "233th value should be 255");
-assertEq(view[234], 50, "234th value should be 50");
-assertEq(view[235], 255, "235th value should be 255");
-assertEq(view[236], 230, "236th value should be 230");
-assertEq(view[237], 127, "237th value should be 127");
-assertEq(view[238], 25, "238th value should be 25");
-assertEq(view[239], 255, "239th value should be 255");
-assertEq(view[240], 0, "240th value should be 0");
-assertEq(view[241], 0, "241th value should be 0");
-assertEq(view[242], 0, "242th value should be 0");
-assertEq(view[243], 255, "243th value should be 255");
-assertEq(view[244], 205, "244th value should be 205");
-assertEq(view[245], 255, "245th value should be 255");
-assertEq(view[246], 50, "246th value should be 50");
-assertEq(view[247], 255, "247th value should be 255");
-assertEq(view[248], 205, "248th value should be 205");
-assertEq(view[249], 255, "249th value should be 255");
-assertEq(view[250], 50, "250th value should be 50");
-assertEq(view[251], 255, "251th value should be 255");
-assertEq(view[252], 205, "252th value should be 205");
-assertEq(view[253], 255, "253th value should be 255");
-assertEq(view[254], 50, "254th value should be 50");
-assertEq(view[255], 255, "255th value should be 255");
-assertEq(view[256], 205, "256th value should be 205");
-assertEq(view[257], 255, "257th value should be 255");
-assertEq(view[258], 50, "258th value should be 50");
-assertEq(view[259], 255, "259th value should be 255");
-assertEq(view[260], 205, "260th value should be 205");
-assertEq(view[261], 255, "261th value should be 255");
-assertEq(view[262], 50, "262th value should be 50");
-assertEq(view[263], 255, "263th value should be 255");
-assertEq(view[264], 179, "264th value should be 179");
-assertEq(view[265], 127, "265th value should be 127");
-assertEq(view[266], 76, "266th value should be 76");
-assertEq(view[267], 255, "267th value should be 255");
-assertEq(view[268], 179, "268th value should be 179");
-assertEq(view[269], 127, "269th value should be 127");
-assertEq(view[270], 76, "270th value should be 76");
-assertEq(view[271], 255, "271th value should be 255");
-assertEq(view[272], 154, "272th value should be 154");
-assertEq(view[273], 255, "273th value should be 255");
-assertEq(view[274], 101, "274th value should be 101");
-assertEq(view[275], 255, "275th value should be 255");
-assertEq(view[276], 52, "276th value should be 52");
-assertEq(view[277], 255, "277th value should be 255");
-assertEq(view[278], 203, "278th value should be 203");
-assertEq(view[279], 255, "279th value should be 255");
-assertEq(view[280], 0, "280th value should be 0");
-assertEq(view[281], 0, "281th value should be 0");
-assertEq(view[282], 0, "282th value should be 0");
-assertEq(view[283], 255, "283th value should be 255");
-assertEq(view[284], 0, "284th value should be 0");
-assertEq(view[285], 0, "285th value should be 0");
-assertEq(view[286], 0, "286th value should be 0");
-assertEq(view[287], 255, "287th value should be 255");
-assertEq(view[288], 0, "288th value should be 0");
-assertEq(view[289], 0, "289th value should be 0");
-assertEq(view[290], 0, "290th value should be 0");
-assertEq(view[291], 255, "291th value should be 255");
-assertEq(view[292], 0, "292th value should be 0");
-assertEq(view[293], 0, "293th value should be 0");
-assertEq(view[294], 0, "294th value should be 0");
-assertEq(view[295], 255, "295th value should be 255");
-assertEq(view[296], 0, "296th value should be 0");
-assertEq(view[297], 0, "297th value should be 0");
-assertEq(view[298], 0, "298th value should be 0");
-assertEq(view[299], 255, "299th value should be 255");
-assertEq(view[300], 52, "300th value should be 52");
-assertEq(view[301], 255, "301th value should be 255");
-assertEq(view[302], 203, "302th value should be 203");
-assertEq(view[303], 255, "303th value should be 255");
-assertEq(view[304], 52, "304th value should be 52");
-assertEq(view[305], 255, "305th value should be 255");
-assertEq(view[306], 203, "306th value should be 203");
-assertEq(view[307], 255, "307th value should be 255");
-assertEq(view[308], 179, "308th value should be 179");
-assertEq(view[309], 127, "309th value should be 127");
-assertEq(view[310], 76, "310th value should be 76");
-assertEq(view[311], 255, "311th value should be 255");
-assertEq(view[312], 205, "312th value should be 205");
-assertEq(view[313], 255, "313th value should be 255");
-assertEq(view[314], 50, "314th value should be 50");
-assertEq(view[315], 255, "315th value should be 255");
-assertEq(view[316], 205, "316th value should be 205");
-assertEq(view[317], 255, "317th value should be 255");
-assertEq(view[318], 50, "318th value should be 50");
-assertEq(view[319], 255, "319th value should be 255");
-assertEq(view[320], 230, "320th value should be 230");
-assertEq(view[321], 127, "321th value should be 127");
-assertEq(view[322], 25, "322th value should be 25");
-assertEq(view[323], 255, "323th value should be 255");
-assertEq(view[324], 205, "324th value should be 205");
-assertEq(view[325], 255, "325th value should be 255");
-assertEq(view[326], 50, "326th value should be 50");
-assertEq(view[327], 255, "327th value should be 255");
-assertEq(view[328], 205, "328th value should be 205");
-assertEq(view[329], 255, "329th value should be 255");
-assertEq(view[330], 50, "330th value should be 50");
-assertEq(view[331], 255, "331th value should be 255");
-assertEq(view[332], 205, "332th value should be 205");
-assertEq(view[333], 255, "333th value should be 255");
-assertEq(view[334], 50, "334th value should be 50");
-assertEq(view[335], 255, "335th value should be 255");
-assertEq(view[336], 205, "336th value should be 205");
-assertEq(view[337], 255, "337th value should be 255");
-assertEq(view[338], 50, "338th value should be 50");
-assertEq(view[339], 255, "339th value should be 255");
-assertEq(view[340], 179, "340th value should be 179");
-assertEq(view[341], 127, "341th value should be 127");
-assertEq(view[342], 76, "342th value should be 76");
-assertEq(view[343], 255, "343th value should be 255");
-assertEq(view[344], 154, "344th value should be 154");
-assertEq(view[345], 255, "345th value should be 255");
-assertEq(view[346], 101, "346th value should be 101");
-assertEq(view[347], 255, "347th value should be 255");
-assertEq(view[348], 154, "348th value should be 154");
-assertEq(view[349], 255, "349th value should be 255");
-assertEq(view[350], 101, "350th value should be 101");
-assertEq(view[351], 255, "351th value should be 255");
-assertEq(view[352], 128, "352th value should be 128");
-assertEq(view[353], 127, "353th value should be 127");
-assertEq(view[354], 127, "354th value should be 127");
-assertEq(view[355], 255, "355th value should be 255");
-assertEq(view[356], 52, "356th value should be 52");
-assertEq(view[357], 255, "357th value should be 255");
-assertEq(view[358], 203, "358th value should be 203");
-assertEq(view[359], 255, "359th value should be 255");
-assertEq(view[360], 0, "360th value should be 0");
-assertEq(view[361], 0, "361th value should be 0");
-assertEq(view[362], 0, "362th value should be 0");
-assertEq(view[363], 255, "363th value should be 255");
-assertEq(view[364], 0, "364th value should be 0");
-assertEq(view[365], 0, "365th value should be 0");
-assertEq(view[366], 0, "366th value should be 0");
-assertEq(view[367], 255, "367th value should be 255");
-assertEq(view[368], 0, "368th value should be 0");
-assertEq(view[369], 0, "369th value should be 0");
-assertEq(view[370], 0, "370th value should be 0");
-assertEq(view[371], 255, "371th value should be 255");
-assertEq(view[372], 0, "372th value should be 0");
-assertEq(view[373], 0, "373th value should be 0");
-assertEq(view[374], 0, "374th value should be 0");
-assertEq(view[375], 255, "375th value should be 255");
-assertEq(view[376], 0, "376th value should be 0");
-assertEq(view[377], 0, "377th value should be 0");
-assertEq(view[378], 0, "378th value should be 0");
-assertEq(view[379], 255, "379th value should be 255");
-assertEq(view[380], 0, "380th value should be 0");
-assertEq(view[381], 0, "381th value should be 0");
-assertEq(view[382], 0, "382th value should be 0");
-assertEq(view[383], 255, "383th value should be 255");
-assertEq(view[384], 52, "384th value should be 52");
-assertEq(view[385], 255, "385th value should be 255");
-assertEq(view[386], 203, "386th value should be 203");
-assertEq(view[387], 255, "387th value should be 255");
-assertEq(view[388], 179, "388th value should be 179");
-assertEq(view[389], 127, "389th value should be 127");
-assertEq(view[390], 76, "390th value should be 76");
-assertEq(view[391], 255, "391th value should be 255");
-assertEq(view[392], 205, "392th value should be 205");
-assertEq(view[393], 255, "393th value should be 255");
-assertEq(view[394], 50, "394th value should be 50");
-assertEq(view[395], 255, "395th value should be 255");
-assertEq(view[396], 205, "396th value should be 205");
-assertEq(view[397], 255, "397th value should be 255");
-assertEq(view[398], 50, "398th value should be 50");
-assertEq(view[399], 255, "399th value should be 255");
-assertEq(view[400], 205, "400th value should be 205");
-assertEq(view[401], 255, "401th value should be 255");
-assertEq(view[402], 50, "402th value should be 50");
-assertEq(view[403], 255, "403th value should be 255");
-assertEq(view[404], 205, "404th value should be 205");
-assertEq(view[405], 255, "405th value should be 255");
-assertEq(view[406], 50, "406th value should be 50");
-assertEq(view[407], 255, "407th value should be 255");
-assertEq(view[408], 205, "408th value should be 205");
-assertEq(view[409], 255, "409th value should be 255");
-assertEq(view[410], 50, "410th value should be 50");
-assertEq(view[411], 255, "411th value should be 255");
-assertEq(view[412], 205, "412th value should be 205");
-assertEq(view[413], 255, "413th value should be 255");
-assertEq(view[414], 50, "414th value should be 50");
-assertEq(view[415], 255, "415th value should be 255");
-assertEq(view[416], 154, "416th value should be 154");
-assertEq(view[417], 255, "417th value should be 255");
-assertEq(view[418], 101, "418th value should be 101");
-assertEq(view[419], 255, "419th value should be 255");
-assertEq(view[420], 128, "420th value should be 128");
-assertEq(view[421], 127, "421th value should be 127");
-assertEq(view[422], 127, "422th value should be 127");
-assertEq(view[423], 255, "423th value should be 255");
-assertEq(view[424], 154, "424th value should be 154");
-assertEq(view[425], 255, "425th value should be 255");
-assertEq(view[426], 101, "426th value should be 101");
-assertEq(view[427], 255, "427th value should be 255");
-assertEq(view[428], 128, "428th value should be 128");
-assertEq(view[429], 127, "429th value should be 127");
-assertEq(view[430], 127, "430th value should be 127");
-assertEq(view[431], 255, "431th value should be 255");
-assertEq(view[432], 103, "432th value should be 103");
-assertEq(view[433], 255, "433th value should be 255");
-assertEq(view[434], 152, "434th value should be 152");
-assertEq(view[435], 255, "435th value should be 255");
-assertEq(view[436], 0, "436th value should be 0");
-assertEq(view[437], 0, "437th value should be 0");
-assertEq(view[438], 0, "438th value should be 0");
-assertEq(view[439], 255, "439th value should be 255");
-assertEq(view[440], 0, "440th value should be 0");
-assertEq(view[441], 0, "441th value should be 0");
-assertEq(view[442], 0, "442th value should be 0");
-assertEq(view[443], 255, "443th value should be 255");
-assertEq(view[444], 0, "444th value should be 0");
-assertEq(view[445], 0, "445th value should be 0");
-assertEq(view[446], 0, "446th value should be 0");
-assertEq(view[447], 255, "447th value should be 255");
-assertEq(view[448], 0, "448th value should be 0");
-assertEq(view[449], 0, "449th value should be 0");
-assertEq(view[450], 0, "450th value should be 0");
-assertEq(view[451], 255, "451th value should be 255");
-assertEq(view[452], 0, "452th value should be 0");
-assertEq(view[453], 0, "453th value should be 0");
-assertEq(view[454], 0, "454th value should be 0");
-assertEq(view[455], 255, "455th value should be 255");
-assertEq(view[456], 0, "456th value should be 0");
-assertEq(view[457], 0, "457th value should be 0");
-assertEq(view[458], 0, "458th value should be 0");
-assertEq(view[459], 255, "459th value should be 255");
-assertEq(view[460], 0, "460th value should be 0");
-assertEq(view[461], 0, "461th value should be 0");
-assertEq(view[462], 0, "462th value should be 0");
-assertEq(view[463], 255, "463th value should be 255");
-assertEq(view[464], 78, "464th value should be 78");
-assertEq(view[465], 127, "465th value should be 127");
-assertEq(view[466], 178, "466th value should be 178");
-assertEq(view[467], 255, "467th value should be 255");
-assertEq(view[468], 154, "468th value should be 154");
-assertEq(view[469], 255, "469th value should be 255");
-assertEq(view[470], 101, "470th value should be 101");
-assertEq(view[471], 255, "471th value should be 255");
-assertEq(view[472], 205, "472th value should be 205");
-assertEq(view[473], 255, "473th value should be 255");
-assertEq(view[474], 50, "474th value should be 50");
-assertEq(view[475], 255, "475th value should be 255");
-assertEq(view[476], 205, "476th value should be 205");
-assertEq(view[477], 255, "477th value should be 255");
-assertEq(view[478], 50, "478th value should be 50");
-assertEq(view[479], 255, "479th value should be 255");
-assertEq(view[480], 205, "480th value should be 205");
-assertEq(view[481], 255, "481th value should be 255");
-assertEq(view[482], 50, "482th value should be 50");
-assertEq(view[483], 255, "483th value should be 255");
-assertEq(view[484], 205, "484th value should be 205");
-assertEq(view[485], 255, "485th value should be 255");
-assertEq(view[486], 50, "486th value should be 50");
-assertEq(view[487], 255, "487th value should be 255");
-assertEq(view[488], 179, "488th value should be 179");
-assertEq(view[489], 127, "489th value should be 127");
-assertEq(view[490], 76, "490th value should be 76");
-assertEq(view[491], 255, "491th value should be 255");
-assertEq(view[492], 179, "492th value should be 179");
-assertEq(view[493], 127, "493th value should be 127");
-assertEq(view[494], 76, "494th value should be 76");
-assertEq(view[495], 255, "495th value should be 255");
-assertEq(view[496], 128, "496th value should be 128");
-assertEq(view[497], 127, "497th value should be 127");
-assertEq(view[498], 127, "498th value should be 127");
-assertEq(view[499], 255, "499th value should be 255");
-assertEq(view[500], 52, "500th value should be 52");
-assertEq(view[501], 255, "501th value should be 255");
-assertEq(view[502], 203, "502th value should be 203");
-assertEq(view[503], 255, "503th value should be 255");
-assertEq(view[504], 0, "504th value should be 0");
-assertEq(view[505], 0, "505th value should be 0");
-assertEq(view[506], 0, "506th value should be 0");
-assertEq(view[507], 255, "507th value should be 255");
-assertEq(view[508], 78, "508th value should be 78");
-assertEq(view[509], 127, "509th value should be 127");
-assertEq(view[510], 178, "510th value should be 178");
-assertEq(view[511], 255, "511th value should be 255");
-assertEq(view[512], 52, "512th value should be 52");
-assertEq(view[513], 255, "513th value should be 255");
-assertEq(view[514], 203, "514th value should be 203");
-assertEq(view[515], 255, "515th value should be 255");
-assertEq(view[516], 0, "516th value should be 0");
-assertEq(view[517], 0, "517th value should be 0");
-assertEq(view[518], 0, "518th value should be 0");
-assertEq(view[519], 255, "519th value should be 255");
-assertEq(view[520], 0, "520th value should be 0");
-assertEq(view[521], 0, "521th value should be 0");
-assertEq(view[522], 0, "522th value should be 0");
-assertEq(view[523], 255, "523th value should be 255");
-assertEq(view[524], 0, "524th value should be 0");
-assertEq(view[525], 0, "525th value should be 0");
-assertEq(view[526], 0, "526th value should be 0");
-assertEq(view[527], 255, "527th value should be 255");
-assertEq(view[528], 0, "528th value should be 0");
-assertEq(view[529], 0, "529th value should be 0");
-assertEq(view[530], 0, "530th value should be 0");
-assertEq(view[531], 255, "531th value should be 255");
-assertEq(view[532], 0, "532th value should be 0");
-assertEq(view[533], 0, "533th value should be 0");
-assertEq(view[534], 0, "534th value should be 0");
-assertEq(view[535], 255, "535th value should be 255");
-assertEq(view[536], 0, "536th value should be 0");
-assertEq(view[537], 0, "537th value should be 0");
-assertEq(view[538], 0, "538th value should be 0");
-assertEq(view[539], 255, "539th value should be 255");
-assertEq(view[540], 0, "540th value should be 0");
-assertEq(view[541], 0, "541th value should be 0");
-assertEq(view[542], 0, "542th value should be 0");
-assertEq(view[543], 255, "543th value should be 255");
-assertEq(view[544], 0, "544th value should be 0");
-assertEq(view[545], 0, "545th value should be 0");
-assertEq(view[546], 0, "546th value should be 0");
-assertEq(view[547], 255, "547th value should be 255");
-assertEq(view[548], 154, "548th value should be 154");
-assertEq(view[549], 255, "549th value should be 255");
-assertEq(view[550], 101, "550th value should be 101");
-assertEq(view[551], 255, "551th value should be 255");
-assertEq(view[552], 205, "552th value should be 205");
-assertEq(view[553], 255, "553th value should be 255");
-assertEq(view[554], 50, "554th value should be 50");
-assertEq(view[555], 255, "555th value should be 255");
-assertEq(view[556], 205, "556th value should be 205");
-assertEq(view[557], 255, "557th value should be 255");
-assertEq(view[558], 50, "558th value should be 50");
-assertEq(view[559], 255, "559th value should be 255");
-assertEq(view[560], 205, "560th value should be 205");
-assertEq(view[561], 255, "561th value should be 255");
-assertEq(view[562], 50, "562th value should be 50");
-assertEq(view[563], 255, "563th value should be 255");
-assertEq(view[564], 179, "564th value should be 179");
-assertEq(view[565], 127, "565th value should be 127");
-assertEq(view[566], 76, "566th value should be 76");
-assertEq(view[567], 255, "567th value should be 255");
-assertEq(view[568], 179, "568th value should be 179");
-assertEq(view[569], 127, "569th value should be 127");
-assertEq(view[570], 76, "570th value should be 76");
-assertEq(view[571], 255, "571th value should be 255");
-assertEq(view[572], 154, "572th value should be 154");
-assertEq(view[573], 255, "573th value should be 255");
-assertEq(view[574], 101, "574th value should be 101");
-assertEq(view[575], 255, "575th value should be 255");
-assertEq(view[576], 103, "576th value should be 103");
-assertEq(view[577], 255, "577th value should be 255");
-assertEq(view[578], 152, "578th value should be 152");
-assertEq(view[579], 255, "579th value should be 255");
-assertEq(view[580], 0, "580th value should be 0");
-assertEq(view[581], 0, "581th value should be 0");
-assertEq(view[582], 0, "582th value should be 0");
-assertEq(view[583], 255, "583th value should be 255");
-assertEq(view[584], 0, "584th value should be 0");
-assertEq(view[585], 0, "585th value should be 0");
-assertEq(view[586], 0, "586th value should be 0");
-assertEq(view[587], 255, "587th value should be 255");
-assertEq(view[588], 0, "588th value should be 0");
-assertEq(view[589], 0, "589th value should be 0");
-assertEq(view[590], 0, "590th value should be 0");
-assertEq(view[591], 255, "591th value should be 255");
-assertEq(view[592], 0, "592th value should be 0");
-assertEq(view[593], 0, "593th value should be 0");
-assertEq(view[594], 0, "594th value should be 0");
-assertEq(view[595], 255, "595th value should be 255");
-assertEq(view[596], 0, "596th value should be 0");
-assertEq(view[597], 0, "597th value should be 0");
-assertEq(view[598], 0, "598th value should be 0");
-assertEq(view[599], 255, "599th value should be 255");
-assertEq(view[600], 0, "600th value should be 0");
-assertEq(view[601], 0, "601th value should be 0");
-assertEq(view[602], 0, "602th value should be 0");
-assertEq(view[603], 255, "603th value should be 255");
-assertEq(view[604], 0, "604th value should be 0");
-assertEq(view[605], 0, "605th value should be 0");
-assertEq(view[606], 0, "606th value should be 0");
-assertEq(view[607], 255, "607th value should be 255");
-assertEq(view[608], 0, "608th value should be 0");
-assertEq(view[609], 0, "609th value should be 0");
-assertEq(view[610], 0, "610th value should be 0");
-assertEq(view[611], 255, "611th value should be 255");
-assertEq(view[612], 0, "612th value should be 0");
-assertEq(view[613], 0, "613th value should be 0");
-assertEq(view[614], 0, "614th value should be 0");
-assertEq(view[615], 255, "615th value should be 255");
-assertEq(view[616], 0, "616th value should be 0");
-assertEq(view[617], 0, "617th value should be 0");
-assertEq(view[618], 0, "618th value should be 0");
-assertEq(view[619], 255, "619th value should be 255");
-assertEq(view[620], 0, "620th value should be 0");
-assertEq(view[621], 0, "621th value should be 0");
-assertEq(view[622], 0, "622th value should be 0");
-assertEq(view[623], 255, "623th value should be 255");
-assertEq(view[624], 0, "624th value should be 0");
-assertEq(view[625], 0, "625th value should be 0");
-assertEq(view[626], 0, "626th value should be 0");
-assertEq(view[627], 255, "627th value should be 255");
-assertEq(view[628], 154, "628th value should be 154");
-assertEq(view[629], 255, "629th value should be 255");
-assertEq(view[630], 101, "630th value should be 101");
-assertEq(view[631], 255, "631th value should be 255");
-assertEq(view[632], 205, "632th value should be 205");
-assertEq(view[633], 255, "633th value should be 255");
-assertEq(view[634], 50, "634th value should be 50");
-assertEq(view[635], 255, "635th value should be 255");
-assertEq(view[636], 205, "636th value should be 205");
-assertEq(view[637], 255, "637th value should be 255");
-assertEq(view[638], 50, "638th value should be 50");
-assertEq(view[639], 255, "639th value should be 255");
-assertEq(view[640], 179, "640th value should be 179");
-assertEq(view[641], 127, "641th value should be 127");
-assertEq(view[642], 76, "642th value should be 76");
-assertEq(view[643], 255, "643th value should be 255");
-assertEq(view[644], 179, "644th value should be 179");
-assertEq(view[645], 127, "645th value should be 127");
-assertEq(view[646], 76, "646th value should be 76");
-assertEq(view[647], 255, "647th value should be 255");
-assertEq(view[648], 154, "648th value should be 154");
-assertEq(view[649], 255, "649th value should be 255");
-assertEq(view[650], 101, "650th value should be 101");
-assertEq(view[651], 255, "651th value should be 255");
-assertEq(view[652], 128, "652th value should be 128");
-assertEq(view[653], 127, "653th value should be 127");
-assertEq(view[654], 127, "654th value should be 127");
-assertEq(view[655], 255, "655th value should be 255");
-assertEq(view[656], 52, "656th value should be 52");
-assertEq(view[657], 255, "657th value should be 255");
-assertEq(view[658], 203, "658th value should be 203");
-assertEq(view[659], 255, "659th value should be 255");
-assertEq(view[660], 0, "660th value should be 0");
-assertEq(view[661], 0, "661th value should be 0");
-assertEq(view[662], 0, "662th value should be 0");
-assertEq(view[663], 255, "663th value should be 255");
-assertEq(view[664], 0, "664th value should be 0");
-assertEq(view[665], 0, "665th value should be 0");
-assertEq(view[666], 0, "666th value should be 0");
-assertEq(view[667], 255, "667th value should be 255");
-assertEq(view[668], 0, "668th value should be 0");
-assertEq(view[669], 0, "669th value should be 0");
-assertEq(view[670], 0, "670th value should be 0");
-assertEq(view[671], 255, "671th value should be 255");
-assertEq(view[672], 0, "672th value should be 0");
-assertEq(view[673], 0, "673th value should be 0");
-assertEq(view[674], 0, "674th value should be 0");
-assertEq(view[675], 255, "675th value should be 255");
-assertEq(view[676], 0, "676th value should be 0");
-assertEq(view[677], 0, "677th value should be 0");
-assertEq(view[678], 0, "678th value should be 0");
-assertEq(view[679], 255, "679th value should be 255");
-assertEq(view[680], 0, "680th value should be 0");
-assertEq(view[681], 0, "681th value should be 0");
-assertEq(view[682], 0, "682th value should be 0");
-assertEq(view[683], 255, "683th value should be 255");
-assertEq(view[684], 0, "684th value should be 0");
-assertEq(view[685], 0, "685th value should be 0");
-assertEq(view[686], 0, "686th value should be 0");
-assertEq(view[687], 255, "687th value should be 255");
-assertEq(view[688], 0, "688th value should be 0");
-assertEq(view[689], 0, "689th value should be 0");
-assertEq(view[690], 0, "690th value should be 0");
-assertEq(view[691], 255, "691th value should be 255");
-assertEq(view[692], 0, "692th value should be 0");
-assertEq(view[693], 0, "693th value should be 0");
-assertEq(view[694], 0, "694th value should be 0");
-assertEq(view[695], 255, "695th value should be 255");
-assertEq(view[696], 0, "696th value should be 0");
-assertEq(view[697], 0, "697th value should be 0");
-assertEq(view[698], 0, "698th value should be 0");
-assertEq(view[699], 255, "699th value should be 255");
-assertEq(view[700], 0, "700th value should be 0");
-assertEq(view[701], 0, "701th value should be 0");
-assertEq(view[702], 0, "702th value should be 0");
-assertEq(view[703], 255, "703th value should be 255");
-assertEq(view[704], 0, "704th value should be 0");
-assertEq(view[705], 0, "705th value should be 0");
-assertEq(view[706], 0, "706th value should be 0");
-assertEq(view[707], 255, "707th value should be 255");
-assertEq(view[708], 154, "708th value should be 154");
-assertEq(view[709], 255, "709th value should be 255");
-assertEq(view[710], 101, "710th value should be 101");
-assertEq(view[711], 255, "711th value should be 255");
-assertEq(view[712], 179, "712th value should be 179");
-assertEq(view[713], 127, "713th value should be 127");
-assertEq(view[714], 76, "714th value should be 76");
-assertEq(view[715], 255, "715th value should be 255");
-assertEq(view[716], 205, "716th value should be 205");
-assertEq(view[717], 255, "717th value should be 255");
-assertEq(view[718], 50, "718th value should be 50");
-assertEq(view[719], 255, "719th value should be 255");
-assertEq(view[720], 154, "720th value should be 154");
-assertEq(view[721], 255, "721th value should be 255");
-assertEq(view[722], 101, "722th value should be 101");
-assertEq(view[723], 255, "723th value should be 255");
-assertEq(view[724], 52, "724th value should be 52");
-assertEq(view[725], 255, "725th value should be 255");
-assertEq(view[726], 203, "726th value should be 203");
-assertEq(view[727], 255, "727th value should be 255");
-assertEq(view[728], 128, "728th value should be 128");
-assertEq(view[729], 127, "729th value should be 127");
-assertEq(view[730], 127, "730th value should be 127");
-assertEq(view[731], 255, "731th value should be 255");
-assertEq(view[732], 78, "732th value should be 78");
-assertEq(view[733], 127, "733th value should be 127");
-assertEq(view[734], 178, "734th value should be 178");
-assertEq(view[735], 255, "735th value should be 255");
-assertEq(view[736], 0, "736th value should be 0");
-assertEq(view[737], 0, "737th value should be 0");
-assertEq(view[738], 0, "738th value should be 0");
-assertEq(view[739], 255, "739th value should be 255");
-assertEq(view[740], 0, "740th value should be 0");
-assertEq(view[741], 0, "741th value should be 0");
-assertEq(view[742], 0, "742th value should be 0");
-assertEq(view[743], 255, "743th value should be 255");
-assertEq(view[744], 0, "744th value should be 0");
-assertEq(view[745], 0, "745th value should be 0");
-assertEq(view[746], 0, "746th value should be 0");
-assertEq(view[747], 255, "747th value should be 255");
-assertEq(view[748], 0, "748th value should be 0");
-assertEq(view[749], 0, "749th value should be 0");
-assertEq(view[750], 0, "750th value should be 0");
-assertEq(view[751], 255, "751th value should be 255");
-assertEq(view[752], 0, "752th value should be 0");
-assertEq(view[753], 0, "753th value should be 0");
-assertEq(view[754], 0, "754th value should be 0");
-assertEq(view[755], 255, "755th value should be 255");
-assertEq(view[756], 0, "756th value should be 0");
-assertEq(view[757], 0, "757th value should be 0");
-assertEq(view[758], 0, "758th value should be 0");
-assertEq(view[759], 255, "759th value should be 255");
-assertEq(view[760], 0, "760th value should be 0");
-assertEq(view[761], 0, "761th value should be 0");
-assertEq(view[762], 0, "762th value should be 0");
-assertEq(view[763], 255, "763th value should be 255");
-assertEq(view[764], 0, "764th value should be 0");
-assertEq(view[765], 0, "765th value should be 0");
-assertEq(view[766], 0, "766th value should be 0");
-assertEq(view[767], 255, "767th value should be 255");
-assertEq(view[768], 0, "768th value should be 0");
-assertEq(view[769], 0, "769th value should be 0");
-assertEq(view[770], 0, "770th value should be 0");
-assertEq(view[771], 255, "771th value should be 255");
-assertEq(view[772], 0, "772th value should be 0");
-assertEq(view[773], 0, "773th value should be 0");
-assertEq(view[774], 0, "774th value should be 0");
-assertEq(view[775], 255, "775th value should be 255");
-assertEq(view[776], 0, "776th value should be 0");
-assertEq(view[777], 0, "777th value should be 0");
-assertEq(view[778], 0, "778th value should be 0");
-assertEq(view[779], 255, "779th value should be 255");
-assertEq(view[780], 0, "780th value should be 0");
-assertEq(view[781], 0, "781th value should be 0");
-assertEq(view[782], 0, "782th value should be 0");
-assertEq(view[783], 255, "783th value should be 255");
-assertEq(view[784], 78, "784th value should be 78");
-assertEq(view[785], 127, "785th value should be 127");
-assertEq(view[786], 178, "786th value should be 178");
-assertEq(view[787], 255, "787th value should be 255");
-assertEq(view[788], 154, "788th value should be 154");
-assertEq(view[789], 255, "789th value should be 255");
-assertEq(view[790], 101, "790th value should be 101");
-assertEq(view[791], 255, "791th value should be 255");
-assertEq(view[792], 179, "792th value should be 179");
-assertEq(view[793], 127, "793th value should be 127");
-assertEq(view[794], 76, "794th value should be 76");
-assertEq(view[795], 255, "795th value should be 255");
-assertEq(view[796], 205, "796th value should be 205");
-assertEq(view[797], 255, "797th value should be 255");
-assertEq(view[798], 50, "798th value should be 50");
-assertEq(view[799], 255, "799th value should be 255");
-assertEq(view[800], 128, "800th value should be 128");
-assertEq(view[801], 127, "801th value should be 127");
-assertEq(view[802], 127, "802th value should be 127");
-assertEq(view[803], 255, "803th value should be 255");
-assertEq(view[804], 0, "804th value should be 0");
-assertEq(view[805], 0, "805th value should be 0");
-assertEq(view[806], 0, "806th value should be 0");
-assertEq(view[807], 255, "807th value should be 255");
-assertEq(view[808], 26, "808th value should be 26");
-assertEq(view[809], 127, "809th value should be 127");
-assertEq(view[810], 229, "810th value should be 229");
-assertEq(view[811], 255, "811th value should be 255");
-assertEq(view[812], 0, "812th value should be 0");
-assertEq(view[813], 0, "813th value should be 0");
-assertEq(view[814], 0, "814th value should be 0");
-assertEq(view[815], 255, "815th value should be 255");
-assertEq(view[816], 0, "816th value should be 0");
-assertEq(view[817], 0, "817th value should be 0");
-assertEq(view[818], 0, "818th value should be 0");
-assertEq(view[819], 255, "819th value should be 255");
-assertEq(view[820], 0, "820th value should be 0");
-assertEq(view[821], 0, "821th value should be 0");
-assertEq(view[822], 0, "822th value should be 0");
-assertEq(view[823], 255, "823th value should be 255");
-assertEq(view[824], 0, "824th value should be 0");
-assertEq(view[825], 0, "825th value should be 0");
-assertEq(view[826], 0, "826th value should be 0");
-assertEq(view[827], 255, "827th value should be 255");
-assertEq(view[828], 0, "828th value should be 0");
-assertEq(view[829], 0, "829th value should be 0");
-assertEq(view[830], 0, "830th value should be 0");
-assertEq(view[831], 255, "831th value should be 255");
-assertEq(view[832], 0, "832th value should be 0");
-assertEq(view[833], 0, "833th value should be 0");
-assertEq(view[834], 0, "834th value should be 0");
-assertEq(view[835], 255, "835th value should be 255");
-assertEq(view[836], 0, "836th value should be 0");
-assertEq(view[837], 0, "837th value should be 0");
-assertEq(view[838], 0, "838th value should be 0");
-assertEq(view[839], 255, "839th value should be 255");
-assertEq(view[840], 0, "840th value should be 0");
-assertEq(view[841], 0, "841th value should be 0");
-assertEq(view[842], 0, "842th value should be 0");
-assertEq(view[843], 255, "843th value should be 255");
-assertEq(view[844], 0, "844th value should be 0");
-assertEq(view[845], 0, "845th value should be 0");
-assertEq(view[846], 0, "846th value should be 0");
-assertEq(view[847], 255, "847th value should be 255");
-assertEq(view[848], 0, "848th value should be 0");
-assertEq(view[849], 0, "849th value should be 0");
-assertEq(view[850], 0, "850th value should be 0");
-assertEq(view[851], 255, "851th value should be 255");
-assertEq(view[852], 0, "852th value should be 0");
-assertEq(view[853], 0, "853th value should be 0");
-assertEq(view[854], 0, "854th value should be 0");
-assertEq(view[855], 255, "855th value should be 255");
-assertEq(view[856], 0, "856th value should be 0");
-assertEq(view[857], 0, "857th value should be 0");
-assertEq(view[858], 0, "858th value should be 0");
-assertEq(view[859], 255, "859th value should be 255");
-assertEq(view[860], 0, "860th value should be 0");
-assertEq(view[861], 0, "861th value should be 0");
-assertEq(view[862], 0, "862th value should be 0");
-assertEq(view[863], 255, "863th value should be 255");
-assertEq(view[864], 103, "864th value should be 103");
-assertEq(view[865], 255, "865th value should be 255");
-assertEq(view[866], 152, "866th value should be 152");
-assertEq(view[867], 255, "867th value should be 255");
-assertEq(view[868], 154, "868th value should be 154");
-assertEq(view[869], 255, "869th value should be 255");
-assertEq(view[870], 101, "870th value should be 101");
-assertEq(view[871], 255, "871th value should be 255");
-assertEq(view[872], 179, "872th value should be 179");
-assertEq(view[873], 127, "873th value should be 127");
-assertEq(view[874], 76, "874th value should be 76");
-assertEq(view[875], 255, "875th value should be 255");
-assertEq(view[876], 205, "876th value should be 205");
-assertEq(view[877], 255, "877th value should be 255");
-assertEq(view[878], 50, "878th value should be 50");
-assertEq(view[879], 255, "879th value should be 255");
-assertEq(view[880], 179, "880th value should be 179");
-assertEq(view[881], 127, "881th value should be 127");
-assertEq(view[882], 76, "882th value should be 76");
-assertEq(view[883], 255, "883th value should be 255");
-assertEq(view[884], 179, "884th value should be 179");
-assertEq(view[885], 127, "885th value should be 127");
-assertEq(view[886], 76, "886th value should be 76");
-assertEq(view[887], 255, "887th value should be 255");
-assertEq(view[888], 128, "888th value should be 128");
-assertEq(view[889], 127, "889th value should be 127");
-assertEq(view[890], 127, "890th value should be 127");
-assertEq(view[891], 255, "891th value should be 255");
-assertEq(view[892], 103, "892th value should be 103");
-assertEq(view[893], 255, "893th value should be 255");
-assertEq(view[894], 152, "894th value should be 152");
-assertEq(view[895], 255, "895th value should be 255");
-assertEq(view[896], 26, "896th value should be 26");
-assertEq(view[897], 127, "897th value should be 127");
-assertEq(view[898], 229, "898th value should be 229");
-assertEq(view[899], 255, "899th value should be 255");
-assertEq(view[900], 0, "900th value should be 0");
-assertEq(view[901], 0, "901th value should be 0");
-assertEq(view[902], 0, "902th value should be 0");
-assertEq(view[903], 255, "903th value should be 255");
-assertEq(view[904], 0, "904th value should be 0");
-assertEq(view[905], 0, "905th value should be 0");
-assertEq(view[906], 0, "906th value should be 0");
-assertEq(view[907], 255, "907th value should be 255");
-assertEq(view[908], 0, "908th value should be 0");
-assertEq(view[909], 0, "909th value should be 0");
-assertEq(view[910], 0, "910th value should be 0");
-assertEq(view[911], 255, "911th value should be 255");
-assertEq(view[912], 0, "912th value should be 0");
-assertEq(view[913], 0, "913th value should be 0");
-assertEq(view[914], 0, "914th value should be 0");
-assertEq(view[915], 255, "915th value should be 255");
-assertEq(view[916], 0, "916th value should be 0");
-assertEq(view[917], 0, "917th value should be 0");
-assertEq(view[918], 0, "918th value should be 0");
-assertEq(view[919], 255, "919th value should be 255");
-assertEq(view[920], 0, "920th value should be 0");
-assertEq(view[921], 0, "921th value should be 0");
-assertEq(view[922], 0, "922th value should be 0");
-assertEq(view[923], 255, "923th value should be 255");
-assertEq(view[924], 0, "924th value should be 0");
-assertEq(view[925], 0, "925th value should be 0");
-assertEq(view[926], 0, "926th value should be 0");
-assertEq(view[927], 255, "927th value should be 255");
-assertEq(view[928], 0, "928th value should be 0");
-assertEq(view[929], 0, "929th value should be 0");
-assertEq(view[930], 0, "930th value should be 0");
-assertEq(view[931], 255, "931th value should be 255");
-assertEq(view[932], 0, "932th value should be 0");
-assertEq(view[933], 0, "933th value should be 0");
-assertEq(view[934], 0, "934th value should be 0");
-assertEq(view[935], 255, "935th value should be 255");
-assertEq(view[936], 0, "936th value should be 0");
-assertEq(view[937], 0, "937th value should be 0");
-assertEq(view[938], 0, "938th value should be 0");
-assertEq(view[939], 255, "939th value should be 255");
-assertEq(view[940], 0, "940th value should be 0");
-assertEq(view[941], 0, "941th value should be 0");
-assertEq(view[942], 0, "942th value should be 0");
-assertEq(view[943], 255, "943th value should be 255");
-assertEq(view[944], 0, "944th value should be 0");
-assertEq(view[945], 0, "945th value should be 0");
-assertEq(view[946], 0, "946th value should be 0");
-assertEq(view[947], 255, "947th value should be 255");
-assertEq(view[948], 154, "948th value should be 154");
-assertEq(view[949], 255, "949th value should be 255");
-assertEq(view[950], 101, "950th value should be 101");
-assertEq(view[951], 255, "951th value should be 255");
-assertEq(view[952], 179, "952th value should be 179");
-assertEq(view[953], 127, "953th value should be 127");
-assertEq(view[954], 76, "954th value should be 76");
-assertEq(view[955], 255, "955th value should be 255");
-assertEq(view[956], 205, "956th value should be 205");
-assertEq(view[957], 255, "957th value should be 255");
-assertEq(view[958], 50, "958th value should be 50");
-assertEq(view[959], 255, "959th value should be 255");
-assertEq(view[960], 179, "960th value should be 179");
-assertEq(view[961], 127, "961th value should be 127");
-assertEq(view[962], 76, "962th value should be 76");
-assertEq(view[963], 255, "963th value should be 255");
-assertEq(view[964], 179, "964th value should be 179");
-assertEq(view[965], 127, "965th value should be 127");
-assertEq(view[966], 76, "966th value should be 76");
-assertEq(view[967], 255, "967th value should be 255");
-assertEq(view[968], 179, "968th value should be 179");
-assertEq(view[969], 127, "969th value should be 127");
-assertEq(view[970], 76, "970th value should be 76");
-assertEq(view[971], 255, "971th value should be 255");
-assertEq(view[972], 154, "972th value should be 154");
-assertEq(view[973], 255, "973th value should be 255");
-assertEq(view[974], 101, "974th value should be 101");
-assertEq(view[975], 255, "975th value should be 255");
-assertEq(view[976], 103, "976th value should be 103");
-assertEq(view[977], 255, "977th value should be 255");
-assertEq(view[978], 152, "978th value should be 152");
-assertEq(view[979], 255, "979th value should be 255");
-assertEq(view[980], 0, "980th value should be 0");
-assertEq(view[981], 0, "981th value should be 0");
-assertEq(view[982], 0, "982th value should be 0");
-assertEq(view[983], 255, "983th value should be 255");
-assertEq(view[984], 0, "984th value should be 0");
-assertEq(view[985], 0, "985th value should be 0");
-assertEq(view[986], 0, "986th value should be 0");
-assertEq(view[987], 255, "987th value should be 255");
-assertEq(view[988], 0, "988th value should be 0");
-assertEq(view[989], 0, "989th value should be 0");
-assertEq(view[990], 0, "990th value should be 0");
-assertEq(view[991], 255, "991th value should be 255");
-assertEq(view[992], 0, "992th value should be 0");
-assertEq(view[993], 0, "993th value should be 0");
-assertEq(view[994], 0, "994th value should be 0");
-assertEq(view[995], 255, "995th value should be 255");
-assertEq(view[996], 0, "996th value should be 0");
-assertEq(view[997], 0, "997th value should be 0");
-assertEq(view[998], 0, "998th value should be 0");
-assertEq(view[999], 255, "999th value should be 255");
-assertEq(view[1000], 0, "1000th value should be 0");
-assertEq(view[1001], 0, "1001th value should be 0");
-assertEq(view[1002], 0, "1002th value should be 0");
-assertEq(view[1003], 255, "1003th value should be 255");
-assertEq(view[1004], 0, "1004th value should be 0");
-assertEq(view[1005], 0, "1005th value should be 0");
-assertEq(view[1006], 0, "1006th value should be 0");
-assertEq(view[1007], 255, "1007th value should be 255");
-assertEq(view[1008], 0, "1008th value should be 0");
-assertEq(view[1009], 0, "1009th value should be 0");
-assertEq(view[1010], 0, "1010th value should be 0");
-assertEq(view[1011], 255, "1011th value should be 255");
-assertEq(view[1012], 0, "1012th value should be 0");
-assertEq(view[1013], 0, "1013th value should be 0");
-assertEq(view[1014], 0, "1014th value should be 0");
-assertEq(view[1015], 255, "1015th value should be 255");
-assertEq(view[1016], 0, "1016th value should be 0");
-assertEq(view[1017], 0, "1017th value should be 0");
-assertEq(view[1018], 0, "1018th value should be 0");
-assertEq(view[1019], 255, "1019th value should be 255");
-assertEq(view[1020], 0, "1020th value should be 0");
-assertEq(view[1021], 0, "1021th value should be 0");
-assertEq(view[1022], 0, "1022th value should be 0");
-assertEq(view[1023], 255, "1023th value should be 255");
-assertEq(view[1024], 0, "1024th value should be 0");
-assertEq(view[1025], 0, "1025th value should be 0");
-assertEq(view[1026], 0, "1026th value should be 0");
-assertEq(view[1027], 255, "1027th value should be 255");
-assertEq(view[1028], 154, "1028th value should be 154");
-assertEq(view[1029], 255, "1029th value should be 255");
-assertEq(view[1030], 101, "1030th value should be 101");
-assertEq(view[1031], 255, "1031th value should be 255");
-assertEq(view[1032], 205, "1032th value should be 205");
-assertEq(view[1033], 255, "1033th value should be 255");
-assertEq(view[1034], 50, "1034th value should be 50");
-assertEq(view[1035], 255, "1035th value should be 255");
-assertEq(view[1036], 205, "1036th value should be 205");
-assertEq(view[1037], 255, "1037th value should be 255");
-assertEq(view[1038], 50, "1038th value should be 50");
-assertEq(view[1039], 255, "1039th value should be 255");
-assertEq(view[1040], 205, "1040th value should be 205");
-assertEq(view[1041], 255, "1041th value should be 255");
-assertEq(view[1042], 50, "1042th value should be 50");
-assertEq(view[1043], 255, "1043th value should be 255");
-assertEq(view[1044], 179, "1044th value should be 179");
-assertEq(view[1045], 127, "1045th value should be 127");
-assertEq(view[1046], 76, "1046th value should be 76");
-assertEq(view[1047], 255, "1047th value should be 255");
-assertEq(view[1048], 179, "1048th value should be 179");
-assertEq(view[1049], 127, "1049th value should be 127");
-assertEq(view[1050], 76, "1050th value should be 76");
-assertEq(view[1051], 255, "1051th value should be 255");
-assertEq(view[1052], 154, "1052th value should be 154");
-assertEq(view[1053], 255, "1053th value should be 255");
-assertEq(view[1054], 101, "1054th value should be 101");
-assertEq(view[1055], 255, "1055th value should be 255");
-assertEq(view[1056], 128, "1056th value should be 128");
-assertEq(view[1057], 127, "1057th value should be 127");
-assertEq(view[1058], 127, "1058th value should be 127");
-assertEq(view[1059], 255, "1059th value should be 255");
-assertEq(view[1060], 0, "1060th value should be 0");
-assertEq(view[1061], 0, "1061th value should be 0");
-assertEq(view[1062], 0, "1062th value should be 0");
-assertEq(view[1063], 255, "1063th value should be 255");
-assertEq(view[1064], 0, "1064th value should be 0");
-assertEq(view[1065], 0, "1065th value should be 0");
-assertEq(view[1066], 0, "1066th value should be 0");
-assertEq(view[1067], 255, "1067th value should be 255");
-assertEq(view[1068], 26, "1068th value should be 26");
-assertEq(view[1069], 127, "1069th value should be 127");
-assertEq(view[1070], 229, "1070th value should be 229");
-assertEq(view[1071], 255, "1071th value should be 255");
-assertEq(view[1072], 26, "1072th value should be 26");
-assertEq(view[1073], 127, "1073th value should be 127");
-assertEq(view[1074], 229, "1074th value should be 229");
-assertEq(view[1075], 255, "1075th value should be 255");
-assertEq(view[1076], 0, "1076th value should be 0");
-assertEq(view[1077], 0, "1077th value should be 0");
-assertEq(view[1078], 0, "1078th value should be 0");
-assertEq(view[1079], 255, "1079th value should be 255");
-assertEq(view[1080], 0, "1080th value should be 0");
-assertEq(view[1081], 0, "1081th value should be 0");
-assertEq(view[1082], 0, "1082th value should be 0");
-assertEq(view[1083], 255, "1083th value should be 255");
-assertEq(view[1084], 0, "1084th value should be 0");
-assertEq(view[1085], 0, "1085th value should be 0");
-assertEq(view[1086], 0, "1086th value should be 0");
-assertEq(view[1087], 255, "1087th value should be 255");
-assertEq(view[1088], 0, "1088th value should be 0");
-assertEq(view[1089], 0, "1089th value should be 0");
-assertEq(view[1090], 0, "1090th value should be 0");
-assertEq(view[1091], 255, "1091th value should be 255");
-assertEq(view[1092], 0, "1092th value should be 0");
-assertEq(view[1093], 0, "1093th value should be 0");
-assertEq(view[1094], 0, "1094th value should be 0");
-assertEq(view[1095], 255, "1095th value should be 255");
-assertEq(view[1096], 0, "1096th value should be 0");
-assertEq(view[1097], 0, "1097th value should be 0");
-assertEq(view[1098], 0, "1098th value should be 0");
-assertEq(view[1099], 255, "1099th value should be 255");
-assertEq(view[1100], 0, "1100th value should be 0");
-assertEq(view[1101], 0, "1101th value should be 0");
-assertEq(view[1102], 0, "1102th value should be 0");
-assertEq(view[1103], 255, "1103th value should be 255");
-assertEq(view[1104], 0, "1104th value should be 0");
-assertEq(view[1105], 0, "1105th value should be 0");
-assertEq(view[1106], 0, "1106th value should be 0");
-assertEq(view[1107], 255, "1107th value should be 255");
-assertEq(view[1108], 154, "1108th value should be 154");
-assertEq(view[1109], 255, "1109th value should be 255");
-assertEq(view[1110], 101, "1110th value should be 101");
-assertEq(view[1111], 255, "1111th value should be 255");
-assertEq(view[1112], 205, "1112th value should be 205");
-assertEq(view[1113], 255, "1113th value should be 255");
-assertEq(view[1114], 50, "1114th value should be 50");
-assertEq(view[1115], 255, "1115th value should be 255");
-assertEq(view[1116], 205, "1116th value should be 205");
-assertEq(view[1117], 255, "1117th value should be 255");
-assertEq(view[1118], 50, "1118th value should be 50");
-assertEq(view[1119], 255, "1119th value should be 255");
-assertEq(view[1120], 205, "1120th value should be 205");
-assertEq(view[1121], 255, "1121th value should be 255");
-assertEq(view[1122], 50, "1122th value should be 50");
-assertEq(view[1123], 255, "1123th value should be 255");
-assertEq(view[1124], 205, "1124th value should be 205");
-assertEq(view[1125], 255, "1125th value should be 255");
-assertEq(view[1126], 50, "1126th value should be 50");
-assertEq(view[1127], 255, "1127th value should be 255");
-assertEq(view[1128], 205, "1128th value should be 205");
-assertEq(view[1129], 255, "1129th value should be 255");
-assertEq(view[1130], 50, "1130th value should be 50");
-assertEq(view[1131], 255, "1131th value should be 255");
-assertEq(view[1132], 179, "1132th value should be 179");
-assertEq(view[1133], 127, "1133th value should be 127");
-assertEq(view[1134], 76, "1134th value should be 76");
-assertEq(view[1135], 255, "1135th value should be 255");
-assertEq(view[1136], 154, "1136th value should be 154");
-assertEq(view[1137], 255, "1137th value should be 255");
-assertEq(view[1138], 101, "1138th value should be 101");
-assertEq(view[1139], 255, "1139th value should be 255");
-assertEq(view[1140], 128, "1140th value should be 128");
-assertEq(view[1141], 127, "1141th value should be 127");
-assertEq(view[1142], 127, "1142th value should be 127");
-assertEq(view[1143], 255, "1143th value should be 255");
-assertEq(view[1144], 128, "1144th value should be 128");
-assertEq(view[1145], 127, "1145th value should be 127");
-assertEq(view[1146], 127, "1146th value should be 127");
-assertEq(view[1147], 255, "1147th value should be 255");
-assertEq(view[1148], 103, "1148th value should be 103");
-assertEq(view[1149], 255, "1149th value should be 255");
-assertEq(view[1150], 152, "1150th value should be 152");
-assertEq(view[1151], 255, "1151th value should be 255");
-assertEq(view[1152], 78, "1152th value should be 78");
-assertEq(view[1153], 127, "1153th value should be 127");
-assertEq(view[1154], 178, "1154th value should be 178");
-assertEq(view[1155], 255, "1155th value should be 255");
-assertEq(view[1156], 0, "1156th value should be 0");
-assertEq(view[1157], 0, "1157th value should be 0");
-assertEq(view[1158], 0, "1158th value should be 0");
-assertEq(view[1159], 255, "1159th value should be 255");
-assertEq(view[1160], 0, "1160th value should be 0");
-assertEq(view[1161], 0, "1161th value should be 0");
-assertEq(view[1162], 0, "1162th value should be 0");
-assertEq(view[1163], 255, "1163th value should be 255");
-assertEq(view[1164], 0, "1164th value should be 0");
-assertEq(view[1165], 0, "1165th value should be 0");
-assertEq(view[1166], 0, "1166th value should be 0");
-assertEq(view[1167], 255, "1167th value should be 255");
-assertEq(view[1168], 0, "1168th value should be 0");
-assertEq(view[1169], 0, "1169th value should be 0");
-assertEq(view[1170], 0, "1170th value should be 0");
-assertEq(view[1171], 255, "1171th value should be 255");
-assertEq(view[1172], 0, "1172th value should be 0");
-assertEq(view[1173], 0, "1173th value should be 0");
-assertEq(view[1174], 0, "1174th value should be 0");
-assertEq(view[1175], 255, "1175th value should be 255");
-assertEq(view[1176], 0, "1176th value should be 0");
-assertEq(view[1177], 0, "1177th value should be 0");
-assertEq(view[1178], 0, "1178th value should be 0");
-assertEq(view[1179], 255, "1179th value should be 255");
-assertEq(view[1180], 0, "1180th value should be 0");
-assertEq(view[1181], 0, "1181th value should be 0");
-assertEq(view[1182], 0, "1182th value should be 0");
-assertEq(view[1183], 255, "1183th value should be 255");
-assertEq(view[1184], 26, "1184th value should be 26");
-assertEq(view[1185], 127, "1185th value should be 127");
-assertEq(view[1186], 229, "1186th value should be 229");
-assertEq(view[1187], 255, "1187th value should be 255");
-assertEq(view[1188], 154, "1188th value should be 154");
-assertEq(view[1189], 255, "1189th value should be 255");
-assertEq(view[1190], 101, "1190th value should be 101");
-assertEq(view[1191], 255, "1191th value should be 255");
-assertEq(view[1192], 205, "1192th value should be 205");
-assertEq(view[1193], 255, "1193th value should be 255");
-assertEq(view[1194], 50, "1194th value should be 50");
-assertEq(view[1195], 255, "1195th value should be 255");
-assertEq(view[1196], 205, "1196th value should be 205");
-assertEq(view[1197], 255, "1197th value should be 255");
-assertEq(view[1198], 50, "1198th value should be 50");
-assertEq(view[1199], 255, "1199th value should be 255");
-assertEq(view[1200], 230, "1200th value should be 230");
-assertEq(view[1201], 127, "1201th value should be 127");
-assertEq(view[1202], 25, "1202th value should be 25");
-assertEq(view[1203], 255, "1203th value should be 255");
-assertEq(view[1204], 205, "1204th value should be 205");
-assertEq(view[1205], 255, "1205th value should be 255");
-assertEq(view[1206], 50, "1206th value should be 50");
-assertEq(view[1207], 255, "1207th value should be 255");
-assertEq(view[1208], 205, "1208th value should be 205");
-assertEq(view[1209], 255, "1209th value should be 255");
-assertEq(view[1210], 50, "1210th value should be 50");
-assertEq(view[1211], 255, "1211th value should be 255");
-assertEq(view[1212], 205, "1212th value should be 205");
-assertEq(view[1213], 255, "1213th value should be 255");
-assertEq(view[1214], 50, "1214th value should be 50");
-assertEq(view[1215], 255, "1215th value should be 255");
-assertEq(view[1216], 205, "1216th value should be 205");
-assertEq(view[1217], 255, "1217th value should be 255");
-assertEq(view[1218], 50, "1218th value should be 50");
-assertEq(view[1219], 255, "1219th value should be 255");
-assertEq(view[1220], 154, "1220th value should be 154");
-assertEq(view[1221], 255, "1221th value should be 255");
-assertEq(view[1222], 101, "1222th value should be 101");
-assertEq(view[1223], 255, "1223th value should be 255");
-assertEq(view[1224], 154, "1224th value should be 154");
-assertEq(view[1225], 255, "1225th value should be 255");
-assertEq(view[1226], 101, "1226th value should be 101");
-assertEq(view[1227], 255, "1227th value should be 255");
-assertEq(view[1228], 154, "1228th value should be 154");
-assertEq(view[1229], 255, "1229th value should be 255");
-assertEq(view[1230], 101, "1230th value should be 101");
-assertEq(view[1231], 255, "1231th value should be 255");
-assertEq(view[1232], 128, "1232th value should be 128");
-assertEq(view[1233], 127, "1233th value should be 127");
-assertEq(view[1234], 127, "1234th value should be 127");
-assertEq(view[1235], 255, "1235th value should be 255");
-assertEq(view[1236], 26, "1236th value should be 26");
-assertEq(view[1237], 127, "1237th value should be 127");
-assertEq(view[1238], 229, "1238th value should be 229");
-assertEq(view[1239], 255, "1239th value should be 255");
-assertEq(view[1240], 0, "1240th value should be 0");
-assertEq(view[1241], 0, "1241th value should be 0");
-assertEq(view[1242], 0, "1242th value should be 0");
-assertEq(view[1243], 255, "1243th value should be 255");
-assertEq(view[1244], 0, "1244th value should be 0");
-assertEq(view[1245], 0, "1245th value should be 0");
-assertEq(view[1246], 0, "1246th value should be 0");
-assertEq(view[1247], 255, "1247th value should be 255");
-assertEq(view[1248], 0, "1248th value should be 0");
-assertEq(view[1249], 0, "1249th value should be 0");
-assertEq(view[1250], 0, "1250th value should be 0");
-assertEq(view[1251], 255, "1251th value should be 255");
-assertEq(view[1252], 0, "1252th value should be 0");
-assertEq(view[1253], 0, "1253th value should be 0");
-assertEq(view[1254], 0, "1254th value should be 0");
-assertEq(view[1255], 255, "1255th value should be 255");
-assertEq(view[1256], 0, "1256th value should be 0");
-assertEq(view[1257], 0, "1257th value should be 0");
-assertEq(view[1258], 0, "1258th value should be 0");
-assertEq(view[1259], 255, "1259th value should be 255");
-assertEq(view[1260], 0, "1260th value should be 0");
-assertEq(view[1261], 0, "1261th value should be 0");
-assertEq(view[1262], 0, "1262th value should be 0");
-assertEq(view[1263], 255, "1263th value should be 255");
-assertEq(view[1264], 78, "1264th value should be 78");
-assertEq(view[1265], 127, "1265th value should be 127");
-assertEq(view[1266], 178, "1266th value should be 178");
-assertEq(view[1267], 255, "1267th value should be 255");
-assertEq(view[1268], 179, "1268th value should be 179");
-assertEq(view[1269], 127, "1269th value should be 127");
-assertEq(view[1270], 76, "1270th value should be 76");
-assertEq(view[1271], 255, "1271th value should be 255");
-assertEq(view[1272], 205, "1272th value should be 205");
-assertEq(view[1273], 255, "1273th value should be 255");
-assertEq(view[1274], 50, "1274th value should be 50");
-assertEq(view[1275], 255, "1275th value should be 255");
-assertEq(view[1276], 205, "1276th value should be 205");
-assertEq(view[1277], 255, "1277th value should be 255");
-assertEq(view[1278], 50, "1278th value should be 50");
-assertEq(view[1279], 255, "1279th value should be 255");
-assertEq(view[1280], 0, "1280th value should be 0");
-assertEq(view[1281], 0, "1281th value should be 0");
-assertEq(view[1282], 0, "1282th value should be 0");
-assertEq(view[1283], 255, "1283th value should be 255");
-assertEq(view[1284], 205, "1284th value should be 205");
-assertEq(view[1285], 255, "1285th value should be 255");
-assertEq(view[1286], 50, "1286th value should be 50");
-assertEq(view[1287], 255, "1287th value should be 255");
-assertEq(view[1288], 205, "1288th value should be 205");
-assertEq(view[1289], 255, "1289th value should be 255");
-assertEq(view[1290], 50, "1290th value should be 50");
-assertEq(view[1291], 255, "1291th value should be 255");
-assertEq(view[1292], 205, "1292th value should be 205");
-assertEq(view[1293], 255, "1293th value should be 255");
-assertEq(view[1294], 50, "1294th value should be 50");
-assertEq(view[1295], 255, "1295th value should be 255");
-assertEq(view[1296], 205, "1296th value should be 205");
-assertEq(view[1297], 255, "1297th value should be 255");
-assertEq(view[1298], 50, "1298th value should be 50");
-assertEq(view[1299], 255, "1299th value should be 255");
-assertEq(view[1300], 205, "1300th value should be 205");
-assertEq(view[1301], 255, "1301th value should be 255");
-assertEq(view[1302], 50, "1302th value should be 50");
-assertEq(view[1303], 255, "1303th value should be 255");
-assertEq(view[1304], 179, "1304th value should be 179");
-assertEq(view[1305], 127, "1305th value should be 127");
-assertEq(view[1306], 76, "1306th value should be 76");
-assertEq(view[1307], 255, "1307th value should be 255");
-assertEq(view[1308], 154, "1308th value should be 154");
-assertEq(view[1309], 255, "1309th value should be 255");
-assertEq(view[1310], 101, "1310th value should be 101");
-assertEq(view[1311], 255, "1311th value should be 255");
-assertEq(view[1312], 154, "1312th value should be 154");
-assertEq(view[1313], 255, "1313th value should be 255");
-assertEq(view[1314], 101, "1314th value should be 101");
-assertEq(view[1315], 255, "1315th value should be 255");
-assertEq(view[1316], 0, "1316th value should be 0");
-assertEq(view[1317], 0, "1317th value should be 0");
-assertEq(view[1318], 0, "1318th value should be 0");
-assertEq(view[1319], 255, "1319th value should be 255");
-assertEq(view[1320], 0, "1320th value should be 0");
-assertEq(view[1321], 0, "1321th value should be 0");
-assertEq(view[1322], 0, "1322th value should be 0");
-assertEq(view[1323], 255, "1323th value should be 255");
-assertEq(view[1324], 0, "1324th value should be 0");
-assertEq(view[1325], 0, "1325th value should be 0");
-assertEq(view[1326], 0, "1326th value should be 0");
-assertEq(view[1327], 255, "1327th value should be 255");
-assertEq(view[1328], 0, "1328th value should be 0");
-assertEq(view[1329], 0, "1329th value should be 0");
-assertEq(view[1330], 0, "1330th value should be 0");
-assertEq(view[1331], 255, "1331th value should be 255");
-assertEq(view[1332], 0, "1332th value should be 0");
-assertEq(view[1333], 0, "1333th value should be 0");
-assertEq(view[1334], 0, "1334th value should be 0");
-assertEq(view[1335], 255, "1335th value should be 255");
-assertEq(view[1336], 0, "1336th value should be 0");
-assertEq(view[1337], 0, "1337th value should be 0");
-assertEq(view[1338], 0, "1338th value should be 0");
-assertEq(view[1339], 255, "1339th value should be 255");
-assertEq(view[1340], 0, "1340th value should be 0");
-assertEq(view[1341], 0, "1341th value should be 0");
-assertEq(view[1342], 0, "1342th value should be 0");
-assertEq(view[1343], 255, "1343th value should be 255");
-assertEq(view[1344], 0, "1344th value should be 0");
-assertEq(view[1345], 0, "1345th value should be 0");
-assertEq(view[1346], 0, "1346th value should be 0");
-assertEq(view[1347], 255, "1347th value should be 255");
-assertEq(view[1348], 179, "1348th value should be 179");
-assertEq(view[1349], 127, "1349th value should be 127");
-assertEq(view[1350], 76, "1350th value should be 76");
-assertEq(view[1351], 255, "1351th value should be 255");
-assertEq(view[1352], 205, "1352th value should be 205");
-assertEq(view[1353], 255, "1353th value should be 255");
-assertEq(view[1354], 50, "1354th value should be 50");
-assertEq(view[1355], 255, "1355th value should be 255");
-assertEq(view[1356], 205, "1356th value should be 205");
-assertEq(view[1357], 255, "1357th value should be 255");
-assertEq(view[1358], 50, "1358th value should be 50");
-assertEq(view[1359], 255, "1359th value should be 255");
-assertEq(view[1360], 0, "1360th value should be 0");
-assertEq(view[1361], 0, "1361th value should be 0");
-assertEq(view[1362], 0, "1362th value should be 0");
-assertEq(view[1363], 255, "1363th value should be 255");
-assertEq(view[1364], 205, "1364th value should be 205");
-assertEq(view[1365], 255, "1365th value should be 255");
-assertEq(view[1366], 50, "1366th value should be 50");
-assertEq(view[1367], 255, "1367th value should be 255");
-assertEq(view[1368], 205, "1368th value should be 205");
-assertEq(view[1369], 255, "1369th value should be 255");
-assertEq(view[1370], 50, "1370th value should be 50");
-assertEq(view[1371], 255, "1371th value should be 255");
-assertEq(view[1372], 205, "1372th value should be 205");
-assertEq(view[1373], 255, "1373th value should be 255");
-assertEq(view[1374], 50, "1374th value should be 50");
-assertEq(view[1375], 255, "1375th value should be 255");
-assertEq(view[1376], 205, "1376th value should be 205");
-assertEq(view[1377], 255, "1377th value should be 255");
-assertEq(view[1378], 50, "1378th value should be 50");
-assertEq(view[1379], 255, "1379th value should be 255");
-assertEq(view[1380], 205, "1380th value should be 205");
-assertEq(view[1381], 255, "1381th value should be 255");
-assertEq(view[1382], 50, "1382th value should be 50");
-assertEq(view[1383], 255, "1383th value should be 255");
-assertEq(view[1384], 205, "1384th value should be 205");
-assertEq(view[1385], 255, "1385th value should be 255");
-assertEq(view[1386], 50, "1386th value should be 50");
-assertEq(view[1387], 255, "1387th value should be 255");
-assertEq(view[1388], 179, "1388th value should be 179");
-assertEq(view[1389], 127, "1389th value should be 127");
-assertEq(view[1390], 76, "1390th value should be 76");
-assertEq(view[1391], 255, "1391th value should be 255");
-assertEq(view[1392], 179, "1392th value should be 179");
-assertEq(view[1393], 127, "1393th value should be 127");
-assertEq(view[1394], 76, "1394th value should be 76");
-assertEq(view[1395], 255, "1395th value should be 255");
-assertEq(view[1396], 103, "1396th value should be 103");
-assertEq(view[1397], 255, "1397th value should be 255");
-assertEq(view[1398], 152, "1398th value should be 152");
-assertEq(view[1399], 255, "1399th value should be 255");
-assertEq(view[1400], 78, "1400th value should be 78");
-assertEq(view[1401], 127, "1401th value should be 127");
-assertEq(view[1402], 178, "1402th value should be 178");
-assertEq(view[1403], 255, "1403th value should be 255");
-assertEq(view[1404], 52, "1404th value should be 52");
-assertEq(view[1405], 255, "1405th value should be 255");
-assertEq(view[1406], 203, "1406th value should be 203");
-assertEq(view[1407], 255, "1407th value should be 255");
-assertEq(view[1408], 0, "1408th value should be 0");
-assertEq(view[1409], 0, "1409th value should be 0");
-assertEq(view[1410], 0, "1410th value should be 0");
-assertEq(view[1411], 255, "1411th value should be 255");
-assertEq(view[1412], 0, "1412th value should be 0");
-assertEq(view[1413], 0, "1413th value should be 0");
-assertEq(view[1414], 0, "1414th value should be 0");
-assertEq(view[1415], 255, "1415th value should be 255");
-assertEq(view[1416], 52, "1416th value should be 52");
-assertEq(view[1417], 255, "1417th value should be 255");
-assertEq(view[1418], 203, "1418th value should be 203");
-assertEq(view[1419], 255, "1419th value should be 255");
-assertEq(view[1420], 128, "1420th value should be 128");
-assertEq(view[1421], 127, "1421th value should be 127");
-assertEq(view[1422], 127, "1422th value should be 127");
-assertEq(view[1423], 255, "1423th value should be 255");
-assertEq(view[1424], 128, "1424th value should be 128");
-assertEq(view[1425], 127, "1425th value should be 127");
-assertEq(view[1426], 127, "1426th value should be 127");
-assertEq(view[1427], 255, "1427th value should be 255");
-assertEq(view[1428], 205, "1428th value should be 205");
-assertEq(view[1429], 255, "1429th value should be 255");
-assertEq(view[1430], 50, "1430th value should be 50");
-assertEq(view[1431], 255, "1431th value should be 255");
-assertEq(view[1432], 205, "1432th value should be 205");
-assertEq(view[1433], 255, "1433th value should be 255");
-assertEq(view[1434], 50, "1434th value should be 50");
-assertEq(view[1435], 255, "1435th value should be 255");
-assertEq(view[1436], 230, "1436th value should be 230");
-assertEq(view[1437], 127, "1437th value should be 127");
-assertEq(view[1438], 25, "1438th value should be 25");
-assertEq(view[1439], 255, "1439th value should be 255");
-assertEq(view[1440], 0, "1440th value should be 0");
-assertEq(view[1441], 0, "1441th value should be 0");
-assertEq(view[1442], 0, "1442th value should be 0");
-assertEq(view[1443], 255, "1443th value should be 255");
-assertEq(view[1444], 230, "1444th value should be 230");
-assertEq(view[1445], 127, "1445th value should be 127");
-assertEq(view[1446], 25, "1446th value should be 25");
-assertEq(view[1447], 255, "1447th value should be 255");
-assertEq(view[1448], 205, "1448th value should be 205");
-assertEq(view[1449], 255, "1449th value should be 255");
-assertEq(view[1450], 50, "1450th value should be 50");
-assertEq(view[1451], 255, "1451th value should be 255");
-assertEq(view[1452], 205, "1452th value should be 205");
-assertEq(view[1453], 255, "1453th value should be 255");
-assertEq(view[1454], 50, "1454th value should be 50");
-assertEq(view[1455], 255, "1455th value should be 255");
-assertEq(view[1456], 205, "1456th value should be 205");
-assertEq(view[1457], 255, "1457th value should be 255");
-assertEq(view[1458], 50, "1458th value should be 50");
-assertEq(view[1459], 255, "1459th value should be 255");
-assertEq(view[1460], 205, "1460th value should be 205");
-assertEq(view[1461], 255, "1461th value should be 255");
-assertEq(view[1462], 50, "1462th value should be 50");
-assertEq(view[1463], 255, "1463th value should be 255");
-assertEq(view[1464], 205, "1464th value should be 205");
-assertEq(view[1465], 255, "1465th value should be 255");
-assertEq(view[1466], 50, "1466th value should be 50");
-assertEq(view[1467], 255, "1467th value should be 255");
-assertEq(view[1468], 179, "1468th value should be 179");
-assertEq(view[1469], 127, "1469th value should be 127");
-assertEq(view[1470], 76, "1470th value should be 76");
-assertEq(view[1471], 255, "1471th value should be 255");
-assertEq(view[1472], 179, "1472th value should be 179");
-assertEq(view[1473], 127, "1473th value should be 127");
-assertEq(view[1474], 76, "1474th value should be 76");
-assertEq(view[1475], 255, "1475th value should be 255");
-assertEq(view[1476], 179, "1476th value should be 179");
-assertEq(view[1477], 127, "1477th value should be 127");
-assertEq(view[1478], 76, "1478th value should be 76");
-assertEq(view[1479], 255, "1479th value should be 255");
-assertEq(view[1480], 128, "1480th value should be 128");
-assertEq(view[1481], 127, "1481th value should be 127");
-assertEq(view[1482], 127, "1482th value should be 127");
-assertEq(view[1483], 255, "1483th value should be 255");
-assertEq(view[1484], 103, "1484th value should be 103");
-assertEq(view[1485], 255, "1485th value should be 255");
-assertEq(view[1486], 152, "1486th value should be 152");
-assertEq(view[1487], 255, "1487th value should be 255");
-assertEq(view[1488], 0, "1488th value should be 0");
-assertEq(view[1489], 0, "1489th value should be 0");
-assertEq(view[1490], 0, "1490th value should be 0");
-assertEq(view[1491], 255, "1491th value should be 255");
-assertEq(view[1492], 0, "1492th value should be 0");
-assertEq(view[1493], 0, "1493th value should be 0");
-assertEq(view[1494], 0, "1494th value should be 0");
-assertEq(view[1495], 255, "1495th value should be 255");
-assertEq(view[1496], 128, "1496th value should be 128");
-assertEq(view[1497], 127, "1497th value should be 127");
-assertEq(view[1498], 127, "1498th value should be 127");
-assertEq(view[1499], 255, "1499th value should be 255");
-assertEq(view[1500], 154, "1500th value should be 154");
-assertEq(view[1501], 255, "1501th value should be 255");
-assertEq(view[1502], 101, "1502th value should be 101");
-assertEq(view[1503], 255, "1503th value should be 255");
-assertEq(view[1504], 179, "1504th value should be 179");
-assertEq(view[1505], 127, "1505th value should be 127");
-assertEq(view[1506], 76, "1506th value should be 76");
-assertEq(view[1507], 255, "1507th value should be 255");
-assertEq(view[1508], 205, "1508th value should be 205");
-assertEq(view[1509], 255, "1509th value should be 255");
-assertEq(view[1510], 50, "1510th value should be 50");
-assertEq(view[1511], 255, "1511th value should be 255");
-assertEq(view[1512], 205, "1512th value should be 205");
-assertEq(view[1513], 255, "1513th value should be 255");
-assertEq(view[1514], 50, "1514th value should be 50");
-assertEq(view[1515], 255, "1515th value should be 255");
-assertEq(view[1516], 230, "1516th value should be 230");
-assertEq(view[1517], 127, "1517th value should be 127");
-assertEq(view[1518], 25, "1518th value should be 25");
-assertEq(view[1519], 255, "1519th value should be 255");
-assertEq(view[1520], 0, "1520th value should be 0");
-assertEq(view[1521], 0, "1521th value should be 0");
-assertEq(view[1522], 0, "1522th value should be 0");
-assertEq(view[1523], 255, "1523th value should be 255");
-assertEq(view[1524], 230, "1524th value should be 230");
-assertEq(view[1525], 127, "1525th value should be 127");
-assertEq(view[1526], 25, "1526th value should be 25");
-assertEq(view[1527], 255, "1527th value should be 255");
-assertEq(view[1528], 230, "1528th value should be 230");
-assertEq(view[1529], 127, "1529th value should be 127");
-assertEq(view[1530], 25, "1530th value should be 25");
-assertEq(view[1531], 255, "1531th value should be 255");
-assertEq(view[1532], 205, "1532th value should be 205");
-assertEq(view[1533], 255, "1533th value should be 255");
-assertEq(view[1534], 50, "1534th value should be 50");
-assertEq(view[1535], 255, "1535th value should be 255");
-assertEq(view[1536], 205, "1536th value should be 205");
-assertEq(view[1537], 255, "1537th value should be 255");
-assertEq(view[1538], 50, "1538th value should be 50");
-assertEq(view[1539], 255, "1539th value should be 255");
-assertEq(view[1540], 205, "1540th value should be 205");
-assertEq(view[1541], 255, "1541th value should be 255");
-assertEq(view[1542], 50, "1542th value should be 50");
-assertEq(view[1543], 255, "1543th value should be 255");
-assertEq(view[1544], 205, "1544th value should be 205");
-assertEq(view[1545], 255, "1545th value should be 255");
-assertEq(view[1546], 50, "1546th value should be 50");
-assertEq(view[1547], 255, "1547th value should be 255");
-assertEq(view[1548], 205, "1548th value should be 205");
-assertEq(view[1549], 255, "1549th value should be 255");
-assertEq(view[1550], 50, "1550th value should be 50");
-assertEq(view[1551], 255, "1551th value should be 255");
-assertEq(view[1552], 179, "1552th value should be 179");
-assertEq(view[1553], 127, "1553th value should be 127");
-assertEq(view[1554], 76, "1554th value should be 76");
-assertEq(view[1555], 255, "1555th value should be 255");
-assertEq(view[1556], 179, "1556th value should be 179");
-assertEq(view[1557], 127, "1557th value should be 127");
-assertEq(view[1558], 76, "1558th value should be 76");
-assertEq(view[1559], 255, "1559th value should be 255");
-assertEq(view[1560], 179, "1560th value should be 179");
-assertEq(view[1561], 127, "1561th value should be 127");
-assertEq(view[1562], 76, "1562th value should be 76");
-assertEq(view[1563], 255, "1563th value should be 255");
-assertEq(view[1564], 154, "1564th value should be 154");
-assertEq(view[1565], 255, "1565th value should be 255");
-assertEq(view[1566], 101, "1566th value should be 101");
-assertEq(view[1567], 255, "1567th value should be 255");
-assertEq(view[1568], 26, "1568th value should be 26");
-assertEq(view[1569], 127, "1569th value should be 127");
-assertEq(view[1570], 229, "1570th value should be 229");
-assertEq(view[1571], 255, "1571th value should be 255");
-assertEq(view[1572], 0, "1572th value should be 0");
-assertEq(view[1573], 0, "1573th value should be 0");
-assertEq(view[1574], 0, "1574th value should be 0");
-assertEq(view[1575], 255, "1575th value should be 255");
-assertEq(view[1576], 154, "1576th value should be 154");
-assertEq(view[1577], 255, "1577th value should be 255");
-assertEq(view[1578], 101, "1578th value should be 101");
-assertEq(view[1579], 255, "1579th value should be 255");
-assertEq(view[1580], 179, "1580th value should be 179");
-assertEq(view[1581], 127, "1581th value should be 127");
-assertEq(view[1582], 76, "1582th value should be 76");
-assertEq(view[1583], 255, "1583th value should be 255");
-assertEq(view[1584], 205, "1584th value should be 205");
-assertEq(view[1585], 255, "1585th value should be 255");
-assertEq(view[1586], 50, "1586th value should be 50");
-assertEq(view[1587], 255, "1587th value should be 255");
-assertEq(view[1588], 205, "1588th value should be 205");
-assertEq(view[1589], 255, "1589th value should be 255");
-assertEq(view[1590], 50, "1590th value should be 50");
-assertEq(view[1591], 255, "1591th value should be 255");
-assertEq(view[1592], 230, "1592th value should be 230");
-assertEq(view[1593], 127, "1593th value should be 127");
-assertEq(view[1594], 25, "1594th value should be 25");
-assertEq(view[1595], 255, "1595th value should be 255");
-assertEq(view[1596], 230, "1596th value should be 230");
-assertEq(view[1597], 127, "1597th value should be 127");
-assertEq(view[1598], 25, "1598th value should be 25");
-assertEq(view[1599], 255, "1599th value should be 255");
-
-// Code used to generate the assertEq list above.
-function generateAssertList() {
-  function template(i, x) {
-    return 'assertEq(view[' + i + '], ' + x + ', "' + i + 'th value should be ' + x + '");\n';
-  }
-  var buf = ''
-  for (var i = 0; i < LIMIT_SHOW; i++)
-      buf += template(i, view[i]);
-  print(buf);
-}
-//generateAssertList();
+/* -*- Mode: javascript; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 ; js-indent-level : 2 ; js-curly-indent-offset: 0 -*- */
+/* vim: set ts=2 et sw=2 tw=80: */
+
+// Mandelbrot using SIMD
+// Author: Peter Jensen, Intel Corporation
+
+load(libdir + "asm.js");
+if (!isSimdAvailable() || typeof SIMD === 'undefined') {
+    print("won't run tests as simd extensions aren't activated yet");
+    quit(0);
+}
+
+// global variables
+const MAX_ITERATIONS = 10;
+const DRAW_ITERATIONS = 10;
+
+const CANVAS_WIDTH = 20;
+const CANVAS_HEIGHT = 20;
+
+const LIMIT_SHOW = 20 * 20 * 4;
+
+// Asm.js module buffer.
+var buffer = new ArrayBuffer(16 * 1024 * 1024);
+var view = new Uint8Array(buffer);
+
+var moduleCode = `
+  "use asm"
+  var b8 = new global.Uint8Array(buffer);
+  var toF = global.Math.fround;
+  var i4 = global.SIMD.int32x4;
+  var ci4 = i4.check;
+  var f4 = global.SIMD.float32x4;
+  var i4add = i4.add;
+  var i4and = i4.and;
+  var f4add = f4.add;
+  var f4sub = f4.sub;
+  var f4mul = f4.mul;
+  var f4lessThanOrEqual = f4.lessThanOrEqual;
+  var f4splat = f4.splat;
+  var imul = global.Math.imul;
+  const one4 = i4(1,1,1,1), two4 = f4(2,2,2,2), four4 = f4(4,4,4,4);
+
+  const mk0 = 0x007fffff;
+
+  function declareHeapLength() {
+    b8[0x00ffffff] = 0;
+  }
+
+  function mapColorAndSetPixel (x, y, width, value, max_iterations) {
+    x = x | 0;
+    y = y | 0;
+    width = width | 0;
+    value = value | 0;
+    max_iterations = max_iterations | 0;
+
+    var rgb = 0, r = 0, g = 0, b = 0, index = 0;
+
+    index = (((imul((width >>> 0), (y >>> 0)) + x) | 0) * 4) | 0;
+    if ((value | 0) == (max_iterations | 0)) {
+      r = 0;
+      g = 0;
+      b = 0;
+    } else {
+      rgb = ~~toF(toF(toF(toF(value >>> 0) * toF(0xffff)) / toF(max_iterations >>> 0)) * toF(0xff));
+      r = rgb & 0xff;
+      g = (rgb >>> 8) & 0xff;
+      b = (rgb >>> 16) & 0xff;
+    }
+    b8[(index & mk0) >> 0] = r;
+    b8[(index & mk0) + 1 >> 0] = g;
+    b8[(index & mk0) + 2 >> 0] = b;
+    b8[(index & mk0) + 3 >> 0] = 255;
+  }
+
+  function mandelPixelX4 (xf, yf, yd, max_iterations) {
+    xf = toF(xf);
+    yf = toF(yf);
+    yd = toF(yd);
+    max_iterations = max_iterations | 0;
+    var c_re4  = f4(0,0,0,0), c_im4  = f4(0,0,0,0);
+    var z_re4  = f4(0,0,0,0), z_im4  = f4(0,0,0,0);
+    var count4 = i4(0,0,0,0);
+    var z_re24 = f4(0,0,0,0), z_im24 = f4(0,0,0,0);
+    var new_re4 = f4(0,0,0,0), new_im4 = f4(0,0,0,0);
+    var i = 0;
+    var mi4 = i4(0,0,0,0);
+
+    c_re4 = f4splat(xf);
+    c_im4 = f4(yf, toF(yd + yf), toF(yd + toF(yd + yf)), toF(yd + toF(yd + toF(yd + yf))));
+
+    z_re4  = c_re4;
+    z_im4  = c_im4;
+
+    for (i = 0; (i | 0) < (max_iterations | 0); i = (i + 1) | 0) {
+      z_re24 = f4mul(z_re4, z_re4);
+      z_im24 = f4mul(z_im4, z_im4);
+      mi4 = f4lessThanOrEqual(f4add(z_re24, z_im24), four4);
+      // If all 4 values are greater than 4.0, there's no reason to continue.
+      if ((mi4.signMask | 0) == 0x00)
+        break;
+
+      new_re4 = f4sub(z_re24, z_im24);
+      new_im4 = f4mul(f4mul(two4, z_re4), z_im4);
+      z_re4   = f4add(c_re4, new_re4);
+      z_im4   = f4add(c_im4, new_im4);
+      count4  = i4add(count4, i4and(mi4, one4));
+    }
+    return ci4(count4);
+  }
+
+  function mandelColumnX4 (x, width, height, xf, yf, yd, max_iterations) {
+    x = x | 0;
+    width = width | 0;
+    height = height | 0;
+    xf = toF(xf);
+    yf = toF(yf);
+    yd = toF(yd);
+    max_iterations = max_iterations | 0;
+
+    var y = 0;
+    var ydx4 = toF(0);
+    var m4 = i4(0,0,0,0);
+
+    ydx4 = toF(yd * toF(4));
+    for (y = 0; (y | 0) < (height | 0); y = (y + 4) | 0) {
+      m4   = ci4(mandelPixelX4(toF(xf), toF(yf), toF(yd), max_iterations));
+      mapColorAndSetPixel(x | 0, y | 0,   width, m4.x, max_iterations);
+      mapColorAndSetPixel(x | 0, (y + 1) | 0, width, m4.y, max_iterations);
+      mapColorAndSetPixel(x | 0, (y + 2) | 0, width, m4.z, max_iterations);
+      mapColorAndSetPixel(x | 0, (y + 3) | 0, width, m4.w, max_iterations);
+      yf = toF(yf + ydx4);
+    }
+  }
+
+  function mandel (width, height, xc, yc, scale, max_iterations) {
+    width = width | 0;
+    height = height | 0;
+    xc = toF(xc);
+    yc = toF(yc);
+    scale = toF(scale);
+    max_iterations = max_iterations | 0;
+
+    var x0 = toF(0), y0 = toF(0);
+    var xd = toF(0), yd = toF(0);
+    var xf = toF(0);
+    var x = 0;
+
+    x0 = toF(xc - toF(scale * toF(1.5)));
+    y0 = toF(yc - scale);
+    xd = toF(toF(scale * toF(3)) / toF(width >>> 0));
+    yd = toF(toF(scale * toF(2)) / toF(height >>> 0));
+    xf = x0;
+
+    for (x = 0; (x | 0) < (width | 0); x = (x + 1) | 0) {
+      mandelColumnX4(x, width, height, xf, y0, yd, max_iterations);
+      xf = toF(xf + xd);
+    }
+  }
+
+  return mandel;
+`;
+
+var FFI = {};
+var mandelbro = asmLink(asmCompile('global', 'ffi', 'buffer', moduleCode), this, FFI, buffer);
+
+function animateMandelbrot () {
+  var scale_start = 1.0;
+  var scale_end   = 0.0005;
+  var xc_start    = -0.5;
+  var yc_start    = 0.0;
+  var xc_end      = 0.0;
+  var yc_end      = 0.75;
+  var steps       = 200.0;
+  var scale_step  = (scale_end - scale_start)/steps;
+  var xc_step     = (xc_end - xc_start)/steps;
+  var yc_step     = (yc_end - yc_start)/steps;
+  var scale       = scale_start;
+  var xc          = xc_start;
+  var yc          = yc_start;
+  var i           = 0;
+  var now         = dateNow();
+
+  function draw1 () {
+    mandelbro(CANVAS_WIDTH, CANVAS_HEIGHT, xc, yc, scale, MAX_ITERATIONS);
+    if (scale < scale_end || scale > scale_start) {
+      scale_step = -scale_step;
+      xc_step = -xc_step;
+      yc_step = -yc_step;
+    }
+    scale += scale_step;
+    xc += xc_step;
+    yc += yc_step;
+    i++;
+  }
+
+  var b = dateNow();
+  for (var j = DRAW_ITERATIONS; j --> 0;)
+    draw1();
+  print(dateNow() - b);
+}
+
+animateMandelbrot();
+
+assertEq(view[0], 0, "0th value should be 0");
+assertEq(view[1], 0, "1th value should be 0");
+assertEq(view[2], 0, "2th value should be 0");
+assertEq(view[3], 255, "3th value should be 255");
+assertEq(view[4], 230, "4th value should be 230");
+assertEq(view[5], 127, "5th value should be 127");
+assertEq(view[6], 25, "6th value should be 25");
+assertEq(view[7], 255, "7th value should be 255");
+assertEq(view[8], 230, "8th value should be 230");
+assertEq(view[9], 127, "9th value should be 127");
+assertEq(view[10], 25, "10th value should be 25");
+assertEq(view[11], 255, "11th value should be 255");
+assertEq(view[12], 205, "12th value should be 205");
+assertEq(view[13], 255, "13th value should be 255");
+assertEq(view[14], 50, "14th value should be 50");
+assertEq(view[15], 255, "15th value should be 255");
+assertEq(view[16], 205, "16th value should be 205");
+assertEq(view[17], 255, "17th value should be 255");
+assertEq(view[18], 50, "18th value should be 50");
+assertEq(view[19], 255, "19th value should be 255");
+assertEq(view[20], 205, "20th value should be 205");
+assertEq(view[21], 255, "21th value should be 255");
+assertEq(view[22], 50, "22th value should be 50");
+assertEq(view[23], 255, "23th value should be 255");
+assertEq(view[24], 205, "24th value should be 205");
+assertEq(view[25], 255, "25th value should be 255");
+assertEq(view[26], 50, "26th value should be 50");
+assertEq(view[27], 255, "27th value should be 255");
+assertEq(view[28], 205, "28th value should be 205");
+assertEq(view[29], 255, "29th value should be 255");
+assertEq(view[30], 50, "30th value should be 50");
+assertEq(view[31], 255, "31th value should be 255");
+assertEq(view[32], 179, "32th value should be 179");
+assertEq(view[33], 127, "33th value should be 127");
+assertEq(view[34], 76, "34th value should be 76");
+assertEq(view[35], 255, "35th value should be 255");
+assertEq(view[36], 179, "36th value should be 179");
+assertEq(view[37], 127, "37th value should be 127");
+assertEq(view[38], 76, "38th value should be 76");
+assertEq(view[39], 255, "39th value should be 255");
+assertEq(view[40], 179, "40th value should be 179");
+assertEq(view[41], 127, "41th value should be 127");
+assertEq(view[42], 76, "42th value should be 76");
+assertEq(view[43], 255, "43th value should be 255");
+assertEq(view[44], 154, "44th value should be 154");
+assertEq(view[45], 255, "45th value should be 255");
+assertEq(view[46], 101, "46th value should be 101");
+assertEq(view[47], 255, "47th value should be 255");
+assertEq(view[48], 78, "48th value should be 78");
+assertEq(view[49], 127, "49th value should be 127");
+assertEq(view[50], 178, "50th value should be 178");
+assertEq(view[51], 255, "51th value should be 255");
+assertEq(view[52], 52, "52th value should be 52");
+assertEq(view[53], 255, "53th value should be 255");
+assertEq(view[54], 203, "54th value should be 203");
+assertEq(view[55], 255, "55th value should be 255");
+assertEq(view[56], 154, "56th value should be 154");
+assertEq(view[57], 255, "57th value should be 255");
+assertEq(view[58], 101, "58th value should be 101");
+assertEq(view[59], 255, "59th value should be 255");
+assertEq(view[60], 179, "60th value should be 179");
+assertEq(view[61], 127, "61th value should be 127");
+assertEq(view[62], 76, "62th value should be 76");
+assertEq(view[63], 255, "63th value should be 255");
+assertEq(view[64], 205, "64th value should be 205");
+assertEq(view[65], 255, "65th value should be 255");
+assertEq(view[66], 50, "66th value should be 50");
+assertEq(view[67], 255, "67th value should be 255");
+assertEq(view[68], 205, "68th value should be 205");
+assertEq(view[69], 255, "69th value should be 255");
+assertEq(view[70], 50, "70th value should be 50");
+assertEq(view[71], 255, "71th value should be 255");
+assertEq(view[72], 230, "72th value should be 230");
+assertEq(view[73], 127, "73th value should be 127");
+assertEq(view[74], 25, "74th value should be 25");
+assertEq(view[75], 255, "75th value should be 255");
+assertEq(view[76], 230, "76th value should be 230");
+assertEq(view[77], 127, "77th value should be 127");
+assertEq(view[78], 25, "78th value should be 25");
+assertEq(view[79], 255, "79th value should be 255");
+assertEq(view[80], 0, "80th value should be 0");
+assertEq(view[81], 0, "81th value should be 0");
+assertEq(view[82], 0, "82th value should be 0");
+assertEq(view[83], 255, "83th value should be 255");
+assertEq(view[84], 230, "84th value should be 230");
+assertEq(view[85], 127, "85th value should be 127");
+assertEq(view[86], 25, "86th value should be 25");
+assertEq(view[87], 255, "87th value should be 255");
+assertEq(view[88], 205, "88th value should be 205");
+assertEq(view[89], 255, "89th value should be 255");
+assertEq(view[90], 50, "90th value should be 50");
+assertEq(view[91], 255, "91th value should be 255");
+assertEq(view[92], 205, "92th value should be 205");
+assertEq(view[93], 255, "93th value should be 255");
+assertEq(view[94], 50, "94th value should be 50");
+assertEq(view[95], 255, "95th value should be 255");
+assertEq(view[96], 205, "96th value should be 205");
+assertEq(view[97], 255, "97th value should be 255");
+assertEq(view[98], 50, "98th value should be 50");
+assertEq(view[99], 255, "99th value should be 255");
+assertEq(view[100], 205, "100th value should be 205");
+assertEq(view[101], 255, "101th value should be 255");
+assertEq(view[102], 50, "102th value should be 50");
+assertEq(view[103], 255, "103th value should be 255");
+assertEq(view[104], 205, "104th value should be 205");
+assertEq(view[105], 255, "105th value should be 255");
+assertEq(view[106], 50, "106th value should be 50");
+assertEq(view[107], 255, "107th value should be 255");
+assertEq(view[108], 205, "108th value should be 205");
+assertEq(view[109], 255, "109th value should be 255");
+assertEq(view[110], 50, "110th value should be 50");
+assertEq(view[111], 255, "111th value should be 255");
+assertEq(view[112], 179, "112th value should be 179");
+assertEq(view[113], 127, "113th value should be 127");
+assertEq(view[114], 76, "114th value should be 76");
+assertEq(view[115], 255, "115th value should be 255");
+assertEq(view[116], 179, "116th value should be 179");
+assertEq(view[117], 127, "117th value should be 127");
+assertEq(view[118], 76, "118th value should be 76");
+assertEq(view[119], 255, "119th value should be 255");
+assertEq(view[120], 154, "120th value should be 154");
+assertEq(view[121], 255, "121th value should be 255");
+assertEq(view[122], 101, "122th value should be 101");
+assertEq(view[123], 255, "123th value should be 255");
+assertEq(view[124], 103, "124th value should be 103");
+assertEq(view[125], 255, "125th value should be 255");
+assertEq(view[126], 152, "126th value should be 152");
+assertEq(view[127], 255, "127th value should be 255");
+assertEq(view[128], 0, "128th value should be 0");
+assertEq(view[129], 0, "129th value should be 0");
+assertEq(view[130], 0, "130th value should be 0");
+assertEq(view[131], 255, "131th value should be 255");
+assertEq(view[132], 0, "132th value should be 0");
+assertEq(view[133], 0, "133th value should be 0");
+assertEq(view[134], 0, "134th value should be 0");
+assertEq(view[135], 255, "135th value should be 255");
+assertEq(view[136], 128, "136th value should be 128");
+assertEq(view[137], 127, "137th value should be 127");
+assertEq(view[138], 127, "138th value should be 127");
+assertEq(view[139], 255, "139th value should be 255");
+assertEq(view[140], 154, "140th value should be 154");
+assertEq(view[141], 255, "141th value should be 255");
+assertEq(view[142], 101, "142th value should be 101");
+assertEq(view[143], 255, "143th value should be 255");
+assertEq(view[144], 179, "144th value should be 179");
+assertEq(view[145], 127, "145th value should be 127");
+assertEq(view[146], 76, "146th value should be 76");
+assertEq(view[147], 255, "147th value should be 255");
+assertEq(view[148], 205, "148th value should be 205");
+assertEq(view[149], 255, "149th value should be 255");
+assertEq(view[150], 50, "150th value should be 50");
+assertEq(view[151], 255, "151th value should be 255");
+assertEq(view[152], 205, "152th value should be 205");
+assertEq(view[153], 255, "153th value should be 255");
+assertEq(view[154], 50, "154th value should be 50");
+assertEq(view[155], 255, "155th value should be 255");
+assertEq(view[156], 230, "156th value should be 230");
+assertEq(view[157], 127, "157th value should be 127");
+assertEq(view[158], 25, "158th value should be 25");
+assertEq(view[159], 255, "159th value should be 255");
+assertEq(view[160], 0, "160th value should be 0");
+assertEq(view[161], 0, "161th value should be 0");
+assertEq(view[162], 0, "162th value should be 0");
+assertEq(view[163], 255, "163th value should be 255");
+assertEq(view[164], 230, "164th value should be 230");
+assertEq(view[165], 127, "165th value should be 127");
+assertEq(view[166], 25, "166th value should be 25");
+assertEq(view[167], 255, "167th value should be 255");
+assertEq(view[168], 205, "168th value should be 205");
+assertEq(view[169], 255, "169th value should be 255");
+assertEq(view[170], 50, "170th value should be 50");
+assertEq(view[171], 255, "171th value should be 255");
+assertEq(view[172], 205, "172th value should be 205");
+assertEq(view[173], 255, "173th value should be 255");
+assertEq(view[174], 50, "174th value should be 50");
+assertEq(view[175], 255, "175th value should be 255");
+assertEq(view[176], 205, "176th value should be 205");
+assertEq(view[177], 255, "177th value should be 255");
+assertEq(view[178], 50, "178th value should be 50");
+assertEq(view[179], 255, "179th value should be 255");
+assertEq(view[180], 205, "180th value should be 205");
+assertEq(view[181], 255, "181th value should be 255");
+assertEq(view[182], 50, "182th value should be 50");
+assertEq(view[183], 255, "183th value should be 255");
+assertEq(view[184], 205, "184th value should be 205");
+assertEq(view[185], 255, "185th value should be 255");
+assertEq(view[186], 50, "186th value should be 50");
+assertEq(view[187], 255, "187th value should be 255");
+assertEq(view[188], 179, "188th value should be 179");
+assertEq(view[189], 127, "189th value should be 127");
+assertEq(view[190], 76, "190th value should be 76");
+assertEq(view[191], 255, "191th value should be 255");
+assertEq(view[192], 179, "192th value should be 179");
+assertEq(view[193], 127, "193th value should be 127");
+assertEq(view[194], 76, "194th value should be 76");
+assertEq(view[195], 255, "195th value should be 255");
+assertEq(view[196], 154, "196th value should be 154");
+assertEq(view[197], 255, "197th value should be 255");
+assertEq(view[198], 101, "198th value should be 101");
+assertEq(view[199], 255, "199th value should be 255");
+assertEq(view[200], 103, "200th value should be 103");
+assertEq(view[201], 255, "201th value should be 255");
+assertEq(view[202], 152, "202th value should be 152");
+assertEq(view[203], 255, "203th value should be 255");
+assertEq(view[204], 78, "204th value should be 78");
+assertEq(view[205], 127, "205th value should be 127");
+assertEq(view[206], 178, "206th value should be 178");
+assertEq(view[207], 255, "207th value should be 255");
+assertEq(view[208], 0, "208th value should be 0");
+assertEq(view[209], 0, "209th value should be 0");
+assertEq(view[210], 0, "210th value should be 0");
+assertEq(view[211], 255, "211th value should be 255");
+assertEq(view[212], 0, "212th value should be 0");
+assertEq(view[213], 0, "213th value should be 0");
+assertEq(view[214], 0, "214th value should be 0");
+assertEq(view[215], 255, "215th value should be 255");
+assertEq(view[216], 78, "216th value should be 78");
+assertEq(view[217], 127, "217th value should be 127");
+assertEq(view[218], 178, "218th value should be 178");
+assertEq(view[219], 255, "219th value should be 255");
+assertEq(view[220], 128, "220th value should be 128");
+assertEq(view[221], 127, "221th value should be 127");
+assertEq(view[222], 127, "222th value should be 127");
+assertEq(view[223], 255, "223th value should be 255");
+assertEq(view[224], 154, "224th value should be 154");
+assertEq(view[225], 255, "225th value should be 255");
+assertEq(view[226], 101, "226th value should be 101");
+assertEq(view[227], 255, "227th value should be 255");
+assertEq(view[228], 205, "228th value should be 205");
+assertEq(view[229], 255, "229th value should be 255");
+assertEq(view[230], 50, "230th value should be 50");
+assertEq(view[231], 255, "231th value should be 255");
+assertEq(view[232], 205, "232th value should be 205");
+assertEq(view[233], 255, "233th value should be 255");
+assertEq(view[234], 50, "234th value should be 50");
+assertEq(view[235], 255, "235th value should be 255");
+assertEq(view[236], 230, "236th value should be 230");
+assertEq(view[237], 127, "237th value should be 127");
+assertEq(view[238], 25, "238th value should be 25");
+assertEq(view[239], 255, "239th value should be 255");
+assertEq(view[240], 0, "240th value should be 0");
+assertEq(view[241], 0, "241th value should be 0");
+assertEq(view[242], 0, "242th value should be 0");
+assertEq(view[243], 255, "243th value should be 255");
+assertEq(view[244], 205, "244th value should be 205");
+assertEq(view[245], 255, "245th value should be 255");
+assertEq(view[246], 50, "246th value should be 50");
+assertEq(view[247], 255, "247th value should be 255");
+assertEq(view[248], 205, "248th value should be 205");
+assertEq(view[249], 255, "249th value should be 255");
+assertEq(view[250], 50, "250th value should be 50");
+assertEq(view[251], 255, "251th value should be 255");
+assertEq(view[252], 205, "252th value should be 205");
+assertEq(view[253], 255, "253th value should be 255");
+assertEq(view[254], 50, "254th value should be 50");
+assertEq(view[255], 255, "255th value should be 255");
+assertEq(view[256], 205, "256th value should be 205");
+assertEq(view[257], 255, "257th value should be 255");
+assertEq(view[258], 50, "258th value should be 50");
+assertEq(view[259], 255, "259th value should be 255");
+assertEq(view[260], 205, "260th value should be 205");
+assertEq(view[261], 255, "261th value should be 255");
+assertEq(view[262], 50, "262th value should be 50");
+assertEq(view[263], 255, "263th value should be 255");
+assertEq(view[264], 179, "264th value should be 179");
+assertEq(view[265], 127, "265th value should be 127");
+assertEq(view[266], 76, "266th value should be 76");
+assertEq(view[267], 255, "267th value should be 255");
+assertEq(view[268], 179, "268th value should be 179");
+assertEq(view[269], 127, "269th value should be 127");
+assertEq(view[270], 76, "270th value should be 76");
+assertEq(view[271], 255, "271th value should be 255");
+assertEq(view[272], 154, "272th value should be 154");
+assertEq(view[273], 255, "273th value should be 255");
+assertEq(view[274], 101, "274th value should be 101");
+assertEq(view[275], 255, "275th value should be 255");
+assertEq(view[276], 52, "276th value should be 52");
+assertEq(view[277], 255, "277th value should be 255");
+assertEq(view[278], 203, "278th value should be 203");
+assertEq(view[279], 255, "279th value should be 255");
+assertEq(view[280], 0, "280th value should be 0");
+assertEq(view[281], 0, "281th value should be 0");
+assertEq(view[282], 0, "282th value should be 0");
+assertEq(view[283], 255, "283th value should be 255");
+assertEq(view[284], 0, "284th value should be 0");
+assertEq(view[285], 0, "285th value should be 0");
+assertEq(view[286], 0, "286th value should be 0");
+assertEq(view[287], 255, "287th value should be 255");
+assertEq(view[288], 0, "288th value should be 0");
+assertEq(view[289], 0, "289th value should be 0");
+assertEq(view[290], 0, "290th value should be 0");
+assertEq(view[291], 255, "291th value should be 255");
+assertEq(view[292], 0, "292th value should be 0");
+assertEq(view[293], 0, "293th value should be 0");
+assertEq(view[294], 0, "294th value should be 0");
+assertEq(view[295], 255, "295th value should be 255");
+assertEq(view[296], 0, "296th value should be 0");
+assertEq(view[297], 0, "297th value should be 0");
+assertEq(view[298], 0, "298th value should be 0");
+assertEq(view[299], 255, "299th value should be 255");
+assertEq(view[300], 52, "300th value should be 52");
+assertEq(view[301], 255, "301th value should be 255");
+assertEq(view[302], 203, "302th value should be 203");
+assertEq(view[303], 255, "303th value should be 255");
+assertEq(view[304], 52, "304th value should be 52");
+assertEq(view[305], 255, "305th value should be 255");
+assertEq(view[306], 203, "306th value should be 203");
+assertEq(view[307], 255, "307th value should be 255");
+assertEq(view[308], 179, "308th value should be 179");
+assertEq(view[309], 127, "309th value should be 127");
+assertEq(view[310], 76, "310th value should be 76");
+assertEq(view[311], 255, "311th value should be 255");
+assertEq(view[312], 205, "312th value should be 205");
+assertEq(view[313], 255, "313th value should be 255");
+assertEq(view[314], 50, "314th value should be 50");
+assertEq(view[315], 255, "315th value should be 255");
+assertEq(view[316], 205, "316th value should be 205");
+assertEq(view[317], 255, "317th value should be 255");
+assertEq(view[318], 50, "318th value should be 50");
+assertEq(view[319], 255, "319th value should be 255");
+assertEq(view[320], 230, "320th value should be 230");
+assertEq(view[321], 127, "321th value should be 127");
+assertEq(view[322], 25, "322th value should be 25");
+assertEq(view[323], 255, "323th value should be 255");
+assertEq(view[324], 205, "324th value should be 205");
+assertEq(view[325], 255, "325th value should be 255");
+assertEq(view[326], 50, "326th value should be 50");
+assertEq(view[327], 255, "327th value should be 255");
+assertEq(view[328], 205, "328th value should be 205");
+assertEq(view[329], 255, "329th value should be 255");
+assertEq(view[330], 50, "330th value should be 50");
+assertEq(view[331], 255, "331th value should be 255");
+assertEq(view[332], 205, "332th value should be 205");
+assertEq(view[333], 255, "333th value should be 255");
+assertEq(view[334], 50, "334th value should be 50");
+assertEq(view[335], 255, "335th value should be 255");
+assertEq(view[336], 205, "336th value should be 205");
+assertEq(view[337], 255, "337th value should be 255");
+assertEq(view[338], 50, "338th value should be 50");
+assertEq(view[339], 255, "339th value should be 255");
+assertEq(view[340], 179, "340th value should be 179");
+assertEq(view[341], 127, "341th value should be 127");
+assertEq(view[342], 76, "342th value should be 76");
+assertEq(view[343], 255, "343th value should be 255");
+assertEq(view[344], 154, "344th value should be 154");
+assertEq(view[345], 255, "345th value should be 255");
+assertEq(view[346], 101, "346th value should be 101");
+assertEq(view[347], 255, "347th value should be 255");
+assertEq(view[348], 154, "348th value should be 154");
+assertEq(view[349], 255, "349th value should be 255");
+assertEq(view[350], 101, "350th value should be 101");
+assertEq(view[351], 255, "351th value should be 255");
+assertEq(view[352], 128, "352th value should be 128");
+assertEq(view[353], 127, "353th value should be 127");
+assertEq(view[354], 127, "354th value should be 127");
+assertEq(view[355], 255, "355th value should be 255");
+assertEq(view[356], 52, "356th value should be 52");
+assertEq(view[357], 255, "357th value should be 255");
+assertEq(view[358], 203, "358th value should be 203");
+assertEq(view[359], 255, "359th value should be 255");
+assertEq(view[360], 0, "360th value should be 0");
+assertEq(view[361], 0, "361th value should be 0");
+assertEq(view[362], 0, "362th value should be 0");
+assertEq(view[363], 255, "363th value should be 255");
+assertEq(view[364], 0, "364th value should be 0");
+assertEq(view[365], 0, "365th value should be 0");
+assertEq(view[366], 0, "366th value should be 0");
+assertEq(view[367], 255, "367th value should be 255");
+assertEq(view[368], 0, "368th value should be 0");
+assertEq(view[369], 0, "369th value should be 0");
+assertEq(view[370], 0, "370th value should be 0");
+assertEq(view[371], 255, "371th value should be 255");
+assertEq(view[372], 0, "372th value should be 0");
+assertEq(view[373], 0, "373th value should be 0");
+assertEq(view[374], 0, "374th value should be 0");
+assertEq(view[375], 255, "375th value should be 255");
+assertEq(view[376], 0, "376th value should be 0");
+assertEq(view[377], 0, "377th value should be 0");
+assertEq(view[378], 0, "378th value should be 0");
+assertEq(view[379], 255, "379th value should be 255");
+assertEq(view[380], 0, "380th value should be 0");
+assertEq(view[381], 0, "381th value should be 0");
+assertEq(view[382], 0, "382th value should be 0");
+assertEq(view[383], 255, "383th value should be 255");
+assertEq(view[384], 52, "384th value should be 52");
+assertEq(view[385], 255, "385th value should be 255");
+assertEq(view[386], 203, "386th value should be 203");
+assertEq(view[387], 255, "387th value should be 255");
+assertEq(view[388], 179, "388th value should be 179");
+assertEq(view[389], 127, "389th value should be 127");
+assertEq(view[390], 76, "390th value should be 76");
+assertEq(view[391], 255, "391th value should be 255");
+assertEq(view[392], 205, "392th value should be 205");
+assertEq(view[393], 255, "393th value should be 255");
+assertEq(view[394], 50, "394th value should be 50");
+assertEq(view[395], 255, "395th value should be 255");
+assertEq(view[396], 205, "396th value should be 205");
+assertEq(view[397], 255, "397th value should be 255");
+assertEq(view[398], 50, "398th value should be 50");
+assertEq(view[399], 255, "399th value should be 255");
+assertEq(view[400], 205, "400th value should be 205");
+assertEq(view[401], 255, "401th value should be 255");
+assertEq(view[402], 50, "402th value should be 50");
+assertEq(view[403], 255, "403th value should be 255");
+assertEq(view[404], 205, "404th value should be 205");
+assertEq(view[405], 255, "405th value should be 255");
+assertEq(view[406], 50, "406th value should be 50");
+assertEq(view[407], 255, "407th value should be 255");
+assertEq(view[408], 205, "408th value should be 205");
+assertEq(view[409], 255, "409th value should be 255");
+assertEq(view[410], 50, "410th value should be 50");
+assertEq(view[411], 255, "411th value should be 255");
+assertEq(view[412], 205, "412th value should be 205");
+assertEq(view[413], 255, "413th value should be 255");
+assertEq(view[414], 50, "414th value should be 50");
+assertEq(view[415], 255, "415th value should be 255");
+assertEq(view[416], 154, "416th value should be 154");
+assertEq(view[417], 255, "417th value should be 255");
+assertEq(view[418], 101, "418th value should be 101");
+assertEq(view[419], 255, "419th value should be 255");
+assertEq(view[420], 128, "420th value should be 128");
+assertEq(view[421], 127, "421th value should be 127");
+assertEq(view[422], 127, "422th value should be 127");
+assertEq(view[423], 255, "423th value should be 255");
+assertEq(view[424], 154, "424th value should be 154");
+assertEq(view[425], 255, "425th value should be 255");
+assertEq(view[426], 101, "426th value should be 101");
+assertEq(view[427], 255, "427th value should be 255");
+assertEq(view[428], 128, "428th value should be 128");
+assertEq(view[429], 127, "429th value should be 127");
+assertEq(view[430], 127, "430th value should be 127");
+assertEq(view[431], 255, "431th value should be 255");
+assertEq(view[432], 103, "432th value should be 103");
+assertEq(view[433], 255, "433th value should be 255");
+assertEq(view[434], 152, "434th value should be 152");
+assertEq(view[435], 255, "435th value should be 255");
+assertEq(view[436], 0, "436th value should be 0");
+assertEq(view[437], 0, "437th value should be 0");
+assertEq(view[438], 0, "438th value should be 0");
+assertEq(view[439], 255, "439th value should be 255");
+assertEq(view[440], 0, "440th value should be 0");
+assertEq(view[441], 0, "441th value should be 0");
+assertEq(view[442], 0, "442th value should be 0");
+assertEq(view[443], 255, "443th value should be 255");
+assertEq(view[444], 0, "444th value should be 0");
+assertEq(view[445], 0, "445th value should be 0");
+assertEq(view[446], 0, "446th value should be 0");
+assertEq(view[447], 255, "447th value should be 255");
+assertEq(view[448], 0, "448th value should be 0");
+assertEq(view[449], 0, "449th value should be 0");
+assertEq(view[450], 0, "450th value should be 0");
+assertEq(view[451], 255, "451th value should be 255");
+assertEq(view[452], 0, "452th value should be 0");
+assertEq(view[453], 0, "453th value should be 0");
+assertEq(view[454], 0, "454th value should be 0");
+assertEq(view[455], 255, "455th value should be 255");
+assertEq(view[456], 0, "456th value should be 0");
+assertEq(view[457], 0, "457th value should be 0");
+assertEq(view[458], 0, "458th value should be 0");
+assertEq(view[459], 255, "459th value should be 255");
+assertEq(view[460], 0, "460th value should be 0");
+assertEq(view[461], 0, "461th value should be 0");
+assertEq(view[462], 0, "462th value should be 0");
+assertEq(view[463], 255, "463th value should be 255");
+assertEq(view[464], 78, "464th value should be 78");
+assertEq(view[465], 127, "465th value should be 127");
+assertEq(view[466], 178, "466th value should be 178");
+assertEq(view[467], 255, "467th value should be 255");
+assertEq(view[468], 154, "468th value should be 154");
+assertEq(view[469], 255, "469th value should be 255");
+assertEq(view[470], 101, "470th value should be 101");
+assertEq(view[471], 255, "471th value should be 255");
+assertEq(view[472], 205, "472th value should be 205");
+assertEq(view[473], 255, "473th value should be 255");
+assertEq(view[474], 50, "474th value should be 50");
+assertEq(view[475], 255, "475th value should be 255");
+assertEq(view[476], 205, "476th value should be 205");
+assertEq(view[477], 255, "477th value should be 255");
+assertEq(view[478], 50, "478th value should be 50");
+assertEq(view[479], 255, "479th value should be 255");
+assertEq(view[480], 205, "480th value should be 205");
+assertEq(view[481], 255, "481th value should be 255");
+assertEq(view[482], 50, "482th value should be 50");
+assertEq(view[483], 255, "483th value should be 255");
+assertEq(view[484], 205, "484th value should be 205");
+assertEq(view[485], 255, "485th value should be 255");
+assertEq(view[486], 50, "486th value should be 50");
+assertEq(view[487], 255, "487th value should be 255");
+assertEq(view[488], 179, "488th value should be 179");
+assertEq(view[489], 127, "489th value should be 127");
+assertEq(view[490], 76, "490th value should be 76");
+assertEq(view[491], 255, "491th value should be 255");
+assertEq(view[492], 179, "492th value should be 179");
+assertEq(view[493], 127, "493th value should be 127");
+assertEq(view[494], 76, "494th value should be 76");
+assertEq(view[495], 255, "495th value should be 255");
+assertEq(view[496], 128, "496th value should be 128");
+assertEq(view[497], 127, "497th value should be 127");
+assertEq(view[498], 127, "498th value should be 127");
+assertEq(view[499], 255, "499th value should be 255");
+assertEq(view[500], 52, "500th value should be 52");
+assertEq(view[501], 255, "501th value should be 255");
+assertEq(view[502], 203, "502th value should be 203");
+assertEq(view[503], 255, "503th value should be 255");
+assertEq(view[504], 0, "504th value should be 0");
+assertEq(view[505], 0, "505th value should be 0");
+assertEq(view[506], 0, "506th value should be 0");
+assertEq(view[507], 255, "507th value should be 255");
+assertEq(view[508], 78, "508th value should be 78");
+assertEq(view[509], 127, "509th value should be 127");
+assertEq(view[510], 178, "510th value should be 178");
+assertEq(view[511], 255, "511th value should be 255");
+assertEq(view[512], 52, "512th value should be 52");
+assertEq(view[513], 255, "513th value should be 255");
+assertEq(view[514], 203, "514th value should be 203");
+assertEq(view[515], 255, "515th value should be 255");
+assertEq(view[516], 0, "516th value should be 0");
+assertEq(view[517], 0, "517th value should be 0");
+assertEq(view[518], 0, "518th value should be 0");
+assertEq(view[519], 255, "519th value should be 255");
+assertEq(view[520], 0, "520th value should be 0");
+assertEq(view[521], 0, "521th value should be 0");
+assertEq(view[522], 0, "522th value should be 0");
+assertEq(view[523], 255, "523th value should be 255");
+assertEq(view[524], 0, "524th value should be 0");
+assertEq(view[525], 0, "525th value should be 0");
+assertEq(view[526], 0, "526th value should be 0");
+assertEq(view[527], 255, "527th value should be 255");
+assertEq(view[528], 0, "528th value should be 0");
+assertEq(view[529], 0, "529th value should be 0");
+assertEq(view[530], 0, "530th value should be 0");
+assertEq(view[531], 255, "531th value should be 255");
+assertEq(view[532], 0, "532th value should be 0");
+assertEq(view[533], 0, "533th value should be 0");
+assertEq(view[534], 0, "534th value should be 0");
+assertEq(view[535], 255, "535th value should be 255");
+assertEq(view[536], 0, "536th value should be 0");
+assertEq(view[537], 0, "537th value should be 0");
+assertEq(view[538], 0, "538th value should be 0");
+assertEq(view[539], 255, "539th value should be 255");
+assertEq(view[540], 0, "540th value should be 0");
+assertEq(view[541], 0, "541th value should be 0");
+assertEq(view[542], 0, "542th value should be 0");
+assertEq(view[543], 255, "543th value should be 255");
+assertEq(view[544], 0, "544th value should be 0");
+assertEq(view[545], 0, "545th value should be 0");
+assertEq(view[546], 0, "546th value should be 0");
+assertEq(view[547], 255, "547th value should be 255");
+assertEq(view[548], 154, "548th value should be 154");
+assertEq(view[549], 255, "549th value should be 255");
+assertEq(view[550], 101, "550th value should be 101");
+assertEq(view[551], 255, "551th value should be 255");
+assertEq(view[552], 205, "552th value should be 205");
+assertEq(view[553], 255, "553th value should be 255");
+assertEq(view[554], 50, "554th value should be 50");
+assertEq(view[555], 255, "555th value should be 255");
+assertEq(view[556], 205, "556th value should be 205");
+assertEq(view[557], 255, "557th value should be 255");
+assertEq(view[558], 50, "558th value should be 50");
+assertEq(view[559], 255, "559th value should be 255");
+assertEq(view[560], 205, "560th value should be 205");
+assertEq(view[561], 255, "561th value should be 255");
+assertEq(view[562], 50, "562th value should be 50");
+assertEq(view[563], 255, "563th value should be 255");
+assertEq(view[564], 179, "564th value should be 179");
+assertEq(view[565], 127, "565th value should be 127");
+assertEq(view[566], 76, "566th value should be 76");
+assertEq(view[567], 255, "567th value should be 255");
+assertEq(view[568], 179, "568th value should be 179");
+assertEq(view[569], 127, "569th value should be 127");
+assertEq(view[570], 76, "570th value should be 76");
+assertEq(view[571], 255, "571th value should be 255");
+assertEq(view[572], 154, "572th value should be 154");
+assertEq(view[573], 255, "573th value should be 255");
+assertEq(view[574], 101, "574th value should be 101");
+assertEq(view[575], 255, "575th value should be 255");
+assertEq(view[576], 103, "576th value should be 103");
+assertEq(view[577], 255, "577th value should be 255");
+assertEq(view[578], 152, "578th value should be 152");
+assertEq(view[579], 255, "579th value should be 255");
+assertEq(view[580], 0, "580th value should be 0");
+assertEq(view[581], 0, "581th value should be 0");
+assertEq(view[582], 0, "582th value should be 0");
+assertEq(view[583], 255, "583th value should be 255");
+assertEq(view[584], 0, "584th value should be 0");
+assertEq(view[585], 0, "585th value should be 0");
+assertEq(view[586], 0, "586th value should be 0");
+assertEq(view[587], 255, "587th value should be 255");
+assertEq(view[588], 0, "588th value should be 0");
+assertEq(view[589], 0, "589th value should be 0");
+assertEq(view[590], 0, "590th value should be 0");
+assertEq(view[591], 255, "591th value should be 255");
+assertEq(view[592], 0, "592th value should be 0");
+assertEq(view[593], 0, "593th value should be 0");
+assertEq(view[594], 0, "594th value should be 0");
+assertEq(view[595], 255, "595th value should be 255");
+assertEq(view[596], 0, "596th value should be 0");
+assertEq(view[597], 0, "597th value should be 0");
+assertEq(view[598], 0, "598th value should be 0");
+assertEq(view[599], 255, "599th value should be 255");
+assertEq(view[600], 0, "600th value should be 0");
+assertEq(view[601], 0, "601th value should be 0");
+assertEq(view[602], 0, "602th value should be 0");
+assertEq(view[603], 255, "603th value should be 255");
+assertEq(view[604], 0, "604th value should be 0");
+assertEq(view[605], 0, "605th value should be 0");
+assertEq(view[606], 0, "606th value should be 0");
+assertEq(view[607], 255, "607th value should be 255");
+assertEq(view[608], 0, "608th value should be 0");
+assertEq(view[609], 0, "609th value should be 0");
+assertEq(view[610], 0, "610th value should be 0");
+assertEq(view[611], 255, "611th value should be 255");
+assertEq(view[612], 0, "612th value should be 0");
+assertEq(view[613], 0, "613th value should be 0");
+assertEq(view[614], 0, "614th value should be 0");
+assertEq(view[615], 255, "615th value should be 255");
+assertEq(view[616], 0, "616th value should be 0");
+assertEq(view[617], 0, "617th value should be 0");
+assertEq(view[618], 0, "618th value should be 0");
+assertEq(view[619], 255, "619th value should be 255");
+assertEq(view[620], 0, "620th value should be 0");
+assertEq(view[621], 0, "621th value should be 0");
+assertEq(view[622], 0, "622th value should be 0");
+assertEq(view[623], 255, "623th value should be 255");
+assertEq(view[624], 0, "624th value should be 0");
+assertEq(view[625], 0, "625th value should be 0");
+assertEq(view[626], 0, "626th value should be 0");
+assertEq(view[627], 255, "627th value should be 255");
+assertEq(view[628], 154, "628th value should be 154");
+assertEq(view[629], 255, "629th value should be 255");
+assertEq(view[630], 101, "630th value should be 101");
+assertEq(view[631], 255, "631th value should be 255");
+assertEq(view[632], 205, "632th value should be 205");
+assertEq(view[633], 255, "633th value should be 255");
+assertEq(view[634], 50, "634th value should be 50");
+assertEq(view[635], 255, "635th value should be 255");
+assertEq(view[636], 205, "636th value should be 205");
+assertEq(view[637], 255, "637th value should be 255");
+assertEq(view[638], 50, "638th value should be 50");
+assertEq(view[639], 255, "639th value should be 255");
+assertEq(view[640], 179, "640th value should be 179");
+assertEq(view[641], 127, "641th value should be 127");
+assertEq(view[642], 76, "642th value should be 76");
+assertEq(view[643], 255, "643th value should be 255");
+assertEq(view[644], 179, "644th value should be 179");
+assertEq(view[645], 127, "645th value should be 127");
+assertEq(view[646], 76, "646th value should be 76");
+assertEq(view[647], 255, "647th value should be 255");
+assertEq(view[648], 154, "648th value should be 154");
+assertEq(view[649], 255, "649th value should be 255");
+assertEq(view[650], 101, "650th value should be 101");
+assertEq(view[651], 255, "651th value should be 255");
+assertEq(view[652], 128, "652th value should be 128");
+assertEq(view[653], 127, "653th value should be 127");
+assertEq(view[654], 127, "654th value should be 127");
+assertEq(view[655], 255, "655th value should be 255");
+assertEq(view[656], 52, "656th value should be 52");
+assertEq(view[657], 255, "657th value should be 255");
+assertEq(view[658], 203, "658th value should be 203");
+assertEq(view[659], 255, "659th value should be 255");
+assertEq(view[660], 0, "660th value should be 0");
+assertEq(view[661], 0, "661th value should be 0");
+assertEq(view[662], 0, "662th value should be 0");
+assertEq(view[663], 255, "663th value should be 255");
+assertEq(view[664], 0, "664th value should be 0");
+assertEq(view[665], 0, "665th value should be 0");
+assertEq(view[666], 0, "666th value should be 0");
+assertEq(view[667], 255, "667th value should be 255");
+assertEq(view[668], 0, "668th value should be 0");
+assertEq(view[669], 0, "669th value should be 0");
+assertEq(view[670], 0, "670th value should be 0");
+assertEq(view[671], 255, "671th value should be 255");
+assertEq(view[672], 0, "672th value should be 0");
+assertEq(view[673], 0, "673th value should be 0");
+assertEq(view[674], 0, "674th value should be 0");
+assertEq(view[675], 255, "675th value should be 255");
+assertEq(view[676], 0, "676th value should be 0");
+assertEq(view[677], 0, "677th value should be 0");
+assertEq(view[678], 0, "678th value should be 0");
+assertEq(view[679], 255, "679th value should be 255");
+assertEq(view[680], 0, "680th value should be 0");
+assertEq(view[681], 0, "681th value should be 0");
+assertEq(view[682], 0, "682th value should be 0");
+assertEq(view[683], 255, "683th value should be 255");
+assertEq(view[684], 0, "684th value should be 0");
+assertEq(view[685], 0, "685th value should be 0");
+assertEq(view[686], 0, "686th value should be 0");
+assertEq(view[687], 255, "687th value should be 255");
+assertEq(view[688], 0, "688th value should be 0");
+assertEq(view[689], 0, "689th value should be 0");
+assertEq(view[690], 0, "690th value should be 0");
+assertEq(view[691], 255, "691th value should be 255");
+assertEq(view[692], 0, "692th value should be 0");
+assertEq(view[693], 0, "693th value should be 0");
+assertEq(view[694], 0, "694th value should be 0");
+assertEq(view[695], 255, "695th value should be 255");
+assertEq(view[696], 0, "696th value should be 0");
+assertEq(view[697], 0, "697th value should be 0");
+assertEq(view[698], 0, "698th value should be 0");
+assertEq(view[699], 255, "699th value should be 255");
+assertEq(view[700], 0, "700th value should be 0");
+assertEq(view[701], 0, "701th value should be 0");
+assertEq(view[702], 0, "702th value should be 0");
+assertEq(view[703], 255, "703th value should be 255");
+assertEq(view[704], 0, "704th value should be 0");
+assertEq(view[705], 0, "705th value should be 0");
+assertEq(view[706], 0, "706th value should be 0");
+assertEq(view[707], 255, "707th value should be 255");
+assertEq(view[708], 154, "708th value should be 154");
+assertEq(view[709], 255, "709th value should be 255");
+assertEq(view[710], 101, "710th value should be 101");
+assertEq(view[711], 255, "711th value should be 255");
+assertEq(view[712], 179, "712th value should be 179");
+assertEq(view[713], 127, "713th value should be 127");
+assertEq(view[714], 76, "714th value should be 76");
+assertEq(view[715], 255, "715th value should be 255");
+assertEq(view[716], 205, "716th value should be 205");
+assertEq(view[717], 255, "717th value should be 255");
+assertEq(view[718], 50, "718th value should be 50");
+assertEq(view[719], 255, "719th value should be 255");
+assertEq(view[720], 154, "720th value should be 154");
+assertEq(view[721], 255, "721th value should be 255");
+assertEq(view[722], 101, "722th value should be 101");
+assertEq(view[723], 255, "723th value should be 255");
+assertEq(view[724], 52, "724th value should be 52");
+assertEq(view[725], 255, "725th value should be 255");
+assertEq(view[726], 203, "726th value should be 203");
+assertEq(view[727], 255, "727th value should be 255");
+assertEq(view[728], 128, "728th value should be 128");
+assertEq(view[729], 127, "729th value should be 127");
+assertEq(view[730], 127, "730th value should be 127");
+assertEq(view[731], 255, "731th value should be 255");
+assertEq(view[732], 78, "732th value should be 78");
+assertEq(view[733], 127, "733th value should be 127");
+assertEq(view[734], 178, "734th value should be 178");
+assertEq(view[735], 255, "735th value should be 255");
+assertEq(view[736], 0, "736th value should be 0");
+assertEq(view[737], 0, "737th value should be 0");
+assertEq(view[738], 0, "738th value should be 0");
+assertEq(view[739], 255, "739th value should be 255");
+assertEq(view[740], 0, "740th value should be 0");
+assertEq(view[741], 0, "741th value should be 0");
+assertEq(view[742], 0, "742th value should be 0");
+assertEq(view[743], 255, "743th value should be 255");
+assertEq(view[744], 0, "744th value should be 0");
+assertEq(view[745], 0, "745th value should be 0");
+assertEq(view[746], 0, "746th value should be 0");
+assertEq(view[747], 255, "747th value should be 255");
+assertEq(view[748], 0, "748th value should be 0");
+assertEq(view[749], 0, "749th value should be 0");
+assertEq(view[750], 0, "750th value should be 0");
+assertEq(view[751], 255, "751th value should be 255");
+assertEq(view[752], 0, "752th value should be 0");
+assertEq(view[753], 0, "753th value should be 0");
+assertEq(view[754], 0, "754th value should be 0");
+assertEq(view[755], 255, "755th value should be 255");
+assertEq(view[756], 0, "756th value should be 0");
+assertEq(view[757], 0, "757th value should be 0");
+assertEq(view[758], 0, "758th value should be 0");
+assertEq(view[759], 255, "759th value should be 255");
+assertEq(view[760], 0, "760th value should be 0");
+assertEq(view[761], 0, "761th value should be 0");
+assertEq(view[762], 0, "762th value should be 0");
+assertEq(view[763], 255, "763th value should be 255");
+assertEq(view[764], 0, "764th value should be 0");
+assertEq(view[765], 0, "765th value should be 0");
+assertEq(view[766], 0, "766th value should be 0");
+assertEq(view[767], 255, "767th value should be 255");
+assertEq(view[768], 0, "768th value should be 0");
+assertEq(view[769], 0, "769th value should be 0");
+assertEq(view[770], 0, "770th value should be 0");
+assertEq(view[771], 255, "771th value should be 255");
+assertEq(view[772], 0, "772th value should be 0");
+assertEq(view[773], 0, "773th value should be 0");
+assertEq(view[774], 0, "774th value should be 0");
+assertEq(view[775], 255, "775th value should be 255");
+assertEq(view[776], 0, "776th value should be 0");
+assertEq(view[777], 0, "777th value should be 0");
+assertEq(view[778], 0, "778th value should be 0");
+assertEq(view[779], 255, "779th value should be 255");
+assertEq(view[780], 0, "780th value should be 0");
+assertEq(view[781], 0, "781th value should be 0");
+assertEq(view[782], 0, "782th value should be 0");
+assertEq(view[783], 255, "783th value should be 255");
+assertEq(view[784], 78, "784th value should be 78");
+assertEq(view[785], 127, "785th value should be 127");
+assertEq(view[786], 178, "786th value should be 178");
+assertEq(view[787], 255, "787th value should be 255");
+assertEq(view[788], 154, "788th value should be 154");
+assertEq(view[789], 255, "789th value should be 255");
+assertEq(view[790], 101, "790th value should be 101");
+assertEq(view[791], 255, "791th value should be 255");
+assertEq(view[792], 179, "792th value should be 179");
+assertEq(view[793], 127, "793th value should be 127");
+assertEq(view[794], 76, "794th value should be 76");
+assertEq(view[795], 255, "795th value should be 255");
+assertEq(view[796], 205, "796th value should be 205");
+assertEq(view[797], 255, "797th value should be 255");
+assertEq(view[798], 50, "798th value should be 50");
+assertEq(view[799], 255, "799th value should be 255");
+assertEq(view[800], 128, "800th value should be 128");
+assertEq(view[801], 127, "801th value should be 127");
+assertEq(view[802], 127, "802th value should be 127");
+assertEq(view[803], 255, "803th value should be 255");
+assertEq(view[804], 0, "804th value should be 0");
+assertEq(view[805], 0, "805th value should be 0");
+assertEq(view[806], 0, "806th value should be 0");
+assertEq(view[807], 255, "807th value should be 255");
+assertEq(view[808], 26, "808th value should be 26");
+assertEq(view[809], 127, "809th value should be 127");
+assertEq(view[810], 229, "810th value should be 229");
+assertEq(view[811], 255, "811th value should be 255");
+assertEq(view[812], 0, "812th value should be 0");
+assertEq(view[813], 0, "813th value should be 0");
+assertEq(view[814], 0, "814th value should be 0");
+assertEq(view[815], 255, "815th value should be 255");
+assertEq(view[816], 0, "816th value should be 0");
+assertEq(view[817], 0, "817th value should be 0");
+assertEq(view[818], 0, "818th value should be 0");
+assertEq(view[819], 255, "819th value should be 255");
+assertEq(view[820], 0, "820th value should be 0");
+assertEq(view[821], 0, "821th value should be 0");
+assertEq(view[822], 0, "822th value should be 0");
+assertEq(view[823], 255, "823th value should be 255");
+assertEq(view[824], 0, "824th value should be 0");
+assertEq(view[825], 0, "825th value should be 0");
+assertEq(view[826], 0, "826th value should be 0");
+assertEq(view[827], 255, "827th value should be 255");
+assertEq(view[828], 0, "828th value should be 0");
+assertEq(view[829], 0, "829th value should be 0");
+assertEq(view[830], 0, "830th value should be 0");
+assertEq(view[831], 255, "831th value should be 255");
+assertEq(view[832], 0, "832th value should be 0");
+assertEq(view[833], 0, "833th value should be 0");
+assertEq(view[834], 0, "834th value should be 0");
+assertEq(view[835], 255, "835th value should be 255");
+assertEq(view[836], 0, "836th value should be 0");
+assertEq(view[837], 0, "837th value should be 0");
+assertEq(view[838], 0, "838th value should be 0");
+assertEq(view[839], 255, "839th value should be 255");
+assertEq(view[840], 0, "840th value should be 0");
+assertEq(view[841], 0, "841th value should be 0");
+assertEq(view[842], 0, "842th value should be 0");
+assertEq(view[843], 255, "843th value should be 255");
+assertEq(view[844], 0, "844th value should be 0");
+assertEq(view[845], 0, "845th value should be 0");
+assertEq(view[846], 0, "846th value should be 0");
+assertEq(view[847], 255, "847th value should be 255");
+assertEq(view[848], 0, "848th value should be 0");
+assertEq(view[849], 0, "849th value should be 0");
+assertEq(view[850], 0, "850th value should be 0");
+assertEq(view[851], 255, "851th value should be 255");
+assertEq(view[852], 0, "852th value should be 0");
+assertEq(view[853], 0, "853th value should be 0");
+assertEq(view[854], 0, "854th value should be 0");
+assertEq(view[855], 255, "855th value should be 255");
+assertEq(view[856], 0, "856th value should be 0");
+assertEq(view[857], 0, "857th value should be 0");
+assertEq(view[858], 0, "858th value should be 0");
+assertEq(view[859], 255, "859th value should be 255");
+assertEq(view[860], 0, "860th value should be 0");
+assertEq(view[861], 0, "861th value should be 0");
+assertEq(view[862], 0, "862th value should be 0");
+assertEq(view[863], 255, "863th value should be 255");
+assertEq(view[864], 103, "864th value should be 103");
+assertEq(view[865], 255, "865th value should be 255");
+assertEq(view[866], 152, "866th value should be 152");
+assertEq(view[867], 255, "867th value should be 255");
+assertEq(view[868], 154, "868th value should be 154");
+assertEq(view[869], 255, "869th value should be 255");
+assertEq(view[870], 101, "870th value should be 101");
+assertEq(view[871], 255, "871th value should be 255");
+assertEq(view[872], 179, "872th value should be 179");
+assertEq(view[873], 127, "873th value should be 127");
+assertEq(view[874], 76, "874th value should be 76");
+assertEq(view[875], 255, "875th value should be 255");
+assertEq(view[876], 205, "876th value should be 205");
+assertEq(view[877], 255, "877th value should be 255");
+assertEq(view[878], 50, "878th value should be 50");
+assertEq(view[879], 255, "879th value should be 255");
+assertEq(view[880], 179, "880th value should be 179");
+assertEq(view[881], 127, "881th value should be 127");
+assertEq(view[882], 76, "882th value should be 76");
+assertEq(view[883], 255, "883th value should be 255");
+assertEq(view[884], 179, "884th value should be 179");
+assertEq(view[885], 127, "885th value should be 127");
+assertEq(view[886], 76, "886th value should be 76");
+assertEq(view[887], 255, "887th value should be 255");
+assertEq(view[888], 128, "888th value should be 128");
+assertEq(view[889], 127, "889th value should be 127");
+assertEq(view[890], 127, "890th value should be 127");
+assertEq(view[891], 255, "891th value should be 255");
+assertEq(view[892], 103, "892th value should be 103");
+assertEq(view[893], 255, "893th value should be 255");
+assertEq(view[894], 152, "894th value should be 152");
+assertEq(view[895], 255, "895th value should be 255");
+assertEq(view[896], 26, "896th value should be 26");
+assertEq(view[897], 127, "897th value should be 127");
+assertEq(view[898], 229, "898th value should be 229");
+assertEq(view[899], 255, "899th value should be 255");
+assertEq(view[900], 0, "900th value should be 0");
+assertEq(view[901], 0, "901th value should be 0");
+assertEq(view[902], 0, "902th value should be 0");
+assertEq(view[903], 255, "903th value should be 255");
+assertEq(view[904], 0, "904th value should be 0");
+assertEq(view[905], 0, "905th value should be 0");
+assertEq(view[906], 0, "906th value should be 0");
+assertEq(view[907], 255, "907th value should be 255");
+assertEq(view[908], 0, "908th value should be 0");
+assertEq(view[909], 0, "909th value should be 0");
+assertEq(view[910], 0, "910th value should be 0");
+assertEq(view[911], 255, "911th value should be 255");
+assertEq(view[912], 0, "912th value should be 0");
+assertEq(view[913], 0, "913th value should be 0");
+assertEq(view[914], 0, "914th value should be 0");
+assertEq(view[915], 255, "915th value should be 255");
+assertEq(view[916], 0, "916th value should be 0");
+assertEq(view[917], 0, "917th value should be 0");
+assertEq(view[918], 0, "918th value should be 0");
+assertEq(view[919], 255, "919th value should be 255");
+assertEq(view[920], 0, "920th value should be 0");
+assertEq(view[921], 0, "921th value should be 0");
+assertEq(view[922], 0, "922th value should be 0");
+assertEq(view[923], 255, "923th value should be 255");
+assertEq(view[924], 0, "924th value should be 0");
+assertEq(view[925], 0, "925th value should be 0");
+assertEq(view[926], 0, "926th value should be 0");
+assertEq(view[927], 255, "927th value should be 255");
+assertEq(view[928], 0, "928th value should be 0");
+assertEq(view[929], 0, "929th value should be 0");
+assertEq(view[930], 0, "930th value should be 0");
+assertEq(view[931], 255, "931th value should be 255");
+assertEq(view[932], 0, "932th value should be 0");
+assertEq(view[933], 0, "933th value should be 0");
+assertEq(view[934], 0, "934th value should be 0");
+assertEq(view[935], 255, "935th value should be 255");
+assertEq(view[936], 0, "936th value should be 0");
+assertEq(view[937], 0, "937th value should be 0");
+assertEq(view[938], 0, "938th value should be 0");
+assertEq(view[939], 255, "939th value should be 255");
+assertEq(view[940], 0, "940th value should be 0");
+assertEq(view[941], 0, "941th value should be 0");
+assertEq(view[942], 0, "942th value should be 0");
+assertEq(view[943], 255, "943th value should be 255");
+assertEq(view[944], 0, "944th value should be 0");
+assertEq(view[945], 0, "945th value should be 0");
+assertEq(view[946], 0, "946th value should be 0");
+assertEq(view[947], 255, "947th value should be 255");
+assertEq(view[948], 154, "948th value should be 154");
+assertEq(view[949], 255, "949th value should be 255");
+assertEq(view[950], 101, "950th value should be 101");
+assertEq(view[951], 255, "951th value should be 255");
+assertEq(view[952], 179, "952th value should be 179");
+assertEq(view[953], 127, "953th value should be 127");
+assertEq(view[954], 76, "954th value should be 76");
+assertEq(view[955], 255, "955th value should be 255");
+assertEq(view[956], 205, "956th value should be 205");
+assertEq(view[957], 255, "957th value should be 255");
+assertEq(view[958], 50, "958th value should be 50");
+assertEq(view[959], 255, "959th value should be 255");
+assertEq(view[960], 179, "960th value should be 179");
+assertEq(view[961], 127, "961th value should be 127");
+assertEq(view[962], 76, "962th value should be 76");
+assertEq(view[963], 255, "963th value should be 255");
+assertEq(view[964], 179, "964th value should be 179");
+assertEq(view[965], 127, "965th value should be 127");
+assertEq(view[966], 76, "966th value should be 76");
+assertEq(view[967], 255, "967th value should be 255");
+assertEq(view[968], 179, "968th value should be 179");
+assertEq(view[969], 127, "969th value should be 127");
+assertEq(view[970], 76, "970th value should be 76");
+assertEq(view[971], 255, "971th value should be 255");
+assertEq(view[972], 154, "972th value should be 154");
+assertEq(view[973], 255, "973th value should be 255");
+assertEq(view[974], 101, "974th value should be 101");
+assertEq(view[975], 255, "975th value should be 255");
+assertEq(view[976], 103, "976th value should be 103");
+assertEq(view[977], 255, "977th value should be 255");
+assertEq(view[978], 152, "978th value should be 152");
+assertEq(view[979], 255, "979th value should be 255");
+assertEq(view[980], 0, "980th value should be 0");
+assertEq(view[981], 0, "981th value should be 0");
+assertEq(view[982], 0, "982th value should be 0");
+assertEq(view[983], 255, "983th value should be 255");
+assertEq(view[984], 0, "984th value should be 0");
+assertEq(view[985], 0, "985th value should be 0");
+assertEq(view[986], 0, "986th value should be 0");
+assertEq(view[987], 255, "987th value should be 255");
+assertEq(view[988], 0, "988th value should be 0");
+assertEq(view[989], 0, "989th value should be 0");
+assertEq(view[990], 0, "990th value should be 0");
+assertEq(view[991], 255, "991th value should be 255");
+assertEq(view[992], 0, "992th value should be 0");
+assertEq(view[993], 0, "993th value should be 0");
+assertEq(view[994], 0, "994th value should be 0");
+assertEq(view[995], 255, "995th value should be 255");
+assertEq(view[996], 0, "996th value should be 0");
+assertEq(view[997], 0, "997th value should be 0");
+assertEq(view[998], 0, "998th value should be 0");
+assertEq(view[999], 255, "999th value should be 255");
+assertEq(view[1000], 0, "1000th value should be 0");
+assertEq(view[1001], 0, "1001th value should be 0");
+assertEq(view[1002], 0, "1002th value should be 0");
+assertEq(view[1003], 255, "1003th value should be 255");
+assertEq(view[1004], 0, "1004th value should be 0");
+assertEq(view[1005], 0, "1005th value should be 0");
+assertEq(view[1006], 0, "1006th value should be 0");
+assertEq(view[1007], 255, "1007th value should be 255");
+assertEq(view[1008], 0, "1008th value should be 0");
+assertEq(view[1009], 0, "1009th value should be 0");
+assertEq(view[1010], 0, "1010th value should be 0");
+assertEq(view[1011], 255, "1011th value should be 255");
+assertEq(view[1012], 0, "1012th value should be 0");
+assertEq(view[1013], 0, "1013th value should be 0");
+assertEq(view[1014], 0, "1014th value should be 0");
+assertEq(view[1015], 255, "1015th value should be 255");
+assertEq(view[1016], 0, "1016th value should be 0");
+assertEq(view[1017], 0, "1017th value should be 0");
+assertEq(view[1018], 0, "1018th value should be 0");
+assertEq(view[1019], 255, "1019th value should be 255");
+assertEq(view[1020], 0, "1020th value should be 0");
+assertEq(view[1021], 0, "1021th value should be 0");
+assertEq(view[1022], 0, "1022th value should be 0");
+assertEq(view[1023], 255, "1023th value should be 255");
+assertEq(view[1024], 0, "1024th value should be 0");
+assertEq(view[1025], 0, "1025th value should be 0");
+assertEq(view[1026], 0, "1026th value should be 0");
+assertEq(view[1027], 255, "1027th value should be 255");
+assertEq(view[1028], 154, "1028th value should be 154");
+assertEq(view[1029], 255, "1029th value should be 255");
+assertEq(view[1030], 101, "1030th value should be 101");
+assertEq(view[1031], 255, "1031th value should be 255");
+assertEq(view[1032], 205, "1032th value should be 205");
+assertEq(view[1033], 255, "1033th value should be 255");
+assertEq(view[1034], 50, "1034th value should be 50");
+assertEq(view[1035], 255, "1035th value should be 255");
+assertEq(view[1036], 205, "1036th value should be 205");
+assertEq(view[1037], 255, "1037th value should be 255");
+assertEq(view[1038], 50, "1038th value should be 50");
+assertEq(view[1039], 255, "1039th value should be 255");
+assertEq(view[1040], 205, "1040th value should be 205");
+assertEq(view[1041], 255, "1041th value should be 255");
+assertEq(view[1042], 50, "1042th value should be 50");
+assertEq(view[1043], 255, "1043th value should be 255");
+assertEq(view[1044], 179, "1044th value should be 179");
+assertEq(view[1045], 127, "1045th value should be 127");
+assertEq(view[1046], 76, "1046th value should be 76");
+assertEq(view[1047], 255, "1047th value should be 255");
+assertEq(view[1048], 179, "1048th value should be 179");
+assertEq(view[1049], 127, "1049th value should be 127");
+assertEq(view[1050], 76, "1050th value should be 76");
+assertEq(view[1051], 255, "1051th value should be 255");
+assertEq(view[1052], 154, "1052th value should be 154");
+assertEq(view[1053], 255, "1053th value should be 255");
+assertEq(view[1054], 101, "1054th value should be 101");
+assertEq(view[1055], 255, "1055th value should be 255");
+assertEq(view[1056], 128, "1056th value should be 128");
+assertEq(view[1057], 127, "1057th value should be 127");
+assertEq(view[1058], 127, "1058th value should be 127");
+assertEq(view[1059], 255, "1059th value should be 255");
+assertEq(view[1060], 0, "1060th value should be 0");
+assertEq(view[1061], 0, "1061th value should be 0");
+assertEq(view[1062], 0, "1062th value should be 0");
+assertEq(view[1063], 255, "1063th value should be 255");
+assertEq(view[1064], 0, "1064th value should be 0");
+assertEq(view[1065], 0, "1065th value should be 0");
+assertEq(view[1066], 0, "1066th value should be 0");
+assertEq(view[1067], 255, "1067th value should be 255");
+assertEq(view[1068], 26, "1068th value should be 26");
+assertEq(view[1069], 127, "1069th value should be 127");
+assertEq(view[1070], 229, "1070th value should be 229");
+assertEq(view[1071], 255, "1071th value should be 255");
+assertEq(view[1072], 26, "1072th value should be 26");
+assertEq(view[1073], 127, "1073th value should be 127");
+assertEq(view[1074], 229, "1074th value should be 229");
+assertEq(view[1075], 255, "1075th value should be 255");
+assertEq(view[1076], 0, "1076th value should be 0");
+assertEq(view[1077], 0, "1077th value should be 0");
+assertEq(view[1078], 0, "1078th value should be 0");
+assertEq(view[1079], 255, "1079th value should be 255");
+assertEq(view[1080], 0, "1080th value should be 0");
+assertEq(view[1081], 0, "1081th value should be 0");
+assertEq(view[1082], 0, "1082th value should be 0");
+assertEq(view[1083], 255, "1083th value should be 255");
+assertEq(view[1084], 0, "1084th value should be 0");
+assertEq(view[1085], 0, "1085th value should be 0");
+assertEq(view[1086], 0, "1086th value should be 0");
+assertEq(view[1087], 255, "1087th value should be 255");
+assertEq(view[1088], 0, "1088th value should be 0");
+assertEq(view[1089], 0, "1089th value should be 0");
+assertEq(view[1090], 0, "1090th value should be 0");
+assertEq(view[1091], 255, "1091th value should be 255");
+assertEq(view[1092], 0, "1092th value should be 0");
+assertEq(view[1093], 0, "1093th value should be 0");
+assertEq(view[1094], 0, "1094th value should be 0");
+assertEq(view[1095], 255, "1095th value should be 255");
+assertEq(view[1096], 0, "1096th value should be 0");
+assertEq(view[1097], 0, "1097th value should be 0");
+assertEq(view[1098], 0, "1098th value should be 0");
+assertEq(view[1099], 255, "1099th value should be 255");
+assertEq(view[1100], 0, "1100th value should be 0");
+assertEq(view[1101], 0, "1101th value should be 0");
+assertEq(view[1102], 0, "1102th value should be 0");
+assertEq(view[1103], 255, "1103th value should be 255");
+assertEq(view[1104], 0, "1104th value should be 0");
+assertEq(view[1105], 0, "1105th value should be 0");
+assertEq(view[1106], 0, "1106th value should be 0");
+assertEq(view[1107], 255, "1107th value should be 255");
+assertEq(view[1108], 154, "1108th value should be 154");
+assertEq(view[1109], 255, "1109th value should be 255");
+assertEq(view[1110], 101, "1110th value should be 101");
+assertEq(view[1111], 255, "1111th value should be 255");
+assertEq(view[1112], 205, "1112th value should be 205");
+assertEq(view[1113], 255, "1113th value should be 255");
+assertEq(view[1114], 50, "1114th value should be 50");
+assertEq(view[1115], 255, "1115th value should be 255");
+assertEq(view[1116], 205, "1116th value should be 205");
+assertEq(view[1117], 255, "1117th value should be 255");
+assertEq(view[1118], 50, "1118th value should be 50");
+assertEq(view[1119], 255, "1119th value should be 255");
+assertEq(view[1120], 205, "1120th value should be 205");
+assertEq(view[1121], 255, "1121th value should be 255");
+assertEq(view[1122], 50, "1122th value should be 50");
+assertEq(view[1123], 255, "1123th value should be 255");
+assertEq(view[1124], 205, "1124th value should be 205");
+assertEq(view[1125], 255, "1125th value should be 255");
+assertEq(view[1126], 50, "1126th value should be 50");
+assertEq(view[1127], 255, "1127th value should be 255");
+assertEq(view[1128], 205, "1128th value should be 205");
+assertEq(view[1129], 255, "1129th value should be 255");
+assertEq(view[1130], 50, "1130th value should be 50");
+assertEq(view[1131], 255, "1131th value should be 255");
+assertEq(view[1132], 179, "1132th value should be 179");
+assertEq(view[1133], 127, "1133th value should be 127");
+assertEq(view[1134], 76, "1134th value should be 76");
+assertEq(view[1135], 255, "1135th value should be 255");
+assertEq(view[1136], 154, "1136th value should be 154");
+assertEq(view[1137], 255, "1137th value should be 255");
+assertEq(view[1138], 101, "1138th value should be 101");
+assertEq(view[1139], 255, "1139th value should be 255");
+assertEq(view[1140], 128, "1140th value should be 128");
+assertEq(view[1141], 127, "1141th value should be 127");
+assertEq(view[1142], 127, "1142th value should be 127");
+assertEq(view[1143], 255, "1143th value should be 255");
+assertEq(view[1144], 128, "1144th value should be 128");
+assertEq(view[1145], 127, "1145th value should be 127");
+assertEq(view[1146], 127, "1146th value should be 127");
+assertEq(view[1147], 255, "1147th value should be 255");
+assertEq(view[1148], 103, "1148th value should be 103");
+assertEq(view[1149], 255, "1149th value should be 255");
+assertEq(view[1150], 152, "1150th value should be 152");
+assertEq(view[1151], 255, "1151th value should be 255");
+assertEq(view[1152], 78, "1152th value should be 78");
+assertEq(view[1153], 127, "1153th value should be 127");
+assertEq(view[1154], 178, "1154th value should be 178");
+assertEq(view[1155], 255, "1155th value should be 255");
+assertEq(view[1156], 0, "1156th value should be 0");
+assertEq(view[1157], 0, "1157th value should be 0");
+assertEq(view[1158], 0, "1158th value should be 0");
+assertEq(view[1159], 255, "1159th value should be 255");
+assertEq(view[1160], 0, "1160th value should be 0");
+assertEq(view[1161], 0, "1161th value should be 0");
+assertEq(view[1162], 0, "1162th value should be 0");
+assertEq(view[1163], 255, "1163th value should be 255");
+assertEq(view[1164], 0, "1164th value should be 0");
+assertEq(view[1165], 0, "1165th value should be 0");
+assertEq(view[1166], 0, "1166th value should be 0");
+assertEq(view[1167], 255, "1167th value should be 255");
+assertEq(view[1168], 0, "1168th value should be 0");
+assertEq(view[1169], 0, "1169th value should be 0");
+assertEq(view[1170], 0, "1170th value should be 0");
+assertEq(view[1171], 255, "1171th value should be 255");
+assertEq(view[1172], 0, "1172th value should be 0");
+assertEq(view[1173], 0, "1173th value should be 0");
+assertEq(view[1174], 0, "1174th value should be 0");
+assertEq(view[1175], 255, "1175th value should be 255");
+assertEq(view[1176], 0, "1176th value should be 0");
+assertEq(view[1177], 0, "1177th value should be 0");
+assertEq(view[1178], 0, "1178th value should be 0");
+assertEq(view[1179], 255, "1179th value should be 255");
+assertEq(view[1180], 0, "1180th value should be 0");
+assertEq(view[1181], 0, "1181th value should be 0");
+assertEq(view[1182], 0, "1182th value should be 0");
+assertEq(view[1183], 255, "1183th value should be 255");
+assertEq(view[1184], 26, "1184th value should be 26");
+assertEq(view[1185], 127, "1185th value should be 127");
+assertEq(view[1186], 229, "1186th value should be 229");
+assertEq(view[1187], 255, "1187th value should be 255");
+assertEq(view[1188], 154, "1188th value should be 154");
+assertEq(view[1189], 255, "1189th value should be 255");
+assertEq(view[1190], 101, "1190th value should be 101");
+assertEq(view[1191], 255, "1191th value should be 255");
+assertEq(view[1192], 205, "1192th value should be 205");
+assertEq(view[1193], 255, "1193th value should be 255");
+assertEq(view[1194], 50, "1194th value should be 50");
+assertEq(view[1195], 255, "1195th value should be 255");
+assertEq(view[1196], 205, "1196th value should be 205");
+assertEq(view[1197], 255, "1197th value should be 255");
+assertEq(view[1198], 50, "1198th value should be 50");
+assertEq(view[1199], 255, "1199th value should be 255");
+assertEq(view[1200], 230, "1200th value should be 230");
+assertEq(view[1201], 127, "1201th value should be 127");
+assertEq(view[1202], 25, "1202th value should be 25");
+assertEq(view[1203], 255, "1203th value should be 255");
+assertEq(view[1204], 205, "1204th value should be 205");
+assertEq(view[1205], 255, "1205th value should be 255");
+assertEq(view[1206], 50, "1206th value should be 50");
+assertEq(view[1207], 255, "1207th value should be 255");
+assertEq(view[1208], 205, "1208th value should be 205");
+assertEq(view[1209], 255, "1209th value should be 255");
+assertEq(view[1210], 50, "1210th value should be 50");
+assertEq(view[1211], 255, "1211th value should be 255");
+assertEq(view[1212], 205, "1212th value should be 205");
+assertEq(view[1213], 255, "1213th value should be 255");
+assertEq(view[1214], 50, "1214th value should be 50");
+assertEq(view[1215], 255, "1215th value should be 255");
+assertEq(view[1216], 205, "1216th value should be 205");
+assertEq(view[1217], 255, "1217th value should be 255");
+assertEq(view[1218], 50, "1218th value should be 50");
+assertEq(view[1219], 255, "1219th value should be 255");
+assertEq(view[1220], 154, "1220th value should be 154");
+assertEq(view[1221], 255, "1221th value should be 255");
+assertEq(view[1222], 101, "1222th value should be 101");
+assertEq(view[1223], 255, "1223th value should be 255");
+assertEq(view[1224], 154, "1224th value should be 154");
+assertEq(view[1225], 255, "1225th value should be 255");
+assertEq(view[1226], 101, "1226th value should be 101");
+assertEq(view[1227], 255, "1227th value should be 255");
+assertEq(view[1228], 154, "1228th value should be 154");
+assertEq(view[1229], 255, "1229th value should be 255");
+assertEq(view[1230], 101, "1230th value should be 101");
+assertEq(view[1231], 255, "1231th value should be 255");
+assertEq(view[1232], 128, "1232th value should be 128");
+assertEq(view[1233], 127, "1233th value should be 127");
+assertEq(view[1234], 127, "1234th value should be 127");
+assertEq(view[1235], 255, "1235th value should be 255");
+assertEq(view[1236], 26, "1236th value should be 26");
+assertEq(view[1237], 127, "1237th value should be 127");
+assertEq(view[1238], 229, "1238th value should be 229");
+assertEq(view[1239], 255, "1239th value should be 255");
+assertEq(view[1240], 0, "1240th value should be 0");
+assertEq(view[1241], 0, "1241th value should be 0");
+assertEq(view[1242], 0, "1242th value should be 0");
+assertEq(view[1243], 255, "1243th value should be 255");
+assertEq(view[1244], 0, "1244th value should be 0");
+assertEq(view[1245], 0, "1245th value should be 0");
+assertEq(view[1246], 0, "1246th value should be 0");
+assertEq(view[1247], 255, "1247th value should be 255");
+assertEq(view[1248], 0, "1248th value should be 0");
+assertEq(view[1249], 0, "1249th value should be 0");
+assertEq(view[1250], 0, "1250th value should be 0");
+assertEq(view[1251], 255, "1251th value should be 255");
+assertEq(view[1252], 0, "1252th value should be 0");
+assertEq(view[1253], 0, "1253th value should be 0");
+assertEq(view[1254], 0, "1254th value should be 0");
+assertEq(view[1255], 255, "1255th value should be 255");
+assertEq(view[1256], 0, "1256th value should be 0");
+assertEq(view[1257], 0, "1257th value should be 0");
+assertEq(view[1258], 0, "1258th value should be 0");
+assertEq(view[1259], 255, "1259th value should be 255");
+assertEq(view[1260], 0, "1260th value should be 0");
+assertEq(view[1261], 0, "1261th value should be 0");
+assertEq(view[1262], 0, "1262th value should be 0");
+assertEq(view[1263], 255, "1263th value should be 255");
+assertEq(view[1264], 78, "1264th value should be 78");
+assertEq(view[1265], 127, "1265th value should be 127");
+assertEq(view[1266], 178, "1266th value should be 178");
+assertEq(view[1267], 255, "1267th value should be 255");
+assertEq(view[1268], 179, "1268th value should be 179");
+assertEq(view[1269], 127, "1269th value should be 127");
+assertEq(view[1270], 76, "1270th value should be 76");
+assertEq(view[1271], 255, "1271th value should be 255");
+assertEq(view[1272], 205, "1272th value should be 205");
+assertEq(view[1273], 255, "1273th value should be 255");
+assertEq(view[1274], 50, "1274th value should be 50");
+assertEq(view[1275], 255, "1275th value should be 255");
+assertEq(view[1276], 205, "1276th value should be 205");
+assertEq(view[1277], 255, "1277th value should be 255");
+assertEq(view[1278], 50, "1278th value should be 50");
+assertEq(view[1279], 255, "1279th value should be 255");
+assertEq(view[1280], 0, "1280th value should be 0");
+assertEq(view[1281], 0, "1281th value should be 0");
+assertEq(view[1282], 0, "1282th value should be 0");
+assertEq(view[1283], 255, "1283th value should be 255");
+assertEq(view[1284], 205, "1284th value should be 205");
+assertEq(view[1285], 255, "1285th value should be 255");
+assertEq(view[1286], 50, "1286th value should be 50");
+assertEq(view[1287], 255, "1287th value should be 255");
+assertEq(view[1288], 205, "1288th value should be 205");
+assertEq(view[1289], 255, "1289th value should be 255");
+assertEq(view[1290], 50, "1290th value should be 50");
+assertEq(view[1291], 255, "1291th value should be 255");
+assertEq(view[1292], 205, "1292th value should be 205");
+assertEq(view[1293], 255, "1293th value should be 255");
+assertEq(view[1294], 50, "1294th value should be 50");
+assertEq(view[1295], 255, "1295th value should be 255");
+assertEq(view[1296], 205, "1296th value should be 205");
+assertEq(view[1297], 255, "1297th value should be 255");
+assertEq(view[1298], 50, "1298th value should be 50");
+assertEq(view[1299], 255, "1299th value should be 255");
+assertEq(view[1300], 205, "1300th value should be 205");
+assertEq(view[1301], 255, "1301th value should be 255");
+assertEq(view[1302], 50, "1302th value should be 50");
+assertEq(view[1303], 255, "1303th value should be 255");
+assertEq(view[1304], 179, "1304th value should be 179");
+assertEq(view[1305], 127, "1305th value should be 127");
+assertEq(view[1306], 76, "1306th value should be 76");
+assertEq(view[1307], 255, "1307th value should be 255");
+assertEq(view[1308], 154, "1308th value should be 154");
+assertEq(view[1309], 255, "1309th value should be 255");
+assertEq(view[1310], 101, "1310th value should be 101");
+assertEq(view[1311], 255, "1311th value should be 255");
+assertEq(view[1312], 154, "1312th value should be 154");
+assertEq(view[1313], 255, "1313th value should be 255");
+assertEq(view[1314], 101, "1314th value should be 101");
+assertEq(view[1315], 255, "1315th value should be 255");
+assertEq(view[1316], 0, "1316th value should be 0");
+assertEq(view[1317], 0, "1317th value should be 0");
+assertEq(view[1318], 0, "1318th value should be 0");
+assertEq(view[1319], 255, "1319th value should be 255");
+assertEq(view[1320], 0, "1320th value should be 0");
+assertEq(view[1321], 0, "1321th value should be 0");
+assertEq(view[1322], 0, "1322th value should be 0");
+assertEq(view[1323], 255, "1323th value should be 255");
+assertEq(view[1324], 0, "1324th value should be 0");
+assertEq(view[1325], 0, "1325th value should be 0");
+assertEq(view[1326], 0, "1326th value should be 0");
+assertEq(view[1327], 255, "1327th value should be 255");
+assertEq(view[1328], 0, "1328th value should be 0");
+assertEq(view[1329], 0, "1329th value should be 0");
+assertEq(view[1330], 0, "1330th value should be 0");
+assertEq(view[1331], 255, "1331th value should be 255");
+assertEq(view[1332], 0, "1332th value should be 0");
+assertEq(view[1333], 0, "1333th value should be 0");
+assertEq(view[1334], 0, "1334th value should be 0");
+assertEq(view[1335], 255, "1335th value should be 255");
+assertEq(view[1336], 0, "1336th value should be 0");
+assertEq(view[1337], 0, "1337th value should be 0");
+assertEq(view[1338], 0, "1338th value should be 0");
+assertEq(view[1339], 255, "1339th value should be 255");
+assertEq(view[1340], 0, "1340th value should be 0");
+assertEq(view[1341], 0, "1341th value should be 0");
+assertEq(view[1342], 0, "1342th value should be 0");
+assertEq(view[1343], 255, "1343th value should be 255");
+assertEq(view[1344], 0, "1344th value should be 0");
+assertEq(view[1345], 0, "1345th value should be 0");
+assertEq(view[1346], 0, "1346th value should be 0");
+assertEq(view[1347], 255, "1347th value should be 255");
+assertEq(view[1348], 179, "1348th value should be 179");
+assertEq(view[1349], 127, "1349th value should be 127");
+assertEq(view[1350], 76, "1350th value should be 76");
+assertEq(view[1351], 255, "1351th value should be 255");
+assertEq(view[1352], 205, "1352th value should be 205");
+assertEq(view[1353], 255, "1353th value should be 255");
+assertEq(view[1354], 50, "1354th value should be 50");
+assertEq(view[1355], 255, "1355th value should be 255");
+assertEq(view[1356], 205, "1356th value should be 205");
+assertEq(view[1357], 255, "1357th value should be 255");
+assertEq(view[1358], 50, "1358th value should be 50");
+assertEq(view[1359], 255, "1359th value should be 255");
+assertEq(view[1360], 0, "1360th value should be 0");
+assertEq(view[1361], 0, "1361th value should be 0");
+assertEq(view[1362], 0, "1362th value should be 0");
+assertEq(view[1363], 255, "1363th value should be 255");
+assertEq(view[1364], 205, "1364th value should be 205");
+assertEq(view[1365], 255, "1365th value should be 255");
+assertEq(view[1366], 50, "1366th value should be 50");
+assertEq(view[1367], 255, "1367th value should be 255");
+assertEq(view[1368], 205, "1368th value should be 205");
+assertEq(view[1369], 255, "1369th value should be 255");
+assertEq(view[1370], 50, "1370th value should be 50");
+assertEq(view[1371], 255, "1371th value should be 255");
+assertEq(view[1372], 205, "1372th value should be 205");
+assertEq(view[1373], 255, "1373th value should be 255");
+assertEq(view[1374], 50, "1374th value should be 50");
+assertEq(view[1375], 255, "1375th value should be 255");
+assertEq(view[1376], 205, "1376th value should be 205");
+assertEq(view[1377], 255, "1377th value should be 255");
+assertEq(view[1378], 50, "1378th value should be 50");
+assertEq(view[1379], 255, "1379th value should be 255");
+assertEq(view[1380], 205, "1380th value should be 205");
+assertEq(view[1381], 255, "1381th value should be 255");
+assertEq(view[1382], 50, "1382th value should be 50");
+assertEq(view[1383], 255, "1383th value should be 255");
+assertEq(view[1384], 205, "1384th value should be 205");
+assertEq(view[1385], 255, "1385th value should be 255");
+assertEq(view[1386], 50, "1386th value should be 50");
+assertEq(view[1387], 255, "1387th value should be 255");
+assertEq(view[1388], 179, "1388th value should be 179");
+assertEq(view[1389], 127, "1389th value should be 127");
+assertEq(view[1390], 76, "1390th value should be 76");
+assertEq(view[1391], 255, "1391th value should be 255");
+assertEq(view[1392], 179, "1392th value should be 179");
+assertEq(view[1393], 127, "1393th value should be 127");
+assertEq(view[1394], 76, "1394th value should be 76");
+assertEq(view[1395], 255, "1395th value should be 255");
+assertEq(view[1396], 103, "1396th value should be 103");
+assertEq(view[1397], 255, "1397th value should be 255");
+assertEq(view[1398], 152, "1398th value should be 152");
+assertEq(view[1399], 255, "1399th value should be 255");
+assertEq(view[1400], 78, "1400th value should be 78");
+assertEq(view[1401], 127, "1401th value should be 127");
+assertEq(view[1402], 178, "1402th value should be 178");
+assertEq(view[1403], 255, "1403th value should be 255");
+assertEq(view[1404], 52, "1404th value should be 52");
+assertEq(view[1405], 255, "1405th value should be 255");
+assertEq(view[1406], 203, "1406th value should be 203");
+assertEq(view[1407], 255, "1407th value should be 255");
+assertEq(view[1408], 0, "1408th value should be 0");
+assertEq(view[1409], 0, "1409th value should be 0");
+assertEq(view[1410], 0, "1410th value should be 0");
+assertEq(view[1411], 255, "1411th value should be 255");
+assertEq(view[1412], 0, "1412th value should be 0");
+assertEq(view[1413], 0, "1413th value should be 0");
+assertEq(view[1414], 0, "1414th value should be 0");
+assertEq(view[1415], 255, "1415th value should be 255");
+assertEq(view[1416], 52, "1416th value should be 52");
+assertEq(view[1417], 255, "1417th value should be 255");
+assertEq(view[1418], 203, "1418th value should be 203");
+assertEq(view[1419], 255, "1419th value should be 255");
+assertEq(view[1420], 128, "1420th value should be 128");
+assertEq(view[1421], 127, "1421th value should be 127");
+assertEq(view[1422], 127, "1422th value should be 127");
+assertEq(view[1423], 255, "1423th value should be 255");
+assertEq(view[1424], 128, "1424th value should be 128");
+assertEq(view[1425], 127, "1425th value should be 127");
+assertEq(view[1426], 127, "1426th value should be 127");
+assertEq(view[1427], 255, "1427th value should be 255");
+assertEq(view[1428], 205, "1428th value should be 205");
+assertEq(view[1429], 255, "1429th value should be 255");
+assertEq(view[1430], 50, "1430th value should be 50");
+assertEq(view[1431], 255, "1431th value should be 255");
+assertEq(view[1432], 205, "1432th value should be 205");
+assertEq(view[1433], 255, "1433th value should be 255");
+assertEq(view[1434], 50, "1434th value should be 50");
+assertEq(view[1435], 255, "1435th value should be 255");
+assertEq(view[1436], 230, "1436th value should be 230");
+assertEq(view[1437], 127, "1437th value should be 127");
+assertEq(view[1438], 25, "1438th value should be 25");
+assertEq(view[1439], 255, "1439th value should be 255");
+assertEq(view[1440], 0, "1440th value should be 0");
+assertEq(view[1441], 0, "1441th value should be 0");
+assertEq(view[1442], 0, "1442th value should be 0");
+assertEq(view[1443], 255, "1443th value should be 255");
+assertEq(view[1444], 230, "1444th value should be 230");
+assertEq(view[1445], 127, "1445th value should be 127");
+assertEq(view[1446], 25, "1446th value should be 25");
+assertEq(view[1447], 255, "1447th value should be 255");
+assertEq(view[1448], 205, "1448th value should be 205");
+assertEq(view[1449], 255, "1449th value should be 255");
+assertEq(view[1450], 50, "1450th value should be 50");
+assertEq(view[1451], 255, "1451th value should be 255");
+assertEq(view[1452], 205, "1452th value should be 205");
+assertEq(view[1453], 255, "1453th value should be 255");
+assertEq(view[1454], 50, "1454th value should be 50");
+assertEq(view[1455], 255, "1455th value should be 255");
+assertEq(view[1456], 205, "1456th value should be 205");
+assertEq(view[1457], 255, "1457th value should be 255");
+assertEq(view[1458], 50, "1458th value should be 50");
+assertEq(view[1459], 255, "1459th value should be 255");
+assertEq(view[1460], 205, "1460th value should be 205");
+assertEq(view[1461], 255, "1461th value should be 255");
+assertEq(view[1462], 50, "1462th value should be 50");
+assertEq(view[1463], 255, "1463th value should be 255");
+assertEq(view[1464], 205, "1464th value should be 205");
+assertEq(view[1465], 255, "1465th value should be 255");
+assertEq(view[1466], 50, "1466th value should be 50");
+assertEq(view[1467], 255, "1467th value should be 255");
+assertEq(view[1468], 179, "1468th value should be 179");
+assertEq(view[1469], 127, "1469th value should be 127");
+assertEq(view[1470], 76, "1470th value should be 76");
+assertEq(view[1471], 255, "1471th value should be 255");
+assertEq(view[1472], 179, "1472th value should be 179");
+assertEq(view[1473], 127, "1473th value should be 127");
+assertEq(view[1474], 76, "1474th value should be 76");
+assertEq(view[1475], 255, "1475th value should be 255");
+assertEq(view[1476], 179, "1476th value should be 179");
+assertEq(view[1477], 127, "1477th value should be 127");
+assertEq(view[1478], 76, "1478th value should be 76");
+assertEq(view[1479], 255, "1479th value should be 255");
+assertEq(view[1480], 128, "1480th value should be 128");
+assertEq(view[1481], 127, "1481th value should be 127");
+assertEq(view[1482], 127, "1482th value should be 127");
+assertEq(view[1483], 255, "1483th value should be 255");
+assertEq(view[1484], 103, "1484th value should be 103");
+assertEq(view[1485], 255, "1485th value should be 255");
+assertEq(view[1486], 152, "1486th value should be 152");
+assertEq(view[1487], 255, "1487th value should be 255");
+assertEq(view[1488], 0, "1488th value should be 0");
+assertEq(view[1489], 0, "1489th value should be 0");
+assertEq(view[1490], 0, "1490th value should be 0");
+assertEq(view[1491], 255, "1491th value should be 255");
+assertEq(view[1492], 0, "1492th value should be 0");
+assertEq(view[1493], 0, "1493th value should be 0");
+assertEq(view[1494], 0, "1494th value should be 0");
+assertEq(view[1495], 255, "1495th value should be 255");
+assertEq(view[1496], 128, "1496th value should be 128");
+assertEq(view[1497], 127, "1497th value should be 127");
+assertEq(view[1498], 127, "1498th value should be 127");
+assertEq(view[1499], 255, "1499th value should be 255");
+assertEq(view[1500], 154, "1500th value should be 154");
+assertEq(view[1501], 255, "1501th value should be 255");
+assertEq(view[1502], 101, "1502th value should be 101");
+assertEq(view[1503], 255, "1503th value should be 255");
+assertEq(view[1504], 179, "1504th value should be 179");
+assertEq(view[1505], 127, "1505th value should be 127");
+assertEq(view[1506], 76, "1506th value should be 76");
+assertEq(view[1507], 255, "1507th value should be 255");
+assertEq(view[1508], 205, "1508th value should be 205");
+assertEq(view[1509], 255, "1509th value should be 255");
+assertEq(view[1510], 50, "1510th value should be 50");
+assertEq(view[1511], 255, "1511th value should be 255");
+assertEq(view[1512], 205, "1512th value should be 205");
+assertEq(view[1513], 255, "1513th value should be 255");
+assertEq(view[1514], 50, "1514th value should be 50");
+assertEq(view[1515], 255, "1515th value should be 255");
+assertEq(view[1516], 230, "1516th value should be 230");
+assertEq(view[1517], 127, "1517th value should be 127");
+assertEq(view[1518], 25, "1518th value should be 25");
+assertEq(view[1519], 255, "1519th value should be 255");
+assertEq(view[1520], 0, "1520th value should be 0");
+assertEq(view[1521], 0, "1521th value should be 0");
+assertEq(view[1522], 0, "1522th value should be 0");
+assertEq(view[1523], 255, "1523th value should be 255");
+assertEq(view[1524], 230, "1524th value should be 230");
+assertEq(view[1525], 127, "1525th value should be 127");
+assertEq(view[1526], 25, "1526th value should be 25");
+assertEq(view[1527], 255, "1527th value should be 255");
+assertEq(view[1528], 230, "1528th value should be 230");
+assertEq(view[1529], 127, "1529th value should be 127");
+assertEq(view[1530], 25, "1530th value should be 25");
+assertEq(view[1531], 255, "1531th value should be 255");
+assertEq(view[1532], 205, "1532th value should be 205");
+assertEq(view[1533], 255, "1533th value should be 255");
+assertEq(view[1534], 50, "1534th value should be 50");
+assertEq(view[1535], 255, "1535th value should be 255");
+assertEq(view[1536], 205, "1536th value should be 205");
+assertEq(view[1537], 255, "1537th value should be 255");
+assertEq(view[1538], 50, "1538th value should be 50");
+assertEq(view[1539], 255, "1539th value should be 255");
+assertEq(view[1540], 205, "1540th value should be 205");
+assertEq(view[1541], 255, "1541th value should be 255");
+assertEq(view[1542], 50, "1542th value should be 50");
+assertEq(view[1543], 255, "1543th value should be 255");
+assertEq(view[1544], 205, "1544th value should be 205");
+assertEq(view[1545], 255, "1545th value should be 255");
+assertEq(view[1546], 50, "1546th value should be 50");
+assertEq(view[1547], 255, "1547th value should be 255");
+assertEq(view[1548], 205, "1548th value should be 205");
+assertEq(view[1549], 255, "1549th value should be 255");
+assertEq(view[1550], 50, "1550th value should be 50");
+assertEq(view[1551], 255, "1551th value should be 255");
+assertEq(view[1552], 179, "1552th value should be 179");
+assertEq(view[1553], 127, "1553th value should be 127");
+assertEq(view[1554], 76, "1554th value should be 76");
+assertEq(view[1555], 255, "1555th value should be 255");
+assertEq(view[1556], 179, "1556th value should be 179");
+assertEq(view[1557], 127, "1557th value should be 127");
+assertEq(view[1558], 76, "1558th value should be 76");
+assertEq(view[1559], 255, "1559th value should be 255");
+assertEq(view[1560], 179, "1560th value should be 179");
+assertEq(view[1561], 127, "1561th value should be 127");
+assertEq(view[1562], 76, "1562th value should be 76");
+assertEq(view[1563], 255, "1563th value should be 255");
+assertEq(view[1564], 154, "1564th value should be 154");
+assertEq(view[1565], 255, "1565th value should be 255");
+assertEq(view[1566], 101, "1566th value should be 101");
+assertEq(view[1567], 255, "1567th value should be 255");
+assertEq(view[1568], 26, "1568th value should be 26");
+assertEq(view[1569], 127, "1569th value should be 127");
+assertEq(view[1570], 229, "1570th value should be 229");
+assertEq(view[1571], 255, "1571th value should be 255");
+assertEq(view[1572], 0, "1572th value should be 0");
+assertEq(view[1573], 0, "1573th value should be 0");
+assertEq(view[1574], 0, "1574th value should be 0");
+assertEq(view[1575], 255, "1575th value should be 255");
+assertEq(view[1576], 154, "1576th value should be 154");
+assertEq(view[1577], 255, "1577th value should be 255");
+assertEq(view[1578], 101, "1578th value should be 101");
+assertEq(view[1579], 255, "1579th value should be 255");
+assertEq(view[1580], 179, "1580th value should be 179");
+assertEq(view[1581], 127, "1581th value should be 127");
+assertEq(view[1582], 76, "1582th value should be 76");
+assertEq(view[1583], 255, "1583th value should be 255");
+assertEq(view[1584], 205, "1584th value should be 205");
+assertEq(view[1585], 255, "1585th value should be 255");
+assertEq(view[1586], 50, "1586th value should be 50");
+assertEq(view[1587], 255, "1587th value should be 255");
+assertEq(view[1588], 205, "1588th value should be 205");
+assertEq(view[1589], 255, "1589th value should be 255");
+assertEq(view[1590], 50, "1590th value should be 50");
+assertEq(view[1591], 255, "1591th value should be 255");
+assertEq(view[1592], 230, "1592th value should be 230");
+assertEq(view[1593], 127, "1593th value should be 127");
+assertEq(view[1594], 25, "1594th value should be 25");
+assertEq(view[1595], 255, "1595th value should be 255");
+assertEq(view[1596], 230, "1596th value should be 230");
+assertEq(view[1597], 127, "1597th value should be 127");
+assertEq(view[1598], 25, "1598th value should be 25");
+assertEq(view[1599], 255, "1599th value should be 255");
+
+// Code used to generate the assertEq list above.
+function generateAssertList() {
+  function template(i, x) {
+    return 'assertEq(view[' + i + '], ' + x + ', "' + i + 'th value should be ' + x + '");\n';
+  }
+  var buf = ''
+  for (var i = 0; i < LIMIT_SHOW; i++)
+      buf += template(i, view[i]);
+  print(buf);
+}
+//generateAssertList();
--- a/js/src/jit-test/tests/asm.js/testSIMD-load-store.js
+++ b/js/src/jit-test/tests/asm.js/testSIMD-load-store.js
@@ -23,18 +23,20 @@ function assertEqX4(real, expected, asse
         assertFunc(real.z, expected[2]);
         assertFunc(real.w, expected[3]);
     } catch (e) {
         print("Stack: " + e.stack);
         throw e;
     }
 }
 
+try {
+
 // Load / Store
-var IMPORTS = USE_ASM + 'var H=new glob.Uint8Array(heap); var i4=glob.SIMD.int32x4; var load=i4.load; var store=i4.store;';
+var IMPORTS = USE_ASM + 'var H=new glob.Uint8Array(heap); var i4=glob.SIMD.int32x4; var ci4=i4.check; var load=i4.load; var store=i4.store;';
 
 //      Bad number of args
 assertAsmTypeFail('glob', 'ffi', 'heap', IMPORTS + "function f(){load();} return f");
 assertAsmTypeFail('glob', 'ffi', 'heap', IMPORTS + "function f(){load(3);} return f");
 assertAsmTypeFail('glob', 'ffi', 'heap', IMPORTS + "function f(){load(3, 4, 5);} return f");
 
 //      Bad type of args
 assertAsmTypeFail('glob', 'ffi', 'heap', IMPORTS + "function f(){load(3, 5);} return f");
@@ -58,58 +60,60 @@ asI32[SIZE_TA - 3] = 3;
 asI32[SIZE_TA - 2] = 2;
 asI32[SIZE_TA - 1] = 1;
 
 assertAsmTypeFail('glob', 'ffi', 'heap', IMPORTS + "function f(){load(H, -1);} return f");
 assertAsmTypeFail('glob', 'ffi', 'heap', IMPORTS + "function f(){load(H, " + (INT32_MAX + 1) + ");} return f");
 assertAsmTypeFail('glob', 'ffi', 'heap', IMPORTS + "function f(){load(H, " + (INT32_MAX + 1 - 15) + ");} return f");
 asmCompile('glob', 'ffi', 'heap', IMPORTS + "function f(){load(H, " + (INT32_MAX + 1 - 16) + ");} return f");
 
-assertAsmLinkFail(asmCompile('glob', 'ffi', 'heap', IMPORTS + "function f() {return i4(load(H, " + (BUF_MIN - 15) + "));} return f"), this, {}, buf);
-assertEqX4(asmLink(asmCompile('glob', 'ffi', 'heap', IMPORTS + "function f() {return i4(load(H, " + (BUF_MIN - 16) + "));} return f"), this, {}, buf)(), [4, 3, 2, 1]);
-assertEqX4(asmLink(asmCompile('glob', 'ffi', 'heap', IMPORTS + "function f() {return i4(load(H, " + BUF_MIN + " - 16 | 0));} return f"), this, {}, buf)(), [4, 3, 2, 1]);
+assertAsmLinkFail(asmCompile('glob', 'ffi', 'heap', IMPORTS + "function f() {return ci4(load(H, " + (BUF_MIN - 15) + "));} return f"), this, {}, buf);
+assertEqX4(asmLink(asmCompile('glob', 'ffi', 'heap', IMPORTS + "function f() {return ci4(load(H, " + (BUF_MIN - 16) + "));} return f"), this, {}, buf)(), [4, 3, 2, 1]);
+assertEqX4(asmLink(asmCompile('glob', 'ffi', 'heap', IMPORTS + "function f() {return ci4(load(H, " + BUF_MIN + " - 16 | 0));} return f"), this, {}, buf)(), [4, 3, 2, 1]);
 
 var CONSTANT_INDEX = 42;
 var CONSTANT_BYTE_INDEX = CONSTANT_INDEX << 2;
 
 var loadStoreCode = `
     "use asm";
 
     var H = new glob.Uint8Array(heap);
 
     var i4 = glob.SIMD.int32x4;
     var i4load = i4.load;
     var i4store = i4.store;
+    var ci4 = i4.check;
 
     var f4 = glob.SIMD.float32x4;
     var f4load = f4.load;
     var f4store = f4.store;
+    var cf4 = f4.check;
 
-    function f32l(i) { i=i|0; return f4(f4load(H, i|0)); }
-    function f32lcst() { return f4(f4load(H, ${CONSTANT_BYTE_INDEX})); }
-    function f32s(i, vec) { i=i|0; vec=f4(vec); f4store(H, i|0, vec); }
-    function f32scst(vec) { vec=f4(vec); f4store(H, ${CONSTANT_BYTE_INDEX}, vec); }
+    function f32l(i) { i=i|0; return cf4(f4load(H, i|0)); }
+    function f32lcst() { return cf4(f4load(H, ${CONSTANT_BYTE_INDEX})); }
+    function f32s(i, vec) { i=i|0; vec=cf4(vec); f4store(H, i|0, vec); }
+    function f32scst(vec) { vec=cf4(vec); f4store(H, ${CONSTANT_BYTE_INDEX}, vec); }
 
-    function i32l(i) { i=i|0; return i4(i4load(H, i|0)); }
-    function i32lcst() { return i4(i4load(H, ${CONSTANT_BYTE_INDEX})); }
-    function i32s(i, vec) { i=i|0; vec=i4(vec); i4store(H, i|0, vec); }
-    function i32scst(vec) { vec=i4(vec); i4store(H, ${CONSTANT_BYTE_INDEX}, vec); }
+    function i32l(i) { i=i|0; return ci4(i4load(H, i|0)); }
+    function i32lcst() { return ci4(i4load(H, ${CONSTANT_BYTE_INDEX})); }
+    function i32s(i, vec) { i=i|0; vec=ci4(vec); i4store(H, i|0, vec); }
+    function i32scst(vec) { vec=ci4(vec); i4store(H, ${CONSTANT_BYTE_INDEX}, vec); }
 
     function f32lbndcheck(i) {
         i=i|0;
         if ((i|0) > ${CONSTANT_BYTE_INDEX}) i=${CONSTANT_BYTE_INDEX};
         if ((i|0) < 0) i = 0;
-        return f4(f4load(H, i|0));
+        return cf4(f4load(H, i|0));
     }
     function f32sbndcheck(i, vec) {
         i=i|0;
-        vec=f4(vec);
+        vec=cf4(vec);
         if ((i|0) > ${CONSTANT_BYTE_INDEX}) i=${CONSTANT_BYTE_INDEX};
         if ((i|0) < 0) i = 0;
-        return f4(f4store(H, i|0, vec));
+        return cf4(f4store(H, i|0, vec));
     }
 
     return {
         f32l: f32l,
         f32lcst: f32lcst,
         f32s: f32s,
         f32scst: f32scst,
         f32lbndcheck: f32lbndcheck,
@@ -164,22 +168,22 @@ var code = `
         // set a constraint on the size of the heap
         var ptr = 0;
         ptr = u8[0xFFFF] | 0;
         // give a precise range to x
         x = (x>>0) > 5 ? 5 : x;
         x = (x>>0) < 0 ? 0 : x;
         // ptr value gets a precise range but the bounds check shouldn't get
         // eliminated.
-        return f4(f4l(u8, 0xFFFA + x | 0));
+        return f4l(u8, 0xFFFA + x | 0);
     }
 
     return g;
 `;
-assertThrowsInstanceOf(() =>asmLink(asmCompile('glob', 'ffi', 'heap', code), this, {}, new ArrayBuffer(0x10000))(0), RangeError);
+assertThrowsInstanceOf(() => asmLink(asmCompile('glob', 'ffi', 'heap', code), this, {}, new ArrayBuffer(0x10000))(0), RangeError);
 
 // Float32x4.store
 function f32s(n, v) { return m.f32s((n|0) << 2 | 0, v); };
 
 var vec  = SIMD.float32x4(5,6,7,8);
 var vec2 = SIMD.float32x4(0,1,2,3);
 
 reset();
@@ -269,16 +273,17 @@ for (var i = 0; i < SIZE; i++)
 // Partial loads and stores
 (function() {
 
 //      Variable indexes
 function MakeCodeFor(typeName) {
     return `
     "use asm";
     var type = glob.SIMD.${typeName};
+    var c = type.check;
 
     var lx = type.loadX;
     var lxy = type.loadXY;
     var lxyz = type.loadXYZ;
 
     var sx = type.storeX;
     var sxy = type.storeXY;
     var sxyz = type.storeXYZ;
@@ -288,23 +293,23 @@ function MakeCodeFor(typeName) {
     function loadX(i) { i=i|0; return lx(u8, i); }
     function loadXY(i) { i=i|0; return lxy(u8, i); }
     function loadXYZ(i) { i=i|0; return lxyz(u8, i); }
 
     function loadCstX() { return lx(u8, 41 << 2); }
     function loadCstXY() { return lxy(u8, 41 << 2); }
     function loadCstXYZ() { return lxyz(u8, 41 << 2); }
 
-    function storeX(i, x) { i=i|0; x=type(x); return sx(u8, i, x); }
-    function storeXY(i, x) { i=i|0; x=type(x); return sxy(u8, i, x); }
-    function storeXYZ(i, x) { i=i|0; x=type(x); return sxyz(u8, i, x); }
+    function storeX(i, x) { i=i|0; x=c(x); return sx(u8, i, x); }
+    function storeXY(i, x) { i=i|0; x=c(x); return sxy(u8, i, x); }
+    function storeXYZ(i, x) { i=i|0; x=c(x); return sxyz(u8, i, x); }
 
-    function storeCstX(x) { x=type(x); return sx(u8, 41 << 2, x); }
-    function storeCstXY(x) { x=type(x); return sxy(u8, 41 << 2, x); }
-    function storeCstXYZ(x) { x=type(x); return sxyz(u8, 41 << 2, x); }
+    function storeCstX(x) { x=c(x); return sx(u8, 41 << 2, x); }
+    function storeCstXY(x) { x=c(x); return sxy(u8, 41 << 2, x); }
+    function storeCstXYZ(x) { x=c(x); return sxyz(u8, 41 << 2, x); }
 
     return {
         loadX: loadX,
         loadXY: loadXY,
         loadXYZ: loadXYZ,
         loadCstX: loadCstX,
         loadCstXY: loadCstXY,
         loadCstXYZ: loadCstXYZ,
@@ -500,8 +505,10 @@ TestPartialLoads(mint32x4, i32,
             (i) => i + 1 | 0,
             (i) => -i | 0,
             (i) => i * 2 | 0,
             (i) => 42);
 
 TestPartialStores(mint32x4, i32, 'int32x4', 42, -3, 13, 37);
 
 })();
+
+} catch (e) { print('stack: ', e.stack); throw e }
--- a/js/src/jit-test/tests/asm.js/testSIMD.js
+++ b/js/src/jit-test/tests/asm.js/testSIMD.js
@@ -5,20 +5,22 @@ var heap = new ArrayBuffer(0x10000);
 const DEBUG = false;
 
 if (!isSimdAvailable() || typeof SIMD === 'undefined') {
     DEBUG && print("won't run tests as simd extensions aren't activated yet");
     quit(0);
 }
 
 const I32 = 'var i4 = glob.SIMD.int32x4;'
+const CI32 = 'var ci4 = i4.check;'
 const I32A = 'var i4a = i4.add;'
 const I32S = 'var i4s = i4.sub;'
 const I32M = 'var i4m = i4.mul;'
 const F32 = 'var f4 = glob.SIMD.float32x4;'
+const CF32 = 'var cf4 = f4.check;'
 const F32A = 'var f4a = f4.add;'
 const F32S = 'var f4s = f4.sub;'
 const F32M = 'var f4m = f4.mul;'
 const F32D = 'var f4d = f4.div;'
 const FROUND = 'var f32=glob.Math.fround;'
 
 const INT32_MAX = Math.pow(2, 31) - 1;
 const INT32_MIN = INT32_MAX + 1 | 0;
@@ -32,25 +34,25 @@ function assertEqX4(real, expected, asse
     assertFunc(real.x, expected[0]);
     assertFunc(real.y, expected[1]);
     assertFunc(real.z, expected[2]);
     assertFunc(real.w, expected[3]);
 }
 
 function CheckI4(header, code, expected) {
     // code needs to contain a local called x
-    header = USE_ASM + I32 + F32 + header;
-    var observed = asmLink(asmCompile('glob', header + ';function f() {' + code + ';return i4(x)} return f'), this)();
+    header = USE_ASM + I32 + CI32 + F32 + header;
+    var observed = asmLink(asmCompile('glob', header + ';function f() {' + code + ';return ci4(x)} return f'), this)();
     assertEqX4(observed, expected);
 }
 
 function CheckF4(header, code, expected) {
     // code needs to contain a local called x
-    header = USE_ASM + F32 + header;
-    var observed = asmLink(asmCompile('glob', header + ';function f() {' + code + ';return f4(x)} return f'), this)();
+    header = USE_ASM + F32 + CF32 + header;
+    var observed = asmLink(asmCompile('glob', header + ';function f() {' + code + ';return cf4(x)} return f'), this)();
     assertEqX4(observed, expected.map(Math.fround));
 }
 
 try {
 
 // 1. Constructors
 
 // 1.1 Compilation
@@ -114,37 +116,37 @@ assertAsmTypeFail('glob', USE_ASM + I32 
 assertAsmTypeFail('glob', USE_ASM + I32 + "function f(i) {i=i|0; var z=0; return i * i4(1,2,3,4) | 0;} return f");
 assertAsmTypeFail('glob', USE_ASM + I32 + "function f(i) {var x=i4(1,2,3,i4(4,5,6,7))} return f");
 assertAsmTypeFail('glob', USE_ASM + I32 + F32 + "function f(i) {var x=i4(1,2,3,f4(4,5,6,7))} return f");
 assertAsmTypeFail('glob', USE_ASM + I32 + F32 + "function f(i) {var x=f4(1,2,3,i4(4,5,6,7))} return f");
 
 assertAsmTypeFail('glob', USE_ASM + I32 + "function f() {return +i4(1,2,3,4)} return f");
 assertAsmTypeFail('glob', USE_ASM + I32 + "function f() {return i4(1,2,3,4)|0} return f");
 assertAsmTypeFail('glob', USE_ASM + I32 + FROUND + "function f() {return f32(i4(1,2,3,4))} return f");
-assertAsmTypeFail('glob', USE_ASM + I32 + F32 + "function f() {return f4(i4(1,2,3,4))} return f");
+assertAsmTypeFail('glob', USE_ASM + I32 + F32 + CF32 + "function f() {return cf4(i4(1,2,3,4))} return f");
 
 assertAsmTypeFail('glob', USE_ASM + F32 + "function f() {return +f4(1,2,3,4)} return f");
 assertAsmTypeFail('glob', USE_ASM + F32 + "function f() {return f4(1,2,3,4)|0} return f");
 assertAsmTypeFail('glob', USE_ASM + F32 + FROUND + "function f() {return f32(f4(1,2,3,4))} return f");
-assertAsmTypeFail('glob', USE_ASM + I32 + F32 + "function f() {return i4(f4(1,2,3,4))} return f");
+assertAsmTypeFail('glob', USE_ASM + I32 + CI32 + F32 + "function f() {return ci4(f4(1,2,3,4))} return f");
 
 assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + "function f() {return i4(1,2,3,4);} return f"), this)(), [1, 2, 3, 4]);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + "function f() {return i4(i4(1,2,3,4));} return f"), this)(), [1, 2, 3, 4]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + CI32 + "function f() {return ci4(i4(1,2,3,4));} return f"), this)(), [1, 2, 3, 4]);
 assertEqX4(asmLink(asmCompile('glob', USE_ASM + F32 + "function f() {return f4(1,2,3,4);} return f"), this)(), [1, 2, 3, 4]);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + F32 + "function f() {return f4(f4(1,2,3,4));} return f"), this)(), [1, 2, 3, 4]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + F32 + CF32 + "function f() {return cf4(f4(1,2,3,4));} return f"), this)(), [1, 2, 3, 4]);
 
 assertEq(asmLink(asmCompile('glob', USE_ASM + I32 + "function f() {i4(1,2,3,4);} return f"), this)(), undefined);
 assertEq(asmLink(asmCompile('glob', USE_ASM + F32 + "function f() {f4(1,2,3,4);} return f"), this)(), undefined);
 
 // Int32x4 ctor should accept int?
-assertEqX4(asmLink(asmCompile('glob', 'ffi', 'heap', USE_ASM + I32 + "var i32=new glob.Int32Array(heap); function f(i) {i=i|0; return i4(i4(i32[i>>2], 2, 3, 4))} return f"), this, {}, new ArrayBuffer(0x10000))(0x20000), [0, 2, 3, 4]);
+assertEqX4(asmLink(asmCompile('glob', 'ffi', 'heap', USE_ASM + I32 + CI32 + "var i32=new glob.Int32Array(heap); function f(i) {i=i|0; return ci4(i4(i32[i>>2], 2, 3, 4))} return f"), this, {}, new ArrayBuffer(0x10000))(0x20000), [0, 2, 3, 4]);
 // Float32x4 ctor should accept floatish (i.e. float || float? || floatish) and doublit
-assertEqX4(asmLink(asmCompile('glob', 'ffi', 'heap', USE_ASM + F32 + FROUND + "var h=new glob.Float32Array(heap); function f(i) {i=i|0; return f4(f4(h[i>>2], f32(2), f32(3), f32(4)))} return f"), this, {}, new ArrayBuffer(0x10000))(0x20000), [NaN, 2, 3, 4]);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + F32 + FROUND + "function f(i) {i=i|0; return f4(f4(f32(1) + f32(2), f32(2), f32(3), f32(4)))} return f"), this, {}, new ArrayBuffer(0x10000))(0x20000), [3, 2, 3, 4]);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + F32 + FROUND + "function f(i) {i=i|0; return f4(f4(f32(1) + f32(2), 2.0, 3.0, 4.0))} return f"), this, {}, new ArrayBuffer(0x10000))(0x20000), [3, 2, 3, 4]);
+assertEqX4(asmLink(asmCompile('glob', 'ffi', 'heap', USE_ASM + F32 + CF32 + FROUND + "var h=new glob.Float32Array(heap); function f(i) {i=i|0; return cf4(f4(h[i>>2], f32(2), f32(3), f32(4)))} return f"), this, {}, new ArrayBuffer(0x10000))(0x20000), [NaN, 2, 3, 4]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + F32 + CF32 + FROUND + "function f(i) {i=i|0; return cf4(f4(f32(1) + f32(2), f32(2), f32(3), f32(4)))} return f"), this, {}, new ArrayBuffer(0x10000))(0x20000), [3, 2, 3, 4]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + F32 + CF32 + FROUND + "function f(i) {i=i|0; return cf4(f4(f32(1) + f32(2), 2.0, 3.0, 4.0))} return f"), this, {}, new ArrayBuffer(0x10000))(0x20000), [3, 2, 3, 4]);
 
 // 1.3.2 Reading values out of lanes
 assertAsmTypeFail('glob', USE_ASM + "function f() {var x=1; return x.y | 0;} return f");
 assertAsmTypeFail('glob', USE_ASM + "function f() {var x=1; return (x + x).y | 0;} return f");
 assertAsmTypeFail('glob', USE_ASM + "function f() {var x=1.; return x.y | 0;} return f");
 assertAsmTypeFail('glob', USE_ASM + "var f32=glob.Math.fround;" + I32 + "function f() {var x=f32(1); return x.y | 0;} return f");
 
 assertAsmTypeFail('glob', USE_ASM + I32 + "function f() {var x=i4(1,2,3,4); return x.length|0;} return f");
@@ -235,104 +237,94 @@ CheckF4(FROUND, 'var x=f4(1,2,3,4); var 
 // Uses in ternary conditionals
 assertAsmTypeFail('glob', USE_ASM + F32 + "function f() {var x=f4(1,2,3,4); var c=4; c=x?c:c;} return f");
 assertAsmTypeFail('glob', USE_ASM + F32 + "function f() {var x=f4(1,2,3,4); var c=4; x=1?x:c;} return f");
 assertAsmTypeFail('glob', USE_ASM + F32 + "function f() {var x=f4(1,2,3,4); var c=4; x=1?c:x;} return f");
 assertAsmTypeFail('glob', USE_ASM + F32 + I32 + "function f() {var x=f4(1,2,3,4); var y=i4(1,2,3,4); x=1?x:y;} return f");
 assertAsmTypeFail('glob', USE_ASM + F32 + I32 + "function f() {var x=f4(1,2,3,4); var y=i4(1,2,3,4); x=1?y:y;} return f");
 
 CheckF4('', 'var x=f4(1,2,3,4); var y=f4(4,3,2,1); x=3?y:x', [4, 3, 2, 1]);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + F32 + "function f(x) {x=x|0; var v=f4(1,2,3,4); var w=f4(5,6,7,8); return f4(x?w:v);} return f"), this)(1), [5,6,7,8]);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + F32 + "function f(v) {v=f4(v); var w=f4(5,6,7,8); return f4(4?w:v);} return f"), this)(SIMD.float32x4(1,2,3,4)), [5,6,7,8]);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + F32 + "function f(v, x) {v=f4(v); x=x|0; var w=f4(5,6,7,8); return f4(x?w:v);} return f"), this)(SIMD.float32x4(1,2,3,4), 0), [1,2,3,4]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + F32 + CF32 + "function f(x) {x=x|0; var v=f4(1,2,3,4); var w=f4(5,6,7,8); return cf4(x?w:v);} return f"), this)(1), [5,6,7,8]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + F32 + CF32 + "function f(v) {v=cf4(v); var w=f4(5,6,7,8); return cf4(4?w:v);} return f"), this)(SIMD.float32x4(1,2,3,4)), [5,6,7,8]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + F32 + CF32 + "function f(v, x) {v=cf4(v); x=x|0; var w=f4(5,6,7,8); return cf4(x?w:v);} return f"), this)(SIMD.float32x4(1,2,3,4), 0), [1,2,3,4]);
 
 CheckI4('', 'var x=i4(1,2,3,4); var y=i4(4,3,2,1); x=(x.x|0)?y:x', [4, 3, 2, 1]);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + "function f(x) {x=x|0; var v=i4(1,2,3,4); var w=i4(5,6,7,8); return i4(x?w:v);} return f"), this)(1), [5,6,7,8]);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + "function f(v) {v=i4(v); var w=i4(5,6,7,8); return i4(4?w:v);} return f"), this)(SIMD.int32x4(1,2,3,4)), [5,6,7,8]);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + "function f(v, x) {v=i4(v); x=x|0; var w=i4(5,6,7,8); return i4(x?w:v);} return f"), this)(SIMD.int32x4(1,2,3,4), 0), [1,2,3,4]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + CI32 + "function f(x) {x=x|0; var v=i4(1,2,3,4); var w=i4(5,6,7,8); return ci4(x?w:v);} return f"), this)(1), [5,6,7,8]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + CI32 + "function f(v) {v=ci4(v); var w=i4(5,6,7,8); return ci4(4?w:v);} return f"), this)(SIMD.int32x4(1,2,3,4)), [5,6,7,8]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + CI32 + "function f(v, x) {v=ci4(v); x=x|0; var w=i4(5,6,7,8); return ci4(x?w:v);} return f"), this)(SIMD.int32x4(1,2,3,4), 0), [1,2,3,4]);
 
 // 1.3.4 Return values
-assertAsmTypeFail('glob', USE_ASM + I32 + "function f() {var x=1; return i4(x)} return f");
-assertAsmTypeFail('glob', USE_ASM + I32 + "function f() {var x=1; return i4(x + x)} return f");
-assertAsmTypeFail('glob', USE_ASM + I32 + "function f() {var x=1.; return i4(x)} return f");
-assertAsmTypeFail('glob', USE_ASM + I32 + FROUND + "function f() {var x=f32(1.); return i4(x)} return f");
+assertAsmTypeFail('glob', USE_ASM + I32 + CI32 + "function f() {var x=1; return ci4(x)} return f");
+assertAsmTypeFail('glob', USE_ASM + I32 + CI32 + "function f() {var x=1; return ci4(x + x)} return f");
+assertAsmTypeFail('glob', USE_ASM + I32 + CI32 + "function f() {var x=1.; return ci4(x)} return f");
+assertAsmTypeFail('glob', USE_ASM + I32 + CI32 + FROUND + "function f() {var x=f32(1.); return ci4(x)} return f");
 
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + "function f() {var x=i4(1,2,3,4); return i4(x)} return f"), this)(), [1,2,3,4]);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + F32 + "function f() {var x=f4(1,2,3,4); return f4(x)} return f"), this)(), [1,2,3,4]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + CI32 + "function f() {var x=i4(1,2,3,4); return ci4(x)} return f"), this)(), [1,2,3,4]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + F32 + CF32 + "function f() {var x=f4(1,2,3,4); return cf4(x)} return f"), this)(), [1,2,3,4]);
 
 // 1.3.5 Coerce and pass arguments
 // Via check
-const CHECK_I32 = 'var c=i4.check;';
-
-assertAsmTypeFail('glob', USE_ASM + I32 + CHECK_I32 + "function f() {c();} return f");
-assertAsmTypeFail('glob', USE_ASM + I32 + CHECK_I32 + "function f(x) {x=i4(x); c(x, x);} return f");
-assertAsmTypeFail('glob', USE_ASM + I32 + CHECK_I32 + "function f() {c(1);} return f");
-assertAsmTypeFail('glob', USE_ASM + I32 + CHECK_I32 + "function f() {c(1.);} return f");
-assertAsmTypeFail('glob', USE_ASM + I32 + CHECK_I32 + FROUND + "function f() {c(f32(1.));} return f");
-assertAsmTypeFail('glob', USE_ASM + I32 + CHECK_I32 + F32 + "function f(x) {x=f4(x); c(x);} return f");
-assertAsmTypeFail('glob', USE_ASM + I32 + CHECK_I32 + "function f(x) {x=i4(x); return 1 + c(x) | 0;} return f");
+assertAsmTypeFail('glob', USE_ASM + I32 + CI32 + "function f() {ci4();} return f");
+assertAsmTypeFail('glob', USE_ASM + I32 + CI32 + "function f(x) {x=ci4(x); ci4(x, x);} return f");
+assertAsmTypeFail('glob', USE_ASM + I32 + CI32 + "function f() {ci4(1);} return f");
+assertAsmTypeFail('glob', USE_ASM + I32 + CI32 + "function f() {ci4(1.);} return f");
+assertAsmTypeFail('glob', USE_ASM + I32 + CI32 + FROUND + "function f() {ci4(f32(1.));} return f");
+assertAsmTypeFail('glob', USE_ASM + I32 + CI32 + F32 + CF32 + "function f(x) {x=cf4(x); ci4(x);} return f");
+assertAsmTypeFail('glob', USE_ASM + I32 + CI32 + "function f(x) {x=ci4(x); return 1 + ci4(x) | 0;} return f");
 
 var i32x4 = SIMD.int32x4(1, 3, 3, 7);
-assertEq(asmLink(asmCompile('glob', USE_ASM + I32 + CHECK_I32 + "function f(x) {x=c(x)} return f"), this)(i32x4), undefined);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + CHECK_I32 + "function f(x) {x=i4(x); return c(x);} return f"), this)(i32x4), [1,3,3,7]);
-
-const CHECK_F32 = 'var c=f4.check;';
+assertEq(asmLink(asmCompile('glob', USE_ASM + I32 + CI32 + "function f(x) {x=ci4(x)} return f"), this)(i32x4), undefined);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + CI32 + "function f(x) {x=ci4(x); return ci4(x);} return f"), this)(i32x4), [1,3,3,7]);
 
-assertAsmTypeFail('glob', USE_ASM + F32 + CHECK_F32 + "function f() {c();} return f");
-assertAsmTypeFail('glob', USE_ASM + F32 + CHECK_F32 + "function f(x) {x=f4(x); c(x, x);} return f");
-assertAsmTypeFail('glob', USE_ASM + F32 + CHECK_F32 + "function f() {c(1);} return f");
-assertAsmTypeFail('glob', USE_ASM + F32 + CHECK_F32 + "function f() {c(1.);} return f");
-assertAsmTypeFail('glob', USE_ASM + F32 + CHECK_F32 + FROUND + "function f() {c(f32(1.));} return f");
-assertAsmTypeFail('glob', USE_ASM + F32 + CHECK_F32 + I32 + "function f(x) {x=i4(x); c(x);} return f");
-assertAsmTypeFail('glob', USE_ASM + F32 + CHECK_F32 + "function f(x) {x=f4(x); return 1 + c(x) | 0;} return f");
+assertAsmTypeFail('glob', USE_ASM + F32 + CF32 + "function f() {cf4();} return f");
+assertAsmTypeFail('glob', USE_ASM + F32 + CF32 + "function f(x) {x=cf4(x); cf4(x, x);} return f");
+assertAsmTypeFail('glob', USE_ASM + F32 + CF32 + "function f() {cf4(1);} return f");
+assertAsmTypeFail('glob', USE_ASM + F32 + CF32 + "function f() {cf4(1.);} return f");
+assertAsmTypeFail('glob', USE_ASM + F32 + CF32 + FROUND + "function f() {cf4(f32(1.));} return f");
+assertAsmTypeFail('glob', USE_ASM + F32 + CF32 + F32 + CF32 + "function f(x) {x=cf4(x); cf4(x);} return f");
+assertAsmTypeFail('glob', USE_ASM + F32 + CF32 + "function f(x) {x=cf4(x); return 1 + cf4(x) | 0;} return f");
 
 var f32x4 = SIMD.float32x4(13.37, 42.42, -0, NaN);
-assertEq(asmLink(asmCompile('glob', USE_ASM + F32 + CHECK_F32 + "function f(x) {x=c(x)} return f"), this)(f32x4), undefined);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + F32 + CHECK_F32 + "function f(x) {x=c(x); return c(x);} return f"), this)(f32x4),
-           [Math.fround(13.37), Math.fround(42.42), -0, NaN]);
+assertEq(asmLink(asmCompile('glob', USE_ASM + F32 + CF32 + "function f(x) {x=cf4(x)} return f"), this)(f32x4), undefined);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + F32 + CF32 + "function f(x) {x=cf4(x); return cf4(x);} return f"), this)(f32x4), [13.37, 42.42, -0, NaN].map(Math.fround));
 
 // Legacy coercions
 assertAsmTypeFail('glob', USE_ASM + I32 + "function f(x) {x=i4();} return f");
+assertAsmTypeFail('glob', USE_ASM + I32 + "function f(x) {x=i4(x);} return f");
 assertAsmTypeFail('glob', USE_ASM + I32 + "function f(x) {x=i4(1,2,3,4);} return f");
 assertAsmTypeFail('glob', USE_ASM + I32 + "function f(x,y) {x=i4(y);y=+y} return f");
+assertAsmTypeFail('glob', USE_ASM + I32 + CI32 + "function f(x) {x=ci4(x); return i4(x);} return f");
 
 assertAsmTypeFail('glob', USE_ASM + I32 + "function f(x) {return +i4(1,2,3,4)} return f");
 assertAsmTypeFail('glob', USE_ASM + I32 + "function f(x) {return 0|i4(1,2,3,4)} return f");
 assertAsmTypeFail('glob', USE_ASM + I32 + FROUND + "function f(x) {return f32(i4(1,2,3,4))} return f");
 assertAsmTypeFail('glob', USE_ASM + I32 + F32 + "function f(x) {return f4(i4(1,2,3,4))} return f");
-
-var i32x4 = SIMD.int32x4(1, 3, 3, 7);
-assertEq(asmLink(asmCompile('glob', USE_ASM + I32 + "function f(x) {x=i4(x)} return f"), this)(i32x4), undefined);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + "function f(x) {x=i4(x); return i4(x);} return f"), this)(i32x4), [1,3,3,7]);
+assertAsmTypeFail('glob', USE_ASM + F32 + CF32 + "function f(x) {x=cf4(x); return f4(x);} return f");
 
-var f32x4 = SIMD.float32x4(13.37, 42.42, -0, NaN);
-assertEq(asmLink(asmCompile('glob', USE_ASM + F32 + "function f(x) {x=f4(x)} return f"), this)(f32x4), undefined);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + F32 + "function f(x) {x=f4(x); return f4(x);} return f"), this)(f32x4),
-           [Math.fround(13.37), Math.fround(42.42), -0, NaN]);
 
 function assertCaught(f) {
     var caught = false;
     try {
         f.apply(null, Array.prototype.slice.call(arguments, 1));
     } catch (e) {
         DEBUG && print('Assert caught: ', e, '\n', e.stack);
         assertEq(e instanceof TypeError, true);
         caught = true;
     }
     assertEq(caught, true);
 }
 
-var f = asmLink(asmCompile('glob', USE_ASM + F32 + "function f(x) {x=f4(x); return f4(x);} return f"), this);
+var f = asmLink(asmCompile('glob', USE_ASM + F32 + CF32 + "function f(x) {x=cf4(x); return cf4(x);} return f"), this);
 assertCaught(f);
 assertCaught(f, 1);
 assertCaught(f, {});
 assertCaught(f, "I sincerely am a SIMD typed object.");
 assertCaught(f, SIMD.int32x4(1,2,3,4));
 
-var f = asmLink(asmCompile('glob', USE_ASM + I32 + "function f(x) {x=i4(x); return i4(x);} return f"), this);
+var f = asmLink(asmCompile('glob', USE_ASM + I32 + CI32 + "function f(x) {x=ci4(x); return ci4(x);} return f"), this);
 assertCaught(f);
 assertCaught(f, 1);
 assertCaught(f, {});
 assertCaught(f, "I sincerely am a SIMD typed object.");
 assertCaught(f, SIMD.float32x4(4,3,2,1));
 
 // 1.3.6 Globals
 // 1.3.6.1 Local globals
@@ -340,18 +332,18 @@ assertCaught(f, SIMD.float32x4(4,3,2,1))
 assertAsmTypeFail('glob', USE_ASM + I32 + "var g=i4(1,2,3,4); function f() {var x=4; x=g|0;} return f");
 assertAsmTypeFail('glob', USE_ASM + I32 + "var g=i4(1,2,3,4); function f() {var x=4.; x=+g;} return f");
 assertAsmTypeFail('glob', USE_ASM + I32 + "var g=i4(1,2,3,4); var f32=glob.Math.fround; function f() {var x=f32(4.); x=f32(g);} return f");
 
 assertAsmTypeFail('glob', USE_ASM + F32 + "var g=f4(1., 2., 3., 4.); function f() {var x=4; x=g|0;} return f");
 assertAsmTypeFail('glob', USE_ASM + F32 + "var g=f4(1., 2., 3., 4.); function f() {var x=4.; x=+g;} return f");
 assertAsmTypeFail('glob', USE_ASM + F32 + "var g=f4(1., 2., 3., 4.); var f32=glob.Math.fround; function f() {var x=f32(4.); x=f32(g);} return f");
 
-assertAsmTypeFail('glob', USE_ASM + F32 + I32 + "var g=f4(1., 2., 3., 4.); function f() {var x=i4(1,2,3,4); x=i4(g);} return f");
-assertAsmTypeFail('glob', USE_ASM + I32 + F32 + "var g=i4(1,2,3,4); function f() {var x=f4(1.,2.,3.,4.); x=f4(g);} return f");
+assertAsmTypeFail('glob', USE_ASM + F32 + I32 + CI32 + "var g=f4(1., 2., 3., 4.); function f() {var x=i4(1,2,3,4); x=ci4(g);} return f");
+assertAsmTypeFail('glob', USE_ASM + I32 + F32 + CF32 + "var g=i4(1,2,3,4); function f() {var x=f4(1.,2.,3.,4.); x=cf4(g);} return f");
 
 assertAsmTypeFail('glob', USE_ASM + I32 + "var g=0; function f() {var x=i4(1,2,3,4); x=g|0;} return f");
 assertAsmTypeFail('glob', USE_ASM + I32 + "var g=0.; function f() {var x=i4(1,2,3,4); x=+g;} return f");
 assertAsmTypeFail('glob', USE_ASM + I32 + "var f32=glob.Math.fround; var g=f32(0.); function f() {var x=i4(1,2,3,4); x=f32(g);} return f");
 
 assertAsmTypeFail('glob', USE_ASM + F32 + "var g=0; function f() {var x=f4(0.,0.,0.,0.); x=g|0;} return f");
 assertAsmTypeFail('glob', USE_ASM + F32 + "var g=0.; function f() {var x=f4(0.,0.,0.,0.); x=+g;} return f");
 assertAsmTypeFail('glob', USE_ASM + F32 + "var f32=glob.Math.fround; var g=f32(0.); function f() {var x=f4(0.,0.,0.,0.); x=f32(g);} return f");
@@ -367,55 +359,55 @@ CheckF4('var x=f4(1,2,3,4)', '', [1, 2, 
 assertAsmTypeFail('glob', USE_ASM + I32 + "var g=i4(1,2,3,4); function f() {var x=4; g=x|0;} return f");
 assertAsmTypeFail('glob', USE_ASM + I32 + "var g=i4(1,2,3,4); function f() {var x=4.; g=+x;} return f");
 assertAsmTypeFail('glob', USE_ASM + I32 + "var g=i4(1,2,3,4); var f32=glob.Math.fround; function f() {var x=f32(4.); g=f32(x);} return f");
 
 assertAsmTypeFail('glob', USE_ASM + F32 + "var g=f4(1., 2., 3., 4.); function f() {var x=4; g=x|0;} return f");
 assertAsmTypeFail('glob', USE_ASM + F32 + "var g=f4(1., 2., 3., 4.); function f() {var x=4.; g=+x;} return f");
 assertAsmTypeFail('glob', USE_ASM + F32 + "var g=f4(1., 2., 3., 4.); var f32=glob.Math.fround; function f() {var x=f32(4.); g=f32(x);} return f");
 
-assertAsmTypeFail('glob', USE_ASM + F32 + I32 + "var g=f4(1., 2., 3., 4.); function f() {var x=i4(1,2,3,4); g=i4(x);} return f");
-assertAsmTypeFail('glob', USE_ASM + F32 + I32 + "var g=f4(1., 2., 3., 4.); function f() {var x=i4(1,2,3,4); g=f4(x);} return f");
-assertAsmTypeFail('glob', USE_ASM + I32 + F32 + "var g=i4(1,2,3,4); function f() {var x=f4(1.,2.,3.,4.); g=f4(x);} return f");
-assertAsmTypeFail('glob', USE_ASM + I32 + F32 + "var g=i4(1,2,3,4); function f() {var x=f4(1.,2.,3.,4.); g=i4(x);} return f");
+assertAsmTypeFail('glob', USE_ASM + F32 + I32 + CI32 + "var g=f4(1., 2., 3., 4.); function f() {var x=i4(1,2,3,4); g=ci4(x);} return f");
+assertAsmTypeFail('glob', USE_ASM + F32 + I32 + CF32 + "var g=f4(1., 2., 3., 4.); function f() {var x=i4(1,2,3,4); g=cf4(x);} return f");
+assertAsmTypeFail('glob', USE_ASM + I32 + F32 + CF32 + "var g=i4(1,2,3,4); function f() {var x=f4(1.,2.,3.,4.); g=cf4(x);} return f");
+assertAsmTypeFail('glob', USE_ASM + I32 + F32 + CI32 + "var g=i4(1,2,3,4); function f() {var x=f4(1.,2.,3.,4.); g=ci4(x);} return f");
 
 CheckI4('var x=i4(0,0,0,0);', 'x=i4(1,2,3,4)', [1,2,3,4]);
 CheckF4('var x=f4(0.,0.,0.,0.);', 'x=f4(5.,3.,4.,2.)', [5,3,4,2]);
 
 CheckI4('var x=i4(0,0,0,0); var y=42; var z=3.9; var w=13.37', 'x=i4(1,2,3,4); y=24; z=4.9; w=23.10;', [1,2,3,4]);
 CheckF4('var x=f4(0,0,0,0); var y=42; var z=3.9; var w=13.37', 'x=f4(1,2,3,4); y=24; z=4.9; w=23.10;', [1,2,3,4]);
 
 // 1.3.6.2 Imported globals
 // Read
-var int32x4 = asmLink(asmCompile('glob', 'ffi', USE_ASM + I32 + "var g=i4(ffi.g); function f() {return i4(g)} return f"), this, {g: SIMD.int32x4(1,2,3,4)})();
+var int32x4 = asmLink(asmCompile('glob', 'ffi', USE_ASM + I32 + CI32 + "var g=ci4(ffi.g); function f() {return ci4(g)} return f"), this, {g: SIMD.int32x4(1,2,3,4)})();
 assertEq(int32x4.x, 1);
 assertEq(int32x4.y, 2);
 assertEq(int32x4.z, 3);
 assertEq(int32x4.w, 4);
 
 for (var v of [1, {}, "totally legit SIMD variable", SIMD.float32x4(1,2,3,4)])
-    assertCaught(asmCompile('glob', 'ffi', USE_ASM + I32 + "var g=i4(ffi.g); function f() {return i4(g)} return f"), this, {g: v});
+    assertCaught(asmCompile('glob', 'ffi', USE_ASM + I32 + CI32 + "var g=ci4(ffi.g); function f() {return ci4(g)} return f"), this, {g: v});
 
-var float32x4 = asmLink(asmCompile('glob', 'ffi', USE_ASM + F32 + "var g=f4(ffi.g); function f() {return f4(g)} return f"), this, {g: SIMD.float32x4(1,2,3,4)})();
+var float32x4 = asmLink(asmCompile('glob', 'ffi', USE_ASM + F32 + CF32 + "var g=cf4(ffi.g); function f() {return cf4(g)} return f"), this, {g: SIMD.float32x4(1,2,3,4)})();
 assertEq(float32x4.x, 1);
 assertEq(float32x4.y, 2);
 assertEq(float32x4.z, 3);
 assertEq(float32x4.w, 4);
 
 for (var v of [1, {}, "totally legit SIMD variable", SIMD.int32x4(1,2,3,4)])
-    assertCaught(asmCompile('glob', 'ffi', USE_ASM + F32 + "var g=f4(ffi.g); function f() {return f4(g)} return f"), this, {g: v});
+    assertCaught(asmCompile('glob', 'ffi', USE_ASM + F32 + CF32 + "var g=cf4(ffi.g); function f() {return cf4(g)} return f"), this, {g: v});
 
 // Write
-var int32x4 = asmLink(asmCompile('glob', 'ffi', USE_ASM + I32 + "var g=i4(ffi.g); function f() {g=i4(4,5,6,7); return i4(g)} return f"), this, {g: SIMD.int32x4(1,2,3,4)})();
+var int32x4 = asmLink(asmCompile('glob', 'ffi', USE_ASM + I32 + CI32 + "var g=ci4(ffi.g); function f() {g=i4(4,5,6,7); return ci4(g)} return f"), this, {g: SIMD.int32x4(1,2,3,4)})();
 assertEq(int32x4.x, 4);
 assertEq(int32x4.y, 5);
 assertEq(int32x4.z, 6);
 assertEq(int32x4.w, 7);
 
-var float32x4 = asmLink(asmCompile('glob', 'ffi', USE_ASM + F32 + "var g=f4(ffi.g); function f() {g=f4(4.,5.,6.,7.); return f4(g)} return f"), this, {g: SIMD.float32x4(1,2,3,4)})();
+var float32x4 = asmLink(asmCompile('glob', 'ffi', USE_ASM + F32 + CF32 + "var g=cf4(ffi.g); function f() {g=f4(4.,5.,6.,7.); return cf4(g)} return f"), this, {g: SIMD.float32x4(1,2,3,4)})();
 assertEq(float32x4.x, 4);
 assertEq(float32x4.y, 5);
 assertEq(float32x4.z, 6);
 assertEq(float32x4.w, 7);
 
 // 2. SIMD operations
 // 2.1 Compilation
 assertAsmTypeFail('glob', USE_ASM + "var add = int32x4.add; return {}");
@@ -453,41 +445,41 @@ assertAsmTypeFail('glob', USE_ASM + I32 
 assertAsmTypeFail('glob', USE_ASM + I32 + I32A + "function f() {var x=i4(0,0,0,0); var y=4; y=i4a(x, x);} return f");
 assertAsmTypeFail('glob', USE_ASM + I32 + F32 + I32A + "function f() {var x=i4(0,0,0,0); var y=f4(4,3,2,1); x=i4a(x, y);} return f");
 assertAsmTypeFail('glob', USE_ASM + I32 + F32 + I32A + "function f() {var x=i4(0,0,0,0); var y=f4(4,3,2,1); y=i4a(x, y);} return f");
 assertAsmTypeFail('glob', USE_ASM + I32 + F32 + I32A + "function f() {var x=i4(0,0,0,0); var y=f4(4,3,2,1); y=i4a(x, x);} return f");
 assertAsmTypeFail('glob', USE_ASM + I32 + F32 + F32A + "function f() {var x=i4(0,0,0,0); var y=f4(4,3,2,1); y=f4a(x, x);} return f");
 assertAsmTypeFail('glob', USE_ASM + I32 + F32 + F32A + "function f() {var x=i4(0,0,0,0); var y=f4(4,3,2,1); y=f4a(x, y);} return f");
 assertAsmTypeFail('glob', USE_ASM + I32 + F32 + F32A + "function f() {var x=i4(0,0,0,0); var y=f4(4,3,2,1); x=f4a(y, y);} return f");
 
-assertAsmTypeFail('glob', USE_ASM + I32 + I32A + 'function f() {var x=i4(1,2,3,4); var y=0; y=i4(x,x)|0} return f');
-assertAsmTypeFail('glob', USE_ASM + I32 + I32A + 'function f() {var x=i4(1,2,3,4); var y=0.; y=+i4(x,x)} return f');
+assertAsmTypeFail('glob', USE_ASM + I32 + I32A + 'function f() {var x=i4(1,2,3,4); var y=0; y=i4a(x,x)|0} return f');
+assertAsmTypeFail('glob', USE_ASM + I32 + I32A + 'function f() {var x=i4(1,2,3,4); var y=0.; y=+i4a(x,x)} return f');
 
 CheckI4(I32A, 'var z=i4(1,2,3,4); var y=i4(0,1,0,3); var x=i4(0,0,0,0); x=i4a(z,y)', [1,3,3,7]);
 CheckI4(I32A, 'var x=i4(2,3,4,5); var y=i4(0,1,0,3); x=i4a(x,y)', [2,4,4,8]);
 CheckI4(I32A, 'var x=i4(1,2,3,4); x=i4a(x,x)', [2,4,6,8]);
 CheckI4(I32A, 'var x=i4(' + INT32_MAX + ',2,3,4); var y=i4(1,1,0,3); x=i4a(x,y)', [INT32_MIN,3,3,7]);
-CheckI4(I32A, 'var x=i4(' + INT32_MAX + ',2,3,4); var y=i4(1,1,0,3); x=i4(i4a(x,y))', [INT32_MIN,3,3,7]);
+CheckI4(I32A, 'var x=i4(' + INT32_MAX + ',2,3,4); var y=i4(1,1,0,3); x=ci4(i4a(x,y))', [INT32_MIN,3,3,7]);
 
 CheckF4(F32A, 'var x=f4(1,2,3,4); x=f4a(x,x)', [2,4,6,8]);
 CheckF4(F32A, 'var x=f4(1,2,3,4); var y=f4(4,3,5,2); x=f4a(x,y)', [5,5,8,6]);
 CheckF4(F32A, 'var x=f4(13.37,2,3,4); var y=f4(4,3,5,2); x=f4a(x,y)', [Math.fround(13.37) + 4,5,8,6]);
-CheckF4(F32A, 'var x=f4(13.37,2,3,4); var y=f4(4,3,5,2); x=f4(f4a(x,y))', [Math.fround(13.37) + 4,5,8,6]);
+CheckF4(F32A, 'var x=f4(13.37,2,3,4); var y=f4(4,3,5,2); x=cf4(f4a(x,y))', [Math.fround(13.37) + 4,5,8,6]);
 
 // 2.3.2. Subtracts
 CheckI4(I32S, 'var x=i4(1,2,3,4); var y=i4(-1,1,0,2); x=i4s(x,y)', [2,1,3,2]);
 CheckI4(I32S, 'var x=i4(5,4,3,2); var y=i4(1,2,3,4); x=i4s(x,y)', [4,2,0,-2]);
 CheckI4(I32S, 'var x=i4(1,2,3,4); x=i4s(x,x)', [0,0,0,0]);
 CheckI4(I32S, 'var x=i4(' + INT32_MIN + ',2,3,4); var y=i4(1,1,0,3); x=i4s(x,y)', [INT32_MAX,1,3,1]);
-CheckI4(I32S, 'var x=i4(' + INT32_MIN + ',2,3,4); var y=i4(1,1,0,3); x=i4(i4s(x,y))', [INT32_MAX,1,3,1]);
+CheckI4(I32S, 'var x=i4(' + INT32_MIN + ',2,3,4); var y=i4(1,1,0,3); x=ci4(i4s(x,y))', [INT32_MAX,1,3,1]);
 
 CheckF4(F32S, 'var x=f4(1,2,3,4); x=f4s(x,x)', [0,0,0,0]);
 CheckF4(F32S, 'var x=f4(1,2,3,4); var y=f4(4,3,5,2); x=f4s(x,y)', [-3,-1,-2,2]);
 CheckF4(F32S, 'var x=f4(13.37,2,3,4); var y=f4(4,3,5,2); x=f4s(x,y)', [Math.fround(13.37) - 4,-1,-2,2]);
-CheckF4(F32S, 'var x=f4(13.37,2,3,4); var y=f4(4,3,5,2); x=f4(f4s(x,y))', [Math.fround(13.37) - 4,-1,-2,2]);
+CheckF4(F32S, 'var x=f4(13.37,2,3,4); var y=f4(4,3,5,2); x=cf4(f4s(x,y))', [Math.fround(13.37) - 4,-1,-2,2]);
 
 // 2.3.3. Multiplications / Divisions
 assertAsmTypeFail('glob', USE_ASM + I32 + "var f4d=i4.div; function f() {} return f");
 
 CheckI4(I32M, 'var x=i4(1,2,3,4); var y=i4(-1,1,0,2); x=i4m(x,y)', [-1,2,0,8]);
 CheckI4(I32M, 'var x=i4(5,4,3,2); var y=i4(1,2,3,4); x=i4m(x,y)', [5,8,9,8]);
 CheckI4(I32M, 'var x=i4(1,2,3,4); x=i4m(x,x)', [1,4,9,16]);
 (function() {
@@ -496,44 +488,44 @@ CheckI4(I32M, 'var x=i4(1,2,3,4); x=i4m(
             [imul(m, 2), imul(m, -3), imul(M, 4), imul(M, -5)]);
     CheckI4(I32M, `var x=i4(${m},${m}, ${M}, ${M}); var y=i4(${m}, ${M}, ${m}, ${M}); x=i4m(x,y)`,
             [imul(m, m), imul(m, M), imul(M, m), imul(M, M)]);
 })();
 
 CheckF4(F32M, 'var x=f4(1,2,3,4); x=f4m(x,x)', [1,4,9,16]);
 CheckF4(F32M, 'var x=f4(1,2,3,4); var y=f4(4,3,5,2); x=f4m(x,y)', [4,6,15,8]);
 CheckF4(F32M, 'var x=f4(13.37,2,3,4); var y=f4(4,3,5,2); x=f4m(x,y)', [Math.fround(13.37) * 4,6,15,8]);
-CheckF4(F32M, 'var x=f4(13.37,2,3,4); var y=f4(4,3,5,2); x=f4(f4m(x,y))', [Math.fround(13.37) * 4,6,15,8]);
+CheckF4(F32M, 'var x=f4(13.37,2,3,4); var y=f4(4,3,5,2); x=cf4(f4m(x,y))', [Math.fround(13.37) * 4,6,15,8]);
 
 var f32x4 = SIMD.float32x4(0, NaN, -0, NaN);
 var another = SIMD.float32x4(NaN, -1, -0, NaN);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + F32 + F32M + "function f(x, y) {x=f4(x); y=f4(y); x=f4m(x,y); return f4(x);} return f"), this)(f32x4, another), [NaN, NaN, 0, NaN]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + F32 + F32M + CF32 + "function f(x, y) {x=cf4(x); y=cf4(y); x=f4m(x,y); return cf4(x);} return f"), this)(f32x4, another), [NaN, NaN, 0, NaN]);
 
 CheckF4(F32D, 'var x=f4(1,2,3,4); x=f4d(x,x)', [1,1,1,1]);
 CheckF4(F32D, 'var x=f4(1,2,3,4); var y=f4(4,3,5,2); x=f4d(x,y)', [1/4,2/3,3/5,2]);
 CheckF4(F32D, 'var x=f4(13.37,1,1,4); var y=f4(4,0,-0.,2); x=f4d(x,y)', [Math.fround(13.37) / 4,+Infinity,-Infinity,2]);
 
 var f32x4 = SIMD.float32x4(0, 0, -0, NaN);
 var another = SIMD.float32x4(0, -0, 0, 0);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + F32 + F32D + "function f(x,y) {x=f4(x); y=f4(y); x=f4d(x,y); return f4(x);} return f"), this)(f32x4, another), [NaN, NaN, NaN, NaN]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + F32 + F32D + CF32 + "function f(x,y) {x=cf4(x); y=cf4(y); x=f4d(x,y); return cf4(x);} return f"), this)(f32x4, another), [NaN, NaN, NaN, NaN]);
 
 // Unary arithmetic operators
 function CheckUnaryF4(op, checkFunc, assertFunc) {
-    var _ = asmLink(asmCompile('glob', USE_ASM + F32 + 'var op=f4.' + op + '; function f(x){x=f4(x); return f4(op(x)); } return f'), this);
+    var _ = asmLink(asmCompile('glob', USE_ASM + F32 + CF32 + 'var op=f4.' + op + '; function f(x){x=cf4(x); return cf4(op(x)); } return f'), this);
     return function(input) {
         var simd = SIMD.float32x4(input[0], input[1], input[2], input[3]);
 
         var exp = input.map(Math.fround).map(checkFunc).map(Math.fround);
         var obs = _(simd);
         assertEqX4(obs, exp, assertFunc);
     }
 }
 
 function CheckUnaryI4(op, checkFunc) {
-    var _ = asmLink(asmCompile('glob', USE_ASM + I32 + 'var op=i4.' + op + '; function f(x){x=i4(x); return i4(op(x)); } return f'), this);
+    var _ = asmLink(asmCompile('glob', USE_ASM + I32 + CI32 + 'var op=i4.' + op + '; function f(x){x=ci4(x); return ci4(op(x)); } return f'), this);
     return function(input) {
         var simd = SIMD.int32x4(input[0], input[1], input[2], input[3]);
         assertEqX4(_(simd), input.map(checkFunc).map(function(x) { return x | 0}));
     }
 }
 
 CheckUnaryI4('neg', function(x) { return -x })([1, -2, INT32_MIN, INT32_MAX]);
 CheckUnaryI4('not', function(x) { return ~x })([1, -2, INT32_MIN, INT32_MAX]);
@@ -724,26 +716,26 @@ CheckI4(GEF32 + 'const nan = glob.NaN; c
 const CVTIF = 'var cvt=f4.fromInt32x4;';
 const CVTFI = 'var cvt=i4.fromFloat32x4;';
 
 assertAsmTypeFail('glob', USE_ASM + I32 + "var cvt=i4.fromInt32x4; return {}");
 assertAsmTypeFail('glob', USE_ASM + F32 + "var cvt=f4.fromFloat32x4; return {}");
 assertAsmTypeFail('glob', USE_ASM + I32 + F32 + CVTIF + "function f() {var x=i4(1,2,3,4); x=cvt(x);} return f");
 assertAsmTypeFail('glob', USE_ASM + I32 + F32 + CVTIF + "function f() {var x=f4(1,2,3,4); x=cvt(x);} return f");
 
-var f = asmLink(asmCompile('glob', USE_ASM + I32 + F32 + CVTIF + 'function f(x){x=i4(x); var y=f4(0,0,0,0); y=cvt(x); return f4(y);} return f'), this);
+var f = asmLink(asmCompile('glob', USE_ASM + I32 + F32 + CF32 + CI32 + CVTIF + 'function f(x){x=ci4(x); var y=f4(0,0,0,0); y=cvt(x); return cf4(y);} return f'), this);
 assertEqX4(f(SIMD.int32x4(1,2,3,4)), [1, 2, 3, 4]);
 assertEqX4(f(SIMD.int32x4(0,INT32_MIN,INT32_MAX,-1)), [0, Math.fround(INT32_MIN), Math.fround(INT32_MAX), -1]);
 
 // TODO amend tests once int32x4.fromFloat32x4 is fully specified, when float
 // values can't be converted into an int32 without overflowing.  In these
 // tests, we assume x86/x64, so a conversion which failed will return the
 // undefined int32 value. See also bug 1068028.
 const UNDEFINED_INT32 = 0x80000000 | 0;
-var f = asmLink(asmCompile('glob', USE_ASM + I32 + F32 + CVTFI + 'function f(x){x=f4(x); var y=i4(0,0,0,0); y=cvt(x); return i4(y);} return f'), this);
+var f = asmLink(asmCompile('glob', USE_ASM + I32 + CI32 + F32 + CF32 + CVTFI + 'function f(x){x=cf4(x); var y=i4(0,0,0,0); y=cvt(x); return ci4(y);} return f'), this);
 assertEqX4(f(SIMD.float32x4(1,2,3,4)), [1, 2, 3, 4]);
 assertEqX4(f(SIMD.float32x4(NaN,Infinity,-Infinity,-0)), [UNDEFINED_INT32, UNDEFINED_INT32, UNDEFINED_INT32, 0]);
 
 // Cast operators
 const CVTIFB = 'var cvt=f4.fromInt32x4Bits;';
 const CVTFIB = 'var cvt=i4.fromFloat32x4Bits;';
 
 var cast = (function() {
@@ -766,29 +758,29 @@ var cast = (function() {
     }
 })();
 
 assertAsmTypeFail('glob', USE_ASM + I32 + "var cvt=i4.fromInt32x4; return {}");
 assertAsmTypeFail('glob', USE_ASM + F32 + "var cvt=f4.fromFloat32x4; return {}");
 assertAsmTypeFail('glob', USE_ASM + I32 + F32 + CVTIFB + "function f() {var x=i4(1,2,3,4); x=cvt(x);} return f");
 assertAsmTypeFail('glob', USE_ASM + I32 + F32 + CVTIFB + "function f() {var x=f4(1,2,3,4); x=cvt(x);} return f");
 
-var f = asmLink(asmCompile('glob', USE_ASM + I32 + F32 + CVTIFB + 'function f(x){x=i4(x); var y=f4(0,0,0,0); y=cvt(x); return f4(y);} return f'), this);
+var f = asmLink(asmCompile('glob', USE_ASM + I32 + F32 + CVTIFB + CF32 + CI32 + 'function f(x){x=ci4(x); var y=f4(0,0,0,0); y=cvt(x); return cf4(y);} return f'), this);
 assertEqX4(f(SIMD.int32x4(1,2,3,4)), [1, 2, 3, 4].map(cast.fromInt32Bits));
 assertEqX4(f(SIMD.int32x4(0,INT32_MIN,INT32_MAX,-1)), [0, INT32_MIN, INT32_MAX, -1].map(cast.fromInt32Bits));
 
-var f = asmLink(asmCompile('glob', USE_ASM + I32 + F32 + F32A + CVTIFB + 'function f(x){x=i4(x); var y=f4(0,0,0,0); var z=f4(1,1,1,1); y=cvt(x); y=f4a(y, z); return f4(y)} return f'), this);
+var f = asmLink(asmCompile('glob', USE_ASM + I32 + F32 + F32A + CVTIFB + CF32 + CI32 + 'function f(x){x=ci4(x); var y=f4(0,0,0,0); var z=f4(1,1,1,1); y=cvt(x); y=f4a(y, z); return cf4(y)} return f'), this);
 assertEqX4(f(SIMD.int32x4(1,2,3,4)), [1, 2, 3, 4].map(cast.fromInt32Bits).map((x) => x+1));
 assertEqX4(f(SIMD.int32x4(0,INT32_MIN,INT32_MAX,-1)), [0, INT32_MIN, INT32_MAX, -1].map(cast.fromInt32Bits).map((x) => x+1));
 
-var f = asmLink(asmCompile('glob', USE_ASM + I32 + F32 + CVTFIB + 'function f(x){x=f4(x); var y=i4(0,0,0,0); y=cvt(x); return i4(y);} return f'), this);
+var f = asmLink(asmCompile('glob', USE_ASM + I32 + CI32 + F32 + CF32 + CVTFIB + 'function f(x){x=cf4(x); var y=i4(0,0,0,0); y=cvt(x); return ci4(y);} return f'), this);
 assertEqX4(f(SIMD.float32x4(1,2,3,4)), [1, 2, 3, 4].map(cast.fromFloat32Bits));
 assertEqX4(f(SIMD.float32x4(-0,NaN,+Infinity,-Infinity)), [-0, NaN, +Infinity, -Infinity].map(cast.fromFloat32Bits));
 
-var f = asmLink(asmCompile('glob', USE_ASM + I32 + F32 + I32A + CVTFIB + 'function f(x){x=f4(x); var y=i4(0,0,0,0); var z=i4(1,1,1,1); y=cvt(x); y=i4a(y,z); return i4(y);} return f'), this);
+var f = asmLink(asmCompile('glob', USE_ASM + I32 + CI32 + F32 + CF32 + I32A + CVTFIB + 'function f(x){x=cf4(x); var y=i4(0,0,0,0); var z=i4(1,1,1,1); y=cvt(x); y=i4a(y,z); return ci4(y);} return f'), this);
 assertEqX4(f(SIMD.float32x4(1,2,3,4)), [1, 2, 3, 4].map(cast.fromFloat32Bits).map((x) => x+1));
 assertEqX4(f(SIMD.float32x4(-0,NaN,+Infinity,-Infinity)), [-0, NaN, +Infinity, -Infinity].map(cast.fromFloat32Bits).map((x) => x+1));
 
 // Bitwise ops
 const ANDI32 = 'var andd=i4.and;';
 const ORI32 = 'var orr=i4.or;';
 const XORI32 = 'var xorr=i4.xor;';
 
@@ -821,34 +813,34 @@ CheckF4(ANDF32, 'var x=f4(42, 13.37,-1.4
 CheckF4(ORF32,  'var x=f4(42, 13.37,-1.42, 23.10); var y=f4(19.89, 2.4, 8.15, 16.36); x=orr(x,y)',  bitwise.or( [42, 13.37, -1.42, 23.10], [19.89, 2.4, 8.15, 16.36]));
 CheckF4(XORF32, 'var x=f4(42, 13.37,-1.42, 23.10); var y=f4(19.89, 2.4, 8.15, 16.36); x=xorr(x,y)', bitwise.xor([42, 13.37, -1.42, 23.10], [19.89, 2.4, 8.15, 16.36]));
 
 // Logical ops
 const LSHI = 'var lsh=i4.shiftLeftByScalar;'
 const RSHI = 'var rsh=i4.shiftRightArithmeticByScalar;'
 const URSHI = 'var ursh=i4.shiftRightLogicalByScalar;'
 
-assertAsmTypeFail('glob', USE_ASM + I32 + F32 + FROUND + LSHI + "function f() {var x=f4(1,2,3,4); return i4(lsh(x,f32(42)));} return f");
-assertAsmTypeFail('glob', USE_ASM + I32 + F32 + FROUND + LSHI + "function f() {var x=f4(1,2,3,4); return i4(lsh(x,42));} return f");
-assertAsmTypeFail('glob', USE_ASM + I32 + FROUND + LSHI + "function f() {var x=i4(1,2,3,4); return i4(lsh(x,42.0));} return f");
-assertAsmTypeFail('glob', USE_ASM + I32 + FROUND + LSHI + "function f() {var x=i4(1,2,3,4); return i4(lsh(x,f32(42)));} return f");
+assertAsmTypeFail('glob', USE_ASM + I32 + CI32 + F32 + FROUND + LSHI + "function f() {var x=f4(1,2,3,4); return ci4(lsh(x,f32(42)));} return f");
+assertAsmTypeFail('glob', USE_ASM + I32 + CI32 + F32 + FROUND + LSHI + "function f() {var x=f4(1,2,3,4); return ci4(lsh(x,42));} return f");
+assertAsmTypeFail('glob', USE_ASM + I32 + CI32 + FROUND + LSHI + "function f() {var x=i4(1,2,3,4); return ci4(lsh(x,42.0));} return f");
+assertAsmTypeFail('glob', USE_ASM + I32 + CI32 + FROUND + LSHI + "function f() {var x=i4(1,2,3,4); return ci4(lsh(x,f32(42)));} return f");
 
 var input = 'i4(0, 1, ' + INT32_MIN + ', ' + INT32_MAX + ')';
 var vinput = [0, 1, INT32_MIN, INT32_MAX];
 
 // TODO: What to do for masks > 31? Should we keep only the five low bits of
 // the mask (JS) or not (x86)?
 // Behave as x86 for now, fix when more broadly specified. See also bug 1068028
 function Lsh(i) {  if (i > 31) return () => 0; return function(x) { return (x << i) | 0 } }
 function Rsh(i) {  if (i > 31) return (x) => (x<0)?-1:0; return function(x) { return (x >> i) | 0 } }
 function Ursh(i) { if (i > 31) return () => 0; return function(x) { return (x >>> i) | 0 } }
 
-var asmLsh = asmLink(asmCompile('glob', USE_ASM + I32 + LSHI + 'function f(x, y){x=x|0;y=y|0; var v=' + input + ';return i4(lsh(v, x+y))} return f;'), this)
-var asmRsh = asmLink(asmCompile('glob', USE_ASM + I32 + RSHI + 'function f(x, y){x=x|0;y=y|0; var v=' + input + ';return i4(rsh(v, x+y))} return f;'), this)
-var asmUrsh = asmLink(asmCompile('glob', USE_ASM + I32 + URSHI + 'function f(x, y){x=x|0;y=y|0; var v=' + input + ';return i4(ursh(v, x+y))} return f;'), this)
+var asmLsh = asmLink(asmCompile('glob', USE_ASM + I32 + CI32 + LSHI + 'function f(x, y){x=x|0;y=y|0; var v=' + input + ';return ci4(lsh(v, x+y))} return f;'), this)
+var asmRsh = asmLink(asmCompile('glob', USE_ASM + I32 + CI32 + RSHI + 'function f(x, y){x=x|0;y=y|0; var v=' + input + ';return ci4(rsh(v, x+y))} return f;'), this)
+var asmUrsh = asmLink(asmCompile('glob', USE_ASM + I32 + CI32 + URSHI + 'function f(x, y){x=x|0;y=y|0; var v=' + input + ';return ci4(ursh(v, x+y))} return f;'), this)
 
 for (var i = 1; i < 64; i++) {
     CheckI4(LSHI,  'var x=' + input + '; x=lsh(x, ' + i + ')',   vinput.map(Lsh(i)));
     CheckI4(RSHI,  'var x=' + input + '; x=rsh(x, ' + i + ')',   vinput.map(Rsh(i)));
     CheckI4(URSHI, 'var x=' + input + '; x=ursh(x, ' + i + ')',  vinput.map(Ursh(i)));
 
     assertEqX4(asmLsh(i, 3),  vinput.map(Lsh(i + 3)));
     assertEqX4(asmRsh(i, 3),  vinput.map(Rsh(i + 3)));
@@ -856,91 +848,91 @@ for (var i = 1; i < 64; i++) {
 }
 
 // Select
 const I32SEL = 'var i4sel = i4.select;'
 const F32SEL = 'var f4sel = f4.select;'
 const I32BSEL = 'var i4sel = i4.bitselect;'
 const F32BSEL = 'var f4sel = f4.bitselect;'
 
-assertAsmTypeFail('glob', USE_ASM + F32 + I32SEL + "function f() {var x=f4(1,2,3,4); return i4(i4sel(x,x,x));} return f");
-assertAsmTypeFail('glob', USE_ASM + I32 + F32 + I32SEL + "function f() {var m=f4(1,2,3,4); var x=i4(1,2,3,4); return i4(i4sel(m,x,x));} return f");
-assertAsmTypeFail('glob', USE_ASM + I32 + F32 + I32SEL + "function f() {var m=f4(1,2,3,4); var x=f4(1,2,3,4); return i4(i4sel(m,x,x));} return f");
-assertAsmTypeFail('glob', USE_ASM + I32 + F32 + I32SEL + "function f() {var m=i4(1,2,3,4); var x=f4(1,2,3,4); return i4(i4sel(m,x,x));} return f");
-assertAsmTypeFail('glob', USE_ASM + I32 + F32 + I32SEL + "function f() {var m=i4(1,2,3,4); var x=f4(1,2,3,4); var y=i4(5,6,7,8); return i4(i4sel(m,x,y));} return f");
-assertAsmTypeFail('glob', USE_ASM + I32 + F32 + I32SEL + "function f() {var m=i4(1,2,3,4); var x=i4(1,2,3,4); var y=f4(5,6,7,8); return i4(i4sel(m,x,y));} return f");
-assertAsmTypeFail('glob', USE_ASM + I32 + F32 + I32SEL + "function f() {var m=i4(1,2,3,4); var x=f4(1,2,3,4); var y=f4(5,6,7,8); return i4(i4sel(m,x,y));} return f");
+assertAsmTypeFail('glob', USE_ASM + I32 + F32 + CI32 + I32SEL + "function f() {var x=f4(1,2,3,4); return ci4(i4sel(x,x,x));} return f");
+assertAsmTypeFail('glob', USE_ASM + I32 + F32 + CI32 + I32SEL + "function f() {var m=f4(1,2,3,4); var x=i4(1,2,3,4); return ci4(i4sel(m,x,x));} return f");
+assertAsmTypeFail('glob', USE_ASM + I32 + F32 + CI32 + I32SEL + "function f() {var m=f4(1,2,3,4); var x=f4(1,2,3,4); return ci4(i4sel(m,x,x));} return f");
+assertAsmTypeFail('glob', USE_ASM + I32 + F32 + CI32 + I32SEL + "function f() {var m=i4(1,2,3,4); var x=f4(1,2,3,4); return ci4(i4sel(m,x,x));} return f");
+assertAsmTypeFail('glob', USE_ASM + I32 + F32 + CI32 + I32SEL + "function f() {var m=i4(1,2,3,4); var x=f4(1,2,3,4); var y=i4(5,6,7,8); return ci4(i4sel(m,x,y));} return f");
+assertAsmTypeFail('glob', USE_ASM + I32 + F32 + CI32 + I32SEL + "function f() {var m=i4(1,2,3,4); var x=i4(1,2,3,4); var y=f4(5,6,7,8); return ci4(i4sel(m,x,y));} return f");
+assertAsmTypeFail('glob', USE_ASM + I32 + F32 + CI32 + I32SEL + "function f() {var m=i4(1,2,3,4); var x=f4(1,2,3,4); var y=f4(5,6,7,8); return ci4(i4sel(m,x,y));} return f");
 
-assertAsmTypeFail('glob', USE_ASM + F32 + F32SEL + "function f() {var m=f4(1,2,3,4); return f4(f4sel(x,x,x));} return f");
-assertAsmTypeFail('glob', USE_ASM + I32 + F32 + F32SEL + "function f() {var m=f4(1,2,3,4); var x=i4(1,2,3,4); return f4(f4sel(m,x,x));} return f");
-assertAsmTypeFail('glob', USE_ASM + I32 + F32 + F32SEL + "function f() {var m=f4(1,2,3,4); var x=f4(1,2,3,4); return f4(f4sel(m,x,x));} return f");
-assertAsmTypeFail('glob', USE_ASM + I32 + F32 + F32SEL + "function f() {var m=i4(1,2,3,4); var x=f4(1,2,3,4); var y=i4(5,6,7,8); return f4(f4sel(m,x,y));} return f");
-assertAsmTypeFail('glob', USE_ASM + I32 + F32 + F32SEL + "function f() {var m=i4(1,2,3,4); var x=i4(1,2,3,4); var y=f4(5,6,7,8); return f4(f4sel(m,x,y));} return f");
+assertAsmTypeFail('glob', USE_ASM + F32 + CF32 + F32SEL + "function f() {var m=f4(1,2,3,4); return cf4(f4sel(x,x,x));} return f");
+assertAsmTypeFail('glob', USE_ASM + I32 + F32 + CF32 + F32SEL + "function f() {var m=f4(1,2,3,4); var x=i4(1,2,3,4); return cf4(f4sel(m,x,x));} return f");
+assertAsmTypeFail('glob', USE_ASM + I32 + F32 + CF32 + F32SEL + "function f() {var m=f4(1,2,3,4); var x=f4(1,2,3,4); return cf4(f4sel(m,x,x));} return f");
+assertAsmTypeFail('glob', USE_ASM + I32 + F32 + CF32 + F32SEL + "function f() {var m=i4(1,2,3,4); var x=f4(1,2,3,4); var y=i4(5,6,7,8); return cf4(f4sel(m,x,y));} return f");
+assertAsmTypeFail('glob', USE_ASM + I32 + F32 + CF32 + F32SEL + "function f() {var m=i4(1,2,3,4); var x=i4(1,2,3,4); var y=f4(5,6,7,8); return cf4(f4sel(m,x,y));} return f");
 
 // These pass with select but not bitselect
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + I32SEL + "function f() {var m=i4(0,0,0,0); var x=i4(1,2,3,4); var y=i4(5,6,7,8); return i4(i4sel(m,x,y)); } return f"), this)(), [5, 6, 7, 8]);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + I32SEL + "function f() {var m=i4(-1,-2,-3,-42); var x=i4(1,2,3,4); var y=i4(5,6,7,8); return i4(i4sel(m,x,y)); } return f"), this)(), [1, 2, 3, 4]);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + I32SEL + "function f() {var m=i4(1,-1,2,-2); var x=i4(1,2,3,4); var y=i4(5,6,7,8); return i4(i4sel(m,x,y)); } return f"), this)(), [5, 2, 7, 4]);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + I32SEL + "function f() {var m=i4(42,45,-42,-47); var x=i4(1,2,3,4); var y=i4(5,6,7,8); return i4(i4sel(m,x,y)); } return f"), this)(), [5, 6, 3, 4]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + CI32 + I32SEL + "function f() {var m=i4(0,0,0,0); var x=i4(1,2,3,4); var y=i4(5,6,7,8); return ci4(i4sel(m,x,y)); } return f"), this)(), [5, 6, 7, 8]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + CI32 + I32SEL + "function f() {var m=i4(-1,-2,-3,-42); var x=i4(1,2,3,4); var y=i4(5,6,7,8); return ci4(i4sel(m,x,y)); } return f"), this)(), [1, 2, 3, 4]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + CI32 + I32SEL + "function f() {var m=i4(1,-1,2,-2); var x=i4(1,2,3,4); var y=i4(5,6,7,8); return ci4(i4sel(m,x,y)); } return f"), this)(), [5, 2, 7, 4]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + CI32 + I32SEL + "function f() {var m=i4(42,45,-42,-47); var x=i4(1,2,3,4); var y=i4(5,6,7,8); return ci4(i4sel(m,x,y)); } return f"), this)(), [5, 6, 3, 4]);
 
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + F32 + F32SEL + "function f() {var m=i4(0,0,0,0); var x=f4(1,2,3,4); var y=f4(5,6,7,8); return f4(f4sel(m,x,y)); } return f"), this)(), [5, 6, 7, 8]);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + F32 + F32SEL + "function f() {var m=i4(-1,-2,-3,-42); var x=f4(1,2,3,4); var y=f4(5,6,7,8); return f4(f4sel(m,x,y)); } return f"), this)(), [1, 2, 3, 4]);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + F32 + F32SEL + "function f() {var m=i4(1,-1,2,-2); var x=f4(1,2,3,4); var y=f4(5,6,7,8); return f4(f4sel(m,x,y)); } return f"), this)(), [5, 2, 7, 4]);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + F32 + F32SEL + "function f() {var m=i4(42,45,-42,-47); var x=f4(1,2,3,4); var y=f4(5,6,7,8); return f4(f4sel(m,x,y)); } return f"), this)(), [5, 6, 3, 4]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + F32 + CF32 + F32SEL + "function f() {var m=i4(0,0,0,0); var x=f4(1,2,3,4); var y=f4(5,6,7,8); return cf4(f4sel(m,x,y)); } return f"), this)(), [5, 6, 7, 8]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + F32 + CF32 + F32SEL + "function f() {var m=i4(-1,-2,-3,-42); var x=f4(1,2,3,4); var y=f4(5,6,7,8); return cf4(f4sel(m,x,y)); } return f"), this)(), [1, 2, 3, 4]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + F32 + CF32 + F32SEL + "function f() {var m=i4(1,-1,2,-2); var x=f4(1,2,3,4); var y=f4(5,6,7,8); return cf4(f4sel(m,x,y)); } return f"), this)(), [5, 2, 7, 4]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + F32 + CF32 + F32SEL + "function f() {var m=i4(42,45,-42,-47); var x=f4(1,2,3,4); var y=f4(5,6,7,8); return cf4(f4sel(m,x,y)); } return f"), this)(), [5, 6, 3, 4]);
 
 // These pass for both select and bitselect
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + I32SEL + "function f() {var m=i4(0,0,0,0); var x=i4(1,2,3,4); var y=i4(5,6,7,8); return i4(i4sel(m,x,y)); } return f"), this)(), [5, 6, 7, 8]);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + I32SEL + "function f() {var m=i4(0xffffffff,0xffffffff,0xffffffff,0xffffffff); var x=i4(1,2,3,4); var y=i4(5,6,7,8); return i4(i4sel(m,x,y)); } return f"), this)(), [1, 2, 3, 4]);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + I32SEL + "function f() {var m=i4(0,0xffffffff,0,0xffffffff); var x=i4(1,2,3,4); var y=i4(5,6,7,8); return i4(i4sel(m,x,y)); } return f"), this)(), [5, 2, 7, 4]);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + I32SEL + "function f() {var m=i4(0,0,0xffffffff,0xffffffff); var x=i4(1,2,3,4); var y=i4(5,6,7,8); return i4(i4sel(m,x,y)); } return f"), this)(), [5, 6, 3, 4]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + CI32 + I32SEL + "function f() {var m=i4(0,0,0,0); var x=i4(1,2,3,4); var y=i4(5,6,7,8); return ci4(i4sel(m,x,y)); } return f"), this)(), [5, 6, 7, 8]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + CI32 + I32SEL + "function f() {var m=i4(0xffffffff,0xffffffff,0xffffffff,0xffffffff); var x=i4(1,2,3,4); var y=i4(5,6,7,8); return ci4(i4sel(m,x,y)); } return f"), this)(), [1, 2, 3, 4]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + CI32 + I32SEL + "function f() {var m=i4(0,0xffffffff,0,0xffffffff); var x=i4(1,2,3,4); var y=i4(5,6,7,8); return ci4(i4sel(m,x,y)); } return f"), this)(), [5, 2, 7, 4]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + CI32 + I32SEL + "function f() {var m=i4(0,0,0xffffffff,0xffffffff); var x=i4(1,2,3,4); var y=i4(5,6,7,8); return ci4(i4sel(m,x,y)); } return f"), this)(), [5, 6, 3, 4]);
 
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + F32 + F32SEL + "function f() {var m=i4(0,0,0,0); var x=f4(1,2,3,4); var y=f4(5,6,7,8); return f4(f4sel(m,x,y)); } return f"), this)(), [5, 6, 7, 8]);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + F32 + F32SEL + "function f() {var m=i4(0xffffffff,0xffffffff,0xffffffff,0xffffffff); var x=f4(1,2,3,4); var y=f4(5,6,7,8); return f4(f4sel(m,x,y)); } return f"), this)(), [1, 2, 3, 4]);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + F32 + F32SEL + "function f() {var m=i4(0,0xffffffff,0,0xffffffff); var x=f4(1,2,3,4); var y=f4(5,6,7,8); return f4(f4sel(m,x,y)); } return f"), this)(), [5, 2, 7, 4]);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + F32 + F32SEL + "function f() {var m=i4(0,0,0xffffffff,0xffffffff); var x=f4(1,2,3,4); var y=f4(5,6,7,8); return f4(f4sel(m,x,y)); } return f"), this)(), [5, 6, 3, 4]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + F32 + CF32 + F32SEL + "function f() {var m=i4(0,0,0,0); var x=f4(1,2,3,4); var y=f4(5,6,7,8); return cf4(f4sel(m,x,y)); } return f"), this)(), [5, 6, 7, 8]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + F32 + CF32 + F32SEL + "function f() {var m=i4(0xffffffff,0xffffffff,0xffffffff,0xffffffff); var x=f4(1,2,3,4); var y=f4(5,6,7,8); return cf4(f4sel(m,x,y)); } return f"), this)(), [1, 2, 3, 4]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + F32 + CF32 + F32SEL + "function f() {var m=i4(0,0xffffffff,0,0xffffffff); var x=f4(1,2,3,4); var y=f4(5,6,7,8); return cf4(f4sel(m,x,y)); } return f"), this)(), [5, 2, 7, 4]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + F32 + CF32 + F32SEL + "function f() {var m=i4(0,0,0xffffffff,0xffffffff); var x=f4(1,2,3,4); var y=f4(5,6,7,8); return cf4(f4sel(m,x,y)); } return f"), this)(), [5, 6, 3, 4]);
 
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + I32BSEL + "function f() {var m=i4(0,0,0,0); var x=i4(1,2,3,4); var y=i4(5,6,7,8); return i4(i4sel(m,x,y)); } return f"), this)(), [5, 6, 7, 8]);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + I32BSEL + "function f() {var m=i4(0xffffffff,0xffffffff,0xffffffff,0xffffffff); var x=i4(1,2,3,4); var y=i4(5,6,7,8); return i4(i4sel(m,x,y)); } return f"), this)(), [1, 2, 3, 4]);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + I32BSEL + "function f() {var m=i4(0,0xffffffff,0,0xffffffff); var x=i4(1,2,3,4); var y=i4(5,6,7,8); return i4(i4sel(m,x,y)); } return f"), this)(), [5, 2, 7, 4]);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + I32BSEL + "function f() {var m=i4(0,0,0xffffffff,0xffffffff); var x=i4(1,2,3,4); var y=i4(5,6,7,8); return i4(i4sel(m,x,y)); } return f"), this)(), [5, 6, 3, 4]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + CI32 + I32BSEL + "function f() {var m=i4(0,0,0,0); var x=i4(1,2,3,4); var y=i4(5,6,7,8); return ci4(i4sel(m,x,y)); } return f"), this)(), [5, 6, 7, 8]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + CI32 + I32BSEL + "function f() {var m=i4(0xffffffff,0xffffffff,0xffffffff,0xffffffff); var x=i4(1,2,3,4); var y=i4(5,6,7,8); return ci4(i4sel(m,x,y)); } return f"), this)(), [1, 2, 3, 4]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + CI32 + I32BSEL + "function f() {var m=i4(0,0xffffffff,0,0xffffffff); var x=i4(1,2,3,4); var y=i4(5,6,7,8); return ci4(i4sel(m,x,y)); } return f"), this)(), [5, 2, 7, 4]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + CI32 + I32BSEL + "function f() {var m=i4(0,0,0xffffffff,0xffffffff); var x=i4(1,2,3,4); var y=i4(5,6,7,8); return ci4(i4sel(m,x,y)); } return f"), this)(), [5, 6, 3, 4]);
 
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + F32 + F32BSEL + "function f() {var m=i4(0,0,0,0); var x=f4(1,2,3,4); var y=f4(5,6,7,8); return f4(f4sel(m,x,y)); } return f"), this)(), [5, 6, 7, 8]);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + F32 + F32BSEL + "function f() {var m=i4(0xffffffff,0xffffffff,0xffffffff,0xffffffff); var x=f4(1,2,3,4); var y=f4(5,6,7,8); return f4(f4sel(m,x,y)); } return f"), this)(), [1, 2, 3, 4]);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + F32 + F32BSEL + "function f() {var m=i4(0,0xffffffff,0,0xffffffff); var x=f4(1,2,3,4); var y=f4(5,6,7,8); return f4(f4sel(m,x,y)); } return f"), this)(), [5, 2, 7, 4]);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + F32 + F32BSEL + "function f() {var m=i4(0,0,0xffffffff,0xffffffff); var x=f4(1,2,3,4); var y=f4(5,6,7,8); return f4(f4sel(m,x,y)); } return f"), this)(), [5, 6, 3, 4]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + F32 + CF32 + F32BSEL + "function f() {var m=i4(0,0,0,0); var x=f4(1,2,3,4); var y=f4(5,6,7,8); return cf4(f4sel(m,x,y)); } return f"), this)(), [5, 6, 7, 8]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + F32 + CF32 + F32BSEL + "function f() {var m=i4(0xffffffff,0xffffffff,0xffffffff,0xffffffff); var x=f4(1,2,3,4); var y=f4(5,6,7,8); return cf4(f4sel(m,x,y)); } return f"), this)(), [1, 2, 3, 4]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + F32 + CF32 + F32BSEL + "function f() {var m=i4(0,0xffffffff,0,0xffffffff); var x=f4(1,2,3,4); var y=f4(5,6,7,8); return cf4(f4sel(m,x,y)); } return f"), this)(), [5, 2, 7, 4]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + F32 + CF32 + F32BSEL + "function f() {var m=i4(0,0,0xffffffff,0xffffffff); var x=f4(1,2,3,4); var y=f4(5,6,7,8); return cf4(f4sel(m,x,y)); } return f"), this)(), [5, 6, 3, 4]);
 
 // Specific bitselect tests
 var masks = [
     SIMD.int32x4(1337, 0x1337, 0x42, 42),
     SIMD.int32x4(0x00FF1CE, 0xBAADF00D, 0xDEADBEEF, 0xCAFED00D),
     SIMD.int32x4(0xD15EA5E, 0xDEADC0DE, 0xFACEB00C, 0x4B1D4B1D)
 ];
 
 var simdToArray = (vec) => [vec.x, vec.y, vec.z, vec.w];
 
 var inputs = [
     [SIMD.int32x4(0,4,9,16), SIMD.int32x4(1,2,3,4)],
     [SIMD.int32x4(-1, 2, INT32_MAX, INT32_MIN), SIMD.int32x4(INT32_MAX, -4, INT32_MIN, 42)]
 ];
 
-var i32bsel = asmLink(asmCompile('glob', USE_ASM + I32 + I32BSEL + "function f(mask, ifTrue, ifFalse) {mask=i4(mask); ifTrue=i4(ifTrue); ifFalse=i4(ifFalse); return i4(i4sel(mask,ifTrue,ifFalse)); } return f"), this)
+var i32bsel = asmLink(asmCompile('glob', USE_ASM + I32 + CI32 + I32BSEL + "function f(mask, ifTrue, ifFalse) {mask=ci4(mask); ifTrue=ci4(ifTrue); ifFalse=ci4(ifFalse); return ci4(i4sel(mask,ifTrue,ifFalse)); } return f"), this)
 
 for (var mask of masks) {
     for (var [x, y] of inputs) {
         assertEqX4(i32bsel(mask, x, y), simdToArray(SIMD.int32x4.bitselect(mask, x, y)));
     }
 }
 
 inputs = [
     [SIMD.float32x4(0.125,4.25,9.75,16.125), SIMD.float32x4(1.5,2.75,3.25,4.5)],
     [SIMD.float32x4(-1.5,-0,NaN,-Infinity),  SIMD.float32x4(1,-2,13.37,3.13)],
     [SIMD.float32x4(1.5,2.75,NaN,Infinity),  SIMD.float32x4(-NaN,-Infinity,9.75,16.125)]
 ];
 
-var f32bsel = asmLink(asmCompile('glob', USE_ASM + I32 + F32 + F32BSEL + "function f(mask, ifTrue, ifFalse) {mask=i4(mask); ifTrue=f4(ifTrue); ifFalse=f4(ifFalse); return f4(f4sel(mask,ifTrue,ifFalse)); } return f"), this)
+var f32bsel = asmLink(asmCompile('glob', USE_ASM + I32 + F32 + CI32 + CF32 + F32BSEL + "function f(mask, ifTrue, ifFalse) {mask=ci4(mask); ifTrue=cf4(ifTrue); ifFalse=cf4(ifFalse); return cf4(f4sel(mask,ifTrue,ifFalse)); } return f"), this)
 
 for (var mask of masks)
     for (var [x, y] of inputs)
         assertEqX4(f32bsel(mask, x, y), simdToArray(SIMD.float32x4.bitselect(mask, x, y)));
 
 // Splat
 const I32SPLAT = 'var splat=i4.splat;'
 const F32SPLAT = 'var splat=f4.splat;'
@@ -948,38 +940,38 @@ const F32SPLAT = 'var splat=f4.splat;'
 assertAsmTypeFail('glob', USE_ASM + I32 + F32 + I32SPLAT + "function f() {var m=i4(1,2,3,4); var p=f4(1.,2.,3.,4.); p=splat(f32(1));} return f");
 assertAsmTypeFail('glob', USE_ASM + I32 + I32SPLAT + "function f() {var m=i4(1,2,3,4); m=splat(1, 2)} return f");
 assertAsmTypeFail('glob', USE_ASM + I32 + I32SPLAT + "function f() {var m=i4(1,2,3,4); m=splat()} return f");
 
 assertAsmTypeFail('glob', USE_ASM + I32 + I32SPLAT + "function f() {var m=i4(1,2,3,4); m=splat(m);} return f");
 assertAsmTypeFail('glob', USE_ASM + I32 + I32SPLAT + "function f() {var m=i4(1,2,3,4); m=splat(1.0);} return f");
 assertAsmTypeFail('glob', USE_ASM + I32 + I32SPLAT + FROUND + "function f() {var m=i4(1,2,3,4); m=splat(f32(1.0));} return f");
 
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + I32SPLAT + 'function f(){return i4(splat(42));} return f'), this)(), [42, 42, 42, 42]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + CI32 + I32SPLAT + 'function f(){return ci4(splat(42));} return f'), this)(), [42, 42, 42, 42]);
 
 const l33t = Math.fround(13.37);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + F32 + F32SPLAT + FROUND + 'function f(){return f4(splat(f32(1)));} return f'), this)(), [1, 1, 1, 1]);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + F32 + F32SPLAT + FROUND + 'function f(){return f4(splat(1.0));} return f'), this)(), [1, 1, 1, 1]);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + F32 + F32SPLAT + FROUND + 'function f(){return f4(splat(f32(1 >>> 0)));} return f'), this)(), [1, 1, 1, 1]);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + F32 + F32SPLAT + FROUND + 'function f(){return f4(splat(f32(13.37)));} return f'), this)(), [l33t, l33t, l33t, l33t]);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + F32 + F32SPLAT + FROUND + 'function f(){return f4(splat(13.37));} return f'), this)(), [l33t, l33t, l33t, l33t]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + F32 + CF32 + F32SPLAT + FROUND + 'function f(){return cf4(splat(f32(1)));} return f'), this)(), [1, 1, 1, 1]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + F32 + CF32 + F32SPLAT + FROUND + 'function f(){return cf4(splat(1.0));} return f'), this)(), [1, 1, 1, 1]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + F32 + CF32 + F32SPLAT + FROUND + 'function f(){return cf4(splat(f32(1 >>> 0)));} return f'), this)(), [1, 1, 1, 1]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + F32 + CF32 + F32SPLAT + FROUND + 'function f(){return cf4(splat(f32(13.37)));} return f'), this)(), [l33t, l33t, l33t, l33t]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + F32 + CF32 + F32SPLAT + FROUND + 'function f(){return cf4(splat(13.37));} return f'), this)(), [l33t, l33t, l33t, l33t]);
 
 var i32view = new Int32Array(heap);
 var f32view = new Float32Array(heap);
 i32view[0] = 42;
-assertEqX4(asmLink(asmCompile('glob', 'ffi', 'heap', USE_ASM + I32 + I32SPLAT + 'var i32=new glob.Int32Array(heap); function f(){return i4(splat(i32[0]));} return f'), this, {}, heap)(), [42, 42, 42, 42]);
+assertEqX4(asmLink(asmCompile('glob', 'ffi', 'heap', USE_ASM + I32 + CI32 + I32SPLAT + 'var i32=new glob.Int32Array(heap); function f(){return ci4(splat(i32[0]));} return f'), this, {}, heap)(), [42, 42, 42, 42]);
 f32view[0] = 42;
-assertEqX4(asmLink(asmCompile('glob', 'ffi', 'heap', USE_ASM + F32 + F32SPLAT + 'var f32=new glob.Float32Array(heap); function f(){return f4(splat(f32[0]));} return f'), this, {}, heap)(), [42, 42, 42, 42]);
-assertEqX4(asmLink(asmCompile('glob', 'ffi', 'heap', USE_ASM + F32 + F32SPLAT + FROUND + 'function f(){return f4(splat(f32(1) + f32(2)));} return f'), this, {}, heap)(), [3, 3, 3, 3]);
+assertEqX4(asmLink(asmCompile('glob', 'ffi', 'heap', USE_ASM + F32 + CF32 + F32SPLAT + 'var f32=new glob.Float32Array(heap); function f(){return cf4(splat(f32[0]));} return f'), this, {}, heap)(), [42, 42, 42, 42]);
+assertEqX4(asmLink(asmCompile('glob', 'ffi', 'heap', USE_ASM + F32 + CF32 + F32SPLAT + FROUND + 'function f(){return cf4(splat(f32(1) + f32(2)));} return f'), this, {}, heap)(), [3, 3, 3, 3]);
 
 // Dead code
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + 'function f(){var x=i4(1,2,3,4); return i4(x); x=i4(5,6,7,8); return i4(x);} return f'), this)(), [1, 2, 3, 4]);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + 'function f(){var x=i4(1,2,3,4); var c=0; return i4(x); c=x.x|0; return i4(x);} return f'), this)(), [1, 2, 3, 4]);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + I32A + 'function f(){var x=i4(1,2,3,4); var c=0; return i4(x); x=i4a(x,x); return i4(x);} return f'), this)(), [1, 2, 3, 4]);
-assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + I32S + 'function f(){var x=i4(1,2,3,4); var c=0; return i4(x); x=i4s(x,x); return i4(x);} return f'), this)(), [1, 2, 3, 4]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + CI32 + 'function f(){var x=i4(1,2,3,4); return ci4(x); x=i4(5,6,7,8); return ci4(x);} return f'), this)(), [1, 2, 3, 4]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + CI32 + 'function f(){var x=i4(1,2,3,4); var c=0; return ci4(x); c=x.x|0; return ci4(x);} return f'), this)(), [1, 2, 3, 4]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + CI32 + I32A + 'function f(){var x=i4(1,2,3,4); var c=0; return ci4(x); x=i4a(x,x); return ci4(x);} return f'), this)(), [1, 2, 3, 4]);
+assertEqX4(asmLink(asmCompile('glob', USE_ASM + I32 + CI32 + I32S + 'function f(){var x=i4(1,2,3,4); var c=0; return ci4(x); x=i4s(x,x); return ci4(x);} return f'), this)(), [1, 2, 3, 4]);
 
 // Swizzle
 assertAsmTypeFail('glob', USE_ASM + I32 + "var swizzle=i4.swizzle; function f() {var x=i4(1,2,3,4); x=swizzle(x, -1, 0, 0, 0);} return f");
 assertAsmTypeFail('glob', USE_ASM + I32 + "var swizzle=i4.swizzle; function f() {var x=i4(1,2,3,4); x=swizzle(x, 4, 0, 0, 0);} return f");
 assertAsmTypeFail('glob', USE_ASM + I32 + "var swizzle=i4.swizzle; function f() {var x=i4(1,2,3,4); x=swizzle(x, 0.0, 0, 0, 0);} return f");
 assertAsmTypeFail('glob', USE_ASM + I32 + "var swizzle=i4.swizzle; function f() {var x=i4(1,2,3,4); x=swizzle(x);} return f");
 assertAsmTypeFail('glob', USE_ASM + I32 + "var swizzle=i4.swizzle; function f() {var x=i4(1,2,3,4); x=swizzle(x, 0, 0, 0, x);} return f");
 assertAsmTypeFail('glob', USE_ASM + I32 + "var swizzle=i4.swizzle; function f() {var x=i4(1,2,3,4); var y=42; x=swizzle(x, 0, 0, 0, y);} return f");
@@ -1088,54 +1080,54 @@ assertAsmTypeFail('glob', 'ffi', USE_ASM
 
 // Can't have FFI return SIMD values
 assertAsmTypeFail('glob', 'ffi', USE_ASM + I32 + "var func=ffi.func; function f() {var x=i4(1,2,3,4); x=i4(func());} return f");
 assertAsmTypeFail('glob', 'ffi', USE_ASM + F32 + "var func=ffi.func; function f() {var x=f4(1,2,3,4); x=f4(func());} return f");
 
 // 3.3 Internal calls
 // asm.js -> asm.js
 // Retrieving values from asm.js
-var code = USE_ASM + I32 + I32A + `
+var code = USE_ASM + I32 + CI32 + I32A + `
     var check = ffi.check;
 
     function g() {
         var i = 0;
         var y = i4(0,0,0,0);
         var tmp = i4(0,0,0,0); var z = i4(1,1,1,1);
         var w = i4(5,5,5,5);
         for (; (i|0) < 30; i = i + 1 |0)
             y = i4a(z, y);
         y = i4a(w, y);
         check(y.x | 0, y.y | 0, y.z | 0, y.w | 0);
-        return i4(y);
+        return ci4(y);
     }
 
     function f(x) {
-        x = i4(x);
+        x = ci4(x);
         var y = i4(0,0,0,0);
-        y = i4(g());
+        y = ci4(g());
         check(y.x | 0, y.y | 0, y.z | 0, y.w | 0);
-        return i4(x);
+        return ci4(x);
     }
     return f;
 `;
 
 var v4 = SIMD.int32x4(1,2,3,4);
 function check(x, y, z, w) {
     assertEq(x, 35);
     assertEq(y, 35);
     assertEq(z, 35);
     assertEq(w, 35);
 }
 var ffi = {check};
 assertEqX4(asmLink(asmCompile('glob', 'ffi', code), this, ffi)(v4), [1,2,3,4]);
 
 // Passing arguments from asm.js to asm.js
 // TODO make this code look better with templatized strings
-var code = USE_ASM + I32 + I32A + `
+var code = USE_ASM + I32 + CI32 + I32A + `
     var assertEq = ffi.assertEq;
 
     function internal([args]) {
         [coerc]
         assertEq([last].x | 0, [i] | 0);
         assertEq([last].y | 0, [i] + 1 |0);
         assertEq([last].z | 0, [i] + 2 |0);
         assertEq([last].w | 0, [i] + 3 |0);
@@ -1151,17 +1143,17 @@ var code = USE_ASM + I32 + I32A + `
 var ffi = {assertEq};
 var args = '';
 var decls = '';
 var coerc = '';
 for (var i = 1; i < 10; ++i) {
     var j = i;
     args += ((i > 1) ? ', ':'') + 'x' + i;
     decls += 'var x' + i + ' = i4(' + j++ + ', ' + j++ + ', ' + j++ + ', ' + j++ + ');\n';
-    coerc += 'x' + i + ' = i4(x' + i + ');\n';
+    coerc += 'x' + i + ' = ci4(x' + i + ');\n';
     last = 'x' + i;
     var c = code.replace(/\[args\]/g, args)
                 .replace(/\[last\]/g, last)
                 .replace(/\[decls\]/i, decls)
                 .replace(/\[coerc\]/i, coerc)
                 .replace(/\[i\]/g, i);
     asmLink(asmCompile('glob', 'ffi', c), this, ffi)();
 }
@@ -1227,16 +1219,17 @@ asmLink(asmCompile('glob', 'ffi', code),
 })();
 
 // Function calls with mixed arguments on the stack (SIMD and scalar). In the
 // worst case (x64), we have 6 int arg registers and 8 float registers.
 (function() {
     var code = `
         "use asm";
         var i4 = glob.SIMD.int32x4;
+        var ci4 = i4.check;
         function h(
             // In registers:
             gpr1, gpr2, gpr3, gpr4, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, xmm8,
             // On the stack:
             sint1, ssimd1, sdouble1, ssimd2, sint2, sint3, sint4, ssimd3, sdouble2
             )
         {
             gpr1=gpr1|0;
@@ -1249,23 +1242,23 @@ asmLink(asmCompile('glob', 'ffi', code),
             xmm3=+xmm3;
             xmm4=+xmm4;
             xmm5=+xmm5;
             xmm6=+xmm6;
             xmm7=+xmm7;
             xmm8=+xmm8;
 
             sint1=sint1|0;
-            ssimd1=i4(ssimd1);
+            ssimd1=ci4(ssimd1);
             sdouble1=+sdouble1;
-            ssimd2=i4(ssimd2);
+            ssimd2=ci4(ssimd2);
             sint2=sint2|0;
             sint3=sint3|0;
             sint4=sint4|0;
-            ssimd3=i4(ssimd3);
+            ssimd3=ci4(ssimd3);
             sdouble2=+sdouble2;
 
             return (ssimd1.x|0) + (ssimd2.y|0) + (ssimd3.z|0) + sint2 + gpr3 | 0;
         }
 
         function g() {
             var simd1 = i4(1,2,3,4);
             var simd2 = i4(5,6,7,8);
@@ -1285,24 +1278,25 @@ asmLink(asmCompile('glob', 'ffi', code),
 
 // WARNING: must be the last test in this file
 (function() {
     var iters = 2000000;
     var code = `
     "use asm";
     var i4 = glob.SIMD.int32x4;
     var i4a = i4.add;
+    var ci4 = i4.check;
     function _() {
         var i = 0;
         var n = i4(0,0,0,0);
         var one = i4(1,1,1,1);
         for (; (i>>>0) < ` + iters + `; i=(i+1)>>>0) {
             n = i4a(n, one);
         }
-        return i4(n);
+        return ci4(n);
     }
     return _;`;
     // This test relies on the fact that setting the timeout will call the
     // interrupt callback at fixed intervals, even before the timeout.
     timeout(1000);
     var x4 = asmLink(asmCompile('glob', code), this)();
     assertEq(x4.x, iters);
     assertEq(x4.y, iters);
--- a/js/src/tests/ecma_7/SIMD/constructors.js
+++ b/js/src/tests/ecma_7/SIMD/constructors.js
@@ -4,95 +4,41 @@ var float64x2 = SIMD.float64x2;
 var float32x4 = SIMD.float32x4;
 var int32x4 = SIMD.int32x4;
 
 function TestInt32x4Ctor() {
     // Constructors.
     assertEqX4(int32x4(1, 2, 3, 4),         [1,2,3,4]);
     assertEqX4(int32x4(1, 2, 3),            [1,2,3,0]);
     assertEqX4(int32x4(1, 2),               [1,2,0,0]);
-    // The 1-argument form is reserved for coercions.
+    assertEqX4(int32x4(1),                  [1,0,0,0]);
     assertEqX4(int32x4(),                   [0,0,0,0]);
     assertEqX4(int32x4(1, 2, 3, 4, 5),      [1,2,3,4]);
     assertEqX4(int32x4(1, 2, 3, 4, 5, 6),   [1,2,3,4]);
-
-    // Constructors used as coercion.
-    var x = int32x4(1, 2, 3, 4);
-    var y = int32x4(x);
-
-    assertEq(x, y);
-
-    assertEq(y.x, x.x);
-    assertEq(y.x, 1);
-    assertEq(y.y, x.y);
-    assertEq(y.y, 2);
-    assertEq(y.z, x.z);
-    assertEq(y.z, 3);
-    assertEq(y.w, x.w);
-    assertEq(y.w, 4);
-
-    assertThrowsInstanceOf(() => int32x4(3), TypeError);
-    assertThrowsInstanceOf(() => int32x4(float32x4(1,2,3,4)), TypeError);
-    assertThrowsInstanceOf(() => int32x4(float64x2(1,2)), TypeError);
-    assertThrowsInstanceOf(() => int32x4('pony x 4'), TypeError);
 }
 
 function TestFloat32x4Ctor() {
     assertEqX4(float32x4(1, 2, 3, 4),       [1,2,3,4]);
     assertEqX4(float32x4(1, 2, 3),          [1,2,3,NaN]);
     assertEqX4(float32x4(1, 2),             [1,2,NaN,NaN]);
-    // The 1-argument form is reserved for coercions.
+    assertEqX4(float32x4(1),                [1,NaN,NaN,NaN]);
     assertEqX4(float32x4(),                 [NaN,NaN,NaN,NaN]);
     assertEqX4(float32x4(1, 2, 3, 4, 5),    [1,2,3,4]);
     assertEqX4(float32x4(1, 2, 3, 4, 5, 6), [1,2,3,4]);
-
-    var x = float32x4(NaN, 13.37, -Infinity, 4);
-    var y = float32x4(x);
-
-    assertEq(x, y);
-
-    assertEq(y.x, x.x);
-    assertEq(y.x, Math.fround(NaN));
-    assertEq(y.y, x.y);
-    assertEq(y.y, Math.fround(13.37));
-    assertEq(y.z, x.z);
-    assertEq(y.z, Math.fround(-Infinity));
-    assertEq(y.w, x.w);
-    assertEq(y.w, Math.fround(4));
-
-    assertThrowsInstanceOf(() => float32x4(3), TypeError);
-    assertThrowsInstanceOf(() => float32x4(int32x4(1,2,3,4)), TypeError);
-    assertThrowsInstanceOf(() => float32x4(float64x2(1,2)), TypeError);
-    assertThrowsInstanceOf(() => float32x4('pony x 4'), TypeError);
 }
 
 function TestFloat64x2Ctor() {
     assertEqX2(float64x2(1, 2),             [1,2]);
-    // The 1-argument form is reserved for coercions.
+    assertEqX2(float64x2(1),                [1,NaN]);
     assertEqX2(float64x2(),                 [NaN,NaN]);
     assertEqX2(float64x2(1, 2, 3),          [1,2]);
     assertEqX2(float64x2(1, 2, 3, 4),       [1,2]);
     assertEqX2(float64x2(1, 2, 3, 4, 5),    [1,2]);
     assertEqX2(float64x2(1, 2, 3, 4, 5),    [1,2]);
     assertEqX2(float64x2(1, 2, 3, 4, 5, 6), [1,2]);
-
-    var x = float64x2(NaN, 13.37);
-    var y = float64x2(x);
-
-    assertEq(x, y);
-
-    assertEq(y.x, x.x);
-    assertEq(y.x, NaN);
-    assertEq(y.y, x.y);
-    assertEq(y.y, 13.37);
-
-    assertThrowsInstanceOf(() => float64x2(3), TypeError);
-    assertThrowsInstanceOf(() => float64x2(int32x4(1,2,3,4)), TypeError);
-    assertThrowsInstanceOf(() => float64x2(float32x4(1,2,3,4)), TypeError);
-    assertThrowsInstanceOf(() => float64x2('pony x 4'), TypeError);
 }
 
 function test() {
     TestFloat32x4Ctor();
     TestInt32x4Ctor();
     TestFloat64x2Ctor();
     if (typeof reportCompare === "function")
         reportCompare(true, true);