annotate test/CodeGen/Mips/llvm-ir/select-int.ll @ 134:3a76565eade5 LLVM5.0.1

update 5.0.1
author mir3636
date Sat, 17 Feb 2018 09:57:20 +0900
parents 1172e4bd9c6f
children c2174574ed3a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
1 ; RUN: llc < %s -march=mips -mcpu=mips2 | FileCheck %s \
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
2 ; RUN: -check-prefixes=ALL,M2,M2-M3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
3 ; RUN: llc < %s -march=mips -mcpu=mips32 | FileCheck %s \
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
4 ; RUN: -check-prefixes=ALL,CMOV,CMOV-32,CMOV-32R1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
5 ; RUN: llc < %s -march=mips -mcpu=mips32r2 | FileCheck %s \
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
6 ; RUN: -check-prefixes=ALL,CMOV,CMOV-32,CMOV-32R2-R5
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
7 ; RUN: llc < %s -march=mips -mcpu=mips32r3 | FileCheck %s \
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
8 ; RUN: -check-prefixes=ALL,CMOV,CMOV-32,CMOV-32R2-R5
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
9 ; RUN: llc < %s -march=mips -mcpu=mips32r5 | FileCheck %s \
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
10 ; RUN: -check-prefixes=ALL,CMOV,CMOV-32,CMOV-32R2-R5
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
11 ; RUN: llc < %s -march=mips -mcpu=mips32r6 | FileCheck %s \
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
12 ; RUN: -check-prefixes=ALL,SEL,SEL-32
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
13 ; RUN: llc < %s -march=mips64 -mcpu=mips3 | FileCheck %s \
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
14 ; RUN: -check-prefixes=ALL,M3,M2-M3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
15 ; RUN: llc < %s -march=mips64 -mcpu=mips4 | FileCheck %s \
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
16 ; RUN: -check-prefixes=ALL,CMOV,CMOV-64
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
17 ; RUN: llc < %s -march=mips64 -mcpu=mips64 | FileCheck %s \
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
18 ; RUN: -check-prefixes=ALL,CMOV,CMOV-64
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
19 ; RUN: llc < %s -march=mips64 -mcpu=mips64r2 | FileCheck %s \
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
20 ; RUN: -check-prefixes=ALL,CMOV,CMOV-64
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
21 ; RUN: llc < %s -march=mips64 -mcpu=mips64r3 | FileCheck %s \
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
22 ; RUN: -check-prefixes=ALL,CMOV,CMOV-64
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
23 ; RUN: llc < %s -march=mips64 -mcpu=mips64r5 | FileCheck %s \
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
24 ; RUN: -check-prefixes=ALL,CMOV,CMOV-64
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
25 ; RUN: llc < %s -march=mips64 -mcpu=mips64r6 | FileCheck %s \
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
26 ; RUN: -check-prefixes=ALL,SEL,SEL-64
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
27 ; RUN: llc < %s -march=mips -mcpu=mips32r3 -mattr=+micromips | FileCheck %s \
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
28 ; RUN: -check-prefixes=ALL,MM32R3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
29 ; RUN: llc < %s -march=mips -mcpu=mips32r6 -mattr=+micromips | FileCheck %s \
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
30 ; RUN: -check-prefixes=ALL,MMR6,MM32R6
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
31
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
32 define signext i1 @tst_select_i1_i1(i1 signext %s,
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
33 i1 signext %x, i1 signext %y) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
34 entry:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
35 ; ALL-LABEL: tst_select_i1_i1:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
36
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
37 ; M2-M3: andi $[[T0:[0-9]+]], $4, 1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
38 ; M2: bnez $[[T0]], [[BB0:\$BB[0-9_]+]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
39 ; M3: bnez $[[T0]], [[BB0:\.LBB[0-9_]+]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
40 ; M2-M3: nop
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
41 ; M2-M3: move $5, $6
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
42 ; M2-M3: [[BB0]]:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
43 ; M2-M3: jr $ra
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
44 ; M2-M3: move $2, $5
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
45
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
46 ; CMOV: andi $[[T0:[0-9]+]], $4, 1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
47 ; CMOV: movn $6, $5, $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
48 ; CMOV: move $2, $6
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
49
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
50 ; SEL: andi $[[T0:[0-9]+]], $4, 1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
51 ; SEL: seleqz $[[T1:[0-9]+]], $6, $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
52 ; SEL: selnez $[[T2:[0-9]+]], $5, $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
53 ; SEL: or $2, $[[T2]], $[[T1]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
54
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
55 ; MM32R3: andi16 $[[T0:[0-9]+]], $4, 1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
56 ; MM32R3: movn $[[T1:[0-9]+]], $5, $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
57 ; MM32R3: move $2, $[[T1]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
58
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
59 ; MMR6: andi16 $[[T0:[0-9]+]], $4, 1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
60 ; MMR6: seleqz $[[T1:[0-9]+]], $6, $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
61 ; MMR6: selnez $[[T2:[0-9]+]], $5, $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
62 ; MMR6: or $2, $[[T2]], $[[T1]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
63
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
64 %r = select i1 %s, i1 %x, i1 %y
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
65 ret i1 %r
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
66 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
67
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
68 define signext i8 @tst_select_i1_i8(i1 signext %s,
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
69 i8 signext %x, i8 signext %y) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
70 entry:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
71 ; ALL-LABEL: tst_select_i1_i8:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
72
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
73 ; M2-M3: andi $[[T0:[0-9]+]], $4, 1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
74 ; M2: bnez $[[T0]], [[BB0:\$BB[0-9_]+]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
75 ; M3: bnez $[[T0]], [[BB0:\.LBB[0-9_]+]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
76 ; M2-M3: nop
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
77 ; M2-M3: move $5, $6
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
78 ; M2-M3: [[BB0]]:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
79 ; M2-M3: jr $ra
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
80 ; M2-M3: move $2, $5
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
81
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
82 ; CMOV: andi $[[T0:[0-9]+]], $4, 1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
83 ; CMOV: movn $6, $5, $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
84 ; CMOV: move $2, $6
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
85
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
86 ; SEL: andi $[[T0:[0-9]+]], $4, 1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
87 ; SEL: seleqz $[[T1:[0-9]+]], $6, $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
88 ; SEL: selnez $[[T2:[0-9]+]], $5, $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
89 ; SEL: or $2, $[[T2]], $[[T1]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
90
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
91 ; MM32R3: andi16 $[[T0:[0-9]+]], $4, 1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
92 ; MM32R3: movn $[[T1:[0-9]+]], $5, $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
93 ; MM32R3: move $2, $[[T1]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
94
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
95 ; MMR6: andi16 $[[T0:[0-9]+]], $4, 1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
96 ; MMR6: seleqz $[[T1:[0-9]+]], $6, $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
97 ; MMR6: selnez $[[T2:[0-9]+]], $5, $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
98 ; MMR6: or $2, $[[T2]], $[[T1]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
99
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
100 %r = select i1 %s, i8 %x, i8 %y
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
101 ret i8 %r
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
102 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
103
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
104 define signext i32 @tst_select_i1_i32(i1 signext %s,
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
105 i32 signext %x, i32 signext %y) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
106 entry:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
107 ; ALL-LABEL: tst_select_i1_i32:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
108
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
109 ; M2-M3: andi $[[T0:[0-9]+]], $4, 1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
110 ; M2: bnez $[[T0]], [[BB0:\$BB[0-9_]+]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
111 ; M3: bnez $[[T0]], [[BB0:\.LBB[0-9_]+]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
112 ; M2-M3: nop
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
113 ; M2-M3: move $5, $6
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
114 ; M2-M3: [[BB0]]:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
115 ; M2-M3: jr $ra
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
116 ; M2-M3: move $2, $5
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
117
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
118 ; CMOV: andi $[[T0:[0-9]+]], $4, 1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
119 ; CMOV: movn $6, $5, $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
120 ; CMOV: move $2, $6
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
121
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
122 ; SEL: andi $[[T0:[0-9]+]], $4, 1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
123 ; SEL: seleqz $[[T1:[0-9]+]], $6, $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
124 ; SEL: selnez $[[T2:[0-9]+]], $5, $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
125 ; SEL: or $2, $[[T2]], $[[T1]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
126
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
127 ; MM32R3: andi16 $[[T0:[0-9]+]], $4, 1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
128 ; MM32R3: movn $[[T1:[0-9]+]], $5, $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
129 ; MM32R3: move $2, $[[T1]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
130
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
131 ; MMR6: andi16 $[[T0:[0-9]+]], $4, 1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
132 ; MMR6: seleqz $[[T1:[0-9]+]], $6, $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
133 ; MMR6: selnez $[[T2:[0-9]+]], $5, $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
134 ; MMR6: or $2, $[[T2]], $[[T1]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
135
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
136 %r = select i1 %s, i32 %x, i32 %y
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
137 ret i32 %r
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
138 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
139
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
140 define signext i64 @tst_select_i1_i64(i1 signext %s,
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
141 i64 signext %x, i64 signext %y) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
142 entry:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
143 ; ALL-LABEL: tst_select_i1_i64:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
144
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
145 ; M2: andi $[[T0:[0-9]+]], $4, 1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
146 ; M2: bnez $[[T0]], $[[BB0:BB[0-9_]+]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
147 ; M2: nop
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
148 ; M2: lw $[[T1:[0-9]+]], 16($sp)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
149 ; M2: $[[BB0]]:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
150 ; FIXME: This branch is redundant
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
151 ; M2: bnez $[[T0]], $[[BB1:BB[0-9_]+]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
152 ; M2: nop
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
153 ; M2: lw $[[T2:[0-9]+]], 20($sp)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
154 ; M2: $[[BB1]]:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
155 ; M2: move $2, $[[T1]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
156 ; M2: jr $ra
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
157 ; M2: move $3, $[[T2]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
158
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
159 ; CMOV-32: andi $[[T0:[0-9]+]], $4, 1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
160 ; CMOV-32: lw $2, 16($sp)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
161 ; CMOV-32: movn $2, $6, $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
162 ; CMOV-32: lw $3, 20($sp)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
163 ; CMOV-32: movn $3, $7, $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
164
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
165 ; SEL-32: andi $[[T0:[0-9]+]], $4, 1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
166 ; SEL-32: lw $[[T1:[0-9]+]], 16($sp)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
167 ; SEL-32: seleqz $[[T2:[0-9]+]], $[[T1]], $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
168 ; SEL-32: selnez $[[T3:[0-9]+]], $6, $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
169 ; SEL-32: or $2, $[[T3]], $[[T2]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
170 ; SEL-32: lw $[[T4:[0-9]+]], 20($sp)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
171 ; SEL-32: seleqz $[[T5:[0-9]+]], $[[T4]], $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
172 ; SEL-32: selnez $[[T6:[0-9]+]], $7, $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
173 ; SEL-32: or $3, $[[T6]], $[[T5]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
174
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
175 ; M3: andi $[[T0:[0-9]+]], $4, 1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
176 ; M3: bnez $[[T0]], [[BB0:\.LBB[0-9_]+]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
177 ; M3: nop
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
178 ; M3: move $5, $6
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
179 ; M3: [[BB0]]:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
180 ; M3: jr $ra
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
181 ; M3: move $2, $5
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
182
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
183 ; CMOV-64: andi $[[T0:[0-9]+]], $4, 1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
184 ; CMOV-64: movn $6, $5, $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
185 ; CMOV-64: move $2, $6
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
186
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
187 ; SEL-64: andi $[[T0:[0-9]+]], $4, 1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
188 ; FIXME: This shift is redundant
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
189 ; SEL-64: sll $[[T0]], $[[T0]], 0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
190 ; SEL-64: seleqz $[[T1:[0-9]+]], $6, $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
191 ; SEL-64: selnez $[[T0]], $5, $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
192 ; SEL-64: or $2, $[[T0]], $[[T1]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
193
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
194 ; MM32R3: andi16 $[[T0:[0-9]+]], $4, 1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
195 ; MM32R3: lw $2, 16($sp)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
196 ; MM32R3: movn $2, $6, $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
197 ; MM32R3: lw $3, 20($sp)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
198 ; MM32R3: movn $3, $7, $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
199
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
200 ; MM32R6: andi16 $[[T0:[0-9]+]], $4, 1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
201 ; MM32R6: lw $[[T2:[0-9]+]], 16($sp)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
202 ; MM32R6: seleqz $[[T3:[0-9]+]], $[[T2]], $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
203 ; MM32R6: selnez $[[T1:[0-9]+]], $6, $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
204 ; MM32R6: or $2, $[[T1]], $[[T3]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
205 ; MM32R6: lw $[[T4:[0-9]+]], 20($sp)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
206 ; MM32R6: seleqz $[[T5:[0-9]+]], $[[T4]], $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
207 ; MM32R6: selnez $[[T6:[0-9]+]], $7, $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
208 ; MM32R6: or $3, $[[T6]], $[[T5]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
209
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
210 %r = select i1 %s, i64 %x, i64 %y
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
211 ret i64 %r
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
212 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
213
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
214 define i8* @tst_select_word_cst(i8* %a, i8* %b) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
215 ; ALL-LABEL: tst_select_word_cst:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
216
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
217 ; M2: addiu $[[T0:[0-9]+]], $zero, -1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
218 ; M2: xor $[[T1:[0-9]+]], $5, $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
219 ; M2: sltu $[[T2:[0-9]+]], $zero, $[[T1]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
220 ; M2: bnez $[[T2]], [[BB0:\$BB[0-9_]+]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
221 ; M2: addiu $2, $zero, 0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
222 ; M2: move $2, $4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
223 ; M2: [[BB0]]:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
224 ; M2: jr $ra
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
225
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
226 ; M3: daddiu $[[T0:[0-9]+]], $zero, -1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
227 ; M3: xor $[[T1:[0-9]+]], $5, $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
228 ; M3: sltu $[[T2:[0-9]+]], $zero, $[[T1]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
229 ; M3: bnez $[[T2]], [[BB0:\.LBB[0-9_]+]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
230 ; M3: daddiu $2, $zero, 0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
231 ; M3: move $2, $4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
232 ; M3: [[BB0]]:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
233 ; M3: jr $ra
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
234
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
235 ; CMOV-32: addiu $[[T0:[0-9]+]], $zero, -1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
236 ; CMOV-32: xor $[[T1:[0-9]+]], $5, $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
237 ; CMOV-32: movn $[[T2:[0-9]+]], $zero, $[[T1]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
238 ; CMOV-32: jr $ra
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
239 ; CMOV-32: move $2, $[[T2]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
240
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
241 ; SEL-32: addiu $[[T0:[0-9]+]], $zero, -1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
242 ; SEL-32: xor $[[T1:[0-9]+]], $5, $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
243 ; SEL-32: sltu $[[T2:[0-9]+]], $zero, $[[T1]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
244 ; SEL-32: jr $ra
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
245 ; SEL-32: seleqz $2, $4, $[[T2]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
246
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
247 ; CMOV-64: daddiu $[[T0:[0-9]+]], $zero, -1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
248 ; CMOV-64: xor $[[T1:[0-9]+]], $5, $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
249 ; CMOV-64: movn $[[T2:[0-9]+]], $zero, $[[T1]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
250 ; CMOV-64: move $2, $[[T2]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
251
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
252 ; SEL-64: daddiu $[[T0:[0-9]+]], $zero, -1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
253 ; SEL-64: xor $[[T1:[0-9]+]], $5, $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
254 ; SEL-64: sltu $[[T2:[0-9]+]], $zero, $[[T1]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
255 ; FIXME: This shift is redundant.
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
256 ; SEL-64: sll $[[T2]], $[[T2]], 0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
257 ; SEL-64: seleqz $2, $4, $[[T2]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
258
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
259 ; MM32R3: li16 $[[T0:[0-9]+]], -1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
260 ; MM32R3: xor $[[T1:[0-9]+]], $5, $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
261 ; MM32R3: li16 $[[T2:[0-9]+]], 0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
262 ; MM32R3: movn $[[T3:[0-9]+]], $[[T2]], $[[T1]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
263 ; MM32R3: move $2, $[[T3]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
264
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
265 ; MM32R6: li16 $[[T0:[0-9]+]], -1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
266 ; MM32R6: xor $[[T1:[0-9]+]], $5, $[[T0]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
267 ; MM32R6: sltu $[[T2:[0-9]+]], $zero, $[[T1]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
268 ; MM32R6: seleqz $2, $4, $[[T2]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
269
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
270 %cmp = icmp eq i8* %b, inttoptr (i64 -1 to i8*)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
271 %r = select i1 %cmp, i8* %a, i8* null
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
272 ret i8* %r
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
273 }