summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/cpu/powerpc/ppc_ops.h
blob: b44e92a016bcaedf9834a120a3adaaf86adb8333 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
// license:BSD-3-Clause
// copyright-holders:Aaron Giles
#pragma once

#ifndef __PPC_OPS_H__
#define __PPC_OPS_H__

static PPC_OPCODE ppc_opcode_common[] =
{
	/*code  subcode         handler             */
	{ 31,   266,            ppc_addx            },
	{ 31,   266 | 512,      ppc_addx            },
	{ 31,   10,             ppc_addcx           },
	{ 31,   10 | 512,       ppc_addcx           },
	{ 31,   138,            ppc_addex           },
	{ 31,   138 | 512,      ppc_addex           },
	{ 14,   -1,             ppc_addi            },
	{ 12,   -1,             ppc_addic           },
	{ 13,   -1,             ppc_addic_rc        },
	{ 15,   -1,             ppc_addis           },
	{ 31,   234,            ppc_addmex          },
	{ 31,   234 | 512,      ppc_addmex          },
	{ 31,   202,            ppc_addzex          },
	{ 31,   202 | 512,      ppc_addzex          },
	{ 31,   28,             ppc_andx            },
	{ 31,   28 | 512,       ppc_andx            },
	{ 31,   60,             ppc_andcx           },
	{ 28,   -1,             ppc_andi_rc         },
	{ 29,   -1,             ppc_andis_rc        },
	{ 18,   -1,             ppc_bx              },
	{ 16,   -1,             ppc_bcx             },
	{ 19,   528,            ppc_bcctrx          },
	{ 19,   16,             ppc_bclrx           },
	{ 31,   0,              ppc_cmp             },
	{ 11,   -1,             ppc_cmpi            },
	{ 31,   32,             ppc_cmpl            },
	{ 10,   -1,             ppc_cmpli           },
	{ 31,   26,             ppc_cntlzw          },
	{ 19,   257,            ppc_crand           },
	{ 19,   129,            ppc_crandc          },
	{ 19,   289,            ppc_creqv           },
	{ 19,   225,            ppc_crnand          },
	{ 19,   33,             ppc_crnor           },
	{ 19,   449,            ppc_cror            },
	{ 19,   417,            ppc_crorc           },
	{ 19,   193,            ppc_crxor           },
	{ 31,   86,             ppc_dcbf            },
	{ 31,   470,            ppc_dcbi            },
	{ 31,   54,             ppc_dcbst           },
	{ 31,   278,            ppc_dcbt            },
	{ 31,   246,            ppc_dcbtst          },
	{ 31,   1014,           ppc_dcbz            },
	{ 31,   491,            ppc_divwx           },
	{ 31,   491 | 512,      ppc_divwx           },
	{ 31,   459,            ppc_divwux          },
	{ 31,   459 | 512,      ppc_divwux          },
	{ 31,   854,            ppc_eieio           },
	{ 31,   284,            ppc_eqvx            },
	{ 31,   954,            ppc_extsbx          },
	{ 31,   922,            ppc_extshx          },
	{ 31,   982,            ppc_icbi            },
	{ 19,   150,            ppc_isync           },
	{ 34,   -1,             ppc_lbz             },
	{ 35,   -1,             ppc_lbzu            },
	{ 31,   119,            ppc_lbzux           },
	{ 31,   87,             ppc_lbzx            },
	{ 42,   -1,             ppc_lha             },
	{ 43,   -1,             ppc_lhau            },
	{ 31,   375,            ppc_lhaux           },
	{ 31,   343,            ppc_lhax            },
	{ 31,   790,            ppc_lhbrx           },
	{ 40,   -1,             ppc_lhz             },
	{ 41,   -1,             ppc_lhzu            },
	{ 31,   311,            ppc_lhzux           },
	{ 31,   279,            ppc_lhzx            },
	{ 46,   -1,             ppc_lmw             },
	{ 31,   597,            ppc_lswi            },
	{ 31,   533,            ppc_lswx            },
	{ 31,   20,             ppc_lwarx           },
	{ 31,   534,            ppc_lwbrx           },
	{ 32,   -1,             ppc_lwz             },
	{ 33,   -1,             ppc_lwzu            },
	{ 31,   55,             ppc_lwzux           },
	{ 31,   23,             ppc_lwzx            },
	{ 19,   0,              ppc_mcrf            },
	{ 31,   512,            ppc_mcrxr           },
	{ 31,   19,             ppc_mfcr            },
	{ 31,   83,             ppc_mfmsr           },
	{ 31,   339,            ppc_mfspr           },
	{ 31,   144,            ppc_mtcrf           },
	{ 31,   146,            ppc_mtmsr           },
	{ 31,   467,            ppc_mtspr           },
	{ 31,   75,             ppc_mulhwx          },
	{ 31,   11,             ppc_mulhwux         },
	{ 7,    -1,             ppc_mulli           },
	{ 31,   235,            ppc_mullwx          },
	{ 31,   235 | 512,      ppc_mullwx          },
	{ 31,   476,            ppc_nandx           },
	{ 31,   104,            ppc_negx            },
	{ 31,   104 | 512,      ppc_negx            },
	{ 31,   124,            ppc_norx            },
	{ 31,   444,            ppc_orx             },
	{ 31,   412,            ppc_orcx            },
	{ 24,   -1,             ppc_ori             },
	{ 25,   -1,             ppc_oris            },
	{ 19,   50,             ppc_rfi             },
	{ 20,   -1,             ppc_rlwimix         },
	{ 21,   -1,             ppc_rlwinmx         },
	{ 23,   -1,             ppc_rlwnmx          },
	{ 17,   -1,             ppc_sc              },
	{ 31,   24,             ppc_slwx            },
	{ 31,   792,            ppc_srawx           },
	{ 31,   824,            ppc_srawix          },
	{ 31,   536,            ppc_srwx            },
	{ 38,   -1,             ppc_stb             },
	{ 39,   -1,             ppc_stbu            },
	{ 31,   247,            ppc_stbux           },
	{ 31,   215,            ppc_stbx            },
	{ 44,   -1,             ppc_sth             },
	{ 31,   918,            ppc_sthbrx          },
	{ 45,   -1,             ppc_sthu            },
	{ 31,   439,            ppc_sthux           },
	{ 31,   407,            ppc_sthx            },
	{ 47,   -1,             ppc_stmw            },
	{ 31,   725,            ppc_stswi           },
	{ 31,   661,            ppc_stswx           },
	{ 36,   -1,             ppc_stw             },
	{ 31,   662,            ppc_stwbrx          },
	{ 31,   150,            ppc_stwcx_rc        },
	{ 37,   -1,             ppc_stwu            },
	{ 31,   183,            ppc_stwux           },
	{ 31,   151,            ppc_stwx            },
	{ 31,   40,             ppc_subfx           },
	{ 31,   40 | 512,       ppc_subfx           },
	{ 31,   8,              ppc_subfcx          },
	{ 31,   8 | 512,        ppc_subfcx          },
	{ 31,   136,            ppc_subfex          },
	{ 31,   136 | 512,      ppc_subfex          },
	{ 8,    -1,             ppc_subfic          },
	{ 31,   232,            ppc_subfmex         },
	{ 31,   232 | 512,      ppc_subfmex         },
	{ 31,   200,            ppc_subfzex         },
	{ 31,   200 | 512,      ppc_subfzex         },
	{ 31,   598,            ppc_sync            },
	{ 31,   4,              ppc_tw              },
	{ 3,    -1,             ppc_twi             },
	{ 31,   316,            ppc_xorx            },
	{ 26,   -1,             ppc_xori            },
	{ 27,   -1,             ppc_xoris           }
};

#endif /* __PPC_OPS_H__ */