summaryrefslogtreecommitdiffstats
path: root/src/shader_recompiler/frontend (unfollow)
Commit message (Collapse)AuthorFilesLines
2021-07-26shader_recompiler: Remove unnecessary [[nodiscard]] instancesLioncash2-4/+4
[[nodiscard]] doesn't do anything on functions with a void return type and causes superfluous warnings.
2021-07-26control_flow: Fix duplicate switch case in OpcodeTokenLioncash1-1/+1
This previously duplicated the case of the PBK case above it.
2021-07-26shader: Add TryInstRecursive utility to valuesReinUsesLisp1-0/+8
2021-07-23shader: Support out of bound local memory reads and immediate writesReinUsesLisp1-4/+21
Support ignoring immediate out of bound writes. Writing dynamically out of bounds is not yet supported (e.g. R0+0x4). Reading out of bounds yields zero. This is supported checking for the size from the IR; if the input is immediate, the optimization passes will drop it.
2021-07-23shader: Implement ISETP.Xameerj4-44/+57
2021-07-23shader: Avoid usage of C++20 ranges to build in clangReinUsesLisp3-18/+23
2021-07-23shader_recompiler, video_core: Resolve clang errorslat9nq8-29/+23
Silences the following warnings-turned-errors: -Wsign-conversion -Wunused-private-field -Wbraced-scalar-init -Wunused-variable And some other errors
2021-07-23shader: Manually convert from array<u32> to bitset instead of using bit_castReinUsesLisp1-2/+3
2021-07-23shader: Ignore global memory ops on devices lacking int64 supportameerj1-14/+14
2021-07-23shader: GCC fmt 8.0.0 fixeslat9nq1-1/+1
2021-07-23shader: Account for 33-bit IADD3 scenarioameerj1-2/+10
2021-07-23shader: Only apply shift on register mode for IADD3ReinUsesLisp1-10/+14
2021-07-23shader: Use std::bit_cast instead of Common::BitCast for passthroughReinUsesLisp1-2/+3
2021-07-23shader: Rework varyings and implement passthrough geometry shadersReinUsesLisp3-8/+17
Put all varyings into a single std::bitset with helpers to access it. Implement passthrough geometry shaders using host's.
2021-07-23shader: Only verify shader when graphics debugging is enabledReinUsesLisp1-2/+7
2021-07-23shader: Emulate 64-bit integers when not supportedReinUsesLisp1-0/+3
Useful for mobile and Intel Xe devices.
2021-07-23shader: Remove IAbs64ReinUsesLisp3-11/+3
2021-07-23shader_recompiler: Fix IADD3 input partitioningameerj1-14/+13
2021-07-23shader: Move loop safety tests to code emissionReinUsesLisp4-46/+4
2021-07-23shader: Calibrate loop safety thresholdReinUsesLisp1-1/+1
2021-07-23shader: Simplify MergeDualVertexProgramsReinUsesLisp1-6/+4
2021-07-23shader: Properly manage attributes not written from previous stagesReinUsesLisp1-1/+3
2021-07-23shader: Add support for native 16-bit floatsReinUsesLisp2-4/+7
2021-07-23shader: Rename maxwell/program.h to translate_program.hReinUsesLisp2-7/+2
2021-07-23shader: Fix loop safety to SSA passReinUsesLisp1-1/+3
2021-07-23shader: Add loggingReinUsesLisp4-7/+7
2021-07-23shader: Add shader loop safety check settingslat9nq4-6/+55
Also add a setting for enable Nsight Aftermath.
2021-07-23shader: Comment why the array component is not read in TMMLReinUsesLisp1-0/+2
2021-07-23tmml: Remove index component from coords vecameerj1-4/+3
The lod query functions exposed by the rendering API's do not make use of the texturearray layer indexing.
2021-07-23shader: Fix VertexA Shaders.FernandoS271-5/+14
2021-07-23shader: Add 2D and 3D variants to SUATOM and SUREDReinUsesLisp1-0/+4
Used by Claybook.
2021-07-23shader: Avoid CPU side undefined behavior on I2FReinUsesLisp1-0/+2
2021-07-23shader: Add support for "negative" and unaligned offsetsReinUsesLisp1-2/+2
"Negative" offsets don't exist. They are shown as such due to a bug in nvdisasm. Unaligned offsets have been proved to read the aligned offset. For example, when reading an U32, if the offset is 6, the offset read will be 4.
2021-07-23shader: Implement ISCADD32IReinUsesLisp1-17/+31
2021-07-23shader: Always initialize up reference in structure control flowReinUsesLisp1-31/+36
Fixes ubsan issue.
2021-07-23shader: Fix ImageWrite indexingReinUsesLisp1-1/+1
2021-07-23shader: Fix TMML queriesReinUsesLisp1-5/+9
2021-07-23shader: Handle host exceptionsReinUsesLisp3-5/+11
2021-07-23Revert "glasm: Skip phi moves on undefined instructions"ReinUsesLisp1-13/+0
Causes regressions on Bowser's Fury.
2021-07-23glasm: Skip phi moves on undefined instructionsReinUsesLisp1-0/+13
2021-07-23video_core,shader: Clang-format fixesReinUsesLisp2-2/+2
2021-07-23shader: Read branch conditions from an instructionReinUsesLisp5-11/+16
Fixes the identity removal pass.
2021-07-23glasm: Implement TEX and TEXS instructionsReinUsesLisp4-22/+17
Remove lod clamp from texture instructions with lod, as this is not needed (nor supported).
2021-07-23shader_recompiler: GCC fixeslat9nq4-33/+30
Fixes members of unnamed union not being accessible, and one function without a declaration.
2021-07-23shader: Use a non-trivial dummy to construct ASL node unionReinUsesLisp1-1/+6
2021-07-23glasm: Initial implementation of phi nodes on GLASMReinUsesLisp6-10/+28
2021-07-23glasm: Rework control flow introducing a syntax listReinUsesLisp19-344/+312
This commit regresses VertexA shaders, their transformation pass has to be adapted to the new control flow.
2021-07-23shader: Add floating-point rounding to I2FReinUsesLisp3-35/+42
2021-07-23glasm: Implement basic GLASM instructionsReinUsesLisp1-0/+6
2021-07-23glasm: Add GLASM backend infrastructureReinUsesLisp1-0/+6
2021-07-23shader: ISET.X implementationameerj1-8/+58
2021-07-23shader: Optimize NVN FallthroughFernandoS271-2/+5
2021-07-23shader: Stub SR_AFFINITYFernandoS271-0/+3
2021-07-23shader: Implement Int32 SUATOM/SUREDameerj8-5/+393
2021-07-23shader: Initial OpenGL implementationReinUsesLisp3-0/+12
2021-07-23shader: Address feedbackFernandoS273-24/+24
2021-07-23shader: Implement VertexA stageFernandoS274-0/+32
2021-07-23shader: Implement delegation of Exit to dispatcher on CFGFernandoS272-3/+47
2021-07-23shader: Fix IADD3.CCameerj1-12/+5
2021-07-23shader: Fix VMNMX selector BReinUsesLisp1-1/+2
2021-07-23shader: Remove identity removal pass for better build timesReinUsesLisp1-1/+0
2021-07-23shader: Add missing UndoUse case for GetSparseFromOpReinUsesLisp1-0/+4
2021-07-23shader: Simplify code in opcodes.h to fix IntellisenseReinUsesLisp1-8/+6
Avoid using std::array to fix Intellisense not properly compiling this code and disabling itself on all files that include it. While we are at it, change the code to use u8 instead of size_t for the number of instructions in an opcode.
2021-07-23shader: Implement indexed texturesReinUsesLisp2-20/+21
2021-07-23shader: Refactor atomic_operations_global_memoryameerj1-44/+36
2021-07-23shader: add missing include guard in half_floating_point_helper.hameerj1-0/+2
2021-07-23shader: Fix gcc warningsReinUsesLisp2-2/+2
2021-07-23shader: Inline common Value gettersReinUsesLisp2-109/+102
2021-07-23shader: Intrusively store in a block if it's sealed or notReinUsesLisp1-0/+9
2021-07-23shader: Improve goto removal algorithm complexityReinUsesLisp1-49/+28
Find sibling node containing a nephew searching from the nephew itself instead of the uncle.
2021-07-23shader: Use memset to reset instruction argumentsReinUsesLisp2-4/+7
2021-07-23shader: Inline common Value functions into the headerReinUsesLisp2-19/+23
2021-07-23shader: Move microinstruction header to the value headerReinUsesLisp8-169/+153
2021-07-23shader: Move siblings check to a separate function and comment them outReinUsesLisp1-16/+21
2021-07-23shader: Intrusively store register values in block for SSA passReinUsesLisp1-0/+10
2021-07-23shader: Inline common Opcode and Inst functionsReinUsesLisp4-112/+83
2021-07-23shader: Inline common IR::Block methodsReinUsesLisp2-17/+12
2021-07-23shader: Use a small_vector for phi blocksReinUsesLisp1-1/+2
2021-07-23shader: Calculate number of arguments in an opcode at compile timeReinUsesLisp1-3/+12
2021-07-23shader: Simplify code for local memoryReinUsesLisp1-6/+11
2021-07-23shader: Add NVN storage buffer fallbacksReinUsesLisp1-0/+43
When we can't track the SSBO origin of a global memory instruction, leave it as a global memory operation and assume these pointers are in the NVN storage buffer slots, then apply a linear search in the shader's runtime.
2021-07-23shader: Address feedbackFernandoS272-7/+10
2021-07-23shader: Implement F2F (Imm)FernandoS271-2/+28
2021-07-23shader: Implement IADD3.CC/.XFernandoS271-7/+22
2021-07-23shader: Add coarse derivativesFernandoS273-0/+14
2021-07-23shader: Implement fine derivates constant propagationFernandoS273-0/+14
2021-07-23shader: Implement SR_Y_DIRECTIONFernandoS274-0/+8
2021-07-23shader: Fix Phi node typesReinUsesLisp1-4/+0
2021-07-23shader: Fix memory barriersReinUsesLisp6-50/+23
2021-07-23shader: Implement BFE and BFI CCameerj2-12/+16
Fix two bugs in BFI.
2021-07-23shader: Implement SampleMaskReinUsesLisp5-1/+8
2021-07-23shader: Implement PIXLD.MY_INDEXReinUsesLisp5-4/+52
2021-07-23shader: Implement tessellation shaders, polygon mode and invocation idReinUsesLisp13-33/+259
2021-07-23shader: Implement transform feedbacks and define file formatReinUsesLisp2-0/+9
2021-07-23shader: Document and relax cache control on surface instructionsReinUsesLisp1-10/+11
2021-07-23shader: Implement geometry shadersReinUsesLisp6-19/+48
2021-07-23shader: Implement OUTReinUsesLisp7-17/+62
2021-07-23internal_stage_buffer_entry_read: Remove pragma optimize offlat9nq1-2/+0
2021-07-23shader: Stub SR_INVOCATION_INFOReinUsesLisp1-2/+5
2021-07-23shader: Stub ISBERDReinUsesLisp2-4/+55
2021-07-23shader: Fix CC in I2IReinUsesLisp1-0/+2
2021-07-23shader: Simplify FLO and throw on CCReinUsesLisp1-12/+13
2021-07-23shader: Mark blocks with no end branch as unreachableReinUsesLisp1-2/+7
2021-07-23shader: Implement LOP CCReinUsesLisp1-3/+11
2021-07-23shader: Implement SR_THREAD_KILLReinUsesLisp4-0/+9
2021-07-23shader: Apply sign bit in FCMP (imm)ReinUsesLisp1-1/+1
2021-07-23shader: Implement ATOM/S and REDameerj7-13/+706
2021-07-23shader: Move LaneId to the warp emission file and fix AMDReinUsesLisp1-1/+1
2021-07-23shader: Mark ImageWrite with side effectsReinUsesLisp1-0/+3
2021-07-23shader: Implement CC for ISET, FSET, PSET, CSET, and DSETFernandoS2718-13/+136
Throw when other instructions are missing CC.
2021-07-23shader: Remove outdated comment in F2IReinUsesLisp1-4/+0
2021-07-23shader: Implement SULD and SUSTReinUsesLisp14-68/+365
2021-07-23shader: Fix Windows build issuesReinUsesLisp1-1/+1
2021-07-23shader: Address feedback + clang formatlat9nq6-15/+15
2021-07-23shader_recompiler,video_core: Cleanup some GCC and Clang errorslat9nq45-206/+184
Mostly fixing unused *, implicit conversion, braced scalar init, fpermissive, and some others. Some Clang errors likely remain in video_core, and std::ranges is still a pertinent issue in shader_recompiler shader_recompiler: cmake: Force bracket depth to 1024 on Clang Increases the maximum fold expression depth thread_worker: Include condition_variable Don't use list initializers in control flow Co-authored-by: ReinUsesLisp <reinuseslisp@airmail.cc>
2021-07-23shader: Fix FCMP immediate variantReinUsesLisp1-1/+9
2021-07-23shader: Fix dangling labelsReinUsesLisp1-0/+5
2021-07-23shader: Fix F2IReinUsesLisp1-1/+1
2021-07-23shader: Address feedbackFernandoS273-20/+25
2021-07-23shader: Implement indexed attributesFernandoS274-14/+37
2021-07-23shader: Implement AL2PFernandoS272-4/+35
2021-07-23shader: Fix BRX trackingFernandoS272-3/+4
2021-07-23shader: Fix splits on blocks using indirect branchesReinUsesLisp3-17/+38
2021-07-23shader: Eliminate orphan blocks more efficientlyReinUsesLisp1-7/+8
2021-07-23shader: Add subgroup masksReinUsesLisp4-35/+105
2021-07-23shader: Implement BAR and fix memory barriersReinUsesLisp5-2/+66
2021-07-23shader: Abstract breadth searches and use the abstractionReinUsesLisp1-0/+57
2021-07-23shader: Reimplement GetCbufU64 as GetCbufU32x2ReinUsesLisp4-12/+12
It may generate better code on some compilers and it's easier to handle.
2021-07-23shader: Remove unused header in VOTEReinUsesLisp1-2/+0
2021-07-23shader: Fix fp16 merge when using native fp16ReinUsesLisp1-3/+3
2021-07-23shader: Fix FADD32IReinUsesLisp1-6/+4
2021-07-23shader: Fix undetected bug from reviewFernandoS271-0/+3
2021-07-23shader: Address feedbackFernandoS271-1/+7
2021-07-23shader: "Implement" NOPFernandoS271-1/+1
2021-07-23shader: Address FeedbackFernandoS277-80/+25
2021-07-23shader: Implement SR_LaneIdFernandoS274-0/+9
2021-07-23shader: Implement MEMBARFernandoS276-11/+78
2021-07-23shader: Improve VOTE.VTG stubFernandoS274-3/+57
2021-07-23shader: Stub VOTE.VTGFernandoS274-4/+15
2021-07-23shader: Fix branches to visited virtual blocksReinUsesLisp1-0/+10
2021-07-23shader: Implement LDG .U.128 as .128ReinUsesLisp1-3/+2
2021-07-23shader: Unroll "using enum" for opcode declarationsReinUsesLisp1-1/+27
2021-07-23shader: Fix TXDFernandoS271-1/+1
2021-07-23shader: Address feedbackFernandoS273-37/+33
2021-07-23shader: Always pass a lod for TexelFetchReinUsesLisp3-25/+17
2021-07-23shader: Implement TXDFernandoS273-10/+182
2021-07-23shader: Implement ImageGradientFernandoS274-0/+15
2021-07-23shader: Implement TMML partiallyFernandoS274-11/+134
2021-07-23shader,spirv: Implement ImageQueryLod.FernandoS273-0/+11
2021-07-23shader: Implement TLDSFernandoS272-4/+252
2021-07-23shader: Implement TLDFernandoS274-13/+170
2021-07-23shader: Store type of phi nodes in flagsReinUsesLisp2-1/+9
This is needed because pseudo-instructions where invalidated.
2021-07-23shader: Fix indirect branches to scheduler instructionsReinUsesLisp3-7/+17
2021-07-23shader: Add missing new linesReinUsesLisp1-0/+2
2021-07-23shader: Implement FSWZADDameerj7-4/+55
2021-07-23shader: Implement BRXFernandoS2714-44/+347
2021-07-23shader: Fix alignment checks on RZReinUsesLisp1-1/+1
2021-07-23shader: Implement I2I CCameerj1-3/+4
2021-07-23shader: Implement I2I SATameerj4-10/+42
2021-07-23shader: Fix ISCADD logic for PO/CCameerj1-7/+8
2021-07-23shader: Implement LDS, STS, LDL, and STS and use SPIR-V 1.4 when availableReinUsesLisp8-16/+277
2021-07-23shader: Implement ISCADD CCameerj1-1/+4
2021-07-23shader: Implement VMAD, VMNMX, VSETPameerj8-23/+314
2021-07-23shader: Add missing I2I exception when CC is usedReinUsesLisp1-0/+4
2021-07-23shader: Better interpolation and disabled attributes supportReinUsesLisp2-9/+36
2021-07-23spirv: Remove dependencies on Environment when generating SPIR-VReinUsesLisp2-0/+5
2021-07-23shader: Fix structured control flow on KIL instructionsReinUsesLisp2-3/+7
This could potentially leave unvisited blocks, leading to illegal phi nodes.
2021-07-23shader: Fix TXQFernandoS271-1/+1
2021-07-23shader: Implement TXQ and fix FragDepthReinUsesLisp5-8/+86
2021-07-23shader: Refactor PTP and other minor changesReinUsesLisp7-46/+19
2021-07-23shader: Add IR opcode for ImageFetchFernandoS273-2/+15
2021-07-23shader: Implement TLD4.PTPFernandoS278-19/+52
2021-07-23shader: Fix Array Indices in TEX/TLD4FernandoS272-6/+6
2021-07-23shader: Implement FragDepthFernandoS271-1/+1
2021-07-23shader: Implement TLD4S.FernandoS272-4/+133
2021-07-23shader: Implement TLD4 and TLD4_BFernandoS277-10/+237
2021-07-23shader: Implement SHFLameerj8-8/+124
2021-07-23shader: Properly insert Prologue instructionReinUsesLisp1-1/+2
2021-07-23shader: Minor style nitsReinUsesLisp1-2/+4
2021-07-23shader: Fix F2IFernandoS276-5/+124
2021-07-23shader: Implement NDC [-1, 1], attribute types and default varying initializationReinUsesLisp5-1/+23
2021-07-23shader: Implement VOTEameerj5-4/+79
2021-07-23shader: Fix TEX maskReinUsesLisp1-1/+3
2021-07-23shader: Better but still partial interpolation supportReinUsesLisp1-5/+7
2021-07-23shader: Implement DMNMX, DSET, DSETPameerj8-39/+169
2021-07-23shader: Implement FADD32IFernandoS271-2/+15
2021-07-23shader: Implement F2FFernandoS274-19/+188
2021-07-23shader: Implement DMUL and DFMAameerj7-30/+109
Also add a missing const on DADD
2021-07-23shader: Add FP64 register load/store helpersameerj3-21/+24
2021-07-23shader: Add support for fp16 comparisons and misc fixesReinUsesLisp7-14/+28
2021-07-23shader: Fix floating point comparison for FP16FernandoS274-32/+32
2021-07-23shader: Implement HSETP2FernandoS272-12/+116
2021-07-23shader: Implement HSET2FernandoS274-14/+118
2021-07-23shader: Implement HMUL2FernandoS272-16/+143
2021-07-23shader: Implement HFMA2FernandoS274-20/+191
2021-07-23shader: Refactor half floating instructionsFernandoS273-58/+82
2021-07-23shader: Implement I2FReinUsesLisp9-69/+315
2021-07-23shader: Implement ISCADD (imm)ReinUsesLisp1-2/+2
2021-07-23shader: Implement LOP32IReinUsesLisp2-18/+45
2021-07-23shader: Add partial rasterizer integrationReinUsesLisp19-51/+212
2021-07-23shader: Implement DADDameerj6-14/+129
2021-07-23shader: Implement CSET and CSETPameerj5-15/+113
2021-07-23shader: Fix instruction transitions in and out of PhiReinUsesLisp1-9/+11
2021-07-23shader: Implement FSET and FSETPameerj7-92/+198
Also fix oversight with adding SignedZeroInfNanPreserve execution mode.
2021-07-23shader: Implement TEXSReinUsesLisp6-5/+275
2021-07-23shader: Implement CAL inlining function callsReinUsesLisp11-254/+232
2021-07-23shader: Implement FMNMXameerj5-13/+88
And add a const in FCMP
2021-07-23shader: Fix rebase issueReinUsesLisp1-1/+0
2021-07-23shader: Implement FCMPameerj5-49/+184
still need to configure some settings for NV denorm flush and intel NaN
2021-07-23shader: Partial implementation of LDCReinUsesLisp6-10/+128
2021-07-23shader: Initial support for textures and TEXReinUsesLisp13-315/+772
2021-07-23shader: Implement R2Pameerj4-12/+74
2021-07-23shader: Implement SHFameerj5-22/+99
2021-07-23shader: Implement LEAameerj5-26/+122
2021-07-23shader: Deduplicate HADD2 codeReinUsesLisp1-19/+16
2021-07-23shader: Implement I2Iameerj2-12/+99
2021-07-23shader: Implement HADD2ReinUsesLisp6-23/+290
2021-07-23shader: Implement LOP and LOP3ameerj7-31/+225
2021-07-23shader: Implement IADD3ameerj2-12/+103
2021-07-23shader: Implement PSETPameerj3-4/+38
2021-07-23Implement PSET, refactor common comparison funcsameerj8-101/+87
2021-07-23shader: Implement FLOameerj5-15/+61
2021-07-23shader: Implement ISET, add common_funcsameerj7-50/+147
2021-07-23shader: Make IMNMX, SHR, SEL stylistically more consistentameerj3-5/+5
2021-07-23shader: Implement ICMPameerj2-16/+83
2021-07-23shader: Implement IMNMXameerj5-12/+84
2021-07-23shader: Implement BFIameerj2-16/+56
2021-07-23shader: Implement BFEameerj2-12/+66
2021-07-23shader: Implement POPCameerj5-12/+48
2021-07-23shader: Implement SHRameerj5-12/+68
2021-07-23shader: Implement SELameerj2-12/+44
2021-07-23shader: Fix conditional execution of exit instructionsReinUsesLisp2-5/+6
2021-07-23shader: Fix control flowReinUsesLisp8-20/+39
2021-07-23shader: Implement more of XMAD and FFMA32I and fix XMAD.CBCCReinUsesLisp3-22/+70
2021-07-23shader: FMUL, select, RRO, and MUFU fixesReinUsesLisp13-66/+277
2021-07-23shader: Fix MOV(reg), add SHL variants and emit neg and abs instructionsReinUsesLisp2-5/+5
2021-07-23spirv: Fixes and Intel specific workaroundsReinUsesLisp3-12/+9
2021-07-23shader: Rename, implement FADD.SAT and P2R (imm)ReinUsesLisp12-45/+111
2021-07-23shader: Add denorm flush supportReinUsesLisp4-33/+49
2021-07-23spirv: Add lower fp16 to fp32 passReinUsesLisp9-55/+97
2021-07-23shader: Primitive Vulkan integrationReinUsesLisp7-24/+30
2021-07-23shader: Simplify ISCADDReinUsesLisp1-6/+1
2021-07-23shader: Add utility to resolve identities on a valueReinUsesLisp2-0/+8
2021-07-23spirv: Initial bindings supportReinUsesLisp3-3/+22
2021-07-23shader: Improve object poolReinUsesLisp1-5/+5
2021-07-23shader: Add support for forward declarationsReinUsesLisp6-13/+27
2021-07-23shader: Support SSA loops on IRReinUsesLisp4-4/+70
2021-07-23shader: Misc fixesReinUsesLisp5-13/+17
2021-07-23shader: Initial implementation of an ASTReinUsesLisp21-535/+1152
2021-07-23spirv: Initial SPIR-V supportReinUsesLisp3-19/+15
2021-07-23shader: Better constant foldingReinUsesLisp1-1/+1
2021-07-23shader: Properly store phi on InstReinUsesLisp4-59/+115
2021-07-23shader: Add pools and rename filesReinUsesLisp25-87/+113
2021-07-23shader: Make typed IRReinUsesLisp16-258/+463
2021-07-23shader: Constant propagation and global memory to storage bufferReinUsesLisp10-27/+77
2021-07-23shader: Initial instruction supportReinUsesLisp24-243/+1437
2021-07-23shader: SSA and dominanceReinUsesLisp19-74/+401
2021-07-23shader: Initial recompiler workReinUsesLisp45-0/+6582