OLD | NEW |
1 ; Test encoding of MIPS32 floating point comparison | 1 ; Test encoding of MIPS32 floating point comparison |
2 | 2 |
3 ; REQUIRES: allow_dump | 3 ; REQUIRES: allow_dump |
4 | 4 |
5 ; Compile using standalone assembler. | 5 ; Compile using standalone assembler. |
6 ; RUN: %p2i --filetype=asm -i %s --target=mips32 --args -O2 \ | 6 ; RUN: %p2i --filetype=asm -i %s --target=mips32 --args -O2 \ |
7 ; RUN: --allow-externally-defined-symbols --skip-unimplemented \ | 7 ; RUN: --allow-externally-defined-symbols --skip-unimplemented \ |
8 ; RUN: | FileCheck %s --check-prefix=ASM | 8 ; RUN: | FileCheck %s --check-prefix=ASM |
9 | 9 |
10 ; Show bytes in assembled standalone code. | 10 ; Show bytes in assembled standalone code. |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
91 define internal i32 @fcmpOeqFloat(float %a, float %b) { | 91 define internal i32 @fcmpOeqFloat(float %a, float %b) { |
92 entry: | 92 entry: |
93 %cmp = fcmp oeq float %a, %b | 93 %cmp = fcmp oeq float %a, %b |
94 %cmp.ret_ext = zext i1 %cmp to i32 | 94 %cmp.ret_ext = zext i1 %cmp to i32 |
95 ret i32 %cmp.ret_ext | 95 ret i32 %cmp.ret_ext |
96 } | 96 } |
97 | 97 |
98 ; ASM-LABEL: fcmpOeqFloat | 98 ; ASM-LABEL: fcmpOeqFloat |
99 ; ASM-NEXT: .LfcmpOeqFloat$entry: | 99 ; ASM-NEXT: .LfcmpOeqFloat$entry: |
100 ; ASM-NEXT: c.eq.s $f12, $f14 | 100 ; ASM-NEXT: c.eq.s $f12, $f14 |
| 101 ; ASM-NEXT: addiu $v0, $zero, 1 |
101 ; ASM-NEXT: movf $v0, $zero, $fcc0 | 102 ; ASM-NEXT: movf $v0, $zero, $fcc0 |
102 ; ASM-NEXT: andi $v0, $v0, 1 | 103 ; ASM-NEXT: andi $v0, $v0, 1 |
103 ; ASM-NEXT: jr $ra | 104 ; ASM-NEXT: jr $ra |
104 | 105 |
105 ; DIS-LABEL: 00000020 <fcmpOeqFloat>: | 106 ; DIS-LABEL: 00000020 <fcmpOeqFloat>: |
106 ; DIS-NEXT: 20: 460e6032 c.eq.s $f12,$f14 | 107 ; DIS-NEXT: 20: 460e6032 c.eq.s $f12,$f14 |
107 ; DIS-NEXT: 24:» 00001001 » movf» v0,zero,$fcc0 | 108 ; DIS-NEXT: 24:» 24020001 » li» v0,1 |
108 ; DIS-NEXT: 28:» 30420001 » andi» v0,v0,0x1 | 109 ; DIS-NEXT: 28:» 00001001 » movf» v0,zero,$fcc0 |
109 ; DIS-NEXT: 2c:» 03e00008 » jr» ra | 110 ; DIS-NEXT: 2c:» 30420001 » andi» v0,v0,0x1 |
| 111 ; DIS-NEXT: 30:» 03e00008 » jr» ra |
110 | 112 |
111 ; IASM-LABEL: fcmpOeqFloat: | 113 ; IASM-LABEL: fcmpOeqFloat: |
112 ; IASM-NEXT: .LfcmpOeqFloat$entry: | 114 ; IASM-NEXT: .LfcmpOeqFloat$entry: |
113 ; IASM-NEXT: .byte 0x32 | 115 ; IASM-NEXT: .byte 0x32 |
114 ; IASM-NEXT: .byte 0x60 | 116 ; IASM-NEXT: .byte 0x60 |
115 ; IASM-NEXT: .byte 0xe | 117 ; IASM-NEXT: .byte 0xe |
116 ; IASM-NEXT: .byte 0x46 | 118 ; IASM-NEXT: .byte 0x46 |
117 ; IASM-NEXT: .byte 0x1 | 119 ; IASM-NEXT: .byte 0x1 |
| 120 ; IASM-NEXT: .byte 0x0 |
| 121 ; IASM-NEXT: .byte 0x2 |
| 122 ; IASM-NEXT: .byte 0x24 |
| 123 ; IASM-NEXT: .byte 0x1 |
118 ; IASM-NEXT: .byte 0x10 | 124 ; IASM-NEXT: .byte 0x10 |
119 ; IASM-NEXT: .byte 0x0 | 125 ; IASM-NEXT: .byte 0x0 |
120 ; IASM-NEXT: .byte 0x0 | 126 ; IASM-NEXT: .byte 0x0 |
121 ; IASM-NEXT: .byte 0x1 | 127 ; IASM-NEXT: .byte 0x1 |
122 ; IASM-NEXT: .byte 0x0 | 128 ; IASM-NEXT: .byte 0x0 |
123 ; IASM-NEXT: .byte 0x42 | 129 ; IASM-NEXT: .byte 0x42 |
124 ; IASM-NEXT: .byte 0x30 | 130 ; IASM-NEXT: .byte 0x30 |
125 ; IASM-NEXT: .byte 0x8 | 131 ; IASM-NEXT: .byte 0x8 |
126 ; IASM-NEXT: .byte 0x0 | 132 ; IASM-NEXT: .byte 0x0 |
127 ; IASM-NEXT: .byte 0xe0 | 133 ; IASM-NEXT: .byte 0xe0 |
128 ; IASM-NEXT: .byte 0x3 | 134 ; IASM-NEXT: .byte 0x3 |
129 | 135 |
130 define internal i32 @fcmpOeqDouble(double %a, double %b) { | 136 define internal i32 @fcmpOeqDouble(double %a, double %b) { |
131 entry: | 137 entry: |
132 %cmp = fcmp oeq double %a, %b | 138 %cmp = fcmp oeq double %a, %b |
133 %cmp.ret_ext = zext i1 %cmp to i32 | 139 %cmp.ret_ext = zext i1 %cmp to i32 |
134 ret i32 %cmp.ret_ext | 140 ret i32 %cmp.ret_ext |
135 } | 141 } |
136 | 142 |
137 ; ASM-LABEL: fcmpOeqDouble | 143 ; ASM-LABEL: fcmpOeqDouble |
138 ; ASM-NEXT: .LfcmpOeqDouble$entry: | 144 ; ASM-NEXT: .LfcmpOeqDouble$entry: |
139 ; ASM-NEXT: c.eq.d $f12, $f14 | 145 ; ASM-NEXT: c.eq.d $f12, $f14 |
| 146 ; ASM-NEXT: addiu $v0, $zero, 1 |
140 ; ASM-NEXT: movf $v0, $zero, $fcc0 | 147 ; ASM-NEXT: movf $v0, $zero, $fcc0 |
141 ; ASM-NEXT: andi $v0, $v0, 1 | 148 ; ASM-NEXT: andi $v0, $v0, 1 |
142 ; ASM-NEXT: jr $ra | 149 ; ASM-NEXT: jr $ra |
143 | 150 |
144 ; DIS-LABEL: 00000040 <fcmpOeqDouble>: | 151 ; DIS-LABEL: 00000040 <fcmpOeqDouble>: |
145 ; DIS-NEXT: 40: 462e6032 c.eq.d $f12,$f14 | 152 ; DIS-NEXT: 40: 462e6032 c.eq.d $f12,$f14 |
146 ; DIS-NEXT: 44:» 00001001 » movf» v0,zero,$fcc0 | 153 ; DIS-NEXT: 44:» 24020001 » li» v0,1 |
147 ; DIS-NEXT: 48:» 30420001 » andi» v0,v0,0x1 | 154 ; DIS-NEXT: 48:» 00001001 » movf» v0,zero,$fcc0 |
148 ; DIS-NEXT: 4c:» 03e00008 » jr» ra | 155 ; DIS-NEXT: 4c:» 30420001 » andi» v0,v0,0x1 |
| 156 ; DIS-NEXT: 50:» 03e00008 » jr» ra |
149 | 157 |
150 ; IASM-LABEL: fcmpOeqDouble: | 158 ; IASM-LABEL: fcmpOeqDouble: |
151 ; IASM-NEXT: .LfcmpOeqDouble$entry: | 159 ; IASM-NEXT: .LfcmpOeqDouble$entry: |
152 ; IASM-NEXT: .byte 0x32 | 160 ; IASM-NEXT: .byte 0x32 |
153 ; IASM-NEXT: .byte 0x60 | 161 ; IASM-NEXT: .byte 0x60 |
154 ; IASM-NEXT: .byte 0x2e | 162 ; IASM-NEXT: .byte 0x2e |
155 ; IASM-NEXT: .byte 0x46 | 163 ; IASM-NEXT: .byte 0x46 |
156 ; IASM-NEXT: .byte 0x1 | 164 ; IASM-NEXT: .byte 0x1 |
| 165 ; IASM-NEXT: .byte 0x0 |
| 166 ; IASM-NEXT: .byte 0x2 |
| 167 ; IASM-NEXT: .byte 0x24 |
| 168 ; IASM-NEXT: .byte 0x1 |
157 ; IASM-NEXT: .byte 0x10 | 169 ; IASM-NEXT: .byte 0x10 |
158 ; IASM-NEXT: .byte 0x0 | 170 ; IASM-NEXT: .byte 0x0 |
159 ; IASM-NEXT: .byte 0x0 | 171 ; IASM-NEXT: .byte 0x0 |
160 ; IASM-NEXT: .byte 0x1 | 172 ; IASM-NEXT: .byte 0x1 |
161 ; IASM-NEXT: .byte 0x0 | 173 ; IASM-NEXT: .byte 0x0 |
162 ; IASM-NEXT: .byte 0x42 | 174 ; IASM-NEXT: .byte 0x42 |
163 ; IASM-NEXT: .byte 0x30 | 175 ; IASM-NEXT: .byte 0x30 |
164 ; IASM-NEXT: .byte 0x8 | 176 ; IASM-NEXT: .byte 0x8 |
165 ; IASM-NEXT: .byte 0x0 | 177 ; IASM-NEXT: .byte 0x0 |
166 ; IASM-NEXT: .byte 0xe0 | 178 ; IASM-NEXT: .byte 0xe0 |
167 ; IASM-NEXT: .byte 0x3 | 179 ; IASM-NEXT: .byte 0x3 |
168 | 180 |
169 define internal i32 @fcmpOgtFloat(float %a, float %b) { | 181 define internal i32 @fcmpOgtFloat(float %a, float %b) { |
170 entry: | 182 entry: |
171 %cmp = fcmp ogt float %a, %b | 183 %cmp = fcmp ogt float %a, %b |
172 %cmp.ret_ext = zext i1 %cmp to i32 | 184 %cmp.ret_ext = zext i1 %cmp to i32 |
173 ret i32 %cmp.ret_ext | 185 ret i32 %cmp.ret_ext |
174 } | 186 } |
175 | 187 |
176 ; ASM-LABEL: fcmpOgtFloat | 188 ; ASM-LABEL: fcmpOgtFloat |
177 ; ASM-NEXT: .LfcmpOgtFloat$entry: | 189 ; ASM-NEXT: .LfcmpOgtFloat$entry: |
178 ; ASM-NEXT: c.ule.s $f12, $f14 | 190 ; ASM-NEXT: c.ule.s $f12, $f14 |
| 191 ; ASM-NEXT: addiu $v0, $zero, 1 |
179 ; ASM-NEXT: movt $v0, $zero, $fcc0 | 192 ; ASM-NEXT: movt $v0, $zero, $fcc0 |
180 ; ASM-NEXT: andi $v0, $v0, 1 | 193 ; ASM-NEXT: andi $v0, $v0, 1 |
181 ; ASM-NEXT: jr $ra | 194 ; ASM-NEXT: jr $ra |
182 | 195 |
183 ; DIS-LABEL: 00000060 <fcmpOgtFloat>: | 196 ; DIS-LABEL: 00000060 <fcmpOgtFloat>: |
184 ; DIS-NEXT: 60: 460e6037 c.ule.s $f12,$f14 | 197 ; DIS-NEXT: 60: 460e6037 c.ule.s $f12,$f14 |
185 ; DIS-NEXT: 64:» 00011001 » movt» v0,zero,$fcc0 | 198 ; DIS-NEXT: 64:» 24020001 » li» v0,1 |
186 ; DIS-NEXT: 68:» 30420001 » andi» v0,v0,0x1 | 199 ; DIS-NEXT: 68:» 00011001 » movt» v0,zero,$fcc0 |
187 ; DIS-NEXT: 6c:» 03e00008 » jr» ra | 200 ; DIS-NEXT: 6c:» 30420001 » andi» v0,v0,0x1 |
| 201 ; DIS-NEXT: 70:» 03e00008 » jr» ra |
188 | 202 |
189 ; IASM-LABEL: fcmpOgtFloat: | 203 ; IASM-LABEL: fcmpOgtFloat: |
190 ; IASM-NEXT: .LfcmpOgtFloat$entry: | 204 ; IASM-NEXT: .LfcmpOgtFloat$entry: |
191 ; IASM-NEXT: .byte 0x37 | 205 ; IASM-NEXT: .byte 0x37 |
192 ; IASM-NEXT: .byte 0x60 | 206 ; IASM-NEXT: .byte 0x60 |
193 ; IASM-NEXT: .byte 0xe | 207 ; IASM-NEXT: .byte 0xe |
194 ; IASM-NEXT: .byte 0x46 | 208 ; IASM-NEXT: .byte 0x46 |
195 ; IASM-NEXT: .byte 0x1 | 209 ; IASM-NEXT: .byte 0x1 |
| 210 ; IASM-NEXT: .byte 0x0 |
| 211 ; IASM-NEXT: .byte 0x2 |
| 212 ; IASM-NEXT: .byte 0x24 |
| 213 ; IASM-NEXT: .byte 0x1 |
196 ; IASM-NEXT: .byte 0x10 | 214 ; IASM-NEXT: .byte 0x10 |
197 ; IASM-NEXT: .byte 0x1 | 215 ; IASM-NEXT: .byte 0x1 |
198 ; IASM-NEXT: .byte 0x0 | 216 ; IASM-NEXT: .byte 0x0 |
199 ; IASM-NEXT: .byte 0x1 | 217 ; IASM-NEXT: .byte 0x1 |
200 ; IASM-NEXT: .byte 0x0 | 218 ; IASM-NEXT: .byte 0x0 |
201 ; IASM-NEXT: .byte 0x42 | 219 ; IASM-NEXT: .byte 0x42 |
202 ; IASM-NEXT: .byte 0x30 | 220 ; IASM-NEXT: .byte 0x30 |
203 ; IASM-NEXT: .byte 0x8 | 221 ; IASM-NEXT: .byte 0x8 |
204 ; IASM-NEXT: .byte 0x0 | 222 ; IASM-NEXT: .byte 0x0 |
205 ; IASM-NEXT: .byte 0xe0 | 223 ; IASM-NEXT: .byte 0xe0 |
206 ; IASM-NEXT: .byte 0x3 | 224 ; IASM-NEXT: .byte 0x3 |
207 | 225 |
208 define internal i32 @fcmpOgtDouble(double %a, double %b) { | 226 define internal i32 @fcmpOgtDouble(double %a, double %b) { |
209 entry: | 227 entry: |
210 %cmp = fcmp ogt double %a, %b | 228 %cmp = fcmp ogt double %a, %b |
211 %cmp.ret_ext = zext i1 %cmp to i32 | 229 %cmp.ret_ext = zext i1 %cmp to i32 |
212 ret i32 %cmp.ret_ext | 230 ret i32 %cmp.ret_ext |
213 } | 231 } |
214 | 232 |
215 ; ASM-LABEL: fcmpOgtDouble | 233 ; ASM-LABEL: fcmpOgtDouble |
216 ; ASM-NEXT: .LfcmpOgtDouble$entry: | 234 ; ASM-NEXT: .LfcmpOgtDouble$entry: |
217 ; ASM-NEXT: c.ule.d $f12, $f14 | 235 ; ASM-NEXT: c.ule.d $f12, $f14 |
| 236 ; ASM-NEXT: addiu $v0, $zero, 1 |
218 ; ASM-NEXT: movt $v0, $zero, $fcc0 | 237 ; ASM-NEXT: movt $v0, $zero, $fcc0 |
219 ; ASM-NEXT: andi $v0, $v0, 1 | 238 ; ASM-NEXT: andi $v0, $v0, 1 |
220 ; ASM-NEXT: jr $ra | 239 ; ASM-NEXT: jr $ra |
221 | 240 |
222 ; DIS-LABEL: 00000080 <fcmpOgtDouble>: | 241 ; DIS-LABEL: 00000080 <fcmpOgtDouble>: |
223 ; DIS-NEXT: 80: 462e6037 c.ule.d $f12,$f14 | 242 ; DIS-NEXT: 80: 462e6037 c.ule.d $f12,$f14 |
224 ; DIS-NEXT: 84:» 00011001 » movt» v0,zero,$fcc0 | 243 ; DIS-NEXT: 84:» 24020001 » li» v0,1 |
225 ; DIS-NEXT: 88:» 30420001 » andi» v0,v0,0x1 | 244 ; DIS-NEXT: 88:» 00011001 » movt» v0,zero,$fcc0 |
226 ; DIS-NEXT: 8c:» 03e00008 » jr» ra | 245 ; DIS-NEXT: 8c:» 30420001 » andi» v0,v0,0x1 |
| 246 ; DIS-NEXT: 90:» 03e00008 » jr» ra |
227 | 247 |
228 ; IASM-LABEL: fcmpOgtDouble: | 248 ; IASM-LABEL: fcmpOgtDouble: |
229 ; IASM-NEXT: .LfcmpOgtDouble$entry: | 249 ; IASM-NEXT: .LfcmpOgtDouble$entry: |
230 ; IASM-NEXT: .byte 0x37 | 250 ; IASM-NEXT: .byte 0x37 |
231 ; IASM-NEXT: .byte 0x60 | 251 ; IASM-NEXT: .byte 0x60 |
232 ; IASM-NEXT: .byte 0x2e | 252 ; IASM-NEXT: .byte 0x2e |
233 ; IASM-NEXT: .byte 0x46 | 253 ; IASM-NEXT: .byte 0x46 |
234 ; IASM-NEXT: .byte 0x1 | 254 ; IASM-NEXT: .byte 0x1 |
| 255 ; IASM-NEXT: .byte 0x0 |
| 256 ; IASM-NEXT: .byte 0x2 |
| 257 ; IASM-NEXT: .byte 0x24 |
| 258 ; IASM-NEXT: .byte 0x1 |
235 ; IASM-NEXT: .byte 0x10 | 259 ; IASM-NEXT: .byte 0x10 |
236 ; IASM-NEXT: .byte 0x1 | 260 ; IASM-NEXT: .byte 0x1 |
237 ; IASM-NEXT: .byte 0x0 | 261 ; IASM-NEXT: .byte 0x0 |
238 ; IASM-NEXT: .byte 0x1 | 262 ; IASM-NEXT: .byte 0x1 |
239 ; IASM-NEXT: .byte 0x0 | 263 ; IASM-NEXT: .byte 0x0 |
240 ; IASM-NEXT: .byte 0x42 | 264 ; IASM-NEXT: .byte 0x42 |
241 ; IASM-NEXT: .byte 0x30 | 265 ; IASM-NEXT: .byte 0x30 |
242 ; IASM-NEXT: .byte 0x8 | 266 ; IASM-NEXT: .byte 0x8 |
243 ; IASM-NEXT: .byte 0x0 | 267 ; IASM-NEXT: .byte 0x0 |
244 ; IASM-NEXT: .byte 0xe0 | 268 ; IASM-NEXT: .byte 0xe0 |
245 ; IASM-NEXT: .byte 0x3 | 269 ; IASM-NEXT: .byte 0x3 |
246 | 270 |
247 define internal i32 @fcmpOgeFloat(float %a, float %b) { | 271 define internal i32 @fcmpOgeFloat(float %a, float %b) { |
248 entry: | 272 entry: |
249 %cmp = fcmp oge float %a, %b | 273 %cmp = fcmp oge float %a, %b |
250 %cmp.ret_ext = zext i1 %cmp to i32 | 274 %cmp.ret_ext = zext i1 %cmp to i32 |
251 ret i32 %cmp.ret_ext | 275 ret i32 %cmp.ret_ext |
252 } | 276 } |
253 | 277 |
254 ; ASM-LABEL: fcmpOgeFloat | 278 ; ASM-LABEL: fcmpOgeFloat |
255 ; ASM-NEXT: .LfcmpOgeFloat$entry: | 279 ; ASM-NEXT: .LfcmpOgeFloat$entry: |
256 ; ASM-NEXT: c.ult.s $f12, $f14 | 280 ; ASM-NEXT: c.ult.s $f12, $f14 |
| 281 ; ASM-NEXT: addiu $v0, $zero, 1 |
257 ; ASM-NEXT: movt $v0, $zero, $fcc0 | 282 ; ASM-NEXT: movt $v0, $zero, $fcc0 |
258 ; ASM-NEXT: andi $v0, $v0, 1 | 283 ; ASM-NEXT: andi $v0, $v0, 1 |
259 ; ASM-NEXT: jr $ra | 284 ; ASM-NEXT: jr $ra |
260 | 285 |
261 ; DIS-LABEL: 000000a0 <fcmpOgeFloat>: | 286 ; DIS-LABEL: 000000a0 <fcmpOgeFloat>: |
262 ; DIS-NEXT: a0: 460e6035 c.ult.s $f12,$f14 | 287 ; DIS-NEXT: a0: 460e6035 c.ult.s $f12,$f14 |
263 ; DIS-NEXT: a4:» 00011001 » movt» v0,zero,$fcc0 | 288 ; DIS-NEXT: a4:» 24020001 » li» v0,1 |
264 ; DIS-NEXT: a8:» 30420001 » andi» v0,v0,0x1 | 289 ; DIS-NEXT: a8:» 00011001 » movt» v0,zero,$fcc0 |
265 ; DIS-NEXT: ac:» 03e00008 » jr» ra | 290 ; DIS-NEXT: ac:» 30420001 » andi» v0,v0,0x1 |
| 291 ; DIS-NEXT: b0:» 03e00008 » jr» ra |
266 | 292 |
267 ; IASM-LABEL: fcmpOgeFloat: | 293 ; IASM-LABEL: fcmpOgeFloat: |
268 ; IASM-NEXT: .LfcmpOgeFloat$entry: | 294 ; IASM-NEXT: .LfcmpOgeFloat$entry: |
269 ; IASM-NEXT: .byte 0x35 | 295 ; IASM-NEXT: .byte 0x35 |
270 ; IASM-NEXT: .byte 0x60 | 296 ; IASM-NEXT: .byte 0x60 |
271 ; IASM-NEXT: .byte 0xe | 297 ; IASM-NEXT: .byte 0xe |
272 ; IASM-NEXT: .byte 0x46 | 298 ; IASM-NEXT: .byte 0x46 |
273 ; IASM-NEXT: .byte 0x1 | 299 ; IASM-NEXT: .byte 0x1 |
| 300 ; IASM-NEXT: .byte 0x0 |
| 301 ; IASM-NEXT: .byte 0x2 |
| 302 ; IASM-NEXT: .byte 0x24 |
| 303 ; IASM-NEXT: .byte 0x1 |
274 ; IASM-NEXT: .byte 0x10 | 304 ; IASM-NEXT: .byte 0x10 |
275 ; IASM-NEXT: .byte 0x1 | 305 ; IASM-NEXT: .byte 0x1 |
276 ; IASM-NEXT: .byte 0x0 | 306 ; IASM-NEXT: .byte 0x0 |
277 ; IASM-NEXT: .byte 0x1 | 307 ; IASM-NEXT: .byte 0x1 |
278 ; IASM-NEXT: .byte 0x0 | 308 ; IASM-NEXT: .byte 0x0 |
279 ; IASM-NEXT: .byte 0x42 | 309 ; IASM-NEXT: .byte 0x42 |
280 ; IASM-NEXT: .byte 0x30 | 310 ; IASM-NEXT: .byte 0x30 |
281 ; IASM-NEXT: .byte 0x8 | 311 ; IASM-NEXT: .byte 0x8 |
282 ; IASM-NEXT: .byte 0x0 | 312 ; IASM-NEXT: .byte 0x0 |
283 ; IASM-NEXT: .byte 0xe0 | 313 ; IASM-NEXT: .byte 0xe0 |
284 ; IASM-NEXT: .byte 0x3 | 314 ; IASM-NEXT: .byte 0x3 |
285 | 315 |
286 define internal i32 @fcmpOgeDouble(double %a, double %b) { | 316 define internal i32 @fcmpOgeDouble(double %a, double %b) { |
287 entry: | 317 entry: |
288 %cmp = fcmp oge double %a, %b | 318 %cmp = fcmp oge double %a, %b |
289 %cmp.ret_ext = zext i1 %cmp to i32 | 319 %cmp.ret_ext = zext i1 %cmp to i32 |
290 ret i32 %cmp.ret_ext | 320 ret i32 %cmp.ret_ext |
291 } | 321 } |
292 | 322 |
293 ; ASM-LABEL: fcmpOgeDouble | 323 ; ASM-LABEL: fcmpOgeDouble |
294 ; ASM-NEXT: .LfcmpOgeDouble$entry: | 324 ; ASM-NEXT: .LfcmpOgeDouble$entry: |
295 ; ASM-NEXT: c.ult.d $f12, $f14 | 325 ; ASM-NEXT: c.ult.d $f12, $f14 |
| 326 ; ASM-NEXT: addiu $v0, $zero, 1 |
296 ; ASM-NEXT: movt $v0, $zero, $fcc0 | 327 ; ASM-NEXT: movt $v0, $zero, $fcc0 |
297 ; ASM-NEXT: andi $v0, $v0, 1 | 328 ; ASM-NEXT: andi $v0, $v0, 1 |
298 ; ASM-NEXT: jr $ra | 329 ; ASM-NEXT: jr $ra |
299 | 330 |
300 ; DIS-LABEL: 000000c0 <fcmpOgeDouble>: | 331 ; DIS-LABEL: 000000c0 <fcmpOgeDouble>: |
301 ; DIS-NEXT: c0: 462e6035 c.ult.d $f12,$f14 | 332 ; DIS-NEXT: c0: 462e6035 c.ult.d $f12,$f14 |
302 ; DIS-NEXT: c4:» 00011001 » movt» v0,zero,$fcc0 | 333 ; DIS-NEXT: c4:» 24020001 » li» v0,1 |
303 ; DIS-NEXT: c8:» 30420001 » andi» v0,v0,0x1 | 334 ; DIS-NEXT: c8:» 00011001 » movt» v0,zero,$fcc0 |
304 ; DIS-NEXT: cc:» 03e00008 » jr» ra | 335 ; DIS-NEXT: cc:» 30420001 » andi» v0,v0,0x1 |
| 336 ; DIS-NEXT: d0:» 03e00008 » jr» ra |
305 | 337 |
306 ; IASM-LABEL: fcmpOgeDouble: | 338 ; IASM-LABEL: fcmpOgeDouble: |
307 ; IASM-NEXT: .LfcmpOgeDouble$entry: | 339 ; IASM-NEXT: .LfcmpOgeDouble$entry: |
308 ; IASM-NEXT: .byte 0x35 | 340 ; IASM-NEXT: .byte 0x35 |
309 ; IASM-NEXT: .byte 0x60 | 341 ; IASM-NEXT: .byte 0x60 |
310 ; IASM-NEXT: .byte 0x2e | 342 ; IASM-NEXT: .byte 0x2e |
311 ; IASM-NEXT: .byte 0x46 | 343 ; IASM-NEXT: .byte 0x46 |
312 ; IASM-NEXT: .byte 0x1 | 344 ; IASM-NEXT: .byte 0x1 |
| 345 ; IASM-NEXT: .byte 0x0 |
| 346 ; IASM-NEXT: .byte 0x2 |
| 347 ; IASM-NEXT: .byte 0x24 |
| 348 ; IASM-NEXT: .byte 0x1 |
313 ; IASM-NEXT: .byte 0x10 | 349 ; IASM-NEXT: .byte 0x10 |
314 ; IASM-NEXT: .byte 0x1 | 350 ; IASM-NEXT: .byte 0x1 |
315 ; IASM-NEXT: .byte 0x0 | 351 ; IASM-NEXT: .byte 0x0 |
316 ; IASM-NEXT: .byte 0x1 | 352 ; IASM-NEXT: .byte 0x1 |
317 ; IASM-NEXT: .byte 0x0 | 353 ; IASM-NEXT: .byte 0x0 |
318 ; IASM-NEXT: .byte 0x42 | 354 ; IASM-NEXT: .byte 0x42 |
319 ; IASM-NEXT: .byte 0x30 | 355 ; IASM-NEXT: .byte 0x30 |
320 ; IASM-NEXT: .byte 0x8 | 356 ; IASM-NEXT: .byte 0x8 |
321 ; IASM-NEXT: .byte 0x0 | 357 ; IASM-NEXT: .byte 0x0 |
322 ; IASM-NEXT: .byte 0xe0 | 358 ; IASM-NEXT: .byte 0xe0 |
323 ; IASM-NEXT: .byte 0x3 | 359 ; IASM-NEXT: .byte 0x3 |
324 | 360 |
325 define internal i32 @fcmpOltFloat(float %a, float %b) { | 361 define internal i32 @fcmpOltFloat(float %a, float %b) { |
326 entry: | 362 entry: |
327 %cmp = fcmp olt float %a, %b | 363 %cmp = fcmp olt float %a, %b |
328 %cmp.ret_ext = zext i1 %cmp to i32 | 364 %cmp.ret_ext = zext i1 %cmp to i32 |
329 ret i32 %cmp.ret_ext | 365 ret i32 %cmp.ret_ext |
330 } | 366 } |
331 | 367 |
332 ; ASM-LABEL: fcmpOltFloat | 368 ; ASM-LABEL: fcmpOltFloat |
333 ; ASM-NEXT: .LfcmpOltFloat$entry: | 369 ; ASM-NEXT: .LfcmpOltFloat$entry: |
334 ; ASM-NEXT: c.olt.s $f12, $f14 | 370 ; ASM-NEXT: c.olt.s $f12, $f14 |
| 371 ; ASM-NEXT: addiu $v0, $zero, 1 |
335 ; ASM-NEXT: movf $v0, $zero, $fcc0 | 372 ; ASM-NEXT: movf $v0, $zero, $fcc0 |
336 ; ASM-NEXT: andi $v0, $v0, 1 | 373 ; ASM-NEXT: andi $v0, $v0, 1 |
337 ; ASM-NEXT: jr $ra | 374 ; ASM-NEXT: jr $ra |
338 | 375 |
339 ; DIS-LABEL: 000000e0 <fcmpOltFloat>: | 376 ; DIS-LABEL: 000000e0 <fcmpOltFloat>: |
340 ; DIS-NEXT: e0: 460e6034 c.olt.s $f12,$f14 | 377 ; DIS-NEXT: e0: 460e6034 c.olt.s $f12,$f14 |
341 ; DIS-NEXT: e4:» 00001001 » movf» v0,zero,$fcc0 | 378 ; DIS-NEXT: e4:» 24020001 » li» v0,1 |
342 ; DIS-NEXT: e8:» 30420001 » andi» v0,v0,0x1 | 379 ; DIS-NEXT: e8:» 00001001 » movf» v0,zero,$fcc0 |
343 ; DIS-NEXT: ec:» 03e00008 » jr» ra | 380 ; DIS-NEXT: ec:» 30420001 » andi» v0,v0,0x1 |
| 381 ; DIS-NEXT: f0:» 03e00008 » jr» ra |
344 | 382 |
345 ; IASM-LABEL: fcmpOltFloat: | 383 ; IASM-LABEL: fcmpOltFloat: |
346 ; IASM-NEXT: .LfcmpOltFloat$entry: | 384 ; IASM-NEXT: .LfcmpOltFloat$entry: |
347 ; IASM-NEXT: .byte 0x34 | 385 ; IASM-NEXT: .byte 0x34 |
348 ; IASM-NEXT: .byte 0x60 | 386 ; IASM-NEXT: .byte 0x60 |
349 ; IASM-NEXT: .byte 0xe | 387 ; IASM-NEXT: .byte 0xe |
350 ; IASM-NEXT: .byte 0x46 | 388 ; IASM-NEXT: .byte 0x46 |
351 ; IASM-NEXT: .byte 0x1 | 389 ; IASM-NEXT: .byte 0x1 |
| 390 ; IASM-NEXT: .byte 0x0 |
| 391 ; IASM-NEXT: .byte 0x2 |
| 392 ; IASM-NEXT: .byte 0x24 |
| 393 ; IASM-NEXT: .byte 0x1 |
352 ; IASM-NEXT: .byte 0x10 | 394 ; IASM-NEXT: .byte 0x10 |
353 ; IASM-NEXT: .byte 0x0 | 395 ; IASM-NEXT: .byte 0x0 |
354 ; IASM-NEXT: .byte 0x0 | 396 ; IASM-NEXT: .byte 0x0 |
355 ; IASM-NEXT: .byte 0x1 | 397 ; IASM-NEXT: .byte 0x1 |
356 ; IASM-NEXT: .byte 0x0 | 398 ; IASM-NEXT: .byte 0x0 |
357 ; IASM-NEXT: .byte 0x42 | 399 ; IASM-NEXT: .byte 0x42 |
358 ; IASM-NEXT: .byte 0x30 | 400 ; IASM-NEXT: .byte 0x30 |
359 ; IASM-NEXT: .byte 0x8 | 401 ; IASM-NEXT: .byte 0x8 |
360 ; IASM-NEXT: .byte 0x0 | 402 ; IASM-NEXT: .byte 0x0 |
361 ; IASM-NEXT: .byte 0xe0 | 403 ; IASM-NEXT: .byte 0xe0 |
362 ; IASM-NEXT: .byte 0x3 | 404 ; IASM-NEXT: .byte 0x3 |
363 | 405 |
364 define internal i32 @fcmpOltDouble(double %a, double %b) { | 406 define internal i32 @fcmpOltDouble(double %a, double %b) { |
365 entry: | 407 entry: |
366 %cmp = fcmp olt double %a, %b | 408 %cmp = fcmp olt double %a, %b |
367 %cmp.ret_ext = zext i1 %cmp to i32 | 409 %cmp.ret_ext = zext i1 %cmp to i32 |
368 ret i32 %cmp.ret_ext | 410 ret i32 %cmp.ret_ext |
369 } | 411 } |
370 | 412 |
371 ; ASM-LABEL: fcmpOltDouble | 413 ; ASM-LABEL: fcmpOltDouble |
372 ; ASM-NEXT: .LfcmpOltDouble$entry: | 414 ; ASM-NEXT: .LfcmpOltDouble$entry: |
373 ; ASM-NEXT: c.olt.d $f12, $f14 | 415 ; ASM-NEXT: c.olt.d $f12, $f14 |
| 416 ; ASM-NEXT: addiu $v0, $zero, 1 |
374 ; ASM-NEXT: movf $v0, $zero, $fcc0 | 417 ; ASM-NEXT: movf $v0, $zero, $fcc0 |
375 ; ASM-NEXT: andi $v0, $v0, 1 | 418 ; ASM-NEXT: andi $v0, $v0, 1 |
376 ; ASM-NEXT: jr $ra | 419 ; ASM-NEXT: jr $ra |
377 | 420 |
378 ; DIS-LABEL: 00000100 <fcmpOltDouble>: | 421 ; DIS-LABEL: 00000100 <fcmpOltDouble>: |
379 ; DIS-NEXT: 100: 462e6034 c.olt.d $f12,$f14 | 422 ; DIS-NEXT: 100: 462e6034 c.olt.d $f12,$f14 |
380 ; DIS-NEXT: 104:» 00001001 » movf» v0,zero,$fcc0 | 423 ; DIS-NEXT: 104:» 24020001 » li» v0,1 |
381 ; DIS-NEXT: 108:» 30420001 » andi» v0,v0,0x1 | 424 ; DIS-NEXT: 108:» 00001001 » movf» v0,zero,$fcc0 |
382 ; DIS-NEXT: 10c:» 03e00008 » jr» ra | 425 ; DIS-NEXT: 10c:» 30420001 » andi» v0,v0,0x1 |
| 426 ; DIS-NEXT: 110:» 03e00008 » jr» ra |
383 | 427 |
384 ; IASM-LABEL: fcmpOltDouble: | 428 ; IASM-LABEL: fcmpOltDouble: |
385 ; IASM-NEXT: .LfcmpOltDouble$entry: | 429 ; IASM-NEXT: .LfcmpOltDouble$entry: |
386 ; IASM-NEXT: .byte 0x34 | 430 ; IASM-NEXT: .byte 0x34 |
387 ; IASM-NEXT: .byte 0x60 | 431 ; IASM-NEXT: .byte 0x60 |
388 ; IASM-NEXT: .byte 0x2e | 432 ; IASM-NEXT: .byte 0x2e |
389 ; IASM-NEXT: .byte 0x46 | 433 ; IASM-NEXT: .byte 0x46 |
390 ; IASM-NEXT: .byte 0x1 | 434 ; IASM-NEXT: .byte 0x1 |
| 435 ; IASM-NEXT: .byte 0x0 |
| 436 ; IASM-NEXT: .byte 0x2 |
| 437 ; IASM-NEXT: .byte 0x24 |
| 438 ; IASM-NEXT: .byte 0x1 |
391 ; IASM-NEXT: .byte 0x10 | 439 ; IASM-NEXT: .byte 0x10 |
392 ; IASM-NEXT: .byte 0x0 | 440 ; IASM-NEXT: .byte 0x0 |
393 ; IASM-NEXT: .byte 0x0 | 441 ; IASM-NEXT: .byte 0x0 |
394 ; IASM-NEXT: .byte 0x1 | 442 ; IASM-NEXT: .byte 0x1 |
395 ; IASM-NEXT: .byte 0x0 | 443 ; IASM-NEXT: .byte 0x0 |
396 ; IASM-NEXT: .byte 0x42 | 444 ; IASM-NEXT: .byte 0x42 |
397 ; IASM-NEXT: .byte 0x30 | 445 ; IASM-NEXT: .byte 0x30 |
398 ; IASM-NEXT: .byte 0x8 | 446 ; IASM-NEXT: .byte 0x8 |
399 ; IASM-NEXT: .byte 0x0 | 447 ; IASM-NEXT: .byte 0x0 |
400 ; IASM-NEXT: .byte 0xe0 | 448 ; IASM-NEXT: .byte 0xe0 |
401 ; IASM-NEXT: .byte 0x3 | 449 ; IASM-NEXT: .byte 0x3 |
402 | 450 |
403 define internal i32 @fcmpOleFloat(float %a, float %b) { | 451 define internal i32 @fcmpOleFloat(float %a, float %b) { |
404 entry: | 452 entry: |
405 %cmp = fcmp ole float %a, %b | 453 %cmp = fcmp ole float %a, %b |
406 %cmp.ret_ext = zext i1 %cmp to i32 | 454 %cmp.ret_ext = zext i1 %cmp to i32 |
407 ret i32 %cmp.ret_ext | 455 ret i32 %cmp.ret_ext |
408 } | 456 } |
409 | 457 |
410 ; ASM-LABEL: fcmpOleFloat | 458 ; ASM-LABEL: fcmpOleFloat |
411 ; ASM-NEXT: .LfcmpOleFloat$entry: | 459 ; ASM-NEXT: .LfcmpOleFloat$entry: |
412 ; ASM-NEXT: c.ole.s $f12, $f14 | 460 ; ASM-NEXT: c.ole.s $f12, $f14 |
| 461 ; ASM-NEXT: addiu $v0, $zero, 1 |
413 ; ASM-NEXT: movf $v0, $zero, $fcc0 | 462 ; ASM-NEXT: movf $v0, $zero, $fcc0 |
414 ; ASM-NEXT: andi $v0, $v0, 1 | 463 ; ASM-NEXT: andi $v0, $v0, 1 |
415 ; ASM-NEXT: jr $ra | 464 ; ASM-NEXT: jr $ra |
416 | 465 |
417 ; DIS-LABEL: 00000120 <fcmpOleFloat>: | 466 ; DIS-LABEL: 00000120 <fcmpOleFloat>: |
418 ; DIS-NEXT: 120: 460e6036 c.ole.s $f12,$f14 | 467 ; DIS-NEXT: 120: 460e6036 c.ole.s $f12,$f14 |
419 ; DIS-NEXT: 124:» 00001001 » movf» v0,zero,$fcc0 | 468 ; DIS-NEXT: 124:» 24020001 » li» v0,1 |
420 ; DIS-NEXT: 128:» 30420001 » andi» v0,v0,0x1 | 469 ; DIS-NEXT: 128:» 00001001 » movf» v0,zero,$fcc0 |
421 ; DIS-NEXT: 12c:» 03e00008 » jr» ra | 470 ; DIS-NEXT: 12c:» 30420001 » andi» v0,v0,0x1 |
| 471 ; DIS-NEXT: 130:» 03e00008 » jr» ra |
422 | 472 |
423 ; IASM-LABEL: fcmpOleFloat: | 473 ; IASM-LABEL: fcmpOleFloat: |
424 ; IASM-NEXT: .LfcmpOleFloat$entry: | 474 ; IASM-NEXT: .LfcmpOleFloat$entry: |
425 ; IASM-NEXT: .byte 0x36 | 475 ; IASM-NEXT: .byte 0x36 |
426 ; IASM-NEXT: .byte 0x60 | 476 ; IASM-NEXT: .byte 0x60 |
427 ; IASM-NEXT: .byte 0xe | 477 ; IASM-NEXT: .byte 0xe |
428 ; IASM-NEXT: .byte 0x46 | 478 ; IASM-NEXT: .byte 0x46 |
429 ; IASM-NEXT: .byte 0x1 | 479 ; IASM-NEXT: .byte 0x1 |
| 480 ; IASM-NEXT: .byte 0x0 |
| 481 ; IASM-NEXT: .byte 0x2 |
| 482 ; IASM-NEXT: .byte 0x24 |
| 483 ; IASM-NEXT: .byte 0x1 |
430 ; IASM-NEXT: .byte 0x10 | 484 ; IASM-NEXT: .byte 0x10 |
431 ; IASM-NEXT: .byte 0x0 | 485 ; IASM-NEXT: .byte 0x0 |
432 ; IASM-NEXT: .byte 0x0 | 486 ; IASM-NEXT: .byte 0x0 |
433 ; IASM-NEXT: .byte 0x1 | 487 ; IASM-NEXT: .byte 0x1 |
434 ; IASM-NEXT: .byte 0x0 | 488 ; IASM-NEXT: .byte 0x0 |
435 ; IASM-NEXT: .byte 0x42 | 489 ; IASM-NEXT: .byte 0x42 |
436 ; IASM-NEXT: .byte 0x30 | 490 ; IASM-NEXT: .byte 0x30 |
437 ; IASM-NEXT: .byte 0x8 | 491 ; IASM-NEXT: .byte 0x8 |
438 ; IASM-NEXT: .byte 0x0 | 492 ; IASM-NEXT: .byte 0x0 |
439 ; IASM-NEXT: .byte 0xe0 | 493 ; IASM-NEXT: .byte 0xe0 |
440 ; IASM-NEXT: .byte 0x3 | 494 ; IASM-NEXT: .byte 0x3 |
441 | 495 |
442 define internal i32 @fcmpOleDouble(double %a, double %b) { | 496 define internal i32 @fcmpOleDouble(double %a, double %b) { |
443 entry: | 497 entry: |
444 %cmp = fcmp ole double %a, %b | 498 %cmp = fcmp ole double %a, %b |
445 %cmp.ret_ext = zext i1 %cmp to i32 | 499 %cmp.ret_ext = zext i1 %cmp to i32 |
446 ret i32 %cmp.ret_ext | 500 ret i32 %cmp.ret_ext |
447 } | 501 } |
448 | 502 |
449 ; ASM-LABEL: fcmpOleDouble | 503 ; ASM-LABEL: fcmpOleDouble |
450 ; ASM-NEXT: .LfcmpOleDouble$entry: | 504 ; ASM-NEXT: .LfcmpOleDouble$entry: |
451 ; ASM-NEXT: c.ole.d $f12, $f14 | 505 ; ASM-NEXT: c.ole.d $f12, $f14 |
| 506 ; ASM-NEXT: addiu $v0, $zero, 1 |
452 ; ASM-NEXT: movf $v0, $zero, $fcc0 | 507 ; ASM-NEXT: movf $v0, $zero, $fcc0 |
453 ; ASM-NEXT: andi $v0, $v0, 1 | 508 ; ASM-NEXT: andi $v0, $v0, 1 |
454 ; ASM-NEXT: jr $ra | 509 ; ASM-NEXT: jr $ra |
455 | 510 |
456 ; DIS-LABEL: 00000140 <fcmpOleDouble>: | 511 ; DIS-LABEL: 00000140 <fcmpOleDouble>: |
457 ; DIS-NEXT: 140: 462e6036 c.ole.d $f12,$f14 | 512 ; DIS-NEXT: 140: 462e6036 c.ole.d $f12,$f14 |
458 ; DIS-NEXT: 144:» 00001001 » movf» v0,zero,$fcc0 | 513 ; DIS-NEXT: 144:» 24020001 » li» v0,1 |
459 ; DIS-NEXT: 148:» 30420001 » andi» v0,v0,0x1 | 514 ; DIS-NEXT: 148:» 00001001 » movf» v0,zero,$fcc0 |
460 ; DIS-NEXT: 14c:» 03e00008 » jr» ra | 515 ; DIS-NEXT: 14c:» 30420001 » andi» v0,v0,0x1 |
| 516 ; DIS-NEXT: 150:» 03e00008 » jr» ra |
461 | 517 |
462 ; IASM-LABEL: fcmpOleDouble: | 518 ; IASM-LABEL: fcmpOleDouble: |
463 ; IASM-NEXT: .LfcmpOleDouble$entry: | 519 ; IASM-NEXT: .LfcmpOleDouble$entry: |
464 ; IASM-NEXT: .byte 0x36 | 520 ; IASM-NEXT: .byte 0x36 |
465 ; IASM-NEXT: .byte 0x60 | 521 ; IASM-NEXT: .byte 0x60 |
466 ; IASM-NEXT: .byte 0x2e | 522 ; IASM-NEXT: .byte 0x2e |
467 ; IASM-NEXT: .byte 0x46 | 523 ; IASM-NEXT: .byte 0x46 |
468 ; IASM-NEXT: .byte 0x1 | 524 ; IASM-NEXT: .byte 0x1 |
| 525 ; IASM-NEXT: .byte 0x0 |
| 526 ; IASM-NEXT: .byte 0x2 |
| 527 ; IASM-NEXT: .byte 0x24 |
| 528 ; IASM-NEXT: .byte 0x1 |
469 ; IASM-NEXT: .byte 0x10 | 529 ; IASM-NEXT: .byte 0x10 |
470 ; IASM-NEXT: .byte 0x0 | 530 ; IASM-NEXT: .byte 0x0 |
471 ; IASM-NEXT: .byte 0x0 | 531 ; IASM-NEXT: .byte 0x0 |
472 ; IASM-NEXT: .byte 0x1 | 532 ; IASM-NEXT: .byte 0x1 |
473 ; IASM-NEXT: .byte 0x0 | 533 ; IASM-NEXT: .byte 0x0 |
474 ; IASM-NEXT: .byte 0x42 | 534 ; IASM-NEXT: .byte 0x42 |
475 ; IASM-NEXT: .byte 0x30 | 535 ; IASM-NEXT: .byte 0x30 |
476 ; IASM-NEXT: .byte 0x8 | 536 ; IASM-NEXT: .byte 0x8 |
477 ; IASM-NEXT: .byte 0x0 | 537 ; IASM-NEXT: .byte 0x0 |
478 ; IASM-NEXT: .byte 0xe0 | 538 ; IASM-NEXT: .byte 0xe0 |
479 ; IASM-NEXT: .byte 0x3 | 539 ; IASM-NEXT: .byte 0x3 |
480 | 540 |
481 define internal i32 @fcmpOneFloat(float %a, float %b) { | 541 define internal i32 @fcmpOneFloat(float %a, float %b) { |
482 entry: | 542 entry: |
483 %cmp = fcmp one float %a, %b | 543 %cmp = fcmp one float %a, %b |
484 %cmp.ret_ext = zext i1 %cmp to i32 | 544 %cmp.ret_ext = zext i1 %cmp to i32 |
485 ret i32 %cmp.ret_ext | 545 ret i32 %cmp.ret_ext |
486 } | 546 } |
487 | 547 |
488 ; ASM-LABEL: fcmpOneFloat | 548 ; ASM-LABEL: fcmpOneFloat |
489 ; ASM-NEXT: .LfcmpOneFloat$entry: | 549 ; ASM-NEXT: .LfcmpOneFloat$entry: |
490 ; ASM-NEXT: c.ueq.s $f12, $f14 | 550 ; ASM-NEXT: c.ueq.s $f12, $f14 |
| 551 ; ASM-NEXT: addiu $v0, $zero, 1 |
491 ; ASM-NEXT: movt $v0, $zero, $fcc0 | 552 ; ASM-NEXT: movt $v0, $zero, $fcc0 |
492 ; ASM-NEXT: andi $v0, $v0, 1 | 553 ; ASM-NEXT: andi $v0, $v0, 1 |
493 ; ASM-NEXT: jr $ra | 554 ; ASM-NEXT: jr $ra |
494 | 555 |
495 ; DIS-LABEL: 00000160 <fcmpOneFloat>: | 556 ; DIS-LABEL: 00000160 <fcmpOneFloat>: |
496 ; DIS-NEXT: 160: 460e6033 c.ueq.s $f12,$f14 | 557 ; DIS-NEXT: 160: 460e6033 c.ueq.s $f12,$f14 |
497 ; DIS-NEXT: 164:» 00011001 » movt» v0,zero,$fcc0 | 558 ; DIS-NEXT: 164:» 24020001 » li» v0,1 |
498 ; DIS-NEXT: 168:» 30420001 » andi» v0,v0,0x1 | 559 ; DIS-NEXT: 168:» 00011001 » movt» v0,zero,$fcc0 |
499 ; DIS-NEXT: 16c:» 03e00008 » jr» ra | 560 ; DIS-NEXT: 16c:» 30420001 » andi» v0,v0,0x1 |
| 561 ; DIS-NEXT: 170:» 03e00008 » jr» ra |
500 | 562 |
501 ; IASM-LABEL: fcmpOneFloat: | 563 ; IASM-LABEL: fcmpOneFloat: |
502 ; IASM-NEXT: .LfcmpOneFloat$entry: | 564 ; IASM-NEXT: .LfcmpOneFloat$entry: |
503 ; IASM-NEXT: .byte 0x33 | 565 ; IASM-NEXT: .byte 0x33 |
504 ; IASM-NEXT: .byte 0x60 | 566 ; IASM-NEXT: .byte 0x60 |
505 ; IASM-NEXT: .byte 0xe | 567 ; IASM-NEXT: .byte 0xe |
506 ; IASM-NEXT: .byte 0x46 | 568 ; IASM-NEXT: .byte 0x46 |
507 ; IASM-NEXT: .byte 0x1 | 569 ; IASM-NEXT: .byte 0x1 |
| 570 ; IASM-NEXT: .byte 0x0 |
| 571 ; IASM-NEXT: .byte 0x2 |
| 572 ; IASM-NEXT: .byte 0x24 |
| 573 ; IASM-NEXT: .byte 0x1 |
508 ; IASM-NEXT: .byte 0x10 | 574 ; IASM-NEXT: .byte 0x10 |
509 ; IASM-NEXT: .byte 0x1 | 575 ; IASM-NEXT: .byte 0x1 |
510 ; IASM-NEXT: .byte 0x0 | 576 ; IASM-NEXT: .byte 0x0 |
511 ; IASM-NEXT: .byte 0x1 | 577 ; IASM-NEXT: .byte 0x1 |
512 ; IASM-NEXT: .byte 0x0 | 578 ; IASM-NEXT: .byte 0x0 |
513 ; IASM-NEXT: .byte 0x42 | 579 ; IASM-NEXT: .byte 0x42 |
514 ; IASM-NEXT: .byte 0x30 | 580 ; IASM-NEXT: .byte 0x30 |
515 ; IASM-NEXT: .byte 0x8 | 581 ; IASM-NEXT: .byte 0x8 |
516 ; IASM-NEXT: .byte 0x0 | 582 ; IASM-NEXT: .byte 0x0 |
517 ; IASM-NEXT: .byte 0xe0 | 583 ; IASM-NEXT: .byte 0xe0 |
518 ; IASM-NEXT: .byte 0x3 | 584 ; IASM-NEXT: .byte 0x3 |
519 | 585 |
520 define internal i32 @fcmpOneDouble(double %a, double %b) { | 586 define internal i32 @fcmpOneDouble(double %a, double %b) { |
521 entry: | 587 entry: |
522 %cmp = fcmp one double %a, %b | 588 %cmp = fcmp one double %a, %b |
523 %cmp.ret_ext = zext i1 %cmp to i32 | 589 %cmp.ret_ext = zext i1 %cmp to i32 |
524 ret i32 %cmp.ret_ext | 590 ret i32 %cmp.ret_ext |
525 } | 591 } |
526 | 592 |
527 ; ASM-LABEL: fcmpOneDouble | 593 ; ASM-LABEL: fcmpOneDouble |
528 ; ASM-NEXT: .LfcmpOneDouble$entry: | 594 ; ASM-NEXT: .LfcmpOneDouble$entry: |
529 ; ASM-NEXT: c.ueq.d $f12, $f14 | 595 ; ASM-NEXT: c.ueq.d $f12, $f14 |
| 596 ; ASM-NEXT: addiu $v0, $zero, 1 |
530 ; ASM-NEXT: movt $v0, $zero, $fcc0 | 597 ; ASM-NEXT: movt $v0, $zero, $fcc0 |
531 ; ASM-NEXT: andi $v0, $v0, 1 | 598 ; ASM-NEXT: andi $v0, $v0, 1 |
532 ; ASM-NEXT: jr $ra | 599 ; ASM-NEXT: jr $ra |
533 | 600 |
534 ; DIS-LABEL: 00000180 <fcmpOneDouble>: | 601 ; DIS-LABEL: 00000180 <fcmpOneDouble>: |
535 ; DIS-NEXT: 180: 462e6033 c.ueq.d $f12,$f14 | 602 ; DIS-NEXT: 180: 462e6033 c.ueq.d $f12,$f14 |
536 ; DIS-NEXT: 184:» 00011001 » movt» v0,zero,$fcc0 | 603 ; DIS-NEXT: 184:» 24020001 » li» v0,1 |
537 ; DIS-NEXT: 188:» 30420001 » andi» v0,v0,0x1 | 604 ; DIS-NEXT: 188:» 00011001 » movt» v0,zero,$fcc0 |
538 ; DIS-NEXT: 18c:» 03e00008 » jr» ra | 605 ; DIS-NEXT: 18c:» 30420001 » andi» v0,v0,0x1 |
| 606 ; DIS-NEXT: 190:» 03e00008 » jr» ra |
539 | 607 |
540 ; IASM-LABEL: fcmpOneDouble: | 608 ; IASM-LABEL: fcmpOneDouble: |
541 ; IASM-NEXT: .LfcmpOneDouble$entry: | 609 ; IASM-NEXT: .LfcmpOneDouble$entry: |
542 ; IASM-NEXT: .byte 0x33 | 610 ; IASM-NEXT: .byte 0x33 |
543 ; IASM-NEXT: .byte 0x60 | 611 ; IASM-NEXT: .byte 0x60 |
544 ; IASM-NEXT: .byte 0x2e | 612 ; IASM-NEXT: .byte 0x2e |
545 ; IASM-NEXT: .byte 0x46 | 613 ; IASM-NEXT: .byte 0x46 |
546 ; IASM-NEXT: .byte 0x1 | 614 ; IASM-NEXT: .byte 0x1 |
| 615 ; IASM-NEXT: .byte 0x0 |
| 616 ; IASM-NEXT: .byte 0x2 |
| 617 ; IASM-NEXT: .byte 0x24 |
| 618 ; IASM-NEXT: .byte 0x1 |
547 ; IASM-NEXT: .byte 0x10 | 619 ; IASM-NEXT: .byte 0x10 |
548 ; IASM-NEXT: .byte 0x1 | 620 ; IASM-NEXT: .byte 0x1 |
549 ; IASM-NEXT: .byte 0x0 | 621 ; IASM-NEXT: .byte 0x0 |
550 ; IASM-NEXT: .byte 0x1 | 622 ; IASM-NEXT: .byte 0x1 |
551 ; IASM-NEXT: .byte 0x0 | 623 ; IASM-NEXT: .byte 0x0 |
552 ; IASM-NEXT: .byte 0x42 | 624 ; IASM-NEXT: .byte 0x42 |
553 ; IASM-NEXT: .byte 0x30 | 625 ; IASM-NEXT: .byte 0x30 |
554 ; IASM-NEXT: .byte 0x8 | 626 ; IASM-NEXT: .byte 0x8 |
555 ; IASM-NEXT: .byte 0x0 | 627 ; IASM-NEXT: .byte 0x0 |
556 ; IASM-NEXT: .byte 0xe0 | 628 ; IASM-NEXT: .byte 0xe0 |
557 ; IASM-NEXT: .byte 0x3 | 629 ; IASM-NEXT: .byte 0x3 |
558 | 630 |
559 define internal i32 @fcmpOrdFloat(float %a, float %b) { | 631 define internal i32 @fcmpOrdFloat(float %a, float %b) { |
560 entry: | 632 entry: |
561 %cmp = fcmp ord float %a, %b | 633 %cmp = fcmp ord float %a, %b |
562 %cmp.ret_ext = zext i1 %cmp to i32 | 634 %cmp.ret_ext = zext i1 %cmp to i32 |
563 ret i32 %cmp.ret_ext | 635 ret i32 %cmp.ret_ext |
564 } | 636 } |
565 | 637 |
566 ; ASM-LABEL: fcmpOrdFloat: | 638 ; ASM-LABEL: fcmpOrdFloat: |
567 ; ASM-NEXT: .LfcmpOrdFloat$entry: | 639 ; ASM-NEXT: .LfcmpOrdFloat$entry: |
568 ; ASM-NEXT: c.un.s $f12, $f14 | 640 ; ASM-NEXT: c.un.s $f12, $f14 |
| 641 ; ASM-NEXT: addiu $v0, $zero, 1 |
569 ; ASM-NEXT: movt $v0, $zero, $fcc0 | 642 ; ASM-NEXT: movt $v0, $zero, $fcc0 |
570 ; ASM-NEXT: andi $v0, $v0, 1 | 643 ; ASM-NEXT: andi $v0, $v0, 1 |
571 ; ASM-NEXT: jr $ra | 644 ; ASM-NEXT: jr $ra |
572 | 645 |
573 ; DIS-LABEL: 000001a0 <fcmpOrdFloat>: | 646 ; DIS-LABEL: 000001a0 <fcmpOrdFloat>: |
574 ; DIS-NEXT: 1a0: 460e6031 c.un.s $f12,$f14 | 647 ; DIS-NEXT: 1a0: 460e6031 c.un.s $f12,$f14 |
575 ; DIS-NEXT: 1a4:» 00011001 » movt» v0,zero,$fcc0 | 648 ; DIS-NEXT: 1a4:» 24020001 » li» v0,1 |
576 ; DIS-NEXT: 1a8:» 30420001 » andi» v0,v0,0x1 | 649 ; DIS-NEXT: 1a8:» 00011001 » movt» v0,zero,$fcc0 |
577 ; DIS-NEXT: 1ac:» 03e00008 » jr» ra | 650 ; DIS-NEXT: 1ac:» 30420001 » andi» v0,v0,0x1 |
| 651 ; DIS-NEXT: 1b0:» 03e00008 » jr» ra |
578 | 652 |
579 ; IASM-LABEL: fcmpOrdFloat: | 653 ; IASM-LABEL: fcmpOrdFloat: |
580 ; IASM-NEXT: .LfcmpOrdFloat$entry: | 654 ; IASM-NEXT: .LfcmpOrdFloat$entry: |
581 ; IASM-NEXT: .byte 0x31 | 655 ; IASM-NEXT: .byte 0x31 |
582 ; IASM-NEXT: .byte 0x60 | 656 ; IASM-NEXT: .byte 0x60 |
583 ; IASM-NEXT: .byte 0xe | 657 ; IASM-NEXT: .byte 0xe |
584 ; IASM-NEXT: .byte 0x46 | 658 ; IASM-NEXT: .byte 0x46 |
585 ; IASM-NEXT: .byte 0x1 | 659 ; IASM-NEXT: .byte 0x1 |
| 660 ; IASM-NEXT: .byte 0x0 |
| 661 ; IASM-NEXT: .byte 0x2 |
| 662 ; IASM-NEXT: .byte 0x24 |
| 663 ; IASM-NEXT: .byte 0x1 |
586 ; IASM-NEXT: .byte 0x10 | 664 ; IASM-NEXT: .byte 0x10 |
587 ; IASM-NEXT: .byte 0x1 | 665 ; IASM-NEXT: .byte 0x1 |
588 ; IASM-NEXT: .byte 0x0 | 666 ; IASM-NEXT: .byte 0x0 |
589 ; IASM-NEXT: .byte 0x1 | 667 ; IASM-NEXT: .byte 0x1 |
590 ; IASM-NEXT: .byte 0x0 | 668 ; IASM-NEXT: .byte 0x0 |
591 ; IASM-NEXT: .byte 0x42 | 669 ; IASM-NEXT: .byte 0x42 |
592 ; IASM-NEXT: .byte 0x30 | 670 ; IASM-NEXT: .byte 0x30 |
593 ; IASM-NEXT: .byte 0x8 | 671 ; IASM-NEXT: .byte 0x8 |
594 ; IASM-NEXT: .byte 0x0 | 672 ; IASM-NEXT: .byte 0x0 |
595 ; IASM-NEXT: .byte 0xe0 | 673 ; IASM-NEXT: .byte 0xe0 |
596 ; IASM-NEXT: .byte 0x3 | 674 ; IASM-NEXT: .byte 0x3 |
597 | 675 |
598 define internal i32 @fcmpOrdDouble(double %a, double %b) { | 676 define internal i32 @fcmpOrdDouble(double %a, double %b) { |
599 entry: | 677 entry: |
600 %cmp = fcmp ord double %a, %b | 678 %cmp = fcmp ord double %a, %b |
601 %cmp.ret_ext = zext i1 %cmp to i32 | 679 %cmp.ret_ext = zext i1 %cmp to i32 |
602 ret i32 %cmp.ret_ext | 680 ret i32 %cmp.ret_ext |
603 } | 681 } |
604 | 682 |
605 ; ASM-LABEL: fcmpOrdDouble: | 683 ; ASM-LABEL: fcmpOrdDouble: |
606 ; ASM-NEXT: .LfcmpOrdDouble$entry: | 684 ; ASM-NEXT: .LfcmpOrdDouble$entry: |
607 ; ASM-NEXT: c.un.d $f12, $f14 | 685 ; ASM-NEXT: c.un.d $f12, $f14 |
| 686 ; ASM-NEXT: addiu $v0, $zero, 1 |
608 ; ASM-NEXT: movt $v0, $zero, $fcc0 | 687 ; ASM-NEXT: movt $v0, $zero, $fcc0 |
609 ; ASM-NEXT: andi $v0, $v0, 1 | 688 ; ASM-NEXT: andi $v0, $v0, 1 |
610 ; ASM-NEXT: jr $ra | 689 ; ASM-NEXT: jr $ra |
611 | 690 |
612 ; DIS-LABEL: 000001c0 <fcmpOrdDouble>: | 691 ; DIS-LABEL: 000001c0 <fcmpOrdDouble>: |
613 ; DIS-NEXT: 1c0: 462e6031 c.un.d $f12,$f14 | 692 ; DIS-NEXT: 1c0: 462e6031 c.un.d $f12,$f14 |
614 ; DIS-NEXT: 1c4:» 00011001 » movt» v0,zero,$fcc0 | 693 ; DIS-NEXT: 1c4:» 24020001 » li» v0,1 |
615 ; DIS-NEXT: 1c8:» 30420001 » andi» v0,v0,0x1 | 694 ; DIS-NEXT: 1c8:» 00011001 » movt» v0,zero,$fcc0 |
616 ; DIS-NEXT: 1cc:» 03e00008 » jr» ra | 695 ; DIS-NEXT: 1cc:» 30420001 » andi» v0,v0,0x1 |
| 696 ; DIS-NEXT: 1d0:» 03e00008 » jr» ra |
617 | 697 |
618 ; IASM-LABEL: fcmpOrdDouble: | 698 ; IASM-LABEL: fcmpOrdDouble: |
619 ; IASM-NEXT: .LfcmpOrdDouble$entry: | 699 ; IASM-NEXT: .LfcmpOrdDouble$entry: |
620 ; IASM-NEXT: .byte 0x31 | 700 ; IASM-NEXT: .byte 0x31 |
621 ; IASM-NEXT: .byte 0x60 | 701 ; IASM-NEXT: .byte 0x60 |
622 ; IASM-NEXT: .byte 0x2e | 702 ; IASM-NEXT: .byte 0x2e |
623 ; IASM-NEXT: .byte 0x46 | 703 ; IASM-NEXT: .byte 0x46 |
624 ; IASM-NEXT: .byte 0x1 | 704 ; IASM-NEXT: .byte 0x1 |
| 705 ; IASM-NEXT: .byte 0x0 |
| 706 ; IASM-NEXT: .byte 0x2 |
| 707 ; IASM-NEXT: .byte 0x24 |
| 708 ; IASM-NEXT: .byte 0x1 |
625 ; IASM-NEXT: .byte 0x10 | 709 ; IASM-NEXT: .byte 0x10 |
626 ; IASM-NEXT: .byte 0x1 | 710 ; IASM-NEXT: .byte 0x1 |
627 ; IASM-NEXT: .byte 0x0 | 711 ; IASM-NEXT: .byte 0x0 |
628 ; IASM-NEXT: .byte 0x1 | 712 ; IASM-NEXT: .byte 0x1 |
629 ; IASM-NEXT: .byte 0x0 | 713 ; IASM-NEXT: .byte 0x0 |
630 ; IASM-NEXT: .byte 0x42 | 714 ; IASM-NEXT: .byte 0x42 |
631 ; IASM-NEXT: .byte 0x30 | 715 ; IASM-NEXT: .byte 0x30 |
632 ; IASM-NEXT: .byte 0x8 | 716 ; IASM-NEXT: .byte 0x8 |
633 ; IASM-NEXT: .byte 0x0 | 717 ; IASM-NEXT: .byte 0x0 |
634 ; IASM-NEXT: .byte 0xe0 | 718 ; IASM-NEXT: .byte 0xe0 |
635 ; IASM-NEXT: .byte 0x3 | 719 ; IASM-NEXT: .byte 0x3 |
636 | 720 |
637 define internal i32 @fcmpUeqFloat(float %a, float %b) { | 721 define internal i32 @fcmpUeqFloat(float %a, float %b) { |
638 entry: | 722 entry: |
639 %cmp = fcmp ueq float %a, %b | 723 %cmp = fcmp ueq float %a, %b |
640 %cmp.ret_ext = zext i1 %cmp to i32 | 724 %cmp.ret_ext = zext i1 %cmp to i32 |
641 ret i32 %cmp.ret_ext | 725 ret i32 %cmp.ret_ext |
642 } | 726 } |
643 | 727 |
644 ; ASM-LABEL: fcmpUeqFloat | 728 ; ASM-LABEL: fcmpUeqFloat |
645 ; ASM-NEXT: .LfcmpUeqFloat$entry: | 729 ; ASM-NEXT: .LfcmpUeqFloat$entry: |
646 ; ASM-NEXT: c.ueq.s $f12, $f14 | 730 ; ASM-NEXT: c.ueq.s $f12, $f14 |
| 731 ; ASM-NEXT: addiu $v0, $zero, 1 |
647 ; ASM-NEXT: movf $v0, $zero, $fcc0 | 732 ; ASM-NEXT: movf $v0, $zero, $fcc0 |
648 ; ASM-NEXT: andi $v0, $v0, 1 | 733 ; ASM-NEXT: andi $v0, $v0, 1 |
649 ; ASM-NEXT: jr $ra | 734 ; ASM-NEXT: jr $ra |
650 | 735 |
651 ; DIS-LABEL: 000001e0 <fcmpUeqFloat>: | 736 ; DIS-LABEL: 000001e0 <fcmpUeqFloat>: |
652 ; DIS-NEXT: 1e0: 460e6033 c.ueq.s $f12,$f14 | 737 ; DIS-NEXT: 1e0: 460e6033 c.ueq.s $f12,$f14 |
653 ; DIS-NEXT: 1e4:» 00001001 » movf» v0,zero,$fcc0 | 738 ; DIS-NEXT: 1e4:» 24020001 » li» v0,1 |
654 ; DIS-NEXT: 1e8:» 30420001 » andi» v0,v0,0x1 | 739 ; DIS-NEXT: 1e8:» 00001001 » movf» v0,zero,$fcc0 |
655 ; DIS-NEXT: 1ec:» 03e00008 » jr» ra | 740 ; DIS-NEXT: 1ec:» 30420001 » andi» v0,v0,0x1 |
| 741 ; DIS-NEXT: 1f0:» 03e00008 » jr» ra |
656 | 742 |
657 ; IASM-LABEL: fcmpUeqFloat: | 743 ; IASM-LABEL: fcmpUeqFloat: |
658 ; IASM-NEXT: .LfcmpUeqFloat$entry: | 744 ; IASM-NEXT: .LfcmpUeqFloat$entry: |
659 ; IASM-NEXT: .byte 0x33 | 745 ; IASM-NEXT: .byte 0x33 |
660 ; IASM-NEXT: .byte 0x60 | 746 ; IASM-NEXT: .byte 0x60 |
661 ; IASM-NEXT: .byte 0xe | 747 ; IASM-NEXT: .byte 0xe |
662 ; IASM-NEXT: .byte 0x46 | 748 ; IASM-NEXT: .byte 0x46 |
663 ; IASM-NEXT: .byte 0x1 | 749 ; IASM-NEXT: .byte 0x1 |
| 750 ; IASM-NEXT: .byte 0x0 |
| 751 ; IASM-NEXT: .byte 0x2 |
| 752 ; IASM-NEXT: .byte 0x24 |
| 753 ; IASM-NEXT: .byte 0x1 |
664 ; IASM-NEXT: .byte 0x10 | 754 ; IASM-NEXT: .byte 0x10 |
665 ; IASM-NEXT: .byte 0x0 | 755 ; IASM-NEXT: .byte 0x0 |
666 ; IASM-NEXT: .byte 0x0 | 756 ; IASM-NEXT: .byte 0x0 |
667 ; IASM-NEXT: .byte 0x1 | 757 ; IASM-NEXT: .byte 0x1 |
668 ; IASM-NEXT: .byte 0x0 | 758 ; IASM-NEXT: .byte 0x0 |
669 ; IASM-NEXT: .byte 0x42 | 759 ; IASM-NEXT: .byte 0x42 |
670 ; IASM-NEXT: .byte 0x30 | 760 ; IASM-NEXT: .byte 0x30 |
671 ; IASM-NEXT: .byte 0x8 | 761 ; IASM-NEXT: .byte 0x8 |
672 ; IASM-NEXT: .byte 0x0 | 762 ; IASM-NEXT: .byte 0x0 |
673 ; IASM-NEXT: .byte 0xe0 | 763 ; IASM-NEXT: .byte 0xe0 |
674 ; IASM-NEXT: .byte 0x3 | 764 ; IASM-NEXT: .byte 0x3 |
675 | 765 |
676 define internal i32 @fcmpUeqDouble(double %a, double %b) { | 766 define internal i32 @fcmpUeqDouble(double %a, double %b) { |
677 entry: | 767 entry: |
678 %cmp = fcmp ueq double %a, %b | 768 %cmp = fcmp ueq double %a, %b |
679 %cmp.ret_ext = zext i1 %cmp to i32 | 769 %cmp.ret_ext = zext i1 %cmp to i32 |
680 ret i32 %cmp.ret_ext | 770 ret i32 %cmp.ret_ext |
681 } | 771 } |
682 | 772 |
683 ; ASM-LABEL: fcmpUeqDouble | 773 ; ASM-LABEL: fcmpUeqDouble |
684 ; ASM-NEXT: .LfcmpUeqDouble$entry: | 774 ; ASM-NEXT: .LfcmpUeqDouble$entry: |
685 ; ASM-NEXT: c.ueq.d $f12, $f14 | 775 ; ASM-NEXT: c.ueq.d $f12, $f14 |
| 776 ; ASM-NEXT: addiu $v0, $zero, 1 |
686 ; ASM-NEXT: movf $v0, $zero, $fcc0 | 777 ; ASM-NEXT: movf $v0, $zero, $fcc0 |
687 ; ASM-NEXT: andi $v0, $v0, 1 | 778 ; ASM-NEXT: andi $v0, $v0, 1 |
688 ; ASM-NEXT: jr $ra | 779 ; ASM-NEXT: jr $ra |
689 | 780 |
690 ; DIS-LABEL: 00000200 <fcmpUeqDouble>: | 781 ; DIS-LABEL: 00000200 <fcmpUeqDouble>: |
691 ; DIS-NEXT: 200: 462e6033 c.ueq.d $f12,$f14 | 782 ; DIS-NEXT: 200: 462e6033 c.ueq.d $f12,$f14 |
692 ; DIS-NEXT: 204:» 00001001 » movf» v0,zero,$fcc0 | 783 ; DIS-NEXT: 204:» 24020001 » li» v0,1 |
693 ; DIS-NEXT: 208:» 30420001 » andi» v0,v0,0x1 | 784 ; DIS-NEXT: 208:» 00001001 » movf» v0,zero,$fcc0 |
694 ; DIS-NEXT: 20c:» 03e00008 » jr» ra | 785 ; DIS-NEXT: 20c:» 30420001 » andi» v0,v0,0x1 |
| 786 ; DIS-NEXT: 210:» 03e00008 » jr» ra |
695 | 787 |
696 ; IASM-LABEL: fcmpUeqDouble: | 788 ; IASM-LABEL: fcmpUeqDouble: |
697 ; IASM-NEXT: .LfcmpUeqDouble$entry: | 789 ; IASM-NEXT: .LfcmpUeqDouble$entry: |
698 ; IASM-NEXT: .byte 0x33 | 790 ; IASM-NEXT: .byte 0x33 |
699 ; IASM-NEXT: .byte 0x60 | 791 ; IASM-NEXT: .byte 0x60 |
700 ; IASM-NEXT: .byte 0x2e | 792 ; IASM-NEXT: .byte 0x2e |
701 ; IASM-NEXT: .byte 0x46 | 793 ; IASM-NEXT: .byte 0x46 |
702 ; IASM-NEXT: .byte 0x1 | 794 ; IASM-NEXT: .byte 0x1 |
| 795 ; IASM-NEXT: .byte 0x0 |
| 796 ; IASM-NEXT: .byte 0x2 |
| 797 ; IASM-NEXT: .byte 0x24 |
| 798 ; IASM-NEXT: .byte 0x1 |
703 ; IASM-NEXT: .byte 0x10 | 799 ; IASM-NEXT: .byte 0x10 |
704 ; IASM-NEXT: .byte 0x0 | 800 ; IASM-NEXT: .byte 0x0 |
705 ; IASM-NEXT: .byte 0x0 | 801 ; IASM-NEXT: .byte 0x0 |
706 ; IASM-NEXT: .byte 0x1 | 802 ; IASM-NEXT: .byte 0x1 |
707 ; IASM-NEXT: .byte 0x0 | 803 ; IASM-NEXT: .byte 0x0 |
708 ; IASM-NEXT: .byte 0x42 | 804 ; IASM-NEXT: .byte 0x42 |
709 ; IASM-NEXT: .byte 0x30 | 805 ; IASM-NEXT: .byte 0x30 |
710 ; IASM-NEXT: .byte 0x8 | 806 ; IASM-NEXT: .byte 0x8 |
711 ; IASM-NEXT: .byte 0x0 | 807 ; IASM-NEXT: .byte 0x0 |
712 ; IASM-NEXT: .byte 0xe0 | 808 ; IASM-NEXT: .byte 0xe0 |
713 ; IASM-NEXT: .byte 0x3 | 809 ; IASM-NEXT: .byte 0x3 |
714 | 810 |
715 define internal i32 @fcmpUgtFloat(float %a, float %b) { | 811 define internal i32 @fcmpUgtFloat(float %a, float %b) { |
716 entry: | 812 entry: |
717 %cmp = fcmp ugt float %a, %b | 813 %cmp = fcmp ugt float %a, %b |
718 %cmp.ret_ext = zext i1 %cmp to i32 | 814 %cmp.ret_ext = zext i1 %cmp to i32 |
719 ret i32 %cmp.ret_ext | 815 ret i32 %cmp.ret_ext |
720 } | 816 } |
721 | 817 |
722 ; ASM-LABEL: fcmpUgtFloat | 818 ; ASM-LABEL: fcmpUgtFloat |
723 ; ASM-NEXT: .LfcmpUgtFloat$entry: | 819 ; ASM-NEXT: .LfcmpUgtFloat$entry: |
724 ; ASM-NEXT: c.ole.s $f12, $f14 | 820 ; ASM-NEXT: c.ole.s $f12, $f14 |
| 821 ; ASM-NEXT: addiu $v0, $zero, 1 |
725 ; ASM-NEXT: movt $v0, $zero, $fcc0 | 822 ; ASM-NEXT: movt $v0, $zero, $fcc0 |
726 ; ASM-NEXT: andi $v0, $v0, 1 | 823 ; ASM-NEXT: andi $v0, $v0, 1 |
727 ; ASM-NEXT: jr $ra | 824 ; ASM-NEXT: jr $ra |
728 | 825 |
729 ; DIS-LABEL: 00000220 <fcmpUgtFloat>: | 826 ; DIS-LABEL: 00000220 <fcmpUgtFloat>: |
730 ; DIS-NEXT: 220: 460e6036 c.ole.s $f12,$f14 | 827 ; DIS-NEXT: 220: 460e6036 c.ole.s $f12,$f14 |
731 ; DIS-NEXT: 224:» 00011001 » movt» v0,zero,$fcc0 | 828 ; DIS-NEXT: 224:» 24020001 » li» v0,1 |
732 ; DIS-NEXT: 228:» 30420001 » andi» v0,v0,0x1 | 829 ; DIS-NEXT: 228:» 00011001 » movt» v0,zero,$fcc0 |
733 ; DIS-NEXT: 22c:» 03e00008 » jr» ra | 830 ; DIS-NEXT: 22c:» 30420001 » andi» v0,v0,0x1 |
| 831 ; DIS-NEXT: 230:» 03e00008 » jr» ra |
734 | 832 |
735 ; IASM-LABEL: fcmpUgtFloat: | 833 ; IASM-LABEL: fcmpUgtFloat: |
736 ; IASM-NEXT: .LfcmpUgtFloat$entry: | 834 ; IASM-NEXT: .LfcmpUgtFloat$entry: |
737 ; IASM-NEXT: .byte 0x36 | 835 ; IASM-NEXT: .byte 0x36 |
738 ; IASM-NEXT: .byte 0x60 | 836 ; IASM-NEXT: .byte 0x60 |
739 ; IASM-NEXT: .byte 0xe | 837 ; IASM-NEXT: .byte 0xe |
740 ; IASM-NEXT: .byte 0x46 | 838 ; IASM-NEXT: .byte 0x46 |
741 ; IASM-NEXT: .byte 0x1 | 839 ; IASM-NEXT: .byte 0x1 |
| 840 ; IASM-NEXT: .byte 0x0 |
| 841 ; IASM-NEXT: .byte 0x2 |
| 842 ; IASM-NEXT: .byte 0x24 |
| 843 ; IASM-NEXT: .byte 0x1 |
742 ; IASM-NEXT: .byte 0x10 | 844 ; IASM-NEXT: .byte 0x10 |
743 ; IASM-NEXT: .byte 0x1 | 845 ; IASM-NEXT: .byte 0x1 |
744 ; IASM-NEXT: .byte 0x0 | 846 ; IASM-NEXT: .byte 0x0 |
745 ; IASM-NEXT: .byte 0x1 | 847 ; IASM-NEXT: .byte 0x1 |
746 ; IASM-NEXT: .byte 0x0 | 848 ; IASM-NEXT: .byte 0x0 |
747 ; IASM-NEXT: .byte 0x42 | 849 ; IASM-NEXT: .byte 0x42 |
748 ; IASM-NEXT: .byte 0x30 | 850 ; IASM-NEXT: .byte 0x30 |
749 ; IASM-NEXT: .byte 0x8 | 851 ; IASM-NEXT: .byte 0x8 |
750 ; IASM-NEXT: .byte 0x0 | 852 ; IASM-NEXT: .byte 0x0 |
751 ; IASM-NEXT: .byte 0xe0 | 853 ; IASM-NEXT: .byte 0xe0 |
752 ; IASM-NEXT: .byte 0x3 | 854 ; IASM-NEXT: .byte 0x3 |
753 | 855 |
754 define internal i32 @fcmpUgtDouble(double %a, double %b) { | 856 define internal i32 @fcmpUgtDouble(double %a, double %b) { |
755 entry: | 857 entry: |
756 %cmp = fcmp ugt double %a, %b | 858 %cmp = fcmp ugt double %a, %b |
757 %cmp.ret_ext = zext i1 %cmp to i32 | 859 %cmp.ret_ext = zext i1 %cmp to i32 |
758 ret i32 %cmp.ret_ext | 860 ret i32 %cmp.ret_ext |
759 } | 861 } |
760 | 862 |
761 ; ASM-LABEL: fcmpUgtDouble | 863 ; ASM-LABEL: fcmpUgtDouble |
762 ; ASM-NEXT: .LfcmpUgtDouble$entry: | 864 ; ASM-NEXT: .LfcmpUgtDouble$entry: |
763 ; ASM-NEXT: c.ole.d $f12, $f14 | 865 ; ASM-NEXT: c.ole.d $f12, $f14 |
| 866 ; ASM-NEXT: addiu $v0, $zero, 1 |
764 ; ASM-NEXT: movt $v0, $zero, $fcc0 | 867 ; ASM-NEXT: movt $v0, $zero, $fcc0 |
765 ; ASM-NEXT: andi $v0, $v0, 1 | 868 ; ASM-NEXT: andi $v0, $v0, 1 |
766 ; ASM-NEXT: jr $ra | 869 ; ASM-NEXT: jr $ra |
767 | 870 |
768 ; DIS-LABEL: 00000240 <fcmpUgtDouble>: | 871 ; DIS-LABEL: 00000240 <fcmpUgtDouble>: |
769 ; DIS-NEXT: 240: 462e6036 c.ole.d $f12,$f14 | 872 ; DIS-NEXT: 240: 462e6036 c.ole.d $f12,$f14 |
770 ; DIS-NEXT: 244:» 00011001 » movt» v0,zero,$fcc0 | 873 ; DIS-NEXT: 244:» 24020001 » li» v0,1 |
771 ; DIS-NEXT: 248:» 30420001 » andi» v0,v0,0x1 | 874 ; DIS-NEXT: 248:» 00011001 » movt» v0,zero,$fcc0 |
772 ; DIS-NEXT: 24c:» 03e00008 » jr» ra | 875 ; DIS-NEXT: 24c:» 30420001 » andi» v0,v0,0x1 |
| 876 ; DIS-NEXT: 250:» 03e00008 » jr» ra |
773 | 877 |
774 ; IASM-LABEL: fcmpUgtDouble: | 878 ; IASM-LABEL: fcmpUgtDouble: |
775 ; IASM-NEXT: .LfcmpUgtDouble$entry: | 879 ; IASM-NEXT: .LfcmpUgtDouble$entry: |
776 ; IASM-NEXT: .byte 0x36 | 880 ; IASM-NEXT: .byte 0x36 |
777 ; IASM-NEXT: .byte 0x60 | 881 ; IASM-NEXT: .byte 0x60 |
778 ; IASM-NEXT: .byte 0x2e | 882 ; IASM-NEXT: .byte 0x2e |
779 ; IASM-NEXT: .byte 0x46 | 883 ; IASM-NEXT: .byte 0x46 |
780 ; IASM-NEXT: .byte 0x1 | 884 ; IASM-NEXT: .byte 0x1 |
| 885 ; IASM-NEXT: .byte 0x0 |
| 886 ; IASM-NEXT: .byte 0x2 |
| 887 ; IASM-NEXT: .byte 0x24 |
| 888 ; IASM-NEXT: .byte 0x1 |
781 ; IASM-NEXT: .byte 0x10 | 889 ; IASM-NEXT: .byte 0x10 |
782 ; IASM-NEXT: .byte 0x1 | 890 ; IASM-NEXT: .byte 0x1 |
783 ; IASM-NEXT: .byte 0x0 | 891 ; IASM-NEXT: .byte 0x0 |
784 ; IASM-NEXT: .byte 0x1 | 892 ; IASM-NEXT: .byte 0x1 |
785 ; IASM-NEXT: .byte 0x0 | 893 ; IASM-NEXT: .byte 0x0 |
786 ; IASM-NEXT: .byte 0x42 | 894 ; IASM-NEXT: .byte 0x42 |
787 ; IASM-NEXT: .byte 0x30 | 895 ; IASM-NEXT: .byte 0x30 |
788 ; IASM-NEXT: .byte 0x8 | 896 ; IASM-NEXT: .byte 0x8 |
789 ; IASM-NEXT: .byte 0x0 | 897 ; IASM-NEXT: .byte 0x0 |
790 ; IASM-NEXT: .byte 0xe0 | 898 ; IASM-NEXT: .byte 0xe0 |
791 ; IASM-NEXT: .byte 0x3 | 899 ; IASM-NEXT: .byte 0x3 |
792 | 900 |
793 define internal i32 @fcmpUgeFloat(float %a, float %b) { | 901 define internal i32 @fcmpUgeFloat(float %a, float %b) { |
794 entry: | 902 entry: |
795 %cmp = fcmp uge float %a, %b | 903 %cmp = fcmp uge float %a, %b |
796 %cmp.ret_ext = zext i1 %cmp to i32 | 904 %cmp.ret_ext = zext i1 %cmp to i32 |
797 ret i32 %cmp.ret_ext | 905 ret i32 %cmp.ret_ext |
798 } | 906 } |
799 | 907 |
800 ; ASM-LABEL: fcmpUgeFloat | 908 ; ASM-LABEL: fcmpUgeFloat |
801 ; ASM-NEXT: .LfcmpUgeFloat$entry: | 909 ; ASM-NEXT: .LfcmpUgeFloat$entry: |
802 ; ASM-NEXT: c.olt.s $f12, $f14 | 910 ; ASM-NEXT: c.olt.s $f12, $f14 |
| 911 ; ASM-NEXT: addiu $v0, $zero, 1 |
803 ; ASM-NEXT: movt $v0, $zero, $fcc0 | 912 ; ASM-NEXT: movt $v0, $zero, $fcc0 |
804 ; ASM-NEXT: andi $v0, $v0, 1 | 913 ; ASM-NEXT: andi $v0, $v0, 1 |
805 ; ASM-NEXT: jr $ra | 914 ; ASM-NEXT: jr $ra |
806 | 915 |
807 ; DIS-LABEL: 00000260 <fcmpUgeFloat>: | 916 ; DIS-LABEL: 00000260 <fcmpUgeFloat>: |
808 ; DIS-NEXT: 260: 460e6034 c.olt.s $f12,$f14 | 917 ; DIS-NEXT: 260: 460e6034 c.olt.s $f12,$f14 |
809 ; DIS-NEXT: 264:» 00011001 » movt» v0,zero,$fcc0 | 918 ; DIS-NEXT: 264:» 24020001 » li» v0,1 |
810 ; DIS-NEXT: 268:» 30420001 » andi» v0,v0,0x1 | 919 ; DIS-NEXT: 268:» 00011001 » movt» v0,zero,$fcc0 |
811 ; DIS-NEXT: 26c:» 03e00008 » jr» ra | 920 ; DIS-NEXT: 26c:» 30420001 » andi» v0,v0,0x1 |
| 921 ; DIS-NEXT: 270:» 03e00008 » jr» ra |
812 | 922 |
813 ; IASM-LABEL: fcmpUgeFloat: | 923 ; IASM-LABEL: fcmpUgeFloat: |
814 ; IASM-NEXT: .LfcmpUgeFloat$entry: | 924 ; IASM-NEXT: .LfcmpUgeFloat$entry: |
815 ; IASM-NEXT: .byte 0x34 | 925 ; IASM-NEXT: .byte 0x34 |
816 ; IASM-NEXT: .byte 0x60 | 926 ; IASM-NEXT: .byte 0x60 |
817 ; IASM-NEXT: .byte 0xe | 927 ; IASM-NEXT: .byte 0xe |
818 ; IASM-NEXT: .byte 0x46 | 928 ; IASM-NEXT: .byte 0x46 |
819 ; IASM-NEXT: .byte 0x1 | 929 ; IASM-NEXT: .byte 0x1 |
| 930 ; IASM-NEXT: .byte 0x0 |
| 931 ; IASM-NEXT: .byte 0x2 |
| 932 ; IASM-NEXT: .byte 0x24 |
| 933 ; IASM-NEXT: .byte 0x1 |
820 ; IASM-NEXT: .byte 0x10 | 934 ; IASM-NEXT: .byte 0x10 |
821 ; IASM-NEXT: .byte 0x1 | 935 ; IASM-NEXT: .byte 0x1 |
822 ; IASM-NEXT: .byte 0x0 | 936 ; IASM-NEXT: .byte 0x0 |
823 ; IASM-NEXT: .byte 0x1 | 937 ; IASM-NEXT: .byte 0x1 |
824 ; IASM-NEXT: .byte 0x0 | 938 ; IASM-NEXT: .byte 0x0 |
825 ; IASM-NEXT: .byte 0x42 | 939 ; IASM-NEXT: .byte 0x42 |
826 ; IASM-NEXT: .byte 0x30 | 940 ; IASM-NEXT: .byte 0x30 |
827 ; IASM-NEXT: .byte 0x8 | 941 ; IASM-NEXT: .byte 0x8 |
828 ; IASM-NEXT: .byte 0x0 | 942 ; IASM-NEXT: .byte 0x0 |
829 ; IASM-NEXT: .byte 0xe0 | 943 ; IASM-NEXT: .byte 0xe0 |
830 ; IASM-NEXT: .byte 0x3 | 944 ; IASM-NEXT: .byte 0x3 |
831 | 945 |
832 define internal i32 @fcmpUgeDouble(double %a, double %b) { | 946 define internal i32 @fcmpUgeDouble(double %a, double %b) { |
833 entry: | 947 entry: |
834 %cmp = fcmp uge double %a, %b | 948 %cmp = fcmp uge double %a, %b |
835 %cmp.ret_ext = zext i1 %cmp to i32 | 949 %cmp.ret_ext = zext i1 %cmp to i32 |
836 ret i32 %cmp.ret_ext | 950 ret i32 %cmp.ret_ext |
837 } | 951 } |
838 | 952 |
839 ; ASM-LABEL: fcmpUgeDouble | 953 ; ASM-LABEL: fcmpUgeDouble |
840 ; ASM-NEXT: .LfcmpUgeDouble$entry: | 954 ; ASM-NEXT: .LfcmpUgeDouble$entry: |
841 ; ASM-NEXT: c.olt.d $f12, $f14 | 955 ; ASM-NEXT: c.olt.d $f12, $f14 |
| 956 ; ASM-NEXT: addiu $v0, $zero, 1 |
842 ; ASM-NEXT: movt $v0, $zero, $fcc0 | 957 ; ASM-NEXT: movt $v0, $zero, $fcc0 |
843 ; ASM-NEXT: andi $v0, $v0, 1 | 958 ; ASM-NEXT: andi $v0, $v0, 1 |
844 ; ASM-NEXT: jr $ra | 959 ; ASM-NEXT: jr $ra |
845 | 960 |
846 ; DIS-LABEL: 00000280 <fcmpUgeDouble>: | 961 ; DIS-LABEL: 00000280 <fcmpUgeDouble>: |
847 ; DIS-NEXT: 280: 462e6034 c.olt.d $f12,$f14 | 962 ; DIS-NEXT: 280: 462e6034 c.olt.d $f12,$f14 |
848 ; DIS-NEXT: 284:» 00011001 » movt» v0,zero,$fcc0 | 963 ; DIS-NEXT: 284:» 24020001 » li» v0,1 |
849 ; DIS-NEXT: 288:» 30420001 » andi» v0,v0,0x1 | 964 ; DIS-NEXT: 288:» 00011001 » movt» v0,zero,$fcc0 |
850 ; DIS-NEXT: 28c:» 03e00008 » jr» ra | 965 ; DIS-NEXT: 28c:» 30420001 » andi» v0,v0,0x1 |
| 966 ; DIS-NEXT: 290:» 03e00008 » jr» ra |
851 | 967 |
852 ; IASM-LABEL: fcmpUgeDouble: | 968 ; IASM-LABEL: fcmpUgeDouble: |
853 ; IASM-NEXT: .LfcmpUgeDouble$entry: | 969 ; IASM-NEXT: .LfcmpUgeDouble$entry: |
854 ; IASM-NEXT: .byte 0x34 | 970 ; IASM-NEXT: .byte 0x34 |
855 ; IASM-NEXT: .byte 0x60 | 971 ; IASM-NEXT: .byte 0x60 |
856 ; IASM-NEXT: .byte 0x2e | 972 ; IASM-NEXT: .byte 0x2e |
857 ; IASM-NEXT: .byte 0x46 | 973 ; IASM-NEXT: .byte 0x46 |
858 ; IASM-NEXT: .byte 0x1 | 974 ; IASM-NEXT: .byte 0x1 |
| 975 ; IASM-NEXT: .byte 0x0 |
| 976 ; IASM-NEXT: .byte 0x2 |
| 977 ; IASM-NEXT: .byte 0x24 |
| 978 ; IASM-NEXT: .byte 0x1 |
859 ; IASM-NEXT: .byte 0x10 | 979 ; IASM-NEXT: .byte 0x10 |
860 ; IASM-NEXT: .byte 0x1 | 980 ; IASM-NEXT: .byte 0x1 |
861 ; IASM-NEXT: .byte 0x0 | 981 ; IASM-NEXT: .byte 0x0 |
862 ; IASM-NEXT: .byte 0x1 | 982 ; IASM-NEXT: .byte 0x1 |
863 ; IASM-NEXT: .byte 0x0 | 983 ; IASM-NEXT: .byte 0x0 |
864 ; IASM-NEXT: .byte 0x42 | 984 ; IASM-NEXT: .byte 0x42 |
865 ; IASM-NEXT: .byte 0x30 | 985 ; IASM-NEXT: .byte 0x30 |
866 ; IASM-NEXT: .byte 0x8 | 986 ; IASM-NEXT: .byte 0x8 |
867 ; IASM-NEXT: .byte 0x0 | 987 ; IASM-NEXT: .byte 0x0 |
868 ; IASM-NEXT: .byte 0xe0 | 988 ; IASM-NEXT: .byte 0xe0 |
869 ; IASM-NEXT: .byte 0x3 | 989 ; IASM-NEXT: .byte 0x3 |
870 | 990 |
871 define internal i32 @fcmpUltFloat(float %a, float %b) { | 991 define internal i32 @fcmpUltFloat(float %a, float %b) { |
872 entry: | 992 entry: |
873 %cmp = fcmp ult float %a, %b | 993 %cmp = fcmp ult float %a, %b |
874 %cmp.ret_ext = zext i1 %cmp to i32 | 994 %cmp.ret_ext = zext i1 %cmp to i32 |
875 ret i32 %cmp.ret_ext | 995 ret i32 %cmp.ret_ext |
876 } | 996 } |
877 | 997 |
878 ; ASM-LABEL: fcmpUltFloat | 998 ; ASM-LABEL: fcmpUltFloat |
879 ; ASM-NEXT: .LfcmpUltFloat$entry: | 999 ; ASM-NEXT: .LfcmpUltFloat$entry: |
880 ; ASM-NEXT: c.ult.s $f12, $f14 | 1000 ; ASM-NEXT: c.ult.s $f12, $f14 |
| 1001 ; ASM-NEXT: addiu $v0, $zero, 1 |
881 ; ASM-NEXT: movf $v0, $zero, $fcc0 | 1002 ; ASM-NEXT: movf $v0, $zero, $fcc0 |
882 ; ASM-NEXT: andi $v0, $v0, 1 | 1003 ; ASM-NEXT: andi $v0, $v0, 1 |
883 ; ASM-NEXT: jr $ra | 1004 ; ASM-NEXT: jr $ra |
884 | 1005 |
885 ; DIS-LABEL: 000002a0 <fcmpUltFloat>: | 1006 ; DIS-LABEL: 000002a0 <fcmpUltFloat>: |
886 ; DIS-NEXT: 2a0: 460e6035 c.ult.s $f12,$f14 | 1007 ; DIS-NEXT: 2a0: 460e6035 c.ult.s $f12,$f14 |
887 ; DIS-NEXT: 2a4:» 00001001 » movf» v0,zero,$fcc0 | 1008 ; DIS-NEXT: 2a4:» 24020001 » li» v0,1 |
888 ; DIS-NEXT: 2a8:» 30420001 » andi» v0,v0,0x1 | 1009 ; DIS-NEXT: 2a8:» 00001001 » movf» v0,zero,$fcc0 |
889 ; DIS-NEXT: 2ac:» 03e00008 » jr» ra | 1010 ; DIS-NEXT: 2ac:» 30420001 » andi» v0,v0,0x1 |
| 1011 ; DIS-NEXT: 2b0:» 03e00008 » jr» ra |
890 | 1012 |
891 ; IASM-LABEL: fcmpUltFloat: | 1013 ; IASM-LABEL: fcmpUltFloat: |
892 ; IASM-NEXT: .LfcmpUltFloat$entry: | 1014 ; IASM-NEXT: .LfcmpUltFloat$entry: |
893 ; IASM-NEXT: .byte 0x35 | 1015 ; IASM-NEXT: .byte 0x35 |
894 ; IASM-NEXT: .byte 0x60 | 1016 ; IASM-NEXT: .byte 0x60 |
895 ; IASM-NEXT: .byte 0xe | 1017 ; IASM-NEXT: .byte 0xe |
896 ; IASM-NEXT: .byte 0x46 | 1018 ; IASM-NEXT: .byte 0x46 |
897 ; IASM-NEXT: .byte 0x1 | 1019 ; IASM-NEXT: .byte 0x1 |
| 1020 ; IASM-NEXT: .byte 0x0 |
| 1021 ; IASM-NEXT: .byte 0x2 |
| 1022 ; IASM-NEXT: .byte 0x24 |
| 1023 ; IASM-NEXT: .byte 0x1 |
898 ; IASM-NEXT: .byte 0x10 | 1024 ; IASM-NEXT: .byte 0x10 |
899 ; IASM-NEXT: .byte 0x0 | 1025 ; IASM-NEXT: .byte 0x0 |
900 ; IASM-NEXT: .byte 0x0 | 1026 ; IASM-NEXT: .byte 0x0 |
901 ; IASM-NEXT: .byte 0x1 | 1027 ; IASM-NEXT: .byte 0x1 |
902 ; IASM-NEXT: .byte 0x0 | 1028 ; IASM-NEXT: .byte 0x0 |
903 ; IASM-NEXT: .byte 0x42 | 1029 ; IASM-NEXT: .byte 0x42 |
904 ; IASM-NEXT: .byte 0x30 | 1030 ; IASM-NEXT: .byte 0x30 |
905 ; IASM-NEXT: .byte 0x8 | 1031 ; IASM-NEXT: .byte 0x8 |
906 ; IASM-NEXT: .byte 0x0 | 1032 ; IASM-NEXT: .byte 0x0 |
907 ; IASM-NEXT: .byte 0xe0 | 1033 ; IASM-NEXT: .byte 0xe0 |
908 ; IASM-NEXT: .byte 0x3 | 1034 ; IASM-NEXT: .byte 0x3 |
909 | 1035 |
910 define internal i32 @fcmpUltDouble(double %a, double %b) { | 1036 define internal i32 @fcmpUltDouble(double %a, double %b) { |
911 entry: | 1037 entry: |
912 %cmp = fcmp ult double %a, %b | 1038 %cmp = fcmp ult double %a, %b |
913 %cmp.ret_ext = zext i1 %cmp to i32 | 1039 %cmp.ret_ext = zext i1 %cmp to i32 |
914 ret i32 %cmp.ret_ext | 1040 ret i32 %cmp.ret_ext |
915 } | 1041 } |
916 | 1042 |
917 ; ASM-LABEL: fcmpUltDouble | 1043 ; ASM-LABEL: fcmpUltDouble |
918 ; ASM-NEXT: .LfcmpUltDouble$entry: | 1044 ; ASM-NEXT: .LfcmpUltDouble$entry: |
919 ; ASM-NEXT: c.ult.d $f12, $f14 | 1045 ; ASM-NEXT: c.ult.d $f12, $f14 |
| 1046 ; ASM-NEXT: addiu $v0, $zero, 1 |
920 ; ASM-NEXT: movf $v0, $zero, $fcc0 | 1047 ; ASM-NEXT: movf $v0, $zero, $fcc0 |
921 ; ASM-NEXT: andi $v0, $v0, 1 | 1048 ; ASM-NEXT: andi $v0, $v0, 1 |
922 ; ASM-NEXT: jr $ra | 1049 ; ASM-NEXT: jr $ra |
923 | 1050 |
924 ; DIS-LABEL: 000002c0 <fcmpUltDouble>: | 1051 ; DIS-LABEL: 000002c0 <fcmpUltDouble>: |
925 ; DIS-NEXT: 2c0: 462e6035 c.ult.d $f12,$f14 | 1052 ; DIS-NEXT: 2c0: 462e6035 c.ult.d $f12,$f14 |
926 ; DIS-NEXT: 2c4:» 00001001 » movf» v0,zero,$fcc0 | 1053 ; DIS-NEXT: 2c4:» 24020001 » li» v0,1 |
927 ; DIS-NEXT: 2c8:» 30420001 » andi» v0,v0,0x1 | 1054 ; DIS-NEXT: 2c8:» 00001001 » movf» v0,zero,$fcc0 |
928 ; DIS-NEXT: 2cc:» 03e00008 » jr» ra | 1055 ; DIS-NEXT: 2cc:» 30420001 » andi» v0,v0,0x1 |
| 1056 ; DIS-NEXT: 2d0:» 03e00008 » jr» ra |
929 | 1057 |
930 ; IASM-LABEL: fcmpUltDouble: | 1058 ; IASM-LABEL: fcmpUltDouble: |
931 ; IASM-NEXT: .LfcmpUltDouble$entry: | 1059 ; IASM-NEXT: .LfcmpUltDouble$entry: |
932 ; IASM-NEXT: .byte 0x35 | 1060 ; IASM-NEXT: .byte 0x35 |
933 ; IASM-NEXT: .byte 0x60 | 1061 ; IASM-NEXT: .byte 0x60 |
934 ; IASM-NEXT: .byte 0x2e | 1062 ; IASM-NEXT: .byte 0x2e |
935 ; IASM-NEXT: .byte 0x46 | 1063 ; IASM-NEXT: .byte 0x46 |
936 ; IASM-NEXT: .byte 0x1 | 1064 ; IASM-NEXT: .byte 0x1 |
| 1065 ; IASM-NEXT: .byte 0x0 |
| 1066 ; IASM-NEXT: .byte 0x2 |
| 1067 ; IASM-NEXT: .byte 0x24 |
| 1068 ; IASM-NEXT: .byte 0x1 |
937 ; IASM-NEXT: .byte 0x10 | 1069 ; IASM-NEXT: .byte 0x10 |
938 ; IASM-NEXT: .byte 0x0 | 1070 ; IASM-NEXT: .byte 0x0 |
939 ; IASM-NEXT: .byte 0x0 | 1071 ; IASM-NEXT: .byte 0x0 |
940 ; IASM-NEXT: .byte 0x1 | 1072 ; IASM-NEXT: .byte 0x1 |
941 ; IASM-NEXT: .byte 0x0 | 1073 ; IASM-NEXT: .byte 0x0 |
942 ; IASM-NEXT: .byte 0x42 | 1074 ; IASM-NEXT: .byte 0x42 |
943 ; IASM-NEXT: .byte 0x30 | 1075 ; IASM-NEXT: .byte 0x30 |
944 ; IASM-NEXT: .byte 0x8 | 1076 ; IASM-NEXT: .byte 0x8 |
945 ; IASM-NEXT: .byte 0x0 | 1077 ; IASM-NEXT: .byte 0x0 |
946 ; IASM-NEXT: .byte 0xe0 | 1078 ; IASM-NEXT: .byte 0xe0 |
947 ; IASM-NEXT: .byte 0x3 | 1079 ; IASM-NEXT: .byte 0x3 |
948 | 1080 |
949 define internal i32 @fcmpUleFloat(float %a, float %b) { | 1081 define internal i32 @fcmpUleFloat(float %a, float %b) { |
950 entry: | 1082 entry: |
951 %cmp = fcmp ule float %a, %b | 1083 %cmp = fcmp ule float %a, %b |
952 %cmp.ret_ext = zext i1 %cmp to i32 | 1084 %cmp.ret_ext = zext i1 %cmp to i32 |
953 ret i32 %cmp.ret_ext | 1085 ret i32 %cmp.ret_ext |
954 } | 1086 } |
955 | 1087 |
956 ; ASM-LABEL: fcmpUleFloat | 1088 ; ASM-LABEL: fcmpUleFloat |
957 ; ASM-NEXT: .LfcmpUleFloat$entry: | 1089 ; ASM-NEXT: .LfcmpUleFloat$entry: |
958 ; ASM-NEXT: c.ule.s $f12, $f14 | 1090 ; ASM-NEXT: c.ule.s $f12, $f14 |
| 1091 ; ASM-NEXT: addiu $v0, $zero, 1 |
959 ; ASM-NEXT: movf $v0, $zero, $fcc0 | 1092 ; ASM-NEXT: movf $v0, $zero, $fcc0 |
960 ; ASM-NEXT: andi $v0, $v0, 1 | 1093 ; ASM-NEXT: andi $v0, $v0, 1 |
961 ; ASM-NEXT: jr $ra | 1094 ; ASM-NEXT: jr $ra |
962 | 1095 |
963 ; DIS-LABEL: 000002e0 <fcmpUleFloat>: | 1096 ; DIS-LABEL: 000002e0 <fcmpUleFloat>: |
964 ; DIS-NEXT: 2e0: 460e6037 c.ule.s $f12,$f14 | 1097 ; DIS-NEXT: 2e0: 460e6037 c.ule.s $f12,$f14 |
965 ; DIS-NEXT: 2e4:» 00001001 » movf» v0,zero,$fcc0 | 1098 ; DIS-NEXT: 2e4:» 24020001 » li» v0,1 |
966 ; DIS-NEXT: 2e8:» 30420001 » andi» v0,v0,0x1 | 1099 ; DIS-NEXT: 2e8:» 00001001 » movf» v0,zero,$fcc0 |
967 ; DIS-NEXT: 2ec:» 03e00008 » jr» ra | 1100 ; DIS-NEXT: 2ec:» 30420001 » andi» v0,v0,0x1 |
| 1101 ; DIS-NEXT: 2f0:» 03e00008 » jr» ra |
968 | 1102 |
969 ; IASM-LABEL: fcmpUleFloat: | 1103 ; IASM-LABEL: fcmpUleFloat: |
970 ; IASM-NEXT: .LfcmpUleFloat$entry: | 1104 ; IASM-NEXT: .LfcmpUleFloat$entry: |
971 ; IASM-NEXT: .byte 0x37 | 1105 ; IASM-NEXT: .byte 0x37 |
972 ; IASM-NEXT: .byte 0x60 | 1106 ; IASM-NEXT: .byte 0x60 |
973 ; IASM-NEXT: .byte 0xe | 1107 ; IASM-NEXT: .byte 0xe |
974 ; IASM-NEXT: .byte 0x46 | 1108 ; IASM-NEXT: .byte 0x46 |
975 ; IASM-NEXT: .byte 0x1 | 1109 ; IASM-NEXT: .byte 0x1 |
| 1110 ; IASM-NEXT: .byte 0x0 |
| 1111 ; IASM-NEXT: .byte 0x2 |
| 1112 ; IASM-NEXT: .byte 0x24 |
| 1113 ; IASM-NEXT: .byte 0x1 |
976 ; IASM-NEXT: .byte 0x10 | 1114 ; IASM-NEXT: .byte 0x10 |
977 ; IASM-NEXT: .byte 0x0 | 1115 ; IASM-NEXT: .byte 0x0 |
978 ; IASM-NEXT: .byte 0x0 | 1116 ; IASM-NEXT: .byte 0x0 |
979 ; IASM-NEXT: .byte 0x1 | 1117 ; IASM-NEXT: .byte 0x1 |
980 ; IASM-NEXT: .byte 0x0 | 1118 ; IASM-NEXT: .byte 0x0 |
981 ; IASM-NEXT: .byte 0x42 | 1119 ; IASM-NEXT: .byte 0x42 |
982 ; IASM-NEXT: .byte 0x30 | 1120 ; IASM-NEXT: .byte 0x30 |
983 ; IASM-NEXT: .byte 0x8 | 1121 ; IASM-NEXT: .byte 0x8 |
984 ; IASM-NEXT: .byte 0x0 | 1122 ; IASM-NEXT: .byte 0x0 |
985 ; IASM-NEXT: .byte 0xe0 | 1123 ; IASM-NEXT: .byte 0xe0 |
986 ; IASM-NEXT: .byte 0x3 | 1124 ; IASM-NEXT: .byte 0x3 |
987 | 1125 |
988 define internal i32 @fcmpUleDouble(double %a, double %b) { | 1126 define internal i32 @fcmpUleDouble(double %a, double %b) { |
989 entry: | 1127 entry: |
990 %cmp = fcmp ule double %a, %b | 1128 %cmp = fcmp ule double %a, %b |
991 %cmp.ret_ext = zext i1 %cmp to i32 | 1129 %cmp.ret_ext = zext i1 %cmp to i32 |
992 ret i32 %cmp.ret_ext | 1130 ret i32 %cmp.ret_ext |
993 } | 1131 } |
994 | 1132 |
995 ; ASM-LABEL: fcmpUleDouble | 1133 ; ASM-LABEL: fcmpUleDouble |
996 ; ASM-NEXT: .LfcmpUleDouble$entry: | 1134 ; ASM-NEXT: .LfcmpUleDouble$entry: |
997 ; ASM-NEXT: c.ule.d $f12, $f14 | 1135 ; ASM-NEXT: c.ule.d $f12, $f14 |
| 1136 ; ASM-NEXT: addiu $v0, $zero, 1 |
998 ; ASM-NEXT: movf $v0, $zero, $fcc0 | 1137 ; ASM-NEXT: movf $v0, $zero, $fcc0 |
999 ; ASM-NEXT: andi $v0, $v0, 1 | 1138 ; ASM-NEXT: andi $v0, $v0, 1 |
1000 ; ASM-NEXT: jr $ra | 1139 ; ASM-NEXT: jr $ra |
1001 | 1140 |
1002 ; DIS-LABEL: 00000300 <fcmpUleDouble>: | 1141 ; DIS-LABEL: 00000300 <fcmpUleDouble>: |
1003 ; DIS-NEXT: 300: 462e6037 c.ule.d $f12,$f14 | 1142 ; DIS-NEXT: 300: 462e6037 c.ule.d $f12,$f14 |
1004 ; DIS-NEXT: 304:» 00001001 » movf» v0,zero,$fcc0 | 1143 ; DIS-NEXT: 304:» 24020001 » li» v0,1 |
1005 ; DIS-NEXT: 308:» 30420001 » andi» v0,v0,0x1 | 1144 ; DIS-NEXT: 308:» 00001001 » movf» v0,zero,$fcc0 |
1006 ; DIS-NEXT: 30c:» 03e00008 » jr» ra | 1145 ; DIS-NEXT: 30c:» 30420001 » andi» v0,v0,0x1 |
| 1146 ; DIS-NEXT: 310:» 03e00008 » jr» ra |
1007 | 1147 |
1008 ; IASM-LABEL: fcmpUleDouble: | 1148 ; IASM-LABEL: fcmpUleDouble: |
1009 ; IASM-NEXT: .LfcmpUleDouble$entry: | 1149 ; IASM-NEXT: .LfcmpUleDouble$entry: |
1010 ; IASM-NEXT: .byte 0x37 | 1150 ; IASM-NEXT: .byte 0x37 |
1011 ; IASM-NEXT: .byte 0x60 | 1151 ; IASM-NEXT: .byte 0x60 |
1012 ; IASM-NEXT: .byte 0x2e | 1152 ; IASM-NEXT: .byte 0x2e |
1013 ; IASM-NEXT: .byte 0x46 | 1153 ; IASM-NEXT: .byte 0x46 |
1014 ; IASM-NEXT: .byte 0x1 | 1154 ; IASM-NEXT: .byte 0x1 |
| 1155 ; IASM-NEXT: .byte 0x0 |
| 1156 ; IASM-NEXT: .byte 0x2 |
| 1157 ; IASM-NEXT: .byte 0x24 |
| 1158 ; IASM-NEXT: .byte 0x1 |
1015 ; IASM-NEXT: .byte 0x10 | 1159 ; IASM-NEXT: .byte 0x10 |
1016 ; IASM-NEXT: .byte 0x0 | 1160 ; IASM-NEXT: .byte 0x0 |
1017 ; IASM-NEXT: .byte 0x0 | 1161 ; IASM-NEXT: .byte 0x0 |
1018 ; IASM-NEXT: .byte 0x1 | 1162 ; IASM-NEXT: .byte 0x1 |
1019 ; IASM-NEXT: .byte 0x0 | 1163 ; IASM-NEXT: .byte 0x0 |
1020 ; IASM-NEXT: .byte 0x42 | 1164 ; IASM-NEXT: .byte 0x42 |
1021 ; IASM-NEXT: .byte 0x30 | 1165 ; IASM-NEXT: .byte 0x30 |
1022 ; IASM-NEXT: .byte 0x8 | 1166 ; IASM-NEXT: .byte 0x8 |
1023 ; IASM-NEXT: .byte 0x0 | 1167 ; IASM-NEXT: .byte 0x0 |
1024 ; IASM-NEXT: .byte 0xe0 | 1168 ; IASM-NEXT: .byte 0xe0 |
1025 ; IASM-NEXT: .byte 0x3 | 1169 ; IASM-NEXT: .byte 0x3 |
1026 | 1170 |
1027 define internal i32 @fcmpUneFloat(float %a, float %b) { | 1171 define internal i32 @fcmpUneFloat(float %a, float %b) { |
1028 entry: | 1172 entry: |
1029 %cmp = fcmp une float %a, %b | 1173 %cmp = fcmp une float %a, %b |
1030 %cmp.ret_ext = zext i1 %cmp to i32 | 1174 %cmp.ret_ext = zext i1 %cmp to i32 |
1031 ret i32 %cmp.ret_ext | 1175 ret i32 %cmp.ret_ext |
1032 } | 1176 } |
1033 | 1177 |
1034 ; ASM-LABEL: fcmpUneFloat | 1178 ; ASM-LABEL: fcmpUneFloat |
1035 ; ASM-NEXT: .LfcmpUneFloat$entry: | 1179 ; ASM-NEXT: .LfcmpUneFloat$entry: |
1036 ; ASM-NEXT: c.eq.s $f12, $f14 | 1180 ; ASM-NEXT: c.eq.s $f12, $f14 |
| 1181 ; ASM-NEXT: addiu $v0, $zero, 1 |
1037 ; ASM-NEXT: movt $v0, $zero, $fcc0 | 1182 ; ASM-NEXT: movt $v0, $zero, $fcc0 |
1038 ; ASM-NEXT: andi $v0, $v0, 1 | 1183 ; ASM-NEXT: andi $v0, $v0, 1 |
1039 ; ASM-NEXT: jr $ra | 1184 ; ASM-NEXT: jr $ra |
1040 | 1185 |
1041 ; DIS-LABEL: 00000320 <fcmpUneFloat>: | 1186 ; DIS-LABEL: 00000320 <fcmpUneFloat>: |
1042 ; DIS-NEXT: 320: 460e6032 c.eq.s $f12,$f14 | 1187 ; DIS-NEXT: 320: 460e6032 c.eq.s $f12,$f14 |
1043 ; DIS-NEXT: 324:» 00011001 » movt» v0,zero,$fcc0 | 1188 ; DIS-NEXT: 324:» 24020001 » li» v0,1 |
1044 ; DIS-NEXT: 328:» 30420001 » andi» v0,v0,0x1 | 1189 ; DIS-NEXT: 328:» 00011001 » movt» v0,zero,$fcc0 |
1045 ; DIS-NEXT: 32c:» 03e00008 » jr» ra | 1190 ; DIS-NEXT: 32c:» 30420001 » andi» v0,v0,0x1 |
| 1191 ; DIS-NEXT: 330:» 03e00008 » jr» ra |
1046 | 1192 |
1047 ; IASM-LABEL: fcmpUneFloat: | 1193 ; IASM-LABEL: fcmpUneFloat: |
1048 ; IASM-NEXT: .LfcmpUneFloat$entry: | 1194 ; IASM-NEXT: .LfcmpUneFloat$entry: |
1049 ; IASM-NEXT: .byte 0x32 | 1195 ; IASM-NEXT: .byte 0x32 |
1050 ; IASM-NEXT: .byte 0x60 | 1196 ; IASM-NEXT: .byte 0x60 |
1051 ; IASM-NEXT: .byte 0xe | 1197 ; IASM-NEXT: .byte 0xe |
1052 ; IASM-NEXT: .byte 0x46 | 1198 ; IASM-NEXT: .byte 0x46 |
1053 ; IASM-NEXT: .byte 0x1 | 1199 ; IASM-NEXT: .byte 0x1 |
| 1200 ; IASM-NEXT: .byte 0x0 |
| 1201 ; IASM-NEXT: .byte 0x2 |
| 1202 ; IASM-NEXT: .byte 0x24 |
| 1203 ; IASM-NEXT: .byte 0x1 |
1054 ; IASM-NEXT: .byte 0x10 | 1204 ; IASM-NEXT: .byte 0x10 |
1055 ; IASM-NEXT: .byte 0x1 | 1205 ; IASM-NEXT: .byte 0x1 |
1056 ; IASM-NEXT: .byte 0x0 | 1206 ; IASM-NEXT: .byte 0x0 |
1057 ; IASM-NEXT: .byte 0x1 | 1207 ; IASM-NEXT: .byte 0x1 |
1058 ; IASM-NEXT: .byte 0x0 | 1208 ; IASM-NEXT: .byte 0x0 |
1059 ; IASM-NEXT: .byte 0x42 | 1209 ; IASM-NEXT: .byte 0x42 |
1060 ; IASM-NEXT: .byte 0x30 | 1210 ; IASM-NEXT: .byte 0x30 |
1061 ; IASM-NEXT: .byte 0x8 | 1211 ; IASM-NEXT: .byte 0x8 |
1062 ; IASM-NEXT: .byte 0x0 | 1212 ; IASM-NEXT: .byte 0x0 |
1063 ; IASM-NEXT: .byte 0xe0 | 1213 ; IASM-NEXT: .byte 0xe0 |
1064 ; IASM-NEXT: .byte 0x3 | 1214 ; IASM-NEXT: .byte 0x3 |
1065 | 1215 |
1066 define internal i32 @fcmpUneDouble(double %a, double %b) { | 1216 define internal i32 @fcmpUneDouble(double %a, double %b) { |
1067 entry: | 1217 entry: |
1068 %cmp = fcmp une double %a, %b | 1218 %cmp = fcmp une double %a, %b |
1069 %cmp.ret_ext = zext i1 %cmp to i32 | 1219 %cmp.ret_ext = zext i1 %cmp to i32 |
1070 ret i32 %cmp.ret_ext | 1220 ret i32 %cmp.ret_ext |
1071 } | 1221 } |
1072 | 1222 |
1073 ; ASM-LABEL: fcmpUneDouble | 1223 ; ASM-LABEL: fcmpUneDouble |
1074 ; ASM-NEXT: .LfcmpUneDouble$entry: | 1224 ; ASM-NEXT: .LfcmpUneDouble$entry: |
1075 ; ASM-NEXT: c.eq.d $f12, $f14 | 1225 ; ASM-NEXT: c.eq.d $f12, $f14 |
| 1226 ; ASM-NEXT: addiu $v0, $zero, 1 |
1076 ; ASM-NEXT: movt $v0, $zero, $fcc0 | 1227 ; ASM-NEXT: movt $v0, $zero, $fcc0 |
1077 ; ASM-NEXT: andi $v0, $v0, 1 | 1228 ; ASM-NEXT: andi $v0, $v0, 1 |
1078 ; ASM-NEXT: jr $ra | 1229 ; ASM-NEXT: jr $ra |
1079 | 1230 |
1080 ; DIS-LABEL: 00000340 <fcmpUneDouble>: | 1231 ; DIS-LABEL: 00000340 <fcmpUneDouble>: |
1081 ; DIS-NEXT: 340: 462e6032 c.eq.d $f12,$f14 | 1232 ; DIS-NEXT: 340: 462e6032 c.eq.d $f12,$f14 |
1082 ; DIS-NEXT: 344:» 00011001 » movt» v0,zero,$fcc0 | 1233 ; DIS-NEXT: 344:» 24020001 » li» v0,1 |
1083 ; DIS-NEXT: 348:» 30420001 » andi» v0,v0,0x1 | 1234 ; DIS-NEXT: 348:» 00011001 » movt» v0,zero,$fcc0 |
1084 ; DIS-NEXT: 34c:» 03e00008 » jr» ra | 1235 ; DIS-NEXT: 34c:» 30420001 » andi» v0,v0,0x1 |
| 1236 ; DIS-NEXT: 350:» 03e00008 » jr» ra |
1085 | 1237 |
1086 ; IASM-LABEL: fcmpUneDouble: | 1238 ; IASM-LABEL: fcmpUneDouble: |
1087 ; IASM-NEXT: .LfcmpUneDouble$entry: | 1239 ; IASM-NEXT: .LfcmpUneDouble$entry: |
1088 ; IASM-NEXT: .byte 0x32 | 1240 ; IASM-NEXT: .byte 0x32 |
1089 ; IASM-NEXT: .byte 0x60 | 1241 ; IASM-NEXT: .byte 0x60 |
1090 ; IASM-NEXT: .byte 0x2e | 1242 ; IASM-NEXT: .byte 0x2e |
1091 ; IASM-NEXT: .byte 0x46 | 1243 ; IASM-NEXT: .byte 0x46 |
1092 ; IASM-NEXT: .byte 0x1 | 1244 ; IASM-NEXT: .byte 0x1 |
| 1245 ; IASM-NEXT: .byte 0x0 |
| 1246 ; IASM-NEXT: .byte 0x2 |
| 1247 ; IASM-NEXT: .byte 0x24 |
| 1248 ; IASM-NEXT: .byte 0x1 |
1093 ; IASM-NEXT: .byte 0x10 | 1249 ; IASM-NEXT: .byte 0x10 |
1094 ; IASM-NEXT: .byte 0x1 | 1250 ; IASM-NEXT: .byte 0x1 |
1095 ; IASM-NEXT: .byte 0x0 | 1251 ; IASM-NEXT: .byte 0x0 |
1096 ; IASM-NEXT: .byte 0x1 | 1252 ; IASM-NEXT: .byte 0x1 |
1097 ; IASM-NEXT: .byte 0x0 | 1253 ; IASM-NEXT: .byte 0x0 |
1098 ; IASM-NEXT: .byte 0x42 | 1254 ; IASM-NEXT: .byte 0x42 |
1099 ; IASM-NEXT: .byte 0x30 | 1255 ; IASM-NEXT: .byte 0x30 |
1100 ; IASM-NEXT: .byte 0x8 | 1256 ; IASM-NEXT: .byte 0x8 |
1101 ; IASM-NEXT: .byte 0x0 | 1257 ; IASM-NEXT: .byte 0x0 |
1102 ; IASM-NEXT: .byte 0xe0 | 1258 ; IASM-NEXT: .byte 0xe0 |
1103 ; IASM-NEXT: .byte 0x3 | 1259 ; IASM-NEXT: .byte 0x3 |
1104 | 1260 |
1105 define internal i32 @fcmpUnoFloat(float %a, float %b) { | 1261 define internal i32 @fcmpUnoFloat(float %a, float %b) { |
1106 entry: | 1262 entry: |
1107 %cmp = fcmp uno float %a, %b | 1263 %cmp = fcmp uno float %a, %b |
1108 %cmp.ret_ext = zext i1 %cmp to i32 | 1264 %cmp.ret_ext = zext i1 %cmp to i32 |
1109 ret i32 %cmp.ret_ext | 1265 ret i32 %cmp.ret_ext |
1110 } | 1266 } |
1111 | 1267 |
1112 ; ASM-LABEL: fcmpUnoFloat | 1268 ; ASM-LABEL: fcmpUnoFloat |
1113 ; ASM-NEXT: .LfcmpUnoFloat$entry: | 1269 ; ASM-NEXT: .LfcmpUnoFloat$entry: |
1114 ; ASM-NEXT: c.un.s $f12, $f14 | 1270 ; ASM-NEXT: c.un.s $f12, $f14 |
| 1271 ; ASM-NEXT: addiu $v0, $zero, 1 |
1115 ; ASM-NEXT: movf $v0, $zero, $fcc0 | 1272 ; ASM-NEXT: movf $v0, $zero, $fcc0 |
1116 ; ASM-NEXT: andi $v0, $v0, 1 | 1273 ; ASM-NEXT: andi $v0, $v0, 1 |
1117 ; ASM-NEXT: jr $ra | 1274 ; ASM-NEXT: jr $ra |
1118 | 1275 |
1119 ; DIS-LABEL: 00000360 <fcmpUnoFloat>: | 1276 ; DIS-LABEL: 00000360 <fcmpUnoFloat>: |
1120 ; DIS-NEXT: 360: 460e6031 c.un.s $f12,$f14 | 1277 ; DIS-NEXT: 360: 460e6031 c.un.s $f12,$f14 |
1121 ; DIS-NEXT: 364:» 00001001 » movf» v0,zero,$fcc0 | 1278 ; DIS-NEXT: 364:» 24020001 » li» v0,1 |
1122 ; DIS-NEXT: 368:» 30420001 » andi» v0,v0,0x1 | 1279 ; DIS-NEXT: 368:» 00001001 » movf» v0,zero,$fcc0 |
1123 ; DIS-NEXT: 36c:» 03e00008 » jr» ra | 1280 ; DIS-NEXT: 36c:» 30420001 » andi» v0,v0,0x1 |
| 1281 ; DIS-NEXT: 370:» 03e00008 » jr» ra |
1124 | 1282 |
1125 ; IASM-LABEL: fcmpUnoFloat: | 1283 ; IASM-LABEL: fcmpUnoFloat: |
1126 ; IASM-NEXT: .LfcmpUnoFloat$entry: | 1284 ; IASM-NEXT: .LfcmpUnoFloat$entry: |
1127 ; IASM-NEXT: .byte 0x31 | 1285 ; IASM-NEXT: .byte 0x31 |
1128 ; IASM-NEXT: .byte 0x60 | 1286 ; IASM-NEXT: .byte 0x60 |
1129 ; IASM-NEXT: .byte 0xe | 1287 ; IASM-NEXT: .byte 0xe |
1130 ; IASM-NEXT: .byte 0x46 | 1288 ; IASM-NEXT: .byte 0x46 |
1131 ; IASM-NEXT: .byte 0x1 | 1289 ; IASM-NEXT: .byte 0x1 |
| 1290 ; IASM-NEXT: .byte 0x0 |
| 1291 ; IASM-NEXT: .byte 0x2 |
| 1292 ; IASM-NEXT: .byte 0x24 |
| 1293 ; IASM-NEXT: .byte 0x1 |
1132 ; IASM-NEXT: .byte 0x10 | 1294 ; IASM-NEXT: .byte 0x10 |
1133 ; IASM-NEXT: .byte 0x0 | 1295 ; IASM-NEXT: .byte 0x0 |
1134 ; IASM-NEXT: .byte 0x0 | 1296 ; IASM-NEXT: .byte 0x0 |
1135 ; IASM-NEXT: .byte 0x1 | 1297 ; IASM-NEXT: .byte 0x1 |
1136 ; IASM-NEXT: .byte 0x0 | 1298 ; IASM-NEXT: .byte 0x0 |
1137 ; IASM-NEXT: .byte 0x42 | 1299 ; IASM-NEXT: .byte 0x42 |
1138 ; IASM-NEXT: .byte 0x30 | 1300 ; IASM-NEXT: .byte 0x30 |
1139 ; IASM-NEXT: .byte 0x8 | 1301 ; IASM-NEXT: .byte 0x8 |
1140 ; IASM-NEXT: .byte 0x0 | 1302 ; IASM-NEXT: .byte 0x0 |
1141 ; IASM-NEXT: .byte 0xe0 | 1303 ; IASM-NEXT: .byte 0xe0 |
1142 ; IASM-NEXT: .byte 0x3 | 1304 ; IASM-NEXT: .byte 0x3 |
1143 | 1305 |
1144 define internal i32 @fcmpUnoDouble(double %a, double %b) { | 1306 define internal i32 @fcmpUnoDouble(double %a, double %b) { |
1145 entry: | 1307 entry: |
1146 %cmp = fcmp uno double %a, %b | 1308 %cmp = fcmp uno double %a, %b |
1147 %cmp.ret_ext = zext i1 %cmp to i32 | 1309 %cmp.ret_ext = zext i1 %cmp to i32 |
1148 ret i32 %cmp.ret_ext | 1310 ret i32 %cmp.ret_ext |
1149 } | 1311 } |
1150 | 1312 |
1151 ; ASM-LABEL: fcmpUnoDouble | 1313 ; ASM-LABEL: fcmpUnoDouble |
1152 ; ASM-NEXT: .LfcmpUnoDouble$entry: | 1314 ; ASM-NEXT: .LfcmpUnoDouble$entry: |
1153 ; ASM-NEXT: c.un.d $f12, $f14 | 1315 ; ASM-NEXT: c.un.d $f12, $f14 |
| 1316 ; ASM-NEXT: addiu $v0, $zero, 1 |
1154 ; ASM-NEXT: movf $v0, $zero, $fcc0 | 1317 ; ASM-NEXT: movf $v0, $zero, $fcc0 |
1155 ; ASM-NEXT: andi $v0, $v0, 1 | 1318 ; ASM-NEXT: andi $v0, $v0, 1 |
1156 ; ASM-NEXT: jr $ra | 1319 ; ASM-NEXT: jr $ra |
1157 | 1320 |
1158 ; DIS-LABEL: 00000380 <fcmpUnoDouble>: | 1321 ; DIS-LABEL: 00000380 <fcmpUnoDouble>: |
1159 ; DIS-NEXT: 380: 462e6031 c.un.d $f12,$f14 | 1322 ; DIS-NEXT: 380: 462e6031 c.un.d $f12,$f14 |
1160 ; DIS-NEXT: 384:» 00001001 » movf» v0,zero,$fcc0 | 1323 ; DIS-NEXT: 384:» 24020001 » li» v0,1 |
1161 ; DIS-NEXT: 388:» 30420001 » andi» v0,v0,0x1 | 1324 ; DIS-NEXT: 388:» 00001001 » movf» v0,zero,$fcc0 |
1162 ; DIS-NEXT: 38c:» 03e00008 » jr» ra | 1325 ; DIS-NEXT: 38c:» 30420001 » andi» v0,v0,0x1 |
| 1326 ; DIS-NEXT: 390:» 03e00008 » jr» ra |
1163 | 1327 |
1164 ; IASM-LABEL: fcmpUnoDouble: | 1328 ; IASM-LABEL: fcmpUnoDouble: |
1165 ; IASM-NEXT: .LfcmpUnoDouble$entry: | 1329 ; IASM-NEXT: .LfcmpUnoDouble$entry: |
1166 ; IASM-NEXT: .byte 0x31 | 1330 ; IASM-NEXT: .byte 0x31 |
1167 ; IASM-NEXT: .byte 0x60 | 1331 ; IASM-NEXT: .byte 0x60 |
1168 ; IASM-NEXT: .byte 0x2e | 1332 ; IASM-NEXT: .byte 0x2e |
1169 ; IASM-NEXT: .byte 0x46 | 1333 ; IASM-NEXT: .byte 0x46 |
1170 ; IASM-NEXT: .byte 0x1 | 1334 ; IASM-NEXT: .byte 0x1 |
| 1335 ; IASM-NEXT: .byte 0x0 |
| 1336 ; IASM-NEXT: .byte 0x2 |
| 1337 ; IASM-NEXT: .byte 0x24 |
| 1338 ; IASM-NEXT: .byte 0x1 |
1171 ; IASM-NEXT: .byte 0x10 | 1339 ; IASM-NEXT: .byte 0x10 |
1172 ; IASM-NEXT: .byte 0x0 | 1340 ; IASM-NEXT: .byte 0x0 |
1173 ; IASM-NEXT: .byte 0x0 | 1341 ; IASM-NEXT: .byte 0x0 |
1174 ; IASM-NEXT: .byte 0x1 | 1342 ; IASM-NEXT: .byte 0x1 |
1175 ; IASM-NEXT: .byte 0x0 | 1343 ; IASM-NEXT: .byte 0x0 |
1176 ; IASM-NEXT: .byte 0x42 | 1344 ; IASM-NEXT: .byte 0x42 |
1177 ; IASM-NEXT: .byte 0x30 | 1345 ; IASM-NEXT: .byte 0x30 |
1178 ; IASM-NEXT: .byte 0x8 | 1346 ; IASM-NEXT: .byte 0x8 |
1179 ; IASM-NEXT: .byte 0x0 | 1347 ; IASM-NEXT: .byte 0x0 |
1180 ; IASM-NEXT: .byte 0xe0 | 1348 ; IASM-NEXT: .byte 0xe0 |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1238 ; IASM-NEXT: .byte 0x2 | 1406 ; IASM-NEXT: .byte 0x2 |
1239 ; IASM-NEXT: .byte 0x24 | 1407 ; IASM-NEXT: .byte 0x24 |
1240 ; IASM-NEXT: .byte 0x1 | 1408 ; IASM-NEXT: .byte 0x1 |
1241 ; IASM-NEXT: .byte 0x0 | 1409 ; IASM-NEXT: .byte 0x0 |
1242 ; IASM-NEXT: .byte 0x42 | 1410 ; IASM-NEXT: .byte 0x42 |
1243 ; IASM-NEXT: .byte 0x30 | 1411 ; IASM-NEXT: .byte 0x30 |
1244 ; IASM-NEXT: .byte 0x8 | 1412 ; IASM-NEXT: .byte 0x8 |
1245 ; IASM-NEXT: .byte 0x0 | 1413 ; IASM-NEXT: .byte 0x0 |
1246 ; IASM-NEXT: .byte 0xe0 | 1414 ; IASM-NEXT: .byte 0xe0 |
1247 ; IASM-NEXT: .byte 0x3 | 1415 ; IASM-NEXT: .byte 0x3 |
OLD | NEW |