Changes in directory llvm/lib/Target/X86:
X86ISelLowering.cpp updated: 1.134 -> 1.135 X86InstrSSE.td updated: 1.32 -> 1.33 --- Log message: Use pcmpeq to generate vector of all ones. --- Diffs of the changes: (+15 -0) X86ISelLowering.cpp | 4 ++++ X86InstrSSE.td | 11 +++++++++++ 2 files changed, 15 insertions(+) Index: llvm/lib/Target/X86/X86ISelLowering.cpp diff -u llvm/lib/Target/X86/X86ISelLowering.cpp:1.134 llvm/lib/Target/X86/X86ISelLowering.cpp:1.135 --- llvm/lib/Target/X86/X86ISelLowering.cpp:1.134 Sun Mar 26 19:32:24 2006 +++ llvm/lib/Target/X86/X86ISelLowering.cpp Mon Mar 27 01:00:16 2006 @@ -2364,6 +2364,10 @@ abort(); } case ISD::BUILD_VECTOR: { + // All one's are handled with pcmpeqd. + if (ISD::isBuildVectorAllOnes(Op.Val)) + return Op; + std::set<SDOperand> Values; SDOperand Elt0 = Op.getOperand(0); Values.insert(Elt0); Index: llvm/lib/Target/X86/X86InstrSSE.td diff -u llvm/lib/Target/X86/X86InstrSSE.td:1.32 llvm/lib/Target/X86/X86InstrSSE.td:1.33 --- llvm/lib/Target/X86/X86InstrSSE.td:1.32 Sun Mar 26 03:53:12 2006 +++ llvm/lib/Target/X86/X86InstrSSE.td Mon Mar 27 01:00:16 2006 @@ -1008,6 +1008,10 @@ "xorpd $dst, $dst", [(set VR128:$dst, (v2f64 immAllZerosV))]>; +def V_SETALLONES : PDI<0x76, MRMInitReg, (ops VR128:$dst), + "pcmpeqd $dst, $dst", + [(set VR128:$dst, (v2f64 immAllOnesV))]>; + // Scalar to 128-bit vector with zero extension. // Three operand (but two address) aliases. let isTwoAddress = 1 in { @@ -1051,6 +1055,13 @@ def : Pat<(v8i16 immAllZerosV), (v8i16 (V_SET0_PI))>, Requires<[HasSSE2]>; def : Pat<(v4i32 immAllZerosV), (v4i32 (V_SET0_PI))>, Requires<[HasSSE2]>; +// 128-bit vector all one's. +def : Pat<(v16i8 immAllOnesV), (v16i8 (V_SETALLONES))>, Requires<[HasSSE2]>; +def : Pat<(v8i16 immAllOnesV), (v8i16 (V_SETALLONES))>, Requires<[HasSSE2]>; +def : Pat<(v4i32 immAllOnesV), (v4i32 (V_SETALLONES))>, Requires<[HasSSE2]>; +def : Pat<(v2i64 immAllOnesV), (v2i64 (V_SETALLONES))>, Requires<[HasSSE2]>; +def : Pat<(v4f32 immAllOnesV), (v4f32 (V_SETALLONES))>, Requires<[HasSSE1]>; + // Load 128-bit integer vector values. def : Pat<(v16i8 (load addr:$src)), (MOVDQArm addr:$src)>, Requires<[HasSSE2]>; _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits