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 クラス
R、A、B は、該当する Ivec クラスを使用して宣言された変数
次の表は、符号とサイズを対象とした自動的型キャストと明示的型キャストを列挙したものです。"明示的" は、異なるデータ型をいくつか混在させるときは必ず型キャストを明示的に指定しなければならないという意味です。"自動的" は、複数のデータ型を混在させたときにコンパイラが自動的に型キャストを行うという意味です。
演算子 | 符号の型キャスト | サイズの型キャスト | 型キャストに関するその他の要件 |
---|---|---|---|
代入 | N/A | N/A | N/A |
論理 | 自動的 | 自動的 (左辺) |
代入演算子の右辺に論理式以外の式が使用されていて、かつその中に、異なるデータ型が混在している場合は、明示的な型キャストが必要です。 |
加算と減算 | 自動的 | 明示的 | N/A |
乗算 | 自動的 | 明示的 | N/A |
シフト | 自動的 | 明示的 | 算術演算シフトを確実に行うには型キャストが必要です。 |
比較 | 自動的 | 明示的 | 「<」または「>」の比較を行う場合は、符号付きクラスについては明示的な型キャストが必要です。 |
条件付き選択 | 自動的 | 明示的 | 「<」または「>」の比較を行う場合は、符号付きクラスについては明示的な型キャストが必要です。 |
次の表は、すべてのクラスサイズについて、コンストラクタの宣言とデータ型の初期化の例を列挙したものです。どの値についても、最上位要素が左側、最下位要素が右側で初期化されます。
操作 | クラス | 構文 |
---|---|---|
宣言 | 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); |