Rizin
unix-like reverse engineering framework and cli tools
libps_internal.h File Reference
#include <rz_types.h>

Go to the source code of this file.

Classes

struct  ps_opcode_t
 
struct  ps_operand_t
 

Macros

#define TYPE_NONE   0
 
#define TYPE_REG   1
 
#define TYPE_IMM   2
 
#define TYPE_MEM   3
 
#define TYPE_CR   4
 
#define OP(x)   ((((ut32)(x)) & 0x3f) << 26)
 
#define OP_MASK   OP(0x3f)
 
#define OPS(op, xop)   (OP(op) | ((((ut32)(xop)) & 0x1f) << 1))
 
#define OPSC(op, xop, rc)   (OPS((op), (xop)) | ((rc)&1))
 
#define OPS_MASK   OPSC(0x3f, 0x1f, 1)
 
#define OPS_MASK_DOT   OPSC(0x3f, 0x1f, 1)
 
#define OPM(op, xop)   (OP(op) | ((((ut32)(xop)) & 0x3f) << 1))
 
#define OPMC(op, xop, rc)   (OPM((op), (xop)) | ((rc)&1))
 
#define OPM_MASK   OPMC(0x3f, 0x3f, 0)
 
#define OPL(op, xop)   (OP(op) | ((((ut32)(xop)) & 0x3ff) << 1))
 
#define OPLC(op, xop, rc)   (OPL((op), (xop)) | ((rc)&1))
 
#define OPL_MASK   OPLC(0x3f, 0x3ff, 1)
 
#define OPL_MASK_DOT   OPLC(0x3f, 0x3ff, 1)
 

Enumerations

enum  ps_operand_id_t {
  NO_OPERAND , OP_FA , OP_FB , OP_FC ,
  OP_FD , OP_FS = OP_FD , OP_crfD , OP_WB ,
  OP_IB , OP_WC , OP_IC , OP_RA ,
  OP_RB , OP_DRA , OP_DRB
}
 
enum  ps_insn_type_t {
  psq_lx , psq_stx , psq_lux , psq_stux ,
  psq_l , psq_lu , psq_st , psq_stu ,
  ps_div , ps_div_dot , ps_sub , ps_sub_dot ,
  ps_add , ps_add_dot , ps_sel , ps_sel_dot ,
  ps_res , ps_res_dot , ps_mul , ps_mul_dot ,
  ps_rsqrte , ps_rsqrte_dot , ps_msub , ps_msub_dot ,
  ps_madd , ps_madd_dot , ps_nmsub , ps_nmsub_dot ,
  ps_nmadd , ps_nmadd_dot , ps_neg , ps_neg_dot ,
  ps_mr , ps_mr_dot , ps_nabs , ps_nabs_dot ,
  ps_abs , ps_abs_dot , ps_sum0 , ps_sum0_dot ,
  ps_sum1 , ps_sum1_dot , ps_muls0 , ps_muls0_dot ,
  ps_muls1 , ps_muls1_dot , ps_madds0 , ps_madds0_dot ,
  ps_madds1 , ps_madds1_dot , ps_cmpu0 , ps_cmpo0 ,
  ps_cmpu1 , ps_cmpo1 , ps_merge00 , ps_merge00_dot ,
  ps_merge01 , ps_merge01_dot , ps_merge10 , ps_merge10_dot ,
  ps_merge11 , ps_merge11_dot , ps_dcbz_l
}
 

Macro Definition Documentation

◆ OP

#define OP (   x)    ((((ut32)(x)) & 0x3f) << 26)

Definition at line 14 of file libps_internal.h.

◆ OP_MASK

#define OP_MASK   OP(0x3f)

Definition at line 15 of file libps_internal.h.

◆ OPL

#define OPL (   op,
  xop 
)    (OP(op) | ((((ut32)(xop)) & 0x3ff) << 1))

Definition at line 26 of file libps_internal.h.

◆ OPL_MASK

#define OPL_MASK   OPLC(0x3f, 0x3ff, 1)

Definition at line 28 of file libps_internal.h.

◆ OPL_MASK_DOT

#define OPL_MASK_DOT   OPLC(0x3f, 0x3ff, 1)

Definition at line 29 of file libps_internal.h.

◆ OPLC

#define OPLC (   op,
  xop,
  rc 
)    (OPL((op), (xop)) | ((rc)&1))

Definition at line 27 of file libps_internal.h.

◆ OPM

#define OPM (   op,
  xop 
)    (OP(op) | ((((ut32)(xop)) & 0x3f) << 1))

Definition at line 22 of file libps_internal.h.

◆ OPM_MASK

#define OPM_MASK   OPMC(0x3f, 0x3f, 0)

Definition at line 24 of file libps_internal.h.

◆ OPMC

#define OPMC (   op,
  xop,
  rc 
)    (OPM((op), (xop)) | ((rc)&1))

Definition at line 23 of file libps_internal.h.

◆ OPS

#define OPS (   op,
  xop 
)    (OP(op) | ((((ut32)(xop)) & 0x1f) << 1))

Definition at line 17 of file libps_internal.h.

◆ OPS_MASK

#define OPS_MASK   OPSC(0x3f, 0x1f, 1)

Definition at line 19 of file libps_internal.h.

◆ OPS_MASK_DOT

#define OPS_MASK_DOT   OPSC(0x3f, 0x1f, 1)

Definition at line 20 of file libps_internal.h.

◆ OPSC

#define OPSC (   op,
  xop,
  rc 
)    (OPS((op), (xop)) | ((rc)&1))

Definition at line 18 of file libps_internal.h.

◆ TYPE_CR

#define TYPE_CR   4

Definition at line 12 of file libps_internal.h.

◆ TYPE_IMM

#define TYPE_IMM   2

Definition at line 10 of file libps_internal.h.

◆ TYPE_MEM

#define TYPE_MEM   3

Definition at line 11 of file libps_internal.h.

◆ TYPE_NONE

#define TYPE_NONE   0

Definition at line 8 of file libps_internal.h.

◆ TYPE_REG

#define TYPE_REG   1

Definition at line 9 of file libps_internal.h.

Enumeration Type Documentation

◆ ps_insn_type_t

Enumerator
psq_lx 
psq_stx 
psq_lux 
psq_stux 
psq_l 
psq_lu 
psq_st 
psq_stu 
ps_div 
ps_div_dot 
ps_sub 
ps_sub_dot 
ps_add 
ps_add_dot 
ps_sel 
ps_sel_dot 
ps_res 
ps_res_dot 
ps_mul 
ps_mul_dot 
ps_rsqrte 
ps_rsqrte_dot 
ps_msub 
ps_msub_dot 
ps_madd 
ps_madd_dot 
ps_nmsub 
ps_nmsub_dot 
ps_nmadd 
ps_nmadd_dot 
ps_neg 
ps_neg_dot 
ps_mr 
ps_mr_dot 
ps_nabs 
ps_nabs_dot 
ps_abs 
ps_abs_dot 
ps_sum0 
ps_sum0_dot 
ps_sum1 
ps_sum1_dot 
ps_muls0 
ps_muls0_dot 
ps_muls1 
ps_muls1_dot 
ps_madds0 
ps_madds0_dot 
ps_madds1 
ps_madds1_dot 
ps_cmpu0 
ps_cmpo0 
ps_cmpu1 
ps_cmpo1 
ps_merge00 
ps_merge00_dot 
ps_merge01 
ps_merge01_dot 
ps_merge10 
ps_merge10_dot 
ps_merge11 
ps_merge11_dot 
ps_dcbz_l 

Definition at line 49 of file libps_internal.h.

49  {
50  psq_lx,
51  psq_stx,
52  psq_lux,
53  psq_stux,
54  psq_l,
55  psq_lu,
56  psq_st,
57  psq_stu,
58 
59  ps_div,
60  ps_div_dot,
61  ps_sub,
62  ps_sub_dot,
63  ps_add,
64  ps_add_dot,
65  ps_sel,
66  ps_sel_dot,
67  ps_res,
68  ps_res_dot,
69  ps_mul,
70  ps_mul_dot,
71  ps_rsqrte,
73  ps_msub,
75  ps_madd,
77  ps_nmsub,
79  ps_nmadd,
81  ps_neg,
82  ps_neg_dot,
83  ps_mr,
84  ps_mr_dot,
85  ps_nabs,
87  ps_abs,
88  ps_abs_dot,
89 
90  ps_sum0,
92  ps_sum1,
94  ps_muls0,
96  ps_muls1,
98  ps_madds0,
100  ps_madds1,
102  ps_cmpu0,
103  ps_cmpo0,
104  ps_cmpu1,
105  ps_cmpo1,
106  ps_merge00,
108  ps_merge01,
110  ps_merge10,
112  ps_merge11,
114  ps_dcbz_l,
ps_insn_type_t
@ ps_nmsub
@ ps_nmadd_dot
@ ps_sum1_dot
@ ps_rsqrte
@ ps_madds1
@ ps_sum1
@ ps_nmsub_dot
@ ps_madd
@ ps_rsqrte_dot
@ ps_res_dot
@ ps_mul
@ ps_div
@ ps_madds1_dot
@ ps_merge10_dot
@ ps_merge11
@ psq_st
@ psq_stx
@ ps_nabs_dot
@ ps_neg_dot
@ ps_mr
@ psq_lu
@ ps_madds0_dot
@ ps_abs
@ ps_merge01_dot
@ ps_add
@ ps_cmpo0
@ ps_neg
@ ps_muls0
@ ps_div_dot
@ ps_sub
@ ps_dcbz_l
@ psq_stux
@ ps_res
@ ps_cmpu1
@ ps_merge00
@ ps_sum0_dot
@ ps_muls1_dot
@ ps_nmadd
@ ps_sel_dot
@ ps_merge10
@ ps_merge11_dot
@ ps_madd_dot
@ ps_add_dot
@ ps_abs_dot
@ ps_sel
@ ps_muls0_dot
@ psq_lx
@ psq_lux
@ ps_madds0
@ psq_stu
@ ps_msub
@ ps_merge00_dot
@ ps_sum0
@ ps_msub_dot
@ ps_sub_dot
@ ps_muls1
@ ps_cmpo1
@ ps_mul_dot
@ ps_cmpu0
@ ps_mr_dot
@ ps_merge01
@ psq_l
@ ps_nabs

◆ ps_operand_id_t

Enumerator
NO_OPERAND 
OP_FA 
OP_FB 
OP_FC 
OP_FD 
OP_FS 
OP_crfD 
OP_WB 
OP_IB 
OP_WC 
OP_IC 
OP_RA 
OP_RB 
OP_DRA 
OP_DRB 

Definition at line 31 of file libps_internal.h.

31  {
32  NO_OPERAND,
33  OP_FA,
34  OP_FB,
35  OP_FC,
36  OP_FD,
37  OP_FS = OP_FD,
38  OP_crfD,
39  OP_WB,
40  OP_IB,
41  OP_WC,
42  OP_IC,
43  OP_RA,
44  OP_RB,
45  OP_DRA,
46  OP_DRB,
ps_operand_id_t
@ OP_DRB
@ OP_FC
@ NO_OPERAND
@ OP_RB
@ OP_WB
@ OP_RA
@ OP_IB
@ OP_FD
@ OP_FB
@ OP_FA
@ OP_DRA
@ OP_WC
@ OP_IC
@ OP_crfD
@ OP_FS