[llvm-commits] [llvm] r79377 - in /llvm/trunk/lib/Target/X86: X86ISelLowering.cpp X86ISelLowering.h X86InstrFormats.td X86InstrSSE.td

Eric Christopher echristo at apple.com
Wed Aug 19 00:43:07 PDT 2009


>
> Did you try writing the pattern as (set XMM0, (...))?
>
> Fixed registers work for other instructions, for example, we have:
>
> let Defs = [ECX, EFLAGS] in {
>  multiclass SS42AI_pcmpistri<Intrinsic IntId128> {
>    def rr : SS42AI<0x63, MRMSrcReg, (outs),
>                (ins VR128:$src1, VR128:$src2, i8imm:$src3),
>                "pcmpistri\t{$src3, $src2, $src1|$src1, $src2, $src3}",
>                [(set ECX,
>                   (IntId128 VR128:$src1, VR128:$src2, imm:$src3)),
>                 (implicit EFLAGS)]>,
>                OpSize;
>
> which produces a fixed result in ECX, doesn't the same work for XMM0?

Nope, it can be any of a number of different register types and there  
is no register class for just XMM0. i.e. it comes out as MVT::Other.   
We could define a custom register class for it as about the only other  
way.

-eric



More information about the llvm-commits mailing list