summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/frontend/ir/ir_emitter.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/shader_recompiler/frontend/ir/ir_emitter.h')
-rw-r--r--src/shader_recompiler/frontend/ir/ir_emitter.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/shader_recompiler/frontend/ir/ir_emitter.h b/src/shader_recompiler/frontend/ir/ir_emitter.h
index ec60070ef..f9cbf1304 100644
--- a/src/shader_recompiler/frontend/ir/ir_emitter.h
+++ b/src/shader_recompiler/frontend/ir/ir_emitter.h
@@ -228,6 +228,45 @@ public:
228 [[nodiscard]] U1 INotEqual(const U32& lhs, const U32& rhs); 228 [[nodiscard]] U1 INotEqual(const U32& lhs, const U32& rhs);
229 [[nodiscard]] U1 IGreaterThanEqual(const U32& lhs, const U32& rhs, bool is_signed); 229 [[nodiscard]] U1 IGreaterThanEqual(const U32& lhs, const U32& rhs, bool is_signed);
230 230
231 [[nodiscard]] U32 SharedAtomicIAdd(const U32& pointer_offset, const U32& value);
232 [[nodiscard]] U32 SharedAtomicSMin(const U32& pointer_offset, const U32& value);
233 [[nodiscard]] U32 SharedAtomicUMin(const U32& pointer_offset, const U32& value);
234 [[nodiscard]] U32 SharedAtomicIMin(const U32& pointer_offset, const U32& value, bool is_signed);
235 [[nodiscard]] U32 SharedAtomicSMax(const U32& pointer_offset, const U32& value);
236 [[nodiscard]] U32 SharedAtomicUMax(const U32& pointer_offset, const U32& value);
237 [[nodiscard]] U32 SharedAtomicIMax(const U32& pointer_offset, const U32& value, bool is_signed);
238 [[nodiscard]] U32 SharedAtomicInc(const U32& pointer_offset, const U32& value);
239 [[nodiscard]] U32 SharedAtomicDec(const U32& pointer_offset, const U32& value);
240 [[nodiscard]] U32 SharedAtomicAnd(const U32& pointer_offset, const U32& value);
241 [[nodiscard]] U32 SharedAtomicOr(const U32& pointer_offset, const U32& value);
242 [[nodiscard]] U32 SharedAtomicXor(const U32& pointer_offset, const U32& value);
243 [[nodiscard]] U32U64 SharedAtomicExchange(const U32& pointer_offset, const U32U64& value);
244
245 [[nodiscard]] U32U64 GlobalAtomicIAdd(const U64& pointer_offset, const U32U64& value);
246 [[nodiscard]] U32U64 GlobalAtomicSMin(const U64& pointer_offset, const U32U64& value);
247 [[nodiscard]] U32U64 GlobalAtomicUMin(const U64& pointer_offset, const U32U64& value);
248 [[nodiscard]] U32U64 GlobalAtomicIMin(const U64& pointer_offset, const U32U64& value,
249 bool is_signed);
250 [[nodiscard]] U32U64 GlobalAtomicSMax(const U64& pointer_offset, const U32U64& value);
251 [[nodiscard]] U32U64 GlobalAtomicUMax(const U64& pointer_offset, const U32U64& value);
252 [[nodiscard]] U32U64 GlobalAtomicIMax(const U64& pointer_offset, const U32U64& value,
253 bool is_signed);
254 [[nodiscard]] U32 GlobalAtomicInc(const U64& pointer_offset, const U32& value);
255 [[nodiscard]] U32 GlobalAtomicDec(const U64& pointer_offset, const U32& value);
256 [[nodiscard]] U32U64 GlobalAtomicAnd(const U64& pointer_offset, const U32U64& value);
257 [[nodiscard]] U32U64 GlobalAtomicOr(const U64& pointer_offset, const U32U64& value);
258 [[nodiscard]] U32U64 GlobalAtomicXor(const U64& pointer_offset, const U32U64& value);
259 [[nodiscard]] U32U64 GlobalAtomicExchange(const U64& pointer_offset, const U32U64& value);
260
261 [[nodiscard]] F32 GlobalAtomicF32Add(const U64& pointer_offset, const Value& value,
262 const FpControl control = {});
263 [[nodiscard]] Value GlobalAtomicF16x2Add(const U64& pointer_offset, const Value& value,
264 const FpControl control = {});
265 [[nodiscard]] Value GlobalAtomicF16x2Min(const U64& pointer_offset, const Value& value,
266 const FpControl control = {});
267 [[nodiscard]] Value GlobalAtomicF16x2Max(const U64& pointer_offset, const Value& value,
268 const FpControl control = {});
269
231 [[nodiscard]] U1 LogicalOr(const U1& a, const U1& b); 270 [[nodiscard]] U1 LogicalOr(const U1& a, const U1& b);
232 [[nodiscard]] U1 LogicalAnd(const U1& a, const U1& b); 271 [[nodiscard]] U1 LogicalAnd(const U1& a, const U1& b);
233 [[nodiscard]] U1 LogicalXor(const U1& a, const U1& b); 272 [[nodiscard]] U1 LogicalXor(const U1& a, const U1& b);