[LLVMdev] Need Advice on AVX

David Greene dag at cray.com
Tue Nov 24 11:35:30 PST 2009


On Tuesday 24 November 2009 12:57, David Greene wrote:

> So I can mark it as not legal but how should it be lowered?  I can't
> bitcast to a v2i64 because the vector sizes are different.  I could
> do an extract_subreg and then write a pattern to match that to MOVQ.

What does this mean?

def MOVSX16rr8 : I<0xBE, MRMSrcReg, (outs GR16:$dst), (ins GR8 :$src),
                   "movs{bl|x}\t{$src, ${dst:subreg32}|${dst:subreg32}, 
$src}",
                   [(set GR16:$dst, (sext GR8:$src))]>, TB;

How does ${dst:subreg32} work?  Can one do the same for sources?  I
don't see an references to "subreg" in the TableGen sources.  I see
it handled in the X86 AsmPrinter.  Looks like it should work for
sources too.

Is it preferable to use the source modifier or write an EXTRACT_SUBREG
pattern explicitly?

                              -Dave



More information about the llvm-dev mailing list