| OLD | NEW |
| 1 ; This tries to be a comprehensive test of f32 and f64 operations. | 1 ; This tries to be a comprehensive test of f32 and f64 operations. |
| 2 ; The CHECK lines are only checking for basic instruction patterns | 2 ; The CHECK lines are only checking for basic instruction patterns |
| 3 ; that should be present regardless of the optimization level, so | 3 ; that should be present regardless of the optimization level, so |
| 4 ; there are no special OPTM1 match lines. | 4 ; there are no special OPTM1 match lines. |
| 5 | 5 |
| 6 ; TODO(jvoung): fix extra "CALLTARGETS" run. The llvm-objdump symbolizer | 6 ; TODO(jvoung): fix extra "CALLTARGETS" run. The llvm-objdump symbolizer |
| 7 ; doesn't know how to symbolize non-section-local functions. | 7 ; doesn't know how to symbolize non-section-local functions. |
| 8 ; The newer LLVM 3.6 one does work, but watch out for other bugs. | 8 ; The newer LLVM 3.6 one does work, but watch out for other bugs. |
| 9 | 9 |
| 10 ; RUN: %p2i -i %s --args -O2 --verbose none \ | 10 ; RUN: %p2i -i %s --args -O2 --verbose none \ |
| (...skipping 29 matching lines...) Expand all Loading... |
| 40 define internal i32 @passFpArgs(float %a, double %b, float %c, double %d, float
%e, double %f) { | 40 define internal i32 @passFpArgs(float %a, double %b, float %c, double %d, float
%e, double %f) { |
| 41 entry: | 41 entry: |
| 42 %call = call i32 @ignoreFpArgsNoInline(float %a, i32 123, double %b) | 42 %call = call i32 @ignoreFpArgsNoInline(float %a, i32 123, double %b) |
| 43 %call1 = call i32 @ignoreFpArgsNoInline(float %c, i32 123, double %d) | 43 %call1 = call i32 @ignoreFpArgsNoInline(float %c, i32 123, double %d) |
| 44 %call2 = call i32 @ignoreFpArgsNoInline(float %e, i32 123, double %f) | 44 %call2 = call i32 @ignoreFpArgsNoInline(float %e, i32 123, double %f) |
| 45 %add = add i32 %call1, %call | 45 %add = add i32 %call1, %call |
| 46 %add3 = add i32 %add, %call2 | 46 %add3 = add i32 %add, %call2 |
| 47 ret i32 %add3 | 47 ret i32 %add3 |
| 48 } | 48 } |
| 49 ; CHECK-LABEL: passFpArgs | 49 ; CHECK-LABEL: passFpArgs |
| 50 ; CALLTARGETS-LABEL: passFpArgs |
| 50 ; CHECK: mov dword ptr [esp + 4], 123 | 51 ; CHECK: mov dword ptr [esp + 4], 123 |
| 51 ; CHECK: call ignoreFpArgsNoInline | 52 ; CHECK: call -4 |
| 53 ; CALLTARGETS: .long ignoreFpArgsNoInline |
| 52 ; CHECK: mov dword ptr [esp + 4], 123 | 54 ; CHECK: mov dword ptr [esp + 4], 123 |
| 53 ; CHECK: call ignoreFpArgsNoInline | 55 ; CHECK: call -4 |
| 56 ; CALLTARGETS: .long ignoreFpArgsNoInline |
| 54 ; CHECK: mov dword ptr [esp + 4], 123 | 57 ; CHECK: mov dword ptr [esp + 4], 123 |
| 55 ; CHECK: call ignoreFpArgsNoInline | 58 ; CHECK: call -4 |
| 59 ; CALLTARGETS: .long ignoreFpArgsNoInline |
| 56 | 60 |
| 57 define i32 @ignoreFpArgsNoInline(float %x, i32 %y, double %z) { | 61 declare i32 @ignoreFpArgsNoInline(float %x, i32 %y, double %z) |
| 58 entry: | |
| 59 ret i32 %y | |
| 60 } | |
| 61 | 62 |
| 62 define internal i32 @passFpConstArg(float %a, double %b) { | 63 define internal i32 @passFpConstArg(float %a, double %b) { |
| 63 entry: | 64 entry: |
| 64 %call = call i32 @ignoreFpArgsNoInline(float %a, i32 123, double 2.340000e+00) | 65 %call = call i32 @ignoreFpArgsNoInline(float %a, i32 123, double 2.340000e+00) |
| 65 ret i32 %call | 66 ret i32 %call |
| 66 } | 67 } |
| 67 ; CHECK-LABEL: passFpConstArg | 68 ; CHECK-LABEL: passFpConstArg |
| 69 ; CALLTARGETS-LABEL: passFpConstArg |
| 68 ; CHECK: mov dword ptr [esp + 4], 123 | 70 ; CHECK: mov dword ptr [esp + 4], 123 |
| 69 ; CHECK: call ignoreFpArgsNoInline | 71 ; CHECK: call -4 |
| 72 ; CALLTARGETS: .long ignoreFpArgsNoInline |
| 70 | 73 |
| 71 define internal i32 @passFp32ConstArg(float %a) { | 74 define internal i32 @passFp32ConstArg(float %a) { |
| 72 entry: | 75 entry: |
| 73 %call = call i32 @ignoreFp32ArgsNoInline(float %a, i32 123, float 2.0) | 76 %call = call i32 @ignoreFp32ArgsNoInline(float %a, i32 123, float 2.0) |
| 74 ret i32 %call | 77 ret i32 %call |
| 75 } | 78 } |
| 76 ; CHECK-LABEL: passFp32ConstArg | 79 ; CHECK-LABEL: passFp32ConstArg |
| 77 ; CHECK: mov dword ptr [esp + 4], 123 | 80 ; CHECK: mov dword ptr [esp + 4], 123 |
| 78 ; CHECK: movss dword ptr [esp + 8] | 81 ; CHECK: movss dword ptr [esp + 8] |
| 79 ; CHECK: call ignoreFp32ArgsNoInline | 82 ; CHECK: call ignoreFp32ArgsNoInline |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 184 ; CHECK: fld | 187 ; CHECK: fld |
| 185 | 188 |
| 186 define internal float @remFloat(float %a, float %b) { | 189 define internal float @remFloat(float %a, float %b) { |
| 187 entry: | 190 entry: |
| 188 %div = frem float %a, %b | 191 %div = frem float %a, %b |
| 189 ret float %div | 192 ret float %div |
| 190 } | 193 } |
| 191 ; CHECK-LABEL: remFloat | 194 ; CHECK-LABEL: remFloat |
| 192 ; CALLTARGETS-LABEL: remFloat | 195 ; CALLTARGETS-LABEL: remFloat |
| 193 ; CHECK: call -4 | 196 ; CHECK: call -4 |
| 194 ; CALLTARGETS: call fmodf | 197 ; CALLTARGETS: .long fmodf |
| 195 | 198 |
| 196 define internal double @remDouble(double %a, double %b) { | 199 define internal double @remDouble(double %a, double %b) { |
| 197 entry: | 200 entry: |
| 198 %div = frem double %a, %b | 201 %div = frem double %a, %b |
| 199 ret double %div | 202 ret double %div |
| 200 } | 203 } |
| 201 ; CHECK-LABEL: remDouble | 204 ; CHECK-LABEL: remDouble |
| 202 ; CALLTARGETS-LABEL: remDouble | 205 ; CALLTARGETS-LABEL: remDouble |
| 203 ; CHECK: call -4 | 206 ; CHECK: call -4 |
| 204 ; CALLTARGETS: call fmod | 207 ; CALLTARGETS: .long fmod |
| 205 | 208 |
| 206 define internal float @fptrunc(double %a) { | 209 define internal float @fptrunc(double %a) { |
| 207 entry: | 210 entry: |
| 208 %conv = fptrunc double %a to float | 211 %conv = fptrunc double %a to float |
| 209 ret float %conv | 212 ret float %conv |
| 210 } | 213 } |
| 211 ; CHECK-LABEL: fptrunc | 214 ; CHECK-LABEL: fptrunc |
| 212 ; CHECK: cvtsd2ss | 215 ; CHECK: cvtsd2ss |
| 213 ; CHECK: fld | 216 ; CHECK: fld |
| 214 | 217 |
| 215 define internal double @fpext(float %a) { | 218 define internal double @fpext(float %a) { |
| 216 entry: | 219 entry: |
| 217 %conv = fpext float %a to double | 220 %conv = fpext float %a to double |
| 218 ret double %conv | 221 ret double %conv |
| 219 } | 222 } |
| 220 ; CHECK-LABEL: fpext | 223 ; CHECK-LABEL: fpext |
| 221 ; CHECK: cvtss2sd | 224 ; CHECK: cvtss2sd |
| 222 ; CHECK: fld | 225 ; CHECK: fld |
| 223 | 226 |
| 224 define internal i64 @doubleToSigned64(double %a) { | 227 define internal i64 @doubleToSigned64(double %a) { |
| 225 entry: | 228 entry: |
| 226 %conv = fptosi double %a to i64 | 229 %conv = fptosi double %a to i64 |
| 227 ret i64 %conv | 230 ret i64 %conv |
| 228 } | 231 } |
| 229 ; CHECK-LABEL: doubleToSigned64 | 232 ; CHECK-LABEL: doubleToSigned64 |
| 230 ; CALLTARGETS-LABEL: doubleToSigned64 | 233 ; CALLTARGETS-LABEL: doubleToSigned64 |
| 231 ; CHECK: call -4 | 234 ; CHECK: call -4 |
| 232 ; CALLTARGETS: call cvtdtosi64 | 235 ; CALLTARGETS: .long cvtdtosi64 |
| 233 | 236 |
| 234 define internal i64 @floatToSigned64(float %a) { | 237 define internal i64 @floatToSigned64(float %a) { |
| 235 entry: | 238 entry: |
| 236 %conv = fptosi float %a to i64 | 239 %conv = fptosi float %a to i64 |
| 237 ret i64 %conv | 240 ret i64 %conv |
| 238 } | 241 } |
| 239 ; CHECK-LABEL: floatToSigned64 | 242 ; CHECK-LABEL: floatToSigned64 |
| 240 ; CALLTARGETS-LABEL: floatToSigned64 | 243 ; CALLTARGETS-LABEL: floatToSigned64 |
| 241 ; CHECK: call -4 | 244 ; CHECK: call -4 |
| 242 ; CALLTARGETS: call cvtftosi64 | 245 ; CALLTARGETS: .long cvtftosi64 |
| 243 | 246 |
| 244 define internal i64 @doubleToUnsigned64(double %a) { | 247 define internal i64 @doubleToUnsigned64(double %a) { |
| 245 entry: | 248 entry: |
| 246 %conv = fptoui double %a to i64 | 249 %conv = fptoui double %a to i64 |
| 247 ret i64 %conv | 250 ret i64 %conv |
| 248 } | 251 } |
| 249 ; CHECK-LABEL: doubleToUnsigned64 | 252 ; CHECK-LABEL: doubleToUnsigned64 |
| 250 ; CALLTARGETS-LABEL: doubleToUnsigned64 | 253 ; CALLTARGETS-LABEL: doubleToUnsigned64 |
| 251 ; CHECK: call -4 | 254 ; CHECK: call -4 |
| 252 ; CALLTARGETS: call cvtdtoui64 | 255 ; CALLTARGETS: .long cvtdtoui64 |
| 253 | 256 |
| 254 define internal i64 @floatToUnsigned64(float %a) { | 257 define internal i64 @floatToUnsigned64(float %a) { |
| 255 entry: | 258 entry: |
| 256 %conv = fptoui float %a to i64 | 259 %conv = fptoui float %a to i64 |
| 257 ret i64 %conv | 260 ret i64 %conv |
| 258 } | 261 } |
| 259 ; CHECK-LABEL: floatToUnsigned64 | 262 ; CHECK-LABEL: floatToUnsigned64 |
| 260 ; CALLTARGETS-LABEL: floatToUnsigned64 | 263 ; CALLTARGETS-LABEL: floatToUnsigned64 |
| 261 ; CHECK: call -4 | 264 ; CHECK: call -4 |
| 262 ; CALLTARGETS: call cvtftoui64 | 265 ; CALLTARGETS: .long cvtftoui64 |
| 263 | 266 |
| 264 define internal i32 @doubleToSigned32(double %a) { | 267 define internal i32 @doubleToSigned32(double %a) { |
| 265 entry: | 268 entry: |
| 266 %conv = fptosi double %a to i32 | 269 %conv = fptosi double %a to i32 |
| 267 ret i32 %conv | 270 ret i32 %conv |
| 268 } | 271 } |
| 269 ; CHECK-LABEL: doubleToSigned32 | 272 ; CHECK-LABEL: doubleToSigned32 |
| 270 ; CHECK: cvttsd2si | 273 ; CHECK: cvttsd2si |
| 271 | 274 |
| 272 define internal i32 @doubleToSigned32Const() { | 275 define internal i32 @doubleToSigned32Const() { |
| (...skipping 13 matching lines...) Expand all Loading... |
| 286 ; CHECK: cvttss2si | 289 ; CHECK: cvttss2si |
| 287 | 290 |
| 288 define internal i32 @doubleToUnsigned32(double %a) { | 291 define internal i32 @doubleToUnsigned32(double %a) { |
| 289 entry: | 292 entry: |
| 290 %conv = fptoui double %a to i32 | 293 %conv = fptoui double %a to i32 |
| 291 ret i32 %conv | 294 ret i32 %conv |
| 292 } | 295 } |
| 293 ; CHECK-LABEL: doubleToUnsigned32 | 296 ; CHECK-LABEL: doubleToUnsigned32 |
| 294 ; CALLTARGETS-LABEL: doubleToUnsigned32 | 297 ; CALLTARGETS-LABEL: doubleToUnsigned32 |
| 295 ; CHECK: call -4 | 298 ; CHECK: call -4 |
| 296 ; CALLTARGETS: call cvtdtoui32 | 299 ; CALLTARGETS: .long cvtdtoui32 |
| 297 | 300 |
| 298 define internal i32 @floatToUnsigned32(float %a) { | 301 define internal i32 @floatToUnsigned32(float %a) { |
| 299 entry: | 302 entry: |
| 300 %conv = fptoui float %a to i32 | 303 %conv = fptoui float %a to i32 |
| 301 ret i32 %conv | 304 ret i32 %conv |
| 302 } | 305 } |
| 303 ; CHECK-LABEL: floatToUnsigned32 | 306 ; CHECK-LABEL: floatToUnsigned32 |
| 304 ; CALLTARGETS-LABEL: floatToUnsigned32 | 307 ; CALLTARGETS-LABEL: floatToUnsigned32 |
| 305 ; CHECK: call -4 | 308 ; CHECK: call -4 |
| 306 ; CALLTARGETS: call cvtftoui32 | 309 ; CALLTARGETS: .long cvtftoui32 |
| 307 | 310 |
| 308 | 311 |
| 309 define internal i32 @doubleToSigned16(double %a) { | 312 define internal i32 @doubleToSigned16(double %a) { |
| 310 entry: | 313 entry: |
| 311 %conv = fptosi double %a to i16 | 314 %conv = fptosi double %a to i16 |
| 312 %conv.ret_ext = sext i16 %conv to i32 | 315 %conv.ret_ext = sext i16 %conv to i32 |
| 313 ret i32 %conv.ret_ext | 316 ret i32 %conv.ret_ext |
| 314 } | 317 } |
| 315 ; CHECK-LABEL: doubleToSigned16 | 318 ; CHECK-LABEL: doubleToSigned16 |
| 316 ; CHECK: cvttsd2si | 319 ; CHECK: cvttsd2si |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 407 ; CHECK: and eax, 1 | 410 ; CHECK: and eax, 1 |
| 408 | 411 |
| 409 define internal double @signed64ToDouble(i64 %a) { | 412 define internal double @signed64ToDouble(i64 %a) { |
| 410 entry: | 413 entry: |
| 411 %conv = sitofp i64 %a to double | 414 %conv = sitofp i64 %a to double |
| 412 ret double %conv | 415 ret double %conv |
| 413 } | 416 } |
| 414 ; CHECK-LABEL: signed64ToDouble | 417 ; CHECK-LABEL: signed64ToDouble |
| 415 ; CALLTARGETS-LABEL: signed64ToDouble | 418 ; CALLTARGETS-LABEL: signed64ToDouble |
| 416 ; CHECK: call -4 | 419 ; CHECK: call -4 |
| 417 ; CALLTARGETS: call cvtsi64tod | 420 ; CALLTARGETS: .long cvtsi64tod |
| 418 ; CHECK: fstp qword | 421 ; CHECK: fstp qword |
| 419 | 422 |
| 420 define internal float @signed64ToFloat(i64 %a) { | 423 define internal float @signed64ToFloat(i64 %a) { |
| 421 entry: | 424 entry: |
| 422 %conv = sitofp i64 %a to float | 425 %conv = sitofp i64 %a to float |
| 423 ret float %conv | 426 ret float %conv |
| 424 } | 427 } |
| 425 ; CHECK-LABEL: signed64ToFloat | 428 ; CHECK-LABEL: signed64ToFloat |
| 426 ; CALLTARGETS-LABEL: signed64ToFloat | 429 ; CALLTARGETS-LABEL: signed64ToFloat |
| 427 ; CHECK: call -4 | 430 ; CHECK: call -4 |
| 428 ; CALLTARGETS: call cvtsi64tof | 431 ; CALLTARGETS: .long cvtsi64tof |
| 429 ; CHECK: fstp dword | 432 ; CHECK: fstp dword |
| 430 | 433 |
| 431 define internal double @unsigned64ToDouble(i64 %a) { | 434 define internal double @unsigned64ToDouble(i64 %a) { |
| 432 entry: | 435 entry: |
| 433 %conv = uitofp i64 %a to double | 436 %conv = uitofp i64 %a to double |
| 434 ret double %conv | 437 ret double %conv |
| 435 } | 438 } |
| 436 ; CHECK-LABEL: unsigned64ToDouble | 439 ; CHECK-LABEL: unsigned64ToDouble |
| 437 ; CALLTARGETS-LABEL: unsigned64ToDouble | 440 ; CALLTARGETS-LABEL: unsigned64ToDouble |
| 438 ; CHECK: call -4 | 441 ; CHECK: call -4 |
| 439 ; CALLTARGETS: call cvtui64tod | 442 ; CALLTARGETS: .long cvtui64tod |
| 440 ; CHECK: fstp | 443 ; CHECK: fstp |
| 441 | 444 |
| 442 define internal float @unsigned64ToFloat(i64 %a) { | 445 define internal float @unsigned64ToFloat(i64 %a) { |
| 443 entry: | 446 entry: |
| 444 %conv = uitofp i64 %a to float | 447 %conv = uitofp i64 %a to float |
| 445 ret float %conv | 448 ret float %conv |
| 446 } | 449 } |
| 447 ; CHECK-LABEL: unsigned64ToFloat | 450 ; CHECK-LABEL: unsigned64ToFloat |
| 448 ; CALLTARGETS-LABEL: unsigned64ToFloat | 451 ; CALLTARGETS-LABEL: unsigned64ToFloat |
| 449 ; CHECK: call -4 | 452 ; CHECK: call -4 |
| 450 ; CALLTARGETS: call cvtui64tof | 453 ; CALLTARGETS: .long cvtui64tof |
| 451 ; CHECK: fstp | 454 ; CHECK: fstp |
| 452 | 455 |
| 453 define internal double @unsigned64ToDoubleConst() { | 456 define internal double @unsigned64ToDoubleConst() { |
| 454 entry: | 457 entry: |
| 455 %conv = uitofp i64 12345678901234 to double | 458 %conv = uitofp i64 12345678901234 to double |
| 456 ret double %conv | 459 ret double %conv |
| 457 } | 460 } |
| 458 ; CHECK-LABEL: unsigned64ToDouble | 461 ; CHECK-LABEL: unsigned64ToDouble |
| 459 ; CALLTARGETS-LABEL: unsigned64ToDouble | 462 ; CALLTARGETS-LABEL: unsigned64ToDouble |
| 460 ; CHECK: mov dword ptr [esp + 4], 2874 | 463 ; CHECK: mov dword ptr [esp + 4], 2874 |
| 461 ; CHECK: mov dword ptr [esp], 1942892530 | 464 ; CHECK: mov dword ptr [esp], 1942892530 |
| 462 ; CHECK: call -4 | 465 ; CHECK: call -4 |
| 463 ; CALLTARGETS: call cvtui64tod | 466 ; CALLTARGETS: .long cvtui64tod |
| 464 ; CHECK: fstp | 467 ; CHECK: fstp |
| 465 | 468 |
| 466 define internal double @signed32ToDouble(i32 %a) { | 469 define internal double @signed32ToDouble(i32 %a) { |
| 467 entry: | 470 entry: |
| 468 %conv = sitofp i32 %a to double | 471 %conv = sitofp i32 %a to double |
| 469 ret double %conv | 472 ret double %conv |
| 470 } | 473 } |
| 471 ; CHECK-LABEL: signed32ToDouble | 474 ; CHECK-LABEL: signed32ToDouble |
| 472 ; CHECK: cvtsi2sd | 475 ; CHECK: cvtsi2sd |
| 473 ; CHECK: fld | 476 ; CHECK: fld |
| (...skipping 17 matching lines...) Expand all Loading... |
| 491 ; CHECK: fld | 494 ; CHECK: fld |
| 492 | 495 |
| 493 define internal double @unsigned32ToDouble(i32 %a) { | 496 define internal double @unsigned32ToDouble(i32 %a) { |
| 494 entry: | 497 entry: |
| 495 %conv = uitofp i32 %a to double | 498 %conv = uitofp i32 %a to double |
| 496 ret double %conv | 499 ret double %conv |
| 497 } | 500 } |
| 498 ; CHECK-LABEL: unsigned32ToDouble | 501 ; CHECK-LABEL: unsigned32ToDouble |
| 499 ; CALLTARGETS-LABEL: unsigned32ToDouble | 502 ; CALLTARGETS-LABEL: unsigned32ToDouble |
| 500 ; CHECK: call -4 | 503 ; CHECK: call -4 |
| 501 ; CALLTARGETS: call cvtui32tod | 504 ; CALLTARGETS: .long cvtui32tod |
| 502 ; CHECK: fstp qword | 505 ; CHECK: fstp qword |
| 503 | 506 |
| 504 define internal float @unsigned32ToFloat(i32 %a) { | 507 define internal float @unsigned32ToFloat(i32 %a) { |
| 505 entry: | 508 entry: |
| 506 %conv = uitofp i32 %a to float | 509 %conv = uitofp i32 %a to float |
| 507 ret float %conv | 510 ret float %conv |
| 508 } | 511 } |
| 509 ; CHECK-LABEL: unsigned32ToFloat | 512 ; CHECK-LABEL: unsigned32ToFloat |
| 510 ; CALLTARGETS-LABEL: unsigned32ToFloat | 513 ; CALLTARGETS-LABEL: unsigned32ToFloat |
| 511 ; CHECK: call -4 | 514 ; CHECK: call -4 |
| 512 ; CALLTARGETS: call cvtui32tof | 515 ; CALLTARGETS: .long cvtui32tof |
| 513 ; CHECK: fstp dword | 516 ; CHECK: fstp dword |
| 514 | 517 |
| 515 define internal double @signed16ToDouble(i32 %a) { | 518 define internal double @signed16ToDouble(i32 %a) { |
| 516 entry: | 519 entry: |
| 517 %a.arg_trunc = trunc i32 %a to i16 | 520 %a.arg_trunc = trunc i32 %a to i16 |
| 518 %conv = sitofp i16 %a.arg_trunc to double | 521 %conv = sitofp i16 %a.arg_trunc to double |
| 519 ret double %conv | 522 ret double %conv |
| 520 } | 523 } |
| 521 ; CHECK-LABEL: signed16ToDouble | 524 ; CHECK-LABEL: signed16ToDouble |
| 522 ; CHECK: cvtsi2sd | 525 ; CHECK: cvtsi2sd |
| (...skipping 701 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1224 define internal double @selectDoubleVarVar(double %a, double %b) { | 1227 define internal double @selectDoubleVarVar(double %a, double %b) { |
| 1225 entry: | 1228 entry: |
| 1226 %cmp = fcmp olt double %a, %b | 1229 %cmp = fcmp olt double %a, %b |
| 1227 %cond = select i1 %cmp, double %a, double %b | 1230 %cond = select i1 %cmp, double %a, double %b |
| 1228 ret double %cond | 1231 ret double %cond |
| 1229 } | 1232 } |
| 1230 ; CHECK-LABEL: selectDoubleVarVar | 1233 ; CHECK-LABEL: selectDoubleVarVar |
| 1231 ; CHECK: ucomisd | 1234 ; CHECK: ucomisd |
| 1232 ; CHECK: ja {{[0-9]}} | 1235 ; CHECK: ja {{[0-9]}} |
| 1233 ; CHECK: fld | 1236 ; CHECK: fld |
| OLD | NEW |