Changeset 106082 in vbox for trunk/src/VBox/ValidationKit
- Timestamp:
- Sep 18, 2024 1:35:20 PM (8 months ago)
- svn:sync-xref-src-repo-rev:
- 164852
- Location:
- trunk/src/VBox/ValidationKit/bootsectors
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-4-template.mac
r106059 r106082 435 435 436 436 ; 437 ;; [v]divps 438 ; 439 EMIT_INSTR_PLUS_ICEBP divps, XMM1, XMM2 440 EMIT_INSTR_PLUS_ICEBP divps, XMM1, FSxBX 441 EMIT_INSTR_PLUS_ICEBP_C64 divps, XMM8, XMM9 442 EMIT_INSTR_PLUS_ICEBP_C64 divps, XMM8, FSxBX 443 444 EMIT_INSTR_PLUS_ICEBP vdivps, XMM1, XMM2, XMM3 445 EMIT_INSTR_PLUS_ICEBP vdivps, XMM1, XMM2, FSxBX 446 EMIT_INSTR_PLUS_ICEBP_C64 vdivps, XMM8, XMM9, XMM10 447 EMIT_INSTR_PLUS_ICEBP_C64 vdivps, XMM8, XMM9, FSxBX 448 449 EMIT_INSTR_PLUS_ICEBP vdivps, YMM1, YMM2, YMM3 450 EMIT_INSTR_PLUS_ICEBP vdivps, YMM1, YMM2, FSxBX 451 EMIT_INSTR_PLUS_ICEBP_C64 vdivps, YMM8, YMM9, YMM10 452 EMIT_INSTR_PLUS_ICEBP_C64 vdivps, YMM8, YMM9, FSxBX 453 454 ; 437 455 ;; [v]addsubps 438 456 ; -
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-4.c32
r106069 r106082 8024 8024 8025 8025 /* 8026 * [V]DIVPS. 8027 */ 8028 BS3_DECL_FAR(uint8_t) bs3CpuInstr4_v_divps(uint8_t bMode) 8029 { 8030 static BS3CPUINSTR4_TEST1_VALUES_PS_T const s_aValues[] = 8031 { 8032 /** @todo Improve port from mulps */ 8033 /* 8034 * Zero. 8035 */ 8036 /* 0*/{ { /*src2 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 8037 { /*src1 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 8038 { /* => */ { FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1) } }, 8039 /*mxcsr:in */ X86_MXCSR_XCPT_MASK, 8040 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE, 8041 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE, 8042 /*xcpt? */ false, false }, 8043 { { /*src2 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 8044 { /*src1 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 8045 { /* => */ { FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1) } }, 8046 /*mxcsr:in */ 0, 8047 /*128:out */ X86_MXCSR_IE, 8048 /*256:out */ X86_MXCSR_IE, 8049 /*xcpt? */ true, true }, 8050 { { /*src2 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 8051 { /*src1 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 8052 { /* => */ { FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1) } }, 8053 /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP, 8054 /*128:out */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP | X86_MXCSR_IE, 8055 /*256:out */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP | X86_MXCSR_IE, 8056 /*xcpt? */ true, true }, 8057 { { /*src2 */ { FP32_0(1), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(1) } }, 8058 { /*src1 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 8059 { /* => */ { FP32_QNAN(1), FP32_QNAN(0), FP32_QNAN(0), FP32_QNAN(0), FP32_QNAN(0), FP32_QNAN(0), FP32_QNAN(0), FP32_QNAN(1) } }, 8060 /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO, 8061 /*128:out */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE, 8062 /*256:out */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE, 8063 /*xcpt? */ true, true }, 8064 { { /*src2 */ { FP32_0(0), FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(1), FP32_0(1) } }, 8065 { /*src1 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 8066 { /* => */ { FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1) } }, 8067 /*mxcsr:in */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO, 8068 /*128:out */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE, 8069 /*256:out */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE, 8070 /*xcpt? */ true, true }, 8071 { { /*src2 */ { FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(1) } }, 8072 { /*src1 */ { FP32_0(0), FP32_0(1), FP32_0(1), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(1), FP32_0(0) } }, 8073 { /* => */ { FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1) } }, 8074 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO, 8075 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE, 8076 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE, 8077 /*xcpt? */ false, false }, 8078 { { /*src2 */ { FP32_NORM_V0(0), FP32_NORM_V1(1), FP32_0(0), FP32_NORM_V3(1), FP32_0(0), FP32_NORM_V1(1), FP32_NORM_V4(0), FP32_NORM_V3(0) } }, 8079 { /*src1 */ { FP32_0(0), FP32_0(1), FP32_0(1), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(1) } }, 8080 { /* => */ { FP32_0(0), FP32_0(0), FP32_QNAN(1), FP32_0(1), FP32_QNAN(1), FP32_0(1), FP32_0(0), FP32_0(1) } }, 8081 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN, 8082 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_IE, 8083 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_IE, 8084 /*xcpt? */ false, false }, 8085 /* 8086 * Infinity. 8087 */ 8088 /* 7*/{ { /*src2 */ { FP32_INF(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 8089 { /*src1 */ { FP32_INF(1), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 8090 { /* => */ { FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1) } }, 8091 /*mxcsr:in */ X86_MXCSR_XCPT_MASK & ~X86_MXCSR_IM, 8092 /*128:out */ (X86_MXCSR_XCPT_MASK & ~X86_MXCSR_IM) | X86_MXCSR_IE, 8093 /*256:out */ (X86_MXCSR_XCPT_MASK & ~X86_MXCSR_IM) | X86_MXCSR_IE, 8094 /*xcpt? */ true, true }, 8095 { { /*src2 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_INF(1), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 8096 { /*src1 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_INF(1), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } }, 8097 { /* => */ { FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1) } }, 8098 /*mxcsr:in */ X86_MXCSR_XCPT_MASK, 8099 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE, 8100 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE, 8101 /*xcpt? */ false, false }, 8102 { { /*src2 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_INF(0), FP32_0(1), FP32_0(1), FP32_0(0) } }, 8103 { /*src1 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_INF(1), FP32_0(0), FP32_0(0), FP32_0(0) } }, 8104 { /* => */ { FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1) } }, 8105 /*mxcsr:in */ X86_MXCSR_FZ | X86_MXCSR_XCPT_MASK, 8106 /*128:out */ X86_MXCSR_FZ | X86_MXCSR_XCPT_MASK | X86_MXCSR_IE, 8107 /*256:out */ X86_MXCSR_FZ | X86_MXCSR_XCPT_MASK | X86_MXCSR_IE, 8108 /*xcpt? */ false, false }, 8109 { { /*src2 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_INF(0) } }, 8110 { /*src1 */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_INF(1) } }, 8111 { /* => */ { FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1) } }, 8112 /*mxcsr:in */ X86_MXCSR_FZ, 8113 /*128:out */ X86_MXCSR_FZ | X86_MXCSR_IE, 8114 /*256:out */ X86_MXCSR_FZ | X86_MXCSR_IE, 8115 /*xcpt? */ true, true }, 8116 { { /*src2 */ { FP32_INF(0), FP32_INF(1), FP32_0(0), FP32_INF(1), FP32_0(1), FP32_INF(1), FP32_INF(1), FP32_INF(0) } }, 8117 { /*src1 */ { FP32_INF(1), FP32_INF(1), FP32_0(1), FP32_INF(1), FP32_0(1), FP32_INF(1), FP32_INF(1), FP32_INF(1) } }, 8118 { /* => */ { FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1) } }, 8119 /*mxcsr:in */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO, 8120 /*128:out */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE, 8121 /*256:out */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE, 8122 /*xcpt? */ true, true }, 8123 { { /*src2 */ { FP32_INF(0), FP32_INF(1), FP32_QNAN(0), FP32_QNAN(1), FP32_INF(0), FP32_QNAN(1), FP32_QNAN(0), FP32_INF(1) } }, 8124 { /*src1 */ { FP32_QNAN(0), FP32_QNAN(0), FP32_INF(1), FP32_INF(1), FP32_QNAN(1), FP32_INF(0), FP32_INF(0), FP32_QNAN(1) } }, 8125 { /* => */ { FP32_QNAN(0), FP32_QNAN(0), FP32_QNAN(0), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(0), FP32_QNAN(1) } }, 8126 /*mxcsr:in */ X86_MXCSR_XCPT_MASK, 8127 /*128:out */ X86_MXCSR_XCPT_MASK, 8128 /*256:out */ X86_MXCSR_XCPT_MASK, 8129 /*xcpt? */ false, false }, 8130 { { /*src2 */ { FP32_INF(0), FP32_INF(1), FP32_QNAN(0), FP32_QNAN(1), FP32_INF(0), FP32_QNAN(1), FP32_QNAN(0), FP32_INF(1) } }, 8131 { /*src1 */ { FP32_QNAN(0), FP32_QNAN(0), FP32_INF(1), FP32_INF(1), FP32_QNAN(1), FP32_INF(0), FP32_INF(0), FP32_QNAN(1) } }, 8132 { /* => */ { FP32_QNAN(0), FP32_QNAN(0), FP32_QNAN(0), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(0), FP32_QNAN(1) } }, 8133 /*mxcsr:in */ X86_MXCSR_DAZ, 8134 /*128:out */ X86_MXCSR_DAZ, 8135 /*256:out */ X86_MXCSR_DAZ, 8136 /*xcpt? */ false, false }, 8137 /* 8138 * Overflow, Precision. 8139 */ 8140 #ifdef TODO_X86_MXCSR_PE /** @todo THIS FAILS ON IEM: X86_MXCSR_PE not set in 256:out */ 8141 /*--|14*/{ { /*src2 */ { FP32_1(0), FP32_1(1), FP32_1(0), FP32_1(0), FP32_NORM_MAX(1), FP32_1(0), FP32_NORM_MAX(1), FP32_2(0) } }, 8142 { /*src1 */ { FP32_0(0), FP32_1(0), FP32_0(0), FP32_1(0), FP32_0(0), FP32_1(0), FP32_2(0), FP32_NORM_MAX(0) } }, 8143 { /* => */ { FP32_0(0), FP32_1(1), FP32_0(0), FP32_1(0), FP32_0(1), FP32_1(0), FP32_2(0), FP32_NORM_MAX(0) } }, 8144 /*mxcsr:in */ 0, 8145 /*128:out */ 0, 8146 /*256:out */ X86_MXCSR_UE | X86_MXCSR_PE, 8147 /*xcpt? */ false, true }, 8148 #endif /* TODO_X86_MXCSR_PE */ 8149 /*14|15*/{ { /*src2 */ { FP32_V(0,0,0x7e)/*0.50*/, FP32_1(1), FP32_1(0), FP32_1(0), FP32_NORM_MAX(1), FP32_1(0), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } }, 8150 { /*src1 */ { FP32_NORM_MAX(0), FP32_1(0), FP32_0(0), FP32_1(0), FP32_0(0), FP32_1(0), FP32_1(0), FP32_0(0) } }, 8151 { /* => */ { FP32_INF(0), FP32_1(1), FP32_0(0), FP32_1(0), FP32_0(1), FP32_1(0), FP32_V(1,0x200000,0), FP32_0(0) } }, 8152 /*mxcsr:in */ X86_MXCSR_XCPT_MASK, 8153 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_OE | X86_MXCSR_PE, 8154 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_OE | X86_MXCSR_PE | X86_MXCSR_UE, 8155 /*xcpt? */ false, false }, 8156 #ifdef TODO_X86_MXCSR_PE /** @todo THIS FAILS ON IEM: X86_MXCSR_PE not set in 256:out */ 8157 /*--|16*/{ { /*src2 */ { FP32_V(0,0,0x7e)/*0.50*/, FP32_1(1), FP32_1(0), FP32_1(0), FP32_NORM_MAX(1), FP32_1(0), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } }, 8158 { /*src1 */ { FP32_NORM_MAX(0), FP32_1(0), FP32_0(0), FP32_1(0), FP32_0(0), FP32_1(0), FP32_1(0), FP32_0(0) } }, 8159 { /* => */ { FP32_INF(0), FP32_1(1), FP32_0(0), FP32_1(0), FP32_0(1), FP32_1(0), FP32_V(1,0x200000,0), FP32_0(0) } }, 8160 /*mxcsr:in */ 0, 8161 /*128:out */ X86_MXCSR_OE, 8162 /*256:out */ X86_MXCSR_OE | X86_MXCSR_PE | X86_MXCSR_UE, 8163 /*xcpt? */ true, true }, 8164 #endif /* TODO_X86_MXCSR_PE */ 8165 /*15|17*/{ { /*src2 */ { FP32_V(0,0,0x7e)/*0.50*/, FP32_1(1), FP32_1(0), FP32_1(0), FP32_NORM_MAX(1), FP32_1(0), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } }, 8166 { /*src1 */ { FP32_NORM_MAX(0), FP32_1(0), FP32_0(0), FP32_1(0), FP32_0(0), FP32_1(0), FP32_1(0), FP32_0(0) } }, 8167 { /* => */ { FP32_INF(0), FP32_1(1), FP32_0(0), FP32_1(0), FP32_0(1), FP32_1(0), FP32_V(1,0x200000,0), FP32_0(0) } }, 8168 /*mxcsr:in */ X86_MXCSR_OM, 8169 /*128:out */ X86_MXCSR_OM | X86_MXCSR_OE | X86_MXCSR_PE, 8170 /*256:out */ X86_MXCSR_OM | X86_MXCSR_OE | X86_MXCSR_PE | X86_MXCSR_UE, 8171 /*xcpt? */ true, true }, 8172 { { /*src2 */ { FP32_NORM_MAX(0), FP32_NORM_MIN(0), FP32_1(0), FP32_1(0), FP32_NORM_MAX(0), FP32_1(1), FP32_1(0), FP32_NORM_MIN(0) } }, 8173 { /*src1 */ { FP32_NORM_MIN(0), FP32_NORM_MAX(1), FP32_1(0), FP32_1(0), FP32_NORM_MIN(1), FP32_1(0), FP32_1(1), FP32_NORM_MAX(0) } }, 8174 { /* => */ { FP32_0(0), FP32_NORM_MAX(1), FP32_1(0), FP32_1(0), FP32_0(1), FP32_1(1), FP32_1(1), FP32_NORM_MAX(0) } }, 8175 /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_UM | X86_MXCSR_RC_ZERO, 8176 /*128:out */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_UM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE | X86_MXCSR_UE, 8177 /*256:out */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_UM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE | X86_MXCSR_UE, 8178 /*xcpt? */ false, false }, 8179 { { /*src2 */ { FP32_NORM_MAX(0), FP32_NORM_MIN(1), FP32_NORM_V1(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MIN(0), FP32_NORM_MIN(1), FP32_NORM_MAX(0) } }, 8180 { /*src1 */ { FP32_INF(0), FP32_0(0), FP32_NORM_V1(0), FP32_INF(0), FP32_INF(0), FP32_0(1), FP32_0(1), FP32_INF(1) } }, 8181 { /* => */ { FP32_INF(0), FP32_0(1), FP32_1(0), FP32_INF(0), FP32_INF(1), FP32_0(1), FP32_0(0), FP32_INF(1) } }, 8182 /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_PM, 8183 /*128:out */ X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_PM, 8184 /*256:out */ X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_PM, 8185 /*xcpt? */ false, false }, 8186 { { /*src2 */ { FP32_NORM_MAX(0), FP32_NORM_MIN(0), FP32_NORM_V3(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MIN(0), FP32_NORM_MIN(1), FP32_NORM_MAX(0) } }, 8187 { /*src1 */ { FP32_NORM_MAX(0), FP32_0(1), FP32_0(0), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_0(1), FP32_0(1), FP32_INF(1) } }, 8188 { /* => */ { FP32_1(0), FP32_0(1), FP32_0(0), FP32_1(0), FP32_1(1), FP32_0(1), FP32_0(0), FP32_INF(1) } }, 8189 /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_PM | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN, 8190 /*128:out */ X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_PM | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN, 8191 /*256:out */ X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_PM | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN, 8192 /*xcpt? */ false, false }, 8193 { { /*src2 */ { FP32_NORM_MIN(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_2(0), FP32_1(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MIN(1) } }, 8194 { /*src1 */ { FP32_0(0), FP32_NORM_MAX(0), FP32_INF(1), FP32_2(1), FP32_2(0), FP32_INF(1), FP32_NORM_MAX(0), FP32_0(0) } }, 8195 { /* => */ { FP32_0(1), FP32_1(0), FP32_INF(1), FP32_1(1), FP32_2(1), FP32_INF(1), FP32_1(0), FP32_0(1) } }, 8196 /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN, 8197 /*128:out */ X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN, 8198 /*256:out */ X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN, 8199 /*xcpt? */ false, false }, 8200 { { /*src2 */ { FP32_1(0), FP32_NORM_V2(1), FP32_1(1), FP32_NORM_V6(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } }, 8201 { /*src1 */ { FP32_NORM_V7(0), FP32_NORM_V2(0), FP32_NORM_V4(1), FP32_NORM_V6(1), FP32_INF(0), FP32_INF(0), FP32_INF(0), FP32_INF(0) } }, 8202 { /* => */ { FP32_NORM_V7(0), FP32_1(1), FP32_NORM_V4(0), FP32_1(1), FP32_INF(0), FP32_INF(1), FP32_INF(1), FP32_INF(0) } }, 8203 /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ, 8204 /*128:out */ X86_MXCSR_DAZ | X86_MXCSR_FZ, 8205 /*256:out */ X86_MXCSR_DAZ | X86_MXCSR_FZ, 8206 /*xcpt? */ false, false }, 8207 { { /*src2 */ { FP32_1(0), FP32_NORM_V2(1), FP32_1(1), FP32_NORM_V6(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } }, 8208 { /*src1 */ { FP32_NORM_V7(0), FP32_NORM_V2(0), FP32_NORM_V4(1), FP32_NORM_V6(1), FP32_INF(0), FP32_INF(0), FP32_INF(0), FP32_INF(0) } }, 8209 { /* => */ { FP32_NORM_V7(0), FP32_1(1), FP32_NORM_V4(0), FP32_1(1), FP32_INF(0), FP32_INF(1), FP32_INF(1), FP32_INF(0) } }, 8210 /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ, 8211 /*128:out */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ, 8212 /*256:out */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ, 8213 /*xcpt? */ false, false }, 8214 /** @todo More Overflow/Precision. */ 8215 /* 8216 * Normals. 8217 */ 8218 /*22|24*/{ { /*src2 */ { FP32_V(0, 0x600000, 0x7f)/*1.7500*/, FP32_NORM_V0(0), FP32_NORM_V1(0), FP32_NORM_V2(1), FP32_1(1), FP32_1(0), FP32_1(1), FP32_NORM_V6(1) } }, 8219 { /*src1 */ { FP32_V(0, 0x600000, 0x7d)/*0.4375*/, FP32_NORM_V0(0), FP32_NORM_V1(1), FP32_0(1), FP32_NORM_V0(0), FP32_NORM_V3(0), FP32_NORM_V4(1), FP32_NORM_V6(1) } }, 8220 { /* => */ { FP32_V(0, 0, 0x7d)/*0.2500*/, FP32_1(0), FP32_1(1), FP32_0(0), FP32_NORM_V0(1), FP32_NORM_V3(0), FP32_NORM_V4(0), FP32_1(0) } }, 8221 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN, 8222 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN, 8223 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN, 8224 /*xcpt? */ false, false }, 8225 { { /*src2 */ { FP32_V(0, 0x61e000, 0x89)/* 1807*/, FP32_V(0, 0x61e000, 0x89)/* 1807*/, FP32_V(0, 0x4a30b8, 0x8f)/* 103521.4375*/, FP32_V(0, 0x1a5200, 0x8c)/* 9876.5*/, FP32_V(0, 0x23b6a0, 0x8e)/*41910.625000*/, FP32_V(0, 0x23b6a0, 0x8e)/*41910.625000*/, FP32_V(0, 0, 0x7d)/*0.2500*/, FP32_V(0, 0x504000, 0x8a)/* 3332*/ } }, 8226 { /*src1 */ { FP32_V(0, 0x37be78, 0x95)/*6020924*/, FP32_V(0, 0x37be78, 0x95)/*6020924*/, FP32_V(0, 0x30eaa1, 0x93)/*1449300.1250*/, FP32_V(1, 0x39f7d1, 0x96)/*-12187601.0*/, FP32_V(0, 0x23b6a0, 0x8b)/* 5238.828125*/, FP32_V(0, 0x23b6a0, 0x8b)/* 5238.828125*/, FP32_V(0, 0x600000, 0x7d)/*0.4375*/, FP32_V(1, 0x37be78, 0x95)/*-6020924*/ } }, 8227 { /* => */ { FP32_V(0, 0x504000, 0x8a)/* 3332*/, FP32_V(0, 0x504000, 0x8a)/* 3332*/, FP32_V(0, 0x600000, 0x82)/* 14.0000*/, FP32_V(1, 0x1a4000, 0x89)/* -1234.0*/, FP32_V(0, 0, 0x7c)/* 0.125000*/, FP32_V(0, 0, 0x7c)/* 0.125000*/, FP32_V(0, 0x600000, 0x7f)/*1.7500*/, FP32_V(1, 0x61e000, 0x89)/* -1807*/ } }, 8228 /*mxcsr:in */ X86_MXCSR_XCPT_MASK, 8229 /*128:out */ X86_MXCSR_XCPT_MASK, 8230 /*256:out */ X86_MXCSR_XCPT_MASK, 8231 /*xcpt? */ false, false }, 8232 { { /*src2 */ { FP32_NORM_SAFE_INT_MAX(0), FP32_1(0), FP32_NORM_SAFE_INT_MAX(1), FP32_1(1), FP32_NORM_SAFE_INT_MIN(1), FP32_1(1), FP32_NORM_SAFE_INT_MIN(0), FP32_NORM_SAFE_INT_MAX(0) } }, 8233 { /*src1 */ { FP32_NORM_SAFE_INT_MAX(0), FP32_NORM_SAFE_INT_MIN(0), FP32_NORM_SAFE_INT_MAX(1), FP32_NORM_SAFE_INT_MAX(0), FP32_NORM_SAFE_INT_MIN(1), FP32_NORM_SAFE_INT_MIN(0), FP32_0(0), FP32_0(1) } }, 8234 { /* => */ { FP32_1(0), FP32_NORM_SAFE_INT_MIN(0), FP32_1(0), FP32_NORM_SAFE_INT_MAX(1), FP32_1(0), FP32_NORM_SAFE_INT_MIN(1), FP32_0(0), FP32_0(1) } }, 8235 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO, 8236 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO, 8237 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO, 8238 /*xcpt? */ false, false }, 8239 { { /*src2 */ { FP32_NORM_MAX(0), FP32_1(0), FP32_NORM_MAX(1), FP32_1(1), FP32_NORM_MIN(0), FP32_NORM_MIN(0), FP32_1(0), FP32_1(1) } }, 8240 { /*src1 */ { FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_NORM_MIN(0), FP32_NORM_MIN(1), FP32_NORM_MIN(1), FP32_NORM_MIN(0) } }, 8241 { /* => */ { FP32_1(0), FP32_NORM_MAX(1), FP32_1(0), FP32_NORM_MAX(1), FP32_1(0), FP32_1(1), FP32_NORM_MIN(1), FP32_NORM_MIN(1) } }, 8242 /*mxcsr:in */ 0, 8243 /*128:out */ 0, 8244 /*256:out */ 0, 8245 /*xcpt? */ false, false }, 8246 /** @todo More Normals. */ 8247 /* 8248 * Denormals. 8249 */ 8250 /*26|28*/{ { /*src2 */ { FP32_DENORM_MAX(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(1), FP32_0(0), FP32_0(0), FP32_0(1), FP32_0(1) } }, 8251 { /*src1 */ { FP32_0(0), FP32_0(1), FP32_0(1), FP32_0(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1) } }, 8252 { /* => */ { FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(1), FP32_INF(0), FP32_INF(1), FP32_INF(1), FP32_INF(0) } }, 8253 /*mxcsr:in */ 0, 8254 /*128:out */ X86_MXCSR_DE, 8255 /*256:out */ X86_MXCSR_DE | X86_MXCSR_ZE, 8256 /*xcpt? */ true, true }, 8257 { { /*src2 */ { FP32_DENORM_MAX(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(1), FP32_0(0), FP32_0(0), FP32_0(1), FP32_0(1) } }, 8258 { /*src1 */ { FP32_0(0), FP32_0(1), FP32_0(1), FP32_0(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1) } }, 8259 { /* => */ { FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(1), FP32_INF(0), FP32_INF(1), FP32_INF(1), FP32_INF(0) } }, 8260 /*mxcsr:in */ X86_MXCSR_XCPT_MASK, 8261 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE, 8262 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE | X86_MXCSR_ZE, 8263 /*xcpt? */ false, false }, 8264 { { /*src2 */ { FP32_DENORM_MAX(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(1), FP32_1(0), FP32_1(0), FP32_1(1), FP32_1(1) } }, 8265 { /*src1 */ { FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(1), FP32_DENORM_MAX(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(1), FP32_DENORM_MAX(0) } }, 8266 { /* => */ { FP32_1(0), FP32_1(1), FP32_1(0), FP32_1(1), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1) } }, 8267 /*mxcsr:in */ X86_MXCSR_XCPT_MASK, 8268 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE, 8269 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE, 8270 /*xcpt? */ false, false }, 8271 { { /*src2 */ { FP32_DENORM_MAX(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(1), FP32_0(0), FP32_0(0), FP32_0(1), FP32_0(1) } }, 8272 { /*src1 */ { FP32_0(0), FP32_0(1), FP32_0(1), FP32_0(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1) } }, 8273 { /* => */ { FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1) } }, 8274 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ, 8275 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_IE, 8276 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_IE, 8277 /*xcpt? */ false, false }, 8278 { { /*src2 */ { FP32_DENORM_MAX(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(1), FP32_1(0), FP32_1(0), FP32_1(1), FP32_1(1) } }, 8279 { /*src1 */ { FP32_0(0), FP32_0(1), FP32_0(1), FP32_0(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1) } }, 8280 { /* => */ { FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_0(0), FP32_0(1), FP32_0(1), FP32_0(0) } }, 8281 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ, 8282 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_IE, 8283 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_IE, 8284 /*xcpt? */ false, false }, 8285 { { /*src2 */ { FP32_DENORM_MIN(0), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(1), FP32_0(0), FP32_0(0), FP32_0(1), FP32_0(1) } }, 8286 { /*src1 */ { FP32_0(0), FP32_0(1), FP32_0(1), FP32_0(0), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1) } }, 8287 { /* => */ { FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1) } }, 8288 /*mxcsr:in */ 0, 8289 /*128:out */ X86_MXCSR_DE, 8290 /*256:out */ X86_MXCSR_DE | X86_MXCSR_ZE, 8291 /*xcpt? */ true, true }, 8292 { { /*src2 */ { FP32_DENORM_MIN(0), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(1), FP32_0(0), FP32_0(0), FP32_0(1), FP32_0(1) } }, 8293 { /*src1 */ { FP32_0(0), FP32_0(1), FP32_0(1), FP32_0(0), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1) } }, 8294 { /* => */ { FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(1), FP32_INF(0), FP32_INF(1), FP32_INF(1), FP32_INF(0) } }, 8295 /*mxcsr:in */ X86_MXCSR_XCPT_MASK, 8296 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE, 8297 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE | X86_MXCSR_ZE, 8298 /*xcpt? */ false, false }, 8299 { { /*src2 */ { FP32_DENORM_MIN(0), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(1), FP32_1(0), FP32_1(0), FP32_1(1), FP32_1(1) } }, 8300 { /* => */ { FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(1), FP32_DENORM_MIN(0), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(1), FP32_DENORM_MIN(0) } }, 8301 { /*src1 */ { FP32_1(0), FP32_1(1), FP32_1(0), FP32_1(1), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1) } }, 8302 /*mxcsr:in */ X86_MXCSR_XCPT_MASK, 8303 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE, 8304 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE, 8305 /*xcpt? */ false, false }, 8306 { { /*src2 */ { FP32_DENORM_MIN(0), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(1), FP32_0(0), FP32_0(0), FP32_0(1), FP32_0(1) } }, 8307 { /*src1 */ { FP32_0(0), FP32_0(1), FP32_0(1), FP32_0(0), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1) } }, 8308 { /* => */ { FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1) } }, 8309 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ, 8310 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_IE, 8311 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_IE, 8312 /*xcpt? */ false, false }, 8313 { { /*src2 */ { FP32_1(0), FP32_1(0), FP32_1(1), FP32_1(1), FP32_DENORM_MIN(0), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(1) } }, 8314 { /*src1 */ { FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_0(0), FP32_0(1), FP32_0(1), FP32_0(0) } }, 8315 { /* => */ { FP32_0(0), FP32_0(1), FP32_0(1), FP32_0(0), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1) } }, 8316 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ, 8317 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ, 8318 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_IE, 8319 /*xcpt? */ false, false }, 8320 { { /*src2 */ { FP32_DENORM_MIN(0), FP32_DENORM_MAX(0), FP32_DENORM_MIN(0), FP32_DENORM_MAX(1), FP32_DENORM_MIN(0), FP32_DENORM_MAX(0), FP32_DENORM_MIN(1), FP32_DENORM_MAX(1) } }, 8321 { /*src1 */ { FP32_DENORM_MAX(0), FP32_DENORM_MIN(1), FP32_DENORM_MAX(1), FP32_DENORM_MIN(1), FP32_DENORM_MAX(0), FP32_DENORM_MIN(1), FP32_DENORM_MAX(0), FP32_DENORM_MIN(1) } }, 8322 { /* => */ { FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1) } }, 8323 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_RC_UP, 8324 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_RC_UP | X86_MXCSR_IE, 8325 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_RC_UP | X86_MXCSR_IE, 8326 /*xcpt? */ false, false }, 8327 { { /*src2 */ { FP32_DENORM_MIN(0), FP32_DENORM_MAX(0), FP32_DENORM_MIN(0), FP32_DENORM_MAX(1), FP32_DENORM_MIN(0), FP32_DENORM_MAX(0), FP32_DENORM_MIN(1), FP32_DENORM_MAX(1) } }, 8328 { /*src1 */ { FP32_DENORM_MAX(0), FP32_DENORM_MIN(1), FP32_DENORM_MAX(1), FP32_DENORM_MIN(1), FP32_DENORM_MAX(0), FP32_DENORM_MIN(1), FP32_DENORM_MAX(0), FP32_DENORM_MIN(1) } }, 8329 { /* => */ { FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1) } }, 8330 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_RC_DOWN, 8331 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_RC_DOWN | X86_MXCSR_IE, 8332 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_RC_DOWN | X86_MXCSR_IE, 8333 /*xcpt? */ false, false }, 8334 { { /*src2 */ { FP32_DENORM_MIN(0), FP32_DENORM_MAX(0), FP32_DENORM_MIN(0), FP32_DENORM_MAX(1), FP32_DENORM_MIN(0), FP32_DENORM_MAX(0), FP32_DENORM_MIN(1), FP32_DENORM_MAX(1) } }, 8335 { /*src1 */ { FP32_DENORM_MAX(0), FP32_DENORM_MIN(1), FP32_DENORM_MAX(1), FP32_DENORM_MIN(1), FP32_DENORM_MAX(0), FP32_DENORM_MIN(1), FP32_DENORM_MAX(0), FP32_DENORM_MIN(1) } }, 8336 { /* => */ { FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1) } }, 8337 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO, 8338 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE, 8339 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE, 8340 /*xcpt? */ false, false }, 8341 { { /*src2 */ { FP32_DENORM_MIN(0), FP32_DENORM_MAX(0), FP32_DENORM_MIN(0), FP32_DENORM_MAX(1), FP32_DENORM_MIN(0), FP32_DENORM_MAX(0), FP32_DENORM_MIN(1), FP32_DENORM_MAX(1) } }, 8342 { /*src1 */ { FP32_DENORM_MAX(0), FP32_DENORM_MIN(1), FP32_DENORM_MAX(1), FP32_DENORM_MIN(1), FP32_DENORM_MAX(0), FP32_DENORM_MIN(1), FP32_DENORM_MAX(0), FP32_DENORM_MIN(1) } }, 8343 { /* => */ { FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1) } }, 8344 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ, 8345 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_IE, 8346 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_IE, 8347 /*xcpt? */ false, false }, 8348 /** @todo More Denormals. */ 8349 /* 8350 * Invalids. 8351 */ 8352 /*40|42*/ FP32_TABLE_D1_PS_INVALIDS 8353 /** @todo Underflow, Precision; Rounding; FZ etc. */ 8354 }; 8355 8356 #define PASS_s_aValues RT_ELEMENTS(s_aValues), (BS3CPUINSTR4_TEST1_VALUES_T *)s_aValues 8357 static BS3CPUINSTR4_TEST1_T const s_aTests16[] = 8358 { 8359 { bs3CpuInstr4_divps_XMM1_XMM2_icebp_c16, 255, RM_REG, T_SSE, 1, 1, 2, PASS_s_aValues }, 8360 { bs3CpuInstr4_divps_XMM1_FSxBX_icebp_c16, 255, RM_MEM, T_SSE, 1, 1, 255, PASS_s_aValues }, 8361 8362 { bs3CpuInstr4_vdivps_XMM1_XMM2_XMM3_icebp_c16, 255, RM_REG, T_AVX_128, 1, 2, 3, PASS_s_aValues }, 8363 { bs3CpuInstr4_vdivps_XMM1_XMM2_FSxBX_icebp_c16, 255, RM_MEM, T_AVX_128, 1, 2, 255, PASS_s_aValues }, 8364 8365 { bs3CpuInstr4_vdivps_YMM1_YMM2_YMM3_icebp_c16, 255, RM_REG, T_AVX_256, 1, 2, 3, PASS_s_aValues }, 8366 { bs3CpuInstr4_vdivps_YMM1_YMM2_FSxBX_icebp_c16, 255, RM_MEM, T_AVX_256, 1, 2, 255, PASS_s_aValues }, 8367 }; 8368 static BS3CPUINSTR4_TEST1_T const s_aTests32[] = 8369 { 8370 { bs3CpuInstr4_divps_XMM1_XMM2_icebp_c32, 255, RM_REG, T_SSE, 1, 1, 2, PASS_s_aValues }, 8371 { bs3CpuInstr4_divps_XMM1_FSxBX_icebp_c32, 255, RM_MEM, T_SSE, 1, 1, 255, PASS_s_aValues }, 8372 8373 { bs3CpuInstr4_vdivps_XMM1_XMM2_XMM3_icebp_c32, 255, RM_REG, T_AVX_128, 1, 2, 3, PASS_s_aValues }, 8374 { bs3CpuInstr4_vdivps_XMM1_XMM2_FSxBX_icebp_c32, 255, RM_MEM, T_AVX_128, 1, 2, 255, PASS_s_aValues }, 8375 8376 { bs3CpuInstr4_vdivps_YMM1_YMM2_YMM3_icebp_c32, 255, RM_REG, T_AVX_256, 1, 2, 3, PASS_s_aValues }, 8377 { bs3CpuInstr4_vdivps_YMM1_YMM2_FSxBX_icebp_c32, 255, RM_MEM, T_AVX_256, 1, 2, 255, PASS_s_aValues }, 8378 }; 8379 static BS3CPUINSTR4_TEST1_T const s_aTests64[] = 8380 { 8381 { bs3CpuInstr4_divps_XMM1_XMM2_icebp_c64, 255, RM_REG, T_SSE, 1, 1, 2, PASS_s_aValues }, 8382 { bs3CpuInstr4_divps_XMM1_FSxBX_icebp_c64, 255, RM_MEM, T_SSE, 1, 1, 255, PASS_s_aValues }, 8383 8384 { bs3CpuInstr4_vdivps_XMM1_XMM2_XMM3_icebp_c64, 255, RM_REG, T_AVX_128, 1, 2, 3, PASS_s_aValues }, 8385 { bs3CpuInstr4_vdivps_XMM1_XMM2_FSxBX_icebp_c64, 255, RM_MEM, T_AVX_128, 1, 2, 255, PASS_s_aValues }, 8386 8387 { bs3CpuInstr4_vdivps_YMM1_YMM2_YMM3_icebp_c64, 255, RM_REG, T_AVX_256, 1, 2, 3, PASS_s_aValues }, 8388 { bs3CpuInstr4_vdivps_YMM1_YMM2_FSxBX_icebp_c64, 255, RM_MEM, T_AVX_256, 1, 2, 255, PASS_s_aValues }, 8389 8390 { bs3CpuInstr4_divps_XMM8_XMM9_icebp_c64, 255, RM_REG, T_SSE, 8, 8, 9, PASS_s_aValues }, 8391 { bs3CpuInstr4_divps_XMM8_FSxBX_icebp_c64, 255, RM_MEM, T_SSE, 8, 8, 255, PASS_s_aValues }, 8392 8393 { bs3CpuInstr4_vdivps_XMM8_XMM9_XMM10_icebp_c64, 255, RM_REG, T_AVX_128, 8, 9, 10, PASS_s_aValues }, 8394 { bs3CpuInstr4_vdivps_XMM8_XMM9_FSxBX_icebp_c64, 255, RM_MEM, T_AVX_128, 8, 9, 255, PASS_s_aValues }, 8395 { bs3CpuInstr4_vdivps_YMM8_YMM9_YMM10_icebp_c64, 255, RM_REG, T_AVX_256, 8, 9, 10, PASS_s_aValues }, 8396 { bs3CpuInstr4_vdivps_YMM8_YMM9_FSxBX_icebp_c64, 255, RM_MEM, T_AVX_256, 8, 9, 255, PASS_s_aValues }, 8397 }; 8398 #undef PASS_s_aValues 8399 8400 static BS3CPUINSTR4_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR4_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64); 8401 unsigned const iTest = BS3CPUINSTR4_TEST_MODES_INDEX(bMode); 8402 return bs3CpuInstr4_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests, 8403 g_aXcptConfig2, RT_ELEMENTS(g_aXcptConfig2)); 8404 } 8405 8406 8407 /* 8026 8408 * [V]ADDSUBPS. 8027 8409 */ … … 9532 9914 { "[v]mulss", bs3CpuInstr4_v_mulss, 0 }, 9533 9915 { "[v]mulsd", bs3CpuInstr4_v_mulsd, 0 }, 9916 { "[v]divps", bs3CpuInstr4_v_divps, 0 }, 9534 9917 { "[v]divss", bs3CpuInstr4_v_divss, 0 }, 9535 9918 { "[v]divsd", bs3CpuInstr4_v_divsd, 0 },
Note:
See TracChangeset
for help on using the changeset viewer.