1  ; $Id: bs3fpustate1asm.asm 98103 20230117 14:15:46Z vboxsync $


2  ;; @file


3  ; BS3Kit  bs3fpustate1, assembly helpers and template instantiation.


4  ;


5 


6  ;


7  ; Copyright (C) 20072023 Oracle and/or its affiliates.


8  ;


9  ; This file is part of VirtualBox base platform packages, as


10  ; available from https://www.virtualbox.org.


11  ;


12  ; This program is free software; you can redistribute it and/or


13  ; modify it under the terms of the GNU General Public License


14  ; as published by the Free Software Foundation, in version 3 of the


15  ; License.


16  ;


17  ; This program is distributed in the hope that it will be useful, but


18  ; WITHOUT ANY WARRANTY; without even the implied warranty of


19  ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU


20  ; General Public License for more details.


21  ;


22  ; You should have received a copy of the GNU General Public License


23  ; along with this program; if not, see <https://www.gnu.org/licenses>.


24  ;


25  ; The contents of this file may alternatively be used under the terms


26  ; of the Common Development and Distribution License Version 1.0


27  ; (CDDL), a copy of it is provided in the "COPYING.CDDL" file included


28  ; in the VirtualBox distribution, in which case the provisions of the


29  ; CDDL are applicable instead of those of the GPL.


30  ;


31  ; You may elect to license modified versions of this file under the


32  ; terms and conditions of either the GPL or the CDDL or both.


33  ;


34  ; SPDXLicenseIdentifier: GPL3.0only OR CDDL1.0


35  ;


36 


37 


38  ;*********************************************************************************************************************************


39  ;* Header Files *


40  ;*********************************************************************************************************************************


41  %include "bs3kit.mac"


42 


43 


44  ;*********************************************************************************************************************************


45  ;* Global Variables *


46  ;*********************************************************************************************************************************


47  BS3_BEGIN_DATA16


48  ;; @name Floating point constants.


49  ; @{


50  g_r32_0dot1: dd 0.1


51  g_r32_3dot2: dd 3.2


52  g_r32_Zero: dd 0.0


53  g_r32_One: dd 1.0


54  g_r32_Two: dd 2.0


55  g_r32_Three: dd 3.0


56  g_r32_Ten: dd 10.0


57  g_r32_Eleven: dd 11.0


58  g_r32_ThirtyTwo:dd 32.0


59  g_r32_Min: dd 000800000h


60  g_r32_Max: dd 07f7fffffh


61  g_r32_Inf: dd 07f800000h


62  g_r32_SNaN: dd 07f800001h


63  g_r32_SNaNMax: dd 07fbfffffh


64  g_r32_QNaN: dd 07fc00000h


65  g_r32_QNaNMax: dd 07fffffffh


66  g_r32_NegQNaN: dd 0ffc00000h


67 


68  g_r64_0dot1: dq 0.1


69  g_r64_6dot9: dq 6.9


70  g_r64_Zero: dq 0.0


71  g_r64_One: dq 1.0


72  g_r64_Two: dq 2.0


73  g_r64_Three: dq 3.0


74  g_r64_Ten: dq 10.0


75  g_r64_Eleven: dq 11.0


76  g_r64_ThirtyTwo:dq 32.0


77  g_r64_Min: dq 00010000000000000h


78  g_r64_Max: dq 07fefffffffffffffh


79  g_r64_Inf: dq 07ff0000000000000h


80  g_r64_SNaN: dq 07ff0000000000001h


81  g_r64_SNaNMax: dq 07ff7ffffffffffffh


82  g_r64_NegQNaN: dq 0fff8000000000000h


83  g_r64_QNaN: dq 07ff8000000000000h


84  g_r64_QNaNMax: dq 07fffffffffffffffh


85  g_r64_DnMin: dq 00000000000000001h


86  g_r64_DnMax: dq 0000fffffffffffffh


87 


88 


89  g_r80_0dot1: dt 0.1


90  g_r80_3dot2: dt 3.2


91  g_r80_Zero: dt 0.0


92  g_r80_One: dt 1.0


93  g_r80_Two: dt 2.0


94  g_r80_Three: dt 3.0


95  g_r80_Ten: dt 10.0


96  g_r80_Eleven: dt 11.0


97  g_r80_ThirtyTwo:dt 32.0


98  %ifdef __NASM__


99  g_r80_Min: dq 08000000000000000h


100  dw 00001h


101  g_r80_Max: dq 0ffffffffffffffffh


102  dw 07ffeh


103  g_r80_Inf: dq 08000000000000000h


104  dw 07fffh


105  g_r80_QNaN: dq 0c000000000000000h


106  dw 07fffh


107  g_r80_QNaNMax: dq 0ffffffffffffffffh


108  dw 07fffh


109  g_r80_NegQNaN: dq 0c000000000000000h


110  dw 0ffffh


111  g_r80_SNaN: dq 08000000000000001h


112  dw 07fffh


113  g_r80_SNaNMax: dq 0bfffffffffffffffh


114  dw 07fffh


115  g_r80_DnMin: dq 00000000000000001h


116  dw 00000h


117  g_r80_DnMax: dq 07fffffffffffffffh


118  dw 00000h


119  %else


120  g_r80_Min: dt 000018000000000000000h


121  g_r80_Max: dt 07ffeffffffffffffffffh


122  g_r80_Inf: dt 07fff8000000000000000h


123  g_r80_QNaN: dt 07fffc000000000000000h


124  g_r80_QNaNMax: dt 07fffffffffffffffffffh


125  g_r80_NegQNaN: dt 0ffffc000000000000000h


126  g_r80_SNaN: dt 07fff8000000000000001h


127  g_r80_SNaNMax: dt 07fffbfffffffffffffffh


128  g_r80_DnMin: dt 000000000000000000001h


129  g_r80_DnMax: dt 000007fffffffffffffffh


130  %endif


131 


132  g_r32V1: dd 3.2


133  g_r32V2: dd 1.9


134  g_r64V1: dq 6.4


135  g_r80V1: dt 8.0


136 


137  ; Denormal numbers.


138  g_r32D0: dd 000200000h


139  ;; @}


140 


141  ;; @name Upconverted Floating point constants


142  ; @{


143  ;g_r80_r32_0dot1: dt 0.1


144  %ifdef __NASM__


145  g_r80_r32_3dot2: dq 0cccccd0000000000h


146  dw 04000h


147  %else


148  g_r80_r32_3dot2: dt 04000cccccd0000000000h


149  %endif


150  ;g_r80_r32_Zero: dt 0.0


151  ;g_r80_r32_One: dt 1.0


152  ;g_r80_r32_Two: dt 2.0


153  ;g_r80_r32_Three: dt 3.0


154  ;g_r80_r32_Ten: dt 10.0


155  ;g_r80_r32_Eleven: dt 11.0


156  ;g_r80_r32_ThirtyTwo: dt 32.0


157  ;; @}


158 


159  ;; @name Decimal constants.


160  ; @{


161  g_u64Zero: dd 0


162  g_u32Zero: dw 0


163  g_u64Two: dd 2


164  g_u32Two: dw 2


165  ;; @}


166 


167 


168  ;


169  ; Instantiate code templates.


170  ;


171  BS3_INSTANTIATE_TEMPLATE_ESSENTIALS "bs3fpustate1template.mac"


172 

