1 class Enc_COPROC_VX_3op_v<bits<15> opc> : OpcodeHexagon { 2 bits<5> dst; 3 bits<5> src1; 4 bits<5> src2; 5 6 let Inst{31-16} = { opc{14-4}, src2}; 7 let Inst{13-0} = { opc{3}, src1, opc{2-0}, dst}; 8 } 9 10 class V6_vtmpyb_enc : Enc_COPROC_VX_3op_v<0b000110010000000>; 11 class V6_vtmpybus_enc : Enc_COPROC_VX_3op_v<0b000110010000001>; 12 class V6_vdmpyhb_enc : Enc_COPROC_VX_3op_v<0b000110010000010>; 13 class V6_vrmpyub_enc : Enc_COPROC_VX_3op_v<0b000110010000011>; 14 class V6_vrmpybus_enc : Enc_COPROC_VX_3op_v<0b000110010000100>; 15 class V6_vdsaduh_enc : Enc_COPROC_VX_3op_v<0b000110010000101>; 16 class V6_vdmpybus_enc : Enc_COPROC_VX_3op_v<0b000110010000110>; 17 class V6_vdmpybus_dv_enc : Enc_COPROC_VX_3op_v<0b000110010000111>; 18 class V6_vtmpyb_acc_enc : Enc_COPROC_VX_3op_v<0b000110010001000>; 19 class V6_vtmpybus_acc_enc : Enc_COPROC_VX_3op_v<0b000110010001001>; 20 class V6_vtmpyhb_acc_enc : Enc_COPROC_VX_3op_v<0b000110010001010>; 21 class V6_vdmpyhb_acc_enc : Enc_COPROC_VX_3op_v<0b000110010001011>; 22 class V6_vrmpyub_acc_enc : Enc_COPROC_VX_3op_v<0b000110010001100>; 23 class V6_vrmpybus_acc_enc : Enc_COPROC_VX_3op_v<0b000110010001101>; 24 class V6_vdmpybus_acc_enc : Enc_COPROC_VX_3op_v<0b000110010001110>; 25 class V6_vdmpybus_dv_acc_enc : Enc_COPROC_VX_3op_v<0b000110010001111>; 26 class V6_vdmpyhsusat_enc : Enc_COPROC_VX_3op_v<0b000110010010000>; 27 class V6_vdmpyhsuisat_enc : Enc_COPROC_VX_3op_v<0b000110010010001>; 28 class V6_vdmpyhsat_enc : Enc_COPROC_VX_3op_v<0b000110010010010>; 29 class V6_vdmpyhisat_enc : Enc_COPROC_VX_3op_v<0b000110010010011>; 30 class V6_vdmpyhb_dv_enc : Enc_COPROC_VX_3op_v<0b000110010010100>; 31 class V6_vmpybus_enc : Enc_COPROC_VX_3op_v<0b000110010010101>; 32 class V6_vmpabus_enc : Enc_COPROC_VX_3op_v<0b000110010010110>; 33 class V6_vmpahb_enc : Enc_COPROC_VX_3op_v<0b000110010010111>; 34 class V6_vdmpyhsusat_acc_enc : Enc_COPROC_VX_3op_v<0b000110010011000>; 35 class V6_vdmpyhsuisat_acc_enc : Enc_COPROC_VX_3op_v<0b000110010011001>; 36 class V6_vdmpyhisat_acc_enc : Enc_COPROC_VX_3op_v<0b000110010011010>; 37 class V6_vdmpyhsat_acc_enc : Enc_COPROC_VX_3op_v<0b000110010011011>; 38 class V6_vdmpyhb_dv_acc_enc : Enc_COPROC_VX_3op_v<0b000110010011100>; 39 class V6_vmpybus_acc_enc : Enc_COPROC_VX_3op_v<0b000110010011101>; 40 class V6_vmpabus_acc_enc : Enc_COPROC_VX_3op_v<0b000110010011110>; 41 class V6_vmpahb_acc_enc : Enc_COPROC_VX_3op_v<0b000110010011111>; 42 class V6_vmpyh_enc : Enc_COPROC_VX_3op_v<0b000110010100000>; 43 class V6_vmpyhss_enc : Enc_COPROC_VX_3op_v<0b000110010100001>; 44 class V6_vmpyhsrs_enc : Enc_COPROC_VX_3op_v<0b000110010100010>; 45 class V6_vmpyuh_enc : Enc_COPROC_VX_3op_v<0b000110010100011>; 46 class V6_vmpyhsat_acc_enc : Enc_COPROC_VX_3op_v<0b000110010101000>; 47 class V6_vmpyuh_acc_enc : Enc_COPROC_VX_3op_v<0b000110010101001>; 48 class V6_vmpyiwb_acc_enc : Enc_COPROC_VX_3op_v<0b000110010101010>; 49 class V6_vmpyiwh_acc_enc : Enc_COPROC_VX_3op_v<0b000110010101011>; 50 class V6_vmpyihb_enc : Enc_COPROC_VX_3op_v<0b000110010110000>; 51 class V6_vror_enc : Enc_COPROC_VX_3op_v<0b000110010110001>; 52 class V6_vasrw_enc : Enc_COPROC_VX_3op_v<0b000110010110101>; 53 class V6_vasrh_enc : Enc_COPROC_VX_3op_v<0b000110010110110>; 54 class V6_vaslw_enc : Enc_COPROC_VX_3op_v<0b000110010110111>; 55 class V6_vdsaduh_acc_enc : Enc_COPROC_VX_3op_v<0b000110010111000>; 56 class V6_vmpyihb_acc_enc : Enc_COPROC_VX_3op_v<0b000110010111001>; 57 class V6_vaslw_acc_enc : Enc_COPROC_VX_3op_v<0b000110010111010>; 58 class V6_vasrw_acc_enc : Enc_COPROC_VX_3op_v<0b000110010111101>; 59 class V6_vaslh_enc : Enc_COPROC_VX_3op_v<0b000110011000000>; 60 class V6_vlsrw_enc : Enc_COPROC_VX_3op_v<0b000110011000001>; 61 class V6_vlsrh_enc : Enc_COPROC_VX_3op_v<0b000110011000010>; 62 class V6_vmpyiwh_enc : Enc_COPROC_VX_3op_v<0b000110011000111>; 63 class V6_vmpyub_acc_enc : Enc_COPROC_VX_3op_v<0b000110011001000>; 64 class V6_vmpyiwb_enc : Enc_COPROC_VX_3op_v<0b000110011010000>; 65 class V6_vtmpyhb_enc : Enc_COPROC_VX_3op_v<0b000110011010100>; 66 class V6_vmpyub_enc : Enc_COPROC_VX_3op_v<0b000110011100000>; 67 class V6_vrmpyubv_enc : Enc_COPROC_VX_3op_v<0b000111000000000>; 68 class V6_vrmpybv_enc : Enc_COPROC_VX_3op_v<0b000111000000001>; 69 class V6_vrmpybusv_enc : Enc_COPROC_VX_3op_v<0b000111000000010>; 70 class V6_vdmpyhvsat_enc : Enc_COPROC_VX_3op_v<0b000111000000011>; 71 class V6_vmpybv_enc : Enc_COPROC_VX_3op_v<0b000111000000100>; 72 class V6_vmpyubv_enc : Enc_COPROC_VX_3op_v<0b000111000000101>; 73 class V6_vmpybusv_enc : Enc_COPROC_VX_3op_v<0b000111000000110>; 74 class V6_vmpyhv_enc : Enc_COPROC_VX_3op_v<0b000111000000111>; 75 class V6_vrmpyubv_acc_enc : Enc_COPROC_VX_3op_v<0b000111000001000>; 76 class V6_vrmpybv_acc_enc : Enc_COPROC_VX_3op_v<0b000111000001001>; 77 class V6_vrmpybusv_acc_enc : Enc_COPROC_VX_3op_v<0b000111000001010>; 78 class V6_vdmpyhvsat_acc_enc : Enc_COPROC_VX_3op_v<0b000111000001011>; 79 class V6_vmpybv_acc_enc : Enc_COPROC_VX_3op_v<0b000111000001100>; 80 class V6_vmpyubv_acc_enc : Enc_COPROC_VX_3op_v<0b000111000001101>; 81 class V6_vmpybusv_acc_enc : Enc_COPROC_VX_3op_v<0b000111000001110>; 82 class V6_vmpyhv_acc_enc : Enc_COPROC_VX_3op_v<0b000111000001111>; 83 class V6_vmpyuhv_enc : Enc_COPROC_VX_3op_v<0b000111000010000>; 84 class V6_vmpyhvsrs_enc : Enc_COPROC_VX_3op_v<0b000111000010001>; 85 class V6_vmpyhus_enc : Enc_COPROC_VX_3op_v<0b000111000010010>; 86 class V6_vmpabusv_enc : Enc_COPROC_VX_3op_v<0b000111000010011>; 87 class V6_vmpyih_enc : Enc_COPROC_VX_3op_v<0b000111000010100>; 88 class V6_vand_enc : Enc_COPROC_VX_3op_v<0b000111000010101>; 89 class V6_vor_enc : Enc_COPROC_VX_3op_v<0b000111000010110>; 90 class V6_vxor_enc : Enc_COPROC_VX_3op_v<0b000111000010111>; 91 class V6_vmpyuhv_acc_enc : Enc_COPROC_VX_3op_v<0b000111000011000>; 92 class V6_vmpyhus_acc_enc : Enc_COPROC_VX_3op_v<0b000111000011001>; 93 class V6_vmpyih_acc_enc : Enc_COPROC_VX_3op_v<0b000111000011100>; 94 class V6_vmpyiewuh_acc_enc : Enc_COPROC_VX_3op_v<0b000111000011101>; 95 class V6_vmpyowh_sacc_enc : Enc_COPROC_VX_3op_v<0b000111000011110>; 96 class V6_vmpyowh_rnd_sacc_enc : Enc_COPROC_VX_3op_v<0b000111000011111>; 97 class V6_vaddw_enc : Enc_COPROC_VX_3op_v<0b000111000100000>; 98 class V6_vaddubsat_enc : Enc_COPROC_VX_3op_v<0b000111000100001>; 99 class V6_vadduhsat_enc : Enc_COPROC_VX_3op_v<0b000111000100010>; 100 class V6_vaddhsat_enc : Enc_COPROC_VX_3op_v<0b000111000100011>; 101 class V6_vaddwsat_enc : Enc_COPROC_VX_3op_v<0b000111000100100>; 102 class V6_vsubb_enc : Enc_COPROC_VX_3op_v<0b000111000100101>; 103 class V6_vsubh_enc : Enc_COPROC_VX_3op_v<0b000111000100110>; 104 class V6_vsubw_enc : Enc_COPROC_VX_3op_v<0b000111000100111>; 105 class V6_vmpyiewh_acc_enc : Enc_COPROC_VX_3op_v<0b000111000101000>; 106 class V6_vsububsat_enc : Enc_COPROC_VX_3op_v<0b000111000110000>; 107 class V6_vsubuhsat_enc : Enc_COPROC_VX_3op_v<0b000111000110001>; 108 class V6_vsubhsat_enc : Enc_COPROC_VX_3op_v<0b000111000110010>; 109 class V6_vsubwsat_enc : Enc_COPROC_VX_3op_v<0b000111000110011>; 110 class V6_vaddb_dv_enc : Enc_COPROC_VX_3op_v<0b000111000110100>; 111 class V6_vaddh_dv_enc : Enc_COPROC_VX_3op_v<0b000111000110101>; 112 class V6_vaddw_dv_enc : Enc_COPROC_VX_3op_v<0b000111000110110>; 113 class V6_vaddubsat_dv_enc : Enc_COPROC_VX_3op_v<0b000111000110111>; 114 class V6_vadduhsat_dv_enc : Enc_COPROC_VX_3op_v<0b000111001000000>; 115 class V6_vaddhsat_dv_enc : Enc_COPROC_VX_3op_v<0b000111001000001>; 116 class V6_vaddwsat_dv_enc : Enc_COPROC_VX_3op_v<0b000111001000010>; 117 class V6_vsubb_dv_enc : Enc_COPROC_VX_3op_v<0b000111001000011>; 118 class V6_vsubh_dv_enc : Enc_COPROC_VX_3op_v<0b000111001000100>; 119 class V6_vsubw_dv_enc : Enc_COPROC_VX_3op_v<0b000111001000101>; 120 class V6_vsububsat_dv_enc : Enc_COPROC_VX_3op_v<0b000111001000110>; 121 class V6_vsubuhsat_dv_enc : Enc_COPROC_VX_3op_v<0b000111001000111>; 122 class V6_vsubhsat_dv_enc : Enc_COPROC_VX_3op_v<0b000111001010000>; 123 class V6_vsubwsat_dv_enc : Enc_COPROC_VX_3op_v<0b000111001010001>; 124 class V6_vaddubh_enc : Enc_COPROC_VX_3op_v<0b000111001010010>; 125 class V6_vadduhw_enc : Enc_COPROC_VX_3op_v<0b000111001010011>; 126 class V6_vaddhw_enc : Enc_COPROC_VX_3op_v<0b000111001010100>; 127 class V6_vsububh_enc : Enc_COPROC_VX_3op_v<0b000111001010101>; 128 class V6_vsubuhw_enc : Enc_COPROC_VX_3op_v<0b000111001010110>; 129 class V6_vsubhw_enc : Enc_COPROC_VX_3op_v<0b000111001010111>; 130 class V6_vabsdiffub_enc : Enc_COPROC_VX_3op_v<0b000111001100000>; 131 class V6_vabsdiffh_enc : Enc_COPROC_VX_3op_v<0b000111001100001>; 132 class V6_vabsdiffuh_enc : Enc_COPROC_VX_3op_v<0b000111001100010>; 133 class V6_vabsdiffw_enc : Enc_COPROC_VX_3op_v<0b000111001100011>; 134 class V6_vavgub_enc : Enc_COPROC_VX_3op_v<0b000111001100100>; 135 class V6_vavguh_enc : Enc_COPROC_VX_3op_v<0b000111001100101>; 136 class V6_vavgh_enc : Enc_COPROC_VX_3op_v<0b000111001100110>; 137 class V6_vavgw_enc : Enc_COPROC_VX_3op_v<0b000111001100111>; 138 class V6_vnavgub_enc : Enc_COPROC_VX_3op_v<0b000111001110000>; 139 class V6_vnavgh_enc : Enc_COPROC_VX_3op_v<0b000111001110001>; 140 class V6_vnavgw_enc : Enc_COPROC_VX_3op_v<0b000111001110010>; 141 class V6_vavgubrnd_enc : Enc_COPROC_VX_3op_v<0b000111001110011>; 142 class V6_vavguhrnd_enc : Enc_COPROC_VX_3op_v<0b000111001110100>; 143 class V6_vavghrnd_enc : Enc_COPROC_VX_3op_v<0b000111001110101>; 144 class V6_vavgwrnd_enc : Enc_COPROC_VX_3op_v<0b000111001110110>; 145 class V6_vmpabuuv_enc : Enc_COPROC_VX_3op_v<0b000111001110111>; 146 class V6_vminub_enc : Enc_COPROC_VX_3op_v<0b000111110000001>; 147 class V6_vminuh_enc : Enc_COPROC_VX_3op_v<0b000111110000010>; 148 class V6_vminh_enc : Enc_COPROC_VX_3op_v<0b000111110000011>; 149 class V6_vminw_enc : Enc_COPROC_VX_3op_v<0b000111110000100>; 150 class V6_vmaxub_enc : Enc_COPROC_VX_3op_v<0b000111110000101>; 151 class V6_vmaxuh_enc : Enc_COPROC_VX_3op_v<0b000111110000110>; 152 class V6_vmaxh_enc : Enc_COPROC_VX_3op_v<0b000111110000111>; 153 class V6_vmaxw_enc : Enc_COPROC_VX_3op_v<0b000111110010000>; 154 class V6_vdelta_enc : Enc_COPROC_VX_3op_v<0b000111110010001>; 155 class V6_vrdelta_enc : Enc_COPROC_VX_3op_v<0b000111110010011>; 156 class V6_vdealb4w_enc : Enc_COPROC_VX_3op_v<0b000111110010111>; 157 class V6_vmpyowh_rnd_enc : Enc_COPROC_VX_3op_v<0b000111110100000>; 158 class V6_vshuffeb_enc : Enc_COPROC_VX_3op_v<0b000111110100001>; 159 class V6_vshuffob_enc : Enc_COPROC_VX_3op_v<0b000111110100010>; 160 class V6_vshufeh_enc : Enc_COPROC_VX_3op_v<0b000111110100011>; 161 class V6_vshufoh_enc : Enc_COPROC_VX_3op_v<0b000111110100100>; 162 class V6_vshufoeh_enc : Enc_COPROC_VX_3op_v<0b000111110100101>; 163 class V6_vshufoeb_enc : Enc_COPROC_VX_3op_v<0b000111110100110>; 164 class V6_vcombine_enc : Enc_COPROC_VX_3op_v<0b000111110100111>; 165 class V6_vmpyieoh_enc : Enc_COPROC_VX_3op_v<0b000111110110000>; 166 class V6_vsathub_enc : Enc_COPROC_VX_3op_v<0b000111110110010>; 167 class V6_vsatwh_enc : Enc_COPROC_VX_3op_v<0b000111110110011>; 168 class V6_vroundwh_enc : Enc_COPROC_VX_3op_v<0b000111110110100>; 169 class V6_vroundwuh_enc : Enc_COPROC_VX_3op_v<0b000111110110101>; 170 class V6_vroundhb_enc : Enc_COPROC_VX_3op_v<0b000111110110110>; 171 class V6_vroundhub_enc : Enc_COPROC_VX_3op_v<0b000111110110111>; 172 class V6_vasrwv_enc : Enc_COPROC_VX_3op_v<0b000111111010000>; 173 class V6_vlsrwv_enc : Enc_COPROC_VX_3op_v<0b000111111010001>; 174 class V6_vlsrhv_enc : Enc_COPROC_VX_3op_v<0b000111111010010>; 175 class V6_vasrhv_enc : Enc_COPROC_VX_3op_v<0b000111111010011>; 176 class V6_vaslwv_enc : Enc_COPROC_VX_3op_v<0b000111111010100>; 177 class V6_vaslhv_enc : Enc_COPROC_VX_3op_v<0b000111111010101>; 178 class V6_vaddb_enc : Enc_COPROC_VX_3op_v<0b000111111010110>; 179 class V6_vaddh_enc : Enc_COPROC_VX_3op_v<0b000111111010111>; 180 class V6_vmpyiewuh_enc : Enc_COPROC_VX_3op_v<0b000111111100000>; 181 class V6_vmpyiowh_enc : Enc_COPROC_VX_3op_v<0b000111111100001>; 182 class V6_vpackeb_enc : Enc_COPROC_VX_3op_v<0b000111111100010>; 183 class V6_vpackeh_enc : Enc_COPROC_VX_3op_v<0b000111111100011>; 184 class V6_vpackhub_sat_enc : Enc_COPROC_VX_3op_v<0b000111111100101>; 185 class V6_vpackhb_sat_enc : Enc_COPROC_VX_3op_v<0b000111111100110>; 186 class V6_vpackwuh_sat_enc : Enc_COPROC_VX_3op_v<0b000111111100111>; 187 class V6_vpackwh_sat_enc : Enc_COPROC_VX_3op_v<0b000111111110000>; 188 class V6_vpackob_enc : Enc_COPROC_VX_3op_v<0b000111111110001>; 189 class V6_vpackoh_enc : Enc_COPROC_VX_3op_v<0b000111111110010>; 190 class V6_vmpyewuh_enc : Enc_COPROC_VX_3op_v<0b000111111110101>; 191 class V6_vmpyowh_enc : Enc_COPROC_VX_3op_v<0b000111111110111>; 192 class V6_extractw_enc : Enc_COPROC_VX_3op_v<0b100100100000001>; 193 class M6_vabsdiffub_enc : Enc_COPROC_VX_3op_v<0b111010001010000>; 194 class M6_vabsdiffb_enc : Enc_COPROC_VX_3op_v<0b111010001110000>; 195 196 class Enc_COPROC_VX_cmp<bits<13> opc> : OpcodeHexagon { 197 bits<2> dst; 198 bits<5> src1; 199 bits<5> src2; 200 201 let Inst{31-16} = { 0b00011, opc{12-7}, src2{4-0} }; 202 let Inst{13-0} = { opc{6}, src1{4-0}, opc{5-0}, dst{1-0} }; 203 } 204 205 class V6_vandvrt_acc_enc : Enc_COPROC_VX_cmp<0b0010111100000>; 206 class V6_vandvrt_enc : Enc_COPROC_VX_cmp<0b0011010010010>; 207 class V6_veqb_and_enc : Enc_COPROC_VX_cmp<0b1001001000000>; 208 class V6_veqh_and_enc : Enc_COPROC_VX_cmp<0b1001001000001>; 209 class V6_veqw_and_enc : Enc_COPROC_VX_cmp<0b1001001000010>; 210 class V6_vgtb_and_enc : Enc_COPROC_VX_cmp<0b1001001000100>; 211 class V6_vgth_and_enc : Enc_COPROC_VX_cmp<0b1001001000101>; 212 class V6_vgtw_and_enc : Enc_COPROC_VX_cmp<0b1001001000110>; 213 class V6_vgtub_and_enc : Enc_COPROC_VX_cmp<0b1001001001000>; 214 class V6_vgtuh_and_enc : Enc_COPROC_VX_cmp<0b1001001001001>; 215 class V6_vgtuw_and_enc : Enc_COPROC_VX_cmp<0b1001001001010>; 216 class V6_veqb_or_enc : Enc_COPROC_VX_cmp<0b1001001010000>; 217 class V6_veqh_or_enc : Enc_COPROC_VX_cmp<0b1001001010001>; 218 class V6_veqw_or_enc : Enc_COPROC_VX_cmp<0b1001001010010>; 219 class V6_vgtb_or_enc : Enc_COPROC_VX_cmp<0b1001001010100>; 220 class V6_vgth_or_enc : Enc_COPROC_VX_cmp<0b1001001010101>; 221 class V6_vgtw_or_enc : Enc_COPROC_VX_cmp<0b1001001010110>; 222 class V6_vgtub_or_enc : Enc_COPROC_VX_cmp<0b1001001011000>; 223 class V6_vgtuh_or_enc : Enc_COPROC_VX_cmp<0b1001001011001>; 224 class V6_vgtuw_or_enc : Enc_COPROC_VX_cmp<0b1001001011010>; 225 class V6_veqb_xor_enc : Enc_COPROC_VX_cmp<0b1001001100000>; 226 class V6_veqh_xor_enc : Enc_COPROC_VX_cmp<0b1001001100001>; 227 class V6_veqw_xor_enc : Enc_COPROC_VX_cmp<0b1001001100010>; 228 class V6_vgtb_xor_enc : Enc_COPROC_VX_cmp<0b1001001100100>; 229 class V6_vgth_xor_enc : Enc_COPROC_VX_cmp<0b1001001100101>; 230 class V6_vgtw_xor_enc : Enc_COPROC_VX_cmp<0b1001001100110>; 231 class V6_vgtub_xor_enc : Enc_COPROC_VX_cmp<0b1001001101000>; 232 class V6_vgtuh_xor_enc : Enc_COPROC_VX_cmp<0b1001001101001>; 233 class V6_vgtuw_xor_enc : Enc_COPROC_VX_cmp<0b1001001101010>; 234 class V6_veqb_enc : Enc_COPROC_VX_cmp<0b1111000000000>; 235 class V6_veqh_enc : Enc_COPROC_VX_cmp<0b1111000000001>; 236 class V6_veqw_enc : Enc_COPROC_VX_cmp<0b1111000000010>; 237 class V6_vgtb_enc : Enc_COPROC_VX_cmp<0b1111000000100>; 238 class V6_vgth_enc : Enc_COPROC_VX_cmp<0b1111000000101>; 239 class V6_vgtw_enc : Enc_COPROC_VX_cmp<0b1111000000110>; 240 class V6_vgtub_enc : Enc_COPROC_VX_cmp<0b1111000001000>; 241 class V6_vgtuh_enc : Enc_COPROC_VX_cmp<0b1111000001001>; 242 class V6_vgtuw_enc : Enc_COPROC_VX_cmp<0b1111000001010>; 243 244 class Enc_COPROC_VX_p2op<bits<5> opc> : OpcodeHexagon { 245 bits<2> src1; 246 bits<5> dst; 247 bits<5> src2; 248 249 let Inst{31-16} = { 0b00011110, src1{1-0}, 0b0000, opc{4-3} }; 250 let Inst{13-0} = { 1, src2{4-0}, opc{2-0}, dst{4-0} }; 251 } 252 253 class V6_vaddbq_enc : Enc_COPROC_VX_p2op<0b01000>; 254 class V6_vaddhq_enc : Enc_COPROC_VX_p2op<0b01001>; 255 class V6_vaddwq_enc : Enc_COPROC_VX_p2op<0b01010>; 256 class V6_vaddbnq_enc : Enc_COPROC_VX_p2op<0b01011>; 257 class V6_vaddhnq_enc : Enc_COPROC_VX_p2op<0b01100>; 258 class V6_vaddwnq_enc : Enc_COPROC_VX_p2op<0b01101>; 259 class V6_vsubbq_enc : Enc_COPROC_VX_p2op<0b01110>; 260 class V6_vsubhq_enc : Enc_COPROC_VX_p2op<0b01111>; 261 class V6_vsubwq_enc : Enc_COPROC_VX_p2op<0b10000>; 262 class V6_vsubbnq_enc : Enc_COPROC_VX_p2op<0b10001>; 263 class V6_vsubhnq_enc : Enc_COPROC_VX_p2op<0b10010>; 264 class V6_vsubwnq_enc : Enc_COPROC_VX_p2op<0b10011>; 265 266 class Enc_COPROC_VX_2op<bits<6> opc> : OpcodeHexagon { 267 bits<5> dst; 268 bits<5> src1; 269 270 let Inst{31-16} = { 0b00011110000000, opc{5-4} }; 271 let Inst{13-0} = { opc{3}, src1{4-0}, opc{2-0}, dst{4-0} }; 272 } 273 274 class V6_vabsh_enc : Enc_COPROC_VX_2op<0b000000>; 275 class V6_vabsh_sat_enc : Enc_COPROC_VX_2op<0b000001>; 276 class V6_vabsw_enc : Enc_COPROC_VX_2op<0b000010>; 277 class V6_vabsw_sat_enc : Enc_COPROC_VX_2op<0b000011>; 278 class V6_vnot_enc : Enc_COPROC_VX_2op<0b000100>; 279 class V6_vdealh_enc : Enc_COPROC_VX_2op<0b000110>; 280 class V6_vdealb_enc : Enc_COPROC_VX_2op<0b000111>; 281 class V6_vunpackob_enc : Enc_COPROC_VX_2op<0b001000>; 282 class V6_vunpackoh_enc : Enc_COPROC_VX_2op<0b001001>; 283 class V6_vunpackub_enc : Enc_COPROC_VX_2op<0b010000>; 284 class V6_vunpackuh_enc : Enc_COPROC_VX_2op<0b010001>; 285 class V6_vunpackb_enc : Enc_COPROC_VX_2op<0b010010>; 286 class V6_vunpackh_enc : Enc_COPROC_VX_2op<0b010011>; 287 class V6_vshuffh_enc : Enc_COPROC_VX_2op<0b010111>; 288 class V6_vshuffb_enc : Enc_COPROC_VX_2op<0b100000>; 289 class V6_vzb_enc : Enc_COPROC_VX_2op<0b100001>; 290 class V6_vzh_enc : Enc_COPROC_VX_2op<0b100010>; 291 class V6_vsb_enc : Enc_COPROC_VX_2op<0b100011>; 292 class V6_vsh_enc : Enc_COPROC_VX_2op<0b100100>; 293 class V6_vcl0w_enc : Enc_COPROC_VX_2op<0b100101>; 294 class V6_vpopcounth_enc : Enc_COPROC_VX_2op<0b100110>; 295 class V6_vcl0h_enc : Enc_COPROC_VX_2op<0b100111>; 296 class V6_vnormamtw_enc : Enc_COPROC_VX_2op<0b110100>; 297 class V6_vnormamth_enc : Enc_COPROC_VX_2op<0b110101>; 298 class V6_vassign_enc : Enc_COPROC_VX_2op<0b111111>; 299 300 class Enc_COPROC_VMEM_vL32_b_ai<bits<4> opc> : OpcodeHexagon { 301 bits<5> dst; 302 bits<5> src1; 303 bits<10> src2; 304 bits<4> src2_vector; 305 306 let src2_vector = src2{9-6}; 307 let Inst{31-16} = { 0b001010000, opc{3}, 0, src1{4-0} }; 308 let Inst{13-0} = { src2_vector{3}, 0b00, src2_vector{2-0}, opc{2-0}, dst{4-0} }; 309 } 310 311 class V6_vL32b_ai_enc : Enc_COPROC_VMEM_vL32_b_ai<0b0000>; 312 class V6_vL32b_cur_ai_enc : Enc_COPROC_VMEM_vL32_b_ai<0b0001>; 313 class V6_vL32b_tmp_ai_enc : Enc_COPROC_VMEM_vL32_b_ai<0b0010>; 314 class V6_vL32Ub_ai_enc : Enc_COPROC_VMEM_vL32_b_ai<0b0111>; 315 class V6_vL32b_nt_ai_enc : Enc_COPROC_VMEM_vL32_b_ai<0b1000>; 316 class V6_vL32b_nt_cur_ai_enc : Enc_COPROC_VMEM_vL32_b_ai<0b1001>; 317 class V6_vL32b_nt_tmp_ai_enc : Enc_COPROC_VMEM_vL32_b_ai<0b1010>; 318 319 class Enc_COPROC_VMEM_vL32_b_ai_128B<bits<4> opc> : OpcodeHexagon { 320 bits<5> dst; 321 bits<5> src1; 322 bits<11> src2; 323 bits<4> src2_vector; 324 325 let src2_vector = src2{10-7}; 326 let Inst{31-16} = { 0b001010000, opc{3}, 0, src1{4-0} }; 327 let Inst{13-0} = { src2_vector{3}, 0b00, src2_vector{2-0}, opc{2-0}, dst{4-0} }; 328 } 329 330 class V6_vL32b_ai_128B_enc : Enc_COPROC_VMEM_vL32_b_ai_128B<0b0000>; 331 class V6_vL32b_cur_ai_128B_enc : Enc_COPROC_VMEM_vL32_b_ai_128B<0b0001>; 332 class V6_vL32b_tmp_ai_128B_enc : Enc_COPROC_VMEM_vL32_b_ai_128B<0b0010>; 333 class V6_vL32Ub_ai_128B_enc : Enc_COPROC_VMEM_vL32_b_ai_128B<0b0111>; 334 class V6_vL32b_nt_ai_128B_enc : Enc_COPROC_VMEM_vL32_b_ai_128B<0b1000>; 335 class V6_vL32b_nt_cur_ai_128B_enc : Enc_COPROC_VMEM_vL32_b_ai_128B<0b1001>; 336 class V6_vL32b_nt_tmp_ai_128B_enc : Enc_COPROC_VMEM_vL32_b_ai_128B<0b1010>; 337 338 class Enc_COPROC_VMEM_vS32_b_ai_64B<bits<4> opc> : OpcodeHexagon { 339 bits<5> src1; 340 bits<10> src2; 341 bits<4> src2_vector; 342 bits<5> src3; 343 344 let src2_vector = src2{9-6}; 345 let Inst{31-16} = { 0b001010000, opc{3}, 1, src1{4-0} }; 346 let Inst{13-0} = { src2_vector{3}, 0b00, src2_vector{2-0}, opc{2-0}, src3{4-0} }; 347 } 348 349 class Enc_COPROC_VMEM_vS32_b_ai_128B<bits<4> opc> : OpcodeHexagon { 350 bits<5> src1; 351 bits<11> src2; 352 bits<4> src2_vector; 353 bits<5> src3; 354 355 let src2_vector = src2{10-7}; 356 let Inst{31-16} = { 0b001010000, opc{3}, 1, src1{4-0} }; 357 let Inst{13-0} = { src2_vector{3}, 0b00, src2_vector{2-0}, opc{2-0}, src3{4-0} }; 358 } 359 360 class V6_vS32b_ai_enc : Enc_COPROC_VMEM_vS32_b_ai_64B<0b0000>; 361 class V6_vS32Ub_ai_enc : Enc_COPROC_VMEM_vS32_b_ai_64B<0b0111>; 362 class V6_vS32b_nt_ai_enc : Enc_COPROC_VMEM_vS32_b_ai_64B<0b1000>; 363 364 class V6_vS32b_ai_128B_enc : Enc_COPROC_VMEM_vS32_b_ai_128B<0b0000>; 365 class V6_vS32Ub_ai_128B_enc : Enc_COPROC_VMEM_vS32_b_ai_128B<0b0111>; 366 class V6_vS32b_nt_ai_128B_enc : Enc_COPROC_VMEM_vS32_b_ai_128B<0b1000>; 367 368 class Enc_COPROC_VMEM_vS32b_n_ew_ai_64B<bits<1> opc> : OpcodeHexagon { 369 bits<5> src1; 370 bits<10> src2; 371 bits<4> src2_vector; 372 bits<3> src3; 373 374 let src2_vector = src2{9-6}; 375 let Inst{31-16} = { 0b001010000, opc{0}, 1, src1{4-0} }; 376 let Inst{13-0} = { src2_vector{3}, 0b00, src2_vector{2-0}, 0b00100, src3{2-0} }; 377 } 378 379 class V6_vS32b_new_ai_enc : Enc_COPROC_VMEM_vS32b_n_ew_ai_64B<0>; 380 class V6_vS32b_nt_new_ai_enc : Enc_COPROC_VMEM_vS32b_n_ew_ai_64B<1>; 381 382 class Enc_COPROC_VMEM_vS32b_n_ew_ai_128B<bits<1> opc> : OpcodeHexagon { 383 bits<5> src1; 384 bits<11> src2; 385 bits<4> src2_vector; 386 bits<3> src3; 387 388 let src2_vector = src2{10-7}; 389 let Inst{31-16} = { 0b001010000, opc{0}, 1, src1{4-0} }; 390 let Inst{13-0} = { src2_vector{3}, 0b00, src2_vector{2-0}, 0b00100, src3{2-0} }; 391 } 392 393 class V6_vS32b_new_ai_128B_enc : Enc_COPROC_VMEM_vS32b_n_ew_ai_128B<0>; 394 class V6_vS32b_nt_new_ai_128B_enc : Enc_COPROC_VMEM_vS32b_n_ew_ai_128B<1>; 395 396 class Enc_COPROC_VMEM_vS32_b_pred_ai<bits<5> opc> : OpcodeHexagon { 397 bits<2> src1; 398 bits<5> src2; 399 bits<10> src3; 400 bits<4> src3_vector; 401 bits<5> src4; 402 403 let src3_vector = src3{9-6}; 404 let Inst{31-16} = { 0b001010001, opc{4-3}, src2{4-0} }; 405 let Inst{13-0} = { src3_vector{3}, src1{1-0}, src3_vector{2-0}, opc{2-0}, src4{4-0} }; 406 } 407 408 class Enc_COPROC_VMEM_vS32_b_pred_ai_128B<bits<5> opc> : OpcodeHexagon { 409 bits<2> src1; 410 bits<5> src2; 411 bits<11> src3; 412 bits<4> src3_vector; 413 bits<5> src4; 414 415 let src3_vector = src3{10-7}; 416 let Inst{31-16} = { 0b001010001, opc{4-3}, src2{4-0} }; 417 let Inst{13-0} = { src3_vector{3}, src1{1-0}, src3_vector{2-0}, opc{2-0}, src4{4-0} }; 418 } 419 420 class V6_vS32b_qpred_ai_enc : Enc_COPROC_VMEM_vS32_b_pred_ai<0b00000>; 421 class V6_vS32b_nqpred_ai_enc : Enc_COPROC_VMEM_vS32_b_pred_ai<0b00001>; 422 class V6_vS32b_pred_ai_enc : Enc_COPROC_VMEM_vS32_b_pred_ai<0b01000>; 423 class V6_vS32b_npred_ai_enc : Enc_COPROC_VMEM_vS32_b_pred_ai<0b01001>; 424 class V6_vS32Ub_pred_ai_enc : Enc_COPROC_VMEM_vS32_b_pred_ai<0b01110>; 425 class V6_vS32Ub_npred_ai_enc : Enc_COPROC_VMEM_vS32_b_pred_ai<0b01111>; 426 class V6_vS32b_nt_qpred_ai_enc : Enc_COPROC_VMEM_vS32_b_pred_ai<0b10000>; 427 class V6_vS32b_nt_nqpred_ai_enc : Enc_COPROC_VMEM_vS32_b_pred_ai<0b10001>; 428 class V6_vS32b_nt_pred_ai_enc : Enc_COPROC_VMEM_vS32_b_pred_ai<0b11000>; 429 class V6_vS32b_nt_npred_ai_enc : Enc_COPROC_VMEM_vS32_b_pred_ai<0b11001>; 430 431 class V6_vS32b_qpred_ai_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_ai_128B<0b00000>; 432 class V6_vS32b_nqpred_ai_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_ai_128B<0b00001>; 433 class V6_vS32b_pred_ai_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_ai_128B<0b01000>; 434 class V6_vS32b_npred_ai_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_ai_128B<0b01001>; 435 class V6_vS32Ub_pred_ai_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_ai_128B<0b01110>; 436 class V6_vS32Ub_npred_ai_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_ai_128B<0b01111>; 437 class V6_vS32b_nt_qpred_ai_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_ai_128B<0b10000>; 438 class V6_vS32b_nt_nqpred_ai_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_ai_128B<0b10001>; 439 class V6_vS32b_nt_pred_ai_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_ai_128B<0b11000>; 440 class V6_vS32b_nt_npred_ai_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_ai_128B<0b11001>; 441 442 class Enc_COPROC_VMEM_vS32b_n_ew_pred_ai<bits<4> opc> : OpcodeHexagon { 443 bits<2> src1; 444 bits<5> src2; 445 bits<10> src3; 446 bits<4> src3_vector; 447 bits<3> src4; 448 449 let src3_vector = src3{9-6}; 450 let Inst{31-16} = { 0b001010001, opc{3}, 1, src2{4-0} }; 451 let Inst{13-0} = { src3_vector{3}, src1{1-0}, src3_vector{2-0}, 0b01, opc{2-0}, src4{2-0} }; 452 } 453 454 class V6_vS32b_new_pred_ai_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_ai<0b0000>; 455 class V6_vS32b_new_npred_ai_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_ai<0b0101>; 456 class V6_vS32b_nt_new_pred_ai_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_ai<0b1010>; 457 class V6_vS32b_nt_new_npred_ai_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_ai<0b1111>; 458 459 class Enc_COPROC_VMEM_vS32b_n_ew_pred_ai_128B<bits<4> opc> : OpcodeHexagon { 460 bits<2> src1; 461 bits<5> src2; 462 bits<11> src3; 463 bits<4> src3_vector; 464 bits<3> src4; 465 466 let src3_vector = src3{10-7}; 467 let Inst{31-16} = { 0b001010001, opc{3}, 1, src2{4-0} }; 468 let Inst{13-0} = { src3_vector{3}, src1{1-0}, src3_vector{2-0}, 0b01, opc{2-0}, src4{2-0} }; 469 } 470 471 class V6_vS32b_new_pred_ai_128B_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_ai_128B<0b0000>; 472 class V6_vS32b_new_npred_ai_128B_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_ai_128B<0b0101>; 473 class V6_vS32b_nt_new_pred_ai_128B_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_ai_128B<0b1010>; 474 class V6_vS32b_nt_new_npred_ai_128B_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_ai_128B<0b1111>; 475 476 // TODO: Change script to generate dst, src1, src2 instead of 477 // dst, dst2, src1. 478 class Enc_COPROC_VMEM_vL32_b_pi<bits<4> opc> : OpcodeHexagon { 479 bits<5> dst; 480 bits<5> src1; 481 bits<9> src2; 482 bits<3> src2_vector; 483 484 let src2_vector = src2{8-6}; 485 let Inst{31-16} = { 0b001010010, opc{3}, 0, src1{4-0} }; 486 let Inst{13-0} = { 0b000, src2_vector{2-0}, opc{2-0}, dst{4-0} }; 487 } 488 489 class V6_vL32b_pi_enc : Enc_COPROC_VMEM_vL32_b_pi<0b0000>; 490 class V6_vL32b_cur_pi_enc : Enc_COPROC_VMEM_vL32_b_pi<0b0001>; 491 class V6_vL32b_tmp_pi_enc : Enc_COPROC_VMEM_vL32_b_pi<0b0010>; 492 class V6_vL32Ub_pi_enc : Enc_COPROC_VMEM_vL32_b_pi<0b0111>; 493 class V6_vL32b_nt_pi_enc : Enc_COPROC_VMEM_vL32_b_pi<0b1000>; 494 class V6_vL32b_nt_cur_pi_enc : Enc_COPROC_VMEM_vL32_b_pi<0b1001>; 495 class V6_vL32b_nt_tmp_pi_enc : Enc_COPROC_VMEM_vL32_b_pi<0b1010>; 496 497 class Enc_COPROC_VMEM_vL32_b_pi_128B<bits<4> opc> : OpcodeHexagon { 498 bits<5> dst; 499 bits<5> src1; 500 bits<10> src2; 501 bits<3> src2_vector; 502 503 let src2_vector = src2{9-7}; 504 let Inst{31-16} = { 0b001010010, opc{3}, 0, src1{4-0} }; 505 let Inst{13-0} = { 0b000, src2_vector{2-0}, opc{2-0}, dst{4-0} }; 506 } 507 508 class V6_vL32b_pi_128B_enc : Enc_COPROC_VMEM_vL32_b_pi_128B<0b0000>; 509 class V6_vL32b_cur_pi_128B_enc : Enc_COPROC_VMEM_vL32_b_pi_128B<0b0001>; 510 class V6_vL32b_tmp_pi_128B_enc : Enc_COPROC_VMEM_vL32_b_pi_128B<0b0010>; 511 class V6_vL32Ub_pi_128B_enc : Enc_COPROC_VMEM_vL32_b_pi_128B<0b0111>; 512 class V6_vL32b_nt_pi_128B_enc : Enc_COPROC_VMEM_vL32_b_pi_128B<0b1000>; 513 class V6_vL32b_nt_cur_pi_128B_enc : Enc_COPROC_VMEM_vL32_b_pi_128B<0b1001>; 514 class V6_vL32b_nt_tmp_pi_128B_enc : Enc_COPROC_VMEM_vL32_b_pi_128B<0b1010>; 515 516 517 // TODO: Change script to generate src1, src2 and src3 instead of 518 // dst, src1, src2. 519 class Enc_COPROC_VMEM_vS32_b_pi<bits<4> opc> : OpcodeHexagon { 520 bits<5> src1; 521 bits<9> src2; 522 bits<3> src2_vector; 523 bits<5> src3; 524 525 let src2_vector = src2{8-6}; 526 let Inst{31-16} = { 0b001010010, opc{3}, 1, src1{4-0} }; 527 let Inst{10-0} = {src2_vector{2-0}, opc{2-0}, src3{4-0} }; 528 } 529 530 class V6_vS32b_pi_enc : Enc_COPROC_VMEM_vS32_b_pi<0b0000>; 531 class V6_vS32Ub_pi_enc : Enc_COPROC_VMEM_vS32_b_pi<0b0111>; 532 class V6_vS32b_nt_pi_enc : Enc_COPROC_VMEM_vS32_b_pi<0b1000>; 533 534 class Enc_COPROC_VMEM_vS32_b_pi_128B<bits<4> opc> : OpcodeHexagon { 535 bits<5> src1; 536 bits<10> src2; 537 bits<3> src2_vector; 538 bits<5> src3; 539 540 let src2_vector = src2{9-7}; 541 let Inst{31-16} = { 0b001010010, opc{3}, 1, src1{4-0} }; 542 let Inst{10-0} = {src2_vector{2-0}, opc{2-0}, src3{4-0} }; 543 } 544 545 class V6_vS32b_pi_128B_enc : Enc_COPROC_VMEM_vS32_b_pi_128B<0b0000>; 546 class V6_vS32Ub_pi_128B_enc : Enc_COPROC_VMEM_vS32_b_pi_128B<0b0111>; 547 class V6_vS32b_nt_pi_128B_enc : Enc_COPROC_VMEM_vS32_b_pi_128B<0b1000>; 548 549 // TODO: Change script to generate src1, src2 and src3 instead of 550 // dst, src1, src2. 551 class Enc_COPROC_VMEM_vS32b_n_ew_pi<bits<1> opc> : OpcodeHexagon { 552 bits<5> src1; 553 bits<9> src2; 554 bits<3> src2_vector; 555 bits<3> src3; 556 557 let src2_vector = src2{8-6}; 558 let Inst{31-16} = { 0b001010010, opc{0}, 1, src1{4-0} }; 559 let Inst{13-0} = { 0b000, src2_vector{2-0}, 0b00100, src3{2-0} }; 560 } 561 562 class V6_vS32b_new_pi_enc : Enc_COPROC_VMEM_vS32b_n_ew_pi<0>; 563 class V6_vS32b_nt_new_pi_enc : Enc_COPROC_VMEM_vS32b_n_ew_pi<1>; 564 565 class Enc_COPROC_VMEM_vS32b_n_ew_pi_128B<bits<1> opc> : OpcodeHexagon { 566 bits<5> src1; 567 bits<10> src2; 568 bits<3> src2_vector; 569 bits<3> src3; 570 571 let src2_vector = src2{9-7}; 572 let Inst{31-16} = { 0b001010010, opc{0}, 1, src1{4-0} }; 573 let Inst{13-0} = { 0b000, src2_vector{2-0}, 0b00100, src3{2-0} }; 574 } 575 576 class V6_vS32b_new_pi_128B_enc : Enc_COPROC_VMEM_vS32b_n_ew_pi_128B<0>; 577 class V6_vS32b_nt_new_pi_128B_enc : Enc_COPROC_VMEM_vS32b_n_ew_pi_128B<1>; 578 579 // TODO: Change script to generate src1, src2,src3 and src4 instead of 580 // dst, src1, src2, src3. 581 class Enc_COPROC_VMEM_vS32_b_pred_pi<bits<5> opc> : OpcodeHexagon { 582 bits<2> src1; 583 bits<5> src2; 584 bits<9> src3; 585 bits<3> src3_vector; 586 bits<5> src4; 587 588 let src3_vector = src3{8-6}; 589 let Inst{31-16} = { 0b001010011, opc{4-3}, src2{4-0} }; 590 let Inst{13-0} = { 0, src1{1-0}, src3_vector{2-0}, opc{2-0}, src4{4-0} }; 591 } 592 593 class V6_vS32b_qpred_pi_enc : Enc_COPROC_VMEM_vS32_b_pred_pi<0b00000>; 594 class V6_vS32b_nqpred_pi_enc : Enc_COPROC_VMEM_vS32_b_pred_pi<0b00001>; 595 class V6_vS32b_pred_pi_enc : Enc_COPROC_VMEM_vS32_b_pred_pi<0b01000>; 596 class V6_vS32b_npred_pi_enc : Enc_COPROC_VMEM_vS32_b_pred_pi<0b01001>; 597 class V6_vS32Ub_pred_pi_enc : Enc_COPROC_VMEM_vS32_b_pred_pi<0b01110>; 598 class V6_vS32Ub_npred_pi_enc : Enc_COPROC_VMEM_vS32_b_pred_pi<0b01111>; 599 class V6_vS32b_nt_qpred_pi_enc : Enc_COPROC_VMEM_vS32_b_pred_pi<0b10000>; 600 class V6_vS32b_nt_nqpred_pi_enc : Enc_COPROC_VMEM_vS32_b_pred_pi<0b10001>; 601 class V6_vS32b_nt_pred_pi_enc : Enc_COPROC_VMEM_vS32_b_pred_pi<0b11000>; 602 class V6_vS32b_nt_npred_pi_enc : Enc_COPROC_VMEM_vS32_b_pred_pi<0b11001>; 603 604 // TODO: Change script to generate src1, src2,src3 and src4 instead of 605 // dst, src1, src2, src3. 606 class Enc_COPROC_VMEM_vS32_b_pred_pi_128B<bits<5> opc> : OpcodeHexagon { 607 bits<2> src1; 608 bits<5> src2; 609 bits<10> src3; 610 bits<3> src3_vector; 611 bits<5> src4; 612 613 let src3_vector = src3{9-7}; 614 let Inst{31-16} = { 0b001010011, opc{4-3}, src2{4-0} }; 615 let Inst{13-0} = { 0, src1{1-0}, src3_vector{2-0}, opc{2-0}, src4{4-0} }; 616 } 617 618 class V6_vS32b_qpred_pi_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_pi_128B<0b00000>; 619 class V6_vS32b_nqpred_pi_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_pi_128B<0b00001>; 620 class V6_vS32b_pred_pi_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_pi_128B<0b01000>; 621 class V6_vS32b_npred_pi_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_pi_128B<0b01001>; 622 class V6_vS32Ub_pred_pi_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_pi_128B<0b01110>; 623 class V6_vS32Ub_npred_pi_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_pi_128B<0b01111>; 624 class V6_vS32b_nt_qpred_pi_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_pi_128B<0b10000>; 625 class V6_vS32b_nt_nqpred_pi_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_pi_128B<0b10001>; 626 class V6_vS32b_nt_pred_pi_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_pi_128B<0b11000>; 627 class V6_vS32b_nt_npred_pi_128B_enc : Enc_COPROC_VMEM_vS32_b_pred_pi_128B<0b11001>; 628 629 class Enc_COPROC_VMEM_vS32b_n_ew_pred_pi<bits<4> opc> : OpcodeHexagon { 630 bits<2> src1; 631 bits<5> src2; 632 bits<9> src3; 633 bits<3> src3_vector; 634 bits<3> src4; 635 636 let src3_vector = src3{8-6}; 637 let Inst{31-16} = { 0b001010011, opc{3}, 1, src2{4-0} }; 638 let Inst{13-0} = { 0, src1{1-0}, src3_vector{2-0}, 0b01, opc{2-0}, src4{2-0} }; 639 } 640 641 class V6_vS32b_new_pred_pi_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_pi<0b0000>; 642 class V6_vS32b_new_npred_pi_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_pi<0b0101>; 643 class V6_vS32b_nt_new_pred_pi_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_pi<0b1010>; 644 class V6_vS32b_nt_new_npred_pi_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_pi<0b1111>; 645 646 class Enc_COPROC_VMEM_vS32b_n_ew_pred_pi_128B<bits<4> opc> : OpcodeHexagon { 647 bits<2> src1; 648 bits<5> src2; 649 bits<10> src3; 650 bits<3> src3_vector; 651 bits<3> src4; 652 653 let src3_vector = src3{9-7}; 654 let Inst{31-16} = { 0b001010011, opc{3}, 1, src2{4-0} }; 655 let Inst{13-0} = { 0, src1{1-0}, src3_vector{2-0}, 0b01, opc{2-0}, src4{2-0} }; 656 } 657 658 class V6_vS32b_new_pred_pi_128B_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_pi_128B<0b0000>; 659 class V6_vS32b_new_npred_pi_128B_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_pi_128B<0b0101>; 660 class V6_vS32b_nt_new_pred_pi_128B_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_pi_128B<0b1010>; 661 class V6_vS32b_nt_new_npred_pi_128B_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_pi_128B<0b1111>; 662 663 class Enc_LD_load_m<bits<13> opc> : OpcodeHexagon { 664 bits<5> dst; 665 bits<5> src1; 666 bits<1> src2; 667 668 let Inst{31-16} = { opc{12}, 0, opc{11-10}, 1, opc{9-4}, src1{4-0} }; 669 let Inst{13-0} = { src2{0}, 0b000, opc{3}, 0, opc{2-0}, dst{4-0} }; 670 } 671 672 class V6_vL32b_ppu_enc : Enc_LD_load_m<0b0100110000000>; 673 class V6_vL32b_cur_ppu_enc : Enc_LD_load_m<0b0100110000001>; 674 class V6_vL32b_tmp_ppu_enc : Enc_LD_load_m<0b0100110000010>; 675 class V6_vL32Ub_ppu_enc : Enc_LD_load_m<0b0100110000111>; 676 class V6_vL32b_nt_ppu_enc : Enc_LD_load_m<0b0100110100000>; 677 class V6_vL32b_nt_cur_ppu_enc : Enc_LD_load_m<0b0100110100001>; 678 class V6_vL32b_nt_tmp_ppu_enc : Enc_LD_load_m<0b0100110100010>; 679 680 class Enc_COPROC_VMEM_vS32_b_ppu<bits<4> opc> : OpcodeHexagon { 681 bits<5> src1; 682 bits<1> src2; 683 bits<5> src3; 684 685 let Inst{31-16} = { 0b001010110, opc{3}, 1, src1{4-0} }; 686 let Inst{13-0} = { src2{0}, 0b00000, opc{2-0}, src3{4-0} }; 687 } 688 689 class V6_vS32b_ppu_enc : Enc_COPROC_VMEM_vS32_b_ppu<0b0000>; 690 class V6_vS32Ub_ppu_enc : Enc_COPROC_VMEM_vS32_b_ppu<0b0111>; 691 class V6_vS32b_nt_ppu_enc : Enc_COPROC_VMEM_vS32_b_ppu<0b1000>; 692 693 class Enc_COPROC_VMEM_vS32b_new_ppu<bits<1> opc> : OpcodeHexagon { 694 bits<5> src1; 695 bits<1> src2; 696 bits<3> src3; 697 698 let Inst{31-16} = { 0b001010110, opc{0}, 1, src1{4-0} }; 699 let Inst{13-0} = { src2{0}, 0b0000000100, src3{2-0} }; 700 } 701 702 class V6_vS32b_new_ppu_enc : Enc_COPROC_VMEM_vS32b_new_ppu<0>; 703 class V6_vS32b_nt_new_ppu_enc : Enc_COPROC_VMEM_vS32b_new_ppu<1>; 704 705 class Enc_COPROC_VMEM_vS32_b_pred_ppu<bits<5> opc> : OpcodeHexagon { 706 bits<2> src1; 707 bits<5> src2; 708 bits<1> src3; 709 bits<5> src4; 710 711 let Inst{31-16} = { 0b001010111, opc{4-3}, src2{4-0} }; 712 let Inst{13-0} = { src3{0}, src1{1-0}, 0b000, opc{2-0}, src4{4-0} }; 713 } 714 715 class V6_vS32b_qpred_ppu_enc : Enc_COPROC_VMEM_vS32_b_pred_ppu<0b00000>; 716 class V6_vS32b_nqpred_ppu_enc : Enc_COPROC_VMEM_vS32_b_pred_ppu<0b00001>; 717 class V6_vS32b_pred_ppu_enc : Enc_COPROC_VMEM_vS32_b_pred_ppu<0b01000>; 718 class V6_vS32b_npred_ppu_enc : Enc_COPROC_VMEM_vS32_b_pred_ppu<0b01001>; 719 class V6_vS32Ub_pred_ppu_enc : Enc_COPROC_VMEM_vS32_b_pred_ppu<0b01110>; 720 class V6_vS32Ub_npred_ppu_enc : Enc_COPROC_VMEM_vS32_b_pred_ppu<0b01111>; 721 class V6_vS32b_nt_qpred_ppu_enc : Enc_COPROC_VMEM_vS32_b_pred_ppu<0b10000>; 722 class V6_vS32b_nt_nqpred_ppu_enc : Enc_COPROC_VMEM_vS32_b_pred_ppu<0b10001>; 723 class V6_vS32b_nt_pred_ppu_enc : Enc_COPROC_VMEM_vS32_b_pred_ppu<0b11000>; 724 class V6_vS32b_nt_npred_ppu_enc : Enc_COPROC_VMEM_vS32_b_pred_ppu<0b11001>; 725 726 class Enc_COPROC_VMEM_vS32b_n_ew_pred_ppu<bits<4> opc> : OpcodeHexagon { 727 bits<2> src1; 728 bits<5> src2; 729 bits<1> src3; 730 bits<3> src4; 731 732 let Inst{31-16} = { 0b001010111, opc{3}, 1, src2{4-0} }; 733 let Inst{13-0} = { src3{0}, src1{1-0}, 0b00001, opc{2-0}, src4{2-0} }; 734 } 735 736 class V6_vS32b_new_pred_ppu_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_ppu<0b0000>; 737 class V6_vS32b_new_npred_ppu_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_ppu<0b0101>; 738 class V6_vS32b_nt_new_pred_ppu_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_ppu<0b1010>; 739 class V6_vS32b_nt_new_npred_ppu_enc : Enc_COPROC_VMEM_vS32b_n_ew_pred_ppu<0b1111>; 740 741 742 class Enc_COPROC_VX_4op_i<bits<5> opc> : OpcodeHexagon { 743 bits<5> dst; 744 bits<5> src1; 745 bits<5> src2; 746 bits<1> src3; 747 748 let Inst{31-16} = { 0b00011001, opc{4-2}, src2{4-0} }; 749 let Inst{13-0} = { opc{1}, src1{4-0}, 1, opc{0}, src3{0}, dst{4-0} }; 750 } 751 752 class V6_vrmpybusi_enc : Enc_COPROC_VX_4op_i<0b01000>; 753 class V6_vrsadubi_enc : Enc_COPROC_VX_4op_i<0b01001>; 754 class V6_vrmpybusi_acc_enc : Enc_COPROC_VX_4op_i<0b01010>; 755 class V6_vrsadubi_acc_enc : Enc_COPROC_VX_4op_i<0b01011>; 756 class V6_vrmpyubi_acc_enc : Enc_COPROC_VX_4op_i<0b01111>; 757 class V6_vrmpyubi_enc : Enc_COPROC_VX_4op_i<0b10101>; 758 759 class Enc_COPROC_VX_vandqrt<bits<5> opc> : OpcodeHexagon { 760 bits<5> dst; 761 bits<2> src1; 762 bits<5> src2; 763 764 let Inst{31-16} = { 0b00011001, opc{4-3}, 1, src2{4-0} }; 765 let Inst{13-0} = { opc{2}, 0b000, src1{1-0}, opc{1-0}, 1, dst{4-0} }; 766 } 767 768 class V6_vandqrt_acc_enc : Enc_COPROC_VX_vandqrt<0b01101>; 769 class V6_vandqrt_enc : Enc_COPROC_VX_vandqrt<0b10010>; 770 771 class Enc_COPROC_VX_cards<bits<2> opc> : OpcodeHexagon { 772 bits<5> src1; 773 bits<5> src2; 774 bits<5> src3; 775 776 let Inst{31-16} = { 0b00011001111, src3{4-0} }; 777 let Inst{13-0} = { 1, src1{4-0}, 0, opc{1-0}, src2{4-0} }; 778 } 779 780 class V6_vshuff_enc : Enc_COPROC_VX_cards<0b01>; 781 class V6_vdeal_enc : Enc_COPROC_VX_cards<0b10>; 782 783 784 class Enc_COPROC_VX_v_cmov<bits<1> opc> : OpcodeHexagon { 785 bits<2> src1; 786 bits<5> dst; 787 bits<5> src2; 788 789 let Inst{31-16} = { 0b0001101000, opc{0}, 0b00000 }; 790 let Inst{13-0} = { 0, src2{4-0}, 0, src1{1-0}, dst{4-0} }; 791 } 792 793 class V6_vcmov_enc : Enc_COPROC_VX_v_cmov<0>; 794 class V6_vncmov_enc : Enc_COPROC_VX_v_cmov<1>; 795 796 class Enc_X_p3op<bits<8> opc> : OpcodeHexagon { 797 bits<2> src1; 798 bits<5> dst; 799 bits<5> src2; 800 bits<5> src3; 801 802 let Inst{31-16} = { opc{7-5}, 0b1101, opc{4}, 0, opc{3-2}, src3{4-0} }; 803 let Inst{13-0} = { opc{1}, src2{4-0}, opc{0}, src1{1-0}, dst{4-0} }; 804 } 805 806 class V6_vnccombine_enc : Enc_X_p3op<0b00001000>; 807 class V6_vccombine_enc : Enc_X_p3op<0b00001100>; 808 809 class Enc_COPROC_VX_4op_r<bits<4> opc> : OpcodeHexagon { 810 bits<5> dst; 811 bits<5> src1; 812 bits<5> src2; 813 bits<3> src3; 814 815 let Inst{31-16} = { 0b00011011, src2{4-0}, src3{2-0} }; 816 let Inst{13-0} = { opc{3}, src1{4-0}, opc{2-0}, dst{4-0} }; 817 } 818 819 class V6_valignb_enc : Enc_COPROC_VX_4op_r<0b0000>; 820 class V6_vlalignb_enc : Enc_COPROC_VX_4op_r<0b0001>; 821 class V6_vasrwh_enc : Enc_COPROC_VX_4op_r<0b0010>; 822 class V6_vasrwhsat_enc : Enc_COPROC_VX_4op_r<0b0011>; 823 class V6_vasrwhrndsat_enc : Enc_COPROC_VX_4op_r<0b0100>; 824 class V6_vasrwuhsat_enc : Enc_COPROC_VX_4op_r<0b0101>; 825 class V6_vasrhubsat_enc : Enc_COPROC_VX_4op_r<0b0110>; 826 class V6_vasrhubrndsat_enc : Enc_COPROC_VX_4op_r<0b0111>; 827 class V6_vasrhbrndsat_enc : Enc_COPROC_VX_4op_r<0b1000>; 828 class V6_vlutvvb_enc : Enc_COPROC_VX_4op_r<0b1001>; 829 class V6_vshuffvdd_enc : Enc_COPROC_VX_4op_r<0b1011>; 830 class V6_vdealvdd_enc : Enc_COPROC_VX_4op_r<0b1100>; 831 class V6_vlutvvb_oracc_enc : Enc_COPROC_VX_4op_r<0b1101>; 832 class V6_vlutvwh_enc : Enc_COPROC_VX_4op_r<0b1110>; 833 class V6_vlutvwh_oracc_enc : Enc_COPROC_VX_4op_r<0b1111>; 834 835 class Enc_S_3op_valign_i<bits<9> opc> : OpcodeHexagon { 836 bits<5> dst; 837 bits<5> src1; 838 bits<5> src2; 839 bits<3> src3; 840 841 let Inst{31-16} = { opc{8-7}, 0, opc{6-3}, 0b00, opc{2-1}, src2{4-0} }; 842 let Inst{13-0} = { opc{0}, src1{4-0}, src3{2-0}, dst{4-0} }; 843 } 844 845 class V6_vlutb_enc : Enc_S_3op_valign_i<0b001100000>; 846 class V6_vlutb_dv_enc : Enc_S_3op_valign_i<0b001100010>; 847 class V6_vlutb_acc_enc : Enc_S_3op_valign_i<0b001100100>; 848 class V6_vlutb_dv_acc_enc : Enc_S_3op_valign_i<0b001100110>; 849 class V6_valignbi_enc : Enc_S_3op_valign_i<0b001111011>; 850 class V6_vlalignbi_enc : Enc_S_3op_valign_i<0b001111111>; 851 class S2_valignib_enc : Enc_S_3op_valign_i<0b110000000>; 852 class S2_addasl_rrri_enc : Enc_S_3op_valign_i<0b110010000>; 853 854 class Enc_COPROC_VX_3op_q<bits<3> opc> : OpcodeHexagon { 855 bits<2> dst; 856 bits<2> src1; 857 bits<2> src2; 858 859 let Inst{31-16} = { 0b00011110, src2{1-0}, 0b000011 }; 860 let Inst{13-0} = { 0b0000, src1{1-0}, 0b000, opc{2-0}, dst{1-0} }; 861 } 862 863 class V6_pred_and_enc : Enc_COPROC_VX_3op_q<0b000>; 864 class V6_pred_or_enc : Enc_COPROC_VX_3op_q<0b001>; 865 class V6_pred_xor_enc : Enc_COPROC_VX_3op_q<0b011>; 866 class V6_pred_or_n_enc : Enc_COPROC_VX_3op_q<0b100>; 867 class V6_pred_and_n_enc : Enc_COPROC_VX_3op_q<0b101>; 868 869 class V6_pred_not_enc : OpcodeHexagon { 870 bits<2> dst; 871 bits<2> src1; 872 873 let Inst{31-16} = { 0b0001111000000011 }; 874 let Inst{13-0} = { 0b0000, src1{1-0}, 0b000010, dst{1-0} }; 875 } 876 877 class Enc_COPROC_VX_4op_q<bits<1> opc> : OpcodeHexagon { 878 bits<5> dst; 879 bits<2> src1; 880 bits<5> src2; 881 bits<5> src3; 882 883 let Inst{31-16} = { 0b000111101, opc{0}, 1, src3{4-0} }; 884 let Inst{13-0} = { 1, src2{4-0}, 0, src1{1-0}, dst{4-0} }; 885 } 886 887 class V6_vswap_enc : Enc_COPROC_VX_4op_q<0>; 888 class V6_vmux_enc : Enc_COPROC_VX_4op_q<1>; 889 890 class Enc_X_2op<bits<16> opc> : OpcodeHexagon { 891 bits<5> dst; 892 bits<5> src1; 893 894 let Inst{31-16} = { opc{15-5}, src1{4-0} }; 895 let Inst{13-0} = { opc{4-3}, 0b0000, opc{2-0}, dst{4-0} }; 896 } 897 898 class V6_lvsplatw_enc : Enc_X_2op<0b0001100110100001>; 899 class V6_vinsertwr_enc : Enc_X_2op<0b0001100110110001>; 900 class S6_vsplatrbp_enc : Enc_X_2op<0b1000010001000100>; 901 902 903 class Enc_CR_2op_r<bits<12> opc> : OpcodeHexagon { 904 bits<2> dst; 905 bits<5> src1; 906 907 let Inst{31-16} = { opc{11}, 0, opc{10-7}, 0, opc{6-3}, src1{4-0} }; 908 let Inst{13-0} = { opc{2}, 0b000000, opc{1}, 0b000, opc{0}, dst{1-0} }; 909 } 910 911 class V6_pred_scalar2_enc : Enc_CR_2op_r<0b001101101011>; 912 class Y5_l2locka_enc : Enc_CR_2op_r<0b110000111100>; 913 914 class Enc_S_3op_i6<bits<9> opc> : OpcodeHexagon { 915 bits<5> dst; 916 bits<5> src1; 917 bits<6> src2; 918 919 let Inst{31-16} = { 0b1000, opc{8-6}, 0, opc{5-3}, src1{4-0} }; 920 let Inst{13-0} = { src2{5-0}, opc{2-0}, dst{4-0} }; 921 } 922 923 class S6_rol_i_p_enc : Enc_S_3op_i6<0b000000011>; 924 class S6_rol_i_p_nac_enc : Enc_S_3op_i6<0b001000011>; 925 class S6_rol_i_p_acc_enc : Enc_S_3op_i6<0b001000111>; 926 class S6_rol_i_p_and_enc : Enc_S_3op_i6<0b001010011>; 927 class S6_rol_i_p_or_enc : Enc_S_3op_i6<0b001010111>; 928 class S6_rol_i_p_xacc_enc : Enc_S_3op_i6<0b001100011>; 929 930 class Enc_X_3op_r<bits<15> opc> : OpcodeHexagon { 931 bits<5> dst; 932 bits<5> src1; 933 bits<5> src2; 934 935 let Inst{31-16} = { opc{14-4}, src1{4-0} }; 936 let Inst{13-0} = { opc{3}, src2{4-0}, opc{2-0}, dst{4-0} }; 937 } 938 939 class S6_rol_i_r_enc : Enc_X_3op_r<0b100011000000011>; 940 class S6_rol_i_r_nac_enc : Enc_X_3op_r<0b100011100000011>; 941 class S6_rol_i_r_acc_enc : Enc_X_3op_r<0b100011100000111>; 942 class S6_rol_i_r_and_enc : Enc_X_3op_r<0b100011100100011>; 943 class S6_rol_i_r_or_enc : Enc_X_3op_r<0b100011100100111>; 944 class S6_rol_i_r_xacc_enc : Enc_X_3op_r<0b100011101000011>; 945 class S6_vtrunehb_ppp_enc : Enc_X_3op_r<0b110000011000011>; 946 class S6_vtrunohb_ppp_enc : Enc_X_3op_r<0b110000011000101>; 947 948 class Enc_no_operands<bits<25> opc> : OpcodeHexagon { 949 950 let Inst{31-16} = { opc{24-10}, 0 }; 951 let Inst{13-0} = { opc{9-7}, 0b000, opc{6-0}, 0 }; 952 } 953 954 class Y5_l2gunlock_enc : Enc_no_operands<0b1010100000100000010000000>; 955 class Y5_l2gclean_enc : Enc_no_operands<0b1010100000100000100000000>; 956 class Y5_l2gcleaninv_enc : Enc_no_operands<0b1010100000100000110000000>; 957 class V6_vhist_enc : Enc_no_operands<0b0001111000000001001000000>; 958 959 class Enc_J_jumpr<bits<13> opc> : OpcodeHexagon { 960 bits<5> src1; 961 962 let Inst{31-16} = { opc{12-6}, 0, opc{5-3}, src1{4-0} }; 963 let Inst{13-0} = { 0b00, opc{2}, 0b0000, opc{1-0}, 0b00000 }; 964 } 965 966 class Y5_l2unlocka_enc : Enc_J_jumpr<0b1010011011000>; 967 class Y2_l2cleaninvidx_enc : Enc_J_jumpr<0b1010100011000>; 968 969 class Enc_ST_l2gclean_pa<bits<2> opc> : OpcodeHexagon { 970 bits<5> src1; 971 972 let Inst{31-16} = { 0b101001101, opc{1-0}, 0b00000 }; 973 let Inst{13-0} = { 0, src1{4-0}, 0b00000000 }; 974 } 975 976 class Y6_l2gcleanpa_enc : Enc_ST_l2gclean_pa<0b01>; 977 class Y6_l2gcleaninvpa_enc : Enc_ST_l2gclean_pa<0b10>; 978 979 class A5_ACS_enc : OpcodeHexagon { 980 bits<5> dst1; 981 bits<2> dst2; 982 bits<5> src1; 983 bits<5> src2; 984 985 let Inst{31-16} = { 0b11101010101, src1{4-0} }; 986 let Inst{13-0} = { 0, src2{4-0}, 0, dst2{1-0}, dst1{4-0} }; 987 } 988 989 class Enc_X_4op_r<bits<8> opc> : OpcodeHexagon { 990 bits<5> dst; 991 bits<5> src1; 992 bits<5> src2; 993 bits<2> src3; 994 995 let Inst{31-16} = { 0b11, opc{7}, 0, opc{6-5}, 1, opc{4-1}, src1{4-0} }; 996 let Inst{13-0} = { 0, src2{4-0}, opc{0}, src3{1-0}, dst{4-0} }; 997 } 998 999 class S2_vsplicerb_enc : Enc_X_4op_r<0b00001000>; 1000 class S2_cabacencbin_enc : Enc_X_4op_r<0b00001010>; 1001 class F2_sffma_sc_enc : Enc_X_4op_r<0b11110111>; 1002 1003 class V6_vhistq_enc : OpcodeHexagon { 1004 bits<2> src1; 1005 1006 let Inst{31-16} = { 0b00011110, src1{1-0}, 0b000010 }; 1007 let Inst{13-0} = { 0b10000010000000 }; 1008 } 1009 1010 // TODO: Change script to generate dst1 instead of dst. 1011 class A6_vminub_RdP_enc : OpcodeHexagon { 1012 bits<5> dst1; 1013 bits<2> dst2; 1014 bits<5> src1; 1015 bits<5> src2; 1016 1017 let Inst{31-16} = { 0b11101010111, src2{4-0} }; 1018 let Inst{13-0} = { 0, src1{4-0}, 0, dst2{1-0}, dst1{4-0} }; 1019 } 1020