1cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; RUN: llc -march=mips     -mcpu=mips32                 < %s | FileCheck %s -check-prefix=ALL -check-prefix=32-CMOV
2cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; RUN: llc -march=mips     -mcpu=mips32 -regalloc=basic < %s | FileCheck %s -check-prefix=ALL -check-prefix=32-CMOV
3cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; RUN: llc -march=mips     -mcpu=mips32r2               < %s | FileCheck %s -check-prefix=ALL -check-prefix=32-CMOV
4cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; RUN: llc -march=mips     -mcpu=mips32r6               < %s | FileCheck %s -check-prefix=ALL -check-prefix=32-CMP
5cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; RUN: llc -march=mips64el -mcpu=mips4                  < %s | FileCheck %s -check-prefix=ALL -check-prefix=64-CMOV
6cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; RUN: llc -march=mips64el -mcpu=mips64                 < %s | FileCheck %s -check-prefix=ALL -check-prefix=64-CMOV
7cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; RUN: llc -march=mips64el -mcpu=mips64r6               < %s | FileCheck %s -check-prefix=ALL -check-prefix=64-CMP
8ab8d53a56ae707db3f8490b7727eeb05140954c6Bruno Cardoso Lopes
9ab8d53a56ae707db3f8490b7727eeb05140954c6Bruno Cardoso Lopes@i1 = global [3 x i32] [i32 1, i32 2, i32 3], align 4
10ab8d53a56ae707db3f8490b7727eeb05140954c6Bruno Cardoso Lopes@i3 = common global i32* null, align 4
11ab8d53a56ae707db3f8490b7727eeb05140954c6Bruno Cardoso Lopes
12cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: cmov1:
13cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
14cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG:  lw $[[R0:[0-9]+]], %got(i3)
15cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG:  addiu $[[R1:[0-9]+]], ${{[0-9]+}}, %got(i1)
16cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG:  movn $[[R0]], $[[R1]], $4
17cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG:  lw $2, 0($[[R0]])
18cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
19cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   lw $[[R0:[0-9]+]], %got(i3)
20cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   addiu $[[R1:[0-9]+]], ${{[0-9]+}}, %got(i1)
21cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   selnez $[[T0:[0-9]+]], $[[R1]], $4
22cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   seleqz $[[T1:[0-9]+]], $[[R0]], $4
23cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   or $[[T2:[0-9]+]], $[[T0]], $[[T1]]
24cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   lw $2, 0($[[T2]])
25cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
26cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG:  ldr $[[R0:[0-9]+]]
27cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG:  ld $[[R1:[0-9]+]], %got_disp(i1)
28cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG:  movn $[[R0]], $[[R1]], $4
29cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
30cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:   ld $[[R0:[0-9]+]], %got_disp(i3)(
31cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:   daddiu $[[R1:[0-9]+]], ${{[0-9]+}}, %got_disp(i1)
32cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: This sll works around an implementation detail in the code generator
33cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines;        (setcc's result is i32 so bits 32-63 are undefined). It's not really
34cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines;        needed.
35cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:   sll $[[CC:[0-9]+]], $4, 0
36cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:   selnez $[[T0:[0-9]+]], $[[R1]], $[[CC]]
37cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:   seleqz $[[T1:[0-9]+]], $[[R0]], $[[CC]]
38cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:   or $[[T2:[0-9]+]], $[[T0]], $[[T1]]
39cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:   ld $2, 0($[[T2]])
40cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
41ab8d53a56ae707db3f8490b7727eeb05140954c6Bruno Cardoso Lopesdefine i32* @cmov1(i32 %s) nounwind readonly {
42ab8d53a56ae707db3f8490b7727eeb05140954c6Bruno Cardoso Lopesentry:
43ab8d53a56ae707db3f8490b7727eeb05140954c6Bruno Cardoso Lopes  %tobool = icmp ne i32 %s, 0
44ab8d53a56ae707db3f8490b7727eeb05140954c6Bruno Cardoso Lopes  %tmp1 = load i32** @i3, align 4
45ab8d53a56ae707db3f8490b7727eeb05140954c6Bruno Cardoso Lopes  %cond = select i1 %tobool, i32* getelementptr inbounds ([3 x i32]* @i1, i32 0, i32 0), i32* %tmp1
46ab8d53a56ae707db3f8490b7727eeb05140954c6Bruno Cardoso Lopes  ret i32* %cond
47ab8d53a56ae707db3f8490b7727eeb05140954c6Bruno Cardoso Lopes}
48ab8d53a56ae707db3f8490b7727eeb05140954c6Bruno Cardoso Lopes
49342837d0dcf4c47765bbd3f9c031418824b12747Akira Hatanaka@c = global i32 1, align 4
50342837d0dcf4c47765bbd3f9c031418824b12747Akira Hatanaka@d = global i32 0, align 4
51342837d0dcf4c47765bbd3f9c031418824b12747Akira Hatanaka
52cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: cmov2:
53cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
54cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG:  addiu $[[R1:[0-9]+]], ${{[0-9]+}}, %got(d)
55cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG:  addiu $[[R0:[0-9]+]], ${{[0-9]+}}, %got(c)
56cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG:  movn  $[[R1]], $[[R0]], $4
57cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG:  lw $2, 0($[[R0]])
58cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
59cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   addiu $[[R1:[0-9]+]], ${{[0-9]+}}, %got(d)
60cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   addiu $[[R0:[0-9]+]], ${{[0-9]+}}, %got(c)
61cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   selnez $[[T0:[0-9]+]], $[[R0]], $4
62cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   seleqz $[[T1:[0-9]+]], $[[R1]], $4
63cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   or $[[T2:[0-9]+]], $[[T0]], $[[T1]]
64cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   lw $2, 0($[[T2]])
65cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
66cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV:      daddiu $[[R1:[0-9]+]], ${{[0-9]+}}, %got_disp(d)
67cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV:      daddiu $[[R0:[0-9]+]], ${{[0-9]+}}, %got_disp(c)
68cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV:      movn  $[[R1]], $[[R0]], $4
69cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
70cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:   daddiu $[[R1:[0-9]+]], ${{[0-9]+}}, %got_disp(d)
71cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:   daddiu $[[R0:[0-9]+]], ${{[0-9]+}}, %got_disp(c)
72cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: This sll works around an implementation detail in the code generator
73cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines;        (setcc's result is i32 so bits 32-63 are undefined). It's not really
74cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines;        needed.
75cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:   sll $[[CC:[0-9]+]], $4, 0
76cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:   selnez $[[T0:[0-9]+]], $[[R0]], $[[CC]]
77cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:   seleqz $[[T1:[0-9]+]], $[[R1]], $[[CC]]
78cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:   or $[[T2:[0-9]+]], $[[T0]], $[[T1]]
79cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:   lw $2, 0($[[T2]])
80cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
81342837d0dcf4c47765bbd3f9c031418824b12747Akira Hatanakadefine i32 @cmov2(i32 %s) nounwind readonly {
82342837d0dcf4c47765bbd3f9c031418824b12747Akira Hatanakaentry:
83342837d0dcf4c47765bbd3f9c031418824b12747Akira Hatanaka  %tobool = icmp ne i32 %s, 0
84342837d0dcf4c47765bbd3f9c031418824b12747Akira Hatanaka  %tmp1 = load i32* @c, align 4
85342837d0dcf4c47765bbd3f9c031418824b12747Akira Hatanaka  %tmp2 = load i32* @d, align 4
86342837d0dcf4c47765bbd3f9c031418824b12747Akira Hatanaka  %cond = select i1 %tobool, i32 %tmp1, i32 %tmp2
87342837d0dcf4c47765bbd3f9c031418824b12747Akira Hatanaka  ret i32 %cond
88342837d0dcf4c47765bbd3f9c031418824b12747Akira Hatanaka}
89342837d0dcf4c47765bbd3f9c031418824b12747Akira Hatanaka
90cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: cmov3:
91cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
92cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; We won't check the result register since we can't know if the move is first
93cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; or last. We do know it will be either one of two registers so we can at least
94cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; check that.
95cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
96cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV:      xori $[[R0:[0-9]+]], $4, 234
97cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV:      movz ${{[26]}}, $5, $[[R0]]
98cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
99cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   xori $[[CC:[0-9]+]], $4, 234
100cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   seleqz $[[T0:[0-9]+]], $5, $[[CC]]
101cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   selnez $[[T1:[0-9]+]], $6, $[[CC]]
102cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   or $2, $[[T0]], $[[T1]]
103cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
104cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV:      xori $[[R0:[0-9]+]], $4, 234
105cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV:      movz ${{[26]}}, $5, $[[R0]]
106cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
107cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:   xori $[[CC:[0-9]+]], $4, 234
108cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:   seleqz $[[T0:[0-9]+]], $5, $[[CC]]
109cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:   selnez $[[T1:[0-9]+]], $6, $[[CC]]
110cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:   or $2, $[[T0]], $[[T1]]
111cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
1122b409b65d45e2857dd842afc18b6b8c2da791a35Akira Hatanakadefine i32 @cmov3(i32 %a, i32 %b, i32 %c) nounwind readnone {
1132b409b65d45e2857dd842afc18b6b8c2da791a35Akira Hatanakaentry:
1142b409b65d45e2857dd842afc18b6b8c2da791a35Akira Hatanaka  %cmp = icmp eq i32 %a, 234
1152b409b65d45e2857dd842afc18b6b8c2da791a35Akira Hatanaka  %cond = select i1 %cmp, i32 %b, i32 %c
1162b409b65d45e2857dd842afc18b6b8c2da791a35Akira Hatanaka  ret i32 %cond
1172b409b65d45e2857dd842afc18b6b8c2da791a35Akira Hatanaka}
1182b409b65d45e2857dd842afc18b6b8c2da791a35Akira Hatanaka
119cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: cmov4:
120cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
121cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; We won't check the result register since we can't know if the move is first
122cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; or last. We do know it will be one of two registers so we can at least check
123cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; that.
124cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
125cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: xori $[[R0:[0-9]+]], $4, 234
126cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: lw $[[R1:2]], 16($sp)
127cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: lw $[[R2:3]], 20($sp)
128cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: movz $[[R1]], $6, $[[R0]]
129cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: movz $[[R2]], $7, $[[R0]]
130cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
131cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  xori $[[R0:[0-9]+]], $4, 234
132cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  lw $[[R1:[0-9]+]], 16($sp)
133cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  lw $[[R2:[0-9]+]], 20($sp)
134cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  seleqz $[[T0:[0-9]+]], $6, $[[R0]]
135cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  seleqz $[[T1:[0-9]+]], $7, $[[R0]]
136cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  selnez $[[T2:[0-9]+]], $[[R1]], $[[R0]]
137cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  selnez $[[T3:[0-9]+]], $[[R2]], $[[R0]]
138cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  or $2, $[[T0]], $[[T2]]
139cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  or $3, $[[T1]], $[[T3]]
140cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
141cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV: xori $[[R0:[0-9]+]], $4, 234
142cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV: movz ${{[26]}}, $5, $[[R0]]
143cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
144cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  xori $[[R0:[0-9]+]], $4, 234
145cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  seleqz $[[T0:[0-9]+]], $5, $[[R0]]
146cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  selnez $[[T1:[0-9]+]], $6, $[[R0]]
147cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  or $2, $[[T0]], $[[T1]]
148cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
1492b409b65d45e2857dd842afc18b6b8c2da791a35Akira Hatanakadefine i64 @cmov4(i32 %a, i64 %b, i64 %c) nounwind readnone {
1502b409b65d45e2857dd842afc18b6b8c2da791a35Akira Hatanakaentry:
1512b409b65d45e2857dd842afc18b6b8c2da791a35Akira Hatanaka  %cmp = icmp eq i32 %a, 234
1522b409b65d45e2857dd842afc18b6b8c2da791a35Akira Hatanaka  %cond = select i1 %cmp, i64 %b, i64 %c
1532b409b65d45e2857dd842afc18b6b8c2da791a35Akira Hatanaka  ret i64 %cond
1542b409b65d45e2857dd842afc18b6b8c2da791a35Akira Hatanaka}
1552b409b65d45e2857dd842afc18b6b8c2da791a35Akira Hatanaka
156ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka; slti and conditional move.
157ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka;
158ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka; Check that, pattern
159ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka;  (select (setgt a, N), t, f)
160ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka; turns into
161ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka;  (movz t, (setlt a, N + 1), f)
162ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka; if N + 1 fits in 16-bit.
163ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka
164cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: slti0:
165cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
166cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I3:[0-9]+]], $zero, 3
167cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I5:2]], $zero, 5
168cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: slti $[[R0:[0-9]+]], $4, 32767
169cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: movz $[[I5]], $[[I3]], $[[R0]]
170cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
171cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  addiu $[[I3:[0-9]+]], $zero, 3
172cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  addiu $[[I5:[0-9]+]], $zero, 5
173cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  slti $[[R0:[0-9]+]], $4, 32767
174cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by using selccz to choose between +0 and +2
175cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  seleqz $[[T0:[0-9]+]], $[[I3]], $[[R0]]
176cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  selnez $[[T1:[0-9]+]], $[[I5]], $[[R0]]
177cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  or $2, $[[T0]], $[[T1]]
178cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
179cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[I3:[0-9]+]], $zero, 3
180cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[I5:2]], $zero, 5
181cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: slti $[[R0:[0-9]+]], $4, 32767
182cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: movz $[[I5]], $[[I3]], $[[R0]]
183cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
184cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  addiu $[[I3:[0-9]+]], $zero, 3
185cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  addiu $[[I5:[0-9]+]], $zero, 5
186cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  slti $[[R0:[0-9]+]], $4, 32767
187cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by using selccz to choose between +0 and +2
188cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  seleqz $[[T0:[0-9]+]], $[[I3]], $[[R0]]
189cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  selnez $[[T1:[0-9]+]], $[[I5]], $[[R0]]
190cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  or $2, $[[T0]], $[[T1]]
191ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka
192ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakadefine i32 @slti0(i32 %a) {
193ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakaentry:
194ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka  %cmp = icmp sgt i32 %a, 32766
19536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  %cond = select i1 %cmp, i32 3, i32 5
196ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka  ret i32 %cond
197ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka}
198ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka
199cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: slti1:
200cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
201cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I7:[0-9]+]], $zero, 7
202cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I5:2]], $zero, 5
203cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[R1:[0-9]+]], $zero, 32767
204cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: slt $[[R0:[0-9]+]], $[[R1]], $4
205cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: movn $[[I5]], $[[I7]], $[[R0]]
206cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
207cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  addiu $[[I7:[0-9]+]], $zero, 7
208cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  addiu $[[I5:[0-9]+]], $zero, 5
209cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  addiu $[[I32767:[0-9]+]], $zero, 32767
210cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  slt $[[R0:[0-9]+]], $[[I32767]], $4
211cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by using selccz to choose between -0 and -2
212cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  selnez $[[T0:[0-9]+]], $[[I7]], $[[R0]]
213cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  seleqz $[[T1:[0-9]+]], $[[I5]], $[[R0]]
214cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  or $2, $[[T0]], $[[T1]]
215cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
216cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[I7:[0-9]+]], $zero, 7
217cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[I5:2]], $zero, 5
218cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[R1:[0-9]+]], $zero, 32767
219cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: slt $[[R0:[0-9]+]], $[[R1]], $4
220cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: movn $[[I5]], $[[I7]], $[[R0]]
221cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
222cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  addiu $[[I7:[0-9]+]], $zero, 7
223cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  addiu $[[I5:2]], $zero, 5
224cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  addiu $[[R1:[0-9]+]], $zero, 32767
225cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  slt $[[R0:[0-9]+]], $[[R1]], $4
226cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by using selccz to choose between -0 and -2
227cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  selnez $[[T0:[0-9]+]], $[[I7]], $[[R0]]
228cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  seleqz $[[T1:[0-9]+]], $[[I5]], $[[R0]]
229cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  or $2, $[[T0]], $[[T1]]
230ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka
231ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakadefine i32 @slti1(i32 %a) {
232ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakaentry:
233ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka  %cmp = icmp sgt i32 %a, 32767
234cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines  %cond = select i1 %cmp, i32 7, i32 5
235ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka  ret i32 %cond
236ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka}
237ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka
238cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: slti2:
239cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
240cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I3:[0-9]+]], $zero, 3
241cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I5:2]], $zero, 5
242cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: slti $[[R0:[0-9]+]], $4, -32768
243cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: movz $[[I5]], $[[I3]], $[[R0]]
244cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
245cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  addiu $[[I3:[0-9]+]], $zero, 3
246cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  addiu $[[I5:[0-9]+]], $zero, 5
247cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  slti $[[R0:[0-9]+]], $4, -32768
248cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by using selccz to choose between +0 and +2
249cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  seleqz $[[T0:[0-9]+]], $[[I3]], $[[R0]]
250cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  selnez $[[T1:[0-9]+]], $[[I5]], $[[R0]]
251cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  or $2, $[[T0]], $[[T1]]
252cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
253cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[I3:[0-9]+]], $zero, 3
254cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[I5:2]], $zero, 5
255cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: slti $[[R0:[0-9]+]], $4, -32768
256cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: movz $[[I5]], $[[I3]], $[[R0]]
257cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
258cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  addiu $[[I3:[0-9]+]], $zero, 3
259cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  addiu $[[I5:[0-9]+]], $zero, 5
260cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  slti $[[R0:[0-9]+]], $4, -32768
261cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by using selccz to choose between +0 and +2
262cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  seleqz $[[T0:[0-9]+]], $[[I3]], $[[R0]]
263cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  selnez $[[T1:[0-9]+]], $[[I5]], $[[R0]]
264cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  or $2, $[[T0]], $[[T1]]
265ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka
266ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakadefine i32 @slti2(i32 %a) {
267ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakaentry:
268ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka  %cmp = icmp sgt i32 %a, -32769
26936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  %cond = select i1 %cmp, i32 3, i32 5
270ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka  ret i32 %cond
271ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka}
272ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka
273cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: slti3:
274cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
275cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I3:[0-9]+]], $zero, 3
276cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I5:2]], $zero, 5
277cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: lui $[[R1:[0-9]+]], 65535
278cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: ori $[[R1]], $[[R1]], 32766
279cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: slt $[[R0:[0-9]+]], $[[R1]], $4
280cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: movn $[[I5]], $[[I3]], $[[R0]]
281cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
282cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  addiu $[[I3:[0-9]+]], $zero, 3
283cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  addiu $[[I5:[0-9]+]], $zero, 5
284cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  lui $[[IMM:[0-9]+]], 65535
285cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  ori $[[IMM]], $[[IMM]], 32766
286cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  slt $[[R0:[0-9]+]], $[[I32767]], $4
287cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by using selccz to choose between -0 and -2
288cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  selnez $[[T0:[0-9]+]], $[[I3]], $[[R0]]
289cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  seleqz $[[T1:[0-9]+]], $[[I5]], $[[R0]]
290cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  or $2, $[[T0]], $[[T1]]
291cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
292cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[I3:[0-9]+]], $zero, 3
293cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[I5:2]], $zero, 5
294cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: lui $[[R1:[0-9]+]], 65535
295cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: ori $[[R1]], $[[R1]], 32766
296cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: slt $[[R0:[0-9]+]], $[[R1]], $4
297cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: movn $[[I5]], $[[I3]], $[[R0]]
298cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
299cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  addiu $[[I3:[0-9]+]], $zero, 3
300cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  addiu $[[I5:2]], $zero, 5
301cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  lui $[[IMM:[0-9]+]], 65535
302cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  ori $[[IMM]], $[[IMM]], 32766
303cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  slt $[[R0:[0-9]+]], $[[IMM]], $4
304cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by using selccz to choose between -0 and -2
305cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  selnez $[[T0:[0-9]+]], $[[I3]], $[[R0]]
306cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  seleqz $[[T1:[0-9]+]], $[[I5]], $[[R0]]
307cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  or $2, $[[T0]], $[[T1]]
308ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka
309ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakadefine i32 @slti3(i32 %a) {
310ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakaentry:
311ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka  %cmp = icmp sgt i32 %a, -32770
31236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  %cond = select i1 %cmp, i32 3, i32 5
313ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka  ret i32 %cond
314ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka}
315ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka
316ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka; 64-bit patterns.
317ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka
318cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: slti64_0:
319cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
320cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG:  slt $[[CC:[0-9]+]], $zero, $4
321cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG:  addiu $[[I32766:[0-9]+]], $zero, 32766
322cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG:  sltu $[[R1:[0-9]+]], $[[I32766]], $5
323cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG:  movz $[[CC:[0-9]+]], $[[R1]], $4
324cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG:  addiu $[[I5:[0-9]+]], $zero, 5
325cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG:  addiu $[[I4:3]], $zero, 4
326cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG:  movn $[[I4]], $[[I5]], $[[CC]]
327cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG:  addiu $2, $zero, 0
328cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
329cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   slt $[[CC0:[0-9]+]], $zero, $4
330cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   addiu $[[I32766:[0-9]+]], $zero, 32766
331cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   sltu $[[CC1:[0-9]+]], $[[I32766]], $5
332cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   selnez $[[CC2:[0-9]+]], $[[CC0]], $4
333cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   seleqz $[[CC3:[0-9]+]], $[[CC1]], $4
334cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP:       or $[[CC:[0-9]+]], $[[CC3]], $[[CC2]]
335cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   addiu $[[I5:[0-9]+]], $zero, 5
336cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   addiu $[[I4:[0-9]+]], $zero, 4
337cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   seleqz $[[T0:[0-9]+]], $[[I4]], $[[CC]]
338cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   selnez $[[T1:[0-9]+]], $[[I5]], $[[CC]]
339cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   or $3, $[[T1]], $[[T0]]
340cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   addiu $2, $zero, 0
341cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
342cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG:  addiu $[[I5:[0-9]+]], $zero, 5
343cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG:  addiu $[[I4:2]], $zero, 4
344cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG:  slti $[[R0:[0-9]+]], $4, 32767
345cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG:  movz $[[I4]], $[[I5]], $[[R0]]
346cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
347cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  addiu $[[I5:[0-9]+]], $zero, 5
348cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  addiu $[[I4:[0-9]+]], $zero, 4
349cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  slti $[[R0:[0-9]+]], $4, 32767
350cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by adding/subtracting the result of slti
351cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines;        to/from one of the constants.
352cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  seleqz $[[T0:[0-9]+]], $[[I5]], $[[R0]]
353cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  selnez $[[T1:[0-9]+]], $[[I4]], $[[R0]]
354cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  or $2, $[[T0]], $[[T1]]
355ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka
356ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakadefine i64 @slti64_0(i64 %a) {
357ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakaentry:
358ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka  %cmp = icmp sgt i64 %a, 32766
359cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines  %conv = select i1 %cmp, i64 5, i64 4
360ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka  ret i64 %conv
361ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka}
362ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka
363cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: slti64_1:
364cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
365cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG:  slt $[[CC:[0-9]+]], $zero, $4
366cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG:  addiu $[[I32766:[0-9]+]], $zero, 32767
367cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG:  sltu $[[R1:[0-9]+]], $[[I32766]], $5
368cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG:  movz $[[CC:[0-9]+]], $[[R1]], $4
369cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG:  addiu $[[I5:[0-9]+]], $zero, 5
370cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG:  addiu $[[I4:3]], $zero, 4
371cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG:  movn $[[I4]], $[[I5]], $[[CC]]
372cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG:  addiu $2, $zero, 0
373cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
374cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   slt $[[CC0:[0-9]+]], $zero, $4
375cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   addiu $[[I32766:[0-9]+]], $zero, 32767
376cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   sltu $[[CC1:[0-9]+]], $[[I32766]], $5
377cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   selnez $[[CC2:[0-9]+]], $[[CC0]], $4
378cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   seleqz $[[CC3:[0-9]+]], $[[CC1]], $4
379cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP:       or $[[CC:[0-9]+]], $[[CC3]], $[[CC2]]
380cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   addiu $[[I5:[0-9]+]], $zero, 5
381cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   addiu $[[I4:[0-9]+]], $zero, 4
382cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   seleqz $[[T0:[0-9]+]], $[[I4]], $[[CC]]
383cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   selnez $[[T1:[0-9]+]], $[[I5]], $[[CC]]
384cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   or $3, $[[T1]], $[[T0]]
385cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:   addiu $2, $zero, 0
386cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
387cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: daddiu $[[I5:[0-9]+]], $zero, 5
388cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: daddiu $[[I4:2]], $zero, 4
389cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: daddiu $[[R1:[0-9]+]], $zero, 32767
390cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: slt $[[R0:[0-9]+]], $[[R1]], $4
391cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: movn $[[I4]], $[[I5]], $[[R0]]
392cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
393cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  daddiu $[[I5:[0-9]+]], $zero, 5
394cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  daddiu $[[I4:2]], $zero, 4
395cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  daddiu $[[R1:[0-9]+]], $zero, 32767
396cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  slt $[[R0:[0-9]+]], $[[R1]], $4
397cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by using selccz to choose between -0 and -2
398cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  selnez $[[T0:[0-9]+]], $[[I5]], $[[R0]]
399cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  seleqz $[[T1:[0-9]+]], $[[I4]], $[[R0]]
400cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  or $2, $[[T0]], $[[T1]]
401ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka
402ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakadefine i64 @slti64_1(i64 %a) {
403ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakaentry:
404ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka  %cmp = icmp sgt i64 %a, 32767
405cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines  %conv = select i1 %cmp, i64 5, i64 4
406ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka  ret i64 %conv
407ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka}
408ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka
409cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: slti64_2:
410cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
411cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: The 32-bit versions of this test are too complicated to reasonably
412cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines;        match at the moment. They do show some missing optimizations though
413cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines;        such as:
414cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines;           (movz $a, $b, (neg $c)) -> (movn $a, $b, $c)
415cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
416cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG:  addiu $[[I3:[0-9]+]], $zero, 3
417cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG:  addiu $[[I4:2]], $zero, 4
418cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG:  slti $[[R0:[0-9]+]], $4, -32768
419cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG:  movz $[[I4]], $[[I3]], $[[R0]]
420cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
421cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  addiu $[[I3:[0-9]+]], $zero, 3
422cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  addiu $[[I4:[0-9]+]], $zero, 4
423cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  slti $[[R0:[0-9]+]], $4, -32768
424cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by adding/subtracting the result of slti
425cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines;        to/from one of the constants.
426cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  seleqz $[[T0:[0-9]+]], $[[I3]], $[[R0]]
427cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  selnez $[[T1:[0-9]+]], $[[I4]], $[[R0]]
428cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  or $2, $[[T0]], $[[T1]]
429ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka
430ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakadefine i64 @slti64_2(i64 %a) {
431ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakaentry:
432ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka  %cmp = icmp sgt i64 %a, -32769
433ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka  %conv = select i1 %cmp, i64 3, i64 4
434ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka  ret i64 %conv
435ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka}
436ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka
437cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: slti64_3:
438cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
439cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: The 32-bit versions of this test are too complicated to reasonably
440cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines;        match at the moment. They do show some missing optimizations though
441cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines;        such as:
442cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines;           (movz $a, $b, (neg $c)) -> (movn $a, $b, $c)
443cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
444cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: daddiu $[[I5:[0-9]+]], $zero, 5
445cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: daddiu $[[I4:2]], $zero, 4
446cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: daddiu $[[R1:[0-9]+]], ${{[0-9]+}}, 32766
447cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: slt $[[R0:[0-9]+]], $[[R1]], $4
448cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: movn $[[I4]], $[[I5]], $[[R0]]
449cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
450cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  daddiu $[[I5:[0-9]+]], $zero, 5
451cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  daddiu $[[I4:2]], $zero, 4
452cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  daddiu $[[R1:[0-9]+]], ${{[0-9]+}}, 32766
453cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  slt $[[R0:[0-9]+]], $[[R1]], $4
454cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by using selccz to choose between -0 and -2
455cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  selnez $[[T0:[0-9]+]], $[[I5]], $[[R0]]
456cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  seleqz $[[T1:[0-9]+]], $[[I4]], $[[R0]]
457cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  or $2, $[[T0]], $[[T1]]
458ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka
459ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakadefine i64 @slti64_3(i64 %a) {
460ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakaentry:
461ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka  %cmp = icmp sgt i64 %a, -32770
462cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines  %conv = select i1 %cmp, i64 5, i64 4
463ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka  ret i64 %conv
464ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka}
465ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka
466ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka; sltiu instructions.
467ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka
468cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: sltiu0:
469cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
470cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I3:[0-9]+]], $zero, 3
471cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I5:2]], $zero, 5
472cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: sltiu $[[R0:[0-9]+]], $4, 32767
473cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: movz $[[I5]], $[[I3]], $[[R0]]
474cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
475cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  addiu $[[I3:[0-9]+]], $zero, 3
476cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  addiu $[[I5:[0-9]+]], $zero, 5
477cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  sltiu $[[R0:[0-9]+]], $4, 32767
478cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by using selccz to choose between +0 and +2
479cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  seleqz $[[T0:[0-9]+]], $[[I3]], $[[R0]]
480cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  selnez $[[T1:[0-9]+]], $[[I5]], $[[R0]]
481cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  or $2, $[[T0]], $[[T1]]
482cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
483cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[I3:[0-9]+]], $zero, 3
484cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[I5:2]], $zero, 5
485cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: sltiu $[[R0:[0-9]+]], $4, 32767
486cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: movz $[[I5]], $[[I3]], $[[R0]]
487cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
488cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  addiu $[[I3:[0-9]+]], $zero, 3
489cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  addiu $[[I5:[0-9]+]], $zero, 5
490cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  sltiu $[[R0:[0-9]+]], $4, 32767
491cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by using selccz to choose between +0 and +2
492cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  seleqz $[[T0:[0-9]+]], $[[I3]], $[[R0]]
493cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  selnez $[[T1:[0-9]+]], $[[I5]], $[[R0]]
494cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  or $2, $[[T0]], $[[T1]]
495ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka
496ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakadefine i32 @sltiu0(i32 %a) {
497ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakaentry:
498ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka  %cmp = icmp ugt i32 %a, 32766
49936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  %cond = select i1 %cmp, i32 3, i32 5
500ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka  ret i32 %cond
501ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka}
502ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka
503cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: sltiu1:
504cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
505cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I7:[0-9]+]], $zero, 7
506cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I5:2]], $zero, 5
507cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[R1:[0-9]+]], $zero, 32767
508cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: sltu $[[R0:[0-9]+]], $[[R1]], $4
509cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: movn $[[I5]], $[[I7]], $[[R0]]
510cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
511cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  addiu $[[I7:[0-9]+]], $zero, 7
512cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  addiu $[[I5:[0-9]+]], $zero, 5
513cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  addiu $[[I32767:[0-9]+]], $zero, 32767
514cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  sltu $[[R0:[0-9]+]], $[[I32767]], $4
515cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by using selccz to choose between -0 and -2
516cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  selnez $[[T0:[0-9]+]], $[[I7]], $[[R0]]
517cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  seleqz $[[T1:[0-9]+]], $[[I5]], $[[R0]]
518cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  or $2, $[[T0]], $[[T1]]
519cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
520cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[I7:[0-9]+]], $zero, 7
521cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[I5:2]], $zero, 5
522cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[R1:[0-9]+]], $zero, 32767
523cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: sltu $[[R0:[0-9]+]], $[[R1]], $4
524cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: movn $[[I5]], $[[I7]], $[[R0]]
525cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
526cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  addiu $[[I7:[0-9]+]], $zero, 7
527cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  addiu $[[I5:2]], $zero, 5
528cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  addiu $[[R1:[0-9]+]], $zero, 32767
529cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  sltu $[[R0:[0-9]+]], $[[R1]], $4
530cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by using selccz to choose between -0 and -2
531cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  selnez $[[T0:[0-9]+]], $[[I7]], $[[R0]]
532cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  seleqz $[[T1:[0-9]+]], $[[I5]], $[[R0]]
533cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  or $2, $[[T0]], $[[T1]]
534ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka
535ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakadefine i32 @sltiu1(i32 %a) {
536ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakaentry:
537ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka  %cmp = icmp ugt i32 %a, 32767
538cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines  %cond = select i1 %cmp, i32 7, i32 5
539ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka  ret i32 %cond
540ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka}
541ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka
542cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: sltiu2:
543cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
544cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I3:[0-9]+]], $zero, 3
545cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I5:2]], $zero, 5
546cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: sltiu $[[R0:[0-9]+]], $4, -32768
547cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: movz $[[I5]], $[[I3]], $[[R0]]
548cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
549cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  addiu $[[I3:[0-9]+]], $zero, 3
550cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  addiu $[[I5:[0-9]+]], $zero, 5
551cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  sltiu $[[R0:[0-9]+]], $4, -32768
552cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by using selccz to choose between +0 and +2
553cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  seleqz $[[T0:[0-9]+]], $[[I3]], $[[R0]]
554cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  selnez $[[T1:[0-9]+]], $[[I5]], $[[R0]]
555cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  or $2, $[[T0]], $[[T1]]
556cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
557cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[I3:[0-9]+]], $zero, 3
558cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[I5:2]], $zero, 5
559cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: sltiu $[[R0:[0-9]+]], $4, -32768
560cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: movz $[[I5]], $[[I3]], $[[R0]]
561cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
562cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  addiu $[[I3:[0-9]+]], $zero, 3
563cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  addiu $[[I5:[0-9]+]], $zero, 5
564cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  sltiu $[[R0:[0-9]+]], $4, -32768
565cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by using selccz to choose between +0 and +2
566cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  seleqz $[[T0:[0-9]+]], $[[I3]], $[[R0]]
567cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  selnez $[[T1:[0-9]+]], $[[I5]], $[[R0]]
568cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  or $2, $[[T0]], $[[T1]]
569ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka
570ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakadefine i32 @sltiu2(i32 %a) {
571ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakaentry:
572ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka  %cmp = icmp ugt i32 %a, -32769
57336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  %cond = select i1 %cmp, i32 3, i32 5
574ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka  ret i32 %cond
575ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka}
576ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka
577cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: sltiu3:
578cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
579cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I3:[0-9]+]], $zero, 3
580cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I5:2]], $zero, 5
581cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: lui $[[R1:[0-9]+]], 65535
582cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: ori $[[R1]], $[[R1]], 32766
583cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: sltu $[[R0:[0-9]+]], $[[R1]], $4
584cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: movn $[[I5]], $[[I3]], $[[R0]]
585cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
586cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  addiu $[[I3:[0-9]+]], $zero, 3
587cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  addiu $[[I5:[0-9]+]], $zero, 5
588cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  lui $[[IMM:[0-9]+]], 65535
589cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  ori $[[IMM]], $[[IMM]], 32766
590cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  sltu $[[R0:[0-9]+]], $[[I32767]], $4
591cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by using selccz to choose between -0 and -2
592cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  selnez $[[T0:[0-9]+]], $[[I3]], $[[R0]]
593cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  seleqz $[[T1:[0-9]+]], $[[I5]], $[[R0]]
594cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  or $2, $[[T0]], $[[T1]]
595cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
596cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[I3:[0-9]+]], $zero, 3
597cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[I5:2]], $zero, 5
598cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: lui $[[R1:[0-9]+]], 65535
599cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: ori $[[R1]], $[[R1]], 32766
600cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: sltu $[[R0:[0-9]+]], $[[R1]], $4
601cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: movn $[[I5]], $[[I3]], $[[R0]]
602cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
603cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  addiu $[[I3:[0-9]+]], $zero, 3
604cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  addiu $[[I5:2]], $zero, 5
605cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  lui $[[IMM:[0-9]+]], 65535
606cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  ori $[[IMM]], $[[IMM]], 32766
607cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  sltu $[[R0:[0-9]+]], $[[IMM]], $4
608cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by using selccz to choose between -0 and -2
609cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  selnez $[[T0:[0-9]+]], $[[I3]], $[[R0]]
610cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  seleqz $[[T1:[0-9]+]], $[[I5]], $[[R0]]
611cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  or $2, $[[T0]], $[[T1]]
612ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka
613ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakadefine i32 @sltiu3(i32 %a) {
614ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakaentry:
615ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka  %cmp = icmp ugt i32 %a, -32770
61636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  %cond = select i1 %cmp, i32 3, i32 5
617ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka  ret i32 %cond
618ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka}
61936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
62036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines; Check if
62136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines;  (select (setxx a, N), x, x-1) or
62236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines;  (select (setxx a, N), x-1, x)
62336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines; doesn't generate conditional moves
62436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines; for constant operands whose difference is |1|
62536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
62636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesdefine i32 @slti4(i32 %a) nounwind readnone {
62736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  %1 = icmp slt i32 %a, 7
62836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  %2 = select i1 %1, i32 4, i32 3
62936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  ret i32 %2
63036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines}
63136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
632cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: slti4:
633cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
634cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: slti [[R1:\$[0-9]+]], $4, 7
635cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $2, [[R1]], 3
636cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-NOT: movn
637cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
638cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  slti [[R1:\$[0-9]+]], $4, 7
639cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  addiu $2, [[R1]], 3
640cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-NOT:  seleqz
641cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-NOT:  selnez
642cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
643cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: slti [[R1:\$[0-9]+]], $4, 7
644cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $2, [[R1]], 3
645cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-NOT: movn
646cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
647cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  slti [[R1:\$[0-9]+]], $4, 7
648cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  addiu $2, [[R1]], 3
649cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-NOT:  seleqz
650cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-NOT:  selnez
65136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
65236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesdefine i32 @slti5(i32 %a) nounwind readnone {
65336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  %1 = icmp slt i32 %a, 7
65436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  %2 = select i1 %1, i32 -3, i32 -4
65536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  ret i32 %2
65636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines}
65736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
658cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: slti5:
659cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
660cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: slti [[R1:\$[0-9]+]], $4, 7
661cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu [[R3:\$[0-9]+]], [[R2:\$[a-z0-9]+]], -4
662cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-NOT: movn
663cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
664cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  slti [[R1:\$[0-9]+]], $4, 7
665cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  addiu [[R3:\$[0-9]+]], [[R2:\$[a-z0-9]+]], -4
666cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-NOT:  seleqz
667cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-NOT:  selnez
668cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
669cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: slti [[R1:\$[0-9]+]], $4, 7
670cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu [[R3:\$[0-9]+]], [[R2:\$[a-z0-9]+]], -4
671cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-NOT: movn
672cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
673cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  slti [[R1:\$[0-9]+]], $4, 7
674cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  addiu [[R3:\$[0-9]+]], [[R2:\$[a-z0-9]+]], -4
675cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-NOT:  seleqz
676cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-NOT:  selnez
67736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
67836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesdefine i32 @slti6(i32 %a) nounwind readnone {
67936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  %1 = icmp slt i32 %a, 7
68036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  %2 = select i1 %1, i32 3, i32 4
68136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  ret i32 %2
68236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines}
68336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
684cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: slti6:
685cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
686cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: slti [[R1:\$[0-9]+]], $4, 7
687cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: xori [[R1]], [[R1]], 1
688cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu [[R2:\$[0-9]+]], [[R1]], 3
689cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-NOT: movn
690cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
691cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  slti [[R1:\$[0-9]+]], $4, 7
692cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  xori [[R1]], [[R1]], 1
693cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG:  addiu [[R2:\$[0-9]+]], [[R1]], 3
694cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-NOT:  seleqz
695cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-NOT:  selnez
696cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
697cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: slti [[R1:\$[0-9]+]], $4, 7
698cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: xori [[R1]], [[R1]], 1
699cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu [[R2:\$[0-9]+]], [[R1]], 3
700cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-NOT: movn
701cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
702cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  slti [[R1:\$[0-9]+]], $4, 7
703cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  xori [[R1]], [[R1]], 1
704cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG:  addiu [[R2:\$[0-9]+]], [[R1]], 3
705cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-NOT:  seleqz
706cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-NOT:  selnez
707