blob: c708f5e07320ac2a6c291fc7ee5025336819c1ff [file] [log] [blame]
Chris Lattner3b68c202004-03-30 21:21:14 +00001; RUN: llvm-as < %s | llc -march=x86
2
3bool %boolSel(bool %A, bool %B, bool %C) {
4 %X = select bool %A, bool %B, bool %C
5 ret bool %X
6}
7
8sbyte %byteSel(bool %A, sbyte %B, sbyte %C) {
9 %X = select bool %A, sbyte %B, sbyte %C
10 ret sbyte %X
11}
12
13short %shortSel(bool %A, short %B, short %C) {
14 %X = select bool %A, short %B, short %C
15 ret short %X
16}
17
18int %intSel(bool %A, int %B, int %C) {
19 %X = select bool %A, int %B, int %C
20 ret int %X
21}
22
23long %longSel(bool %A, long %B, long %C) {
24 %X = select bool %A, long %B, long %C
25 ret long %X
26}
27
28double %doubleSel(bool %A, double %B, double %C) {
29 %X = select bool %A, double %B, double %C
30 ret double %X
31}
32
Chris Lattnerdd285ea2004-03-30 22:37:04 +000033sbyte %foldSel(bool %A, sbyte %B, sbyte %C) {
34 %Cond = setlt sbyte %B, %C
35 %X = select bool %Cond, sbyte %B, sbyte %C
36 ret sbyte %X
37}
38
39int %foldSel2(bool %A, int %B, int %C) {
40 %Cond = seteq int %B, %C
41 %X = select bool %Cond, int %B, int %C
42 ret int %X
43}
44
45int %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
48 ret int %X
49}
50
Chris Lattner140385e2004-04-01 03:47:56 +000051float %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
54 ret float %X
55}
56
57float %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
61 ret float %X
62}
63