インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
二項算術演算を実行します。このトピックは、インテル® グラフィックス・テクノロジーをターゲットとする場合にのみ適用されます。
加算
char _gfx_add_i8(char src0, char src1, unsigned int flags);
short _gfx_add_i16(short src0, short src1, unsigned int flags);
int _gfx_add_i32(int src0, int src1, unsigned int flags); float _gfx_add_f32(float src0, float src1, unsigned int flags); double _gfx_add_f64(double src0, double src1, unsigned int flags);
減算
char _gfx_sub_i8(char src0, char src1, unsigned int flags);
short _gfx_sub_i16(short src0, short src1, unsigned int flags);
int _gfx_sub_i32(int src0, int src1, unsigned int flags);
float _gfx_sub_f32(float src0, float src1, unsigned int flags);
double _gfx_sub_f64(double src0, double src1, unsigned int flags);
乗算
char _gfx_mullo_i8(char src0, char src1, unsigned int flags);
short _gfx_mullo_i16(short src0, short src1, unsigned int flags);
int _gfx_mullo_i32(int src0, int src1, unsigned int flags);
float _gfx_mul_f32(float src0, float src1, unsigned int flags);
double _gfx_mul_f64(double src0, double src1, unsigned int flags);
src0、src1 |
二項演算のオペランド |
||||
flags |
操作の追加のセマンティクスを示すフラグ。設定可能な値は以下のとおりです。
|
これらの関数は、flags 引数で指定された追加のセマンティクスを使用して、さまざまな型のオペランド src0 と src1 の二項演算を行います。組込み関数の型のサフィックスは演算の型を示しています。
現在、次の演算がサポートされています。
演算 |
基本セマンティクス |
---|---|
add |
src0 + src1 |
sub |
src0 - src1 |
mullo、mul |
src0 * src1 mullo は char、short、および int 型で利用できます。mullo では、結果がデスティネーションの型の幅に切り捨てられます。 mul は浮動小数点型で利用できます。 |
flags の値を指定することで、演算を飽和モードまたは非飽和モードで実行できます。飽和モードでは、演算結果がデスティネーションの型の飽和範囲を超える場合、結果は範囲内の最も近い境界になります。次の表は、それぞれの型の飽和範囲を示します。
型 |
飽和範囲 |
---|---|
char |
-128 ~ 127 |
short |
-32768 ~ 32767 |
int |
-2147483648 ~ 2147483647 |
float、double |
-1 ~ 1 |
次に例を示します。
_gfx_add_i8(100, 100, GFX_SAT); は 127 を返します。
_gfx_add_i8(100, 100, 0); は -56 を返します (通常の加算と同様)。
この組込み関数は、ベクトルループの配列表記のようなベクトル・コンテキストで利用できます。その場合、組込み関数はコンパイラーによってベクトル化され、独立した演算が並列に実行されます。
操作の結果。