]>
Commit | Line | Data |
---|---|---|
7cf9345c TS |
1 | /* |
2 | * Copyright(c) 2019-2021 Qualcomm Innovation Center, Inc. All Rights Reserved. | |
3 | * | |
4 | * This program is free software; you can redistribute it and/or modify | |
5 | * it under the terms of the GNU General Public License as published by | |
6 | * the Free Software Foundation; either version 2 of the License, or | |
7 | * (at your option) any later version. | |
8 | * | |
9 | * This program is distributed in the hope that it will be useful, | |
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 | * GNU General Public License for more details. | |
13 | * | |
14 | * You should have received a copy of the GNU General Public License | |
15 | * along with this program; if not, see <http://www.gnu.org/licenses/>. | |
16 | */ | |
17 | ||
18 | ||
19 | /* DEF_ENC_SUBINSN(TAG, CLASS, ENCSTR) */ | |
20 | ||
21 | ||
22 | ||
23 | ||
24 | /*********************/ | |
25 | /* Ld1-type subinsns */ | |
26 | /*********************/ | |
27 | DEF_ENC_SUBINSN(SL1_loadri_io, SUBINSN_L1, "0iiiissssdddd") | |
28 | DEF_ENC_SUBINSN(SL1_loadrub_io, SUBINSN_L1, "1iiiissssdddd") | |
29 | ||
30 | /*********************/ | |
31 | /* St1-type subinsns */ | |
32 | /*********************/ | |
33 | DEF_ENC_SUBINSN(SS1_storew_io, SUBINSN_S1, "0ii iisssstttt") | |
34 | DEF_ENC_SUBINSN(SS1_storeb_io, SUBINSN_S1, "1ii iisssstttt") | |
35 | ||
36 | ||
37 | /*********************/ | |
38 | /* Ld2-type subinsns */ | |
39 | /*********************/ | |
40 | DEF_ENC_SUBINSN(SL2_loadrh_io, SUBINSN_L2, "00i iissssdddd") | |
41 | DEF_ENC_SUBINSN(SL2_loadruh_io, SUBINSN_L2, "01i iissssdddd") | |
42 | DEF_ENC_SUBINSN(SL2_loadrb_io, SUBINSN_L2, "10i iissssdddd") | |
43 | DEF_ENC_SUBINSN(SL2_loadri_sp, SUBINSN_L2, "111 0iiiiidddd") | |
44 | DEF_ENC_SUBINSN(SL2_loadrd_sp, SUBINSN_L2, "111 10iiiiiddd") | |
45 | ||
46 | DEF_ENC_SUBINSN(SL2_deallocframe,SUBINSN_L2, "111 1100---0--") | |
47 | ||
48 | DEF_ENC_SUBINSN(SL2_return, SUBINSN_L2, "111 1101---0--") | |
49 | DEF_ENC_SUBINSN(SL2_return_t, SUBINSN_L2, "111 1101---100") | |
50 | DEF_ENC_SUBINSN(SL2_return_f, SUBINSN_L2, "111 1101---101") | |
51 | DEF_ENC_SUBINSN(SL2_return_tnew, SUBINSN_L2, "111 1101---110") | |
52 | DEF_ENC_SUBINSN(SL2_return_fnew, SUBINSN_L2, "111 1101---111") | |
53 | ||
54 | DEF_ENC_SUBINSN(SL2_jumpr31, SUBINSN_L2, "111 1111---0--") | |
55 | DEF_ENC_SUBINSN(SL2_jumpr31_t, SUBINSN_L2, "111 1111---100") | |
56 | DEF_ENC_SUBINSN(SL2_jumpr31_f, SUBINSN_L2, "111 1111---101") | |
57 | DEF_ENC_SUBINSN(SL2_jumpr31_tnew,SUBINSN_L2, "111 1111---110") | |
58 | DEF_ENC_SUBINSN(SL2_jumpr31_fnew,SUBINSN_L2, "111 1111---111") | |
59 | ||
60 | ||
61 | /*********************/ | |
62 | /* St2-type subinsns */ | |
63 | /*********************/ | |
64 | DEF_ENC_SUBINSN(SS2_storeh_io, SUBINSN_S2, "00i iisssstttt") | |
65 | DEF_ENC_SUBINSN(SS2_storew_sp, SUBINSN_S2, "010 0iiiiitttt") | |
66 | DEF_ENC_SUBINSN(SS2_stored_sp, SUBINSN_S2, "010 1iiiiiittt") | |
67 | ||
68 | DEF_ENC_SUBINSN(SS2_storewi0, SUBINSN_S2, "100 00ssssiiii") | |
69 | DEF_ENC_SUBINSN(SS2_storewi1, SUBINSN_S2, "100 01ssssiiii") | |
70 | DEF_ENC_SUBINSN(SS2_storebi0, SUBINSN_S2, "100 10ssssiiii") | |
71 | DEF_ENC_SUBINSN(SS2_storebi1, SUBINSN_S2, "100 11ssssiiii") | |
72 | ||
73 | DEF_ENC_SUBINSN(SS2_allocframe, SUBINSN_S2, "111 0iiiii----") | |
74 | ||
75 | ||
76 | ||
77 | /*******************/ | |
78 | /* A-type subinsns */ | |
79 | /*******************/ | |
80 | DEF_ENC_SUBINSN(SA1_addi, SUBINSN_A, "00i iiiiiixxxx") | |
81 | DEF_ENC_SUBINSN(SA1_seti, SUBINSN_A, "010 iiiiiidddd") | |
82 | DEF_ENC_SUBINSN(SA1_addsp, SUBINSN_A, "011 iiiiiidddd") | |
83 | ||
84 | DEF_ENC_SUBINSN(SA1_tfr, SUBINSN_A, "100 00ssssdddd") | |
85 | DEF_ENC_SUBINSN(SA1_inc, SUBINSN_A, "100 01ssssdddd") | |
86 | DEF_ENC_SUBINSN(SA1_and1, SUBINSN_A, "100 10ssssdddd") | |
87 | DEF_ENC_SUBINSN(SA1_dec, SUBINSN_A, "100 11ssssdddd") | |
88 | ||
89 | DEF_ENC_SUBINSN(SA1_sxth, SUBINSN_A, "101 00ssssdddd") | |
90 | DEF_ENC_SUBINSN(SA1_sxtb, SUBINSN_A, "101 01ssssdddd") | |
91 | DEF_ENC_SUBINSN(SA1_zxth, SUBINSN_A, "101 10ssssdddd") | |
92 | DEF_ENC_SUBINSN(SA1_zxtb, SUBINSN_A, "101 11ssssdddd") | |
93 | ||
94 | ||
95 | DEF_ENC_SUBINSN(SA1_addrx, SUBINSN_A, "110 00ssssxxxx") | |
96 | DEF_ENC_SUBINSN(SA1_cmpeqi, SUBINSN_A, "110 01ssss--ii") | |
97 | DEF_ENC_SUBINSN(SA1_setin1, SUBINSN_A, "110 1--0--dddd") | |
98 | DEF_ENC_SUBINSN(SA1_clrtnew, SUBINSN_A, "110 1--100dddd") | |
99 | DEF_ENC_SUBINSN(SA1_clrfnew, SUBINSN_A, "110 1--101dddd") | |
100 | DEF_ENC_SUBINSN(SA1_clrt, SUBINSN_A, "110 1--110dddd") | |
101 | DEF_ENC_SUBINSN(SA1_clrf, SUBINSN_A, "110 1--111dddd") | |
102 | ||
103 | ||
104 | DEF_ENC_SUBINSN(SA1_combine0i, SUBINSN_A, "111 -0-ii00ddd") | |
105 | DEF_ENC_SUBINSN(SA1_combine1i, SUBINSN_A, "111 -0-ii01ddd") | |
106 | DEF_ENC_SUBINSN(SA1_combine2i, SUBINSN_A, "111 -0-ii10ddd") | |
107 | DEF_ENC_SUBINSN(SA1_combine3i, SUBINSN_A, "111 -0-ii11ddd") | |
108 | DEF_ENC_SUBINSN(SA1_combinezr, SUBINSN_A, "111 -1ssss0ddd") | |
109 | DEF_ENC_SUBINSN(SA1_combinerz, SUBINSN_A, "111 -1ssss1ddd") | |
110 | ||
111 | ||
112 | ||
113 | ||
114 | /* maybe R=cmpeq ? */ | |
115 | ||
116 | ||
117 | /* Add a group of NCJ: if (R.new==#0) jump:hint #r9 */ | |
118 | /* Add a group of NCJ: if (R.new!=#0) jump:hint #r9 */ | |
119 | /* NCJ goes with LD1, LD2 */ | |
120 | ||
121 | ||
122 | ||
123 | ||
124 | DEF_FIELD32("---! !!!! !!!!!!!! EE------ --------",SUBFIELD_B_SLOT1,"B: Slot1 Instruction") | |
125 | DEF_FIELD32("---- ---- -------- EE-!!!!! !!!!!!!!",SUBFIELD_A_SLOT0,"A: Slot0 Instruction") | |
126 | ||
127 | ||
128 | /* DEF_PACKED32(TAG, CLASSA, CLASSB, ENCSTR) */ | |
129 | ||
130 | DEF_PACKED32(P2_PACKED_L1_L1, SUBINSN_L1, SUBINSN_L1, "000B BBBB BBBB BBBB EE0A AAAA AAAA AAAA") | |
131 | DEF_PACKED32(P2_PACKED_L1_L2, SUBINSN_L2, SUBINSN_L1, "000B BBBB BBBB BBBB EE1A AAAA AAAA AAAA") | |
132 | DEF_PACKED32(P2_PACKED_L2_L2, SUBINSN_L2, SUBINSN_L2, "001B BBBB BBBB BBBB EE0A AAAA AAAA AAAA") | |
133 | DEF_PACKED32(P2_PACKED_A_A, SUBINSN_A, SUBINSN_A, "001B BBBB BBBB BBBB EE1A AAAA AAAA AAAA") | |
134 | ||
135 | DEF_PACKED32(P2_PACKED_L1_A, SUBINSN_L1, SUBINSN_A, "010B BBBB BBBB BBBB EE0A AAAA AAAA AAAA") | |
136 | DEF_PACKED32(P2_PACKED_L2_A, SUBINSN_L2, SUBINSN_A, "010B BBBB BBBB BBBB EE1A AAAA AAAA AAAA") | |
137 | DEF_PACKED32(P2_PACKED_S1_A, SUBINSN_S1, SUBINSN_A, "011B BBBB BBBB BBBB EE0A AAAA AAAA AAAA") | |
138 | DEF_PACKED32(P2_PACKED_S2_A, SUBINSN_S2, SUBINSN_A, "011B BBBB BBBB BBBB EE1A AAAA AAAA AAAA") | |
139 | ||
140 | DEF_PACKED32(P2_PACKED_S1_L1, SUBINSN_S1, SUBINSN_L1, "100B BBBB BBBB BBBB EE0A AAAA AAAA AAAA") | |
141 | DEF_PACKED32(P2_PACKED_S1_L2, SUBINSN_S1, SUBINSN_L2, "100B BBBB BBBB BBBB EE1A AAAA AAAA AAAA") | |
142 | DEF_PACKED32(P2_PACKED_S1_S1, SUBINSN_S1, SUBINSN_S1, "101B BBBB BBBB BBBB EE0A AAAA AAAA AAAA") | |
143 | DEF_PACKED32(P2_PACKED_S1_S2, SUBINSN_S2, SUBINSN_S1, "101B BBBB BBBB BBBB EE1A AAAA AAAA AAAA") | |
144 | ||
145 | DEF_PACKED32(P2_PACKED_S2_L1, SUBINSN_S2, SUBINSN_L1, "110B BBBB BBBB BBBB EE0A AAAA AAAA AAAA") | |
146 | DEF_PACKED32(P2_PACKED_S2_L2, SUBINSN_S2, SUBINSN_L2, "110B BBBB BBBB BBBB EE1A AAAA AAAA AAAA") | |
147 | DEF_PACKED32(P2_PACKED_S2_S2, SUBINSN_S2, SUBINSN_S2, "111B BBBB BBBB BBBB EE0A AAAA AAAA AAAA") | |
148 | ||
149 | DEF_PACKED32(P2_PACKED_RESERVED, SUBINSN_INVALID, SUBINSN_INVALID, "111B BBBB BBBB BBBB EE1A AAAA AAAA AAAA") |