[PATCH] [ARM64] Fix the misleading diagnostic on bad extend amount of reg+reg addressing mode.

Tim Northover t.p.northover at gmail.com
Tue May 13 11:04:39 PDT 2014


On 13 May 2014 18:53, Jim Grosbach <grosbach at apple.com> wrote:
> FWIW, I’ve long had big concerns about how we model addressing modes. I don’t have any magic bullet solutions, unfortunately, but the sorts of things you’re talking about here are in the same general direction as what I’ve been thinking. The assembler wants to talk about the individual operands and doesn’t much care that they’re part of an overarching “addressing mode operand”. CodeGen is the other way around.

I think I'm about half-way to a ComplexPattern usable with more
granular Operands now (~80% to functionality, the rest is making sure
it's robust).

It turns out that both TargetSelectionDAG.td and SelectionDAGISel.cpp
are already in pretty much the perfect form. It's just a matter of
teaching TableGen to emit the already existing operands in the correct
form for code like "(load (some_complexpattern GPR64:$Rn,
imm:$offset))".

(Well, actually, I'd have preferred "(some_complexpattern node:$Rn,
node:$offset)" but getting that to work in all the interesting cases
looks quite a bit more difficult).

That and hoping I haven't missed something fundamental when I try to
actually use the functionality.

Cheers.

Tim.




More information about the llvm-commits mailing list