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