diff options
author | Simon Dardis <simon.dardis@gmail.com> | 2022-04-07 00:31:33 +0100 |
---|---|---|
committer | Simon Dardis <simon.dardis@gmail.com> | 2022-04-07 01:02:29 +0100 |
commit | 303c180199b73eb9c2840d05c92afeb9326e2e15 (patch) | |
tree | 03993c1bf110dc9849b6e80c413877ed5419506f /llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp | |
parent | 09c2b7c35af8c4bad39f03e9f60df8bd07323028 (diff) | |
download | llvm-303c180199b73eb9c2840d05c92afeb9326e2e15.zip llvm-303c180199b73eb9c2840d05c92afeb9326e2e15.tar.gz llvm-303c180199b73eb9c2840d05c92afeb9326e2e15.tar.bz2 |
[MIPS] Initial support for MIPS-I load delay slots
LLVM so far has only supported the MIPS-II and above architectures. MIPS-II is pretty close to MIPS-I, the major difference
being that "load" instructions always take one extra instruction slot to propogate to registers. This patch adds support for
MIPS-I by adding hazard handling for load delay slots, alongside MIPSR6 forbidden slots and FPU slots, inserting a NOP
instruction between a load and any instruction immediately following that reads the load's destination register. I also
included a simple regression test. Since no existing tests target MIPS-I, those all still pass.
Issue ref: https://github.com/simias/psx-sdk-rs/issues/1
I also tested by building a simple demo app with Clang and running it in an emulator.
Patch by: @impiaaa
Differential Revision: https://reviews.llvm.org/D122427
Diffstat (limited to 'llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp')
0 files changed, 0 insertions, 0 deletions