Stefanos Kornilios Mitsis Poiitidis

Results 336 comments of Stefanos Kornilios Mitsis Poiitidis

Maybe `gcc-i686-linux-gnu g++-i686-linux-gnu gcc-multilib-i686-linux-gnu g++-multilib-i686-linux-gnu gcc-x86-64-linux-gnu g++-x86-64-linux-gnu gcc-multilib-x86-64-linux-gnu g++-multilib-x86-64-linux-gnu` Is a better package list Though ``` The following packages have unmet dependencies: g++-11-multilib-x86-64-linux-gnu:i386 : Depends: lib32stdc++-11-dev-amd64-cross:i386 (>= 11.2.0-17ubuntu1cross1) but it...

`g++-multilib-i686-linux-gnu` and `g++-multilib-x86_64-linux-gnu` and `lld` We also need to be able to use `lld-12` (cmake change)

Also, ` libc6-dev-amd64-cross` for guest `Scrt1.o` & friends

Woop woop, thanks for the repro, will take a look later today :)

Reproduced [slowcompile.zip](https://github.com/FEX-Emu/FEX/files/8978727/slowcompile.zip)

``` (%ssa1171 i64) StoreMem GPR, u8:Tmp:Size, %ssa181(GPR3) i64, %ssa95(GPR0) i64, %ssa1169(Invalid), #0x1, SXTX, #0x1 (%ssa1172 i64) SpillRegister %ssa95(GPR0) i64, #0x3, GPR (%ssa1173 i0) GuestOpcode #0xb6d (%ssa1174 i64) InlineConstant #0x700 (%ssa1175...

There's also a few imm spills ``` %ssa1116(GPR6) i64 = EntrypointOffset #0x1d2df, u8:Tmp:RegisterSize (%ssa1117 i64) SpillRegister %ssa1116(GPR6) i64, #0x2, GPR [... several ops later ...] %ssa1214(GPR0) i64 = FillRegister %ssa1116(GPR6)...

I've attached some of the offending blocks. Overall, it looks like it's just a "too big" block, and that is what is causing the slowness. The register allocator takes kind-of-exponential...

``` // If this node's live range fully encompasses the live range of the interference node // then spilling that interference node will not lower RA // | Our Node...

Among other things, this also hashes the actual block ranges, not (start, end). It also limits the blocks to a single vma mapping. So we don't compile code from multiple...