VirtualBox

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


Ignore:
Timestamp:
Sep 25, 2024 9:03:31 AM (5 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
164927
Message:

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

Location:
trunk/src/VBox/ValidationKit/bootsectors
Files:
2 edited

Legend:

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

    r106135 r106148  
    618618
    619619;
     620;; [v]minsd
     621;
     622EMIT_INSTR_PLUS_ICEBP       minsd, XMM3, XMM4
     623EMIT_INSTR_PLUS_ICEBP       minsd, XMM3, FSxBX
     624EMIT_INSTR_PLUS_ICEBP_C64   minsd, XMM8, XMM9
     625EMIT_INSTR_PLUS_ICEBP_C64   minsd, XMM8, FSxBX
     626
     627EMIT_INSTR_PLUS_ICEBP       vminsd, XMM1, XMM6, XMM7
     628EMIT_INSTR_PLUS_ICEBP       vminsd, XMM1, XMM6, FSxBX
     629EMIT_INSTR_PLUS_ICEBP_C64   vminsd, XMM8, XMM9, XMM10
     630EMIT_INSTR_PLUS_ICEBP_C64   vminsd, XMM8, XMM9, FSxBX
     631
     632;
    620633;; [v]sqrtps
    621634;
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-4.c32

    r106135 r106148  
    1268912689
    1269012690/*
     12691 * [V]MINSD.
     12692 */
     12693BS3_DECL_FAR(uint8_t) bs3CpuInstr4_v_minsd(uint8_t bMode)
     12694{
     12695    static BS3CPUINSTR4_TEST1_VALUES_SD_T const s_aValues[] =
     12696    {
     12697    /*
     12698     * Zero.
     12699     */
     12700    /* 0*/{ { /*src2     */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } },
     12701            { /*src1     */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } },
     12702            { /* =>      */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } },
     12703              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     12704              /*128:out  */ X86_MXCSR_XCPT_MASK,
     12705              /*256:out  */ X86_MXCSR_XCPT_MASK,
     12706              /*xcpt?    */ false, false },
     12707          { { /*src2     */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } },
     12708            { /*src1     */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } },
     12709            { /* =>      */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } },
     12710              /*mxcsr:in */ X86_MXCSR_FZ | X86_MXCSR_DAZ | X86_MXCSR_RC_UP,
     12711              /*128:out  */ X86_MXCSR_FZ | X86_MXCSR_DAZ | X86_MXCSR_RC_UP,
     12712              /*256:out  */ X86_MXCSR_FZ | X86_MXCSR_DAZ | X86_MXCSR_RC_UP,
     12713              /*xcpt?    */ false, false },
     12714          { { /*src2     */ { FP64_0(0), FP64_INF(0), FP64_SNAN(0), FP64_SNAN(0) } },
     12715            { /*src1     */ { FP64_0(0), FP64_INF(1), FP64_QNAN(0), FP64_SNAN(1) } },
     12716            { /* =>      */ { FP64_0(0), FP64_INF(1), FP64_QNAN(0), FP64_SNAN(1) } },
     12717              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     12718              /*128:out  */ X86_MXCSR_XCPT_MASK,
     12719              /*256:out  */ X86_MXCSR_XCPT_MASK,
     12720              /*xcpt?    */ false, false },
     12721          { { /*src2     */ { FP64_0(0), FP64_RAND_V0(0), FP64_RAND_V0(0), FP64_RAND_V0(0) } },
     12722            { /*src1     */ { FP64_0(0), FP64_RAND_V3(0), FP64_RAND_V2(0), FP64_RAND_V1(0) } },
     12723            { /* =>      */ { FP64_0(0), FP64_RAND_V3(0), FP64_RAND_V2(0), FP64_RAND_V1(0) } },
     12724              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12725              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12726              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12727              /*xcpt?    */ false, false },
     12728          { { /*src2     */ { FP64_0(0), FP64_RAND_V2(0), FP64_RAND_V3(0), FP64_RAND_V1(0) } },
     12729            { /*src1     */ { FP64_0(0), FP64_RAND_V0(1), FP64_RAND_V1(1), FP64_RAND_V2(1) } },
     12730            { /* =>      */ { FP64_0(0), FP64_RAND_V0(1), FP64_RAND_V1(1), FP64_RAND_V2(1) } },
     12731              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     12732              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     12733              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     12734              /*xcpt?    */ false, false },
     12735          { { /*src2     */ { FP64_0(0), FP64_RAND_V0(0), FP64_RAND_V1(0), FP64_RAND_V3(0) } },
     12736            { /*src1     */ { FP64_0(1), FP64_RAND_V1(0), FP64_RAND_V2(0), FP64_RAND_V3(0) } },
     12737            { /* =>      */ { FP64_0(0), FP64_RAND_V1(0), FP64_RAND_V2(0), FP64_RAND_V3(0) } },
     12738              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     12739              /*128:out  */ X86_MXCSR_XCPT_MASK,
     12740              /*256:out  */ X86_MXCSR_XCPT_MASK,
     12741              /*xcpt?    */ false, false },
     12742          { { /*src2     */ { FP64_0(0), FP64_RAND_V0(1), FP64_RAND_V1(0), FP64_RAND_V2(0) } },
     12743            { /*src1     */ { FP64_0(1), FP64_RAND_V2(1), FP64_RAND_V3(0), FP64_RAND_V0(1) } },
     12744            { /* =>      */ { FP64_0(0), FP64_RAND_V2(1), FP64_RAND_V3(0), FP64_RAND_V0(1) } },
     12745              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_XCPT_FLAGS | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     12746              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_XCPT_FLAGS | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     12747              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_XCPT_FLAGS | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     12748              /*xcpt?    */ false, false },
     12749          { { /*src2     */ { FP64_0(1), FP64_RAND_V0(1), FP64_RAND_V1(1), FP64_RAND_V3(1) } },
     12750            { /*src1     */ { FP64_0(0), FP64_RAND_V1(0), FP64_RAND_V2(1), FP64_RAND_V3(0) } },
     12751            { /* =>      */ { FP64_0(1), FP64_RAND_V1(0), FP64_RAND_V2(1), FP64_RAND_V3(0) } },
     12752              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12753              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12754              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12755              /*xcpt?    */ false, false },
     12756          { { /*src2     */ { FP64_0(1), FP64_RAND_V3(1), FP64_RAND_V2(0), FP64_RAND_V1(0) } },
     12757            { /*src1     */ { FP64_0(0), FP64_RAND_V0(1), FP64_RAND_V1(1), FP64_RAND_V3(0) } },
     12758            { /* =>      */ { FP64_0(1), FP64_RAND_V0(1), FP64_RAND_V1(1), FP64_RAND_V3(0) } },
     12759              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_XCPT_FLAGS | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     12760              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_XCPT_FLAGS | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     12761              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_XCPT_FLAGS | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     12762              /*xcpt?    */ false, false },
     12763          { { /*src2     */ { FP64_0(1), FP64_RAND_V1(1), FP64_RAND_V2(1), FP64_RAND_V3(1) } },
     12764            { /*src1     */ { FP64_0(1), FP64_RAND_V0(1), FP64_RAND_V1(0), FP64_RAND_V2(0) } },
     12765            { /* =>      */ { FP64_0(1), FP64_RAND_V0(1), FP64_RAND_V1(0), FP64_RAND_V2(0) } },
     12766              /*mxcsr:in */ 0,
     12767              /*128:out  */ 0,
     12768              /*256:out  */ 0,
     12769              /*xcpt?    */ false, false },
     12770          { { /*src2     */ { FP64_0(1), FP64_RAND_V3(1), FP64_RAND_V1(1), FP64_RAND_V0(1) } },
     12771            { /*src1     */ { FP64_0(1), FP64_RAND_V1(0), FP64_RAND_V0(1), FP64_RAND_V2(1) } },
     12772            { /* =>      */ { FP64_0(1), FP64_RAND_V1(0), FP64_RAND_V0(1), FP64_RAND_V2(1) } },
     12773              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     12774              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     12775              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     12776              /*xcpt?    */ false, false },
     12777    /*
     12778     * Infinity.
     12779     */
     12780    /*11*/{ { /*src2     */ { FP64_INF(0), FP64_RAND_V3(1), FP64_RAND_V1(1), FP64_RAND_V0(1) } },
     12781            { /*src1     */ { FP64_0(0),   FP64_RAND_V1(0), FP64_RAND_V1(1), FP64_RAND_V2(1) } },
     12782            { /* =>      */ { FP64_0(0),   FP64_RAND_V1(0), FP64_RAND_V1(1), FP64_RAND_V2(1) } },
     12783              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     12784              /*128:out  */ X86_MXCSR_XCPT_MASK,
     12785              /*256:out  */ X86_MXCSR_XCPT_MASK,
     12786              /*xcpt?    */ false, false },
     12787          { { /*src2     */ { FP64_0(0),   FP64_RAND_V1(1), FP64_RAND_V1(1), FP64_RAND_V3(1) } },
     12788            { /*src1     */ { FP64_INF(0), FP64_RAND_V3(0), FP64_RAND_V2(1), FP64_RAND_V0(1) } },
     12789            { /* =>      */ { FP64_0(0),   FP64_RAND_V3(0), FP64_RAND_V2(1), FP64_RAND_V0(1) } },
     12790              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_UP,
     12791              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_UP,
     12792              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_UP,
     12793              /*xcpt?    */ false, false },
     12794          { { /*src2     */ { FP64_INF(0), FP64_INF(1),     FP64_SNAN(1),    FP64_QNAN(1)    } },
     12795            { /*src1     */ { FP64_0(0),   FP64_RAND_V3(0), FP64_RAND_V2(1), FP64_RAND_V0(1) } },
     12796            { /* =>      */ { FP64_0(0),   FP64_RAND_V3(0), FP64_RAND_V2(1), FP64_RAND_V0(1) } },
     12797              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12798              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12799              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12800              /*xcpt?    */ false, false },
     12801          { { /*src2     */ { FP64_0(0),   FP64_RAND_V2(1), FP64_RAND_V2(1), FP64_RAND_V3(0) } },
     12802            { /*src1     */ { FP64_INF(1), FP64_RAND_V0(0), FP64_RAND_V1(0), FP64_RAND_V0(1) } },
     12803            { /* =>      */ { FP64_INF(1), FP64_RAND_V0(0), FP64_RAND_V1(0), FP64_RAND_V0(1) } },
     12804              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     12805              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     12806              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     12807              /*xcpt?    */ false, false },
     12808          { { /*src2     */ { FP64_INF(0), FP64_RAND_V3(1), FP64_RAND_V3(1), FP64_RAND_V0(1) } },
     12809            { /*src1     */ { FP64_INF(0), FP64_RAND_V1(0), FP64_RAND_V2(1), FP64_RAND_V1(1) } },
     12810            { /* =>      */ { FP64_INF(0), FP64_RAND_V1(0), FP64_RAND_V2(1), FP64_RAND_V1(1) } },
     12811              /*mxcsr:in */ X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     12812              /*128:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     12813              /*256:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     12814              /*xcpt?    */ false, false },
     12815          { { /*src2     */ { FP64_INF(0), FP64_RAND_V2(0), FP64_RAND_V3(0), FP64_RAND_V0(0) } },
     12816            { /*src1     */ { FP64_INF(0), FP64_RAND_V0(1), FP64_RAND_V0(1), FP64_RAND_V3(1) } },
     12817            { /* =>      */ { FP64_INF(0), FP64_RAND_V0(1), FP64_RAND_V0(1), FP64_RAND_V3(1) } },
     12818              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12819              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12820              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12821              /*xcpt?    */ false, false },
     12822          { { /*src2     */ { FP64_INF(1), FP64_RAND_V3(0),   FP64_RAND_V2(1), FP64_RAND_V3(0) } },
     12823            { /*src1     */ { FP64_INF(1), FP64_QNAN_V(1, 1), FP64_RAND_V1(1), FP64_RAND_V2(0) } },
     12824            { /* =>      */ { FP64_INF(1), FP64_QNAN_V(1, 1), FP64_RAND_V1(1), FP64_RAND_V2(0) } },
     12825              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12826              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12827              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12828              /*xcpt?    */ false, false },
     12829          { { /*src2     */ { FP64_INF(1), FP64_RAND_V2(1), FP64_RAND_V1(1), FP64_RAND_V0(1) } },
     12830            { /*src1     */ { FP64_INF(1), FP64_RAND_V0(0), FP64_RAND_V3(1), FP64_RAND_V0(1) } },
     12831            { /* =>      */ { FP64_INF(1), FP64_RAND_V0(0), FP64_RAND_V3(1), FP64_RAND_V0(1) } },
     12832              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     12833              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     12834              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     12835              /*xcpt?    */ false, false },
     12836          { { /*src2     */ { FP64_INF(1), FP64_RAND_V1(1), FP64_RAND_V3(1), FP64_RAND_V0(1) } },
     12837            { /*src1     */ { FP64_INF(0), FP64_RAND_V1(0), FP64_RAND_V2(1), FP64_RAND_V1(1) } },
     12838            { /* =>      */ { FP64_INF(1), FP64_RAND_V1(0), FP64_RAND_V2(1), FP64_RAND_V1(1) } },
     12839              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_UP,
     12840              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_UP,
     12841              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_UP,
     12842              /*xcpt?    */ false, false },
     12843          { { /*src2     */ { FP64_INF(1), FP64_RAND_V0(1), FP64_RAND_V2(1), FP64_RAND_V0(1) } },
     12844            { /*src1     */ { FP64_INF(0), FP64_RAND_V0(0), FP64_RAND_V2(0), FP64_RAND_V3(1) } },
     12845            { /* =>      */ { FP64_INF(1), FP64_RAND_V0(0), FP64_RAND_V2(0), FP64_RAND_V3(1) } },
     12846              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12847              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12848              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12849              /*xcpt?    */ false, false },
     12850          { { /*src2     */ { FP64_INF(0), FP64_RAND_V2(1), FP64_RAND_V3(1), FP64_RAND_V0(1) } },
     12851            { /*src1     */ { FP64_INF(1), FP64_RAND_V2(0), FP64_RAND_V3(0), FP64_RAND_V1(1) } },
     12852            { /* =>      */ { FP64_INF(1), FP64_RAND_V2(0), FP64_RAND_V3(0), FP64_RAND_V1(1) } },
     12853              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12854              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12855              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12856              /*xcpt?    */ false, false },
     12857          { { /*src2     */ { FP64_INF(0), FP64_RAND_V0(1), FP64_RAND_V2(1), FP64_RAND_V0(1) } },
     12858            { /*src1     */ { FP64_INF(1), FP64_RAND_V0(0), FP64_RAND_V2(0), FP64_RAND_V3(1) } },
     12859            { /* =>      */ { FP64_INF(1), FP64_RAND_V0(0), FP64_RAND_V2(0), FP64_RAND_V3(1) } },
     12860              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ,
     12861              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ,
     12862              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ,
     12863              /*xcpt?    */ false, false },
     12864          { { /*src2     */ { FP64_INF(0),     FP64_RAND_V0(0), FP64_RAND_V2(1), FP64_RAND_V0(1) } },
     12865            { /*src1     */ { FP64_NORM_V0(0), FP64_RAND_V1(1), FP64_RAND_V3(1), FP64_RAND_V1(1) } },
     12866            { /* =>      */ { FP64_NORM_V0(0), FP64_RAND_V1(1), FP64_RAND_V3(1), FP64_RAND_V1(1) } },
     12867              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     12868              /*128:out  */ X86_MXCSR_XCPT_MASK,
     12869              /*256:out  */ X86_MXCSR_XCPT_MASK,
     12870              /*xcpt?    */ false, false },
     12871          { { /*src2     */ { FP64_INF(0),     FP64_INF(0), FP64_SNAN(1), FP64_INF(1)  } },
     12872            { /*src1     */ { FP64_NORM_V3(0), FP64_INF(1), FP64_QNAN(1), FP64_SNAN(1) } },
     12873            { /* =>      */ { FP64_NORM_V3(0), FP64_INF(1), FP64_QNAN(1), FP64_SNAN(1) } },
     12874              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     12875              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     12876              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     12877              /*xcpt?    */ false, false },
     12878          { { /*src2     */ { FP64_NORM_V2(0), FP64_RAND_V3(1), FP64_QNAN(1),    FP64_SNAN(1)    } },
     12879            { /*src1     */ { FP64_INF(1),     FP64_RAND_V2(1), FP64_RAND_V2(1), FP64_RAND_V1(1) } },
     12880            { /* =>      */ { FP64_INF(1),     FP64_RAND_V2(1), FP64_RAND_V2(1), FP64_RAND_V1(1) } },
     12881              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     12882              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     12883              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     12884              /*xcpt?    */ false, false },
     12885          { { /*src2     */ { FP64_NORM_V2(0), FP64_SNAN_V(0, 1), FP64_RAND_V2(0), FP64_RAND_V3(0) } },
     12886            { /*src1     */ { FP64_INF(0),     FP64_RAND_V2(0),   FP64_RAND_V1(0), FP64_RAND_V2(1) } },
     12887            { /* =>      */ { FP64_NORM_V2(0), FP64_RAND_V2(0),   FP64_RAND_V1(0), FP64_RAND_V2(1) } },
     12888              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12889              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12890              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12891              /*xcpt?    */ false, false },
     12892    /*
     12893     * Normals.
     12894     */
     12895    /*27*/{ { /*src2     */ { FP64_NORM_MAX(0), FP64_RAND_V2(1), FP64_RAND_V0(1), FP64_RAND_V3(1) } },
     12896            { /*src1     */ { FP64_NORM_MAX(0), FP64_RAND_V3(1), FP64_RAND_V2(0), FP64_RAND_V2(1) } },
     12897            { /* =>      */ { FP64_NORM_MAX(0), FP64_RAND_V3(1), FP64_RAND_V2(0), FP64_RAND_V2(1) } },
     12898              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     12899              /*128:out  */ X86_MXCSR_XCPT_MASK,
     12900              /*256:out  */ X86_MXCSR_XCPT_MASK,
     12901              /*xcpt?    */ false, false },
     12902          { { /*src2     */ { FP64_NORM_MIN(0), FP64_RAND_V3(1), FP64_RAND_V2(1), FP64_RAND_V3(1) } },
     12903            { /*src1     */ { FP64_NORM_MIN(0), FP64_RAND_V2(0), FP64_RAND_V1(1), FP64_RAND_V2(1) } },
     12904            { /* =>      */ { FP64_NORM_MIN(0), FP64_RAND_V2(0), FP64_RAND_V1(1), FP64_RAND_V2(1) } },
     12905              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     12906              /*128:out  */ X86_MXCSR_XCPT_MASK,
     12907              /*256:out  */ X86_MXCSR_XCPT_MASK,
     12908              /*xcpt?    */ false, false },
     12909          { { /*src2     */ { FP64_NORM_MIN(0), FP64_RAND_V3(1), FP64_RAND_V0(1), FP64_RAND_V3(0) } },
     12910            { /*src1     */ { FP64_NORM_MAX(0), FP64_RAND_V1(0), FP64_RAND_V3(0), FP64_RAND_V1(0) } },
     12911            { /* =>      */ { FP64_NORM_MIN(0), FP64_RAND_V1(0), FP64_RAND_V3(0), FP64_RAND_V1(0) } },
     12912              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     12913              /*128:out  */ X86_MXCSR_XCPT_MASK,
     12914              /*256:out  */ X86_MXCSR_XCPT_MASK,
     12915              /*xcpt?    */ false, false },
     12916          { { /*src2     */ { FP64_NORM_MAX(0), FP64_RAND_V2(1), FP64_RAND_V2(1), FP64_RAND_V3(0) } },
     12917            { /*src1     */ { FP64_NORM_MAX(0), FP64_RAND_V0(0), FP64_RAND_V1(0), FP64_RAND_V1(1) } },
     12918            { /* =>      */ { FP64_NORM_MAX(0), FP64_RAND_V0(0), FP64_RAND_V1(0), FP64_RAND_V1(1) } },
     12919              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     12920              /*128:out  */ X86_MXCSR_XCPT_MASK,
     12921              /*256:out  */ X86_MXCSR_XCPT_MASK,
     12922              /*xcpt?    */ false, false },
     12923          { { /*src2     */ { FP64_NORM_SAFE_INT_MIN(0), FP64_RAND_V2(1), FP64_RAND_V2(1), FP64_RAND_V3(0) } },
     12924            { /*src1     */ { FP64_NORM_SAFE_INT_MAX(0), FP64_RAND_V1(0), FP64_RAND_V1(0), FP64_RAND_V3(1) } },
     12925            { /* =>      */ { FP64_NORM_SAFE_INT_MIN(0), FP64_RAND_V1(0), FP64_RAND_V1(0), FP64_RAND_V3(1) } },
     12926              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     12927              /*128:out  */ X86_MXCSR_XCPT_MASK,
     12928              /*256:out  */ X86_MXCSR_XCPT_MASK,
     12929              /*xcpt?    */ false, false },
     12930          { { /*src2     */ { FP64_NORM_SAFE_INT_MAX(0), FP64_RAND_V3(0), FP64_RAND_V2(0), FP64_RAND_V3(1) } },
     12931            { /*src1     */ { FP64_NORM_SAFE_INT_MAX(0), FP64_RAND_V1(1), FP64_RAND_V2(1), FP64_RAND_V3(1) } },
     12932            { /* =>      */ { FP64_NORM_SAFE_INT_MAX(0), FP64_RAND_V1(1), FP64_RAND_V2(1), FP64_RAND_V3(1) } },
     12933              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     12934              /*128:out  */ X86_MXCSR_XCPT_MASK,
     12935              /*256:out  */ X86_MXCSR_XCPT_MASK,
     12936              /*xcpt?    */ false, false },
     12937          { { /*src2     */ { FP64_NORM_SAFE_INT_MAX(0), FP64_INF(0),     FP64_QNAN(1),    FP64_QNAN(0)    } },
     12938            { /*src1     */ { FP64_NORM_SAFE_INT_MIN(0), FP64_RAND_V1(0), FP64_RAND_V2(1), FP64_RAND_V0(1) } },
     12939            { /* =>      */ { FP64_NORM_SAFE_INT_MIN(0), FP64_RAND_V1(0), FP64_RAND_V2(1), FP64_RAND_V0(1) } },
     12940              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     12941              /*128:out  */ X86_MXCSR_XCPT_MASK,
     12942              /*256:out  */ X86_MXCSR_XCPT_MASK,
     12943              /*xcpt?    */ false, false },
     12944          { { /*src2     */ { FP64_V(0, 0, 0x409)/*1024*/,  FP64_RAND_V1(1), FP64_RAND_V2(1), FP64_RAND_V3(1) } },
     12945            { /*src1     */ { FP64_V(0, 0, 0x408)/* 512*/,  FP64_RAND_V1(0), FP64_RAND_V2(1), FP64_RAND_V3(1) } },
     12946            { /* =>      */ { FP64_V(0, 0, 0x408)/* 512*/,  FP64_RAND_V1(0), FP64_RAND_V2(1), FP64_RAND_V3(1) } },
     12947              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     12948              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     12949              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     12950              /*xcpt?    */ false, false },
     12951          { { /*src2     */ { FP64_V(0, 0xc122186c3cfd0, 0x42d)/*123456789876543.25*/,  FP64_RAND_V2(1), FP64_RAND_V2(0), FP64_RAND_V3(1) } },
     12952            { /*src1     */ { FP64_V(0, 0xb88e0395d49b0, 0x42d)/*121098765432102.75*/,  FP64_RAND_V0(0), FP64_RAND_V2(0), FP64_RAND_V0(0) } },
     12953            { /* =>      */ { FP64_V(0, 0xb88e0395d49b0, 0x42d)/*121098765432102.75*/,  FP64_RAND_V0(0), FP64_RAND_V2(0), FP64_RAND_V0(0) } },
     12954              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     12955              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     12956              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     12957              /*xcpt?    */ false, false },
     12958          { { /*src2     */ { FP64_NORM_MAX(0), FP64_RAND_V0(1), FP64_RAND_V2(1), FP64_RAND_V3(1) } },
     12959            { /*src1     */ { FP64_NORM_V1(0),  FP64_RAND_V0(1), FP64_RAND_V2(0), FP64_RAND_V3(0) } },
     12960            { /* =>      */ { FP64_NORM_V1(0),  FP64_RAND_V0(1), FP64_RAND_V2(0), FP64_RAND_V3(0) } },
     12961              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_DOWN,
     12962              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_DOWN,
     12963              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_DOWN,
     12964              /*xcpt?    */ false, false },
     12965          { { /*src2     */ { FP64_V(0, 0xc000000000000, 0x3ff)/*1.75*/, FP64_RAND_V3(0), FP64_RAND_V2(1), FP64_RAND_V3(0) } },
     12966            { /*src1     */ { FP64_V(0, 0,               0x3fd)/*0.25*/, FP64_RAND_V0(0), FP64_RAND_V1(1), FP64_RAND_V1(0) } },
     12967            { /* =>      */ { FP64_V(0, 0,               0x3fd)/*0.25*/, FP64_RAND_V0(0), FP64_RAND_V1(1), FP64_RAND_V1(0) } },
     12968              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12969              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12970              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12971              /*xcpt?    */ false, false },
     12972          { { /*src2     */ { FP64_V(1, 0, 0x3fd)/*-0.25*/, FP64_RAND_V2(1), FP64_RAND_V2(1), FP64_RAND_V3(0) } },
     12973            { /*src1     */ { FP64_V(1, 0, 0x3fe)/*-0.50*/, FP64_RAND_V0(0), FP64_RAND_V1(0), FP64_RAND_V1(1) } },
     12974            { /* =>      */ { FP64_V(1, 0, 0x3fe)/*-0.50*/, FP64_RAND_V0(0), FP64_RAND_V1(0), FP64_RAND_V1(1) } },
     12975              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12976              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12977              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12978              /*xcpt?    */ false, false },
     12979          { { /*src2     */ { FP64_V(0, 0x26580b4c7e6b7, 0x41d)/*1234567891.1234567*/, FP64_RAND_V2(1), FP64_RAND_V3(1), FP64_RAND_V3(1) } },
     12980            { /*src1     */ { FP64_V(0, 0x26580b4c7e6bc, 0x41d)/*1234567891.1234580*/, FP64_RAND_V3(0), FP64_RAND_V1(0), FP64_RAND_V0(1) } },
     12981            { /* =>      */ { FP64_V(0, 0x26580b4c7e6b7, 0x41d)/*1234567891.1234567*/, FP64_RAND_V3(0), FP64_RAND_V1(0), FP64_RAND_V0(1) } },
     12982              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12983              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12984              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12985              /*xcpt?    */ false, false },
     12986          { { /*src2     */ { FP64_V(0, 0xf9b0207d06184, 0x3fb)/*0.1234589833333129*/, FP64_RAND_V3(1), FP64_RAND_V2(1), FP64_RAND_V3(1) } },
     12987            { /*src1     */ { FP64_V(0, 0xf9b0207d0617d, 0x3fb)/*0.1234589833333128*/, FP64_RAND_V1(1), FP64_RAND_V0(0), FP64_RAND_V0(1) } },
     12988            { /* =>      */ { FP64_V(0, 0xf9b0207d0617d, 0x3fb)/*0.1234589833333128*/, FP64_RAND_V1(1), FP64_RAND_V0(0), FP64_RAND_V0(1) } },
     12989              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12990              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12991              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12992              /*xcpt?    */ false, false },
     12993          { { /*src2     */ { FP64_V(0, 0xb88e0395d49b0, 0x42d)/* 121098765432102.75*/,  FP64_RAND_V2(1), FP64_RAND_V2(1), FP64_RAND_V3(1) } },
     12994            { /*src1     */ { FP64_V(1, 0xbcd80e0108cc0, 0x42e)/*-244555555308646.00*/,  FP64_RAND_V3(0), FP64_RAND_V3(1), FP64_RAND_V0(1) } },
     12995            { /* =>      */ { FP64_V(1, 0xbcd80e0108cc0, 0x42e)/*-244555555308646.00*/,  FP64_RAND_V3(0), FP64_RAND_V3(1), FP64_RAND_V0(1) } },
     12996              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12997              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12998              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     12999              /*xcpt?    */ false, false },
     13000          { { /*src2     */ { FP64_V(0, 0xcf0033a34f337, 0x432)/*4072598000007579.5*/, FP64_RAND_V3(1), FP64_RAND_V2(1), FP64_RAND_V1(1) } },
     13001            { /*src1     */ { FP64_V(0, 0xd6eca42000000, 0x419)/*       123450000.5*/, FP64_RAND_V3(0), FP64_RAND_V2(0), FP64_RAND_V3(1) } },
     13002            { /* =>      */ { FP64_V(0, 0xd6eca42000000, 0x419)/*       123450000.5*/, FP64_RAND_V3(0), FP64_RAND_V2(0), FP64_RAND_V3(1) } },
     13003              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     13004              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     13005              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     13006              /*xcpt?    */ false, false },
     13007          { { /*src2     */ { FP64_V(1, 0xbcd80e0108cc0, 0x42e)/*-244555555308646.00*/, FP64_INF(1), FP64_SNAN(1), FP64_INF(1)  } },
     13008            { /*src1     */ { FP64_V(0, 0xb88e0395d49b0, 0x42d)/* 121098765432102.75*/, FP64_INF(1), FP64_QNAN(0), FP64_SNAN(0) } },
     13009            { /* =>      */ { FP64_V(1, 0xbcd80e0108cc0, 0x42e)/*-244555555308646.00*/, FP64_INF(1), FP64_QNAN(0), FP64_SNAN(0) } },
     13010              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     13011              /*128:out  */ X86_MXCSR_XCPT_MASK,
     13012              /*256:out  */ X86_MXCSR_XCPT_MASK,
     13013              /*xcpt?    */ false, false },
     13014          { { /*src2     */ { FP64_V(0, 0xbcd80e0108cc0, 0x42e)/* 244555555308646.00*/, FP64_RAND_V3(0), FP64_RAND_V2(0), FP64_RAND_V3(0) } },
     13015            { /*src1     */ { FP64_V(1, 0xb88e0395d49b0, 0x42d)/*-121098765432102.75*/, FP64_RAND_V0(0), FP64_RAND_V0(0), FP64_RAND_V2(1) } },
     13016            { /* =>      */ { FP64_V(1, 0xb88e0395d49b0, 0x42d)/*-121098765432102.75*/, FP64_RAND_V0(0), FP64_RAND_V0(0), FP64_RAND_V2(1) } },
     13017              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     13018              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     13019              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     13020              /*xcpt?    */ false, false },
     13021          { { /*src2     */ { FP64_V(1, 0xcf0033a34f337, 0x432)/*-4072598000007579.5*/, FP64_RAND_V1(0), FP64_RAND_V2(0), FP64_RAND_V1(0) } },
     13022            { /*src1     */ { FP64_V(0, 0xd6eca42000000, 0x419)/*        123450000.5*/, FP64_RAND_V2(0), FP64_RAND_V2(1), FP64_RAND_V3(0) } },
     13023            { /* =>      */ { FP64_V(1, 0xcf0033a34f337, 0x432)/*-4072598000007579.5*/, FP64_RAND_V2(0), FP64_RAND_V2(1), FP64_RAND_V3(0) } },
     13024              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_UP,
     13025              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_UP,
     13026              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_UP,
     13027              /*xcpt?    */ false, false },
     13028    /** @todo More Normals. */
     13029    /*
     13030     * Denormals.
     13031     */
     13032    /*46*/{ { /*src2     */ { FP64_DENORM_MAX(0), FP64_RAND_V2(0), FP64_RAND_V0(1), FP64_RAND_V3(0) } },
     13033            { /*src1     */ { FP64_0(0),          FP64_RAND_V3(0), FP64_RAND_V2(0), FP64_RAND_V2(1) } },
     13034            { /* =>      */ { FP64_0(0),          FP64_RAND_V3(1), FP64_RAND_V2(0), FP64_RAND_V2(1) } },
     13035              /*mxcsr:in */ 0,
     13036              /*128:out  */ X86_MXCSR_DE,
     13037              /*256:out  */ X86_MXCSR_DE,
     13038              /*xcpt?    */ true, true },
     13039          { { /*src2     */ { FP64_0(0),          FP64_SNAN(0),    FP64_QNAN(1),    FP64_QNAN(0)    } },
     13040            { /*src1     */ { FP64_DENORM_MAX(0), FP64_RAND_V2(0), FP64_RAND_V3(1), FP64_RAND_V2(0) } },
     13041            { /* =>      */ { FP64_0(0),          FP64_RAND_V2(0), FP64_RAND_V3(1), FP64_RAND_V2(0) } },
     13042              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     13043              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
     13044              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
     13045              /*xcpt?    */ false, false },
     13046          { { /*src2     */ { FP64_DENORM_MIN(0), FP64_INF(1), FP64_SNAN(0), FP64_INF(1)  } },
     13047            { /*src1     */ { FP64_DENORM_MAX(0), FP64_INF(0), FP64_QNAN(1), FP64_SNAN(1) } },
     13048            { /* =>      */ { FP64_0(0),          FP64_INF(0), FP64_QNAN(1), FP64_SNAN(1) } },
     13049              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_RC_UP,
     13050              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_RC_UP,
     13051              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_RC_UP,
     13052              /*xcpt?    */ false, false },
     13053          { { /*src2     */ { FP64_DENORM_MAX(0), FP64_RAND_V2(1), FP64_RAND_V0(1), FP64_RAND_V3(0) } },
     13054            { /*src1     */ { FP64_DENORM_MAX(0), FP64_RAND_V3(0), FP64_RAND_V2(0), FP64_RAND_V3(1) } },
     13055            { /* =>      */ { FP64_DENORM_MAX(0), FP64_RAND_V3(0), FP64_RAND_V2(0), FP64_RAND_V3(1) } },
     13056              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     13057              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
     13058              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
     13059              /*xcpt?    */ false, false },
     13060          { { /*src2     */ { FP64_DENORM_MAX(0), FP64_RAND_V1(1), FP64_RAND_V2(1), FP64_RAND_V2(0) } },
     13061            { /*src1     */ { FP64_DENORM_MAX(1), FP64_RAND_V0(0), FP64_RAND_V3(0), FP64_RAND_V0(0) } },
     13062            { /* =>      */ { FP64_DENORM_MAX(1), FP64_RAND_V0(0), FP64_RAND_V3(0), FP64_RAND_V0(0) } },
     13063              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     13064              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
     13065              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
     13066              /*xcpt?    */ false, false },
     13067          { { /*src2     */ { FP64_DENORM_MAX(1), FP64_RAND_V3(1), FP64_RAND_V0(0), FP64_RAND_V3(1) } },
     13068            { /*src1     */ { FP64_DENORM_MAX(0), FP64_RAND_V2(1), FP64_RAND_V3(1), FP64_RAND_V2(1) } },
     13069            { /* =>      */ { FP64_DENORM_MAX(1), FP64_RAND_V2(1), FP64_RAND_V3(1), FP64_RAND_V2(1) } },
     13070              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     13071              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
     13072              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
     13073              /*xcpt?    */ false, false },
     13074          { { /*src2     */ { FP64_DENORM_MIN(1), FP64_RAND_V0(1), FP64_RAND_V3(1), FP64_RAND_V2(1) } },
     13075            { /*src1     */ { FP64_DENORM_MIN(0), FP64_RAND_V0(1), FP64_RAND_V1(0), FP64_RAND_V2(1) } },
     13076            { /* =>      */ { FP64_DENORM_MIN(1), FP64_RAND_V0(1), FP64_RAND_V1(0), FP64_RAND_V2(1) } },
     13077              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     13078              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
     13079              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
     13080              /*xcpt?    */ false, false },
     13081          { { /*src2     */ { FP64_DENORM_MIN(1), FP64_INF(0),     FP64_QNAN(1),    FP64_SNAN_V(1, 1) } },
     13082            { /*src1     */ { FP64_DENORM_MIN(1), FP64_RAND_V1(0), FP64_RAND_V2(1), FP64_RAND_V0(1)   } },
     13083            { /* =>      */ { FP64_DENORM_MIN(1), FP64_RAND_V1(0), FP64_RAND_V2(1), FP64_RAND_V0(1)   } },
     13084              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     13085              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
     13086              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
     13087              /*xcpt?    */ false, false },
     13088          { { /*src2     */ { FP64_DENORM_MIN(1), FP64_SNAN(1),    FP64_SNAN(0),    FP64_QNAN(0)    } },
     13089            { /*src1     */ { FP64_DENORM_MIN(1), FP64_RAND_V1(0), FP64_RAND_V2(1), FP64_RAND_V0(1) } },
     13090            { /* =>      */ { FP64_0(1),          FP64_RAND_V1(0), FP64_RAND_V2(1), FP64_RAND_V0(1) } },
     13091              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ,
     13092              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ,
     13093              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ,
     13094              /*xcpt?    */ false, false },
     13095          { { /*src2     */ { FP64_DENORM_MIN(0), FP64_RAND_V0(1), FP64_RAND_V1(0), FP64_RAND_V2(1) } },
     13096            { /*src1     */ { FP64_0(0),          FP64_RAND_V0(0), FP64_RAND_V1(1), FP64_RAND_V2(0) } },
     13097            { /* =>      */ { FP64_0(0),          FP64_RAND_V0(0), FP64_RAND_V1(1), FP64_RAND_V2(0) } },
     13098              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     13099              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
     13100              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
     13101              /*xcpt?    */ false, false },
     13102    /** @todo More Denormals. */
     13103    /*
     13104     * Invalids.
     13105     */
     13106    /*56*/ FP64_TABLE_D9_SD_INVALIDS
     13107    };
     13108
     13109#define PASS_s_aValues RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues
     13110    static BS3CPUINSTR4_TEST1_T const s_aTests16[] =
     13111    {
     13112        { bs3CpuInstr4_minsd_XMM3_XMM4_icebp_c16,  255, RM_REG, T_SSE2, 3, 3, 4,   PASS_s_aValues },
     13113        { bs3CpuInstr4_minsd_XMM3_FSxBX_icebp_c16, 255, RM_MEM, T_SSE2, 3, 3, 255, PASS_s_aValues },
     13114
     13115        { bs3CpuInstr4_vminsd_XMM1_XMM6_XMM7_icebp_c16,  255,         RM_REG, T_AVX_128, 1, 6, 7,   PASS_s_aValues },
     13116        { bs3CpuInstr4_vminsd_XMM1_XMM6_FSxBX_icebp_c16, X86_XCPT_AC, RM_MEM, T_AVX_128, 1, 6, 255, PASS_s_aValues },
     13117    };
     13118    static BS3CPUINSTR4_TEST1_T const s_aTests32[] =
     13119    {
     13120        { bs3CpuInstr4_minsd_XMM3_XMM4_icebp_c32,  255, RM_REG, T_SSE2, 3, 3, 4,   PASS_s_aValues },
     13121        { bs3CpuInstr4_minsd_XMM3_FSxBX_icebp_c32, 255, RM_MEM, T_SSE2, 3, 3, 255, PASS_s_aValues },
     13122
     13123        { bs3CpuInstr4_vminsd_XMM1_XMM6_XMM7_icebp_c32,  255,         RM_REG, T_AVX_128, 1, 6, 7,   PASS_s_aValues },
     13124        { bs3CpuInstr4_vminsd_XMM1_XMM6_FSxBX_icebp_c32, X86_XCPT_AC, RM_MEM, T_AVX_128, 1, 6, 255, PASS_s_aValues },
     13125    };
     13126    static BS3CPUINSTR4_TEST1_T const s_aTests64[] =
     13127    {
     13128        { bs3CpuInstr4_minsd_XMM3_XMM4_icebp_c64,  255, RM_REG, T_SSE2, 3, 3, 4,   PASS_s_aValues },
     13129        { bs3CpuInstr4_minsd_XMM3_FSxBX_icebp_c64, 255, RM_MEM, T_SSE2, 3, 3, 255, PASS_s_aValues },
     13130
     13131        { bs3CpuInstr4_vminsd_XMM1_XMM6_XMM7_icebp_c64,  255,         RM_REG, T_AVX_128, 1, 6, 7,   PASS_s_aValues },
     13132        { bs3CpuInstr4_vminsd_XMM1_XMM6_FSxBX_icebp_c64, X86_XCPT_AC, RM_MEM, T_AVX_128, 1, 6, 255, PASS_s_aValues },
     13133
     13134        { bs3CpuInstr4_minsd_XMM8_XMM9_icebp_c64,  255,         RM_REG, T_SSE2, 8, 8, 9,   PASS_s_aValues },
     13135        { bs3CpuInstr4_minsd_XMM8_FSxBX_icebp_c64, X86_XCPT_AC, RM_MEM, T_SSE2, 8, 8, 255, PASS_s_aValues },
     13136
     13137        { bs3CpuInstr4_vminsd_XMM8_XMM9_XMM10_icebp_c64, 255,         RM_REG, T_AVX_128, 8, 9, 10,  PASS_s_aValues },
     13138        { bs3CpuInstr4_vminsd_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_AC, RM_MEM, T_AVX_128, 8, 9, 255, PASS_s_aValues },
     13139    };
     13140#undef PASS_s_aValues
     13141
     13142    static BS3CPUINSTR4_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR4_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     13143    unsigned const                         iTest       = BS3CPUINSTR4_TEST_MODES_INDEX(bMode);
     13144    return bs3CpuInstr4_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
     13145                                        g_aXcptConfig3, RT_ELEMENTS(g_aXcptConfig3));
     13146}
     13147
     13148
     13149/*
    1269113150 * [V]SQRTPS.
    1269213151 */
     
    1311913578        { "[v]minpd",       bs3CpuInstr4_v_minpd,    0 },
    1312013579        { "[v]minss",       bs3CpuInstr4_v_minss,    0 },
     13580        { "[v]minsd",       bs3CpuInstr4_v_minsd,    0 },
    1312113581        { "[v]sqrtps",      bs3CpuInstr4_v_sqrtps,   0 },
    1312213582#endif
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