VirtualBox

Changeset 105370 in vbox for trunk/src/VBox/ValidationKit


Ignore:
Timestamp:
Jul 17, 2024 10:58:59 AM (7 months ago)
Author:
vboxsync
Message:

ValidationKit/bootsectors: bugref:10658 SIMD FP testcase: [v]addps (IE).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-4.c32

    r105368 r105370  
    9191#define BS3_FP32_QNAN_VAL(a_Sign, a_Val)      RTFLOAT32U_INIT_QNAN_EX(a_Sign, a_Val)
    9292#define BS3_FP32_SNAN(a_Sign)                 RTFLOAT32U_INIT_SNAN(a_Sign)
    93 
     93#define BS3_FP32_SNAN_VAL(a_Sign, a_Val)      RTFLOAT32U_INIT_SNAN_EX(a_Sign, a_Val)
    9494
    9595/*
     
    9898 * Exponent - 8 bits, least significant bit MBZ.
    9999 */
    100 #define BS3_FP32_NORMAL_VAL_0(a_Sign)         RTFLOAT32U_INIT_C(a_Sign, 0x401ac0, 0x78)
    101 #define BS3_FP32_NORMAL_VAL_1(a_Sign)         RTFLOAT32U_INIT_C(a_Sign, 0x5fcabd, 0xbc)
    102 #define BS3_FP32_NORMAL_VAL_2(a_Sign)         RTFLOAT32U_INIT_C(a_Sign, 0x7e117a, 0x7e)
    103 #define BS3_FP32_NORMAL_VAL_3(a_Sign)         RTFLOAT32U_INIT_C(a_Sign, 0x5b5b5b, 0x9a)
    104 #define BS3_FP32_NORMAL_VAL_4(a_Sign)         RTFLOAT32U_INIT_C(a_Sign, 0x1e0f1f, 0x32)
    105 #define BS3_FP32_NORMAL_VAL_5(a_Sign)         RTFLOAT32U_INIT_C(a_Sign, 0x012345, 0x56)
    106 #define BS3_FP32_NORMAL_VAL_6(a_Sign)         RTFLOAT32U_INIT_C(a_Sign, 0x330b3b, 0x90)
    107 #define BS3_FP32_NORMAL_VAL_7(a_Sign)         RTFLOAT32U_INIT_C(a_Sign, 0x4ebeb4, 0x30)
     100#define BS3_FP32_FRACTION_VAL_0               0x401ac0
     101#define BS3_FP32_FRACTION_VAL_1               0x5fcabd
     102#define BS3_FP32_FRACTION_VAL_2               0x7e117a
     103#define BS3_FP32_FRACTION_VAL_3               0x5b5b5b
     104#define BS3_FP32_FRACTION_VAL_4               0x1e0f1f
     105#define BS3_FP32_FRACTION_VAL_5               0x012345
     106#define BS3_FP32_FRACTION_VAL_6               0x330b3b
     107#define BS3_FP32_FRACTION_VAL_7               0x4ebeb4
     108#define BS3_FP32_EXP_VAL_0                    0x78
     109#define BS3_FP32_EXP_VAL_1                    0xbc
     110#define BS3_FP32_EXP_VAL_2                    0x7e
     111#define BS3_FP32_EXP_VAL_3                    0x9a
     112#define BS3_FP32_EXP_VAL_4                    0x32
     113#define BS3_FP32_EXP_VAL_5                    0x56
     114#define BS3_FP32_EXP_VAL_6                    0x90
     115#define BS3_FP32_EXP_VAL_7                    0x30
     116AssertCompile(!(BS3_FP32_EXP_VAL_0 & RT_BIT(0)));
     117AssertCompile(!(BS3_FP32_EXP_VAL_1 & RT_BIT(0)));
     118AssertCompile(!(BS3_FP32_EXP_VAL_2 & RT_BIT(0)));
     119AssertCompile(!(BS3_FP32_EXP_VAL_3 & RT_BIT(0)));
     120AssertCompile(!(BS3_FP32_EXP_VAL_4 & RT_BIT(0)));
     121AssertCompile(!(BS3_FP32_EXP_VAL_5 & RT_BIT(0)));
     122AssertCompile(!(BS3_FP32_EXP_VAL_6 & RT_BIT(0)));
     123AssertCompile(!(BS3_FP32_EXP_VAL_7 & RT_BIT(0)));
     124#define BS3_FP32_NORMAL_VAL_0(a_Sign)         RTFLOAT32U_INIT_C(a_Sign, BS3_FP32_FRACTION_VAL_0, BS3_FP32_EXP_VAL_0)
     125#define BS3_FP32_NORMAL_VAL_1(a_Sign)         RTFLOAT32U_INIT_C(a_Sign, BS3_FP32_FRACTION_VAL_1, BS3_FP32_EXP_VAL_1)
     126#define BS3_FP32_NORMAL_VAL_2(a_Sign)         RTFLOAT32U_INIT_C(a_Sign, BS3_FP32_FRACTION_VAL_2, BS3_FP32_EXP_VAL_2)
     127#define BS3_FP32_NORMAL_VAL_3(a_Sign)         RTFLOAT32U_INIT_C(a_Sign, BS3_FP32_FRACTION_VAL_3, BS3_FP32_EXP_VAL_3)
     128#define BS3_FP32_NORMAL_VAL_4(a_Sign)         RTFLOAT32U_INIT_C(a_Sign, BS3_FP32_FRACTION_VAL_4, BS3_FP32_EXP_VAL_4)
     129#define BS3_FP32_NORMAL_VAL_5(a_Sign)         RTFLOAT32U_INIT_C(a_Sign, BS3_FP32_FRACTION_VAL_5, BS3_FP32_EXP_VAL_5)
     130#define BS3_FP32_NORMAL_VAL_6(a_Sign)         RTFLOAT32U_INIT_C(a_Sign, BS3_FP32_FRACTION_VAL_6, BS3_FP32_EXP_VAL_6)
     131#define BS3_FP32_NORMAL_VAL_7(a_Sign)         RTFLOAT32U_INIT_C(a_Sign, BS3_FP32_FRACTION_VAL_7, BS3_FP32_EXP_VAL_7)
    108132/* The maximum integer value (all 23 + 1 implied bit of the fraction part set) without losing precision. */
    109133#define BS3_FP32_NORMAL_SAFE_INT_MAX(a_Sign)  RTFLOAT32U_INIT_C(a_Sign, BS3_FP32_FRACTION_NORMAL_MAX, BS3_FP32_EXP_SAFE_INT_MAX)
     
    16701694              /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_UP,
    16711695              /*flags    */ 0, 0 },
    1672     /** @todo More denormals; Underflow, Precision; Rounding, FZ etc. */
     1696    /*
     1697     * Invalids.
     1698     */
     1699    /*32*/{ { /*src2     */ { BS3_FP32_QNAN(0),        BS3_FP32_QNAN_VAL(0, BS3_FP32_FRACTION_NORMAL_MAX), BS3_FP32_QNAN_VAL(0, BS3_FP32_FRACTION_VAL_0),      BS3_FP32_QNAN_VAL(0, BS3_FP32_FRACTION_VAL_1), BS3_FP32_QNAN_VAL(0, BS3_FP32_FRACTION_VAL_2), BS3_FP32_QNAN_VAL(0, BS3_FP32_FRACTION_VAL_3), BS3_FP32_QNAN_VAL(0, BS3_FP32_FRACTION_VAL_4), BS3_FP32_QNAN_VAL(0, BS3_FP32_FRACTION_VAL_5) } },
     1700            { /*src1     */ { BS3_FP32_SNAN(0),        BS3_FP32_SNAN_VAL(0, BS3_FP32_FRACTION_NORMAL_MIN), BS3_FP32_SNAN_VAL(0, BS3_FP32_FRACTION_NORMAL_MAX), BS3_FP32_SNAN_VAL(0, BS3_FP32_FRACTION_VAL_2), BS3_FP32_SNAN_VAL(0, BS3_FP32_FRACTION_VAL_6), BS3_FP32_SNAN_VAL(0, BS3_FP32_FRACTION_VAL_2), BS3_FP32_SNAN_VAL(0, BS3_FP32_FRACTION_VAL_1), BS3_FP32_SNAN_VAL(0, BS3_FP32_FRACTION_VAL_4) } },
     1701            { /* =>      */ { BS3_FP32_QNAN_VAL(0, 1), BS3_FP32_QNAN_VAL(0, 1),                            BS3_FP32_QNAN_VAL(0, BS3_FP32_FRACTION_NORMAL_MAX), BS3_FP32_QNAN_VAL(0, BS3_FP32_FRACTION_VAL_2), BS3_FP32_QNAN_VAL(0, BS3_FP32_FRACTION_VAL_6), BS3_FP32_QNAN_VAL(0, BS3_FP32_FRACTION_VAL_2), BS3_FP32_QNAN_VAL(0, BS3_FP32_FRACTION_VAL_1), BS3_FP32_QNAN_VAL(0, BS3_FP32_FRACTION_VAL_4) } },
     1702              /*mask     */ X86_MXCSR_XCPT_MASK,
     1703              /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
     1704              /*flags    */ X86_MXCSR_IE, X86_MXCSR_IE },
     1705          { { /*src2     */ { BS3_FP32_SNAN(0), BS3_FP32_SNAN_VAL(0, BS3_FP32_FRACTION_NORMAL_MIN), BS3_FP32_SNAN_VAL(0, BS3_FP32_FRACTION_VAL_1), BS3_FP32_SNAN_VAL(0, BS3_FP32_FRACTION_VAL_1), BS3_FP32_SNAN_VAL(0, BS3_FP32_FRACTION_VAL_3), BS3_FP32_SNAN_VAL(0, BS3_FP32_FRACTION_VAL_4), BS3_FP32_SNAN_VAL(0, BS3_FP32_FRACTION_VAL_5), BS3_FP32_SNAN_VAL(0, BS3_FP32_FRACTION_VAL_6) } },
     1706            { /*src1     */ { BS3_FP32_QNAN(0), BS3_FP32_QNAN_VAL(0, BS3_FP32_FRACTION_NORMAL_MAX), BS3_FP32_QNAN_VAL(0, BS3_FP32_FRACTION_VAL_6), BS3_FP32_QNAN_VAL(0, BS3_FP32_FRACTION_VAL_5), BS3_FP32_QNAN_VAL(0, BS3_FP32_FRACTION_VAL_4), BS3_FP32_QNAN_VAL(0, BS3_FP32_FRACTION_VAL_3), BS3_FP32_QNAN_VAL(0, BS3_FP32_FRACTION_VAL_2), BS3_FP32_QNAN_VAL(0, BS3_FP32_FRACTION_VAL_1) } },
     1707            { /* =>      */ { BS3_FP32_QNAN(0), BS3_FP32_QNAN_VAL(0, BS3_FP32_FRACTION_NORMAL_MAX), BS3_FP32_QNAN_VAL(0, BS3_FP32_FRACTION_VAL_6), BS3_FP32_QNAN_VAL(0, BS3_FP32_FRACTION_VAL_5), BS3_FP32_QNAN_VAL(0, BS3_FP32_FRACTION_VAL_4), BS3_FP32_QNAN_VAL(0, BS3_FP32_FRACTION_VAL_3), BS3_FP32_QNAN_VAL(0, BS3_FP32_FRACTION_VAL_2), BS3_FP32_QNAN_VAL(0, BS3_FP32_FRACTION_VAL_1) } },
     1708              /*mask     */ X86_MXCSR_XCPT_MASK,
     1709              /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
     1710              /*flags    */ X86_MXCSR_IE, X86_MXCSR_IE },
     1711    /** @todo Underflow, Precision; Rounding, FZ etc. */
    16731712    };
    16741713
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