[llvm-commits] CVS: llvm/lib/Target/X86/X86ISelLowering.cpp X86InstrMMX.td

Chris Lattner clattner at apple.com
Tue Mar 27 13:56:19 PDT 2007


On Mar 27, 2007, at 1:22 PM, Bill Wendling wrote:
> +// Some special case pandn patterns.
> +def : Pat<(v1i64 (and (xor VR64:$src1, (bc_v1i64 (v2i32  
> immAllOnesV))),
> +                  VR64:$src2)),
> +          (MMX_PANDNrr VR64:$src1, VR64:$src2)>;
> +def : Pat<(v1i64 (and (xor VR64:$src1, (bc_v1i64 (v4i16  
> immAllOnesV))),
> +                  VR64:$src2)),
> +          (MMX_PANDNrr VR64:$src1, VR64:$src2)>;
> +def : Pat<(v1i64 (and (xor VR64:$src1, (bc_v1i64 (v8i8   
> immAllOnesV))),
> +                  VR64:$src2)),
> +          (MMX_PANDNrr VR64:$src1, VR64:$src2)>;
> +
> +def : Pat<(v1i64 (and (xor VR64:$src1, (bc_v1i64 (v2i32  
> immAllOnesV))),
> +                  (load addr:$src2))),
> +          (MMX_PANDNrm VR64:$src1, addr:$src2)>;
> +def : Pat<(v1i64 (and (xor VR64:$src1, (bc_v1i64 (v4i16  
> immAllOnesV))),
> +                  (load addr:$src2))),
> +          (MMX_PANDNrm VR64:$src1, addr:$src2)>;
> +def : Pat<(v1i64 (and (xor VR64:$src1, (bc_v1i64 (v8i8   
> immAllOnesV))),
> +                  (load addr:$src2))),
> +          (MMX_PANDNrm VR64:$src1, addr:$src2)>;

These shouldn't be needed.  Please get legalize to promote  
"build_vector" to a single vector type like it does for loads.  This  
would eliminate the need for these patterns.

-chris



More information about the llvm-commits mailing list