| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541 |
- // Copyright 2021 yuzu Emulator Project
- // Licensed under GPLv2 or any later version
- // Refer to the license.txt file included.
- #include <string_view>
- #include "shader_recompiler/backend/glasm/emit_context.h"
- #include "shader_recompiler/backend/glasm/emit_glasm_instructions.h"
- #include "shader_recompiler/frontend/ir/program.h"
- #include "shader_recompiler/frontend/ir/value.h"
- #ifdef _MSC_VER
- #pragma warning(disable : 4100)
- #endif
- namespace Shader::Backend::GLASM {
- #define NotImplemented() throw NotImplementedException("GLASM instruction {}", __LINE__)
- void EmitPhi(EmitContext& ctx, IR::Inst& inst) {
- NotImplemented();
- }
- void EmitVoid(EmitContext&) {}
- void EmitBranch(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitBranchConditional(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitLoopMerge(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitSelectionMerge(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitReturn(EmitContext& ctx) {
- ctx.Add("RET;");
- }
- void EmitJoin(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitUnreachable(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitDemoteToHelperInvocation(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitBarrier(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitWorkgroupMemoryBarrier(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitDeviceMemoryBarrier(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitPrologue(EmitContext& ctx) {
- // TODO
- }
- void EmitEpilogue(EmitContext& ctx) {
- // TODO
- }
- void EmitEmitVertex(EmitContext& ctx, const IR::Value& stream) {
- NotImplemented();
- }
- void EmitEndPrimitive(EmitContext& ctx, const IR::Value& stream) {
- NotImplemented();
- }
- void EmitGetRegister(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitSetRegister(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitGetPred(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitSetPred(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitSetGotoVariable(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitGetGotoVariable(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitSetIndirectBranchVariable(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitGetIndirectBranchVariable(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitGetZFlag(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitGetSFlag(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitGetCFlag(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitGetOFlag(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitSetZFlag(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitSetSFlag(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitSetCFlag(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitSetOFlag(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitWorkgroupId(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitLocalInvocationId(EmitContext& ctx, IR::Inst& inst) {
- ctx.Add("MOV.S {},invocation.localid;", inst);
- }
- void EmitInvocationId(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitSampleId(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitIsHelperInvocation(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitYDirection(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitLoadLocal(EmitContext& ctx, ScalarU32 word_offset) {
- NotImplemented();
- }
- void EmitWriteLocal(EmitContext& ctx, ScalarU32 word_offset, ScalarU32 value) {
- NotImplemented();
- }
- void EmitUndefU1(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitUndefU8(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitUndefU16(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitUndefU32(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitUndefU64(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitGetZeroFromOp(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitGetSignFromOp(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitGetCarryFromOp(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitGetOverflowFromOp(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitGetSparseFromOp(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitGetInBoundsFromOp(EmitContext& ctx) {
- NotImplemented();
- }
- void EmitLogicalOr(EmitContext& ctx, IR::Inst& inst, ScalarS32 a, ScalarS32 b) {
- ctx.Add("OR.S {},{},{};", inst, a, b);
- }
- void EmitLogicalAnd(EmitContext& ctx, IR::Inst& inst, ScalarS32 a, ScalarS32 b) {
- ctx.Add("AND.S {},{},{};", inst, a, b);
- }
- void EmitLogicalXor(EmitContext& ctx, IR::Inst& inst, ScalarS32 a, ScalarS32 b) {
- ctx.Add("XOR.S {},{},{};", inst, a, b);
- }
- void EmitLogicalNot(EmitContext& ctx, IR::Inst& inst, ScalarS32 value) {
- ctx.Add("SEQ.S {},{},0;", inst, value);
- }
- void EmitBindlessImageSampleImplicitLod(EmitContext&) {
- NotImplemented();
- }
- void EmitBindlessImageSampleExplicitLod(EmitContext&) {
- NotImplemented();
- }
- void EmitBindlessImageSampleDrefImplicitLod(EmitContext&) {
- NotImplemented();
- }
- void EmitBindlessImageSampleDrefExplicitLod(EmitContext&) {
- NotImplemented();
- }
- void EmitBindlessImageGather(EmitContext&) {
- NotImplemented();
- }
- void EmitBindlessImageGatherDref(EmitContext&) {
- NotImplemented();
- }
- void EmitBindlessImageFetch(EmitContext&) {
- NotImplemented();
- }
- void EmitBindlessImageQueryDimensions(EmitContext&) {
- NotImplemented();
- }
- void EmitBindlessImageQueryLod(EmitContext&) {
- NotImplemented();
- }
- void EmitBindlessImageGradient(EmitContext&) {
- NotImplemented();
- }
- void EmitBindlessImageRead(EmitContext&) {
- NotImplemented();
- }
- void EmitBindlessImageWrite(EmitContext&) {
- NotImplemented();
- }
- void EmitBoundImageSampleImplicitLod(EmitContext&) {
- NotImplemented();
- }
- void EmitBoundImageSampleExplicitLod(EmitContext&) {
- NotImplemented();
- }
- void EmitBoundImageSampleDrefImplicitLod(EmitContext&) {
- NotImplemented();
- }
- void EmitBoundImageSampleDrefExplicitLod(EmitContext&) {
- NotImplemented();
- }
- void EmitBoundImageGather(EmitContext&) {
- NotImplemented();
- }
- void EmitBoundImageGatherDref(EmitContext&) {
- NotImplemented();
- }
- void EmitBoundImageFetch(EmitContext&) {
- NotImplemented();
- }
- void EmitBoundImageQueryDimensions(EmitContext&) {
- NotImplemented();
- }
- void EmitBoundImageQueryLod(EmitContext&) {
- NotImplemented();
- }
- void EmitBoundImageGradient(EmitContext&) {
- NotImplemented();
- }
- void EmitBoundImageRead(EmitContext&) {
- NotImplemented();
- }
- void EmitBoundImageWrite(EmitContext&) {
- NotImplemented();
- }
- void EmitImageSampleImplicitLod(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
- Register coords, Register bias_lc, const IR::Value& offset) {
- NotImplemented();
- }
- void EmitImageSampleExplicitLod(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
- Register coords, Register lod_lc, const IR::Value& offset) {
- NotImplemented();
- }
- void EmitImageSampleDrefImplicitLod(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
- Register coords, Register dref, Register bias_lc,
- const IR::Value& offset) {
- NotImplemented();
- }
- void EmitImageSampleDrefExplicitLod(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
- Register coords, Register dref, Register lod_lc,
- const IR::Value& offset) {
- NotImplemented();
- }
- void EmitImageGather(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, Register coords,
- const IR::Value& offset, const IR::Value& offset2) {
- NotImplemented();
- }
- void EmitImageGatherDref(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, Register coords,
- const IR::Value& offset, const IR::Value& offset2, Register dref) {
- NotImplemented();
- }
- void EmitImageFetch(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, Register coords,
- Register offset, Register lod, Register ms) {
- NotImplemented();
- }
- void EmitImageQueryDimensions(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
- Register lod) {
- NotImplemented();
- }
- void EmitImageQueryLod(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, Register coords) {
- NotImplemented();
- }
- void EmitImageGradient(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, Register coords,
- Register derivates, Register offset, Register lod_clamp) {
- NotImplemented();
- }
- void EmitImageRead(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, Register coords) {
- NotImplemented();
- }
- void EmitImageWrite(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, Register coords,
- Register color) {
- NotImplemented();
- }
- void EmitBindlessImageAtomicIAdd32(EmitContext&) {
- NotImplemented();
- }
- void EmitBindlessImageAtomicSMin32(EmitContext&) {
- NotImplemented();
- }
- void EmitBindlessImageAtomicUMin32(EmitContext&) {
- NotImplemented();
- }
- void EmitBindlessImageAtomicSMax32(EmitContext&) {
- NotImplemented();
- }
- void EmitBindlessImageAtomicUMax32(EmitContext&) {
- NotImplemented();
- }
- void EmitBindlessImageAtomicInc32(EmitContext&) {
- NotImplemented();
- }
- void EmitBindlessImageAtomicDec32(EmitContext&) {
- NotImplemented();
- }
- void EmitBindlessImageAtomicAnd32(EmitContext&) {
- NotImplemented();
- }
- void EmitBindlessImageAtomicOr32(EmitContext&) {
- NotImplemented();
- }
- void EmitBindlessImageAtomicXor32(EmitContext&) {
- NotImplemented();
- }
- void EmitBindlessImageAtomicExchange32(EmitContext&) {
- NotImplemented();
- }
- void EmitBoundImageAtomicIAdd32(EmitContext&) {
- NotImplemented();
- }
- void EmitBoundImageAtomicSMin32(EmitContext&) {
- NotImplemented();
- }
- void EmitBoundImageAtomicUMin32(EmitContext&) {
- NotImplemented();
- }
- void EmitBoundImageAtomicSMax32(EmitContext&) {
- NotImplemented();
- }
- void EmitBoundImageAtomicUMax32(EmitContext&) {
- NotImplemented();
- }
- void EmitBoundImageAtomicInc32(EmitContext&) {
- NotImplemented();
- }
- void EmitBoundImageAtomicDec32(EmitContext&) {
- NotImplemented();
- }
- void EmitBoundImageAtomicAnd32(EmitContext&) {
- NotImplemented();
- }
- void EmitBoundImageAtomicOr32(EmitContext&) {
- NotImplemented();
- }
- void EmitBoundImageAtomicXor32(EmitContext&) {
- NotImplemented();
- }
- void EmitBoundImageAtomicExchange32(EmitContext&) {
- NotImplemented();
- }
- void EmitImageAtomicIAdd32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
- Register coords, ScalarU32 value) {
- NotImplemented();
- }
- void EmitImageAtomicSMin32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
- Register coords, ScalarS32 value) {
- NotImplemented();
- }
- void EmitImageAtomicUMin32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
- Register coords, ScalarU32 value) {
- NotImplemented();
- }
- void EmitImageAtomicSMax32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
- Register coords, ScalarS32 value) {
- NotImplemented();
- }
- void EmitImageAtomicUMax32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
- Register coords, ScalarU32 value) {
- NotImplemented();
- }
- void EmitImageAtomicInc32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, Register coords,
- ScalarU32 value) {
- NotImplemented();
- }
- void EmitImageAtomicDec32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, Register coords,
- ScalarU32 value) {
- NotImplemented();
- }
- void EmitImageAtomicAnd32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, Register coords,
- ScalarU32 value) {
- NotImplemented();
- }
- void EmitImageAtomicOr32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, Register coords,
- ScalarU32 value) {
- NotImplemented();
- }
- void EmitImageAtomicXor32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index, Register coords,
- ScalarU32 value) {
- NotImplemented();
- }
- void EmitImageAtomicExchange32(EmitContext& ctx, IR::Inst& inst, const IR::Value& index,
- Register coords, ScalarU32 value) {
- NotImplemented();
- }
- } // namespace Shader::Backend::GLASM
|