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