home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / sdktools / image / include / ppcinst.h < prev    next >
C/C++ Source or Header  |  1995-01-18  |  16KB  |  645 lines

  1. /*++ 
  2.  
  3. Copyright (c) 1993  IBM Corporation
  4.  
  5. Module Name:
  6.  
  7.     ppcinst.h
  8.  
  9. Abstract:
  10.  
  11.     PowerPC instruction and floating constant definitions.
  12.  
  13. Author:
  14.  
  15.     Rick Simpson   30 July 1993
  16.  
  17. Revision History:
  18.  
  19. --*/
  20.  
  21. #ifndef _PPCINST_
  22. #define _PPCINST_
  23.  
  24. //
  25. //     POWERPC INSTRUCTION FORMAT STRUCTURES
  26. //
  27.  
  28. typedef union _PPC_INSTRUCTION {
  29.     ULONG Long;
  30.     UCHAR Byte[4];
  31.  
  32.     struct {
  33.         ULONG bit31   :  1;
  34.         ULONG bit30   :  1;
  35.      LONG bit6_29 : 24;
  36.     ULONG bit0_5  :  6;
  37.     } i_f;
  38.  
  39. #define Primary_Op  i_f.bit0_5
  40.  
  41. #define Iform_LI  i_f.bit6_29
  42. #define Iform_AA  i_f.bit30
  43. #define Iform_LK  i_f.bit31
  44.  
  45.     struct {
  46.         ULONG bit31    :  1;
  47.         ULONG bit30    :  1;
  48.      LONG bit16_29 : 14;
  49.     ULONG bit11_15 :  5;
  50.     ULONG bit6_10  :  5;
  51.         ULONG bit0_5   :  6;
  52.     } b_f;
  53.  
  54. #define Bform_BO  b_f.bit6_10
  55. #define Bform_BI  b_f.bit11_15
  56. #define Bform_BD  b_f.bit16_29
  57. #define Bform_AA  b_f.bit30
  58. #define Bform_LK  b_f.bit31
  59.  
  60.     struct {
  61.     ULONG bit31    :  1;
  62.     ULONG bit30    :  1;
  63.     ULONG bit6_29  : 24;
  64.     ULONG bit0_5   :  6;
  65.     } sc_f;
  66.  
  67. #define SCform_XO  sc_f.bit30
  68.  
  69.     struct {
  70.      LONG bit16_31 : 16;
  71.     ULONG bit11_15 :  5;
  72.     ULONG bit6_10  :  5;
  73.     ULONG bit0_5   :  6;
  74.     } d_f1;
  75.     struct {
  76.     ULONG bit16_31 : 16;
  77.     ULONG bit11_15 :  5;
  78.     ULONG bit10    :  1;
  79.     ULONG bit9     :  1;
  80.     ULONG bit6_8   :  3;
  81.     ULONG bit0_5   :  6;
  82.     } d_f2;
  83.  
  84. #define Dform_RT   d_f1.bit6_10
  85. #define Dform_RS   d_f1.bit6_10
  86. #define Dform_TO   d_f1.bit6_10
  87. #define Dform_FRT  d_f1.bit6_10
  88. #define Dform_FRS  d_f1.bit6_10
  89. #define Dform_BF   d_f2.bit6_8
  90. #define Dform_L    d_f2.bit10
  91. #define Dform_RA   d_f1.bit11_15
  92. #define Dform_D    d_f1.bit16_31
  93. #define Dform_SI   d_f1.bit16_31
  94. #define Dform_UI   d_f2.bit16_31
  95.     
  96.     struct {
  97.     ULONG bit30_31 :  2;
  98.      LONG bit16_29 : 14;
  99.     ULONG bit11_15 :  5;
  100.     ULONG bit6_10  :  5;
  101.     ULONG bit0_5   :  6;
  102.     } ds_f;
  103.  
  104. #define DSform_RT  ds_f.bit6_10
  105. #define DSform_RS  ds_f.bit6_10
  106. #define DSform_RA  ds_f.bit11_15
  107. #define DSform_DS  ds_f.bit16_29
  108. #define DSform_XO  ds_f.bit30_31
  109.  
  110.     struct {
  111.     ULONG bit31    :  1;
  112.     ULONG bit21_30 : 10;
  113.     ULONG bit16_20 :  5;
  114.     ULONG bit11_15 :  5;
  115.     ULONG bit6_10  :  5;
  116.     ULONG bit0_5   :  6;
  117.     } x_f1;
  118.     struct {
  119.     ULONG bit20_31 : 12;
  120.     ULONG bit16_19 :  4;
  121.     ULONG bit14_15 :  2;
  122.     ULONG bit11_13 :  3;
  123.     ULONG bit10    :  1;
  124.     ULONG bit9     :  1;
  125.     ULONG bit6_8   :  3;
  126.     ULONG bit0_5   :  6;
  127.     } x_f2;
  128.     struct {
  129.     ULONG bit16_31 : 16;
  130.     ULONG bit12_15 :  4;
  131.     ULONG bit0_11  : 12;
  132.     } x_f3;
  133.  
  134. #define Xform_RT   x_f1.bit6_10
  135. #define Xform_RS   x_f1.bit6_10
  136. #define Xform_TO   x_f1.bit6_10
  137. #define Xform_FRT  x_f1.bit6_10
  138. #define Xform_FRS  x_f1.bit6_10
  139. #define Xform_BT   x_f1.bit6_10
  140. #define Xform_BF   x_f2.bit6_8
  141. #define Xform_L    x_f2.bit10
  142. #define Xform_RA   x_f1.bit11_15
  143. #define Xform_FRA  x_f1.bit11_15
  144. #define Xform_BFA  x_f2.bit11_13
  145. #define Xform_SR   x_f3.bit12_15
  146. #define Xform_RB   x_f1.bit16_20
  147. #define Xform_NB   x_f1.bit16_20
  148. #define Xform_SH   x_f1.bit16_20
  149. #define Xform_FRB  x_f1.bit16_20
  150. #define Xform_U    x_f2.bit16_19
  151. #define Xform_XO   x_f1.bit21_30
  152. #define Xform_RC   x_f1.bit31
  153.  
  154.     struct {
  155.     ULONG bit31    :  1;
  156.     ULONG bit21_30 : 10;
  157.     ULONG bit16_20 :  5;
  158.     ULONG bit11_15 :  5;
  159.     ULONG bit6_10  :  5;
  160.     ULONG bit0_5   :  6;
  161.     } xl_f1;
  162.     struct {
  163.     ULONG bit14_31 : 18;
  164.     ULONG bit11_13 :  3;
  165.     ULONG bit9_10  :  2;
  166.     ULONG bit6_8   :  3;
  167.     ULONG bit0_5   :  6;
  168.     } xl_f2;
  169.  
  170. #define XLform_LK   xl_f1.bit31
  171. #define XLform_XO   xl_f1.bit21_30
  172. #define XLform_BB   xl_f1.bit16_20
  173. #define XLform_BA   xl_f1.bit11_15
  174. #define XLform_BI   xl_f1.bit11_15
  175. #define XLform_BFA  xl_f2.bit11_13
  176. #define XLform_BT   xl_f1.bit6_10
  177. #define XLform_BO   xl_f1.bit6_10
  178. #define XLform_BF   xl_f2.bit6_8
  179.  
  180.     struct {
  181.     ULONG bit31    :  1;
  182.     ULONG bit21_30 : 10;
  183.     ULONG bit11_20 : 10;
  184.     ULONG bit6_10  :  5;
  185.     ULONG bit0_5   :  6;
  186.     } xfx_f1;
  187.     struct { 
  188.     ULONG bit20_31 : 12;
  189.     ULONG bit12_19 :  8;
  190.     ULONG bit6_11  :  6;
  191.     ULONG bit0_5   :  6;
  192.     } xfx_f2;
  193.  
  194. #define XFXform_RT  xfx_f1.bit6_10
  195. #define XFXform_RS  xfx_f1.bit6_10
  196. #define XFXform_spr xfx_f1.bit11_20
  197. #define XFXform_tbr xfx_f1.bit11_20
  198. #define XFXform_spr xfx_f1.bit11_20
  199. #define XFXform_FXM xfx_f2.bit12_19
  200. #define XFXform_XO  xfx_f1.bit21_30
  201.  
  202.     struct {
  203.     ULONG bit31    :  1;
  204.     ULONG bit21_30 : 10;
  205.     ULONG bit16_20 :  5;
  206.     ULONG bit15    :  1;
  207.     ULONG bit7_14  :  8;
  208.     ULONG bit6     :  1;
  209.     ULONG bit0_5   :  6;
  210.     } xfl_f;
  211.  
  212. #define XFLform_FLM xfl_f.bit7_14
  213. #define XFLform_FRB xfl_f.bit16_20
  214. #define XFLform_XO  xfl_f.bit21_30
  215. #define XFLform_RC  xfl_f.bit31
  216.     
  217.     struct {
  218.     ULONG bit31    :  1;
  219.     ULONG bit30    :  1;
  220.     ULONG bit21_29 :  9;
  221.     ULONG bit16_20 :  5;
  222.     ULONG bit10_15 :  5;
  223.     ULONG bit6_10  :  5;
  224.     ULONG bit0_5   :  6;
  225.     } xs_f;
  226.  
  227. #define XSform_RS  xs_f.bit6_10
  228. #define XSform_RA  xs_f.bit11_15
  229. #define XSform_sh1 xs_f.bit16_20
  230. #define XSform_XO  xs_f.bit21_29
  231. #define XSform_sh2 xs_f.bit30
  232. #define XSform_RC  xs_f.bit31
  233.     
  234.     struct {
  235.     ULONG bit31    :  1;
  236.     ULONG bit22_30 :  9;
  237.     ULONG bit21    :  1;
  238.     ULONG bit16_20 :  5;
  239.     ULONG bit10_15 :  5;
  240.     ULONG bit6_10  :  5;
  241.     ULONG bit0_5   :  6;
  242.     } xo_f;
  243.  
  244. #define XOform_RT  xo_f.bit6_10
  245. #define XOform_RA  xo_f.bit11_15
  246. #define XOform_RB  xo_f.bit16_20
  247. #define XOform_OE  xo_f.bit21
  248. #define XOform_XO  xo_f.bit22_30
  249. #define XOform_RC  xo_f.bit31
  250.     
  251.     struct {
  252.     ULONG bit31    :  1;
  253.     ULONG bit26_30 :  5;
  254.     ULONG bit21_25 :  5;
  255.     ULONG bit16_20 :  5;
  256.     ULONG bit11_15 :  5;
  257.     ULONG bit6_10  :  5;
  258.     ULONG bit0_5   :  6;
  259.     } a_f;
  260.  
  261. #define Aform_FRT  a_f.bit6_10
  262. #define Aform_FRA  a_f.bit11_15
  263. #define Aform_FRB  a_f.bit16_20
  264. #define Aform_FRC  a_f.bit21_25
  265. #define Aform_XO   a_f.bit26_30
  266. #define Aform_RC   a_f.bit31
  267.     
  268.     struct {
  269.     ULONG bit31    :  1;
  270.     ULONG bit26_30 :  5;
  271.     ULONG bit21_25 :  5;
  272.     ULONG bit16_20 :  5;
  273.     ULONG bit11_15 :  5;
  274.     ULONG bit6_10  :  5;
  275.     ULONG bit0_5   :  6;
  276.     } m_f;
  277.  
  278. #define Mform_RS  m_f.bit6_10
  279. #define Mform_RA  m_f.bit11_15
  280. #define Mform_RB  m_f.bit16_20
  281. #define Mform_SH  m_f.bit16_20
  282. #define Mform_MB  m_f.bit21_25
  283. #define Mform_ME  m_f.bit26_30
  284. #define Mform_RC  m_f.bit31
  285.     
  286.     struct {
  287.     ULONG bit31    :  1;
  288.     ULONG bit30    :  1;
  289.     ULONG bit27_29 :  3;
  290.     ULONG bit21_26 :  6;
  291.     ULONG bit16_20 :  5;
  292.     ULONG bit11_15 :  5;
  293.     ULONG bit6_10  :  5;
  294.     ULONG bit0_5   :  6;
  295.     } md_f;
  296.  
  297. #define MDform_RS   md_f.bit6_10
  298. #define MDform_RA   md_f.bit11_15
  299. #define MDform_sh1  md_f.bit16_20
  300. #define MDform_mb   md_f.bit21_26
  301. #define MDform_me   md_f.bit21_26
  302. #define MDform_XO   md_f.bit27_29
  303. #define MDform_sh2  md_f.bit30
  304. #define MDform_RC   md_f.bit31
  305.     
  306.     struct {
  307.     ULONG bit31    :  1;
  308.     ULONG bit27_30 :  4;
  309.     ULONG bit21_26 :  6;
  310.     ULONG bit16_20 :  5;
  311.     ULONG bit11_15 :  5;
  312.     ULONG bit6_10  :  5;
  313.     ULONG bit0_5   :  6;
  314.     } mds_f;
  315.  
  316. #define MDSform_RS  mds_f.bit6_10
  317. #define MDSform_RA  mds_f.bit11_15
  318. #define MDSform_RB  mds_f.bit16_20
  319. #define MDSform_mb  mds_f.bit21_26
  320. #define MDSform_me  mds_f.bit21_26
  321. #define MDSform_XO  mds_f.bit27_30
  322. #define MDSform_RC  mds_f.bit31
  323.  
  324. } PPC_INSTRUCTION, *PPPC_INSTRUCTION;
  325.  
  326. //
  327. //     POWERPC PRIMARY AND SECONDARY (EXTENDED) OPCODES
  328. //
  329.  
  330. #define TDI_OP       2
  331. #define TWI_OP       3
  332. #define MULLI_OP     7
  333. #define SUBFIC_OP    8
  334. #define CMPLI_OP    10
  335. #define CMPI_OP     11
  336. #define ADDIC_OP    12
  337. #define ADDIC_RC_OP 13
  338. #define ADDI_OP     14
  339. #define ADDIS_OP    15
  340. #define BC_OP       16
  341. #define SC_OP       17
  342. #define B_OP        18
  343.  
  344. #define X19_OP      19    // Extended ops for primary code 19:
  345. #define   MCRF_OP       0
  346. #define   BCLR_OP      16
  347. #define   CRNOR_OP     33
  348. #define   RFI_OP       50
  349. #define   CRANDC_OP   129
  350. #define   ISYNC_OP    150
  351. #define   CRXOR_OP    193
  352. #define      CRNAND_OP   225
  353. #define      CRAND_OP    257
  354. #define      CREQV_OP    289
  355. #define      CRORC_OP    417
  356. #define      CROR_OP     449
  357. #define      BCCTR_OP    528
  358.  
  359. #define RLWIMI_OP   20
  360. #define RLWINM_OP   21
  361. #define RLWNM_OP    23
  362. #define ORI_OP      24
  363. #define    ORIS_OP        25
  364. #define XORI_OP        26
  365. #define    XORIS_OP    27
  366. #define    ANDI_RC_OP  28
  367. #define ANDIS_RC_OP 29
  368.  
  369. #define X30_OP        30    // Extended ops for primary code 30:
  370. #define   RLDICL_OP     0
  371. #define   RLDICR_OP    1
  372. #define      RLDIC_OP    2
  373. #define      RLDIMI_OP    3
  374. #define   RLDCL_OP    8
  375. #define   RLDCR_OP    9
  376.  
  377. #define X31_OP      31    // Extended ops for primary code 31:
  378. #define   CMP_OP    0
  379. #define      TW_OP        4
  380. #define      SUBFC_OP    8
  381. #define      MULHDU_OP    9
  382. #define      ADDC_OP      10
  383. #define      MULHWU_OP    11
  384. #define      MFCR_OP      19
  385. #define      LWARX_OP     20
  386. #define      LDX_OP       21
  387. #define      LWZX_OP      23
  388. #define      SLW_OP       24
  389. #define      CNTLZW_OP    26
  390. #define      SLD_OP       27
  391. #define      AND_OP       28
  392. #define      CMPL_OP      32
  393. #define      SUBF_OP      40
  394. #define      LDUX_OP      53
  395. #define      DCBST_OP     54
  396. #define      LWZUX_OP     55
  397. #define      CNTLZD_OP    58
  398. #define      ANDC_OP      60
  399. #define      TD_OP           68
  400. #define      MULHD_OP     73
  401. #define      MULHW_OP     75
  402. #define      MFMSR_OP     83
  403. #define      LDARX_OP     84
  404. #define      DCBF_OP      86
  405. #define      LBZX_OP      87
  406. #define      NEG_OP      104
  407. #define      LBZUX_OP    119
  408. #define      NOR_OP      124
  409. #define      SUBFE_OP    136
  410. #define      ADDE_OP     138
  411. #define      MTCRF_OP    144
  412. #define      MTMSR_OP    146
  413. #define      STDX_OP     149
  414. #define      STWCX_RC_OP 150     
  415. #define      STWX_OP     151
  416. #define      STDUX_OP    181
  417. #define      STWUX_OP    183
  418. #define      SUBFZE_OP   200
  419. #define      ADDZE_OP    202
  420. #define      MTSR_OP     210
  421. #define      STDCX_RC_OP 214
  422. #define      STBX_OP     215
  423. #define      SUBFME_OP   232
  424. #define      MULLD_OP    233
  425. #define      ADDME_OP    234
  426. #define      MULLW_OP    235
  427. #define      MTSRIN_OP   242
  428. #define      DCBTST_OP   246
  429. #define      STBUX_OP    247
  430. #define      ADD_OP      266
  431. #define      DCBT_OP     278
  432. #define      LHZX_OP     279
  433. #define      EQV_OP      284
  434. #define      TLBIE_OP    306
  435. #define      ECIWX_OP    310
  436. #define      LHZUX_OP    311
  437. #define      XOR_OP      316
  438. #define      MFSPR_OP    339
  439. #define      LWAX_OP     341
  440. #define      LHAX_OP     343
  441. #define      TLBIA_OP    370
  442. #define      MFTB_OP     371
  443. #define      LWAUX_OP    373
  444. #define      LHAUX_OP    375
  445. #define      STHX_OP     407
  446. #define      ORC_OP      412
  447. #define      SRADI_OP    413
  448. #define      SLBIE_OP    434
  449. #define      ECOWX_OP    438
  450. #define      STHUX_OP    439
  451. #define      OR_OP          444
  452. #define      DIVDU_OP    457
  453. #define      DIVWU_OP    459
  454. #define      MTSPR_OP    467
  455. #define      DCBI_OP     470
  456. #define      NAND_OP     476
  457. #define      DIVD_OP     489
  458. #define      DIVW_OP     491
  459. #define      SLBIA_OP    498
  460. #define      MCRXR_OP    512
  461. #define      LSWX_OP     533
  462. #define      LWBRX_OP    534
  463. #define      LFSX_OP     535
  464. #define      SRW_OP      536
  465. #define      SRD_OP      539
  466. #define      TLBSYNC_OP  566
  467. #define      LFSUX_OP    567
  468. #define      MFSR_OP     595
  469. #define      LSWI_OP     597
  470. #define      SYNC_OP     598
  471. #define      LFDX_OP     599
  472. #define      LFDUX_OP    631
  473. #define      MFSRIN_OP   659
  474. #define      STSWX_OP    661
  475. #define      STWBRX_OP   662
  476. #define      STFSX_OP    663
  477. #define      STFSUX_OP   695
  478. #define      STSWI_OP    725
  479. #define      STFDX_OP    727
  480. #define      STFDUX_OP   759
  481. #define      LHBRX_OP    790
  482. #define      SRAW_OP     792
  483. #define      SRAD_OP     794
  484. #define      SRAWI_OP    824
  485. #define      EIEIO_OP    854
  486. #define      STHBRX_OP   918
  487. #define      EXTSH_OP    922
  488. #define      EXTSB_OP    954
  489. #define      ICBI_OP     982
  490. #define      STFIWX_OP   983
  491. #define      EXTSW_OP    986
  492. #define      DCBZ_OP    1014
  493.  
  494. #define LWZ_OP      32
  495. #define LWZU_OP        33
  496. #define    LBZ_OP        34
  497. #define    LBZU_OP        35
  498. #define    STW_OP        36
  499. #define    STWU_OP        37
  500. #define    STB_OP        38
  501. #define    STBU_OP        39
  502. #define    LHZ_OP        40
  503. #define    LHZU_OP        41
  504. #define    LHA_OP        42
  505. #define    LHAU_OP        43
  506. #define    STH_OP        44
  507. #define    STHU_OP        45
  508. #define    LFS_OP        48
  509. #define    LFSU_OP        49
  510. #define    LFD_OP        50
  511. #define    LFDU_OP        51
  512. #define STFS_OP        52
  513. #define    STFSU_OP    53
  514. #define    STFD_OP        54
  515. #define    STFDU_OP    55
  516.  
  517. #define X58_OP      58    // Extended ops for primary code 58:
  518. #define   LD_OP            0
  519. #define      LDU_OP    1
  520. #define      LWA_OP    2
  521.  
  522. #define X59_OP      59    // Extended ops for primary code 59:
  523. #define      FDIVS_OP     18
  524. #define      FSUBS_OP     20
  525. #define      FADDS_OP     21
  526. #define      FSQRTS_OP    22
  527. #define      FRES_OP      24
  528. #define      FMULS_OP     25
  529. #define      FMSUBS_OP    28
  530. #define   FMADDS_OP    29
  531. #define      FNMSUBS_OP   30
  532. #define      FNMADDS_OP   31
  533.  
  534. #define X62_OP      62    // Extended ops for primary code 62:
  535. #define   STD_OP        0
  536. #define   STDU_OP       1
  537.  
  538. #define X63_OP        63      // Extended ops for primary code 63:
  539. #define   FCMPU_OP      0
  540. #define      FRSP_OP      12
  541. #define      FCTIW_OP     14
  542. #define      FCTIWZ_OP    15
  543. #define      FDIV_OP      18
  544. #define      FSUB_OP      20
  545. #define      FADD_OP      21
  546. #define      FSQRT_OP     22
  547. #define      FSEL_OP      23
  548. #define      FMUL_OP      25
  549. #define      FSQRTE_OP    26
  550. #define      FMSUB_OP     28
  551. #define   FMADD_OP     29
  552. #define      FNMSUB_OP    30
  553. #define      FNMADD_OP    31
  554. #define      FCMPO_OP     32
  555. #define      MTFSB1_OP    38
  556. #define      FNEG_OP      40
  557. #define      MCRFS_OP     64
  558. #define      MTFSB0_OP    70
  559. #define      FMR_OP       72
  560. #define      MTFSFI_OP   134
  561. #define      FNABS_OP    136
  562. #define      FABS_OP     264
  563. #define      MFFS_OP     583
  564. #define      MTFSF_OP    711
  565. #define      FCTID_OP    814
  566. #define      FCTIDZ_OP   815
  567. #define      FCFID_OP    846
  568.  
  569. //
  570. // Define certain specific instructions
  571. //
  572.  
  573. #define SYSTEM_CALL_INSTR  0x44000002L  // sc
  574. #define RETURN_INSTR       0x4E800020L  // blr
  575. #define BREAK_INSTR        0x0FE00000L  // break <number>
  576. #define TRAP_INSTR         0x0C000000L  // trap word immediate
  577. #define NO_OP_INSTR           0x60000000L  // ori r.0, r.0, 0
  578. #define INVALID_INSTR       0x00000000L  // all 0's => invalid
  579.  
  580. //
  581. // Define specific values for the TO field of the TRAP_INSTR 
  582. //
  583.  
  584. #define TO_BREAKPOINT                   0x03E00000L  // Unconditional breakpoint
  585. #define TO_DIVIDE_BY_ZERO               0x00C00000L  // Integer divide by zero
  586. #define TO_UNCONDITIONAL_DIVIDE_BY_ZERO 0x00E00000L  // Unconditional divide
  587.                                                      // by zero
  588.  
  589. //
  590. //     IEEE FLOATING POINT VALUE REPRESENTATION
  591. //
  592.  
  593. //
  594. // Define maximum and minimum single and double exponent values.
  595. //
  596.  
  597. #define DOUBLE_MAXIMUM_EXPONENT  2047
  598. #define DOUBLE_MINIMUM_EXPONENT  0
  599. #define SINGLE_MAXIMUM_EXPONENT  255
  600. #define SINGLE_MINIMUM_EXPONENT  0
  601.  
  602. //
  603. // Define single and double exponent bias values.
  604. //
  605.  
  606. #define SINGLE_EXPONENT_BIAS  127
  607. #define DOUBLE_EXPONENT_BIAS  1023
  608.  
  609. //
  610. // Define the largest single and double values;
  611. //
  612.  
  613. #define DOUBLE_MAXIMUM_VALUE_LOW   0xffffffff
  614. #define DOUBLE_MAXIMUM_VALUE_HIGH  0x7fefffff
  615. #define SINGLE_MAXIMUM_VALUE       0x7f7fffff
  616.  
  617. //
  618. // Define single and double quite and signaling Nan values.
  619. //
  620.  
  621. #define DOUBLE_NAN_LOW     0xffffffff
  622. #define DOUBLE_QUIET_NAN   0x7ff7ffff
  623. #define DOUBLE_SIGNAL_NAN  0x7fffffff
  624. #define SINGLE_QUIET_NAN   0x7fbfffff
  625. #define SINGLE_SIGNAL_NAN  0x7fffffff
  626.  
  627. //
  628. // Define positive single and double infinity values.
  629. //
  630.  
  631. #define DOUBLE_INFINITY_VALUE_LOW   0x0
  632. #define DOUBLE_INFINITY_VALUE_HIGH  0x7ff00000
  633. #define SINGLE_INFINITY_VALUE       0x7f800000
  634.  
  635. //
  636. // Define rounding modes.
  637. //
  638.  
  639. #define ROUND_TO_NEAREST         0
  640. #define ROUND_TO_ZERO            1
  641. #define ROUND_TO_PLUS_INFINITY   2
  642. #define ROUND_TO_MINUS_INFINITY  3
  643.  
  644. #endif // _PPCINST_
  645.