summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/backend/spirv/emit_spirv.h
diff options
context:
space:
mode:
authorGravatar ameerj2021-04-11 02:07:02 -0400
committerGravatar ameerj2021-07-22 21:51:27 -0400
commit3db2b3effa953ae66457b7a19b419fc4db2c4801 (patch)
tree04c73897a74be053a610edf60703c72e985ee590 /src/shader_recompiler/backend/spirv/emit_spirv.h
parentnsight_aftermath_tracker: Report used shaders to Nsight Aftermath (diff)
downloadyuzu-3db2b3effa953ae66457b7a19b419fc4db2c4801.tar.gz
yuzu-3db2b3effa953ae66457b7a19b419fc4db2c4801.tar.xz
yuzu-3db2b3effa953ae66457b7a19b419fc4db2c4801.zip
shader: Implement ATOM/S and RED
Diffstat (limited to 'src/shader_recompiler/backend/spirv/emit_spirv.h')
-rw-r--r--src/shader_recompiler/backend/spirv/emit_spirv.h95
1 files changed, 95 insertions, 0 deletions
diff --git a/src/shader_recompiler/backend/spirv/emit_spirv.h b/src/shader_recompiler/backend/spirv/emit_spirv.h
index 12b7993ae..a3398a605 100644
--- a/src/shader_recompiler/backend/spirv/emit_spirv.h
+++ b/src/shader_recompiler/backend/spirv/emit_spirv.h
@@ -306,6 +306,101 @@ Id EmitUGreaterThan(EmitContext& ctx, Id lhs, Id rhs);
306Id EmitINotEqual(EmitContext& ctx, Id lhs, Id rhs); 306Id EmitINotEqual(EmitContext& ctx, Id lhs, Id rhs);
307Id EmitSGreaterThanEqual(EmitContext& ctx, Id lhs, Id rhs); 307Id EmitSGreaterThanEqual(EmitContext& ctx, Id lhs, Id rhs);
308Id EmitUGreaterThanEqual(EmitContext& ctx, Id lhs, Id rhs); 308Id EmitUGreaterThanEqual(EmitContext& ctx, Id lhs, Id rhs);
309Id EmitSharedAtomicIAdd32(EmitContext& ctx, Id pointer_offset, Id value);
310Id EmitSharedAtomicSMin32(EmitContext& ctx, Id pointer_offset, Id value);
311Id EmitSharedAtomicUMin32(EmitContext& ctx, Id pointer_offset, Id value);
312Id EmitSharedAtomicSMax32(EmitContext& ctx, Id pointer_offset, Id value);
313Id EmitSharedAtomicUMax32(EmitContext& ctx, Id pointer_offset, Id value);
314Id EmitSharedAtomicInc32(EmitContext& ctx, Id pointer_offset, Id value);
315Id EmitSharedAtomicDec32(EmitContext& ctx, Id pointer_offset, Id value);
316Id EmitSharedAtomicAnd32(EmitContext& ctx, Id pointer_offset, Id value);
317Id EmitSharedAtomicOr32(EmitContext& ctx, Id pointer_offset, Id value);
318Id EmitSharedAtomicXor32(EmitContext& ctx, Id pointer_offset, Id value);
319Id EmitSharedAtomicExchange32(EmitContext& ctx, Id pointer_offset, Id value);
320Id EmitSharedAtomicExchange64(EmitContext& ctx, Id pointer_offset, Id value);
321Id EmitStorageAtomicIAdd32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
322 Id value);
323Id EmitStorageAtomicSMin32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
324 Id value);
325Id EmitStorageAtomicUMin32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
326 Id value);
327Id EmitStorageAtomicSMax32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
328 Id value);
329Id EmitStorageAtomicUMax32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
330 Id value);
331Id EmitStorageAtomicInc32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
332 Id value);
333Id EmitStorageAtomicDec32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
334 Id value);
335Id EmitStorageAtomicAnd32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
336 Id value);
337Id EmitStorageAtomicOr32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
338 Id value);
339Id EmitStorageAtomicXor32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
340 Id value);
341Id EmitStorageAtomicExchange32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
342 Id value);
343Id EmitStorageAtomicIAdd64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
344 Id value);
345Id EmitStorageAtomicSMin64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
346 Id value);
347Id EmitStorageAtomicUMin64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
348 Id value);
349Id EmitStorageAtomicSMax64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
350 Id value);
351Id EmitStorageAtomicUMax64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
352 Id value);
353Id EmitStorageAtomicAnd64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
354 Id value);
355Id EmitStorageAtomicOr64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
356 Id value);
357Id EmitStorageAtomicXor64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
358 Id value);
359Id EmitStorageAtomicExchange64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
360 Id value);
361Id EmitStorageAtomicAddF32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
362 Id value);
363Id EmitStorageAtomicAddF16x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
364 Id value);
365Id EmitStorageAtomicAddF32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
366 Id value);
367Id EmitStorageAtomicMinF16x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
368 Id value);
369Id EmitStorageAtomicMinF32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
370 Id value);
371Id EmitStorageAtomicMaxF16x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
372 Id value);
373Id EmitStorageAtomicMaxF32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
374 Id value);
375Id EmitGlobalAtomicIAdd32(EmitContext& ctx);
376Id EmitGlobalAtomicSMin32(EmitContext& ctx);
377Id EmitGlobalAtomicUMin32(EmitContext& ctx);
378Id EmitGlobalAtomicSMax32(EmitContext& ctx);
379Id EmitGlobalAtomicUMax32(EmitContext& ctx);
380Id EmitGlobalAtomicInc32(EmitContext& ctx);
381Id EmitGlobalAtomicDec32(EmitContext& ctx);
382Id EmitGlobalAtomicAnd32(EmitContext& ctx);
383Id EmitGlobalAtomicOr32(EmitContext& ctx);
384Id EmitGlobalAtomicXor32(EmitContext& ctx);
385Id EmitGlobalAtomicExchange32(EmitContext& ctx);
386Id EmitGlobalAtomicIAdd64(EmitContext& ctx);
387Id EmitGlobalAtomicSMin64(EmitContext& ctx);
388Id EmitGlobalAtomicUMin64(EmitContext& ctx);
389Id EmitGlobalAtomicSMax64(EmitContext& ctx);
390Id EmitGlobalAtomicUMax64(EmitContext& ctx);
391Id EmitGlobalAtomicInc64(EmitContext& ctx);
392Id EmitGlobalAtomicDec64(EmitContext& ctx);
393Id EmitGlobalAtomicAnd64(EmitContext& ctx);
394Id EmitGlobalAtomicOr64(EmitContext& ctx);
395Id EmitGlobalAtomicXor64(EmitContext& ctx);
396Id EmitGlobalAtomicExchange64(EmitContext& ctx);
397Id EmitGlobalAtomicAddF32(EmitContext& ctx);
398Id EmitGlobalAtomicAddF16x2(EmitContext& ctx);
399Id EmitGlobalAtomicAddF32x2(EmitContext& ctx);
400Id EmitGlobalAtomicMinF16x2(EmitContext& ctx);
401Id EmitGlobalAtomicMinF32x2(EmitContext& ctx);
402Id EmitGlobalAtomicMaxF16x2(EmitContext& ctx);
403Id EmitGlobalAtomicMaxF32x2(EmitContext& ctx);
309Id EmitLogicalOr(EmitContext& ctx, Id a, Id b); 404Id EmitLogicalOr(EmitContext& ctx, Id a, Id b);
310Id EmitLogicalAnd(EmitContext& ctx, Id a, Id b); 405Id EmitLogicalAnd(EmitContext& ctx, Id a, Id b);
311Id EmitLogicalXor(EmitContext& ctx, Id a, Id b); 406Id EmitLogicalXor(EmitContext& ctx, Id a, Id b);