VirtualBox

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


Ignore:
Timestamp:
Jul 5, 2024 10:36:46 AM (7 months ago)
Author:
vboxsync
Message:

ValidationKit/bootsectors: bugref:10658 SIMD FP testcase: [v]haddps.

File:
1 edited

Legend:

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

    r105142 r105156  
    101101#define BS3_FP32_NORMAL_VAL_2(a_Sign)         RTFLOAT32U_INIT_C(a_Sign, 0x7e117a, 0x7e)
    102102#define BS3_FP32_NORMAL_VAL_3(a_Sign)         RTFLOAT32U_INIT_C(a_Sign, 0x5b5b5b, 0x9a)
     103#define BS3_FP32_NORMAL_VAL_4(a_Sign)         RTFLOAT32U_INIT_C(a_Sign, 0x1e0f1f, 0x32)
    103104/* The maximum integer value (all 23 + 1 implied bit of the fraction part set) without losing precision. */
    104105#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)
     
    23122313              /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_ZERO,
    23132314              /*flags    */ X86_MXCSR_PE, X86_MXCSR_PE },
    2314     /** @todo Denormals; Normals; Rounding, FZ etc. */
     2315    /*
     2316     * Normals.
     2317     */
     2318    /*18*/{ { /*src2     */ { BS3_FP32_VAL(0, 0,        0x7d)/* 0.25*/, BS3_FP32_VAL(0, 0,        0x7e)/*0.50*/, BS3_FP32_NORMAL_MAX(0),                  BS3_FP32_ZERO(0),       BS3_FP32_ZERO(0),                        BS3_FP32_NORMAL_MAX(0),           BS3_FP32_VAL(0, 0x400000, 0x7f)/*1.50*/, BS3_FP32_VAL(0, 0,        0x7d)/*0.25*/ } },
     2319            { /*src1     */ { BS3_FP32_VAL(1, 0,        0x7d)/*-0.25*/, BS3_FP32_VAL(0, 0x600000, 0x7f)/*1.75*/, BS3_FP32_NORMAL_MAX(1),                  BS3_FP32_ZERO(0),       BS3_FP32_VAL(0, 0,        0x7e)/*0.50*/, BS3_FP32_VAL(0, 0, 0x7d)/*0.25*/, BS3_FP32_ZERO(0),                        BS3_FP32_ZERO(0)                        } },
     2320            { /* =>      */ { BS3_FP32_VAL(0, 0x400000, 0x7f)/* 1.50*/, BS3_FP32_NORMAL_MAX(1),                  BS3_FP32_VAL(0, 0x400000, 0x7e)/*0.75*/, BS3_FP32_NORMAL_MAX(0), BS3_FP32_VAL(0, 0x400000, 0x7e)/*0.75*/, BS3_FP32_ZERO(0),                 BS3_FP32_NORMAL_MAX(0),                  BS3_FP32_VAL(0, 0x600000, 0x7f)/*1.75*/ } },
     2321              /*mask     */ X86_MXCSR_XCPT_MASK,
     2322              /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_DOWN,
     2323              /*flags    */ 0, 0 },
     2324          { { /*src2     */ { BS3_FP32_NORMAL_VAL_1(1), BS3_FP32_NORMAL_VAL_1(0), BS3_FP32_NORMAL_VAL_4(1), BS3_FP32_NORMAL_VAL_4(0), BS3_FP32_NORMAL_VAL_1(1), BS3_FP32_NORMAL_VAL_1(0), BS3_FP32_NORMAL_VAL_2(1), BS3_FP32_NORMAL_VAL_2(0) } },
     2325            { /*src1     */ { BS3_FP32_NORMAL_MAX(1),   BS3_FP32_NORMAL_MAX(0),   BS3_FP32_NORMAL_MIN(1),   BS3_FP32_NORMAL_MIN(0),   BS3_FP32_NORMAL_MAX(1),   BS3_FP32_NORMAL_MAX(0),   BS3_FP32_NORMAL_VAL_3(0), BS3_FP32_NORMAL_VAL_3(1) } },
     2326            { /* =>      */ { BS3_FP32_ZERO(0),         BS3_FP32_ZERO(0),         BS3_FP32_ZERO(0),         BS3_FP32_ZERO(0),         BS3_FP32_ZERO(0),         BS3_FP32_ZERO(0),         BS3_FP32_ZERO(0),         BS3_FP32_ZERO(0)         } },
     2327              /*mask     */ ~X86_MXCSR_XCPT_MASK,
     2328              /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
     2329              /*flags    */ 0, 0 },
     2330          { { /*src2     */ { BS3_FP32_VAL(0, 0x5c0000, 0x84)/*     55*/, BS3_FP32_VAL(0, 0x600000, 0x81)/*      7.00*/, BS3_FP32_ZERO(0),                           BS3_FP32_VAL(0, 0x5c0000, 0x84)/*   55.00*/, BS3_FP32_VAL(0, 0x253468, 0x93)/*1353357*/, BS3_FP32_VAL(1, 0x7c9000, 0x88)/*-1010.25*/, BS3_FP32_ZERO(0),                              BS3_FP32_VAL(0, 0x534000, 0x86)/*211.25*/ } },
     2331            { /*src1     */ { BS3_FP32_VAL(0, 0x669050, 0x93)/*1888778*/, BS3_FP32_VAL(1, 0x1ea980, 0x8f)/* -81235.00*/, BS3_FP32_VAL(0, 0x253468, 0x93)/*1353357*/, BS3_FP32_VAL(1, 0x7c9000, 0x88)/*-1010.25*/, BS3_FP32_VAL(0, 0x5c0000, 0x84)/*     55*/, BS3_FP32_VAL(0, 0x600000, 0x81)/*7*/,        BS3_FP32_VAL(0, 0x534000, 0x86)/*211.25*/,     BS3_FP32_ONE(1)                           } },
     2332            { /* =>      */ { BS3_FP32_VAL(0, 0x5ca5b8, 0x93)/*1807543*/, BS3_FP32_VAL(0, 0x2514d6, 0x93)/*1352346.75*/, BS3_FP32_VAL(0, 0x780000, 0x84)/*     62*/, BS3_FP32_VAL(0, 0x5c0000, 0x84)/*   55.00*/, BS3_FP32_VAL(0, 0x780000, 0x84)/*     62*/, BS3_FP32_VAL(0, 0x524000, 0x86)/*210.25*/,   BS3_FP32_VAL(0, 0x2514d6, 0x93)/*1352346.75*/, BS3_FP32_VAL(0, 0x534000, 0x86)/*211.25*/ } },
     2333              /*mask     */ X86_MXCSR_XCPT_MASK,
     2334              /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
     2335              /*flags    */ 0, 0 },
     2336          { { /*src2     */ { BS3_FP32_VAL(0, 0x3c614e, 0x96)/*12345678*/, BS3_FP32_VAL(0, 0x3c614e, 0x96)/*12345678*/, BS3_FP32_ZERO(0),                            BS3_FP32_NORMAL_VAL_1(0), BS3_FP32_VAL(0, 0x3c614e, 0x97)/*24691356*/, BS3_FP32_VAL(1, 0x3c614e, 0x96)/*-12345678*/, BS3_FP32_ZERO(0),                            BS3_FP32_ONE(1) } },
     2337            { /*src1     */ { BS3_FP32_VAL(0, 0x74429f, 0x97)/*32015678*/, BS3_FP32_VAL(1, 0x712060, 0x92)/* -987654*/, BS3_FP32_NORMAL_VAL_3(1),                    BS3_FP32_ZERO(0),         BS3_FP32_VAL(0, 0x74429f, 0x97)/*32015678*/, BS3_FP32_VAL(1, 0x712060, 0x92)/*  -987654*/, BS3_FP32_ZERO(0),                            BS3_FP32_ONE(0) } },
     2338            { /* =>      */ { BS3_FP32_VAL(0, 0x6cb99c, 0x97)/*31028024*/, BS3_FP32_NORMAL_VAL_3(1),                    BS3_FP32_VAL(0, 0x3c614e, 0x97)/*24691356*/, BS3_FP32_NORMAL_VAL_1(0), BS3_FP32_VAL(0, 0x6cb99c, 0x97)/*31028024*/, BS3_FP32_ONE(0),                              BS3_FP32_VAL(0, 0x3c614e, 0x96)/*12345678*/, BS3_FP32_ONE(1) } },
     2339              /*mask     */ X86_MXCSR_XCPT_MASK,
     2340              /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
     2341              /*flags    */ 0, 0 },
     2342          { { /*src2     */ { BS3_FP32_ONE(0),                                                              BS3_FP32_ONE(1),                                                              BS3_FP32_ONE(1),                 BS3_FP32_ZERO(0), BS3_FP32_ONE(0),                                                              BS3_FP32_ONE(1),                                                              BS3_FP32_ONE(1),                 BS3_FP32_ZERO(0) } },
     2343            { /*src1     */ { BS3_FP32_VAL(0, BS3_FP32_FRACTION_NORMAL_MAX - 1, BS3_FP32_EXP_SAFE_INT_MAX), BS3_FP32_ONE(0),                                                              BS3_FP32_NORMAL_SAFE_INT_MAX(0), BS3_FP32_ONE(1),  BS3_FP32_VAL(0, BS3_FP32_FRACTION_NORMAL_MAX - 1, BS3_FP32_EXP_SAFE_INT_MAX), BS3_FP32_ONE(0),                                                              BS3_FP32_NORMAL_SAFE_INT_MAX(0), BS3_FP32_ONE(1)  } },
     2344            { /* =>      */ { BS3_FP32_NORMAL_SAFE_INT_MAX(0),                                              BS3_FP32_VAL(0, BS3_FP32_FRACTION_NORMAL_MAX - 1, BS3_FP32_EXP_SAFE_INT_MAX), BS3_FP32_ZERO(0),                BS3_FP32_ONE(1),  BS3_FP32_NORMAL_SAFE_INT_MAX(0),                                              BS3_FP32_VAL(0, BS3_FP32_FRACTION_NORMAL_MAX - 1, BS3_FP32_EXP_SAFE_INT_MAX), BS3_FP32_ZERO(0),                BS3_FP32_ONE(1)  } },
     2345              /*mask     */ X86_MXCSR_XCPT_MASK,
     2346              /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_ZERO,
     2347              /*flags    */ 0, 0 },
     2348          { { /*src2     */ { BS3_FP32_NORMAL_SAFE_INT_MAX(0),                   BS3_FP32_ONE(0),                                   BS3_FP32_ONE(1),                                   BS3_FP32_ZERO(0), BS3_FP32_NORMAL_SAFE_INT_MAX(0),                   BS3_FP32_ONE(0),                                   BS3_FP32_ONE(1),                                   BS3_FP32_ZERO(0) } },
     2349            { /*src1     */ { BS3_FP32_NORMAL_SAFE_INT_MAX(0),                   BS3_FP32_ONE(0),                                   BS3_FP32_NORMAL_SAFE_INT_MAX(1),                   BS3_FP32_ONE(1),  BS3_FP32_NORMAL_SAFE_INT_MAX(0),                   BS3_FP32_ONE(0),                                   BS3_FP32_NORMAL_SAFE_INT_MAX(1),                   BS3_FP32_ONE(1)  } },
     2350            { /* =>      */ { BS3_FP32_VAL(0, 0, BS3_FP32_EXP_SAFE_INT_MAX + 1), BS3_FP32_VAL(1, 0, BS3_FP32_EXP_SAFE_INT_MAX + 1), BS3_FP32_VAL(0, 0, BS3_FP32_EXP_SAFE_INT_MAX + 1), BS3_FP32_ONE(1),  BS3_FP32_VAL(0, 0, BS3_FP32_EXP_SAFE_INT_MAX + 1), BS3_FP32_VAL(1, 0, BS3_FP32_EXP_SAFE_INT_MAX + 1), BS3_FP32_VAL(0, 0, BS3_FP32_EXP_SAFE_INT_MAX + 1), BS3_FP32_ONE(1)  } },
     2351              /*mask     */ ~X86_MXCSR_XCPT_MASK,
     2352              /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
     2353              /*flags    */ 0, 0 },
     2354          { { /*src2     */ { BS3_FP32_NORMAL_SAFE_INT_MAX(0),                   BS3_FP32_ONE(0),                                   BS3_FP32_ONE(1),                                   BS3_FP32_ZERO(0), BS3_FP32_NORMAL_SAFE_INT_MAX(0),                   BS3_FP32_ONE(0),                                   BS3_FP32_ONE(1),                                   BS3_FP32_ZERO(0) } },
     2355            { /*src1     */ { BS3_FP32_NORMAL_SAFE_INT_MAX(0),                   BS3_FP32_ONE(0),                                   BS3_FP32_NORMAL_SAFE_INT_MAX(1),                   BS3_FP32_ONE(1),  BS3_FP32_NORMAL_SAFE_INT_MAX(0),                   BS3_FP32_ONE(0),                                   BS3_FP32_NORMAL_SAFE_INT_MAX(1),                   BS3_FP32_ONE(1)  } },
     2356            { /* =>      */ { BS3_FP32_VAL(0, 0, BS3_FP32_EXP_SAFE_INT_MAX + 1), BS3_FP32_VAL(1, 0, BS3_FP32_EXP_SAFE_INT_MAX + 1), BS3_FP32_VAL(0, 0, BS3_FP32_EXP_SAFE_INT_MAX + 1), BS3_FP32_ONE(1),  BS3_FP32_VAL(0, 0, BS3_FP32_EXP_SAFE_INT_MAX + 1), BS3_FP32_VAL(1, 0, BS3_FP32_EXP_SAFE_INT_MAX + 1), BS3_FP32_VAL(0, 0, BS3_FP32_EXP_SAFE_INT_MAX + 1), BS3_FP32_ONE(1)  } },
     2357              /*mask     */ ~X86_MXCSR_XCPT_MASK,
     2358              /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_NEAREST,
     2359              /*flags    */ 0, 0 },
     2360          { { /*src2     */ { BS3_FP32_VAL(0, 0x6423f2, 0x92)/* 934463.125*/, BS3_FP32_VAL(1, 0x0a19f0, 0x8f)/*-70707.875*/, BS3_FP32_NORMAL_SAFE_INT_MIN(1),               BS3_FP32_NORMAL_SAFE_INT_MIN(1),               BS3_FP32_NORMAL_SAFE_INT_MIN(0),               BS3_FP32_NORMAL_SAFE_INT_MIN(0),               BS3_FP32_VAL(0, 0x600000, 0x7e)/*     0.875*/, BS3_FP32_VAL(0, 0x769b50, 0x92)/*1010101.000*/ } },
     2361            { /*src1     */ { BS3_FP32_VAL(0, 0x769b50, 0x92)/*1010101.000*/, BS3_FP32_VAL(0, 0x600000, 0x7e)/*     0.875*/, BS3_FP32_VAL(0, 0x430ebc, 0x91)/*399477.875*/, BS3_FP32_VAL(0, 0x3ce348, 0x90)/*193421.125*/, BS3_FP32_VAL(0, 0x16b43a, 0x93)/*1234567.25*/, BS3_FP32_VAL(0, 0x00c6d3, 0x94)/*2109876.75*/, BS3_FP32_VAL(0, 0x792318, 0x91)/*510232.750*/, BS3_FP32_VAL(1, 0x316740, 0x8e)/* -45415.250*/ } },
     2362            { /* =>      */ { BS3_FP32_VAL(0, 0x769b5e, 0x92)/*1010101.875*/, BS3_FP32_VAL(0, 0x10c030, 0x92)/*592899.000*/, BS3_FP32_VAL(0, 0x52e0b4, 0x92)/*863755.250*/, BS3_FP32_VAL(1, 0, 2),                         BS3_FP32_VAL(0, 0x4c20f0, 0x94)/*3344444.00*/, BS3_FP32_VAL(0, 0x62f630, 0x91)/*464817.50*/,  BS3_FP32_VAL(0, 0, 2),                         BS3_FP32_VAL(0, 0x769b5e, 0x92)/*1010101.875*/ } },
     2363              /*mask     */ X86_MXCSR_XCPT_MASK,
     2364              /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_DOWN,
     2365              /*flags    */ 0, 0 },
     2366          /** @todo Denormals; Rounding, FZ etc. */
    23152367    };
    23162368
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