Please note, this is a STATIC archive of website developer.mozilla.org from 03 Nov 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

Revision 871851 of SIMD.Int8x16

  • Revision slug: Web/JavaScript/Reference/Global_Objects/Int8x16
  • Revision title: SIMD.Int8x16
  • Revision id: 871851
  • Created:
  • Creator: fscholz
  • Is current revision? No
  • Comment Uppercase constructors; spec table; Nightly CompatWeb/JavaScript/Reference/Global_Objects/int8x16-temp Web/JavaScript/Reference/Global_Objects/Int8x16

Revision Content

{{JSRef}} {{es7}}

The SIMD.Int8x16 data type is a 128-bit vector divided into 16 lanes storing 8-bit signed integer values.

SIMD.int8x16

Figure 1: SIMD.Int8x16 in a 128-bit SIMD register.

Syntax

SIMD.Int8x16(s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15);

Parameters

s[0-15] {{optional_inline}}
An integer specifying the value of the lane. Defaults to 0.

Constructor functions

In addition to the simple creator functions, the SIMD API provides the following constructor functions:

{{jsxref("SIMD.splat", "SIMD.Int8x16.splat()")}}
Creates an Int8x16 with all lanes set to a given value.
{{jsxref("SIMD.bool", "SIMD.Int8x16.bool()")}}
Creates an Int8x16 with boolean parameters, allowing you to create an explicit selection mask.

Note that you can also convert from another SIMD data type to Int8x16.

Note: SIMD types don't work with new, as SIMD values are no "boxed" objects (comparable to String(s) vs. new String(s), which creates a String object).

var v = new SIMD.Int8x16(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16); 
// TypeError: SIMD.Int8x16 is not a constructor

Instead, you just write:

var v = SIMD.Int8x16(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16);

Operations

To actually do something with SIMD types, SIMD operations are needed that work on SIMD data types.

Checking SIMD types

{{jsxref("SIMD.check", "SIMD.Int8x16.check()")}}
Returns a new Int8x16 if the parameter is a valid Int8x16 data type. Throws a {{jsxref("TypeError")}} otherwise.

Accessing and mutating lanes

{{jsxref("SIMD.extractLane", "SIMD.Int8x16.extractLane()")}}
Returns the value of the given lane.
{{jsxref("SIMD.replaceLane", "SIMD.Int8x16.replaceLane()")}}
Returns a new Int8x16 with the given lane value replaced.

Loading from and storing into typed arrays

{{jsxref("SIMD.load", "SIMD.Int8x16.load()")}}
Returns a new Int8x16 with the lane values loaded from a typed array.
{{jsxref("SIMD.store", "SIMD.Int8x16.store()")}}
Stores an Int8x16 into a typed array.

Arithmetic operations

{{jsxref("SIMD.add", "SIMD.Int8x16.add()")}}
Returns a new Int8x16 with the lane values added (a + b).
{{jsxref("SIMD.mul", "SIMD.Int8x16.mul()")}}
Returns a new Int8x16 with the lane values multiplied (a * b).
{{jsxref("SIMD.neg", "SIMD.Int8x16.neg()")}}
Returns a new Int8x16 with the negated lane values.
{{jsxref("SIMD.sub", "SIMD.Int8x16.sub()")}}
Returns a new Int8x16 with the lane values subtracted (a - b).

Shuffling and swizzling

{{jsxref("SIMD.shuffle", "SIMD.Int8x16.shuffle()")}}
Returns a new Int8x16 with the lane values shuffled.
{{jsxref("SIMD.swizzle", "SIMD.Int8x16.swizzle()")}}
Returns a new Int8x16 with the lane values swizzled.

Selections

{{jsxref("SIMD.select", "SIMD.Int8x16.select()")}}
Returns a new Int8x16 with the lane values being a mix of the lanes depending on the selector mask.
{{jsxref("SIMD.selectBits", "SIMD.Int8x16.selectBits()")}}
Returns a new Int8x16 with the lane values being a mix of bits depending on the selector mask.

Comparisons

{{jsxref("SIMD.equal", "SIMD.Int8x16.equal()")}}
Returns a selection mask depending on a == b.
{{jsxref("SIMD.notEqual", "SIMD.Int8x16.notEqual()")}}
Returns a selection mask depending on a != b.
{{jsxref("SIMD.lessThan", "SIMD.Int8x16.lessThan()")}}
Returns a selection mask depending on a < b.
{{jsxref("SIMD.lessThanOrEqual", "SIMD.Int8x16.lessThanOrEqual()")}}
Returns a selection mask depending on a <= b.
{{jsxref("SIMD.greaterThan", "SIMD.Int8x16.greaterThan()")}}
Returns a selection mask depending on a > b.
{{jsxref("SIMD.greaterThanOrEqual", "SIMD.Int8x16.greaterThanOrEqual()")}}
Returns a selection mask depending on a >= b.

Bitwise logical operations

{{jsxref("SIMD.and", "SIMD.Int8x16.and()")}}
Returns a new Int8x16 with the logical AND of the lane values (a & b).
{{jsxref("SIMD.or", "SIMD.Int8x16.or()")}}
Returns a new Int8x16 with the logical OR of the lane values (a | b).
{{jsxref("SIMD.xor", "SIMD.Int8x16.xor()")}}
Returns a new Int8x16 with the logical XOR of the lane values (a ^ b).
{{jsxref("SIMD.not", "SIMD.Int8x16.not()")}}
Returns a new Int8x16 with lane with the logical NOT of the lane values (~a).

Bitwise shift operations

{{jsxref("SIMD.shiftLeftByScalar", "SIMD.Int8x16.shiftLeftByScalar()")}}
Returns a new Int8x16 with the lane values shifted left by a given bit count (a << bits).
{{jsxref("SIMD.shiftRightArithmeticByScalar", "SIMD.Int8x16.shiftRightArithmeticByScalar()")}}
Returns a new Int8x16 with the lane values shifted right (arithmetic) by a given bit count (a >> bits).
{{jsxref("SIMD.shiftRightLogicalByScalar", "SIMD.Int8x16.shiftRightLogicalByScalar()")}}
Returns a new Int8x16 with the lane values shifted right (logical) by a given bit count (a >>> bits).

Data conversions

{{jsxref("SIMD.fromFloat32x4Bits", "SIMD.Int8x16.fromFloat32x4Bits()")}}
Creates a new Int8x16 data type with a bit-wise copy from a Float32x4.
{{jsxref("SIMD.fromFloat64x2Bits", "SIMD.Int8x16.fromFloat64x2Bits()")}}
Creates a new Int8x16 data type with a bit-wise copy from a Float64x2.
{{jsxref("SIMD.fromInt32x4Bits", "SIMD.Int8x16.fromInt32x4Bits()")}}
Creates a new Int8x16 data type with a bit-wise copy from an Int32x4.
{{jsxref("SIMD.fromInt16x8Bits", "SIMD.nt8x16.fromInt16x8Bits()")}}
Creates a new Int8x16 data type with a bit-wise copy from an Int16x8.

Examples

Constructing an Int8x16

SIMD.Int8x16(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16);
 // Int8x16[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
SIMD.Int8x16(1, 2);
 // Int8x16[1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
SIMD.Int8x16();
 // Int8x16[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]

Specifications

Specification Status Comment
{{SpecName('SIMD', '#int8x16', 'Int8x16')}} {{Spec2('SIMD')}} Initial definition.

Browser compatibility

{{CompatibilityTable}}

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support {{CompatNo}} {{CompatNightly("firefox")}} {{CompatNo}} {{CompatNo}} {{CompatNo}}
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support {{CompatNo}} {{CompatNo}} {{CompatNightly("firefox")}} {{CompatNo}} {{CompatNo}} {{CompatNo}}

See also

  • {{jsxref("SIMD")}}

Revision Source

<div>{{JSRef}} {{es7}}</div>

<p>The <strong><code>SIMD.Int8x16</code></strong> data type is a 128-bit vector divided into 16 lanes storing 8-bit signed integer values.</p>

<div><img alt="SIMD.int8x16" src="https://mdn.mozillademos.org/files/10669/int8x16.png" />
<p>Figure 1: SIMD.Int8x16 in a 128-bit SIMD register.</p>
</div>

<h2 id="Syntax">Syntax</h2>

<pre class="syntaxbox">
SIMD.Int8x16(s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15);</pre>

<h3 id="Parameters">Parameters</h3>

<dl>
 <dt><code>s[0-15]</code> {{optional_inline}}</dt>
 <dd>An integer specifying the value of the lane. Defaults to 0.</dd>
</dl>

<h2 id="Constructor_functions">Constructor functions</h2>

<p>In addition to the simple creator functions, the SIMD API provides the following constructor functions:</p>

<dl>
 <dt>{{jsxref("SIMD.splat", "SIMD.Int8x16.splat()")}}</dt>
 <dd>Creates an Int8x16 with all lanes set to a given value.</dd>
 <dt>{{jsxref("SIMD.bool", "SIMD.Int8x16.bool()")}}</dt>
 <dd>Creates an Int8x16 with boolean parameters, allowing you to create an explicit selection mask.</dd>
</dl>

<p>Note that you can also <a href="#Data_conversions">convert from another SIMD data type to Int8x16</a>.</p>

<div class="note">
<p><strong>Note:</strong> SIMD types don't work with <code>new</code>, as SIMD values are no "boxed" objects (comparable to <code>String(s)</code> vs. <code>new String(s)</code>, which creates a String object).</p>

<pre class="brush: js example-bad">
var v = new SIMD.Int8x16(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16); 
// TypeError: SIMD.Int8x16 is not a constructor</pre>

<p>Instead, you just write:</p>

<pre class="brush: js example-good">
var v = SIMD.Int8x16(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16);</pre>
</div>

<h2 id="Operations">Operations</h2>

<p>To actually do something with SIMD types, SIMD operations are needed that work on SIMD data types.</p>

<h3 id="Checking_SIMD_types">Checking SIMD types</h3>

<dl>
 <dt>{{jsxref("SIMD.check", "SIMD.Int8x16.check()")}}</dt>
 <dd>Returns a new Int8x16 if the parameter is a valid Int8x16 data type. Throws a {{jsxref("TypeError")}} otherwise.</dd>
</dl>

<h3 id="Accessing_and_mutating_lanes">Accessing and mutating lanes</h3>

<dl>
 <dt>{{jsxref("SIMD.extractLane", "SIMD.Int8x16.extractLane()")}}</dt>
 <dd>Returns the value of the given lane.</dd>
 <dt>{{jsxref("SIMD.replaceLane", "SIMD.Int8x16.replaceLane()")}}</dt>
 <dd>Returns a new Int8x16 with the given lane value replaced.</dd>
</dl>

<h3 id="Loading_from_and_storing_into_typed_arrays">Loading from and storing into typed arrays</h3>

<dl>
 <dt>{{jsxref("SIMD.load", "SIMD.Int8x16.load()")}}</dt>
 <dd>Returns a new Int8x16 with the lane values loaded from a <a href="/en-US/docs/Web/JavaScript/Typed_arrays">typed array</a>.</dd>
 <dt>{{jsxref("SIMD.store", "SIMD.Int8x16.store()")}}</dt>
 <dd>Stores an Int8x16 into a <a href="/en-US/docs/Web/JavaScript/Typed_arrays">typed array</a>.</dd>
</dl>

<h3 id="Arithmetic_operations">Arithmetic operations</h3>

<dl>
 <dt>{{jsxref("SIMD.add", "SIMD.Int8x16.add()")}}</dt>
 <dd>Returns a new Int8x16 with the lane values added (<code>a + b</code>).</dd>
 <dt>{{jsxref("SIMD.mul", "SIMD.Int8x16.mul()")}}</dt>
 <dd>Returns a new Int8x16 with the lane values multiplied (<code>a * b</code>).</dd>
 <dt>{{jsxref("SIMD.neg", "SIMD.Int8x16.neg()")}}</dt>
 <dd>Returns a new Int8x16 with the negated lane values.</dd>
 <dt>{{jsxref("SIMD.sub", "SIMD.Int8x16.sub()")}}</dt>
 <dd>Returns a new Int8x16 with the lane values subtracted (<code>a - b</code>).</dd>
</dl>

<h3 id="Shuffling_and_swizzling">Shuffling and swizzling</h3>

<dl>
 <dt>{{jsxref("SIMD.shuffle", "SIMD.Int8x16.shuffle()")}}</dt>
 <dd>Returns a new Int8x16 with the lane values shuffled.</dd>
 <dt>{{jsxref("SIMD.swizzle", "SIMD.Int8x16.swizzle()")}}</dt>
 <dd>Returns a new Int8x16 with the lane values swizzled.</dd>
</dl>

<h3 id="Selections">Selections</h3>

<dl>
 <dt>{{jsxref("SIMD.select", "SIMD.Int8x16.select()")}}</dt>
 <dd>Returns a new Int8x16 with the lane values being a mix of the lanes depending on the selector mask.</dd>
 <dt>{{jsxref("SIMD.selectBits", "SIMD.Int8x16.selectBits()")}}</dt>
 <dd>Returns a new Int8x16 with the lane values being a mix of bits depending on the selector mask.</dd>
</dl>

<h3 id="Comparisons">Comparisons</h3>

<dl>
 <dt>{{jsxref("SIMD.equal", "SIMD.Int8x16.equal()")}}</dt>
 <dd>Returns a selection mask depending on <code>a == b</code>.</dd>
 <dt>{{jsxref("SIMD.notEqual", "SIMD.Int8x16.notEqual()")}}</dt>
 <dd>Returns a selection mask depending on <code>a != b</code>.</dd>
 <dt>{{jsxref("SIMD.lessThan", "SIMD.Int8x16.lessThan()")}}</dt>
 <dd>Returns a selection mask depending on <code>a &lt; b</code>.</dd>
 <dt>{{jsxref("SIMD.lessThanOrEqual", "SIMD.Int8x16.lessThanOrEqual()")}}</dt>
 <dd>Returns a selection mask depending on <code>a &lt;= b</code>.</dd>
 <dt>{{jsxref("SIMD.greaterThan", "SIMD.Int8x16.greaterThan()")}}</dt>
 <dd>Returns a selection mask depending on <code>a &gt; b</code>.</dd>
 <dt>{{jsxref("SIMD.greaterThanOrEqual", "SIMD.Int8x16.greaterThanOrEqual()")}}</dt>
 <dd>Returns a selection mask depending on <code>a &gt;= b</code>.</dd>
</dl>

<h3 id="Bitwise_logical_operations">Bitwise logical operations</h3>

<dl>
 <dt>{{jsxref("SIMD.and", "SIMD.Int8x16.and()")}}</dt>
 <dd>Returns a new Int8x16 with the logical AND of the lane values (<code>a &amp; b</code>).</dd>
 <dt>{{jsxref("SIMD.or", "SIMD.Int8x16.or()")}}</dt>
 <dd>Returns a new Int8x16 with the logical OR of the lane values (<code>a | b</code>).</dd>
 <dt>{{jsxref("SIMD.xor", "SIMD.Int8x16.xor()")}}</dt>
 <dd>Returns a new Int8x16 with the logical XOR of the lane values (<code>a ^ b</code>).</dd>
 <dt>{{jsxref("SIMD.not", "SIMD.Int8x16.not()")}}</dt>
 <dd>Returns a new Int8x16 with lane with the logical NOT of the lane values (<code>~a</code>).</dd>
</dl>

<h3 id="Bitwise_shift_operations">Bitwise shift operations</h3>

<dl>
 <dt>{{jsxref("SIMD.shiftLeftByScalar", "SIMD.Int8x16.shiftLeftByScalar()")}}</dt>
 <dd>Returns a new Int8x16 with the lane values shifted left by a given bit count (<code>a &lt;&lt; bits</code>).</dd>
 <dt>{{jsxref("SIMD.shiftRightArithmeticByScalar", "SIMD.Int8x16.shiftRightArithmeticByScalar()")}}</dt>
 <dd>Returns a new Int8x16 with the lane values shifted right (arithmetic) by a given bit count (<code>a &gt;&gt; bits</code>).</dd>
 <dt>{{jsxref("SIMD.shiftRightLogicalByScalar", "SIMD.Int8x16.shiftRightLogicalByScalar()")}}</dt>
 <dd>Returns a new Int8x16 with the lane values shifted right (logical) by a given bit count (<code>a &gt;&gt;&gt; bits</code>).</dd>
</dl>

<h3 id="Data_conversions">Data conversions</h3>

<dl>
 <dt>{{jsxref("SIMD.fromFloat32x4Bits", "SIMD.Int8x16.fromFloat32x4Bits()")}}</dt>
 <dd>Creates a new Int8x16 data type with a bit-wise copy from a Float32x4.</dd>
 <dt>{{jsxref("SIMD.fromFloat64x2Bits", "SIMD.Int8x16.fromFloat64x2Bits()")}}</dt>
 <dd>Creates a new Int8x16 data type with a bit-wise copy from a Float64x2.</dd>
 <dt>{{jsxref("SIMD.fromInt32x4Bits", "SIMD.Int8x16.fromInt32x4Bits()")}}</dt>
 <dd>Creates a new Int8x16 data type with a bit-wise copy from an Int32x4.</dd>
 <dt>{{jsxref("SIMD.fromInt16x8Bits", "SIMD.nt8x16.fromInt16x8Bits()")}}</dt>
 <dd>Creates a new Int8x16 data type with a bit-wise copy from an Int16x8.</dd>
</dl>

<h2 id="Examples">Examples</h2>

<h3 id="Constructing_an_int8x16">Constructing an Int8x16</h3>

<pre class="brush: js">
SIMD.Int8x16(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16);
 // Int8x16[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
SIMD.Int8x16(1, 2);
 // Int8x16[1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
SIMD.Int8x16();
 // Int8x16[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
</pre>

<h2 id="Specifications">Specifications</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">Specification</th>
   <th scope="col">Status</th>
   <th scope="col">Comment</th>
  </tr>
  <tr>
   <td>{{SpecName('SIMD', '#int8x16', 'Int8x16')}}</td>
   <td>{{Spec2('SIMD')}}</td>
   <td>Initial definition.</td>
  </tr>
 </tbody>
</table>

<h2 id="Browser_compatibility">Browser compatibility</h2>

<p>{{CompatibilityTable}}</p>

<div id="compat-desktop">
<table class="compat-table">
 <tbody>
  <tr>
   <th>Feature</th>
   <th>Chrome</th>
   <th>Firefox (Gecko)</th>
   <th>Internet Explorer</th>
   <th>Opera</th>
   <th>Safari</th>
  </tr>
  <tr>
   <td>Basic support</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNightly("firefox")}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
  </tr>
 </tbody>
</table>
</div>

<div id="compat-mobile">
<table class="compat-table">
 <tbody>
  <tr>
   <th>Feature</th>
   <th>Android</th>
   <th>Chrome for Android</th>
   <th>Firefox Mobile (Gecko)</th>
   <th>IE Mobile</th>
   <th>Opera Mobile</th>
   <th>Safari Mobile</th>
  </tr>
  <tr>
   <td>Basic support</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNightly("firefox")}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
  </tr>
 </tbody>
</table>
</div>

<h2 id="See_also">See also</h2>

<ul>
 <li>{{jsxref("SIMD")}}</li>
</ul>
Revert to this revision