VirtualBox

Ignore:
Timestamp:
Aug 15, 2022 11:12:09 AM (3 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
153027
Message:

IPRT/nocrt: fabs[f] tests and 64-bit code improvements. bugref:10261

Location:
trunk/src/VBox/Runtime/common/math
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/common/math/fabs.asm

    r96014 r96216  
    2525;
    2626
     27
     28%define RT_ASM_WITH_SEH64
    2729%include "iprt/asmdefs.mac"
     30
    2831
    2932BEGINCODE
     
    3437; @param    rd      32-bit: [ebp + 8]   64-bit: xmm0
    3538RT_NOCRT_BEGINPROC fabs
    36     push    xBP
    37     mov     xBP, xSP
     39        push    xBP
     40        SEH64_PUSH_xBP
     41        mov     xBP, xSP
     42        SEH64_SET_FRAME_xBP 0
     43        SEH64_END_PROLOGUE
    3844
    3945%ifdef RT_ARCH_AMD64
    40     sub     xSP, 10h
    41 
    42     movsd   [xSP], xmm0
    43     fld     qword [xSP]
    44 
    45     fabs
    46 
    47     fstp    qword [xSP]
    48     movsd   xmm0, [xSP]
    49 
     46        andps   xmm0, [g_r64ClearSignMask xWrtRIP]
    5047%else
    51     fld     qword [xBP + xCB*2]
    52     fabs
     48        fld     qword [xBP + xCB*2]     ; This turns SNaN into QNaN.
     49        fabs
    5350%endif
    5451
    55     leave
    56     ret
     52        leave
     53        ret
    5754ENDPROC   RT_NOCRT(fabs)
    5855
     56ALIGNCODE(16)
     57g_r64ClearSignMask:
     58        dd      0ffffffffh
     59        dd      07fffffffh
     60
     61        dd      0ffffffffh
     62        dd      07fffffffh
     63
  • trunk/src/VBox/Runtime/common/math/fabsf.asm

    r96014 r96216  
    2525;
    2626
     27
     28%define RT_ASM_WITH_SEH64
    2729%include "iprt/asmdefs.mac"
     30
    2831
    2932BEGINCODE
     
    3437; @param    rf      32-bit: [ebp + 8]   64-bit: xmm0
    3538RT_NOCRT_BEGINPROC fabsf
    36     push    xBP
    37     mov     xBP, xSP
     39        push    xBP
     40        SEH64_PUSH_xBP
     41        mov     xBP, xSP
     42        SEH64_SET_FRAME_xBP 0
     43        SEH64_END_PROLOGUE
    3844
    3945%ifdef RT_ARCH_AMD64
    40     sub     xSP, 10h
    41 
    42     movsd   [xSP], xmm0
    43     fld     dword [xSP]
    44 
    45     fabs
    46 
    47     fstp    dword [xSP]
    48     movsd   xmm0, [xSP]
    49 
     46        andps   xmm0, [g_r32ClearSignMask xWrtRIP]
    5047%else
    51     fld     dword [xBP + xCB*2]
    52     fabs
     48        fld     dword [xBP + xCB*2]     ; This turns SNaN into QNaN.
     49        fabs
    5350%endif
    5451
    55     leave
    56     ret
     52        leave
     53        ret
    5754ENDPROC   RT_NOCRT(fabsf)
    5855
     56ALIGNCODE(16)
     57g_r32ClearSignMask:
     58        dd      07fffffffh
     59        dd      07fffffffh
     60        dd      07fffffffh
     61        dd      07fffffffh
     62
  • trunk/src/VBox/Runtime/common/math/fabsl.asm

    r96014 r96216  
    2525;
    2626
     27
     28%define RT_ASM_WITH_SEH64
    2729%include "iprt/asmdefs.mac"
     30
    2831
    2932BEGINCODE
     
    3437; @param    lrd     [xSP + xCB*2]
    3538RT_NOCRT_BEGINPROC fabsl
    36     push    xBP
    37     mov     xBP, xSP
     39        push    xBP
     40        SEH64_PUSH_xBP
     41        mov     xBP, xSP
     42        SEH64_SET_FRAME_xBP 0
     43        SEH64_END_PROLOGUE
    3844
    39     fld     tword [xBP + xCB*2]
    40     fabs
     45        fld     tword [xBP + xCB*2]
     46        fabs
    4147
    42 .done:
    43     leave
    44     ret
     48        leave
     49        ret
    4550ENDPROC   RT_NOCRT(fabsl)
    4651
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette