My main goal for this project was to understand my GPU's machine code (SASS) better and I accomplished that. I did want to have more of a functioning disassembler and editor for the SASS code - right now I'm just disassembling the IADD3 instruction. I'll still be working on that viewer/editor so if anyone's interested in that stay tuned. Here's a screenshot of the current state of the viewer/editor:
The numbers next to the IADD3 instructions are in order:
- destination register
- 1st source register (optionally negated/inverted)
- 2nd source register (optionally negated/inverted)
- 3rd source register (optionally negated/inverted)
- first carry out predicate
- first carry in predicate (optionally negated)
- second carry out predicate
- second carry in predicate (optionally negated)
all of these use negated True (!P7) for the second carry in, but P0 aka False aka 0 should work as well - still have to test to make sure that what's going on here is 2 carry ins and outs