Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | video_core: Allow copy elision to take place where applicable | Lioncash | 2020-07-21 | 1 | -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 temporary | ReinUsesLisp | 2020-04-28 | 1 | -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 unimplemented | ReinUsesLisp | 2020-04-26 | 1 | -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 overflow | ReinUsesLisp | 2020-04-26 | 1 | -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.X | ReinUsesLisp | 2020-04-26 | 1 | -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 IADD | ReinUsesLisp | 2020-04-26 | 1 | -3/+19 |
| | |||||
* | shader/arithmetic_integer: Fix LEA_IMM encoding | ReinUsesLisp | 2020-04-21 | 1 | -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 code | ReinUsesLisp | 2020-03-28 | 1 | -3/+2 |
| | |||||
* | shader/lea: Fix op_a and op_b usages | ReinUsesLisp | 2020-03-27 | 1 | -2/+2 |
| | | | | They were swapped. | ||||
* | shader/lea: Remove const and use move when possible | ReinUsesLisp | 2020-03-27 | 1 | -11/+5 |
| | |||||
* | nit: add const to where it need. | Nguyen Dac Nam | 2020-02-21 | 1 | -14/+14 |
| | |||||
* | shader: implement LOP3 fast replace for old function | Nguyen Dac Nam | 2020-02-21 | 1 | -36/+58 |
| | | | ref: https://devtalk.nvidia.com/default/topic/1070081/cuda-programming-and-performance/reverse-lut-for-lop3-lut/ | ||||
* | shader/decode: Fix constant buffer offsets | ReinUsesLisp | 2020-02-05 | 1 | -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 pointers | ReinUsesLisp | 2020-02-02 | 1 | -1/+1 |
| | |||||
* | Shader_IR: Address Feedback | Fernando Sahmkow | 2019-11-18 | 1 | -5/+6 |
| | |||||
* | Shader_IR: Implement FLO instruction. | Fernando Sahmkow | 2019-11-14 | 1 | -0/+18 |
| | |||||
* | video_core/shader: Resolve instances of variable shadowing | Lioncash | 2019-10-24 | 1 | -3/+3 |
| | | | | Silences a few -Wshadow warnings. | ||||
* | Shader_IR: ICMP corrections and fixes | Fernando Sahmkow | 2019-09-21 | 1 | -6/+9 |
| | |||||
* | Shader_IR: Implement ICMP. | Fernando Sahmkow | 2019-09-20 | 1 | -0/+26 |
| | |||||
* | shader: Use shared_ptr to store nodes and move initialization to file | ReinUsesLisp | 2019-06-06 | 1 | -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 IADD | Fernando Sahmkow | 2019-02-11 | 1 | -2/+2 |
| | |||||
* | shader_ir: Rename BasicBlock to NodeBlock | ReinUsesLisp | 2019-02-03 | 1 | -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 blocks | ReinUsesLisp | 2019-02-03 | 1 | -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 values | ReinUsesLisp | 2019-01-30 | 1 | -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 code | ReinUsesLisp | 2019-01-15 | 1 | -1/+1 |
| | |||||
* | shader_decode: Improve zero flag implementation | ReinUsesLisp | 2019-01-15 | 1 | -17/+14 |
| | |||||
* | shader_decode: Use BitfieldExtract instead of shift + and | ReinUsesLisp | 2019-01-15 | 1 | -3/+2 |
| | |||||
* | shader_decode: Implement POPC | ReinUsesLisp | 2019-01-15 | 1 | -0/+10 |
| | |||||
* | shader_decode: Implement LEA | ReinUsesLisp | 2019-01-15 | 1 | -0/+55 |
| | |||||
* | shader_decode: Implement IADD3 | ReinUsesLisp | 2019-01-15 | 1 | -0/+61 |
| | |||||
* | shader_decode: Implement LOP3 | ReinUsesLisp | 2019-01-15 | 1 | -0/+60 |
| | |||||
* | shader_decode: Implement IMNMX | ReinUsesLisp | 2019-01-15 | 1 | -0/+16 |
| | |||||
* | shader_decode: Implement ISCADD | ReinUsesLisp | 2019-01-15 | 1 | -0/+15 |
| | |||||
* | shader_decode: Implement LOP | ReinUsesLisp | 2019-01-15 | 1 | -0/+15 |
| | |||||
* | shader_decode: Implement SEL | ReinUsesLisp | 2019-01-15 | 1 | -0/+8 |
| | |||||
* | shader_decode: Implement IADD | ReinUsesLisp | 2019-01-15 | 1 | -1/+28 |
| | |||||
* | shader_ir: Initial implementation | ReinUsesLisp | 2019-01-15 | 1 | -0/+24 |