1 ; RUN: llvm-as < %s | llc -march=x86
3 bool %boolSel(bool %A, bool %B, bool %C) {
4 %X = select bool %A, bool %B, bool %C
8 sbyte %byteSel(bool %A, sbyte %B, sbyte %C) {
9 %X = select bool %A, sbyte %B, sbyte %C
13 short %shortSel(bool %A, short %B, short %C) {
14 %X = select bool %A, short %B, short %C
18 int %intSel(bool %A, int %B, int %C) {
19 %X = select bool %A, int %B, int %C
23 long %longSel(bool %A, long %B, long %C) {
24 %X = select bool %A, long %B, long %C
28 double %doubleSel(bool %A, double %B, double %C) {
29 %X = select bool %A, double %B, double %C
33 sbyte %foldSel(bool %A, sbyte %B, sbyte %C) {
34 %Cond = setlt sbyte %B, %C
35 %X = select bool %Cond, sbyte %B, sbyte %C
39 int %foldSel2(bool %A, int %B, int %C) {
40 %Cond = seteq int %B, %C
41 %X = select bool %Cond, int %B, int %C
45 int %foldSel2(bool %A, int %B, int %C, double %X, double %Y) {
46 %Cond = setlt double %X, %Y
47 %X = select bool %Cond, int %B, int %C
51 float %foldSel3(bool %A, float %B, float %C, uint %X, uint %Y) {
52 %Cond = setlt uint %X, %Y
53 %X = select bool %Cond, float %B, float %C
57 float %nofoldSel4(bool %A, float %B, float %C, int %X, int %Y) {
58 ; X86 doesn't have a cmov that reads the right flags for this!
59 %Cond = setlt int %X, %Y
60 %X = select bool %Cond, float %B, float %C