summaryrefslogtreecommitdiffstats
path: root/src/video_core/shader/decode/arithmetic_integer.cpp (follow)
Commit message (Collapse)AuthorAgeFilesLines
* video_core: Remove unnecessary enum class casting in logging messagesLioncash2020-12-071-1/+1
| | | | | | | fmt now automatically prints the numeric value of an enum class member by default, so we don't need to use casts any more. Reduces the line noise a bit.
* video_core: Resolve more variable shadowing scenarios pt.3Lioncash2020-12-051-3/+4
| | | | | Cleans out the rest of the occurrences of variable shadowing and makes any further occurrences of shadowing compiler errors.
* video_core: Allow copy elision to take place where applicableLioncash2020-07-211-3/+3
| | | | | Removes const from some variables that are returned from functions, as this allows the move assignment/constructors to execute for them.
* shader/arithmetic_integer: Fix tracking issue in temporaryReinUsesLisp2020-04-281-4/+0
| | | | | This temporary is not needed as we mark Rd.CC + IADD.X as unimplemented. It caused issues when tracking global buffers.
* shader/arithmetic_integer: Fix edge case and mark IADD.X Rd.CC as unimplementedReinUsesLisp2020-04-261-1/+6
| | | | | IADD.X Rd.CC requires some extra logic that is not currently implemented. Abort when this is hit.
* shader/arithmetic_integer: Change IAdd to UAdd to avoid signed overflowReinUsesLisp2020-04-261-2/+2
| | | | | | Signed integer addition overflow might be undefined behavior. It's free to change operations to UAdd and use unsigned integers to avoid potential bugs.
* shader/arithmetic_integer: Implement IADD.XReinUsesLisp2020-04-261-0/+6
| | | | | IADD.X takes the carry flag and adds it to the result. This is generally used to emulate 64-bit operations with 32-bit registers.
* shader/arithmetic_integer: Implement CC for IADDReinUsesLisp2020-04-261-3/+19
|
* shader/arithmetic_integer: Fix LEA_IMM encodingReinUsesLisp2020-04-211-2/+2
| | | | | | | The operand order in LEA_IMM was flipped compared to nvdisasm. Fix that using nxas as reference: https://github.com/ReinUsesLisp/nxas/blob/8dbc38995711cc12206aa370145a3a02665fd989/table.h#L122
* shader/lea: Simplify generated LEA codeReinUsesLisp2020-03-281-3/+2
|
* shader/lea: Fix op_a and op_b usagesReinUsesLisp2020-03-271-2/+2
| | | | They were swapped.
* shader/lea: Remove const and use move when possibleReinUsesLisp2020-03-271-11/+5
|
* nit: add const to where it need.Nguyen Dac Nam2020-02-211-14/+14
|
* shader: implement LOP3 fast replace for old functionNguyen Dac Nam2020-02-211-36/+58
| | | ref: https://devtalk.nvidia.com/default/topic/1070081/cuda-programming-and-performance/reverse-lut-for-lop3-lut/
* shader/decode: Fix constant buffer offsetsReinUsesLisp2020-02-051-2/+2
| | | | | | Some instances were using cbuf34.offset instead of cbuf34.GetOffset(). This returned the an invalid offset. Address those instances and rename offset to "shifted_offset" to avoid future bugs.
* shader: Remove curly braces initializers on shared pointersReinUsesLisp2020-02-021-1/+1
|
* Shader_IR: Address FeedbackFernando Sahmkow2019-11-181-5/+6
|
* Shader_IR: Implement FLO instruction.Fernando Sahmkow2019-11-141-0/+18
|
* video_core/shader: Resolve instances of variable shadowingLioncash2019-10-241-3/+3
| | | | Silences a few -Wshadow warnings.
* Shader_IR: ICMP corrections and fixesFernando Sahmkow2019-09-211-6/+9
|
* Shader_IR: Implement ICMP.Fernando Sahmkow2019-09-201-0/+26
|
* shader: Use shared_ptr to store nodes and move initialization to fileReinUsesLisp2019-06-061-0/+1
| | | | | | | | | Instead of having a vector of unique_ptr stored in a vector and returning star pointers to this, use shared_ptr. While changing initialization code, move it to a separate file when possible. This is a first step to allow code analysis and node generation beyond the ShaderIR class.
* Fix incorrect value for CC bit in IADDFernando Sahmkow2019-02-111-2/+2
|
* shader_ir: Rename BasicBlock to NodeBlockReinUsesLisp2019-02-031-2/+2
| | | | It's not always used as a basic block. Rename it for consistency.
* shader_ir: Pass decoded nodes as a whole instead of per basic blocksReinUsesLisp2019-02-031-1/+1
| | | | | | | | | Some games call LDG at the top of a basic block, making the tracking heuristic to fail. This commit lets the heuristic the decoded nodes as a whole instead of per basic blocks. This may lead to some false positives but allows it the heuristic to track cases it previously couldn't.
* shader_ir: Unify constant buffer offset valuesReinUsesLisp2019-01-301-1/+1
| | | | | | | Constant buffer values on the shader IR were using different offsets if the access direct or indirect. cbuf34 has a non-multiplied offset while cbuf36 does. On shader decoding this commit multiplies it by four on cbuf34 queries.
* shader_ir: Pass to decoder functions basic block's codeReinUsesLisp2019-01-151-1/+1
|
* shader_decode: Improve zero flag implementationReinUsesLisp2019-01-151-17/+14
|
* shader_decode: Use BitfieldExtract instead of shift + andReinUsesLisp2019-01-151-3/+2
|
* shader_decode: Implement POPCReinUsesLisp2019-01-151-0/+10
|
* shader_decode: Implement LEAReinUsesLisp2019-01-151-0/+55
|
* shader_decode: Implement IADD3ReinUsesLisp2019-01-151-0/+61
|
* shader_decode: Implement LOP3ReinUsesLisp2019-01-151-0/+60
|
* shader_decode: Implement IMNMXReinUsesLisp2019-01-151-0/+16
|
* shader_decode: Implement ISCADDReinUsesLisp2019-01-151-0/+15
|
* shader_decode: Implement LOPReinUsesLisp2019-01-151-0/+15
|
* shader_decode: Implement SELReinUsesLisp2019-01-151-0/+8
|
* shader_decode: Implement IADDReinUsesLisp2019-01-151-1/+28
|
* shader_ir: Initial implementationReinUsesLisp2019-01-151-0/+24