function rotateX$2(out, a, rad) {
	    var s = SIMD.Float32x4.splat(Math.sin(rad)),
	        c = SIMD.Float32x4.splat(Math.cos(rad));

	    if (a !== out) { // If the source and destination differ, copy the unchanged rows
	      out[0]  = a[0];
	      out[1]  = a[1];
	      out[2]  = a[2];
	      out[3]  = a[3];
	      out[12] = a[12];
	      out[13] = a[13];
	      out[14] = a[14];
	      out[15] = a[15];
	    }

	    // Perform axis-specific matrix multiplication
	    var a_1 = SIMD.Float32x4.load(a, 4);
	    var a_2 = SIMD.Float32x4.load(a, 8);
	    SIMD.Float32x4.store(out, 4,
	                         SIMD.Float32x4.add(SIMD.Float32x4.mul(a_1, c), SIMD.Float32x4.mul(a_2, s)));
	    SIMD.Float32x4.store(out, 8,
	                         SIMD.Float32x4.sub(SIMD.Float32x4.mul(a_2, c), SIMD.Float32x4.mul(a_1, s)));
	    return out;
	}
/**
	 * Rotates a matrix by the given angle around the X axis using SIMD
	 *
	 * @param {mat4} out the receiving matrix
	 * @param {mat4} a the matrix to rotate
	 * @param {Number} rad the angle to rotate the matrix by
	 * @returns {mat4} out
	 */
Rotates a matrix by the given angle around the X axis using SIMD
@param {mat4} out the receiving matrix
@param {mat4} a the matrix to rotate
@param {Number} rad the angle to rotate the matrix by
@returns {mat4} out
Rotates a matrix by the given angle around the X axis using SIMD @param { mat4 } out the receiving matrix @param { mat4 } a the matrix to rotate @param { Number } rad the angle to rotate the matrix by @returns { mat4 } out
function rotateX$2(out, a, rad) {
	    var s = SIMD.Float32x4.splat(Math.sin(rad)),
	        c = SIMD.Float32x4.splat(Math.cos(rad));
	    if (a !== out) { 
	      out[0]  = a[0];
	      out[1]  = a[1];
	      out[2]  = a[2];
	      out[3]  = a[3];
	      out[12] = a[12];
	      out[13] = a[13];
	      out[14] = a[14];
	      out[15] = a[15];
	    }
	    var a_1 = SIMD.Float32x4.load(a, 4);
	    var a_2 = SIMD.Float32x4.load(a, 8);
	    SIMD.Float32x4.store(out, 4,
	                         SIMD.Float32x4.add(SIMD.Float32x4.mul(a_1, c), SIMD.Float32x4.mul(a_2, s)));
	    SIMD.Float32x4.store(out, 8,
	                         SIMD.Float32x4.sub(SIMD.Float32x4.mul(a_2, c), SIMD.Float32x4.mul(a_1, s)));
	    return out;
	}
function rotateX$2 ( out , a , rad ) { var s = SIMD . Float32x4 . splat ( Math . sin ( rad ) ) , c = SIMD . Float32x4 . splat ( Math . cos ( rad ) ) ; if ( a !== out ) { out [ 0 ] = a [ 0 ] ; out [ 1 ] = a [ 1 ] ; out [ 2 ] = a [ 2 ] ; out [ 3 ] = a [ 3 ] ; out [ 12 ] = a [ 12 ] ; out [ 13 ] = a [ 13 ] ; out [ 14 ] = a [ 14 ] ; out [ 15 ] = a [ 15 ] ; } var a_1 = SIMD . Float32x4 . load ( a , 4 ) ; var a_2 = SIMD . Float32x4 . load ( a , 8 ) ; SIMD . Float32x4 . store ( out , 4 , SIMD . Float32x4 . add ( SIMD . Float32x4 . mul ( a_1 , c ) , SIMD . Float32x4 . mul ( a_2 , s ) ) ) ; SIMD . Float32x4 . store ( out , 8 , SIMD . Float32x4 . sub ( SIMD . Float32x4 . mul ( a_2 , c ) , SIMD . Float32x4 . mul ( a_1 , s ) ) ) ; return out ; }
Rotates a matrix by the given angle around the X axis using SIMD
 @param {mat4} out the receiving matrix
 @param {mat4} a the matrix to rotate
 @param {Number} rad the angle to rotate the matrix by
 @returns {mat4} out
Rotates a matrix by the given angle around the X axis using SIMD @param { mat4 } out the receiving matrix @param { mat4 } a the matrix to rotate @param { Number } rad the angle to rotate the matrix by @returns { mat4 } out
// If the source and destination differ, copy the unchanged rows // Perform axis-specific matrix multiplication