< prev index next >

src/hotspot/cpu/x86/macroAssembler_x86.cpp

Print this page




5728  public:
5729   int32_t _value;
5730 
5731   int  rounding_control() const        { return  (_value >> 10) & 3      ; }
5732   int  precision_control() const       { return  (_value >>  8) & 3      ; }
5733   bool precision() const               { return ((_value >>  5) & 1) != 0; }
5734   bool underflow() const               { return ((_value >>  4) & 1) != 0; }
5735   bool overflow() const                { return ((_value >>  3) & 1) != 0; }
5736   bool zero_divide() const             { return ((_value >>  2) & 1) != 0; }
5737   bool denormalized() const            { return ((_value >>  1) & 1) != 0; }
5738   bool invalid() const                 { return ((_value >>  0) & 1) != 0; }
5739 
5740   void print() const {
5741     // rounding control
5742     const char* rc;
5743     switch (rounding_control()) {
5744       case 0: rc = "round near"; break;
5745       case 1: rc = "round down"; break;
5746       case 2: rc = "round up  "; break;
5747       case 3: rc = "chop      "; break;

5748     };
5749     // precision control
5750     const char* pc;
5751     switch (precision_control()) {
5752       case 0: pc = "24 bits "; break;
5753       case 1: pc = "reserved"; break;
5754       case 2: pc = "53 bits "; break;
5755       case 3: pc = "64 bits "; break;

5756     };
5757     // flags
5758     char f[9];
5759     f[0] = ' ';
5760     f[1] = ' ';
5761     f[2] = (precision   ()) ? 'P' : 'p';
5762     f[3] = (underflow   ()) ? 'U' : 'u';
5763     f[4] = (overflow    ()) ? 'O' : 'o';
5764     f[5] = (zero_divide ()) ? 'Z' : 'z';
5765     f[6] = (denormalized()) ? 'D' : 'd';
5766     f[7] = (invalid     ()) ? 'I' : 'i';
5767     f[8] = '\x0';
5768     // output
5769     printf("%04x  masks = %s, %s, %s", _value & 0xFFFF, f, rc, pc);
5770   }
5771 
5772 };
5773 
5774 class StatusWord {
5775  public:




5728  public:
5729   int32_t _value;
5730 
5731   int  rounding_control() const        { return  (_value >> 10) & 3      ; }
5732   int  precision_control() const       { return  (_value >>  8) & 3      ; }
5733   bool precision() const               { return ((_value >>  5) & 1) != 0; }
5734   bool underflow() const               { return ((_value >>  4) & 1) != 0; }
5735   bool overflow() const                { return ((_value >>  3) & 1) != 0; }
5736   bool zero_divide() const             { return ((_value >>  2) & 1) != 0; }
5737   bool denormalized() const            { return ((_value >>  1) & 1) != 0; }
5738   bool invalid() const                 { return ((_value >>  0) & 1) != 0; }
5739 
5740   void print() const {
5741     // rounding control
5742     const char* rc;
5743     switch (rounding_control()) {
5744       case 0: rc = "round near"; break;
5745       case 1: rc = "round down"; break;
5746       case 2: rc = "round up  "; break;
5747       case 3: rc = "chop      "; break;
5748       default: ShouldNotReachHere(); return;
5749     };
5750     // precision control
5751     const char* pc;
5752     switch (precision_control()) {
5753       case 0: pc = "24 bits "; break;
5754       case 1: pc = "reserved"; break;
5755       case 2: pc = "53 bits "; break;
5756       case 3: pc = "64 bits "; break;
5757       default: ShouldNotReachHere(); return;
5758     };
5759     // flags
5760     char f[9];
5761     f[0] = ' ';
5762     f[1] = ' ';
5763     f[2] = (precision   ()) ? 'P' : 'p';
5764     f[3] = (underflow   ()) ? 'U' : 'u';
5765     f[4] = (overflow    ()) ? 'O' : 'o';
5766     f[5] = (zero_divide ()) ? 'Z' : 'z';
5767     f[6] = (denormalized()) ? 'D' : 'd';
5768     f[7] = (invalid     ()) ? 'I' : 'i';
5769     f[8] = '\x0';
5770     // output
5771     printf("%04x  masks = %s, %s, %s", _value & 0xFFFF, f, rc, pc);
5772   }
5773 
5774 };
5775 
5776 class StatusWord {
5777  public:


< prev index next >