| 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 |