[llvm-dev] Can I differentiate an imm with an imm used in memory offset in MI pass?

Matthias Braun via llvm-dev llvm-dev at lists.llvm.org
Thu Sep 21 16:11:19 PDT 2017


The generic code in lib/CodeGen has no knowledge of these semantic differences. This knowledge is only available on a per-target basis.
Typical query functions would be X86InstrInfo::getMemOpBaseRegImmOfs(...) or AArch64::getMemOpInfo(...).

Doing this in a common way accross targets requires callbacks in TargetInstrInfo, there seem to be some in that direction but they appear to be rarely used so depending on what you want to do you may need to implement more of them.

- Matthias

> On Sep 21, 2017, at 1:27 PM, Ryan Taylor via llvm-dev <llvm-dev at lists.llvm.org> wrote:
> 
> So I'd like to be able to tell the difference between an imm and an imm used in mem offset in MachineInstr.
> 
> Or, it would be nice to tell the difference between src and dst operands.
> 
> I must be missing something trivial?
> 
> For example, 
> 
> int *b, a;
> 
> b[10] = a + 2; // is there any marker/flag between 2 and 10 to tell the difference? 
> 
> Thanks.
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev



More information about the llvm-dev mailing list