Commit Graph

11040 Commits

Author SHA1 Message Date
baldurk fc5c58a6c9 Move reflection to separate file, implement GetOutputTopology() 2020-06-18 17:22:42 +01:00
baldurk 6fcd4fee91 Ignore PSV0 chunk 2020-06-18 17:22:42 +01:00
baldurk b4db14915a Disassemble empty types with no padding 2020-06-18 17:22:42 +01:00
baldurk 505a674b85 Ensure DXIL populates compute shader fake input signature 2020-06-18 17:22:42 +01:00
baldurk 2081c4219c Ignore DXIL STAT chunk since we decode bytecode always 2020-06-18 17:22:42 +01:00
baldurk fec709b2d1 Support using ILDN to locate separate debug info
* This works the same way as the existing separate pdb support
2020-06-18 17:22:42 +01:00
baldurk 57721e4688 Include new ILDN chunk and global flags in disassembly
* This is used for both DXBC and DXIL bytecode
2020-06-18 17:22:42 +01:00
baldurk 6641030fbc Print types in same order as LLVM 2020-06-18 17:22:42 +01:00
baldurk d73452f012 Print metadata values inline instead of referencing them by number 2020-06-18 17:22:42 +01:00
baldurk df1187b8ee Support naming basic blocks in function symbol table 2020-06-18 17:22:42 +01:00
baldurk 343e13def0 Fix disassembly of DIDerivedType 2020-06-18 17:22:42 +01:00
baldurk 6093690737 Match LLVM's escaping behaviour 2020-06-18 17:22:42 +01:00
baldurk c1838c89fc Handle atomic instructions 2020-06-18 17:22:41 +01:00
baldurk 5a976e55ea Fetch compute thread dimension from dx.entrypoint metadata 2020-06-18 17:22:41 +01:00
baldurk 77d60b72da Save address space in pointer types 2020-06-18 17:22:41 +01:00
baldurk b54248ad49 Fix indexing of symbols for metadata 2020-06-18 17:22:41 +01:00
baldurk e29502ddcb Handle switch opcode 2020-06-18 17:22:41 +01:00
baldurk 26d4244d25 Fix disassembly of DILexicalBlock 2020-06-18 17:22:41 +01:00
baldurk 340bf9f805 Add handling for branching and phi nodes 2020-06-18 17:22:41 +01:00
baldurk 08cd7ae0e0 Handle explicit debug info
* Some locations are given as metadata even though most appear through
  DEBUG_LOC, so ensure we handle these.
2020-06-18 17:22:41 +01:00
baldurk 8b57989b3f Disassemble global variables with initialisers properly 2020-06-18 17:22:41 +01:00
baldurk c8742a1456 Handle extract/insert/shuffle vector and aggregate operations
* DXIL supposedly won't use these, but handle them just in case
2020-06-18 17:22:41 +01:00
baldurk a6c8949335 Handle compare and select operations 2020-06-18 17:22:41 +01:00
baldurk d99a8536ca Decode alloca/gep/load/store 2020-06-18 17:22:41 +01:00
baldurk 591e02b565 Handled attached metadata 2020-06-18 17:22:40 +01:00
baldurk 10da3b73ae Add support for DISubrange 2020-06-18 17:22:40 +01:00
baldurk 9697bc294d Add helper to find and cache void type 2020-06-18 17:22:40 +01:00
baldurk 0000916e75 Expose svbr rotated encoding as static member of LLVM bit reader 2020-06-18 17:22:40 +01:00
baldurk bfea4427aa Stub out exception handling instructions we don't expect to appear 2020-06-18 17:22:40 +01:00
baldurk 657a5a0c39 Handle binops in functions 2020-06-18 17:22:40 +01:00
baldurk 6f950afea7 Fix display of double values 2020-06-18 17:22:40 +01:00
baldurk 84da098a00 Only pad exponential float printing of exponent to 2 decimal digits 2020-06-18 17:22:40 +01:00
baldurk 41cf02aa53 Use %e for printing floats 2020-06-18 17:22:40 +01:00
baldurk ef076f962a Disassemble all bitcasts the same way 2020-06-18 17:22:40 +01:00
baldurk 4c4cdae5a9 Remove extra space in type declarations 2020-06-18 17:22:40 +01:00
baldurk 80205a887c Add special zeroinitializer disassembly 2020-06-18 17:22:40 +01:00
baldurk c94b157165 Remove bitcode dump functions 2020-06-18 17:22:40 +01:00
baldurk 39eb8da8f2 Move disassembly to separate file 2020-06-18 17:22:39 +01:00
baldurk 3dfb9a069d Parse and disassemble function blocks 2020-06-18 17:22:39 +01:00
baldurk 297ba38e94 Remove unused GetDisassemblyLine function 2020-06-18 17:22:39 +01:00
baldurk 0869f338bc Handle local debug information metadata 2020-06-18 17:22:39 +01:00
baldurk c29fce8366 Count line numbers for disassembly 2020-06-18 17:22:39 +01:00
baldurk 25321e741f Decode metadata for global debug information 2020-06-18 17:22:39 +01:00
baldurk d28bab8c79 Handle (but skip) STAT DXIL chunk 2020-06-18 17:22:39 +01:00
baldurk 8727b2aa88 Implement constant block parsing 2020-06-18 17:22:39 +01:00
baldurk 395e8325c2 Implement handling for function types and declarations 2020-06-18 17:22:39 +01:00
baldurk 143181d829 Process types record 2020-06-18 17:22:39 +01:00
baldurk 144e8057c1 Improve LLVM record dumping a bit 2020-06-18 17:22:39 +01:00
baldurk 0c54db28aa Stub types and constants blocks 2020-06-18 17:22:39 +01:00
baldurk 99aa195e40 Handle attributes 2020-06-18 17:22:38 +01:00