[LLVMdev] Sub-Register extraction

Quentin Colombet qcolombet at apple.com
Fri May 22 11:36:17 PDT 2015


Hi Romaric,

> On May 22, 2015, at 7:31 AM, Romaric Jodin <rjodin at kalray.eu> wrote:
> 
> Hi everyone,
> 
> I'm working on a architecture where 2 32-bits registers can be use as one 64-bits register for some instructions.
> We have some SIMD instructions with those registers.
> 
> I have a pattern to transform the "extractelt" node into a "EXTRACT_SUBREG" node.
> My problem is that when LLVM is trying to get the high sub-register of a vector, it's doing a shift by 32 and then copy the low 32 bits sub-register. While it could just have copy the high 32 bits sub-register directly.
> 
> I found that the "EXTRACT_SUBREG" node is lowered into a "COPY" node. But I cannot manage to find where this node is lower into a shift + a copy.

This sounds like you’re missing some patterns to lower what you want.

If that is the case, the “bad” codegen would occur right after instruction selection.

Anyway, if you want to check when the pattern is generated, you can use (-mllvm) -print-machineinstrs.

Hope that helps.

Cheers,
-Quentin

> 
> Thank you all in advance,
> Romaric
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev





More information about the llvm-dev mailing list