PPCINST.H
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:15k
源码类别:

Windows编程

开发平台:

Visual C++

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