2 * Copyright(c
) 2019-2021 Qualcomm Innovation Center
, Inc. All Rights Reserved.
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.
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.
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
/>.
19 /* DEF_ENC_SUBINSN(TAG
, CLASS
, ENCSTR
) */
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")
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")
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")
46 DEF_ENC_SUBINSN(SL2_deallocframe
,SUBINSN_L2
, "111 1100---0--")
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")
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")
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")
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")
73 DEF_ENC_SUBINSN(SS2_allocframe
, SUBINSN_S2
, "111 0iiiii----")
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")
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")
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")
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")
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")
114 /* maybe R
=cmpeq ?
*/
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
*/
124 DEF_FIELD32("---! !!!! !!!!!!!! EE------ --------",SUBFIELD_B_SLOT1
,"B: Slot1 Instruction")
125 DEF_FIELD32("---- ---- -------- EE-!!!!! !!!!!!!!",SUBFIELD_A_SLOT0
,"A: Slot0 Instruction")
128 /* DEF_PACKED32(TAG
, CLASSA
, CLASSB
, ENCSTR
) */
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")
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")
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")
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")
149 DEF_PACKED32(P2_PACKED_RESERVED
, SUBINSN_INVALID
, SUBINSN_INVALID
, "111B BBBB BBBB BBBB EE1A AAAA AAAA AAAA")