[PATCH] D18315: [mips] MIPSR6 Compact jump support
Daniel Sanders via llvm-commits
llvm-commits at lists.llvm.org
Tue Mar 29 03:58:44 PDT 2016
dsanders added inline comments.
================
Comment at: lib/Target/Mips/Mips64r6InstrInfo.td:88
@@ +87,3 @@
+ bit isTerminator = 1;
+ list<Register> Defs = [AT];
+}
----------------
vkalintiris wrote:
> I know that you probably based the definition on the 32-bit description, but do you know why we have to define $at?
I haven't dug into the details of exactly what can/can't cause it and I don't know whether it applies to this instruction or not but the explanation I was given a couple years ago was that $at may be clobbered as a result of changes made by the linker (e.g. out-of-range jumps, plt stubs, etc.).
================
Comment at: test/CodeGen/Mips/llvm-ir/ret.ll:21-25
@@ +20,7 @@
+
+; FIXME: for some reason, the delay filler kicks in test ret_double_0x0 for
+; mips64r6 but doesn't for all others. I suspect that the mthc1 is
+; misdefined somehow, as it should be able to go in the delay slot
+; of jr. dmtc1 fills the delay slot safely for this test, but many other
+; cases the delay slot is unfilled. Force it off for this test.
+
----------------
vkalintiris wrote:
> MTHC1 has *unmodeled side-effects* and the DSF bails out on these instructions (see Filler::terminateSearch). Can you update the comment to reflect this?
MTHC1 shouldn't have side-effects, it looks like tablegen is inferring it from the lack of a codegen pattern.
http://reviews.llvm.org/D18315
More information about the llvm-commits
mailing list