(lldb) pro lau
Process 25418 launched: '/Users/julien/Software/test_floatingpointexceptions_cpp/mcve/test' (arm64)
ori_fpcr=0, new_fpcr=1792
std::fmod(simTimeInDays, numDays) = 46
Process 25418 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_INSTRUCTION (code=1, subcode=0x1e642863)
frame #0: 0x000000018c1f29ec libsystem_m.dylib`remainder + 160
libsystem_m.dylib`remainder:
-> 0x18c1f29ec <+160>: fadd d3, d3, d4
0x18c1f29f0 <+164>: fmov x10, d3
0x18c1f29f4 <+168>: lsr x10, x10, #52
0x18c1f29f8 <+172>: sub w10, w10, #0x7fd
Target 0: (test) stopped.
(lldb) disassemble --frame
libsystem_m.dylib`remainder:
0x18c1f294c <+0>: fcmp d0, d0
0x18c1f2950 <+4>: fccmp d1, d1, #0x1, vc
0x18c1f2954 <+8>: b.vc 0x18c1f2960 ; <+20>
0x18c1f2958 <+12>: fadd d0, d0, d1
0x18c1f295c <+16>: ret
0x18c1f2960 <+20>: fabs d2, d0
0x18c1f2964 <+24>: mov x8, #0x7ff0000000000000
0x18c1f2968 <+28>: fmov d3, x8
0x18c1f296c <+32>: fcmp d2, d3
0x18c1f2970 <+36>: b.eq 0x18c1f2a6c ; <+288>
0x18c1f2974 <+40>: fcmp d1, #0.0
0x18c1f2978 <+44>: b.eq 0x18c1f2a6c ; <+288>
0x18c1f297c <+48>: fabs d1, d1
0x18c1f2980 <+52>: mov x8, #0x7ff0000000000000
0x18c1f2984 <+56>: fmov d3, x8
0x18c1f2988 <+60>: fcmp d1, d3
0x18c1f298c <+64>: b.eq 0x18c1f2be8 ; <+668>
0x18c1f2990 <+68>: fcmp d0, #0.0
0x18c1f2994 <+72>: b.eq 0x18c1f2be8 ; <+668>
0x18c1f2998 <+76>: fmov x8, d2
0x18c1f299c <+80>: and x9, x8, #0x7fffffffffffffff
0x18c1f29a0 <+84>: ubfx x8, x8, #52, #11
0x18c1f29a4 <+88>: sub w10, w8, #0x1
0x18c1f29a8 <+92>: sub w8, w8, #0x3ff
0x18c1f29ac <+96>: orr x9, x9, #0x3ff0000000000000
0x18c1f29b0 <+100>: fmov d3, x9
0x18c1f29b4 <+104>: fmov d4, #-1.00000000
0x18c1f29b8 <+108>: fadd d3, d3, d4
0x18c1f29bc <+112>: fmov x9, d3
0x18c1f29c0 <+116>: lsr x9, x9, #52
0x18c1f29c4 <+120>: sub w9, w9, #0x7fd
0x18c1f29c8 <+124>: cmp w10, #0x7fe
0x18c1f29cc <+128>: csel w9, w8, w9, lo
0x18c1f29d0 <+132>: fmov x8, d1
0x18c1f29d4 <+136>: and x10, x8, #0x7fffffffffffffff
0x18c1f29d8 <+140>: ubfx x8, x8, #52, #11
0x18c1f29dc <+144>: sub w11, w8, #0x1
0x18c1f29e0 <+148>: sub w8, w8, #0x3ff
0x18c1f29e4 <+152>: orr x10, x10, #0x3ff0000000000000
0x18c1f29e8 <+156>: fmov d3, x10
-> 0x18c1f29ec <+160>: fadd d3, d3, d4
0x18c1f29f0 <+164>: fmov x10, d3
0x18c1f29f4 <+168>: lsr x10, x10, #52
0x18c1f29f8 <+172>: sub w10, w10, #0x7fd
0x18c1f29fc <+176>: cmp w11, #0x7fe
0x18c1f2a00 <+180>: csel w8, w8, w10, lo
0x18c1f2a04 <+184>: subs w10, w9, w8
0x18c1f2a08 <+188>: b.mi 0x18c1f2a80 ; <+308>
0x18c1f2a0c <+192>: cbz w10, 0x18c1f2b88 ; <+572>
0x18c1f2a10 <+196>: negs w10, w8
0x18c1f2a14 <+200>: cneg w11, w8, pl
0x18c1f2a18 <+204>: cmp w11, #0x3ff
0x18c1f2a1c <+208>: b.lo 0x18c1f2a88 ; <+316>
0x18c1f2a20 <+212>: asr w11, w10, #31
0x18c1f2a24 <+216>: eor w12, w11, #0x3fe
0x18c1f2a28 <+220>: sub w11, w12, w11
0x18c1f2a2c <+224>: add w12, w11, #0x3ff
0x18c1f2a30 <+228>: lsl x12, x12, #52
0x18c1f2a34 <+232>: fmov d4, x12
0x18c1f2a38 <+236>: fmov d3, d1
0x18c1f2a3c <+240>: cmp w8, #0x0
0x18c1f2a40 <+244>: b.le 0x18c1f2a58 ; <+268>
0x18c1f2a44 <+248>: fmul d3, d3, d4
0x18c1f2a48 <+252>: sub w10, w10, w11
0x18c1f2a4c <+256>: cmn w10, #0x3fe
0x18c1f2a50 <+260>: b.lt 0x18c1f2a44 ; <+248>
0x18c1f2a54 <+264>: b 0x18c1f2a8c ; <+320>
0x18c1f2a58 <+268>: fmul d3, d3, d4
0x18c1f2a5c <+272>: sub w10, w10, w11
0x18c1f2a60 <+276>: cmp w10, #0x3fe
0x18c1f2a64 <+280>: b.gt 0x18c1f2a58 ; <+268>
0x18c1f2a68 <+284>: b 0x18c1f2a8c ; <+320>
0x18c1f2a6c <+288>: adrp x8, 14
0x18c1f2a70 <+292>: ldr d0, [x8, #0x8f0]
0x18c1f2a74 <+296>: ldr d1, [x8, #0x8f0]
0x18c1f2a78 <+300>: fsub d0, d0, d1
0x18c1f2a7c <+304>: ret
0x18c1f2a80 <+308>: mov w8, #0x0
0x18c1f2a84 <+312>: b 0x18c1f2b9c ; <+592>
0x18c1f2a88 <+316>: fmov d3, d1
0x18c1f2a8c <+320>: mov x11, #0x3ff0000000000000
0x18c1f2a90 <+324>: add x10, x11, x10, lsl #52
0x18c1f2a94 <+328>: fmov d4, x10
0x18c1f2a98 <+332>: negs w12, w9
0x18c1f2a9c <+336>: cneg w10, w9, pl
0x18c1f2aa0 <+340>: cmp w10, #0x3ff
0x18c1f2aa4 <+344>: b.lo 0x18c1f2aec ; <+416>
0x18c1f2aa8 <+348>: asr w10, w12, #31
0x18c1f2aac <+352>: eor w13, w10, #0x3fe
0x18c1f2ab0 <+356>: sub w10, w13, w10
0x18c1f2ab4 <+360>: add w13, w10, #0x3ff
0x18c1f2ab8 <+364>: lsl x13, x13, #52
0x18c1f2abc <+368>: fmov d5, x13
0x18c1f2ac0 <+372>: cmp w9, #0x0
0x18c1f2ac4 <+376>: b.le 0x18c1f2adc ; <+400>
0x18c1f2ac8 <+380>: fmul d2, d2, d5
0x18c1f2acc <+384>: sub w12, w12, w10
0x18c1f2ad0 <+388>: cmn w12, #0x3fe
0x18c1f2ad4 <+392>: b.lt 0x18c1f2ac8 ; <+380>
0x18c1f2ad8 <+396>: b 0x18c1f2aec ; <+416>
0x18c1f2adc <+400>: fmul d2, d2, d5
0x18c1f2ae0 <+404>: sub w12, w12, w10
0x18c1f2ae4 <+408>: cmp w12, #0x3fe
0x18c1f2ae8 <+412>: b.gt 0x18c1f2adc ; <+400>
0x18c1f2aec <+416>: mov w10, #0x0
0x18c1f2af0 <+420>: fmul d3, d3, d4
0x18c1f2af4 <+424>: add x11, x11, x12, lsl #52
0x18c1f2af8 <+428>: fmov d4, x11
0x18c1f2afc <+432>: fmul d2, d2, d4
0x18c1f2b00 <+436>: fcmp d2, d3
0x18c1f2b04 <+440>: cset w11, ge
0x18c1f2b08 <+444>: fsub d4, d2, d3
0x18c1f2b0c <+448>: orr w10, w10, w11
0x18c1f2b10 <+452>: fcsel d2, d2, d4, lt
0x18c1f2b14 <+456>: lsl w10, w10, #1
0x18c1f2b18 <+460>: fadd d2, d2, d2
0x18c1f2b1c <+464>: sub w9, w9, #0x1
0x18c1f2b20 <+468>: cmp w8, w9
0x18c1f2b24 <+472>: b.ne 0x18c1f2b00 ; <+436>
0x18c1f2b28 <+476>: cmp w8, #0x0
0x18c1f2b2c <+480>: cneg w9, w8, mi
0x18c1f2b30 <+484>: cmp w9, #0x3ff
0x18c1f2b34 <+488>: b.lo 0x18c1f2b78 ; <+556>
0x18c1f2b38 <+492>: asr w9, w8, #31
0x18c1f2b3c <+496>: eor w11, w9, #0x3fe
0x18c1f2b40 <+500>: sub w9, w11, w9
0x18c1f2b44 <+504>: add w11, w9, #0x3ff
0x18c1f2b48 <+508>: lsl x11, x11, #52
0x18c1f2b4c <+512>: fmov d3, x11
0x18c1f2b50 <+516>: tbnz w8, #0x1f, 0x18c1f2b68 ; <+540>
0x18c1f2b54 <+520>: fmul d2, d2, d3
0x18c1f2b58 <+524>: sub w8, w8, w9
0x18c1f2b5c <+528>: cmp w8, #0x3fe
0x18c1f2b60 <+532>: b.gt 0x18c1f2b54 ; <+520>
0x18c1f2b64 <+536>: b 0x18c1f2b78 ; <+556>
0x18c1f2b68 <+540>: fmul d2, d2, d3
0x18c1f2b6c <+544>: sub w8, w8, w9
0x18c1f2b70 <+548>: cmn w8, #0x3fe
0x18c1f2b74 <+552>: b.lt 0x18c1f2b68 ; <+540>
0x18c1f2b78 <+556>: mov x9, #0x3ff0000000000000
0x18c1f2b7c <+560>: add x8, x9, x8, lsl #52
0x18c1f2b80 <+564>: fmov d3, x8
0x18c1f2b84 <+568>: fmul d2, d2, d3
0x18c1f2b88 <+572>: fcmp d2, d1
0x18c1f2b8c <+576>: cset w8, ge
0x18c1f2b90 <+580>: fsub d3, d2, d1
0x18c1f2b94 <+584>: orr w8, w10, w8
0x18c1f2b98 <+588>: fcsel d2, d2, d3, lt
0x18c1f2b9c <+592>: mov x9, #0x7fd0000000000000
0x18c1f2ba0 <+596>: fmov d3, x9
0x18c1f2ba4 <+600>: fcmp d2, d3
0x18c1f2ba8 <+604>: b.pl 0x18c1f2bbc ; <+624>
0x18c1f2bac <+608>: fadd d3, d2, d2
0x18c1f2bb0 <+612>: fcmp d3, d1
0x18c1f2bb4 <+616>: b.le 0x18c1f2bcc ; <+640>
0x18c1f2bb8 <+620>: b 0x18c1f2bd8 ; <+652>
0x18c1f2bbc <+624>: fmov d3, #0.50000000
0x18c1f2bc0 <+628>: fmul d3, d1, d3
0x18c1f2bc4 <+632>: fcmp d2, d3
0x18c1f2bc8 <+636>: b.gt 0x18c1f2bd8 ; <+652>
0x18c1f2bcc <+640>: cset w9, eq
0x18c1f2bd0 <+644>: tst w8, w9
0x18c1f2bd4 <+648>: b.eq 0x18c1f2bdc ; <+656>
0x18c1f2bd8 <+652>: fsub d2, d2, d1
0x18c1f2bdc <+656>: fneg d1, d2
0x18c1f2be0 <+660>: fcmp d0, #0.0
0x18c1f2be4 <+664>: fcsel d0, d1, d2, mi
0x18c1f2be8 <+668>: ret
(lldb) register read d0 d1 d2 d3 x8 x9 w10 w8
d0 = 411
d1 = 365
d2 = 411
d3 = nan
x8 = 0x0000000000000008
x9 = 0x0000000000000008
w10 = 0x00000000
w8 = 0x00000008