1013 lines · plain
1## Check that llvm-bolt is able to read a file with DWARF Exception CFI2## information and fix CFI information after reordering.3 4# RUN: llvm-mc -filetype=obj -triple x86_64-unknown-unknown %s -o %t.o5# RUN: llvm-strip --strip-unneeded %t.o6# RUN: %clang %cflags -fpic -shared -xc /dev/null -o %t.so7## Link against a DSO to ensure PLT entries.8# RUN: %clangxx %cflags %t.o %t.so -o %t.exe9# RUN: llvm-bolt %t.exe -o %t --reorder-blocks=cache --print-after-lowering \10# RUN: --print-only=_Z10SolveCubicddddPiPd 2>&1 | FileCheck %s11#12# Entry BB13# CHECK: divsd %xmm0, %xmm114# CHECK: pushq %rbx15# CHECK: !CFI $0 ; OpDefCfaOffset16# CHECK: !CFI $1 ; OpOffset17# CHECK: movq %rsi, %rbx18# CHECK: subq $0x70, %rsp19# CHECK: !CFI $2 ; OpDefCfaOffset20# CHECK: divsd %xmm0, %xmm221# Duplicated tail22# CHECK: addq $0x70, %rsp23# CHECK: !CFI $3 ; OpDefCfaOffset24# CHECK: popq %rbx25# CHECK: !CFI $4 ; OpDefCfaOffset26# CHECK: retq27# CHECK: !CFI {{.*}} ; OpDefCfa28# Epilogue rescheduled to the middle of the function29# CHECK: addq $0x70, %rsp30# CHECK: !CFI $6 ; OpDefCfaOffset31# CHECK: popq %rbx32# CHECK: !CFI $7 ; OpDefCfaOffset33# CHECK: retq34# CHECK: !CFI {{.*}} ; OpDefCfa35 36 .text37 .globl main38 .type main, %function39main:40# FDATA: 0 [unknown] 0 1 main 0 0 041 .cfi_startproc42LBB00:43 pushq %r1544 .cfi_def_cfa_offset 1645 .cfi_offset %r15, -1646 movl $0x401520, %edi47 pushq %r1448 .cfi_def_cfa_offset 2449 .cfi_offset %r14, -2450 pushq %r1351 .cfi_def_cfa_offset 3252 .cfi_offset %r13, -3253 pushq %r1254 .cfi_def_cfa_offset 4055 .cfi_offset %r12, -4056 xorl %r12d, %r12d57 pushq %rbp58 .cfi_def_cfa_offset 4859 .cfi_offset %rbp, -4860 pushq %rbx61 .cfi_def_cfa_offset 5662 .cfi_offset %rbx, -5663 subq $0x98, %rsp64 .cfi_def_cfa_offset 20865 leaq 0x60(%rsp), %rbx66 leaq 0x8c(%rsp), %rbp67 callq puts@PLT68 movsd DATAat0x401640(%rip), %xmm369 movq %rbx, %rsi70 movsd DATAat0x401648(%rip), %xmm271 movq %rbp, %rdi72 movsd DATAat0x401650(%rip), %xmm173 movq %rbx, %r1374 movsd DATAat0x401658(%rip), %xmm075 callq _Z10SolveCubicddddPiPd76 movl $0x4015d8, %edi77 xorl %eax, %eax78 callq printf@PLT79LBB00_br: jmp Ltmp080# FDATA: 1 main #LBB00_br# 1 main #Ltmp0# 0 081 82Ltmp1:83 movsd (%r13), %xmm084 movl $0x4015e3, %edi85 movl $0x1, %eax86 addl $0x1, %r12d87 addq $0x8, %r1388Ltmp1_br: callq printf@PLT89# FDATA: 1 main #Ltmp1_br# 1 main #Ltmp0# 0 090 91Ltmp0:92 cmpl 0x8c(%rsp), %r12d93Ltmp0_br: jl Ltmp194# FDATA: 1 main #Ltmp0_br# 1 main #Ltmp1# 0 095# FDATA: 1 main #Ltmp0_br# 1 main #LFT2# 0 096 97LFT2:98 movl $0xa, %edi99 movq %rbx, %r13100 xorl %r12d, %r12d101 callq putchar@PLT102 movsd DATAat0x401640(%rip), %xmm3103 movq %rbx, %rsi104 movsd DATAat0x401660(%rip), %xmm2105 movq %rbp, %rdi106 movsd DATAat0x401668(%rip), %xmm1107 movsd DATAat0x401658(%rip), %xmm0108 callq _Z10SolveCubicddddPiPd109 movl $0x4015d8, %edi110 xorl %eax, %eax111 callq printf@PLT112LFT2_br: jmp Ltmp2113# FDATA: 1 main #LFT2_br# 1 main #Ltmp2# 0 0114 115Ltmp3:116 movsd (%r13), %xmm0117 movl $0x4015e3, %edi118 movl $0x1, %eax119 addl $0x1, %r12d120 addq $0x8, %r13121Ltmp3_br: callq printf@PLT122# FDATA: 1 main #Ltmp3_br# 1 main #Ltmp2# 0 0123 124Ltmp2:125 cmpl 0x8c(%rsp), %r12d126Ltmp2_br: jl Ltmp3127# FDATA: 1 main #Ltmp2_br# 1 main #Ltmp3# 0 0128# FDATA: 1 main #Ltmp2_br# 1 main #LFT4# 0 0129 130LFT4:131 movl $0xa, %edi132 callq putchar@PLT133 movsd DATAat0x401670(%rip), %xmm3134 movq %rbx, %rsi135 movsd DATAat0x401678(%rip), %xmm2136 movq %rbp, %rdi137 movsd DATAat0x401680(%rip), %xmm1138 movsd DATAat0x401658(%rip), %xmm0139 callq _Z10SolveCubicddddPiPd140 movl $0x4015d8, %edi141 xorl %eax, %eax142 callq printf@PLT143 movq %rbx, %r12144 xorl %r13d, %r13d145LFT4_br: jmp Ltmp4146# FDATA: 1 main #LFT4_br# 1 main #Ltmp4# 0 0147 148Ltmp5:149 movsd (%r12), %xmm0150 movl $0x4015e3, %edi151 movl $0x1, %eax152 callq printf@PLT153 addl $0x1, %r13d154Ltmp5_br: addq $0x8, %r12155# FDATA: 1 main #Ltmp5_br# 1 main #Ltmp4# 0 0156 157Ltmp4:158 cmpl 0x8c(%rsp), %r13d159Ltmp4_br: jl Ltmp5160# FDATA: 1 main #Ltmp4_br# 1 main #Ltmp5# 0 0161# FDATA: 1 main #Ltmp4_br# 1 main #LFT6# 0 0162 163LFT6:164 movl $0xa, %edi165LFT6_br: callq putchar@PLT166# FDATA: 1 main #LFT6_br# 1 main #Ltmp27# 0 0167 168Ltmp27:169 movsd DATAat0x401658(%rip), %xmm2170 movq %rbx, %rsi171 movsd DATAat0x401688(%rip), %xmm3172 movq %rbp, %rdi173 movsd DATAat0x401690(%rip), %xmm1174 movq %rbx, %r13175 movapd %xmm2, %xmm0176 xorl %r12d, %r12d177 callq _Z10SolveCubicddddPiPd178 movl $0x4015d8, %edi179 xorl %eax, %eax180 callq printf@PLT181Ltmp27_br: jmp Ltmp6182# FDATA: 1 main #Ltmp27_br# 1 main #Ltmp6# 0 0183 184Ltmp7:185 movsd (%r13), %xmm0186 movl $0x4015e3, %edi187 movl $0x1, %eax188 addl $0x1, %r12d189 addq $0x8, %r13190Ltmp7_br: callq printf@PLT191# FDATA: 1 main #Ltmp7_br# 1 main #Ltmp6# 0 0192 193Ltmp6:194 cmpl 0x8c(%rsp), %r12d195Ltmp6_br: jl Ltmp7196# FDATA: 1 main #Ltmp6_br# 1 main #Ltmp7# 0 0197# FDATA: 1 main #Ltmp6_br# 1 main #LFT9# 0 0198 199LFT9:200 movl $0xa, %edi201 movq %rbx, %r13202 xorl %r12d, %r12d203 callq putchar@PLT204 movsd DATAat0x401698(%rip), %xmm3205 movq %rbx, %rsi206 movsd DATAat0x4016a0(%rip), %xmm2207 movq %rbp, %rdi208 movsd DATAat0x4016a8(%rip), %xmm1209 movsd DATAat0x4016b0(%rip), %xmm0210 callq _Z10SolveCubicddddPiPd211 movl $0x4015d8, %edi212 xorl %eax, %eax213 callq printf@PLT214LFT9_br: jmp Ltmp8215# FDATA: 1 main #LFT9_br# 1 main #Ltmp8# 0 0216 217Ltmp9:218 movsd (%r13), %xmm0219 movl $0x4015e3, %edi220 movl $0x1, %eax221 addl $0x1, %r12d222 addq $0x8, %r13223Ltmp9_br: callq printf@PLT224# FDATA: 1 main #Ltmp9_br# 1 main #Ltmp8# 0 0225 226Ltmp8:227 cmpl 0x8c(%rsp), %r12d228Ltmp8_br: jl Ltmp9229# FDATA: 1 main #Ltmp8_br# 1 main #Ltmp9# 0 0230# FDATA: 1 main #Ltmp8_br# 1 main #LFT11# 0 0231 232LFT11:233 movl $0xa, %edi234 movq %rbx, %r13235 xorl %r12d, %r12d236 callq putchar@PLT237 movsd DATAat0x4016b8(%rip), %xmm3238 movq %rbx, %rsi239 movsd DATAat0x4016c0(%rip), %xmm2240 movq %rbp, %rdi241 movsd DATAat0x4016c8(%rip), %xmm1242 movsd DATAat0x4016d0(%rip), %xmm0243 callq _Z10SolveCubicddddPiPd244 movl $0x4015d8, %edi245 xorl %eax, %eax246 callq printf@PLT247LFT11_br: jmp Ltmp10248# FDATA: 1 main #LFT11_br# 1 main #Ltmp10# 0 0249 250Ltmp11:251 movsd (%r13), %xmm0252 movl $0x4015e3, %edi253 movl $0x1, %eax254 addl $0x1, %r12d255 addq $0x8, %r13256Ltmp11_br: callq printf@PLT257# FDATA: 1 main #Ltmp11_br# 1 main #Ltmp10# 0 0258 259Ltmp10:260 cmpl 0x8c(%rsp), %r12d261Ltmp10_br: jl Ltmp11262# FDATA: 1 main #Ltmp10_br# 1 main #Ltmp11# 0 0263# FDATA: 1 main #Ltmp10_br# 1 main #LFT13# 0 0264 265LFT13:266 movl $0xa, %edi267 callq putchar@PLT268 movsd DATAat0x4016d8(%rip), %xmm3269 movq %rbx, %rsi270 movsd DATAat0x4016e0(%rip), %xmm2271 movq %rbp, %rdi272 movsd DATAat0x4016e8(%rip), %xmm1273 movsd DATAat0x4016f0(%rip), %xmm0274 callq _Z10SolveCubicddddPiPd275 movl $0x4015d8, %edi276 xorl %eax, %eax277 callq printf@PLT278 movq %rbx, %r12279 xorl %r13d, %r13d280LFT13_br: jmp Ltmp12281# FDATA: 1 main #LFT13_br# 1 main #Ltmp12# 0 0282 283Ltmp13:284 movsd (%r12), %xmm0285 movl $0x4015e3, %edi286 movl $0x1, %eax287 callq printf@PLT288 addl $0x1, %r13d289Ltmp13_br: addq $0x8, %r12290# FDATA: 1 main #Ltmp13_br# 1 main #Ltmp12# 0 0291 292Ltmp12:293 cmpl 0x8c(%rsp), %r13d294Ltmp12_br: jl Ltmp13295# FDATA: 1 main #Ltmp12_br# 1 main #Ltmp13# 0 0296# FDATA: 1 main #Ltmp12_br# 1 main #LFT15# 0 0297 298LFT15:299 movl $0xa, %edi300LFT15_br: callq putchar@PLT301# FDATA: 1 main #LFT15_br# 1 main #Ltmp29# 0 0302 303Ltmp29:304 movsd DATAat0x4016f8(%rip), %xmm3305 movq %rbx, %rsi306 movsd DATAat0x401700(%rip), %xmm2307 movq %rbp, %rdi308 movsd DATAat0x401708(%rip), %xmm1309 movq %rbx, %r13310 movsd DATAat0x401710(%rip), %xmm0311 xorl %r12d, %r12d312 callq _Z10SolveCubicddddPiPd313 movl $0x4015d8, %edi314 xorl %eax, %eax315 callq printf@PLT316Ltmp29_br: jmp Ltmp14317# FDATA: 1 main #Ltmp29_br# 1 main #Ltmp14# 0 0318 319Ltmp15:320 movsd (%r13), %xmm0321 movl $0x4015e3, %edi322 movl $0x1, %eax323 addl $0x1, %r12d324 addq $0x8, %r13325Ltmp15_br: callq printf@PLT326# FDATA: 1 main #Ltmp15_br# 1 main #Ltmp14# 0 0327 328Ltmp14:329 cmpl 0x8c(%rsp), %r12d330Ltmp14_br: jl Ltmp15331# FDATA: 1 main #Ltmp14_br# 1 main #Ltmp15# 0 0332# FDATA: 1 main #Ltmp14_br# 1 main #LFT16# 0 0333 334LFT16:335 movl $0xa, %edi336 movabsq $-0x4010000000000000, %r14337 callq putchar@PLT338 movabsq $0x3ff0000000000000, %rsi339 movl $0x0, 0x5c(%rsp)340LFT16_br: movq %rsi, 0x50(%rsp)341# FDATA: 1 main #LFT16_br# 1 main #Ltmp21# 0 0342 343Ltmp21:344 movabsq $0x4024000000000000, %rax345 xorl %r15d, %r15d346Ltmp21_br: movq %rax, 0x48(%rsp)347# FDATA: 1 main #Ltmp21_br# 1 main #Ltmp20# 0 0348 349Ltmp20:350 movabsq $0x4014000000000000, %rdx351 xorl %r13d, %r13d352Ltmp20_br: movq %rdx, 0x40(%rsp)353# FDATA: 1 main #Ltmp20_br# 1 main #Ltmp19# 0 0354 355Ltmp19:356 xorl %r12d, %r12d357Ltmp19_br: movq %r14, 0x38(%rsp)358# FDATA: 1 main #Ltmp19_br# 1 main #Ltmp18# 0 0359 360Ltmp18:361 movsd 0x38(%rsp), %xmm3362 movq %rbx, %rsi363 movsd 0x40(%rsp), %xmm2364 movq %rbp, %rdi365 movsd 0x48(%rsp), %xmm1366 movsd 0x50(%rsp), %xmm0367 callq _Z10SolveCubicddddPiPd368 xorl %eax, %eax369 movl $0x4015d8, %edi370 callq printf@PLT371 movl 0x8c(%rsp), %ecx372 testl %ecx, %ecx373Ltmp18_br: jle Ltmp16374# FDATA: 1 main #Ltmp18_br# 1 main #Ltmp16# 0 0375# FDATA: 1 main #Ltmp18_br# 1 main #LFT17# 0 0376 377LFT17:378 movq %rbx, %rcx379LFT17_br: xorl %edx, %edx380# FDATA: 1 main #LFT17_br# 1 main #Ltmp17# 0 0381 382Ltmp17:383 movsd (%rcx), %xmm0384 movl $0x4015e3, %edi385 movl $0x1, %eax386 movl %edx, 0x20(%rsp)387 movq %rcx, 0x30(%rsp)388 callq printf@PLT389 movl 0x20(%rsp), %edx390 movq 0x30(%rsp), %rcx391 addl $0x1, %edx392 addq $0x8, %rcx393 cmpl %edx, 0x8c(%rsp)394Ltmp17_br: jg Ltmp17395# FDATA: 1 main #Ltmp17_br# 1 main #Ltmp17# 0 0396# FDATA: 1 main #Ltmp17_br# 1 main #Ltmp16# 0 0397 398Ltmp16:399 movl $0xa, %edi400 addl $0x1, %r12d401 callq putchar@PLT402 movsd 0x38(%rsp), %xmm0403 cmpl $0x9, %r12d404 subsd DATAat0x401718(%rip), %xmm0405 movsd %xmm0, 0x38(%rsp)406Ltmp16_br: jne Ltmp18407# FDATA: 1 main #Ltmp16_br# 1 main #Ltmp18# 0 0408# FDATA: 1 main #Ltmp16_br# 1 main #LFT18# 0 0409 410LFT18:411 movsd DATAat0x401720(%rip), %xmm0412 addl $0x1, %r13d413 cmpl $0x11, %r13d414 addsd 0x40(%rsp), %xmm0415 movsd %xmm0, 0x40(%rsp)416LFT18_br: jne Ltmp19417# FDATA: 1 main #LFT18_br# 1 main #Ltmp19# 0 0418# FDATA: 1 main #LFT18_br# 1 main #LFT19# 0 0419 420LFT19:421 movsd 0x48(%rsp), %xmm0422 addl $0x1, %r15d423 cmpl $0x28, %r15d424 subsd DATAat0x401728(%rip), %xmm0425 movsd %xmm0, 0x48(%rsp)426LFT19_br: jne Ltmp20427# FDATA: 1 main #LFT19_br# 1 main #Ltmp20# 0 0428# FDATA: 1 main #LFT19_br# 1 main #LFT20# 0 0429 430LFT20:431 movsd DATAat0x401658(%rip), %xmm0432 addl $0x1, 0x5c(%rsp)433 cmpl $0x9, 0x5c(%rsp)434 addsd 0x50(%rsp), %xmm0435 movsd %xmm0, 0x50(%rsp)436LFT20_br: jne Ltmp21437# FDATA: 1 main #LFT20_br# 1 main #Ltmp21# 0 0438# FDATA: 1 main #LFT20_br# 1 main #LFT21# 0 0439 440LFT21:441 leaq 0x80(%rsp), %r12442 movl $0x401548, %edi443 movl $0xc350, %ebp444 xorl %ebx, %ebx445LFT21_br: callq puts@PLT446# FDATA: 1 main #LFT21_br# 1 main #Ltmp22# 0 0447 448Ltmp22:449 movslq %ebx, %rdi450 movq %r12, %rsi451 callq _Z5usqrtmP8int_sqrt452 movl 0x80(%rsp), %edx453 movl %ebx, %esi454 xorl %eax, %eax455 movl $0x4015f2, %edi456 addl $0x2, %ebx457 callq printf@PLT458 subl $0x1, %ebp459Ltmp22_br: jne Ltmp22460# FDATA: 1 main #Ltmp22_br# 1 main #Ltmp22# 0 0461# FDATA: 1 main #Ltmp22_br# 1 main #LFT22# 0 0462 463LFT22:464 movl $0xa, %edi465 movl $0x3fed0169, %ebx466LFT22_br: callq putchar@PLT467# FDATA: 1 main #LFT22_br# 1 main #Ltmp23# 0 0468 469Ltmp23:470 movq %rbx, %rdi471 movq %r12, %rsi472 callq _Z5usqrtmP8int_sqrt473 movl 0x80(%rsp), %edx474 movq %rbx, %rsi475 xorl %eax, %eax476 movl $0x401603, %edi477 addq $0x1, %rbx478 callq printf@PLT479 cmpq $0x3fed4169, %rbx480Ltmp23_br: jne Ltmp23481# FDATA: 1 main #Ltmp23_br# 1 main #Ltmp23# 0 0482# FDATA: 1 main #Ltmp23_br# 1 main #LFT23# 0 0483 484LFT23:485 movl $0x401570, %edi486 xorl %ebx, %ebx487 callq puts@PLT488 movq %rbx, 0x8(%rsp)489 movsd DATAat0x401748(%rip), %xmm3490LFT23_br: movsd 0x8(%rsp), %xmm2491# FDATA: 1 main #LFT23_br# 1 main #Ltmp24# 0 0492 493Ltmp24:494 movsd DATAat0x401730(%rip), %xmm1495 movl $0x401598, %edi496 movapd %xmm2, %xmm0497 movl $0x2, %eax498 mulsd %xmm2, %xmm1499 movsd %xmm2, 0x20(%rsp)500 movsd %xmm3, 0x10(%rsp)501 divsd DATAat0x401738(%rip), %xmm1502 callq printf@PLT503 movsd 0x20(%rsp), %xmm2504 movsd 0x10(%rsp), %xmm3505 addsd DATAat0x401740(%rip), %xmm2506 ucomisd %xmm2, %xmm3507Ltmp24_br: jae Ltmp24508# FDATA: 1 main #Ltmp24_br# 1 main #Ltmp24# 0 0509# FDATA: 1 main #Ltmp24_br# 1 main #LFT24# 0 0510 511LFT24:512 movl $0x401612, %edi513 callq puts@PLT514 movq %rbx, 0x8(%rsp)515 movsd DATAat0x401758(%rip), %xmm3516LFT24_br: movsd 0x8(%rsp), %xmm2517# FDATA: 1 main #LFT24_br# 1 main #Ltmp25# 0 0518 519Ltmp25:520 movsd DATAat0x401738(%rip), %xmm1521 movl $0x4015b8, %edi522 movapd %xmm2, %xmm0523 movl $0x2, %eax524 mulsd %xmm2, %xmm1525 movsd %xmm2, 0x20(%rsp)526 movsd %xmm3, 0x10(%rsp)527 divsd DATAat0x401730(%rip), %xmm1528 callq printf@PLT529 movsd 0x20(%rsp), %xmm2530 movsd 0x10(%rsp), %xmm3531 addsd DATAat0x401750(%rip), %xmm2532 ucomisd %xmm2, %xmm3533Ltmp25_br: jae Ltmp25534# FDATA: 1 main #Ltmp25_br# 1 main #Ltmp25# 0 0535# FDATA: 1 main #Ltmp25_br# 1 main #LFT25# 0 0536 537LFT25:538 addq $0x98, %rsp539 .cfi_def_cfa_offset 56540 xorl %eax, %eax541 popq %rbx542 .cfi_def_cfa_offset 48543 popq %rbp544 .cfi_def_cfa_offset 40545 popq %r12546 .cfi_def_cfa_offset 32547 popq %r13548 .cfi_def_cfa_offset 24549 popq %r14550 .cfi_def_cfa_offset 16551 popq %r15552 .cfi_def_cfa_offset 8553 retq554 .cfi_def_cfa %rsp, 208555 556LLP0:557 cmpq $0x1, %rdx558 movq %rax, %rdi559LLP0_br: je Ltmp26560# FDATA: 1 main #LLP0_br# 1 main #Ltmp26# 0 0561# FDATA: 1 main #LLP0_br# 1 main #Ltmp28# 0 0562 563Ltmp28:564Ltmp28_br: callq _Unwind_Resume@PLT565# FDATA: 1 main #Ltmp28_br# 1 main #Ltmp26# 0 0566 567Ltmp26:568 callq __cxa_begin_catch@PLT569 movl $0x4015e7, %edi570 callq puts@PLT571 callq __cxa_end_catch@PLT572Ltmp26_br: jmp Ltmp27573# FDATA: 1 main #Ltmp26_br# 1 main #Ltmp27# 0 0574 575Ltmp30:576 movq %rax, 0x30(%rsp)577 callq __cxa_end_catch@PLT578 movq 0x30(%rsp), %rdi579Ltmp30_br: jmp Ltmp28580# FDATA: 1 main #Ltmp30_br# 1 main #Ltmp28# 0 0581 582LLP1:583 cmpq $0x1, %rdx584 movq %rax, %rdi585LLP1_br: jne Ltmp28586# FDATA: 1 main #LLP1_br# 1 main #Ltmp28# 0 0587# FDATA: 1 main #LLP1_br# 1 main #LFT26# 0 0588 589LFT26:590 callq __cxa_begin_catch@PLT591 movl $0x4015e7, %edi592 callq puts@PLT593 callq __cxa_end_catch@PLT594LFT26_br: jmp Ltmp29595# FDATA: 1 main #LFT26_br# 1 main #Ltmp29# 0 0596 597LLP2:598LLP2_br: jmp Ltmp30599# FDATA: 1 main #LLP2_br# 1 main #Ltmp30# 0 0600 601 .cfi_endproc602.size main, .-main603 604.section .rodata605"DATAat0x401738":606"DATAat0x401748":607"DATAat0x401728":608"DATAat0x401718":609"DATAat0x4016f8":610"DATAat0x401690":611"DATAat0x401668":612"DATAat0x401650":613"DATAat0x401700":614"DATAat0x401698":615"DATAat0x401688":616"DATAat0x401648":617"DATAat0x401680":618"DATAat0x4016c8":619"DATAat0x401750":620"DATAat0x401678":621"DATAat0x4016c0":622"DATAat0x401758":623"DATAat0x401660":624"DATAat0x4016b0":625"DATAat0x401640":626"DATAat0x401658":627"DATAat0x401720":628"DATAat0x4016f0":629"DATAat0x401710":630"DATAat0x4016a8":631"DATAat0x401730":632"DATAat0x4016b8":633"DATAat0x401708":634"DATAat0x401670":635"DATAat0x4016a0":636"DATAat0x4016d0":637"DATAat0x4016d8":638"DATAat0x4016e0":639"DATAat0x401740":640"DATAat0x4016e8":641 .text642 .globl _Z10SolveCubicddddPiPd643 .type _Z10SolveCubicddddPiPd, %function644_Z10SolveCubicddddPiPd:645# FDATA: 0 [unknown] 0 1 _Z10SolveCubicddddPiPd 0 0 57646 .cfi_startproc647LBB01:648 divsd %xmm0, %xmm1649 pushq %rbx650 .cfi_def_cfa_offset 16651 .cfi_offset %rbx, -16652 movq %rsi, %rbx653 subq $0x70, %rsp654 .cfi_def_cfa_offset 128655 divsd %xmm0, %xmm2656 movsd %xmm1, 0x48(%rsp)657 fldl 0x48(%rsp)658 divsd %xmm0, %xmm3659 movsd %xmm2, 0x48(%rsp)660 fldl 0x48(%rsp)661 fld %st(1)662 fmul %st(2), %st663 movsd %xmm3, 0x48(%rsp)664 fld %st(1)665 fmuls DATAat0x401760(%rip)666 faddp %st, %st(1)667 fdivs DATAat0x401764(%rip)668 fld %st(2)669 fadd %st(3), %st670 fmul %st(3), %st671 fmul %st(3), %st672 fld %st(3)673 fmuls DATAat0x401768(%rip)674 fmulp %st, %st(3)675 faddp %st, %st(2)676 flds DATAat0x40176c(%rip)677 fmull 0x48(%rsp)678 faddp %st, %st(2)679 fxch %st(1)680 fdivs DATAat0x401770(%rip)681 fld %st(1)682 fmul %st(2), %st683 fmul %st(2), %st684 fld %st(1)685 fmul %st(2), %st686 fsub %st(1), %st687 fstpl 0x68(%rsp)688 movsd 0x68(%rsp), %xmm0689 ucomisd DATAat0x401778(%rip), %xmm0690LBB01_br: jbe Ltmp31691# FDATA: 1 _Z10SolveCubicddddPiPd #LBB01_br# 1 _Z10SolveCubicddddPiPd #Ltmp31# 0 0692# FDATA: 1 _Z10SolveCubicddddPiPd #LBB01_br# 1 _Z10SolveCubicddddPiPd #LFT1# 0 0693 694LFT1:695 fstp %st(0)696LFT1_br: jmp Ltmp32697# FDATA: 1 _Z10SolveCubicddddPiPd #LFT1_br# 1 _Z10SolveCubicddddPiPd #Ltmp32# 0 0698 699Ltmp37:700Ltmp37_br: fstp %st(0)701# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp37_br# 1 _Z10SolveCubicddddPiPd #Ltmp32# 0 0702 703Ltmp32:704 sqrtsd %xmm0, %xmm1705 movl $0x1, (%rdi)706 ucomisd %xmm1, %xmm1707Ltmp32_br: jp Ltmp33708# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp32_br# 1 _Z10SolveCubicddddPiPd #Ltmp33# 0 0709# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp32_br# 1 _Z10SolveCubicddddPiPd #LFT3# 0 0710 711LFT3:712LFT3_br: jne Ltmp33713# FDATA: 1 _Z10SolveCubicddddPiPd #LFT3_br# 1 _Z10SolveCubicddddPiPd #Ltmp33# 0 0714# FDATA: 1 _Z10SolveCubicddddPiPd #LFT3_br# 1 _Z10SolveCubicddddPiPd #Ltmp36# 0 0715 716Ltmp36:717 fstl 0x68(%rsp)718 movsd DATAat0x4017b0(%rip), %xmm2719 fstpt 0x30(%rsp)720 fxch %st(1)721 movsd 0x68(%rsp), %xmm0722 fstpt 0x10(%rsp)723 andpd %xmm2, %xmm0724 fstpt 0x20(%rsp)725 addsd %xmm1, %xmm0726 movsd DATAat0x401798(%rip), %xmm1727 callq pow@PLT728 movsd %xmm0, 0x8(%rsp)729 fldl 0x8(%rsp)730 fldz731 fldt 0x30(%rsp)732 fxch %st(1)733 fucompi %st(1), %st734 fstp %st(0)735 fldt 0x10(%rsp)736 fldt 0x20(%rsp)737Ltmp36_br: ja Ltmp34738# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp36_br# 1 _Z10SolveCubicddddPiPd #Ltmp34# 0 0739# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp36_br# 1 _Z10SolveCubicddddPiPd #LFT5# 0 0740 741LFT5:742LFT5_br: movsd DATAat0x4017a0(%rip), %xmm1743# FDATA: 1 _Z10SolveCubicddddPiPd #LFT5_br# 1 _Z10SolveCubicddddPiPd #Ltmp35# 0 0744 745Ltmp35:746 fdiv %st(2), %st747 faddp %st, %st(2)748 fxch %st(1)749 fstpl 0x68(%rsp)750 fdivs DATAat0x401760(%rip)751 movsd 0x68(%rsp), %xmm0752 mulsd %xmm1, %xmm0753 movsd %xmm0, 0x8(%rsp)754 fldl 0x8(%rsp)755 faddp %st, %st(1)756 fstpl (%rbx)757 addq $0x70, %rsp758 .cfi_def_cfa_offset 16759 popq %rbx760 .cfi_def_cfa_offset 8761 retq762 .cfi_def_cfa %rsp, 128763 764Ltmp34:765 movsd DATAat0x401658(%rip), %xmm1766Ltmp34_br: jmp Ltmp35767# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp34_br# 1 _Z10SolveCubicddddPiPd #Ltmp35# 0 0768 769Ltmp33:770 fstpt 0x30(%rsp)771 fxch %st(1)772 fstpt 0x10(%rsp)773 fstpt 0x20(%rsp)774 callq sqrt@PLT775 movapd %xmm0, %xmm1776 fldt 0x20(%rsp)777 fldt 0x10(%rsp)778 fldt 0x30(%rsp)779 fxch %st(1)780 fxch %st(2)781 fxch %st(1)782Ltmp33_br: jmp Ltmp36783# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp33_br# 1 _Z10SolveCubicddddPiPd #Ltmp36# 0 0784 785Ltmp31:786Ltmp31_br: jp Ltmp37787# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp31_br# 1 _Z10SolveCubicddddPiPd #Ltmp37# 0 0788# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp31_br# 1 _Z10SolveCubicddddPiPd #LFT7# 0 0789 790LFT7:791 fstpl 0x68(%rsp)792 movl $0x3, (%rdi)793 movsd 0x68(%rsp), %xmm1794 sqrtsd %xmm1, %xmm0795 ucomisd %xmm0, %xmm0796LFT7_br: jp Ltmp38797# FDATA: 1 _Z10SolveCubicddddPiPd #LFT7_br# 1 _Z10SolveCubicddddPiPd #Ltmp38# 0 0798# FDATA: 1 _Z10SolveCubicddddPiPd #LFT7_br# 1 _Z10SolveCubicddddPiPd #LFT8# 0 0799 800LFT8:801LFT8_br: jne Ltmp38802# FDATA: 1 _Z10SolveCubicddddPiPd #LFT8_br# 1 _Z10SolveCubicddddPiPd #Ltmp38# 0 0803# FDATA: 1 _Z10SolveCubicddddPiPd #LFT8_br# 1 _Z10SolveCubicddddPiPd #Ltmp47# 0 0804 805Ltmp47:806 movsd %xmm0, 0x8(%rsp)807 fldl 0x8(%rsp)808 fdivrp %st, %st(1)809 fstpl 0x68(%rsp)810 fxch %st(1)811 fstpt 0x10(%rsp)812 movsd 0x68(%rsp), %xmm0813 fstpt 0x20(%rsp)814 callq acos@PLT815 movsd %xmm0, 0x48(%rsp)816 fldt 0x20(%rsp)817 fstpl 0x60(%rsp)818 sqrtsd 0x60(%rsp), %xmm1819 movapd %xmm1, %xmm2820 ucomisd %xmm1, %xmm1821 fldt 0x10(%rsp)822Ltmp47_br: jp Ltmp39823# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp47_br# 1 _Z10SolveCubicddddPiPd #Ltmp39# 0 0824# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp47_br# 1 _Z10SolveCubicddddPiPd #LFT10# 0 0825 826LFT10:827LFT10_br: jne Ltmp40828# FDATA: 1 _Z10SolveCubicddddPiPd #LFT10_br# 1 _Z10SolveCubicddddPiPd #Ltmp40# 0 0829# FDATA: 1 _Z10SolveCubicddddPiPd #LFT10_br# 1 _Z10SolveCubicddddPiPd #Ltmp46# 0 0830 831Ltmp46:832 divsd DATAat0x4016b0(%rip), %xmm0833 movsd %xmm1, 0x20(%rsp)834 movsd %xmm2, 0x30(%rsp)835 fstpt 0x10(%rsp)836 callq cos@PLT837 movsd 0x30(%rsp), %xmm2838 movsd 0x20(%rsp), %xmm1839 fldt 0x10(%rsp)840 ucomisd %xmm1, %xmm1841 mulsd DATAat0x401780(%rip), %xmm2842 fdivs DATAat0x401760(%rip)843 mulsd %xmm0, %xmm2844 movsd %xmm2, 0x8(%rsp)845 movapd %xmm1, %xmm2846 fld %st(0)847 fstpt 0x50(%rsp)848 fldl 0x8(%rsp)849 faddp %st, %st(1)850 fstpl (%rbx)851Ltmp46_br: jp Ltmp41852# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp46_br# 1 _Z10SolveCubicddddPiPd #Ltmp41# 0 0853# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp46_br# 1 _Z10SolveCubicddddPiPd #LFT12# 0 0854 855LFT12:856LFT12_br: jne Ltmp41857# FDATA: 1 _Z10SolveCubicddddPiPd #LFT12_br# 1 _Z10SolveCubicddddPiPd #Ltmp41# 0 0858# FDATA: 1 _Z10SolveCubicddddPiPd #LFT12_br# 1 _Z10SolveCubicddddPiPd #Ltmp44# 0 0859 860Ltmp44:861 movsd 0x48(%rsp), %xmm0862 movsd %xmm1, 0x20(%rsp)863 addsd DATAat0x401788(%rip), %xmm0864 movsd %xmm2, 0x30(%rsp)865 divsd DATAat0x4016b0(%rip), %xmm0866 callq cos@PLT867 movsd 0x30(%rsp), %xmm2868 fldt 0x50(%rsp)869 mulsd DATAat0x401780(%rip), %xmm2870 movsd 0x20(%rsp), %xmm1871 ucomisd %xmm1, %xmm1872 mulsd %xmm0, %xmm2873 movsd %xmm2, 0x8(%rsp)874 fldl 0x8(%rsp)875 faddp %st, %st(1)876 fstpl 0x8(%rbx)877Ltmp44_br: jp Ltmp42878# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp44_br# 1 _Z10SolveCubicddddPiPd #Ltmp42# 0 0879# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp44_br# 1 _Z10SolveCubicddddPiPd #LFT14# 0 0880 881LFT14:882LFT14_br: jne Ltmp42883# FDATA: 1 _Z10SolveCubicddddPiPd #LFT14_br# 1 _Z10SolveCubicddddPiPd #Ltmp42# 0 0884# FDATA: 1 _Z10SolveCubicddddPiPd #LFT14_br# 1 _Z10SolveCubicddddPiPd #Ltmp43# 0 0885 886Ltmp43:887 movsd 0x48(%rsp), %xmm0888 movsd %xmm1, 0x20(%rsp)889 addsd DATAat0x401790(%rip), %xmm0890 divsd DATAat0x4016b0(%rip), %xmm0891 callq cos@PLT892 fldt 0x50(%rsp)893 movsd DATAat0x401780(%rip), %xmm2894 movsd 0x20(%rsp), %xmm1895 mulsd %xmm1, %xmm2896 mulsd %xmm0, %xmm2897 movsd %xmm2, 0x8(%rsp)898 fldl 0x8(%rsp)899 faddp %st, %st(1)900 fstpl 0x10(%rbx)901 addq $0x70, %rsp902 .cfi_def_cfa_offset 16903 popq %rbx904 .cfi_def_cfa_offset 8905 retq906 .cfi_def_cfa %rsp, 128907 908Ltmp42:909 movsd 0x60(%rsp), %xmm0910 callq sqrt@PLT911 movapd %xmm0, %xmm1912Ltmp42_br: jmp Ltmp43913# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp42_br# 1 _Z10SolveCubicddddPiPd #Ltmp43# 0 0914 915Ltmp41:916 movsd 0x60(%rsp), %xmm0917 callq sqrt@PLT918 movsd 0x20(%rsp), %xmm1919 movapd %xmm0, %xmm2920Ltmp41_br: jmp Ltmp44921# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp41_br# 1 _Z10SolveCubicddddPiPd #Ltmp44# 0 0922 923Ltmp39:924 fstp %st(0)925Ltmp39_br: jmp Ltmp45926# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp39_br# 1 _Z10SolveCubicddddPiPd #Ltmp45# 0 0927 928Ltmp40:929Ltmp40_br: fstp %st(0)930# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp40_br# 1 _Z10SolveCubicddddPiPd #Ltmp45# 0 0931 932Ltmp45:933 movsd 0x60(%rsp), %xmm0934 movsd %xmm1, 0x20(%rsp)935 callq sqrt@PLT936 movsd 0x20(%rsp), %xmm1937 movapd %xmm0, %xmm2938 movsd 0x48(%rsp), %xmm0939 fldt 0x10(%rsp)940Ltmp45_br: jmp Ltmp46941# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp45_br# 1 _Z10SolveCubicddddPiPd #Ltmp46# 0 0942 943Ltmp38:944 fstpt 0x30(%rsp)945 fxch %st(1)946 movapd %xmm1, %xmm0947 fstpt 0x10(%rsp)948 fstpt 0x20(%rsp)949 callq sqrt@PLT950 fldt 0x20(%rsp)951 fldt 0x10(%rsp)952 fldt 0x30(%rsp)953 fxch %st(1)954 fxch %st(2)955 fxch %st(1)956Ltmp38_br: jmp Ltmp47957# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp38_br# 1 _Z10SolveCubicddddPiPd #Ltmp47# 0 0958 959 .cfi_endproc960.size _Z10SolveCubicddddPiPd, .-_Z10SolveCubicddddPiPd961.section .rodata962"DATAat0x401788":963"DATAat0x401790":964"DATAat0x401780":965"DATAat0x401770":966"DATAat0x40176c":967"DATAat0x401760":968"DATAat0x401768":969"DATAat0x401778":970"DATAat0x401764":971"DATAat0x401798":972"DATAat0x4017b0":973"DATAat0x4017a0":974 975 .text976 .globl _Z5usqrtmP8int_sqrt977 .type _Z5usqrtmP8int_sqrt, %function978_Z5usqrtmP8int_sqrt:979# FDATA: 0 [unknown] 0 1 _Z5usqrtmP8int_sqrt 0 0 6980 .cfi_startproc981LBB02:982 xorl %r9d, %r9d983 xorl %eax, %eax984LBB02_br: xorl %ecx, %ecx985# FDATA: 1 _Z5usqrtmP8int_sqrt #LBB02_br# 1 _Z5usqrtmP8int_sqrt #Ltmp48# 0 0986 987Ltmp48:988 movq %rdi, %rdx989 leaq (%rax,%rax), %r10990 leaq 0x1(,%rax,4), %r8991 andl $0xc0000000, %edx992 shlq $0x2, %rdi993 shrq $0x1e, %rdx994 leaq 0x1(%r10), %rax995 leaq (%rdx,%rcx,4), %rdx996 movq %rdx, %rcx997 subq %r8, %rcx998 cmpq %r8, %rdx999 cmovbq %rdx, %rcx1000 cmovbq %r10, %rax1001 addl $0x1, %r9d1002 cmpl $0x20, %r9d1003Ltmp48_br: jne Ltmp481004# FDATA: 1 _Z5usqrtmP8int_sqrt #Ltmp48_br# 1 _Z5usqrtmP8int_sqrt #Ltmp48# 0 01005# FDATA: 1 _Z5usqrtmP8int_sqrt #Ltmp48_br# 1 _Z5usqrtmP8int_sqrt #LFT0# 0 01006 1007LFT0:1008 movq %rax, (%rsi)1009 retq1010 1011 .cfi_endproc1012.size _Z5usqrtmP8int_sqrt, .-_Z5usqrtmP8int_sqrt1013