summaryrefslogtreecommitdiff
path: root/test/CodeGen/X86/legalize-fmp-oeq-vector-select.ll
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2009-10-20 16:22:37 +0000
committerDan Gohman <gohman@apple.com>2009-10-20 16:22:37 +0000
commit1a49295eae19cb70b451d513aceddc12ba6aaa61 (patch)
tree9797447e5cd82942ba80655dd981393ae8451bd4 /test/CodeGen/X86/legalize-fmp-oeq-vector-select.ll
parentf993327e71d826dcb852929a78881569ef83374d (diff)
downloadllvm-1a49295eae19cb70b451d513aceddc12ba6aaa61.tar.gz
llvm-1a49295eae19cb70b451d513aceddc12ba6aaa61.tar.bz2
llvm-1a49295eae19cb70b451d513aceddc12ba6aaa61.tar.xz
Make TranslateX86CC return COND_INVALID instead of aborting when it
encounters an OEQ or UNE comparison, and update its callers to check for this return status and recover. This fixes a problem resulting from the LowerOperation hooks being called from LegalizeVectorOps, because LegalizeVectorOps only lowers vectors, so OEQ and UNE comparisons may still be at large. This fixes PR5092. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84640 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/X86/legalize-fmp-oeq-vector-select.ll')
-rw-r--r--test/CodeGen/X86/legalize-fmp-oeq-vector-select.ll11
1 files changed, 11 insertions, 0 deletions
diff --git a/test/CodeGen/X86/legalize-fmp-oeq-vector-select.ll b/test/CodeGen/X86/legalize-fmp-oeq-vector-select.ll
new file mode 100644
index 0000000000..6a8c154a1b
--- /dev/null
+++ b/test/CodeGen/X86/legalize-fmp-oeq-vector-select.ll
@@ -0,0 +1,11 @@
+; RUN: llc -march=x86-64 -enable-legalize-types-checking < %s
+; PR5092
+
+define <4 x float> @bug(float %a) nounwind {
+entry:
+ %cmp = fcmp oeq float %a, 0.000000e+00 ; <i1> [#uses=1]
+ %temp = select i1 %cmp, <4 x float> <float 1.000000e+00, float 0.000000e+00,
+float 0.000000e+00, float 0.000000e+00>, <4 x float> zeroinitializer
+ ret <4 x float> %temp
+}
+