インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

_gfx_atomic_write_i32

アトミックな読み取り-変更-書き込み操作を実行します。このトピックは、インテル® グラフィックス・テクノロジーをターゲットとする場合にのみ適用されます。

構文

int _gfx_atomic_write_i32(__GfxAtomicOpType op_type, int* ptr, unsigned int offset, int src0, int src1);

パラメーター

op_type

操作の種類。以下に示す列挙型 __GfxAtomicOpType のいずれかの値でなければなりません。old_dst は、操作の前の ptr+offset にあるメモリー値を表します。

アトミック操作

アドレスに格納される値

GFX_ATOMIC_ADD

old_dst + src0

GFX_ATOMIC_SUB

old_dst - src0

GFX_ATOMIC_INC

old_dst + 1

GFX_ATOMIC_DEC

old_dst - 1

GFX_ATOMIC_MIN

unsigned_min(old_dst, src0)

GFX_ATOMIC_MAX

unsigned_max(old_dst, src0)

GFX_ATOMIC_XCHG

src0

GFX_ATOMIC_CMPXCHG

(src0 == old_dst) ? src1 : old_dst

GFX_ATOMIC_AND

old_dst & src0

GFX_ATOMIC_OR

old_dst | src0

GFX_ATOMIC_XOR

old_dst ^ src0

GFX_ATOMIC_MINSINT

signed_min(old_dst, src0)

GFX_ATOMIC_MAXSINT

signed_max(old_dst, src0)

ptr

デスティネーションのベースポインター

offset

アトミックな読み取り-変更-書き込み操作が行われる、ベースポインターからのオフセット。オフセットは、デスティネーション値の要素型のサイズです。

src0

1 つ目のソース。GFX_ATOMIC_INCGFX_ATOMIC_DEC では無視されます。

src1

2 つ目のソース。GFX_ATOMIC_CMPXCHG を除くすべての操作で無視されます。

説明

この関数は、op_type で指定されたアトミックな読み取り-変更-書き込み操作を実行します。ベースポインター ptr とベースポインターからのオフセット offset により、操作を実行するメモリーアドレスを指定します。

最大で 2 つのソース (src0src1) とデスティネーションの以前の値 old_dst を使用して、デスティネーションの新しい値を計算します。各引数の使用法は、op_type で指定される操作に依存します。

この関数は、ベクトルループの配列表記のようなベクトル・コンテキストで使用できます。その場合、組込み関数はコンパイラーによってベクトル化され、複数のメモリー位置に対する操作が並列に実行されます。そのようなケースでは、ptr はベクトルループのすべての反復で同じ値であると仮定されます。ベクトルループの異なる反復によるこの関数の呼び出しは、同じメモリー位置 (つまり、同じオフセット値) を指すことができます。その場合、ハードウェアによって操作が正しくシリアル化されます。

戻り値

書き込み操作の前のメモリー位置の値