<<<    Index    >>>
F-18
GUIDELINES FOR WRITING SIMD FLOATING-POINT EXCEPTION 
        case SUBSS:
          // perform the subtraction
          __asm {
            fnclex; 
            // load input operands
            fld DWORD PTR opd1; // may set the denormal or invalid status flags
            fld DWORD PTR opd2; // may set the denormal or invalid status flags
            fsubp st(1), st(0); // may set the inexact or invalid status flags
            // store result
            fstp  QWORD PTR dbl_res24; // exact
          }
          break;
        case MULPS:
        case MULSS:
          // perform the multiplication
          __asm {
            fnclex; 
            // load input operands
            fld DWORD PTR opd1; // may set the denormal or invalid status flags
            fld DWORD PTR opd2; // may set the denormal or invalid status flags
            fmulp st(1), st(0); // may set the inexact or invalid status flags
            // store result
            fstp  QWORD PTR dbl_res24; // exact
          }
          break;
        case DIVPS:
        case DIVSS:
          // perform the division
          __asm {
            fnclex; 
            // load input operands
            fld DWORD PTR opd1; // may set the denormal or invalid status flags
            fld DWORD PTR opd2; // may set the denormal or invalid status flags
            fdivp st(1), st(0); // may set the inexact, divide by zero, or 
                                // invalid status flags
            // store result
            fstp  QWORD PTR dbl_res24; // exact
          }
          break;
        default:
          ; // will never occur
      }
<<<    Index    >>>