演算子の規則

Ivec クラスで演算子を使用するときは、次の構文規則のいずれかに従う必要があります:

[ Ivec_Class ] R = [ Ivec_Class ] A [ operator ][ Ivec_Class ] B

例 1: I64vec1 R = I64vec1 A & I64vec1 B;

[ Ivec_Class ] R =[ operator ] ([ Ivec_Class ] A,[ Ivec_Class ] B)

例 2: I64vec1 R = andnot(I64vec1 A, I64vec1 B);

[ Ivec_Class ] R [ operator ]= [ Ivec_Class ] A

例 3: I64vec1 R &= I64vec1 A;

[ operator ] は演算子 (例えば、&、|、^)

[ Ivec_Class ] は Ivec クラス

RAB は、該当する Ivec クラスを使用して宣言された変数

次の表は、符号とサイズを対象とした自動的型キャストと明示的型キャストを列挙したものです。"明示的" は、異なるデータ型をいくつか混在させるときは必ず型キャストを明示的に指定しなければならないという意味です。"自動的" は、複数のデータ型を混在させたときにコンパイラが自動的に型キャストを行うという意味です。

主要演算子の規則一覧

演算子 符号の型
キャスト
サイズの型
キャスト
型キャストに関するその他の要件
代入 N/A N/A N/A
論理 自動的 自動的
(左辺)
代入演算子の右辺に論理式以外の式が使用されていて、かつその中に、異なるデータ型が混在している場合は、明示的な型キャストが必要です。
加算と減算 自動的 明示的 N/A
乗算 自動的 明示的 N/A
シフト 自動的 明示的 算術演算シフトを確実に行うには型キャストが必要です。
比較 自動的 明示的 「<」または「>」の比較を行う場合は、符号付きクラスについては明示的な型キャストが必要です。
条件付き選択 自動的 明示的 「<」または「>」の比較を行う場合は、符号付きクラスについては明示的な型キャストが必要です。

データの宣言と初期化

次の表は、すべてのクラスサイズについて、コンストラクタの宣言とデータ型の初期化の例を列挙したものです。どの値についても、最上位要素が左側、最下位要素が右側で初期化されます。

Ivec クラスのデータ型の宣言と初期化

操作 クラス 構文
宣言 M128 I128vec1 A; Iu8vec16 A;
宣言 M64 I64vec1 A; Iu8vec16 A;
__m128 の初期化 M128 I128vec1 A(__m128 m); Iu16vec8(__m128 m);
__m64 の初期化 M64 I64vec1 A(__m64 m);Iu8vec8 A(__m64 m);
__int64 の初期化 M64 I64vec1 A = __int64 m; Iu8vec8 A =__int64 m;
int i の初期化 M64 I64vec1 A = int i; Iu8vec8 A = int i;
int の初期化 I32vec2 I32vec2 A(int A1, int A0);
Is32vec2 A(signed int A1, signed int A0);
Iu32vec2 A(unsigned int A1, unsigned int A0);
int の初期化 I32vec4 I32vec4 A(short A3, short A2, short A1, short A0);
Is32vec4 A(signed short A3, ..., signed short A0);
Iu32vec4 A(unsigned short A3, ..., unsigned short A0);
short int
の初期化
I16vec4 I16vec4 A(short A3, short A2, short A1, short A0);
Is16vec4 A(signed short A3, ..., signed short A0);
Iu16vec4 A(unsigned short A3, ..., unsigned short A0);
short int
の初期化
I16vec8 I16vec8 A(short A7, short A6, ..., short A1, short A0);
Is16vec8 A(signed A7, ..., signed short A0);
Iu16vec8 A(unsigned short A7, ..., unsigned short A0);
char
の初期化
I8vec8 I8vec8 A(char A7, char A6, ..., char A1, char A0);
Is8vec8 A(signed char A7, ..., signed char A0);
Iu8vec8 A(unsigned char A7, ..., unsigned char A0);
char
の初期化
I8vec16 I8vec16 A(char A15, ..., char A0);
Is8vec16 A(signed char A15, ..., signed char A0);
Iu8vec16 A(unsigned char A15, ..., unsigned char A0);