From 83b3d8267225d585678d5d3af9bba5735f4b415d Mon Sep 17 00:00:00 2001 From: Reid Spencer Date: Wed, 17 Jan 2007 07:59:14 +0000 Subject: Regression is gone, don't try to find it on clean target. llvm-svn: 33296 --- llvm/test/CodeGen/X86/select.ll | 64 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 llvm/test/CodeGen/X86/select.ll (limited to 'llvm/test/CodeGen/X86/select.ll') diff --git a/llvm/test/CodeGen/X86/select.ll b/llvm/test/CodeGen/X86/select.ll new file mode 100644 index 00000000000..71f4742c08b --- /dev/null +++ b/llvm/test/CodeGen/X86/select.ll @@ -0,0 +1,64 @@ +; RUN: llvm-upgrade < %s | llvm-as | llc -march=x86 -mcpu=yonah && +; RUN: llvm-upgrade < %s | llvm-as | llc -march=x86 -mcpu=pentium + +bool %boolSel(bool %A, bool %B, bool %C) { + %X = select bool %A, bool %B, bool %C + ret bool %X +} + +sbyte %byteSel(bool %A, sbyte %B, sbyte %C) { + %X = select bool %A, sbyte %B, sbyte %C + ret sbyte %X +} + +short %shortSel(bool %A, short %B, short %C) { + %X = select bool %A, short %B, short %C + ret short %X +} + +int %intSel(bool %A, int %B, int %C) { + %X = select bool %A, int %B, int %C + ret int %X +} + +long %longSel(bool %A, long %B, long %C) { + %X = select bool %A, long %B, long %C + ret long %X +} + +double %doubleSel(bool %A, double %B, double %C) { + %X = select bool %A, double %B, double %C + ret double %X +} + +sbyte %foldSel(bool %A, sbyte %B, sbyte %C) { + %Cond = setlt sbyte %B, %C + %X = select bool %Cond, sbyte %B, sbyte %C + ret sbyte %X +} + +int %foldSel2(bool %A, int %B, int %C) { + %Cond = seteq int %B, %C + %X = select bool %Cond, int %B, int %C + ret int %X +} + +int %foldSel2(bool %A, int %B, int %C, double %X, double %Y) { + %Cond = setlt double %X, %Y + %X = select bool %Cond, int %B, int %C + ret int %X +} + +float %foldSel3(bool %A, float %B, float %C, uint %X, uint %Y) { + %Cond = setlt uint %X, %Y + %X = select bool %Cond, float %B, float %C + ret float %X +} + +float %nofoldSel4(bool %A, float %B, float %C, int %X, int %Y) { + ; X86 doesn't have a cmov that reads the right flags for this! + %Cond = setlt int %X, %Y + %X = select bool %Cond, float %B, float %C + ret float %X +} + -- cgit v1.2.3