diff options
| author | Michael Liao <michael.liao@intel.com> | 2013-02-25 23:01:03 +0000 |
|---|---|---|
| committer | Michael Liao <michael.liao@intel.com> | 2013-02-25 23:01:03 +0000 |
| commit | ab976680615b88b6a2bdccad3930fdf6f8d889ca (patch) | |
| tree | 2e000532bcbc8657bcb8b5822efcdb5acd683c6d | |
| parent | cf99fd57090e5630b22da6528ebb518ad381f47d (diff) | |
| download | bcm5719-llvm-ab976680615b88b6a2bdccad3930fdf6f8d889ca.tar.gz bcm5719-llvm-ab976680615b88b6a2bdccad3930fdf6f8d889ca.zip | |
Fix PR10499
- Check whether SSE is available before lowering all 1s vector building with
PCMPEQD, which is only available from SSE2
llvm-svn: 176058
| -rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 2 | ||||
| -rw-r--r-- | llvm/test/CodeGen/X86/pr10499.ll | 14 |
2 files changed, 15 insertions, 1 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index 1543e23a46f..57014dd4880 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -5344,7 +5344,7 @@ X86TargetLowering::LowerBUILD_VECTOR(SDValue Op, SelectionDAG &DAG) const { // Vectors containing all ones can be matched by pcmpeqd on 128-bit width // vectors or broken into v4i32 operations on 256-bit vectors. AVX2 can use // vpcmpeqd on 256-bit vectors. - if (ISD::isBuildVectorAllOnes(Op.getNode())) { + if (ISD::isBuildVectorAllOnes(Op.getNode()) && Subtarget->hasSSE2()) { if (VT == MVT::v4i32 || (VT == MVT::v8i32 && Subtarget->hasInt256())) return Op; diff --git a/llvm/test/CodeGen/X86/pr10499.ll b/llvm/test/CodeGen/X86/pr10499.ll new file mode 100644 index 00000000000..f9cc747e49a --- /dev/null +++ b/llvm/test/CodeGen/X86/pr10499.ll @@ -0,0 +1,14 @@ +; RUN: llc < %s -mtriple=x86_64-pc-linux -mcpu=corei7-avx -mattr=-sse2 + +; No check as PR10499 is a crashing bug. + +define void @autogen_24438_500() { +BB: + %I = insertelement <8 x i32> undef, i32 -1, i32 4 + %BC = bitcast <8 x i32> %I to <8 x float> + br label %CF + +CF: ; preds = %CF, %BB + %ZE = fpext <8 x float> %BC to <8 x double> + br label %CF +} |

