MipsMSAInstrInfo.td revision ea549a847d87cb8ce46f6a45b24ae888db697a07
1//===- MipsMSAInstrInfo.td - MSA ASE instructions -*- tablegen ------------*-=// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// This file describes Mips MSA ASE instructions. 11// 12//===----------------------------------------------------------------------===// 13 14def immSExt5 : ImmLeaf<i32, [{return isInt<5>(Imm);}]>; 15def immSExt10: ImmLeaf<i32, [{return isInt<10>(Imm);}]>; 16 17def uimm3 : Operand<i32> { 18 let PrintMethod = "printUnsignedImm"; 19} 20 21def uimm4 : Operand<i32> { 22 let PrintMethod = "printUnsignedImm"; 23} 24 25def uimm6 : Operand<i32> { 26 let PrintMethod = "printUnsignedImm"; 27} 28 29def uimm8 : Operand<i32> { 30 let PrintMethod = "printUnsignedImm"; 31} 32 33def simm5 : Operand<i32>; 34 35def simm10 : Operand<i32>; 36 37// Instruction encoding. 38class ADD_A_B_ENC : MSA_3R_FMT<0b000, 0b00, 0b010000>; 39class ADD_A_H_ENC : MSA_3R_FMT<0b000, 0b01, 0b010000>; 40class ADD_A_W_ENC : MSA_3R_FMT<0b000, 0b10, 0b010000>; 41class ADD_A_D_ENC : MSA_3R_FMT<0b000, 0b11, 0b010000>; 42 43class ADDS_A_B_ENC : MSA_3R_FMT<0b001, 0b00, 0b010000>; 44class ADDS_A_H_ENC : MSA_3R_FMT<0b001, 0b01, 0b010000>; 45class ADDS_A_W_ENC : MSA_3R_FMT<0b001, 0b10, 0b010000>; 46class ADDS_A_D_ENC : MSA_3R_FMT<0b001, 0b11, 0b010000>; 47 48class ADDS_S_B_ENC : MSA_3R_FMT<0b010, 0b00, 0b010000>; 49class ADDS_S_H_ENC : MSA_3R_FMT<0b010, 0b01, 0b010000>; 50class ADDS_S_W_ENC : MSA_3R_FMT<0b010, 0b10, 0b010000>; 51class ADDS_S_D_ENC : MSA_3R_FMT<0b010, 0b11, 0b010000>; 52 53class ADDS_U_B_ENC : MSA_3R_FMT<0b011, 0b00, 0b010000>; 54class ADDS_U_H_ENC : MSA_3R_FMT<0b011, 0b01, 0b010000>; 55class ADDS_U_W_ENC : MSA_3R_FMT<0b011, 0b10, 0b010000>; 56class ADDS_U_D_ENC : MSA_3R_FMT<0b011, 0b11, 0b010000>; 57 58class ADDV_B_ENC : MSA_3R_FMT<0b000, 0b00, 0b001110>; 59class ADDV_H_ENC : MSA_3R_FMT<0b000, 0b01, 0b001110>; 60class ADDV_W_ENC : MSA_3R_FMT<0b000, 0b10, 0b001110>; 61class ADDV_D_ENC : MSA_3R_FMT<0b000, 0b11, 0b001110>; 62 63class ADDVI_B_ENC : MSA_I5_FMT<0b000, 0b00, 0b000110>; 64class ADDVI_H_ENC : MSA_I5_FMT<0b000, 0b01, 0b000110>; 65class ADDVI_W_ENC : MSA_I5_FMT<0b000, 0b10, 0b000110>; 66class ADDVI_D_ENC : MSA_I5_FMT<0b000, 0b11, 0b000110>; 67 68class ANDI_B_ENC : MSA_I8_FMT<0b00, 0b000000>; 69 70class ASUB_S_B_ENC : MSA_3R_FMT<0b100, 0b00, 0b010001>; 71class ASUB_S_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b010001>; 72class ASUB_S_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b010001>; 73class ASUB_S_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b010001>; 74 75class ASUB_U_B_ENC : MSA_3R_FMT<0b101, 0b00, 0b010001>; 76class ASUB_U_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b010001>; 77class ASUB_U_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b010001>; 78class ASUB_U_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b010001>; 79 80class AVE_S_B_ENC : MSA_3R_FMT<0b100, 0b00, 0b010000>; 81class AVE_S_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b010000>; 82class AVE_S_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b010000>; 83class AVE_S_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b010000>; 84 85class AVE_U_B_ENC : MSA_3R_FMT<0b101, 0b00, 0b010000>; 86class AVE_U_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b010000>; 87class AVE_U_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b010000>; 88class AVE_U_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b010000>; 89 90class AVER_S_B_ENC : MSA_3R_FMT<0b110, 0b00, 0b010000>; 91class AVER_S_H_ENC : MSA_3R_FMT<0b110, 0b01, 0b010000>; 92class AVER_S_W_ENC : MSA_3R_FMT<0b110, 0b10, 0b010000>; 93class AVER_S_D_ENC : MSA_3R_FMT<0b110, 0b11, 0b010000>; 94 95class AVER_U_B_ENC : MSA_3R_FMT<0b111, 0b00, 0b010000>; 96class AVER_U_H_ENC : MSA_3R_FMT<0b111, 0b01, 0b010000>; 97class AVER_U_W_ENC : MSA_3R_FMT<0b111, 0b10, 0b010000>; 98class AVER_U_D_ENC : MSA_3R_FMT<0b111, 0b11, 0b010000>; 99 100class BCLR_B_ENC : MSA_3R_FMT<0b011, 0b00, 0b001101>; 101class BCLR_H_ENC : MSA_3R_FMT<0b011, 0b01, 0b001101>; 102class BCLR_W_ENC : MSA_3R_FMT<0b011, 0b10, 0b001101>; 103class BCLR_D_ENC : MSA_3R_FMT<0b011, 0b11, 0b001101>; 104 105class BCLRI_B_ENC : MSA_BIT_B_FMT<0b011, 0b001001>; 106class BCLRI_H_ENC : MSA_BIT_H_FMT<0b011, 0b001001>; 107class BCLRI_W_ENC : MSA_BIT_W_FMT<0b011, 0b001001>; 108class BCLRI_D_ENC : MSA_BIT_D_FMT<0b011, 0b001001>; 109 110class BINSL_B_ENC : MSA_3R_FMT<0b110, 0b00, 0b001101>; 111class BINSL_H_ENC : MSA_3R_FMT<0b110, 0b01, 0b001101>; 112class BINSL_W_ENC : MSA_3R_FMT<0b110, 0b10, 0b001101>; 113class BINSL_D_ENC : MSA_3R_FMT<0b110, 0b11, 0b001101>; 114 115class BINSLI_B_ENC : MSA_BIT_B_FMT<0b110, 0b001001>; 116class BINSLI_H_ENC : MSA_BIT_H_FMT<0b110, 0b001001>; 117class BINSLI_W_ENC : MSA_BIT_W_FMT<0b110, 0b001001>; 118class BINSLI_D_ENC : MSA_BIT_D_FMT<0b110, 0b001001>; 119 120class BINSR_B_ENC : MSA_3R_FMT<0b111, 0b00, 0b001101>; 121class BINSR_H_ENC : MSA_3R_FMT<0b111, 0b01, 0b001101>; 122class BINSR_W_ENC : MSA_3R_FMT<0b111, 0b10, 0b001101>; 123class BINSR_D_ENC : MSA_3R_FMT<0b111, 0b11, 0b001101>; 124 125class BINSRI_B_ENC : MSA_BIT_B_FMT<0b111, 0b001001>; 126class BINSRI_H_ENC : MSA_BIT_H_FMT<0b111, 0b001001>; 127class BINSRI_W_ENC : MSA_BIT_W_FMT<0b111, 0b001001>; 128class BINSRI_D_ENC : MSA_BIT_D_FMT<0b111, 0b001001>; 129 130class BMNZI_B_ENC : MSA_I8_FMT<0b00, 0b000001>; 131 132class BMZI_B_ENC : MSA_I8_FMT<0b01, 0b000001>; 133 134class BNEG_B_ENC : MSA_3R_FMT<0b101, 0b00, 0b001101>; 135class BNEG_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b001101>; 136class BNEG_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b001101>; 137class BNEG_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b001101>; 138 139class BNEGI_B_ENC : MSA_BIT_B_FMT<0b101, 0b001001>; 140class BNEGI_H_ENC : MSA_BIT_H_FMT<0b101, 0b001001>; 141class BNEGI_W_ENC : MSA_BIT_W_FMT<0b101, 0b001001>; 142class BNEGI_D_ENC : MSA_BIT_D_FMT<0b101, 0b001001>; 143 144class BSELI_B_ENC : MSA_I8_FMT<0b10, 0b000001>; 145 146class BSET_B_ENC : MSA_3R_FMT<0b100, 0b00, 0b001101>; 147class BSET_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b001101>; 148class BSET_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b001101>; 149class BSET_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b001101>; 150 151class BSETI_B_ENC : MSA_BIT_B_FMT<0b100, 0b001001>; 152class BSETI_H_ENC : MSA_BIT_H_FMT<0b100, 0b001001>; 153class BSETI_W_ENC : MSA_BIT_W_FMT<0b100, 0b001001>; 154class BSETI_D_ENC : MSA_BIT_D_FMT<0b100, 0b001001>; 155 156class CEQ_B_ENC : MSA_3R_FMT<0b000, 0b00, 0b001111>; 157class CEQ_H_ENC : MSA_3R_FMT<0b000, 0b01, 0b001111>; 158class CEQ_W_ENC : MSA_3R_FMT<0b000, 0b10, 0b001111>; 159class CEQ_D_ENC : MSA_3R_FMT<0b000, 0b11, 0b001111>; 160 161class CEQI_B_ENC : MSA_I5_FMT<0b000, 0b00, 0b000111>; 162class CEQI_H_ENC : MSA_I5_FMT<0b000, 0b01, 0b000111>; 163class CEQI_W_ENC : MSA_I5_FMT<0b000, 0b10, 0b000111>; 164class CEQI_D_ENC : MSA_I5_FMT<0b000, 0b11, 0b000111>; 165 166class CLE_S_B_ENC : MSA_3R_FMT<0b100, 0b00, 0b001111>; 167class CLE_S_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b001111>; 168class CLE_S_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b001111>; 169class CLE_S_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b001111>; 170 171class CLE_U_B_ENC : MSA_3R_FMT<0b101, 0b00, 0b001111>; 172class CLE_U_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b001111>; 173class CLE_U_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b001111>; 174class CLE_U_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b001111>; 175 176class CLEI_S_B_ENC : MSA_I5_FMT<0b100, 0b00, 0b000111>; 177class CLEI_S_H_ENC : MSA_I5_FMT<0b100, 0b01, 0b000111>; 178class CLEI_S_W_ENC : MSA_I5_FMT<0b100, 0b10, 0b000111>; 179class CLEI_S_D_ENC : MSA_I5_FMT<0b100, 0b11, 0b000111>; 180 181class CLEI_U_B_ENC : MSA_I5_FMT<0b101, 0b00, 0b000111>; 182class CLEI_U_H_ENC : MSA_I5_FMT<0b101, 0b01, 0b000111>; 183class CLEI_U_W_ENC : MSA_I5_FMT<0b101, 0b10, 0b000111>; 184class CLEI_U_D_ENC : MSA_I5_FMT<0b101, 0b11, 0b000111>; 185 186class CLT_S_B_ENC : MSA_3R_FMT<0b010, 0b00, 0b001111>; 187class CLT_S_H_ENC : MSA_3R_FMT<0b010, 0b01, 0b001111>; 188class CLT_S_W_ENC : MSA_3R_FMT<0b010, 0b10, 0b001111>; 189class CLT_S_D_ENC : MSA_3R_FMT<0b010, 0b11, 0b001111>; 190 191class CLT_U_B_ENC : MSA_3R_FMT<0b011, 0b00, 0b001111>; 192class CLT_U_H_ENC : MSA_3R_FMT<0b011, 0b01, 0b001111>; 193class CLT_U_W_ENC : MSA_3R_FMT<0b011, 0b10, 0b001111>; 194class CLT_U_D_ENC : MSA_3R_FMT<0b011, 0b11, 0b001111>; 195 196class CLTI_S_B_ENC : MSA_I5_FMT<0b010, 0b00, 0b000111>; 197class CLTI_S_H_ENC : MSA_I5_FMT<0b010, 0b01, 0b000111>; 198class CLTI_S_W_ENC : MSA_I5_FMT<0b010, 0b10, 0b000111>; 199class CLTI_S_D_ENC : MSA_I5_FMT<0b010, 0b11, 0b000111>; 200 201class CLTI_U_B_ENC : MSA_I5_FMT<0b011, 0b00, 0b000111>; 202class CLTI_U_H_ENC : MSA_I5_FMT<0b011, 0b01, 0b000111>; 203class CLTI_U_W_ENC : MSA_I5_FMT<0b011, 0b10, 0b000111>; 204class CLTI_U_D_ENC : MSA_I5_FMT<0b011, 0b11, 0b000111>; 205 206class COPY_S_B_ENC : MSA_ELM_B_FMT<0b0010, 0b011001>; 207class COPY_S_H_ENC : MSA_ELM_H_FMT<0b0010, 0b011001>; 208class COPY_S_W_ENC : MSA_ELM_W_FMT<0b0010, 0b011001>; 209 210class COPY_U_B_ENC : MSA_ELM_B_FMT<0b0011, 0b011001>; 211class COPY_U_H_ENC : MSA_ELM_H_FMT<0b0011, 0b011001>; 212class COPY_U_W_ENC : MSA_ELM_W_FMT<0b0011, 0b011001>; 213 214class DIV_S_B_ENC : MSA_3R_FMT<0b100, 0b00, 0b010010>; 215class DIV_S_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b010010>; 216class DIV_S_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b010010>; 217class DIV_S_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b010010>; 218 219class DIV_U_B_ENC : MSA_3R_FMT<0b101, 0b00, 0b010010>; 220class DIV_U_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b010010>; 221class DIV_U_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b010010>; 222class DIV_U_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b010010>; 223 224class DOTP_S_B_ENC : MSA_3R_FMT<0b000, 0b00, 0b010011>; 225class DOTP_S_H_ENC : MSA_3R_FMT<0b000, 0b01, 0b010011>; 226class DOTP_S_W_ENC : MSA_3R_FMT<0b000, 0b10, 0b010011>; 227class DOTP_S_D_ENC : MSA_3R_FMT<0b000, 0b11, 0b010011>; 228 229class DOTP_U_B_ENC : MSA_3R_FMT<0b001, 0b00, 0b010011>; 230class DOTP_U_H_ENC : MSA_3R_FMT<0b001, 0b01, 0b010011>; 231class DOTP_U_W_ENC : MSA_3R_FMT<0b001, 0b10, 0b010011>; 232class DOTP_U_D_ENC : MSA_3R_FMT<0b001, 0b11, 0b010011>; 233 234class DPADD_S_H_ENC : MSA_3R_FMT<0b010, 0b01, 0b010011>; 235class DPADD_S_W_ENC : MSA_3R_FMT<0b010, 0b10, 0b010011>; 236class DPADD_S_D_ENC : MSA_3R_FMT<0b010, 0b11, 0b010011>; 237 238class DPADD_U_H_ENC : MSA_3R_FMT<0b011, 0b01, 0b010011>; 239class DPADD_U_W_ENC : MSA_3R_FMT<0b011, 0b10, 0b010011>; 240class DPADD_U_D_ENC : MSA_3R_FMT<0b011, 0b11, 0b010011>; 241 242class DPSUB_S_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b010011>; 243class DPSUB_S_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b010011>; 244class DPSUB_S_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b010011>; 245 246class DPSUB_U_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b010011>; 247class DPSUB_U_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b010011>; 248class DPSUB_U_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b010011>; 249 250class FADD_W_ENC : MSA_3RF_FMT<0b0000, 0b0, 0b011011>; 251class FADD_D_ENC : MSA_3RF_FMT<0b0000, 0b1, 0b011011>; 252 253class FCEQ_W_ENC : MSA_3RF_FMT<0b0010, 0b0, 0b011010>; 254class FCEQ_D_ENC : MSA_3RF_FMT<0b0010, 0b1, 0b011010>; 255 256class FCGE_W_ENC : MSA_3RF_FMT<0b0101, 0b0, 0b011010>; 257class FCGE_D_ENC : MSA_3RF_FMT<0b0101, 0b1, 0b011010>; 258 259class FCGT_W_ENC : MSA_3RF_FMT<0b0111, 0b0, 0b011010>; 260class FCGT_D_ENC : MSA_3RF_FMT<0b0111, 0b1, 0b011010>; 261 262class FCLASS_W_ENC : MSA_2RF_FMT<0b110010000, 0b0, 0b011110>; 263class FCLASS_D_ENC : MSA_2RF_FMT<0b110010000, 0b1, 0b011110>; 264 265class FCLE_W_ENC : MSA_3RF_FMT<0b0110, 0b0, 0b011010>; 266class FCLE_D_ENC : MSA_3RF_FMT<0b0110, 0b1, 0b011010>; 267 268class FCLT_W_ENC : MSA_3RF_FMT<0b0100, 0b0, 0b011010>; 269class FCLT_D_ENC : MSA_3RF_FMT<0b0100, 0b1, 0b011010>; 270 271class FCNE_W_ENC : MSA_3RF_FMT<0b0011, 0b0, 0b011010>; 272class FCNE_D_ENC : MSA_3RF_FMT<0b0011, 0b1, 0b011010>; 273 274class FCUN_W_ENC : MSA_3RF_FMT<0b0001, 0b0, 0b011010>; 275class FCUN_D_ENC : MSA_3RF_FMT<0b0001, 0b1, 0b011010>; 276 277class FDIV_W_ENC : MSA_3RF_FMT<0b0011, 0b0, 0b011011>; 278class FDIV_D_ENC : MSA_3RF_FMT<0b0011, 0b1, 0b011011>; 279 280class FEXDO_H_ENC : MSA_3RF_FMT<0b1000, 0b0, 0b011011>; 281class FEXDO_W_ENC : MSA_3RF_FMT<0b1000, 0b1, 0b011011>; 282 283class FEXP2_W_ENC : MSA_3RF_FMT<0b0111, 0b0, 0b011011>; 284class FEXP2_D_ENC : MSA_3RF_FMT<0b0111, 0b1, 0b011011>; 285 286class FEXUPL_W_ENC : MSA_2RF_FMT<0b110011000, 0b0, 0b011110>; 287class FEXUPL_D_ENC : MSA_2RF_FMT<0b110011000, 0b1, 0b011110>; 288 289class FEXUPR_W_ENC : MSA_2RF_FMT<0b110011001, 0b0, 0b011110>; 290class FEXUPR_D_ENC : MSA_2RF_FMT<0b110011001, 0b1, 0b011110>; 291 292class FFINT_S_W_ENC : MSA_2RF_FMT<0b110011110, 0b0, 0b011110>; 293class FFINT_S_D_ENC : MSA_2RF_FMT<0b110011110, 0b1, 0b011110>; 294 295class FFINT_U_W_ENC : MSA_2RF_FMT<0b110011111, 0b0, 0b011110>; 296class FFINT_U_D_ENC : MSA_2RF_FMT<0b110011111, 0b1, 0b011110>; 297 298class FFQL_W_ENC : MSA_2RF_FMT<0b110011010, 0b0, 0b011110>; 299class FFQL_D_ENC : MSA_2RF_FMT<0b110011010, 0b1, 0b011110>; 300 301class FFQR_W_ENC : MSA_2RF_FMT<0b110011011, 0b0, 0b011110>; 302class FFQR_D_ENC : MSA_2RF_FMT<0b110011011, 0b1, 0b011110>; 303 304class FILL_B_ENC : MSA_2R_FMT<0b11000000, 0b00, 0b011110>; 305class FILL_H_ENC : MSA_2R_FMT<0b11000000, 0b01, 0b011110>; 306class FILL_W_ENC : MSA_2R_FMT<0b11000000, 0b10, 0b011110>; 307 308class FLOG2_W_ENC : MSA_2RF_FMT<0b110010111, 0b0, 0b011110>; 309class FLOG2_D_ENC : MSA_2RF_FMT<0b110010111, 0b1, 0b011110>; 310 311class FMADD_W_ENC : MSA_3RF_FMT<0b0100, 0b0, 0b011011>; 312class FMADD_D_ENC : MSA_3RF_FMT<0b0100, 0b1, 0b011011>; 313 314class FMAX_W_ENC : MSA_3RF_FMT<0b1110, 0b0, 0b011011>; 315class FMAX_D_ENC : MSA_3RF_FMT<0b1110, 0b1, 0b011011>; 316 317class FMAX_A_W_ENC : MSA_3RF_FMT<0b1111, 0b0, 0b011011>; 318class FMAX_A_D_ENC : MSA_3RF_FMT<0b1111, 0b1, 0b011011>; 319 320class FMIN_W_ENC : MSA_3RF_FMT<0b1100, 0b0, 0b011011>; 321class FMIN_D_ENC : MSA_3RF_FMT<0b1100, 0b1, 0b011011>; 322 323class FMIN_A_W_ENC : MSA_3RF_FMT<0b1101, 0b0, 0b011011>; 324class FMIN_A_D_ENC : MSA_3RF_FMT<0b1101, 0b1, 0b011011>; 325 326class FMSUB_W_ENC : MSA_3RF_FMT<0b0101, 0b0, 0b011011>; 327class FMSUB_D_ENC : MSA_3RF_FMT<0b0101, 0b1, 0b011011>; 328 329class FMUL_W_ENC : MSA_3RF_FMT<0b0010, 0b0, 0b011011>; 330class FMUL_D_ENC : MSA_3RF_FMT<0b0010, 0b1, 0b011011>; 331 332class FRINT_W_ENC : MSA_2RF_FMT<0b110010110, 0b0, 0b011110>; 333class FRINT_D_ENC : MSA_2RF_FMT<0b110010110, 0b1, 0b011110>; 334 335class FRCP_W_ENC : MSA_2RF_FMT<0b110010101, 0b0, 0b011110>; 336class FRCP_D_ENC : MSA_2RF_FMT<0b110010101, 0b1, 0b011110>; 337 338class FRSQRT_W_ENC : MSA_2RF_FMT<0b110010100, 0b0, 0b011110>; 339class FRSQRT_D_ENC : MSA_2RF_FMT<0b110010100, 0b1, 0b011110>; 340 341class FSEQ_W_ENC : MSA_3RF_FMT<0b1010, 0b0, 0b011010>; 342class FSEQ_D_ENC : MSA_3RF_FMT<0b1010, 0b1, 0b011010>; 343 344class FSGE_W_ENC : MSA_3RF_FMT<0b1101, 0b0, 0b011010>; 345class FSGE_D_ENC : MSA_3RF_FMT<0b1101, 0b1, 0b011010>; 346 347class FSGT_W_ENC : MSA_3RF_FMT<0b1111, 0b0, 0b011010>; 348class FSGT_D_ENC : MSA_3RF_FMT<0b1111, 0b1, 0b011010>; 349 350class FSLE_W_ENC : MSA_3RF_FMT<0b1110, 0b0, 0b011010>; 351class FSLE_D_ENC : MSA_3RF_FMT<0b1110, 0b1, 0b011010>; 352 353class FSLT_W_ENC : MSA_3RF_FMT<0b1100, 0b0, 0b011010>; 354class FSLT_D_ENC : MSA_3RF_FMT<0b1100, 0b1, 0b011010>; 355 356class FSNE_W_ENC : MSA_3RF_FMT<0b1011, 0b0, 0b011010>; 357class FSNE_D_ENC : MSA_3RF_FMT<0b1011, 0b1, 0b011010>; 358 359class FSQRT_W_ENC : MSA_2RF_FMT<0b110010011, 0b0, 0b011110>; 360class FSQRT_D_ENC : MSA_2RF_FMT<0b110010011, 0b1, 0b011110>; 361 362class FSUB_W_ENC : MSA_3RF_FMT<0b0001, 0b0, 0b011011>; 363class FSUB_D_ENC : MSA_3RF_FMT<0b0001, 0b1, 0b011011>; 364 365class FTINT_S_W_ENC : MSA_2RF_FMT<0b110011100, 0b0, 0b011110>; 366class FTINT_S_D_ENC : MSA_2RF_FMT<0b110011100, 0b1, 0b011110>; 367 368class FTINT_U_W_ENC : MSA_2RF_FMT<0b110011101, 0b0, 0b011110>; 369class FTINT_U_D_ENC : MSA_2RF_FMT<0b110011101, 0b1, 0b011110>; 370 371class FTQ_H_ENC : MSA_3RF_FMT<0b1010, 0b0, 0b011011>; 372class FTQ_W_ENC : MSA_3RF_FMT<0b1010, 0b1, 0b011011>; 373 374class ILVEV_B_ENC : MSA_3R_FMT<0b110, 0b00, 0b010100>; 375class ILVEV_H_ENC : MSA_3R_FMT<0b110, 0b01, 0b010100>; 376class ILVEV_W_ENC : MSA_3R_FMT<0b110, 0b10, 0b010100>; 377class ILVEV_D_ENC : MSA_3R_FMT<0b110, 0b11, 0b010100>; 378 379class ILVL_B_ENC : MSA_3R_FMT<0b100, 0b00, 0b010100>; 380class ILVL_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b010100>; 381class ILVL_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b010100>; 382class ILVL_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b010100>; 383 384class ILVOD_B_ENC : MSA_3R_FMT<0b111, 0b00, 0b010100>; 385class ILVOD_H_ENC : MSA_3R_FMT<0b111, 0b01, 0b010100>; 386class ILVOD_W_ENC : MSA_3R_FMT<0b111, 0b10, 0b010100>; 387class ILVOD_D_ENC : MSA_3R_FMT<0b111, 0b11, 0b010100>; 388 389class ILVR_B_ENC : MSA_3R_FMT<0b101, 0b00, 0b010100>; 390class ILVR_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b010100>; 391class ILVR_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b010100>; 392class ILVR_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b010100>; 393 394class INSERT_B_ENC : MSA_ELM_B_FMT<0b0100, 0b011001>; 395class INSERT_H_ENC : MSA_ELM_H_FMT<0b0100, 0b011001>; 396class INSERT_W_ENC : MSA_ELM_W_FMT<0b0100, 0b011001>; 397 398class LD_B_ENC : MSA_I5_FMT<0b110, 0b00, 0b000111>; 399class LD_H_ENC : MSA_I5_FMT<0b110, 0b01, 0b000111>; 400class LD_W_ENC : MSA_I5_FMT<0b110, 0b10, 0b000111>; 401class LD_D_ENC : MSA_I5_FMT<0b110, 0b11, 0b000111>; 402 403class LDI_B_ENC : MSA_I10_FMT<0b010, 0b00, 0b001100>; 404class LDI_H_ENC : MSA_I10_FMT<0b010, 0b01, 0b001100>; 405class LDI_W_ENC : MSA_I10_FMT<0b010, 0b10, 0b001100>; 406class LDI_D_ENC : MSA_I10_FMT<0b010, 0b11, 0b001100>; 407 408class MADD_Q_H_ENC : MSA_3RF_FMT<0b0010, 0b0, 0b011100>; 409class MADD_Q_W_ENC : MSA_3RF_FMT<0b0010, 0b1, 0b011100>; 410 411class MADDR_Q_H_ENC : MSA_3RF_FMT<0b0011, 0b0, 0b011100>; 412class MADDR_Q_W_ENC : MSA_3RF_FMT<0b0011, 0b1, 0b011100>; 413 414class MADDV_B_ENC : MSA_3R_FMT<0b001, 0b00, 0b010010>; 415class MADDV_H_ENC : MSA_3R_FMT<0b001, 0b01, 0b010010>; 416class MADDV_W_ENC : MSA_3R_FMT<0b001, 0b10, 0b010010>; 417class MADDV_D_ENC : MSA_3R_FMT<0b001, 0b11, 0b010010>; 418 419class MAX_A_B_ENC : MSA_3R_FMT<0b110, 0b00, 0b001110>; 420class MAX_A_H_ENC : MSA_3R_FMT<0b110, 0b01, 0b001110>; 421class MAX_A_W_ENC : MSA_3R_FMT<0b110, 0b10, 0b001110>; 422class MAX_A_D_ENC : MSA_3R_FMT<0b110, 0b11, 0b001110>; 423 424class MAX_S_B_ENC : MSA_3R_FMT<0b010, 0b00, 0b001110>; 425class MAX_S_H_ENC : MSA_3R_FMT<0b010, 0b01, 0b001110>; 426class MAX_S_W_ENC : MSA_3R_FMT<0b010, 0b10, 0b001110>; 427class MAX_S_D_ENC : MSA_3R_FMT<0b010, 0b11, 0b001110>; 428 429class MAX_U_B_ENC : MSA_3R_FMT<0b011, 0b00, 0b001110>; 430class MAX_U_H_ENC : MSA_3R_FMT<0b011, 0b01, 0b001110>; 431class MAX_U_W_ENC : MSA_3R_FMT<0b011, 0b10, 0b001110>; 432class MAX_U_D_ENC : MSA_3R_FMT<0b011, 0b11, 0b001110>; 433 434class MAXI_S_B_ENC : MSA_I5_FMT<0b010, 0b00, 0b000110>; 435class MAXI_S_H_ENC : MSA_I5_FMT<0b010, 0b01, 0b000110>; 436class MAXI_S_W_ENC : MSA_I5_FMT<0b010, 0b10, 0b000110>; 437class MAXI_S_D_ENC : MSA_I5_FMT<0b010, 0b11, 0b000110>; 438 439class MAXI_U_B_ENC : MSA_I5_FMT<0b011, 0b00, 0b000110>; 440class MAXI_U_H_ENC : MSA_I5_FMT<0b011, 0b01, 0b000110>; 441class MAXI_U_W_ENC : MSA_I5_FMT<0b011, 0b10, 0b000110>; 442class MAXI_U_D_ENC : MSA_I5_FMT<0b011, 0b11, 0b000110>; 443 444class MIN_A_B_ENC : MSA_3R_FMT<0b111, 0b00, 0b001110>; 445class MIN_A_H_ENC : MSA_3R_FMT<0b111, 0b01, 0b001110>; 446class MIN_A_W_ENC : MSA_3R_FMT<0b111, 0b10, 0b001110>; 447class MIN_A_D_ENC : MSA_3R_FMT<0b111, 0b11, 0b001110>; 448 449class MIN_S_B_ENC : MSA_3R_FMT<0b100, 0b00, 0b001110>; 450class MIN_S_H_ENC : MSA_3R_FMT<0b100, 0b01, 0b001110>; 451class MIN_S_W_ENC : MSA_3R_FMT<0b100, 0b10, 0b001110>; 452class MIN_S_D_ENC : MSA_3R_FMT<0b100, 0b11, 0b001110>; 453 454class MIN_U_B_ENC : MSA_3R_FMT<0b101, 0b00, 0b001110>; 455class MIN_U_H_ENC : MSA_3R_FMT<0b101, 0b01, 0b001110>; 456class MIN_U_W_ENC : MSA_3R_FMT<0b101, 0b10, 0b001110>; 457class MIN_U_D_ENC : MSA_3R_FMT<0b101, 0b11, 0b001110>; 458 459class MINI_S_B_ENC : MSA_I5_FMT<0b100, 0b00, 0b000110>; 460class MINI_S_H_ENC : MSA_I5_FMT<0b100, 0b01, 0b000110>; 461class MINI_S_W_ENC : MSA_I5_FMT<0b100, 0b10, 0b000110>; 462class MINI_S_D_ENC : MSA_I5_FMT<0b100, 0b11, 0b000110>; 463 464class MINI_U_B_ENC : MSA_I5_FMT<0b101, 0b00, 0b000110>; 465class MINI_U_H_ENC : MSA_I5_FMT<0b101, 0b01, 0b000110>; 466class MINI_U_W_ENC : MSA_I5_FMT<0b101, 0b10, 0b000110>; 467class MINI_U_D_ENC : MSA_I5_FMT<0b101, 0b11, 0b000110>; 468 469class MOD_S_B_ENC : MSA_3R_FMT<0b110, 0b00, 0b010010>; 470class MOD_S_H_ENC : MSA_3R_FMT<0b110, 0b01, 0b010010>; 471class MOD_S_W_ENC : MSA_3R_FMT<0b110, 0b10, 0b010010>; 472class MOD_S_D_ENC : MSA_3R_FMT<0b110, 0b11, 0b010010>; 473 474class MOD_U_B_ENC : MSA_3R_FMT<0b111, 0b00, 0b010010>; 475class MOD_U_H_ENC : MSA_3R_FMT<0b111, 0b01, 0b010010>; 476class MOD_U_W_ENC : MSA_3R_FMT<0b111, 0b10, 0b010010>; 477class MOD_U_D_ENC : MSA_3R_FMT<0b111, 0b11, 0b010010>; 478 479class MSUB_Q_H_ENC : MSA_3RF_FMT<0b0100, 0b0, 0b011100>; 480class MSUB_Q_W_ENC : MSA_3RF_FMT<0b0100, 0b1, 0b011100>; 481 482class MSUBR_Q_H_ENC : MSA_3RF_FMT<0b0101, 0b0, 0b011100>; 483class MSUBR_Q_W_ENC : MSA_3RF_FMT<0b0101, 0b1, 0b011100>; 484 485class MSUBV_B_ENC : MSA_3R_FMT<0b010, 0b00, 0b010010>; 486class MSUBV_H_ENC : MSA_3R_FMT<0b010, 0b01, 0b010010>; 487class MSUBV_W_ENC : MSA_3R_FMT<0b010, 0b10, 0b010010>; 488class MSUBV_D_ENC : MSA_3R_FMT<0b010, 0b11, 0b010010>; 489 490class MUL_Q_H_ENC : MSA_3RF_FMT<0b0000, 0b0, 0b011100>; 491class MUL_Q_W_ENC : MSA_3RF_FMT<0b0000, 0b1, 0b011100>; 492 493class MULR_Q_H_ENC : MSA_3RF_FMT<0b0001, 0b0, 0b011100>; 494class MULR_Q_W_ENC : MSA_3RF_FMT<0b0001, 0b1, 0b011100>; 495 496class MULV_B_ENC : MSA_3R_FMT<0b000, 0b00, 0b010010>; 497class MULV_H_ENC : MSA_3R_FMT<0b000, 0b01, 0b010010>; 498class MULV_W_ENC : MSA_3R_FMT<0b000, 0b10, 0b010010>; 499class MULV_D_ENC : MSA_3R_FMT<0b000, 0b11, 0b010010>; 500 501class NLOC_B_ENC : MSA_2R_FMT<0b11000010, 0b00, 0b011110>; 502class NLOC_H_ENC : MSA_2R_FMT<0b11000010, 0b01, 0b011110>; 503class NLOC_W_ENC : MSA_2R_FMT<0b11000010, 0b10, 0b011110>; 504class NLOC_D_ENC : MSA_2R_FMT<0b11000010, 0b11, 0b011110>; 505 506class NLZC_B_ENC : MSA_2R_FMT<0b11000011, 0b00, 0b011110>; 507class NLZC_H_ENC : MSA_2R_FMT<0b11000011, 0b01, 0b011110>; 508class NLZC_W_ENC : MSA_2R_FMT<0b11000011, 0b10, 0b011110>; 509class NLZC_D_ENC : MSA_2R_FMT<0b11000011, 0b11, 0b011110>; 510 511class NORI_B_ENC : MSA_I8_FMT<0b10, 0b000000>; 512 513class ORI_B_ENC : MSA_I8_FMT<0b01, 0b000000>; 514 515class PCKEV_B_ENC : MSA_3R_FMT<0b010, 0b00, 0b010100>; 516class PCKEV_H_ENC : MSA_3R_FMT<0b010, 0b01, 0b010100>; 517class PCKEV_W_ENC : MSA_3R_FMT<0b010, 0b10, 0b010100>; 518class PCKEV_D_ENC : MSA_3R_FMT<0b010, 0b11, 0b010100>; 519 520class PCKOD_B_ENC : MSA_3R_FMT<0b011, 0b00, 0b010100>; 521class PCKOD_H_ENC : MSA_3R_FMT<0b011, 0b01, 0b010100>; 522class PCKOD_W_ENC : MSA_3R_FMT<0b011, 0b10, 0b010100>; 523class PCKOD_D_ENC : MSA_3R_FMT<0b011, 0b11, 0b010100>; 524 525class PCNT_B_ENC : MSA_2R_FMT<0b11000001, 0b00, 0b011110>; 526class PCNT_H_ENC : MSA_2R_FMT<0b11000001, 0b01, 0b011110>; 527class PCNT_W_ENC : MSA_2R_FMT<0b11000001, 0b10, 0b011110>; 528class PCNT_D_ENC : MSA_2R_FMT<0b11000001, 0b11, 0b011110>; 529 530class SAT_S_B_ENC : MSA_BIT_B_FMT<0b000, 0b001010>; 531class SAT_S_H_ENC : MSA_BIT_H_FMT<0b000, 0b001010>; 532class SAT_S_W_ENC : MSA_BIT_W_FMT<0b000, 0b001010>; 533class SAT_S_D_ENC : MSA_BIT_D_FMT<0b000, 0b001010>; 534 535class SAT_U_B_ENC : MSA_BIT_B_FMT<0b001, 0b001010>; 536class SAT_U_H_ENC : MSA_BIT_H_FMT<0b001, 0b001010>; 537class SAT_U_W_ENC : MSA_BIT_W_FMT<0b001, 0b001010>; 538class SAT_U_D_ENC : MSA_BIT_D_FMT<0b001, 0b001010>; 539 540class SHF_B_ENC : MSA_I8_FMT<0b00, 0b000010>; 541class SHF_H_ENC : MSA_I8_FMT<0b01, 0b000010>; 542class SHF_W_ENC : MSA_I8_FMT<0b10, 0b000010>; 543 544class SLD_B_ENC : MSA_3R_FMT<0b000, 0b00, 0b010100>; 545class SLD_H_ENC : MSA_3R_FMT<0b000, 0b01, 0b010100>; 546class SLD_W_ENC : MSA_3R_FMT<0b000, 0b10, 0b010100>; 547class SLD_D_ENC : MSA_3R_FMT<0b000, 0b11, 0b010100>; 548 549class SLDI_B_ENC : MSA_ELM_B_FMT<0b0000, 0b011001>; 550class SLDI_H_ENC : MSA_ELM_H_FMT<0b0000, 0b011001>; 551class SLDI_W_ENC : MSA_ELM_W_FMT<0b0000, 0b011001>; 552class SLDI_D_ENC : MSA_ELM_D_FMT<0b0000, 0b011001>; 553 554class SLL_B_ENC : MSA_3R_FMT<0b000, 0b00, 0b001101>; 555class SLL_H_ENC : MSA_3R_FMT<0b000, 0b01, 0b001101>; 556class SLL_W_ENC : MSA_3R_FMT<0b000, 0b10, 0b001101>; 557class SLL_D_ENC : MSA_3R_FMT<0b000, 0b11, 0b001101>; 558 559class SLLI_B_ENC : MSA_BIT_B_FMT<0b000, 0b001001>; 560class SLLI_H_ENC : MSA_BIT_H_FMT<0b000, 0b001001>; 561class SLLI_W_ENC : MSA_BIT_W_FMT<0b000, 0b001001>; 562class SLLI_D_ENC : MSA_BIT_D_FMT<0b000, 0b001001>; 563 564class SPLAT_B_ENC : MSA_3R_FMT<0b001, 0b00, 0b010100>; 565class SPLAT_H_ENC : MSA_3R_FMT<0b001, 0b01, 0b010100>; 566class SPLAT_W_ENC : MSA_3R_FMT<0b001, 0b10, 0b010100>; 567class SPLAT_D_ENC : MSA_3R_FMT<0b001, 0b11, 0b010100>; 568 569class SPLATI_B_ENC : MSA_ELM_B_FMT<0b0001, 0b011001>; 570class SPLATI_H_ENC : MSA_ELM_H_FMT<0b0001, 0b011001>; 571class SPLATI_W_ENC : MSA_ELM_W_FMT<0b0001, 0b011001>; 572class SPLATI_D_ENC : MSA_ELM_D_FMT<0b0001, 0b011001>; 573 574class SRA_B_ENC : MSA_3R_FMT<0b001, 0b00, 0b001101>; 575class SRA_H_ENC : MSA_3R_FMT<0b001, 0b01, 0b001101>; 576class SRA_W_ENC : MSA_3R_FMT<0b001, 0b10, 0b001101>; 577class SRA_D_ENC : MSA_3R_FMT<0b001, 0b11, 0b001101>; 578 579class SRAI_B_ENC : MSA_BIT_B_FMT<0b001, 0b001001>; 580class SRAI_H_ENC : MSA_BIT_H_FMT<0b001, 0b001001>; 581class SRAI_W_ENC : MSA_BIT_W_FMT<0b001, 0b001001>; 582class SRAI_D_ENC : MSA_BIT_D_FMT<0b001, 0b001001>; 583 584class SRL_B_ENC : MSA_3R_FMT<0b010, 0b00, 0b001101>; 585class SRL_H_ENC : MSA_3R_FMT<0b010, 0b01, 0b001101>; 586class SRL_W_ENC : MSA_3R_FMT<0b010, 0b10, 0b001101>; 587class SRL_D_ENC : MSA_3R_FMT<0b010, 0b11, 0b001101>; 588 589class SRLI_B_ENC : MSA_BIT_B_FMT<0b010, 0b001001>; 590class SRLI_H_ENC : MSA_BIT_H_FMT<0b010, 0b001001>; 591class SRLI_W_ENC : MSA_BIT_W_FMT<0b010, 0b001001>; 592class SRLI_D_ENC : MSA_BIT_D_FMT<0b010, 0b001001>; 593 594class ST_B_ENC : MSA_I5_FMT<0b111, 0b00, 0b000111>; 595class ST_H_ENC : MSA_I5_FMT<0b111, 0b01, 0b000111>; 596class ST_W_ENC : MSA_I5_FMT<0b111, 0b10, 0b000111>; 597class ST_D_ENC : MSA_I5_FMT<0b111, 0b11, 0b000111>; 598 599class SUBS_S_B_ENC : MSA_3R_FMT<0b000, 0b00, 0b010001>; 600class SUBS_S_H_ENC : MSA_3R_FMT<0b000, 0b01, 0b010001>; 601class SUBS_S_W_ENC : MSA_3R_FMT<0b000, 0b10, 0b010001>; 602class SUBS_S_D_ENC : MSA_3R_FMT<0b000, 0b11, 0b010001>; 603 604class SUBS_U_B_ENC : MSA_3R_FMT<0b001, 0b00, 0b010001>; 605class SUBS_U_H_ENC : MSA_3R_FMT<0b001, 0b01, 0b010001>; 606class SUBS_U_W_ENC : MSA_3R_FMT<0b001, 0b10, 0b010001>; 607class SUBS_U_D_ENC : MSA_3R_FMT<0b001, 0b11, 0b010001>; 608 609class SUBSUS_U_B_ENC : MSA_3R_FMT<0b011, 0b00, 0b010001>; 610class SUBSUS_U_H_ENC : MSA_3R_FMT<0b011, 0b01, 0b010001>; 611class SUBSUS_U_W_ENC : MSA_3R_FMT<0b011, 0b10, 0b010001>; 612class SUBSUS_U_D_ENC : MSA_3R_FMT<0b011, 0b11, 0b010001>; 613 614class SUBSUU_S_B_ENC : MSA_3R_FMT<0b010, 0b00, 0b010001>; 615class SUBSUU_S_H_ENC : MSA_3R_FMT<0b010, 0b01, 0b010001>; 616class SUBSUU_S_W_ENC : MSA_3R_FMT<0b010, 0b10, 0b010001>; 617class SUBSUU_S_D_ENC : MSA_3R_FMT<0b010, 0b11, 0b010001>; 618 619class SUBV_B_ENC : MSA_3R_FMT<0b001, 0b00, 0b001110>; 620class SUBV_H_ENC : MSA_3R_FMT<0b001, 0b01, 0b001110>; 621class SUBV_W_ENC : MSA_3R_FMT<0b001, 0b10, 0b001110>; 622class SUBV_D_ENC : MSA_3R_FMT<0b001, 0b11, 0b001110>; 623 624class SUBVI_B_ENC : MSA_I5_FMT<0b001, 0b00, 0b000110>; 625class SUBVI_H_ENC : MSA_I5_FMT<0b001, 0b01, 0b000110>; 626class SUBVI_W_ENC : MSA_I5_FMT<0b001, 0b10, 0b000110>; 627class SUBVI_D_ENC : MSA_I5_FMT<0b001, 0b11, 0b000110>; 628 629class VSHF_B_ENC : MSA_3R_FMT<0b000, 0b00, 0b010101>; 630class VSHF_H_ENC : MSA_3R_FMT<0b000, 0b01, 0b010101>; 631class VSHF_W_ENC : MSA_3R_FMT<0b000, 0b10, 0b010101>; 632class VSHF_D_ENC : MSA_3R_FMT<0b000, 0b11, 0b010101>; 633 634class XORI_B_ENC : MSA_I8_FMT<0b11, 0b000000>; 635 636// Instruction desc. 637class MSA_BIT_D_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 638 InstrItinClass itin, RegisterClass RCWD, 639 RegisterClass RCWS> { 640 dag OutOperandList = (outs RCWD:$wd); 641 dag InOperandList = (ins RCWS:$ws, uimm6:$u6); 642 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $u6"); 643 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, immZExt6:$u6))]; 644 InstrItinClass Itinerary = itin; 645} 646 647class MSA_BIT_W_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 648 InstrItinClass itin, RegisterClass RCWD, 649 RegisterClass RCWS> { 650 dag OutOperandList = (outs RCWD:$wd); 651 dag InOperandList = (ins RCWS:$ws, uimm5:$u5); 652 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $u5"); 653 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, immZExt5:$u5))]; 654 InstrItinClass Itinerary = itin; 655} 656 657class MSA_BIT_H_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 658 InstrItinClass itin, RegisterClass RCWD, 659 RegisterClass RCWS> { 660 dag OutOperandList = (outs RCWD:$wd); 661 dag InOperandList = (ins RCWS:$ws, uimm4:$u4); 662 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $u4"); 663 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, immZExt4:$u4))]; 664 InstrItinClass Itinerary = itin; 665} 666 667class MSA_BIT_B_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 668 InstrItinClass itin, RegisterClass RCWD, 669 RegisterClass RCWS> { 670 dag OutOperandList = (outs RCWD:$wd); 671 dag InOperandList = (ins RCWS:$ws, uimm3:$u3); 672 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $u3"); 673 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, immZExt3:$u3))]; 674 InstrItinClass Itinerary = itin; 675} 676 677class MSA_COPY_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 678 InstrItinClass itin, RegisterClass RCD, 679 RegisterClass RCWS> { 680 dag OutOperandList = (outs RCD:$rd); 681 dag InOperandList = (ins RCWS:$ws, uimm6:$n); 682 string AsmString = !strconcat(instr_asm, "\t$rd, $ws[$n]"); 683 list<dag> Pattern = [(set RCD:$rd, (OpNode RCWS:$ws, immZExt6:$n))]; 684 InstrItinClass Itinerary = itin; 685} 686 687class MSA_I5_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 688 InstrItinClass itin, RegisterClass RCWD, 689 RegisterClass RCWS> { 690 dag OutOperandList = (outs RCWD:$wd); 691 dag InOperandList = (ins RCWS:$ws, uimm5:$u5); 692 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $u5"); 693 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, immZExt5:$u5))]; 694 InstrItinClass Itinerary = itin; 695} 696 697class MSA_SI5_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 698 InstrItinClass itin, RegisterClass RCWD, 699 RegisterClass RCWS> { 700 dag OutOperandList = (outs RCWD:$wd); 701 dag InOperandList = (ins RCWS:$ws, simm5:$s5); 702 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $s5"); 703 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, immSExt5:$s5))]; 704 InstrItinClass Itinerary = itin; 705} 706 707class MSA_I8_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 708 InstrItinClass itin, RegisterClass RCWD, 709 RegisterClass RCWS> { 710 dag OutOperandList = (outs RCWD:$wd); 711 dag InOperandList = (ins RCWS:$ws, uimm8:$u8); 712 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $u8"); 713 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, immZExt8:$u8))]; 714 InstrItinClass Itinerary = itin; 715} 716 717class MSA_I10_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 718 InstrItinClass itin, RegisterClass RCWD> { 719 dag OutOperandList = (outs RCWD:$wd); 720 dag InOperandList = (ins simm10:$i10); 721 string AsmString = !strconcat(instr_asm, "\t$wd, $i10"); 722 list<dag> Pattern = [(set RCWD:$wd, (OpNode immSExt10:$i10))]; 723 InstrItinClass Itinerary = itin; 724} 725 726class MSA_2R_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 727 InstrItinClass itin, RegisterClass RCWD, 728 RegisterClass RCWS> { 729 dag OutOperandList = (outs RCWD:$wd); 730 dag InOperandList = (ins RCWS:$ws); 731 string AsmString = !strconcat(instr_asm, "\t$wd, $ws"); 732 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws))]; 733 InstrItinClass Itinerary = itin; 734} 735 736class MSA_2RF_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 737 InstrItinClass itin, RegisterClass RCWD, 738 RegisterClass RCWS> : 739 MSA_2R_DESC_BASE<instr_asm, OpNode, itin, RCWD, RCWS>; 740 741 742class MSA_3R_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 743 InstrItinClass itin, RegisterClass RCWD, 744 RegisterClass RCWS, RegisterClass RCWT = RCWS> { 745 dag OutOperandList = (outs RCWD:$wd); 746 dag InOperandList = (ins RCWS:$ws, RCWT:$wt); 747 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $wt"); 748 list<dag> Pattern = [(set RCWD:$wd, (OpNode RCWS:$ws, RCWT:$wt))]; 749 InstrItinClass Itinerary = itin; 750} 751 752class MSA_3R_4R_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 753 InstrItinClass itin, RegisterClass RCWD, 754 RegisterClass RCWS, RegisterClass RCWT = RCWS> { 755 dag OutOperandList = (outs RCWD:$wd); 756 dag InOperandList = (ins RCWD:$wd_in, RCWS:$ws, RCWT:$wt); 757 string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $wt"); 758 list<dag> Pattern = [(set RCWD:$wd, 759 (OpNode RCWD:$wd_in, RCWS:$ws, RCWT:$wt))]; 760 InstrItinClass Itinerary = itin; 761 string Constraints = "$wd = $wd_in"; 762} 763 764class MSA_3RF_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 765 InstrItinClass itin, RegisterClass RCWD, 766 RegisterClass RCWS, RegisterClass RCWT = RCWS> : 767 MSA_3R_DESC_BASE<instr_asm, OpNode, itin, RCWD, RCWS, RCWT>; 768 769class MSA_3RF_4RF_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 770 InstrItinClass itin, RegisterClass RCWD, 771 RegisterClass RCWS, RegisterClass RCWT = RCWS> : 772 MSA_3R_4R_DESC_BASE<instr_asm, OpNode, itin, RCWD, RCWS, RCWT>; 773 774class MSA_INSERT_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 775 InstrItinClass itin, RegisterClass RCD, 776 RegisterClass RCWS> { 777 dag OutOperandList = (outs RCD:$wd); 778 dag InOperandList = (ins RCD:$wd_in, uimm6:$n, RCWS:$rs); 779 string AsmString = !strconcat(instr_asm, "\t$wd[$n], $rs"); 780 list<dag> Pattern = [(set RCD:$wd, (OpNode RCD:$wd_in, 781 immZExt6:$n, 782 RCWS:$rs))]; 783 InstrItinClass Itinerary = itin; 784 string Constraints = "$wd = $wd_in"; 785} 786 787class ADD_A_B_DESC : MSA_3R_DESC_BASE<"add_a.b", int_mips_add_a_b, NoItinerary, 788 MSA128, MSA128>, IsCommutable; 789class ADD_A_H_DESC : MSA_3R_DESC_BASE<"add_a.h", int_mips_add_a_h, NoItinerary, 790 MSA128, MSA128>, IsCommutable; 791class ADD_A_W_DESC : MSA_3R_DESC_BASE<"add_a.w", int_mips_add_a_w, NoItinerary, 792 MSA128, MSA128>, IsCommutable; 793class ADD_A_D_DESC : MSA_3R_DESC_BASE<"add_a.d", int_mips_add_a_d, NoItinerary, 794 MSA128, MSA128>, IsCommutable; 795 796class ADDS_A_B_DESC : MSA_3R_DESC_BASE<"adds_a.b", int_mips_adds_a_b, 797 NoItinerary, MSA128, MSA128>, 798 IsCommutable; 799class ADDS_A_H_DESC : MSA_3R_DESC_BASE<"adds_a.h", int_mips_adds_a_h, 800 NoItinerary, MSA128, MSA128>, 801 IsCommutable; 802class ADDS_A_W_DESC : MSA_3R_DESC_BASE<"adds_a.w", int_mips_adds_a_w, 803 NoItinerary, MSA128, MSA128>, 804 IsCommutable; 805class ADDS_A_D_DESC : MSA_3R_DESC_BASE<"adds_a.d", int_mips_adds_a_d, 806 NoItinerary, MSA128, MSA128>, 807 IsCommutable; 808 809class ADDS_S_B_DESC : MSA_3R_DESC_BASE<"adds_s.b", int_mips_adds_s_b, 810 NoItinerary, MSA128, MSA128>, 811 IsCommutable; 812class ADDS_S_H_DESC : MSA_3R_DESC_BASE<"adds_s.h", int_mips_adds_s_h, 813 NoItinerary, MSA128, MSA128>, 814 IsCommutable; 815class ADDS_S_W_DESC : MSA_3R_DESC_BASE<"adds_s.w", int_mips_adds_s_w, 816 NoItinerary, MSA128, MSA128>, 817 IsCommutable; 818class ADDS_S_D_DESC : MSA_3R_DESC_BASE<"adds_s.d", int_mips_adds_s_d, 819 NoItinerary, MSA128, MSA128>, 820 IsCommutable; 821 822class ADDS_U_B_DESC : MSA_3R_DESC_BASE<"adds_u.b", int_mips_adds_u_b, 823 NoItinerary, MSA128, MSA128>, 824 IsCommutable; 825class ADDS_U_H_DESC : MSA_3R_DESC_BASE<"adds_u.h", int_mips_adds_u_h, 826 NoItinerary, MSA128, MSA128>, 827 IsCommutable; 828class ADDS_U_W_DESC : MSA_3R_DESC_BASE<"adds_u.w", int_mips_adds_u_w, 829 NoItinerary, MSA128, MSA128>, 830 IsCommutable; 831class ADDS_U_D_DESC : MSA_3R_DESC_BASE<"adds_u.d", int_mips_adds_u_d, 832 NoItinerary, MSA128, MSA128>, 833 IsCommutable; 834 835class ADDV_B_DESC : MSA_3R_DESC_BASE<"addv.b", int_mips_addv_b, NoItinerary, 836 MSA128, MSA128>, IsCommutable; 837class ADDV_H_DESC : MSA_3R_DESC_BASE<"addv.h", int_mips_addv_h, NoItinerary, 838 MSA128, MSA128>, IsCommutable; 839class ADDV_W_DESC : MSA_3R_DESC_BASE<"addv.w", int_mips_addv_w, NoItinerary, 840 MSA128, MSA128>, IsCommutable; 841class ADDV_D_DESC : MSA_3R_DESC_BASE<"addv.d", int_mips_addv_d, NoItinerary, 842 MSA128, MSA128>, IsCommutable; 843 844class ADDVI_B_DESC : MSA_I5_DESC_BASE<"addvi.b", int_mips_addvi_b, NoItinerary, 845 MSA128, MSA128>; 846class ADDVI_H_DESC : MSA_I5_DESC_BASE<"addvi.h", int_mips_addvi_h, NoItinerary, 847 MSA128, MSA128>; 848class ADDVI_W_DESC : MSA_I5_DESC_BASE<"addvi.w", int_mips_addvi_w, NoItinerary, 849 MSA128, MSA128>; 850class ADDVI_D_DESC : MSA_I5_DESC_BASE<"addvi.d", int_mips_addvi_d, NoItinerary, 851 MSA128, MSA128>; 852 853class ANDI_B_DESC : MSA_I8_DESC_BASE<"andi.b", int_mips_andi_b, NoItinerary, 854 MSA128, MSA128>; 855 856class ASUB_S_B_DESC : MSA_3R_DESC_BASE<"asub_s.b", int_mips_asub_s_b, 857 NoItinerary, MSA128, MSA128>; 858class ASUB_S_H_DESC : MSA_3R_DESC_BASE<"asub_s.h", int_mips_asub_s_h, 859 NoItinerary, MSA128, MSA128>; 860class ASUB_S_W_DESC : MSA_3R_DESC_BASE<"asub_s.w", int_mips_asub_s_w, 861 NoItinerary, MSA128, MSA128>; 862class ASUB_S_D_DESC : MSA_3R_DESC_BASE<"asub_s.d", int_mips_asub_s_d, 863 NoItinerary, MSA128, MSA128>; 864 865class ASUB_U_B_DESC : MSA_3R_DESC_BASE<"asub_u.b", int_mips_asub_u_b, 866 NoItinerary, MSA128, MSA128>; 867class ASUB_U_H_DESC : MSA_3R_DESC_BASE<"asub_u.h", int_mips_asub_u_h, 868 NoItinerary, MSA128, MSA128>; 869class ASUB_U_W_DESC : MSA_3R_DESC_BASE<"asub_u.w", int_mips_asub_u_w, 870 NoItinerary, MSA128, MSA128>; 871class ASUB_U_D_DESC : MSA_3R_DESC_BASE<"asub_u.d", int_mips_asub_u_d, 872 NoItinerary, MSA128, MSA128>; 873 874class AVE_S_B_DESC : MSA_3R_DESC_BASE<"ave_s.b", int_mips_ave_s_b, NoItinerary, 875 MSA128, MSA128>, IsCommutable; 876class AVE_S_H_DESC : MSA_3R_DESC_BASE<"ave_s.h", int_mips_ave_s_h, NoItinerary, 877 MSA128, MSA128>, IsCommutable; 878class AVE_S_W_DESC : MSA_3R_DESC_BASE<"ave_s.w", int_mips_ave_s_w, NoItinerary, 879 MSA128, MSA128>, IsCommutable; 880class AVE_S_D_DESC : MSA_3R_DESC_BASE<"ave_s.d", int_mips_ave_s_d, NoItinerary, 881 MSA128, MSA128>, IsCommutable; 882 883class AVE_U_B_DESC : MSA_3R_DESC_BASE<"ave_u.b", int_mips_ave_u_b, NoItinerary, 884 MSA128, MSA128>, IsCommutable; 885class AVE_U_H_DESC : MSA_3R_DESC_BASE<"ave_u.h", int_mips_ave_u_h, NoItinerary, 886 MSA128, MSA128>, IsCommutable; 887class AVE_U_W_DESC : MSA_3R_DESC_BASE<"ave_u.w", int_mips_ave_u_w, NoItinerary, 888 MSA128, MSA128>, IsCommutable; 889class AVE_U_D_DESC : MSA_3R_DESC_BASE<"ave_u.d", int_mips_ave_u_d, NoItinerary, 890 MSA128, MSA128>, IsCommutable; 891 892class AVER_S_B_DESC : MSA_3R_DESC_BASE<"aver_s.b", int_mips_aver_s_b, 893 NoItinerary, MSA128, MSA128>, 894 IsCommutable; 895class AVER_S_H_DESC : MSA_3R_DESC_BASE<"aver_s.h", int_mips_aver_s_h, 896 NoItinerary, MSA128, MSA128>, 897 IsCommutable; 898class AVER_S_W_DESC : MSA_3R_DESC_BASE<"aver_s.w", int_mips_aver_s_w, 899 NoItinerary, MSA128, MSA128>, 900 IsCommutable; 901class AVER_S_D_DESC : MSA_3R_DESC_BASE<"aver_s.d", int_mips_aver_s_d, 902 NoItinerary, MSA128, MSA128>, 903 IsCommutable; 904 905class AVER_U_B_DESC : MSA_3R_DESC_BASE<"aver_u.b", int_mips_aver_u_b, 906 NoItinerary, MSA128, MSA128>, 907 IsCommutable; 908class AVER_U_H_DESC : MSA_3R_DESC_BASE<"aver_u.h", int_mips_aver_u_h, 909 NoItinerary, MSA128, MSA128>, 910 IsCommutable; 911class AVER_U_W_DESC : MSA_3R_DESC_BASE<"aver_u.w", int_mips_aver_u_w, 912 NoItinerary, MSA128, MSA128>, 913 IsCommutable; 914class AVER_U_D_DESC : MSA_3R_DESC_BASE<"aver_u.d", int_mips_aver_u_d, 915 NoItinerary, MSA128, MSA128>, 916 IsCommutable; 917 918class BCLR_B_DESC : MSA_3R_DESC_BASE<"bclr.b", int_mips_bclr_b, NoItinerary, 919 MSA128, MSA128>; 920class BCLR_H_DESC : MSA_3R_DESC_BASE<"bclr.h", int_mips_bclr_h, NoItinerary, 921 MSA128, MSA128>; 922class BCLR_W_DESC : MSA_3R_DESC_BASE<"bclr.w", int_mips_bclr_w, NoItinerary, 923 MSA128, MSA128>; 924class BCLR_D_DESC : MSA_3R_DESC_BASE<"bclr.d", int_mips_bclr_d, NoItinerary, 925 MSA128, MSA128>; 926 927class BCLRI_B_DESC : MSA_BIT_B_DESC_BASE<"bclri.b", int_mips_bclri_b, 928 NoItinerary, MSA128, MSA128>; 929class BCLRI_H_DESC : MSA_BIT_H_DESC_BASE<"bclri.h", int_mips_bclri_h, 930 NoItinerary, MSA128, MSA128>; 931class BCLRI_W_DESC : MSA_BIT_W_DESC_BASE<"bclri.w", int_mips_bclri_w, 932 NoItinerary, MSA128, MSA128>; 933class BCLRI_D_DESC : MSA_BIT_D_DESC_BASE<"bclri.d", int_mips_bclri_d, 934 NoItinerary, MSA128, MSA128>; 935 936class BINSL_B_DESC : MSA_3R_DESC_BASE<"binsl.b", int_mips_binsl_b, NoItinerary, 937 MSA128, MSA128>; 938class BINSL_H_DESC : MSA_3R_DESC_BASE<"binsl.h", int_mips_binsl_h, NoItinerary, 939 MSA128, MSA128>; 940class BINSL_W_DESC : MSA_3R_DESC_BASE<"binsl.w", int_mips_binsl_w, NoItinerary, 941 MSA128, MSA128>; 942class BINSL_D_DESC : MSA_3R_DESC_BASE<"binsl.d", int_mips_binsl_d, NoItinerary, 943 MSA128, MSA128>; 944 945class BINSLI_B_DESC : MSA_BIT_B_DESC_BASE<"binsli.b", int_mips_binsli_b, 946 NoItinerary, MSA128, MSA128>; 947class BINSLI_H_DESC : MSA_BIT_H_DESC_BASE<"binsli.h", int_mips_binsli_h, 948 NoItinerary, MSA128, MSA128>; 949class BINSLI_W_DESC : MSA_BIT_W_DESC_BASE<"binsli.w", int_mips_binsli_w, 950 NoItinerary, MSA128, MSA128>; 951class BINSLI_D_DESC : MSA_BIT_D_DESC_BASE<"binsli.d", int_mips_binsli_d, 952 NoItinerary, MSA128, MSA128>; 953 954class BINSR_B_DESC : MSA_3R_DESC_BASE<"binsr.b", int_mips_binsr_b, NoItinerary, 955 MSA128, MSA128>; 956class BINSR_H_DESC : MSA_3R_DESC_BASE<"binsr.h", int_mips_binsr_h, NoItinerary, 957 MSA128, MSA128>; 958class BINSR_W_DESC : MSA_3R_DESC_BASE<"binsr.w", int_mips_binsr_w, NoItinerary, 959 MSA128, MSA128>; 960class BINSR_D_DESC : MSA_3R_DESC_BASE<"binsr.d", int_mips_binsr_d, NoItinerary, 961 MSA128, MSA128>; 962 963class BINSRI_B_DESC : MSA_BIT_B_DESC_BASE<"binsri.b", int_mips_binsri_b, 964 NoItinerary, MSA128, MSA128>; 965class BINSRI_H_DESC : MSA_BIT_H_DESC_BASE<"binsri.h", int_mips_binsri_h, 966 NoItinerary, MSA128, MSA128>; 967class BINSRI_W_DESC : MSA_BIT_W_DESC_BASE<"binsri.w", int_mips_binsri_w, 968 NoItinerary, MSA128, MSA128>; 969class BINSRI_D_DESC : MSA_BIT_D_DESC_BASE<"binsri.d", int_mips_binsri_d, 970 NoItinerary, MSA128, MSA128>; 971 972class BMNZI_B_DESC : MSA_I8_DESC_BASE<"bmnzi.b", int_mips_bmnzi_b, NoItinerary, 973 MSA128, MSA128>; 974 975class BMZI_B_DESC : MSA_I8_DESC_BASE<"bmzi.b", int_mips_bmzi_b, NoItinerary, 976 MSA128, MSA128>; 977 978class BNEG_B_DESC : MSA_3R_DESC_BASE<"bneg.b", int_mips_bneg_b, NoItinerary, 979 MSA128, MSA128>; 980class BNEG_H_DESC : MSA_3R_DESC_BASE<"bneg.h", int_mips_bneg_h, NoItinerary, 981 MSA128, MSA128>; 982class BNEG_W_DESC : MSA_3R_DESC_BASE<"bneg.w", int_mips_bneg_w, NoItinerary, 983 MSA128, MSA128>; 984class BNEG_D_DESC : MSA_3R_DESC_BASE<"bneg.d", int_mips_bneg_d, NoItinerary, 985 MSA128, MSA128>; 986 987class BNEGI_B_DESC : MSA_BIT_B_DESC_BASE<"bnegi.b", int_mips_bnegi_b, 988 NoItinerary, MSA128, MSA128>; 989class BNEGI_H_DESC : MSA_BIT_H_DESC_BASE<"bnegi.h", int_mips_bnegi_h, 990 NoItinerary, MSA128, MSA128>; 991class BNEGI_W_DESC : MSA_BIT_W_DESC_BASE<"bnegi.w", int_mips_bnegi_w, 992 NoItinerary, MSA128, MSA128>; 993class BNEGI_D_DESC : MSA_BIT_D_DESC_BASE<"bnegi.d", int_mips_bnegi_d, 994 NoItinerary, MSA128, MSA128>; 995 996class BSELI_B_DESC : MSA_I8_DESC_BASE<"bseli.b", int_mips_bseli_b, NoItinerary, 997 MSA128, MSA128>; 998 999class BSET_B_DESC : MSA_3R_DESC_BASE<"bset.b", int_mips_bset_b, NoItinerary, 1000 MSA128, MSA128>; 1001class BSET_H_DESC : MSA_3R_DESC_BASE<"bset.h", int_mips_bset_h, NoItinerary, 1002 MSA128, MSA128>; 1003class BSET_W_DESC : MSA_3R_DESC_BASE<"bset.w", int_mips_bset_w, NoItinerary, 1004 MSA128, MSA128>; 1005class BSET_D_DESC : MSA_3R_DESC_BASE<"bset.d", int_mips_bset_d, NoItinerary, 1006 MSA128, MSA128>; 1007 1008class BSETI_B_DESC : MSA_BIT_B_DESC_BASE<"bseti.b", int_mips_bseti_b, 1009 NoItinerary, MSA128, MSA128>; 1010class BSETI_H_DESC : MSA_BIT_H_DESC_BASE<"bseti.h", int_mips_bseti_h, 1011 NoItinerary, MSA128, MSA128>; 1012class BSETI_W_DESC : MSA_BIT_W_DESC_BASE<"bseti.w", int_mips_bseti_w, 1013 NoItinerary, MSA128, MSA128>; 1014class BSETI_D_DESC : MSA_BIT_D_DESC_BASE<"bseti.d", int_mips_bseti_d, 1015 NoItinerary, MSA128, MSA128>; 1016 1017class CEQ_B_DESC : MSA_3R_DESC_BASE<"ceq.b", int_mips_ceq_b, NoItinerary, 1018 MSA128, MSA128>, IsCommutable; 1019class CEQ_H_DESC : MSA_3R_DESC_BASE<"ceq.h", int_mips_ceq_h, NoItinerary, 1020 MSA128, MSA128>, IsCommutable; 1021class CEQ_W_DESC : MSA_3R_DESC_BASE<"ceq.w", int_mips_ceq_w, NoItinerary, 1022 MSA128, MSA128>, IsCommutable; 1023class CEQ_D_DESC : MSA_3R_DESC_BASE<"ceq.d", int_mips_ceq_d, NoItinerary, 1024 MSA128, MSA128>, IsCommutable; 1025 1026class CEQI_B_DESC : MSA_SI5_DESC_BASE<"ceqi.b", int_mips_ceqi_b, NoItinerary, 1027 MSA128, MSA128>; 1028class CEQI_H_DESC : MSA_SI5_DESC_BASE<"ceqi.h", int_mips_ceqi_h, NoItinerary, 1029 MSA128, MSA128>; 1030class CEQI_W_DESC : MSA_SI5_DESC_BASE<"ceqi.w", int_mips_ceqi_w, NoItinerary, 1031 MSA128, MSA128>; 1032class CEQI_D_DESC : MSA_SI5_DESC_BASE<"ceqi.d", int_mips_ceqi_d, NoItinerary, 1033 MSA128, MSA128>; 1034 1035class CLE_S_B_DESC : MSA_3R_DESC_BASE<"cle_s.b", int_mips_cle_s_b, NoItinerary, 1036 MSA128, MSA128>; 1037class CLE_S_H_DESC : MSA_3R_DESC_BASE<"cle_s.h", int_mips_cle_s_h, NoItinerary, 1038 MSA128, MSA128>; 1039class CLE_S_W_DESC : MSA_3R_DESC_BASE<"cle_s.w", int_mips_cle_s_w, NoItinerary, 1040 MSA128, MSA128>; 1041class CLE_S_D_DESC : MSA_3R_DESC_BASE<"cle_s.d", int_mips_cle_s_d, NoItinerary, 1042 MSA128, MSA128>; 1043 1044class CLE_U_B_DESC : MSA_3R_DESC_BASE<"cle_u.b", int_mips_cle_u_b, NoItinerary, 1045 MSA128, MSA128>; 1046class CLE_U_H_DESC : MSA_3R_DESC_BASE<"cle_u.h", int_mips_cle_u_h, NoItinerary, 1047 MSA128, MSA128>; 1048class CLE_U_W_DESC : MSA_3R_DESC_BASE<"cle_u.w", int_mips_cle_u_w, NoItinerary, 1049 MSA128, MSA128>; 1050class CLE_U_D_DESC : MSA_3R_DESC_BASE<"cle_u.d", int_mips_cle_u_d, NoItinerary, 1051 MSA128, MSA128>; 1052 1053class CLEI_S_B_DESC : MSA_SI5_DESC_BASE<"clei_s.b", int_mips_clei_s_b, 1054 NoItinerary, MSA128, MSA128>; 1055class CLEI_S_H_DESC : MSA_SI5_DESC_BASE<"clei_s.h", int_mips_clei_s_h, 1056 NoItinerary, MSA128, MSA128>; 1057class CLEI_S_W_DESC : MSA_SI5_DESC_BASE<"clei_s.w", int_mips_clei_s_w, 1058 NoItinerary, MSA128, MSA128>; 1059class CLEI_S_D_DESC : MSA_SI5_DESC_BASE<"clei_s.d", int_mips_clei_s_d, 1060 NoItinerary, MSA128, MSA128>; 1061 1062class CLEI_U_B_DESC : MSA_SI5_DESC_BASE<"clei_u.b", int_mips_clei_u_b, 1063 NoItinerary, MSA128, MSA128>; 1064class CLEI_U_H_DESC : MSA_SI5_DESC_BASE<"clei_u.h", int_mips_clei_u_h, 1065 NoItinerary, MSA128, MSA128>; 1066class CLEI_U_W_DESC : MSA_SI5_DESC_BASE<"clei_u.w", int_mips_clei_u_w, 1067 NoItinerary, MSA128, MSA128>; 1068class CLEI_U_D_DESC : MSA_SI5_DESC_BASE<"clei_u.d", int_mips_clei_u_d, 1069 NoItinerary, MSA128, MSA128>; 1070 1071class CLT_S_B_DESC : MSA_3R_DESC_BASE<"clt_s.b", int_mips_clt_s_b, NoItinerary, 1072 MSA128, MSA128>; 1073class CLT_S_H_DESC : MSA_3R_DESC_BASE<"clt_s.h", int_mips_clt_s_h, NoItinerary, 1074 MSA128, MSA128>; 1075class CLT_S_W_DESC : MSA_3R_DESC_BASE<"clt_s.w", int_mips_clt_s_w, NoItinerary, 1076 MSA128, MSA128>; 1077class CLT_S_D_DESC : MSA_3R_DESC_BASE<"clt_s.d", int_mips_clt_s_d, NoItinerary, 1078 MSA128, MSA128>; 1079 1080class CLT_U_B_DESC : MSA_3R_DESC_BASE<"clt_u.b", int_mips_clt_u_b, NoItinerary, 1081 MSA128, MSA128>; 1082class CLT_U_H_DESC : MSA_3R_DESC_BASE<"clt_u.h", int_mips_clt_u_h, NoItinerary, 1083 MSA128, MSA128>; 1084class CLT_U_W_DESC : MSA_3R_DESC_BASE<"clt_u.w", int_mips_clt_u_w, NoItinerary, 1085 MSA128, MSA128>; 1086class CLT_U_D_DESC : MSA_3R_DESC_BASE<"clt_u.d", int_mips_clt_u_d, NoItinerary, 1087 MSA128, MSA128>; 1088 1089class CLTI_S_B_DESC : MSA_SI5_DESC_BASE<"clti_s.b", int_mips_clti_s_b, 1090 NoItinerary, MSA128, MSA128>; 1091class CLTI_S_H_DESC : MSA_SI5_DESC_BASE<"clti_s.h", int_mips_clti_s_h, 1092 NoItinerary, MSA128, MSA128>; 1093class CLTI_S_W_DESC : MSA_SI5_DESC_BASE<"clti_s.w", int_mips_clti_s_w, 1094 NoItinerary, MSA128, MSA128>; 1095class CLTI_S_D_DESC : MSA_SI5_DESC_BASE<"clti_s.d", int_mips_clti_s_d, 1096 NoItinerary, MSA128, MSA128>; 1097 1098class CLTI_U_B_DESC : MSA_SI5_DESC_BASE<"clti_u.b", int_mips_clti_u_b, 1099 NoItinerary, MSA128, MSA128>; 1100class CLTI_U_H_DESC : MSA_SI5_DESC_BASE<"clti_u.h", int_mips_clti_u_h, 1101 NoItinerary, MSA128, MSA128>; 1102class CLTI_U_W_DESC : MSA_SI5_DESC_BASE<"clti_u.w", int_mips_clti_u_w, 1103 NoItinerary, MSA128, MSA128>; 1104class CLTI_U_D_DESC : MSA_SI5_DESC_BASE<"clti_u.d", int_mips_clti_u_d, 1105 NoItinerary, MSA128, MSA128>; 1106 1107class COPY_S_B_DESC : MSA_COPY_DESC_BASE<"copy_s.b", int_mips_copy_s_b, 1108 NoItinerary, GPR32, MSA128>; 1109class COPY_S_H_DESC : MSA_COPY_DESC_BASE<"copy_s.h", int_mips_copy_s_h, 1110 NoItinerary, GPR32, MSA128>; 1111class COPY_S_W_DESC : MSA_COPY_DESC_BASE<"copy_s.w", int_mips_copy_s_w, 1112 NoItinerary, GPR32, MSA128>; 1113 1114class COPY_U_B_DESC : MSA_COPY_DESC_BASE<"copy_u.b", int_mips_copy_u_b, 1115 NoItinerary, GPR32, MSA128>; 1116class COPY_U_H_DESC : MSA_COPY_DESC_BASE<"copy_u.h", int_mips_copy_u_h, 1117 NoItinerary, GPR32, MSA128>; 1118class COPY_U_W_DESC : MSA_COPY_DESC_BASE<"copy_u.w", int_mips_copy_u_w, 1119 NoItinerary, GPR32, MSA128>; 1120 1121class DIV_S_B_DESC : MSA_3R_DESC_BASE<"div_s.b", int_mips_div_s_b, NoItinerary, 1122 MSA128, MSA128>; 1123class DIV_S_H_DESC : MSA_3R_DESC_BASE<"div_s.h", int_mips_div_s_h, NoItinerary, 1124 MSA128, MSA128>; 1125class DIV_S_W_DESC : MSA_3R_DESC_BASE<"div_s.w", int_mips_div_s_w, NoItinerary, 1126 MSA128, MSA128>; 1127class DIV_S_D_DESC : MSA_3R_DESC_BASE<"div_s.d", int_mips_div_s_d, NoItinerary, 1128 MSA128, MSA128>; 1129 1130class DIV_U_B_DESC : MSA_3R_DESC_BASE<"div_u.b", int_mips_div_u_b, NoItinerary, 1131 MSA128, MSA128>; 1132class DIV_U_H_DESC : MSA_3R_DESC_BASE<"div_u.h", int_mips_div_u_h, NoItinerary, 1133 MSA128, MSA128>; 1134class DIV_U_W_DESC : MSA_3R_DESC_BASE<"div_u.w", int_mips_div_u_w, NoItinerary, 1135 MSA128, MSA128>; 1136class DIV_U_D_DESC : MSA_3R_DESC_BASE<"div_u.d", int_mips_div_u_d, NoItinerary, 1137 MSA128, MSA128>; 1138 1139class DOTP_S_B_DESC : MSA_3R_DESC_BASE<"dotp_s.b", int_mips_dotp_s_b, 1140 NoItinerary, MSA128, MSA128>, 1141 IsCommutable; 1142class DOTP_S_H_DESC : MSA_3R_DESC_BASE<"dotp_s.h", int_mips_dotp_s_h, 1143 NoItinerary, MSA128, MSA128>, 1144 IsCommutable; 1145class DOTP_S_W_DESC : MSA_3R_DESC_BASE<"dotp_s.w", int_mips_dotp_s_w, 1146 NoItinerary, MSA128, MSA128>, 1147 IsCommutable; 1148class DOTP_S_D_DESC : MSA_3R_DESC_BASE<"dotp_s.d", int_mips_dotp_s_d, 1149 NoItinerary, MSA128, MSA128>, 1150 IsCommutable; 1151 1152class DOTP_U_B_DESC : MSA_3R_DESC_BASE<"dotp_u.b", int_mips_dotp_u_b, 1153 NoItinerary, MSA128, MSA128>, 1154 IsCommutable; 1155class DOTP_U_H_DESC : MSA_3R_DESC_BASE<"dotp_u.h", int_mips_dotp_u_h, 1156 NoItinerary, MSA128, MSA128>, 1157 IsCommutable; 1158class DOTP_U_W_DESC : MSA_3R_DESC_BASE<"dotp_u.w", int_mips_dotp_u_w, 1159 NoItinerary, MSA128, MSA128>, 1160 IsCommutable; 1161class DOTP_U_D_DESC : MSA_3R_DESC_BASE<"dotp_u.d", int_mips_dotp_u_d, 1162 NoItinerary, MSA128, MSA128>, 1163 IsCommutable; 1164 1165class DPADD_S_H_DESC : MSA_3R_4R_DESC_BASE<"dpadd_s.h", int_mips_dpadd_s_h, 1166 NoItinerary, MSA128, MSA128>, 1167 IsCommutable; 1168class DPADD_S_W_DESC : MSA_3R_4R_DESC_BASE<"dpadd_s.w", int_mips_dpadd_s_w, 1169 NoItinerary, MSA128, MSA128>, 1170 IsCommutable; 1171class DPADD_S_D_DESC : MSA_3R_4R_DESC_BASE<"dpadd_s.d", int_mips_dpadd_s_d, 1172 NoItinerary, MSA128, MSA128>, 1173 IsCommutable; 1174 1175class DPADD_U_H_DESC : MSA_3R_4R_DESC_BASE<"dpadd_u.h", int_mips_dpadd_u_h, 1176 NoItinerary, MSA128, MSA128>, 1177 IsCommutable; 1178class DPADD_U_W_DESC : MSA_3R_4R_DESC_BASE<"dpadd_u.w", int_mips_dpadd_u_w, 1179 NoItinerary, MSA128, MSA128>, 1180 IsCommutable; 1181class DPADD_U_D_DESC : MSA_3R_4R_DESC_BASE<"dpadd_u.d", int_mips_dpadd_u_d, 1182 NoItinerary, MSA128, MSA128>, 1183 IsCommutable; 1184 1185class DPSUB_S_H_DESC : MSA_3R_4R_DESC_BASE<"dpsub_s.h", int_mips_dpsub_s_h, 1186 NoItinerary, MSA128, MSA128>; 1187class DPSUB_S_W_DESC : MSA_3R_4R_DESC_BASE<"dpsub_s.w", int_mips_dpsub_s_w, 1188 NoItinerary, MSA128, MSA128>; 1189class DPSUB_S_D_DESC : MSA_3R_4R_DESC_BASE<"dpsub_s.d", int_mips_dpsub_s_d, 1190 NoItinerary, MSA128, MSA128>; 1191 1192class DPSUB_U_H_DESC : MSA_3R_4R_DESC_BASE<"dpsub_u.h", int_mips_dpsub_u_h, 1193 NoItinerary, MSA128, MSA128>; 1194class DPSUB_U_W_DESC : MSA_3R_4R_DESC_BASE<"dpsub_u.w", int_mips_dpsub_u_w, 1195 NoItinerary, MSA128, MSA128>; 1196class DPSUB_U_D_DESC : MSA_3R_4R_DESC_BASE<"dpsub_u.d", int_mips_dpsub_u_d, 1197 NoItinerary, MSA128, MSA128>; 1198 1199class FADD_W_DESC : MSA_3RF_DESC_BASE<"fadd.w", int_mips_fadd_w, 1200 NoItinerary, MSA128, MSA128>, 1201 IsCommutable; 1202class FADD_D_DESC : MSA_3RF_DESC_BASE<"fadd.d", int_mips_fadd_d, 1203 NoItinerary, MSA128, MSA128>, 1204 IsCommutable; 1205 1206class FCEQ_W_DESC : MSA_3RF_DESC_BASE<"fceq.w", int_mips_fceq_w, 1207 NoItinerary, MSA128, MSA128>, 1208 IsCommutable; 1209class FCEQ_D_DESC : MSA_3RF_DESC_BASE<"fceq.d", int_mips_fceq_d, 1210 NoItinerary, MSA128, MSA128>, 1211 IsCommutable; 1212 1213class FCGE_W_DESC : MSA_3RF_DESC_BASE<"fcge.w", int_mips_fcge_w, 1214 NoItinerary, MSA128, MSA128>; 1215class FCGE_D_DESC : MSA_3RF_DESC_BASE<"fcge.d", int_mips_fcge_d, 1216 NoItinerary, MSA128, MSA128>; 1217 1218class FCGT_W_DESC : MSA_3RF_DESC_BASE<"fcgt.w", int_mips_fcgt_w, 1219 NoItinerary, MSA128, MSA128>; 1220class FCGT_D_DESC : MSA_3RF_DESC_BASE<"fcgt.d", int_mips_fcgt_d, 1221 NoItinerary, MSA128, MSA128>; 1222 1223class FCLASS_W_DESC : MSA_2RF_DESC_BASE<"fclass.w", int_mips_fclass_w, 1224 NoItinerary, MSA128, MSA128>; 1225class FCLASS_D_DESC : MSA_2RF_DESC_BASE<"fclass.d", int_mips_fclass_d, 1226 NoItinerary, MSA128, MSA128>; 1227 1228class FCLE_W_DESC : MSA_3RF_DESC_BASE<"fcle.w", int_mips_fcle_w, 1229 NoItinerary, MSA128, MSA128>; 1230class FCLE_D_DESC : MSA_3RF_DESC_BASE<"fcle.d", int_mips_fcle_d, 1231 NoItinerary, MSA128, MSA128>; 1232 1233class FCLT_W_DESC : MSA_3RF_DESC_BASE<"fclt.w", int_mips_fclt_w, 1234 NoItinerary, MSA128, MSA128>; 1235class FCLT_D_DESC : MSA_3RF_DESC_BASE<"fclt.d", int_mips_fclt_d, 1236 NoItinerary, MSA128, MSA128>; 1237 1238class FCNE_W_DESC : MSA_3RF_DESC_BASE<"fcne.w", int_mips_fcne_w, 1239 NoItinerary, MSA128, MSA128>, 1240 IsCommutable; 1241class FCNE_D_DESC : MSA_3RF_DESC_BASE<"fcne.d", int_mips_fcne_d, 1242 NoItinerary, MSA128, MSA128>, 1243 IsCommutable; 1244 1245class FCUN_W_DESC : MSA_3RF_DESC_BASE<"fcun.w", int_mips_fcun_w, 1246 NoItinerary, MSA128, MSA128>, 1247 IsCommutable; 1248class FCUN_D_DESC : MSA_3RF_DESC_BASE<"fcun.d", int_mips_fcun_d, 1249 NoItinerary, MSA128, MSA128>, 1250 IsCommutable; 1251 1252class FDIV_W_DESC : MSA_3RF_DESC_BASE<"fdiv.w", int_mips_fdiv_w, 1253 NoItinerary, MSA128, MSA128>; 1254class FDIV_D_DESC : MSA_3RF_DESC_BASE<"fdiv.d", int_mips_fdiv_d, 1255 NoItinerary, MSA128, MSA128>; 1256 1257class FEXDO_H_DESC : MSA_3RF_DESC_BASE<"fexdo.h", int_mips_fexdo_h, 1258 NoItinerary, MSA128, MSA128>; 1259class FEXDO_W_DESC : MSA_3RF_DESC_BASE<"fexdo.w", int_mips_fexdo_w, 1260 NoItinerary, MSA128, MSA128>; 1261 1262class FEXP2_W_DESC : MSA_3RF_DESC_BASE<"fexp2.w", int_mips_fexp2_w, 1263 NoItinerary, MSA128, MSA128>; 1264class FEXP2_D_DESC : MSA_3RF_DESC_BASE<"fexp2.d", int_mips_fexp2_d, 1265 NoItinerary, MSA128, MSA128>; 1266 1267class FEXUPL_W_DESC : MSA_2RF_DESC_BASE<"fexupl.w", int_mips_fexupl_w, 1268 NoItinerary, MSA128, MSA128>; 1269class FEXUPL_D_DESC : MSA_2RF_DESC_BASE<"fexupl.d", int_mips_fexupl_d, 1270 NoItinerary, MSA128, MSA128>; 1271 1272class FEXUPR_W_DESC : MSA_2RF_DESC_BASE<"fexupr.w", int_mips_fexupr_w, 1273 NoItinerary, MSA128, MSA128>; 1274class FEXUPR_D_DESC : MSA_2RF_DESC_BASE<"fexupr.d", int_mips_fexupr_d, 1275 NoItinerary, MSA128, MSA128>; 1276 1277class FFINT_S_W_DESC : MSA_2RF_DESC_BASE<"ffint_s.w", int_mips_ffint_s_w, 1278 NoItinerary, MSA128, MSA128>; 1279class FFINT_S_D_DESC : MSA_2RF_DESC_BASE<"ffint_s.d", int_mips_ffint_s_d, 1280 NoItinerary, MSA128, MSA128>; 1281 1282class FFINT_U_W_DESC : MSA_2RF_DESC_BASE<"ffint_u.w", int_mips_ffint_u_w, 1283 NoItinerary, MSA128, MSA128>; 1284class FFINT_U_D_DESC : MSA_2RF_DESC_BASE<"ffint_u.d", int_mips_ffint_u_d, 1285 NoItinerary, MSA128, MSA128>; 1286 1287class FFQL_W_DESC : MSA_2RF_DESC_BASE<"ffql.w", int_mips_ffql_w, 1288 NoItinerary, MSA128, MSA128>; 1289class FFQL_D_DESC : MSA_2RF_DESC_BASE<"ffql.d", int_mips_ffql_d, 1290 NoItinerary, MSA128, MSA128>; 1291 1292class FFQR_W_DESC : MSA_2RF_DESC_BASE<"ffqr.w", int_mips_ffqr_w, 1293 NoItinerary, MSA128, MSA128>; 1294class FFQR_D_DESC : MSA_2RF_DESC_BASE<"ffqr.d", int_mips_ffqr_d, 1295 NoItinerary, MSA128, MSA128>; 1296 1297class FILL_B_DESC : MSA_2R_DESC_BASE<"fill.b", int_mips_fill_b, 1298 NoItinerary, MSA128, GPR32>; 1299class FILL_H_DESC : MSA_2R_DESC_BASE<"fill.h", int_mips_fill_h, 1300 NoItinerary, MSA128, GPR32>; 1301class FILL_W_DESC : MSA_2R_DESC_BASE<"fill.w", int_mips_fill_w, 1302 NoItinerary, MSA128, GPR32>; 1303 1304class FLOG2_W_DESC : MSA_2RF_DESC_BASE<"flog2.w", int_mips_flog2_w, 1305 NoItinerary, MSA128, MSA128>; 1306class FLOG2_D_DESC : MSA_2RF_DESC_BASE<"flog2.d", int_mips_flog2_d, 1307 NoItinerary, MSA128, MSA128>; 1308 1309class FMADD_W_DESC : MSA_3RF_4RF_DESC_BASE<"fmadd.w", int_mips_fmadd_w, 1310 NoItinerary, MSA128, MSA128>; 1311class FMADD_D_DESC : MSA_3RF_4RF_DESC_BASE<"fmadd.d", int_mips_fmadd_d, 1312 NoItinerary, MSA128, MSA128>; 1313 1314class FMAX_W_DESC : MSA_3RF_DESC_BASE<"fmax.w", int_mips_fmax_w, 1315 NoItinerary, MSA128, MSA128>; 1316class FMAX_D_DESC : MSA_3RF_DESC_BASE<"fmax.d", int_mips_fmax_d, 1317 NoItinerary, MSA128, MSA128>; 1318 1319class FMAX_A_W_DESC : MSA_3RF_DESC_BASE<"fmax_a.w", int_mips_fmax_a_w, 1320 NoItinerary, MSA128, MSA128>; 1321class FMAX_A_D_DESC : MSA_3RF_DESC_BASE<"fmax_a.d", int_mips_fmax_a_d, 1322 NoItinerary, MSA128, MSA128>; 1323 1324class FMIN_W_DESC : MSA_3RF_DESC_BASE<"fmin.w", int_mips_fmin_w, 1325 NoItinerary, MSA128, MSA128>; 1326class FMIN_D_DESC : MSA_3RF_DESC_BASE<"fmin.d", int_mips_fmin_d, 1327 NoItinerary, MSA128, MSA128>; 1328 1329class FMIN_A_W_DESC : MSA_3RF_DESC_BASE<"fmin_a.w", int_mips_fmin_a_w, 1330 NoItinerary, MSA128, MSA128>; 1331class FMIN_A_D_DESC : MSA_3RF_DESC_BASE<"fmin_a.d", int_mips_fmin_a_d, 1332 NoItinerary, MSA128, MSA128>; 1333 1334class FMSUB_W_DESC : MSA_3RF_4RF_DESC_BASE<"fmsub.w", int_mips_fmsub_w, 1335 NoItinerary, MSA128, MSA128>; 1336class FMSUB_D_DESC : MSA_3RF_4RF_DESC_BASE<"fmsub.d", int_mips_fmsub_d, 1337 NoItinerary, MSA128, MSA128>; 1338 1339class FMUL_W_DESC : MSA_3RF_DESC_BASE<"fmul.w", int_mips_fmul_w, 1340 NoItinerary, MSA128, MSA128>; 1341class FMUL_D_DESC : MSA_3RF_DESC_BASE<"fmul.d", int_mips_fmul_d, 1342 NoItinerary, MSA128, MSA128>; 1343 1344class FRINT_W_DESC : MSA_2RF_DESC_BASE<"frint.w", int_mips_frint_w, 1345 NoItinerary, MSA128, MSA128>; 1346class FRINT_D_DESC : MSA_2RF_DESC_BASE<"frint.d", int_mips_frint_d, 1347 NoItinerary, MSA128, MSA128>; 1348 1349class FRCP_W_DESC : MSA_2RF_DESC_BASE<"frcp.w", int_mips_frcp_w, 1350 NoItinerary, MSA128, MSA128>; 1351class FRCP_D_DESC : MSA_2RF_DESC_BASE<"frcp.d", int_mips_frcp_d, 1352 NoItinerary, MSA128, MSA128>; 1353 1354class FRSQRT_W_DESC : MSA_2RF_DESC_BASE<"frsqrt.w", int_mips_frsqrt_w, 1355 NoItinerary, MSA128, MSA128>; 1356class FRSQRT_D_DESC : MSA_2RF_DESC_BASE<"frsqrt.d", int_mips_frsqrt_d, 1357 NoItinerary, MSA128, MSA128>; 1358 1359class FSEQ_W_DESC : MSA_3RF_DESC_BASE<"fseq.w", int_mips_fseq_w, 1360 NoItinerary, MSA128, MSA128>; 1361class FSEQ_D_DESC : MSA_3RF_DESC_BASE<"fseq.d", int_mips_fseq_d, 1362 NoItinerary, MSA128, MSA128>; 1363 1364class FSGE_W_DESC : MSA_3RF_DESC_BASE<"fsge.w", int_mips_fsge_w, 1365 NoItinerary, MSA128, MSA128>; 1366class FSGE_D_DESC : MSA_3RF_DESC_BASE<"fsge.d", int_mips_fsge_d, 1367 NoItinerary, MSA128, MSA128>; 1368 1369class FSGT_W_DESC : MSA_3RF_DESC_BASE<"fsgt.w", int_mips_fsgt_w, 1370 NoItinerary, MSA128, MSA128>; 1371class FSGT_D_DESC : MSA_3RF_DESC_BASE<"fsgt.d", int_mips_fsgt_d, 1372 NoItinerary, MSA128, MSA128>; 1373 1374class FSLE_W_DESC : MSA_3RF_DESC_BASE<"fsle.w", int_mips_fsle_w, 1375 NoItinerary, MSA128, MSA128>; 1376class FSLE_D_DESC : MSA_3RF_DESC_BASE<"fsle.d", int_mips_fsle_d, 1377 NoItinerary, MSA128, MSA128>; 1378 1379class FSLT_W_DESC : MSA_3RF_DESC_BASE<"fslt.w", int_mips_fslt_w, 1380 NoItinerary, MSA128, MSA128>; 1381class FSLT_D_DESC : MSA_3RF_DESC_BASE<"fslt.d", int_mips_fslt_d, 1382 NoItinerary, MSA128, MSA128>; 1383 1384class FSNE_W_DESC : MSA_3RF_DESC_BASE<"fsne.w", int_mips_fsne_w, 1385 NoItinerary, MSA128, MSA128>; 1386class FSNE_D_DESC : MSA_3RF_DESC_BASE<"fsne.d", int_mips_fsne_d, 1387 NoItinerary, MSA128, MSA128>; 1388 1389class FSQRT_W_DESC : MSA_2RF_DESC_BASE<"fsqrt.w", int_mips_fsqrt_w, 1390 NoItinerary, MSA128, MSA128>; 1391class FSQRT_D_DESC : MSA_2RF_DESC_BASE<"fsqrt.d", int_mips_fsqrt_d, 1392 NoItinerary, MSA128, MSA128>; 1393 1394class FSUB_W_DESC : MSA_3RF_DESC_BASE<"fsub.w", int_mips_fsub_w, 1395 NoItinerary, MSA128, MSA128>; 1396class FSUB_D_DESC : MSA_3RF_DESC_BASE<"fsub.d", int_mips_fsub_d, 1397 NoItinerary, MSA128, MSA128>; 1398 1399class FTINT_S_W_DESC : MSA_2RF_DESC_BASE<"ftint_s.w", int_mips_ftint_s_w, 1400 NoItinerary, MSA128, MSA128>; 1401class FTINT_S_D_DESC : MSA_2RF_DESC_BASE<"ftint_s.d", int_mips_ftint_s_d, 1402 NoItinerary, MSA128, MSA128>; 1403 1404class FTINT_U_W_DESC : MSA_2RF_DESC_BASE<"ftint_u.w", int_mips_ftint_u_w, 1405 NoItinerary, MSA128, MSA128>; 1406class FTINT_U_D_DESC : MSA_2RF_DESC_BASE<"ftint_u.d", int_mips_ftint_u_d, 1407 NoItinerary, MSA128, MSA128>; 1408 1409class FTQ_H_DESC : MSA_3RF_DESC_BASE<"ftq.h", int_mips_ftq_h, 1410 NoItinerary, MSA128, MSA128>; 1411class FTQ_W_DESC : MSA_3RF_DESC_BASE<"ftq.w", int_mips_ftq_w, 1412 NoItinerary, MSA128, MSA128>; 1413 1414class ILVEV_B_DESC : MSA_3R_DESC_BASE<"ilvev.b", int_mips_ilvev_b, NoItinerary, 1415 MSA128, MSA128>; 1416class ILVEV_H_DESC : MSA_3R_DESC_BASE<"ilvev.h", int_mips_ilvev_h, NoItinerary, 1417 MSA128, MSA128>; 1418class ILVEV_W_DESC : MSA_3R_DESC_BASE<"ilvev.w", int_mips_ilvev_w, NoItinerary, 1419 MSA128, MSA128>; 1420class ILVEV_D_DESC : MSA_3R_DESC_BASE<"ilvev.d", int_mips_ilvev_d, NoItinerary, 1421 MSA128, MSA128>; 1422 1423class ILVL_B_DESC : MSA_3R_DESC_BASE<"ilvl.b", int_mips_ilvl_b, NoItinerary, 1424 MSA128, MSA128>; 1425class ILVL_H_DESC : MSA_3R_DESC_BASE<"ilvl.h", int_mips_ilvl_h, NoItinerary, 1426 MSA128, MSA128>; 1427class ILVL_W_DESC : MSA_3R_DESC_BASE<"ilvl.w", int_mips_ilvl_w, NoItinerary, 1428 MSA128, MSA128>; 1429class ILVL_D_DESC : MSA_3R_DESC_BASE<"ilvl.d", int_mips_ilvl_d, NoItinerary, 1430 MSA128, MSA128>; 1431 1432class ILVOD_B_DESC : MSA_3R_DESC_BASE<"ilvod.b", int_mips_ilvod_b, NoItinerary, 1433 MSA128, MSA128>; 1434class ILVOD_H_DESC : MSA_3R_DESC_BASE<"ilvod.h", int_mips_ilvod_h, NoItinerary, 1435 MSA128, MSA128>; 1436class ILVOD_W_DESC : MSA_3R_DESC_BASE<"ilvod.w", int_mips_ilvod_w, NoItinerary, 1437 MSA128, MSA128>; 1438class ILVOD_D_DESC : MSA_3R_DESC_BASE<"ilvod.d", int_mips_ilvod_d, NoItinerary, 1439 MSA128, MSA128>; 1440 1441class ILVR_B_DESC : MSA_3R_DESC_BASE<"ilvr.b", int_mips_ilvr_b, NoItinerary, 1442 MSA128, MSA128>; 1443class ILVR_H_DESC : MSA_3R_DESC_BASE<"ilvr.h", int_mips_ilvr_h, NoItinerary, 1444 MSA128, MSA128>; 1445class ILVR_W_DESC : MSA_3R_DESC_BASE<"ilvr.w", int_mips_ilvr_w, NoItinerary, 1446 MSA128, MSA128>; 1447class ILVR_D_DESC : MSA_3R_DESC_BASE<"ilvr.d", int_mips_ilvr_d, NoItinerary, 1448 MSA128, MSA128>; 1449 1450class INSERT_B_DESC : MSA_INSERT_DESC_BASE<"insert.b", int_mips_insert_b, 1451 NoItinerary, MSA128, GPR32>; 1452class INSERT_H_DESC : MSA_INSERT_DESC_BASE<"insert.h", int_mips_insert_h, 1453 NoItinerary, MSA128, GPR32>; 1454class INSERT_W_DESC : MSA_INSERT_DESC_BASE<"insert.w", int_mips_insert_w, 1455 NoItinerary, MSA128, GPR32>; 1456 1457class LD_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 1458 ValueType TyNode, InstrItinClass itin, RegisterClass RCWD, 1459 Operand MemOpnd = mem, ComplexPattern Addr = addr> { 1460 dag OutOperandList = (outs RCWD:$wd); 1461 dag InOperandList = (ins MemOpnd:$addr); 1462 string AsmString = !strconcat(instr_asm, "\t$wd, $addr"); 1463 list<dag> Pattern = [(set RCWD:$wd, (TyNode (OpNode Addr:$addr)))]; 1464 InstrItinClass Itinerary = itin; 1465} 1466 1467class LD_B_DESC : LD_DESC_BASE<"ld.b", load, v16i8, NoItinerary, MSA128>; 1468class LD_H_DESC : LD_DESC_BASE<"ld.h", load, v8i16, NoItinerary, MSA128>; 1469class LD_W_DESC : LD_DESC_BASE<"ld.w", load, v4i32, NoItinerary, MSA128>; 1470class LD_D_DESC : LD_DESC_BASE<"ld.d", load, v2i64, NoItinerary, MSA128>; 1471 1472class LDI_B_DESC : MSA_I10_DESC_BASE<"ldi.b", int_mips_ldi_b, 1473 NoItinerary, MSA128>; 1474class LDI_H_DESC : MSA_I10_DESC_BASE<"ldi.h", int_mips_ldi_h, 1475 NoItinerary, MSA128>; 1476class LDI_W_DESC : MSA_I10_DESC_BASE<"ldi.w", int_mips_ldi_w, 1477 NoItinerary, MSA128>; 1478class LDI_D_DESC : MSA_I10_DESC_BASE<"ldi.d", int_mips_ldi_d, 1479 NoItinerary, MSA128>; 1480 1481class MADD_Q_H_DESC : MSA_3RF_4RF_DESC_BASE<"madd_q.h", int_mips_madd_q_h, 1482 NoItinerary, MSA128, MSA128>; 1483class MADD_Q_W_DESC : MSA_3RF_4RF_DESC_BASE<"madd_q.w", int_mips_madd_q_w, 1484 NoItinerary, MSA128, MSA128>; 1485 1486class MADDR_Q_H_DESC : MSA_3RF_4RF_DESC_BASE<"maddr_q.h", int_mips_maddr_q_h, 1487 NoItinerary, MSA128, MSA128>; 1488class MADDR_Q_W_DESC : MSA_3RF_4RF_DESC_BASE<"maddr_q.w", int_mips_maddr_q_w, 1489 NoItinerary, MSA128, MSA128>; 1490 1491class MADDV_B_DESC : MSA_3R_4R_DESC_BASE<"maddv.b", int_mips_maddv_b, 1492 NoItinerary, MSA128, MSA128>; 1493class MADDV_H_DESC : MSA_3R_4R_DESC_BASE<"maddv.h", int_mips_maddv_h, 1494 NoItinerary, MSA128, MSA128>; 1495class MADDV_W_DESC : MSA_3R_4R_DESC_BASE<"maddv.w", int_mips_maddv_w, 1496 NoItinerary, MSA128, MSA128>; 1497class MADDV_D_DESC : MSA_3R_4R_DESC_BASE<"maddv.d", int_mips_maddv_d, 1498 NoItinerary, MSA128, MSA128>; 1499 1500class MAX_A_B_DESC : MSA_3R_DESC_BASE<"max_a.b", int_mips_max_a_b, NoItinerary, 1501 MSA128, MSA128>; 1502class MAX_A_H_DESC : MSA_3R_DESC_BASE<"max_a.h", int_mips_max_a_h, NoItinerary, 1503 MSA128, MSA128>; 1504class MAX_A_W_DESC : MSA_3R_DESC_BASE<"max_a.w", int_mips_max_a_w, NoItinerary, 1505 MSA128, MSA128>; 1506class MAX_A_D_DESC : MSA_3R_DESC_BASE<"max_a.d", int_mips_max_a_d, NoItinerary, 1507 MSA128, MSA128>; 1508 1509class MAX_S_B_DESC : MSA_3R_DESC_BASE<"max_s.b", int_mips_max_s_b, NoItinerary, 1510 MSA128, MSA128>; 1511class MAX_S_H_DESC : MSA_3R_DESC_BASE<"max_s.h", int_mips_max_s_h, NoItinerary, 1512 MSA128, MSA128>; 1513class MAX_S_W_DESC : MSA_3R_DESC_BASE<"max_s.w", int_mips_max_s_w, NoItinerary, 1514 MSA128, MSA128>; 1515class MAX_S_D_DESC : MSA_3R_DESC_BASE<"max_s.d", int_mips_max_s_d, NoItinerary, 1516 MSA128, MSA128>; 1517 1518class MAX_U_B_DESC : MSA_3R_DESC_BASE<"max_u.b", int_mips_max_u_b, NoItinerary, 1519 MSA128, MSA128>; 1520class MAX_U_H_DESC : MSA_3R_DESC_BASE<"max_u.h", int_mips_max_u_h, NoItinerary, 1521 MSA128, MSA128>; 1522class MAX_U_W_DESC : MSA_3R_DESC_BASE<"max_u.w", int_mips_max_u_w, NoItinerary, 1523 MSA128, MSA128>; 1524class MAX_U_D_DESC : MSA_3R_DESC_BASE<"max_u.d", int_mips_max_u_d, NoItinerary, 1525 MSA128, MSA128>; 1526 1527class MAXI_S_B_DESC : MSA_I5_DESC_BASE<"maxi_s.b", int_mips_maxi_s_b, 1528 NoItinerary, MSA128, MSA128>; 1529class MAXI_S_H_DESC : MSA_I5_DESC_BASE<"maxi_s.h", int_mips_maxi_s_h, 1530 NoItinerary, MSA128, MSA128>; 1531class MAXI_S_W_DESC : MSA_I5_DESC_BASE<"maxi_s.w", int_mips_maxi_s_w, 1532 NoItinerary, MSA128, MSA128>; 1533class MAXI_S_D_DESC : MSA_I5_DESC_BASE<"maxi_s.d", int_mips_maxi_s_d, 1534 NoItinerary, MSA128, MSA128>; 1535 1536class MAXI_U_B_DESC : MSA_I5_DESC_BASE<"maxi_u.b", int_mips_maxi_u_b, 1537 NoItinerary, MSA128, MSA128>; 1538class MAXI_U_H_DESC : MSA_I5_DESC_BASE<"maxi_u.h", int_mips_maxi_u_h, 1539 NoItinerary, MSA128, MSA128>; 1540class MAXI_U_W_DESC : MSA_I5_DESC_BASE<"maxi_u.w", int_mips_maxi_u_w, 1541 NoItinerary, MSA128, MSA128>; 1542class MAXI_U_D_DESC : MSA_I5_DESC_BASE<"maxi_u.d", int_mips_maxi_u_d, 1543 NoItinerary, MSA128, MSA128>; 1544 1545class MIN_A_B_DESC : MSA_3R_DESC_BASE<"min_a.b", int_mips_min_a_b, NoItinerary, 1546 MSA128, MSA128>; 1547class MIN_A_H_DESC : MSA_3R_DESC_BASE<"min_a.h", int_mips_min_a_h, NoItinerary, 1548 MSA128, MSA128>; 1549class MIN_A_W_DESC : MSA_3R_DESC_BASE<"min_a.w", int_mips_min_a_w, NoItinerary, 1550 MSA128, MSA128>; 1551class MIN_A_D_DESC : MSA_3R_DESC_BASE<"min_a.d", int_mips_min_a_d, NoItinerary, 1552 MSA128, MSA128>; 1553 1554class MIN_S_B_DESC : MSA_3R_DESC_BASE<"min_s.b", int_mips_min_s_b, NoItinerary, 1555 MSA128, MSA128>; 1556class MIN_S_H_DESC : MSA_3R_DESC_BASE<"min_s.h", int_mips_min_s_h, NoItinerary, 1557 MSA128, MSA128>; 1558class MIN_S_W_DESC : MSA_3R_DESC_BASE<"min_s.w", int_mips_min_s_w, NoItinerary, 1559 MSA128, MSA128>; 1560class MIN_S_D_DESC : MSA_3R_DESC_BASE<"min_s.d", int_mips_min_s_d, NoItinerary, 1561 MSA128, MSA128>; 1562 1563class MIN_U_B_DESC : MSA_3R_DESC_BASE<"min_u.b", int_mips_min_u_b, NoItinerary, 1564 MSA128, MSA128>; 1565class MIN_U_H_DESC : MSA_3R_DESC_BASE<"min_u.h", int_mips_min_u_h, NoItinerary, 1566 MSA128, MSA128>; 1567class MIN_U_W_DESC : MSA_3R_DESC_BASE<"min_u.w", int_mips_min_u_w, NoItinerary, 1568 MSA128, MSA128>; 1569class MIN_U_D_DESC : MSA_3R_DESC_BASE<"min_u.d", int_mips_min_u_d, NoItinerary, 1570 MSA128, MSA128>; 1571 1572class MINI_S_B_DESC : MSA_I5_DESC_BASE<"mini_s.b", int_mips_mini_s_b, 1573 NoItinerary, MSA128, MSA128>; 1574class MINI_S_H_DESC : MSA_I5_DESC_BASE<"mini_s.h", int_mips_mini_s_h, 1575 NoItinerary, MSA128, MSA128>; 1576class MINI_S_W_DESC : MSA_I5_DESC_BASE<"mini_s.w", int_mips_mini_s_w, 1577 NoItinerary, MSA128, MSA128>; 1578class MINI_S_D_DESC : MSA_I5_DESC_BASE<"mini_s.d", int_mips_mini_s_d, 1579 NoItinerary, MSA128, MSA128>; 1580 1581class MINI_U_B_DESC : MSA_I5_DESC_BASE<"mini_u.b", int_mips_mini_u_b, 1582 NoItinerary, MSA128, MSA128>; 1583class MINI_U_H_DESC : MSA_I5_DESC_BASE<"mini_u.h", int_mips_mini_u_h, 1584 NoItinerary, MSA128, MSA128>; 1585class MINI_U_W_DESC : MSA_I5_DESC_BASE<"mini_u.w", int_mips_mini_u_w, 1586 NoItinerary, MSA128, MSA128>; 1587class MINI_U_D_DESC : MSA_I5_DESC_BASE<"mini_u.d", int_mips_mini_u_d, 1588 NoItinerary, MSA128, MSA128>; 1589 1590class MOD_S_B_DESC : MSA_3R_DESC_BASE<"mod_s.b", int_mips_mod_s_b, NoItinerary, 1591 MSA128, MSA128>; 1592class MOD_S_H_DESC : MSA_3R_DESC_BASE<"mod_s.h", int_mips_mod_s_h, NoItinerary, 1593 MSA128, MSA128>; 1594class MOD_S_W_DESC : MSA_3R_DESC_BASE<"mod_s.w", int_mips_mod_s_w, NoItinerary, 1595 MSA128, MSA128>; 1596class MOD_S_D_DESC : MSA_3R_DESC_BASE<"mod_s.d", int_mips_mod_s_d, NoItinerary, 1597 MSA128, MSA128>; 1598 1599class MOD_U_B_DESC : MSA_3R_DESC_BASE<"mod_u.b", int_mips_mod_u_b, NoItinerary, 1600 MSA128, MSA128>; 1601class MOD_U_H_DESC : MSA_3R_DESC_BASE<"mod_u.h", int_mips_mod_u_h, NoItinerary, 1602 MSA128, MSA128>; 1603class MOD_U_W_DESC : MSA_3R_DESC_BASE<"mod_u.w", int_mips_mod_u_w, NoItinerary, 1604 MSA128, MSA128>; 1605class MOD_U_D_DESC : MSA_3R_DESC_BASE<"mod_u.d", int_mips_mod_u_d, NoItinerary, 1606 MSA128, MSA128>; 1607 1608class MSUB_Q_H_DESC : MSA_3RF_4RF_DESC_BASE<"msub_q.h", int_mips_msub_q_h, 1609 NoItinerary, MSA128, MSA128>; 1610class MSUB_Q_W_DESC : MSA_3RF_4RF_DESC_BASE<"msub_q.w", int_mips_msub_q_w, 1611 NoItinerary, MSA128, MSA128>; 1612 1613class MSUBR_Q_H_DESC : MSA_3RF_4RF_DESC_BASE<"msubr_q.h", int_mips_msubr_q_h, 1614 NoItinerary, MSA128, MSA128>; 1615class MSUBR_Q_W_DESC : MSA_3RF_4RF_DESC_BASE<"msubr_q.w", int_mips_msubr_q_w, 1616 NoItinerary, MSA128, MSA128>; 1617 1618class MSUBV_B_DESC : MSA_3R_4R_DESC_BASE<"msubv.b", int_mips_msubv_b, 1619 NoItinerary, MSA128, MSA128>; 1620class MSUBV_H_DESC : MSA_3R_4R_DESC_BASE<"msubv.h", int_mips_msubv_h, 1621 NoItinerary, MSA128, MSA128>; 1622class MSUBV_W_DESC : MSA_3R_4R_DESC_BASE<"msubv.w", int_mips_msubv_w, 1623 NoItinerary, MSA128, MSA128>; 1624class MSUBV_D_DESC : MSA_3R_4R_DESC_BASE<"msubv.d", int_mips_msubv_d, 1625 NoItinerary, MSA128, MSA128>; 1626 1627class MUL_Q_H_DESC : MSA_3RF_DESC_BASE<"mul_q.h", int_mips_mul_q_h, 1628 NoItinerary, MSA128, MSA128>; 1629class MUL_Q_W_DESC : MSA_3RF_DESC_BASE<"mul_q.w", int_mips_mul_q_w, 1630 NoItinerary, MSA128, MSA128>; 1631 1632class MULR_Q_H_DESC : MSA_3RF_DESC_BASE<"mulr_q.h", int_mips_mulr_q_h, 1633 NoItinerary, MSA128, MSA128>; 1634class MULR_Q_W_DESC : MSA_3RF_DESC_BASE<"mulr_q.w", int_mips_mulr_q_w, 1635 NoItinerary, MSA128, MSA128>; 1636 1637class MULV_B_DESC : MSA_3R_DESC_BASE<"mulv.b", int_mips_mulv_b, 1638 NoItinerary, MSA128, MSA128>; 1639class MULV_H_DESC : MSA_3R_DESC_BASE<"mulv.h", int_mips_mulv_h, 1640 NoItinerary, MSA128, MSA128>; 1641class MULV_W_DESC : MSA_3R_DESC_BASE<"mulv.w", int_mips_mulv_w, 1642 NoItinerary, MSA128, MSA128>; 1643class MULV_D_DESC : MSA_3R_DESC_BASE<"mulv.d", int_mips_mulv_d, 1644 NoItinerary, MSA128, MSA128>; 1645 1646class NLOC_B_DESC : MSA_2R_DESC_BASE<"nloc.b", int_mips_nloc_b, 1647 NoItinerary, MSA128, MSA128>; 1648class NLOC_H_DESC : MSA_2R_DESC_BASE<"nloc.h", int_mips_nloc_h, 1649 NoItinerary, MSA128, MSA128>; 1650class NLOC_W_DESC : MSA_2R_DESC_BASE<"nloc.w", int_mips_nloc_w, 1651 NoItinerary, MSA128, MSA128>; 1652class NLOC_D_DESC : MSA_2R_DESC_BASE<"nloc.d", int_mips_nloc_d, 1653 NoItinerary, MSA128, MSA128>; 1654 1655class NLZC_B_DESC : MSA_2R_DESC_BASE<"nlzc.b", int_mips_nlzc_b, 1656 NoItinerary, MSA128, MSA128>; 1657class NLZC_H_DESC : MSA_2R_DESC_BASE<"nlzc.h", int_mips_nlzc_h, 1658 NoItinerary, MSA128, MSA128>; 1659class NLZC_W_DESC : MSA_2R_DESC_BASE<"nlzc.w", int_mips_nlzc_w, 1660 NoItinerary, MSA128, MSA128>; 1661class NLZC_D_DESC : MSA_2R_DESC_BASE<"nlzc.d", int_mips_nlzc_d, 1662 NoItinerary, MSA128, MSA128>; 1663 1664class NORI_B_DESC : MSA_I8_DESC_BASE<"nori.b", int_mips_nori_b, NoItinerary, 1665 MSA128, MSA128>; 1666 1667class ORI_B_DESC : MSA_I8_DESC_BASE<"ori.b", int_mips_ori_b, NoItinerary, 1668 MSA128, MSA128>; 1669 1670class PCKEV_B_DESC : MSA_3R_DESC_BASE<"pckev.b", int_mips_pckev_b, NoItinerary, 1671 MSA128, MSA128>; 1672class PCKEV_H_DESC : MSA_3R_DESC_BASE<"pckev.h", int_mips_pckev_h, NoItinerary, 1673 MSA128, MSA128>; 1674class PCKEV_W_DESC : MSA_3R_DESC_BASE<"pckev.w", int_mips_pckev_w, NoItinerary, 1675 MSA128, MSA128>; 1676class PCKEV_D_DESC : MSA_3R_DESC_BASE<"pckev.d", int_mips_pckev_d, NoItinerary, 1677 MSA128, MSA128>; 1678 1679class PCKOD_B_DESC : MSA_3R_DESC_BASE<"pckod.b", int_mips_pckod_b, NoItinerary, 1680 MSA128, MSA128>; 1681class PCKOD_H_DESC : MSA_3R_DESC_BASE<"pckod.h", int_mips_pckod_h, NoItinerary, 1682 MSA128, MSA128>; 1683class PCKOD_W_DESC : MSA_3R_DESC_BASE<"pckod.w", int_mips_pckod_w, NoItinerary, 1684 MSA128, MSA128>; 1685class PCKOD_D_DESC : MSA_3R_DESC_BASE<"pckod.d", int_mips_pckod_d, NoItinerary, 1686 MSA128, MSA128>; 1687 1688class PCNT_B_DESC : MSA_2R_DESC_BASE<"pcnt.b", int_mips_pcnt_b, 1689 NoItinerary, MSA128, MSA128>; 1690class PCNT_H_DESC : MSA_2R_DESC_BASE<"pcnt.h", int_mips_pcnt_h, 1691 NoItinerary, MSA128, MSA128>; 1692class PCNT_W_DESC : MSA_2R_DESC_BASE<"pcnt.w", int_mips_pcnt_w, 1693 NoItinerary, MSA128, MSA128>; 1694class PCNT_D_DESC : MSA_2R_DESC_BASE<"pcnt.d", int_mips_pcnt_d, 1695 NoItinerary, MSA128, MSA128>; 1696 1697class SAT_S_B_DESC : MSA_BIT_B_DESC_BASE<"sat_s.b", int_mips_sat_s_b, 1698 NoItinerary, MSA128, MSA128>; 1699class SAT_S_H_DESC : MSA_BIT_H_DESC_BASE<"sat_s.h", int_mips_sat_s_h, 1700 NoItinerary, MSA128, MSA128>; 1701class SAT_S_W_DESC : MSA_BIT_W_DESC_BASE<"sat_s.w", int_mips_sat_s_w, 1702 NoItinerary, MSA128, MSA128>; 1703class SAT_S_D_DESC : MSA_BIT_D_DESC_BASE<"sat_s.d", int_mips_sat_s_d, 1704 NoItinerary, MSA128, MSA128>; 1705 1706class SAT_U_B_DESC : MSA_BIT_B_DESC_BASE<"sat_u.b", int_mips_sat_u_b, 1707 NoItinerary, MSA128, MSA128>; 1708class SAT_U_H_DESC : MSA_BIT_H_DESC_BASE<"sat_u.h", int_mips_sat_u_h, 1709 NoItinerary, MSA128, MSA128>; 1710class SAT_U_W_DESC : MSA_BIT_W_DESC_BASE<"sat_u.w", int_mips_sat_u_w, 1711 NoItinerary, MSA128, MSA128>; 1712class SAT_U_D_DESC : MSA_BIT_D_DESC_BASE<"sat_u.d", int_mips_sat_u_d, 1713 NoItinerary, MSA128, MSA128>; 1714 1715class SHF_B_DESC : MSA_I8_DESC_BASE<"shf.b", int_mips_shf_b, NoItinerary, 1716 MSA128, MSA128>; 1717class SHF_H_DESC : MSA_I8_DESC_BASE<"shf.h", int_mips_shf_h, NoItinerary, 1718 MSA128, MSA128>; 1719class SHF_W_DESC : MSA_I8_DESC_BASE<"shf.w", int_mips_shf_w, NoItinerary, 1720 MSA128, MSA128>; 1721 1722class SLD_B_DESC : MSA_3R_DESC_BASE<"sld.b", int_mips_sld_b, NoItinerary, 1723 MSA128, MSA128>; 1724class SLD_H_DESC : MSA_3R_DESC_BASE<"sld.h", int_mips_sld_h, NoItinerary, 1725 MSA128, MSA128>; 1726class SLD_W_DESC : MSA_3R_DESC_BASE<"sld.w", int_mips_sld_w, NoItinerary, 1727 MSA128, MSA128>; 1728class SLD_D_DESC : MSA_3R_DESC_BASE<"sld.d", int_mips_sld_d, NoItinerary, 1729 MSA128, MSA128>; 1730 1731class SLDI_B_DESC : MSA_BIT_B_DESC_BASE<"sldi.b", int_mips_sldi_b, 1732 NoItinerary, MSA128, MSA128>; 1733class SLDI_H_DESC : MSA_BIT_H_DESC_BASE<"sldi.h", int_mips_sldi_h, 1734 NoItinerary, MSA128, MSA128>; 1735class SLDI_W_DESC : MSA_BIT_W_DESC_BASE<"sldi.w", int_mips_sldi_w, 1736 NoItinerary, MSA128, MSA128>; 1737class SLDI_D_DESC : MSA_BIT_D_DESC_BASE<"sldi.d", int_mips_sldi_d, 1738 NoItinerary, MSA128, MSA128>; 1739 1740class SLL_B_DESC : MSA_3R_DESC_BASE<"sll.b", int_mips_sll_b, NoItinerary, 1741 MSA128, MSA128>; 1742class SLL_H_DESC : MSA_3R_DESC_BASE<"sll.h", int_mips_sll_h, NoItinerary, 1743 MSA128, MSA128>; 1744class SLL_W_DESC : MSA_3R_DESC_BASE<"sll.w", int_mips_sll_w, NoItinerary, 1745 MSA128, MSA128>; 1746class SLL_D_DESC : MSA_3R_DESC_BASE<"sll.d", int_mips_sll_d, NoItinerary, 1747 MSA128, MSA128>; 1748 1749class SLLI_B_DESC : MSA_BIT_B_DESC_BASE<"slli.b", int_mips_slli_b, 1750 NoItinerary, MSA128, MSA128>; 1751class SLLI_H_DESC : MSA_BIT_H_DESC_BASE<"slli.h", int_mips_slli_h, 1752 NoItinerary, MSA128, MSA128>; 1753class SLLI_W_DESC : MSA_BIT_W_DESC_BASE<"slli.w", int_mips_slli_w, 1754 NoItinerary, MSA128, MSA128>; 1755class SLLI_D_DESC : MSA_BIT_D_DESC_BASE<"slli.d", int_mips_slli_d, 1756 NoItinerary, MSA128, MSA128>; 1757 1758class SPLAT_B_DESC : MSA_3R_DESC_BASE<"splat.b", int_mips_splat_b, NoItinerary, 1759 MSA128, MSA128, GPR32>; 1760class SPLAT_H_DESC : MSA_3R_DESC_BASE<"splat.h", int_mips_splat_h, NoItinerary, 1761 MSA128, MSA128, GPR32>; 1762class SPLAT_W_DESC : MSA_3R_DESC_BASE<"splat.w", int_mips_splat_w, NoItinerary, 1763 MSA128, MSA128, GPR32>; 1764class SPLAT_D_DESC : MSA_3R_DESC_BASE<"splat.d", int_mips_splat_d, NoItinerary, 1765 MSA128, MSA128, GPR32>; 1766 1767class SPLATI_B_DESC : MSA_BIT_B_DESC_BASE<"splati.b", int_mips_splati_b, 1768 NoItinerary, MSA128, MSA128>; 1769class SPLATI_H_DESC : MSA_BIT_H_DESC_BASE<"splati.h", int_mips_splati_h, 1770 NoItinerary, MSA128, MSA128>; 1771class SPLATI_W_DESC : MSA_BIT_W_DESC_BASE<"splati.w", int_mips_splati_w, 1772 NoItinerary, MSA128, MSA128>; 1773class SPLATI_D_DESC : MSA_BIT_D_DESC_BASE<"splati.d", int_mips_splati_d, 1774 NoItinerary, MSA128, MSA128>; 1775 1776class SRA_B_DESC : MSA_3R_DESC_BASE<"sra.b", int_mips_sra_b, NoItinerary, 1777 MSA128, MSA128>; 1778class SRA_H_DESC : MSA_3R_DESC_BASE<"sra.h", int_mips_sra_h, NoItinerary, 1779 MSA128, MSA128>; 1780class SRA_W_DESC : MSA_3R_DESC_BASE<"sra.w", int_mips_sra_w, NoItinerary, 1781 MSA128, MSA128>; 1782class SRA_D_DESC : MSA_3R_DESC_BASE<"sra.d", int_mips_sra_d, NoItinerary, 1783 MSA128, MSA128>; 1784 1785class SRAI_B_DESC : MSA_BIT_B_DESC_BASE<"srai.b", int_mips_srai_b, 1786 NoItinerary, MSA128, MSA128>; 1787class SRAI_H_DESC : MSA_BIT_H_DESC_BASE<"srai.h", int_mips_srai_h, 1788 NoItinerary, MSA128, MSA128>; 1789class SRAI_W_DESC : MSA_BIT_W_DESC_BASE<"srai.w", int_mips_srai_w, 1790 NoItinerary, MSA128, MSA128>; 1791class SRAI_D_DESC : MSA_BIT_D_DESC_BASE<"srai.d", int_mips_srai_d, 1792 NoItinerary, MSA128, MSA128>; 1793 1794class SRL_B_DESC : MSA_3R_DESC_BASE<"srl.b", int_mips_srl_b, NoItinerary, 1795 MSA128, MSA128>; 1796class SRL_H_DESC : MSA_3R_DESC_BASE<"srl.h", int_mips_srl_h, NoItinerary, 1797 MSA128, MSA128>; 1798class SRL_W_DESC : MSA_3R_DESC_BASE<"srl.w", int_mips_srl_w, NoItinerary, 1799 MSA128, MSA128>; 1800class SRL_D_DESC : MSA_3R_DESC_BASE<"srl.d", int_mips_srl_d, NoItinerary, 1801 MSA128, MSA128>; 1802 1803class SRLI_B_DESC : MSA_BIT_B_DESC_BASE<"srli.b", int_mips_srli_b, 1804 NoItinerary, MSA128, MSA128>; 1805class SRLI_H_DESC : MSA_BIT_H_DESC_BASE<"srli.h", int_mips_srli_h, 1806 NoItinerary, MSA128, MSA128>; 1807class SRLI_W_DESC : MSA_BIT_W_DESC_BASE<"srli.w", int_mips_srli_w, 1808 NoItinerary, MSA128, MSA128>; 1809class SRLI_D_DESC : MSA_BIT_D_DESC_BASE<"srli.d", int_mips_srli_d, 1810 NoItinerary, MSA128, MSA128>; 1811 1812class ST_DESC_BASE<string instr_asm, SDPatternOperator OpNode, 1813 ValueType TyNode, InstrItinClass itin, RegisterClass RCWD, 1814 Operand MemOpnd = mem, ComplexPattern Addr = addr> { 1815 dag OutOperandList = (outs); 1816 dag InOperandList = (ins RCWD:$wd, MemOpnd:$addr); 1817 string AsmString = !strconcat(instr_asm, "\t$wd, $addr"); 1818 list<dag> Pattern = [(OpNode (TyNode RCWD:$wd), Addr:$addr)]; 1819 InstrItinClass Itinerary = itin; 1820} 1821 1822// Load/Store 1823class ST_B_DESC : ST_DESC_BASE<"st.b", store, v16i8, NoItinerary, MSA128>; 1824class ST_H_DESC : ST_DESC_BASE<"st.h", store, v8i16, NoItinerary, MSA128>; 1825class ST_W_DESC : ST_DESC_BASE<"st.w", store, v4i32, NoItinerary, MSA128>; 1826class ST_D_DESC : ST_DESC_BASE<"st.d", store, v2i64, NoItinerary, MSA128>; 1827 1828class SUBS_S_B_DESC : MSA_3R_DESC_BASE<"subs_s.b", int_mips_subs_s_b, 1829 NoItinerary, MSA128, MSA128>; 1830class SUBS_S_H_DESC : MSA_3R_DESC_BASE<"subs_s.h", int_mips_subs_s_h, 1831 NoItinerary, MSA128, MSA128>; 1832class SUBS_S_W_DESC : MSA_3R_DESC_BASE<"subs_s.w", int_mips_subs_s_w, 1833 NoItinerary, MSA128, MSA128>; 1834class SUBS_S_D_DESC : MSA_3R_DESC_BASE<"subs_s.d", int_mips_subs_s_d, 1835 NoItinerary, MSA128, MSA128>; 1836 1837class SUBS_U_B_DESC : MSA_3R_DESC_BASE<"subs_u.b", int_mips_subs_u_b, 1838 NoItinerary, MSA128, MSA128>; 1839class SUBS_U_H_DESC : MSA_3R_DESC_BASE<"subs_u.h", int_mips_subs_u_h, 1840 NoItinerary, MSA128, MSA128>; 1841class SUBS_U_W_DESC : MSA_3R_DESC_BASE<"subs_u.w", int_mips_subs_u_w, 1842 NoItinerary, MSA128, MSA128>; 1843class SUBS_U_D_DESC : MSA_3R_DESC_BASE<"subs_u.d", int_mips_subs_u_d, 1844 NoItinerary, MSA128, MSA128>; 1845 1846class SUBSUS_U_B_DESC : MSA_3R_DESC_BASE<"subsus_u.b", int_mips_subsus_u_b, 1847 NoItinerary, MSA128, MSA128>; 1848class SUBSUS_U_H_DESC : MSA_3R_DESC_BASE<"subsus_u.h", int_mips_subsus_u_h, 1849 NoItinerary, MSA128, MSA128>; 1850class SUBSUS_U_W_DESC : MSA_3R_DESC_BASE<"subsus_u.w", int_mips_subsus_u_w, 1851 NoItinerary, MSA128, MSA128>; 1852class SUBSUS_U_D_DESC : MSA_3R_DESC_BASE<"subsus_u.d", int_mips_subsus_u_d, 1853 NoItinerary, MSA128, MSA128>; 1854 1855class SUBSUU_S_B_DESC : MSA_3R_DESC_BASE<"subsuu_s.b", int_mips_subsuu_s_b, 1856 NoItinerary, MSA128, MSA128>; 1857class SUBSUU_S_H_DESC : MSA_3R_DESC_BASE<"subsuu_s.h", int_mips_subsuu_s_h, 1858 NoItinerary, MSA128, MSA128>; 1859class SUBSUU_S_W_DESC : MSA_3R_DESC_BASE<"subsuu_s.w", int_mips_subsuu_s_w, 1860 NoItinerary, MSA128, MSA128>; 1861class SUBSUU_S_D_DESC : MSA_3R_DESC_BASE<"subsuu_s.d", int_mips_subsuu_s_d, 1862 NoItinerary, MSA128, MSA128>; 1863 1864class SUBV_B_DESC : MSA_3R_DESC_BASE<"subv.b", int_mips_subv_b, 1865 NoItinerary, MSA128, MSA128>; 1866class SUBV_H_DESC : MSA_3R_DESC_BASE<"subv.h", int_mips_subv_h, 1867 NoItinerary, MSA128, MSA128>; 1868class SUBV_W_DESC : MSA_3R_DESC_BASE<"subv.w", int_mips_subv_w, 1869 NoItinerary, MSA128, MSA128>; 1870class SUBV_D_DESC : MSA_3R_DESC_BASE<"subv.d", int_mips_subv_d, 1871 NoItinerary, MSA128, MSA128>; 1872 1873class SUBVI_B_DESC : MSA_I5_DESC_BASE<"subvi.b", int_mips_subvi_b, NoItinerary, 1874 MSA128, MSA128>; 1875class SUBVI_H_DESC : MSA_I5_DESC_BASE<"subvi.h", int_mips_subvi_h, NoItinerary, 1876 MSA128, MSA128>; 1877class SUBVI_W_DESC : MSA_I5_DESC_BASE<"subvi.w", int_mips_subvi_w, NoItinerary, 1878 MSA128, MSA128>; 1879class SUBVI_D_DESC : MSA_I5_DESC_BASE<"subvi.d", int_mips_subvi_d, NoItinerary, 1880 MSA128, MSA128>; 1881 1882class VSHF_B_DESC : MSA_3R_DESC_BASE<"vshf.b", int_mips_vshf_b, 1883 NoItinerary, MSA128, MSA128>; 1884class VSHF_H_DESC : MSA_3R_DESC_BASE<"vshf.h", int_mips_vshf_h, 1885 NoItinerary, MSA128, MSA128>; 1886class VSHF_W_DESC : MSA_3R_DESC_BASE<"vshf.w", int_mips_vshf_w, 1887 NoItinerary, MSA128, MSA128>; 1888class VSHF_D_DESC : MSA_3R_DESC_BASE<"vshf.d", int_mips_vshf_d, 1889 NoItinerary, MSA128, MSA128>; 1890 1891class XORI_B_DESC : MSA_I8_DESC_BASE<"xori.b", int_mips_xori_b, NoItinerary, 1892 MSA128, MSA128>; 1893// Instruction defs. 1894def ADD_A_B : ADD_A_B_ENC, ADD_A_B_DESC, Requires<[HasMSA]>; 1895def ADD_A_H : ADD_A_H_ENC, ADD_A_H_DESC, Requires<[HasMSA]>; 1896def ADD_A_W : ADD_A_W_ENC, ADD_A_W_DESC, Requires<[HasMSA]>; 1897def ADD_A_D : ADD_A_D_ENC, ADD_A_D_DESC, Requires<[HasMSA]>; 1898 1899def ADDS_A_B : ADDS_A_B_ENC, ADDS_A_B_DESC, Requires<[HasMSA]>; 1900def ADDS_A_H : ADDS_A_H_ENC, ADDS_A_H_DESC, Requires<[HasMSA]>; 1901def ADDS_A_W : ADDS_A_W_ENC, ADDS_A_W_DESC, Requires<[HasMSA]>; 1902def ADDS_A_D : ADDS_A_D_ENC, ADDS_A_D_DESC, Requires<[HasMSA]>; 1903 1904def ADDS_S_B : ADDS_S_B_ENC, ADDS_S_B_DESC, Requires<[HasMSA]>; 1905def ADDS_S_H : ADDS_S_H_ENC, ADDS_S_H_DESC, Requires<[HasMSA]>; 1906def ADDS_S_W : ADDS_S_W_ENC, ADDS_S_W_DESC, Requires<[HasMSA]>; 1907def ADDS_S_D : ADDS_S_D_ENC, ADDS_S_D_DESC, Requires<[HasMSA]>; 1908 1909def ADDS_U_B : ADDS_U_B_ENC, ADDS_U_B_DESC, Requires<[HasMSA]>; 1910def ADDS_U_H : ADDS_U_H_ENC, ADDS_U_H_DESC, Requires<[HasMSA]>; 1911def ADDS_U_W : ADDS_U_W_ENC, ADDS_U_W_DESC, Requires<[HasMSA]>; 1912def ADDS_U_D : ADDS_U_D_ENC, ADDS_U_D_DESC, Requires<[HasMSA]>; 1913 1914def ADDV_B : ADDV_B_ENC, ADDV_B_DESC, Requires<[HasMSA]>; 1915def ADDV_H : ADDV_H_ENC, ADDV_H_DESC, Requires<[HasMSA]>; 1916def ADDV_W : ADDV_W_ENC, ADDV_W_DESC, Requires<[HasMSA]>; 1917def ADDV_D : ADDV_D_ENC, ADDV_D_DESC, Requires<[HasMSA]>; 1918 1919def ADDVI_B : ADDVI_B_ENC, ADDVI_B_DESC, Requires<[HasMSA]>; 1920def ADDVI_H : ADDVI_H_ENC, ADDVI_H_DESC, Requires<[HasMSA]>; 1921def ADDVI_W : ADDVI_W_ENC, ADDVI_W_DESC, Requires<[HasMSA]>; 1922def ADDVI_D : ADDVI_D_ENC, ADDVI_D_DESC, Requires<[HasMSA]>; 1923 1924def ANDI_B : ANDI_B_ENC, ANDI_B_DESC, Requires<[HasMSA]>; 1925 1926def ASUB_S_B : ASUB_S_B_ENC, ASUB_S_B_DESC, Requires<[HasMSA]>; 1927def ASUB_S_H : ASUB_S_H_ENC, ASUB_S_H_DESC, Requires<[HasMSA]>; 1928def ASUB_S_W : ASUB_S_W_ENC, ASUB_S_W_DESC, Requires<[HasMSA]>; 1929def ASUB_S_D : ASUB_S_D_ENC, ASUB_S_D_DESC, Requires<[HasMSA]>; 1930 1931def ASUB_U_B : ASUB_U_B_ENC, ASUB_U_B_DESC, Requires<[HasMSA]>; 1932def ASUB_U_H : ASUB_U_H_ENC, ASUB_U_H_DESC, Requires<[HasMSA]>; 1933def ASUB_U_W : ASUB_U_W_ENC, ASUB_U_W_DESC, Requires<[HasMSA]>; 1934def ASUB_U_D : ASUB_U_D_ENC, ASUB_U_D_DESC, Requires<[HasMSA]>; 1935 1936def AVE_S_B : AVE_S_B_ENC, AVE_S_B_DESC, Requires<[HasMSA]>; 1937def AVE_S_H : AVE_S_H_ENC, AVE_S_H_DESC, Requires<[HasMSA]>; 1938def AVE_S_W : AVE_S_W_ENC, AVE_S_W_DESC, Requires<[HasMSA]>; 1939def AVE_S_D : AVE_S_D_ENC, AVE_S_D_DESC, Requires<[HasMSA]>; 1940 1941def AVE_U_B : AVE_U_B_ENC, AVE_U_B_DESC, Requires<[HasMSA]>; 1942def AVE_U_H : AVE_U_H_ENC, AVE_U_H_DESC, Requires<[HasMSA]>; 1943def AVE_U_W : AVE_U_W_ENC, AVE_U_W_DESC, Requires<[HasMSA]>; 1944def AVE_U_D : AVE_U_D_ENC, AVE_U_D_DESC, Requires<[HasMSA]>; 1945 1946def AVER_S_B : AVER_S_B_ENC, AVER_S_B_DESC, Requires<[HasMSA]>; 1947def AVER_S_H : AVER_S_H_ENC, AVER_S_H_DESC, Requires<[HasMSA]>; 1948def AVER_S_W : AVER_S_W_ENC, AVER_S_W_DESC, Requires<[HasMSA]>; 1949def AVER_S_D : AVER_S_D_ENC, AVER_S_D_DESC, Requires<[HasMSA]>; 1950 1951def AVER_U_B : AVER_U_B_ENC, AVER_U_B_DESC, Requires<[HasMSA]>; 1952def AVER_U_H : AVER_U_H_ENC, AVER_U_H_DESC, Requires<[HasMSA]>; 1953def AVER_U_W : AVER_U_W_ENC, AVER_U_W_DESC, Requires<[HasMSA]>; 1954def AVER_U_D : AVER_U_D_ENC, AVER_U_D_DESC, Requires<[HasMSA]>; 1955 1956def BCLR_B : BCLR_B_ENC, BCLR_B_DESC, Requires<[HasMSA]>; 1957def BCLR_H : BCLR_H_ENC, BCLR_H_DESC, Requires<[HasMSA]>; 1958def BCLR_W : BCLR_W_ENC, BCLR_W_DESC, Requires<[HasMSA]>; 1959def BCLR_D : BCLR_D_ENC, BCLR_D_DESC, Requires<[HasMSA]>; 1960 1961def BCLRI_B : BCLRI_B_ENC, BCLRI_B_DESC, Requires<[HasMSA]>; 1962def BCLRI_H : BCLRI_H_ENC, BCLRI_H_DESC, Requires<[HasMSA]>; 1963def BCLRI_W : BCLRI_W_ENC, BCLRI_W_DESC, Requires<[HasMSA]>; 1964def BCLRI_D : BCLRI_D_ENC, BCLRI_D_DESC, Requires<[HasMSA]>; 1965 1966def BINSL_B : BINSL_B_ENC, BINSL_B_DESC, Requires<[HasMSA]>; 1967def BINSL_H : BINSL_H_ENC, BINSL_H_DESC, Requires<[HasMSA]>; 1968def BINSL_W : BINSL_W_ENC, BINSL_W_DESC, Requires<[HasMSA]>; 1969def BINSL_D : BINSL_D_ENC, BINSL_D_DESC, Requires<[HasMSA]>; 1970 1971def BINSLI_B : BINSLI_B_ENC, BINSLI_B_DESC, Requires<[HasMSA]>; 1972def BINSLI_H : BINSLI_H_ENC, BINSLI_H_DESC, Requires<[HasMSA]>; 1973def BINSLI_W : BINSLI_W_ENC, BINSLI_W_DESC, Requires<[HasMSA]>; 1974def BINSLI_D : BINSLI_D_ENC, BINSLI_D_DESC, Requires<[HasMSA]>; 1975 1976def BINSR_B : BINSR_B_ENC, BINSR_B_DESC, Requires<[HasMSA]>; 1977def BINSR_H : BINSR_H_ENC, BINSR_H_DESC, Requires<[HasMSA]>; 1978def BINSR_W : BINSR_W_ENC, BINSR_W_DESC, Requires<[HasMSA]>; 1979def BINSR_D : BINSR_D_ENC, BINSR_D_DESC, Requires<[HasMSA]>; 1980 1981def BINSRI_B : BINSRI_B_ENC, BINSRI_B_DESC, Requires<[HasMSA]>; 1982def BINSRI_H : BINSRI_H_ENC, BINSRI_H_DESC, Requires<[HasMSA]>; 1983def BINSRI_W : BINSRI_W_ENC, BINSRI_W_DESC, Requires<[HasMSA]>; 1984def BINSRI_D : BINSRI_D_ENC, BINSRI_D_DESC, Requires<[HasMSA]>; 1985 1986def BMNZI_B : BMNZI_B_ENC, BMNZI_B_DESC, Requires<[HasMSA]>; 1987 1988def BMZI_B : BMZI_B_ENC, BMZI_B_DESC, Requires<[HasMSA]>; 1989 1990def BNEG_B : BNEG_B_ENC, BNEG_B_DESC, Requires<[HasMSA]>; 1991def BNEG_H : BNEG_H_ENC, BNEG_H_DESC, Requires<[HasMSA]>; 1992def BNEG_W : BNEG_W_ENC, BNEG_W_DESC, Requires<[HasMSA]>; 1993def BNEG_D : BNEG_D_ENC, BNEG_D_DESC, Requires<[HasMSA]>; 1994 1995def BNEGI_B : BNEGI_B_ENC, BNEGI_B_DESC, Requires<[HasMSA]>; 1996def BNEGI_H : BNEGI_H_ENC, BNEGI_H_DESC, Requires<[HasMSA]>; 1997def BNEGI_W : BNEGI_W_ENC, BNEGI_W_DESC, Requires<[HasMSA]>; 1998def BNEGI_D : BNEGI_D_ENC, BNEGI_D_DESC, Requires<[HasMSA]>; 1999 2000def BSELI_B : BSELI_B_ENC, BSELI_B_DESC, Requires<[HasMSA]>; 2001 2002def BSET_B : BSET_B_ENC, BSET_B_DESC, Requires<[HasMSA]>; 2003def BSET_H : BSET_H_ENC, BSET_H_DESC, Requires<[HasMSA]>; 2004def BSET_W : BSET_W_ENC, BSET_W_DESC, Requires<[HasMSA]>; 2005def BSET_D : BSET_D_ENC, BSET_D_DESC, Requires<[HasMSA]>; 2006 2007def BSETI_B : BSETI_B_ENC, BSETI_B_DESC, Requires<[HasMSA]>; 2008def BSETI_H : BSETI_H_ENC, BSETI_H_DESC, Requires<[HasMSA]>; 2009def BSETI_W : BSETI_W_ENC, BSETI_W_DESC, Requires<[HasMSA]>; 2010def BSETI_D : BSETI_D_ENC, BSETI_D_DESC, Requires<[HasMSA]>; 2011 2012def CEQ_B : CEQ_B_ENC, CEQ_B_DESC, Requires<[HasMSA]>; 2013def CEQ_H : CEQ_H_ENC, CEQ_H_DESC, Requires<[HasMSA]>; 2014def CEQ_W : CEQ_W_ENC, CEQ_W_DESC, Requires<[HasMSA]>; 2015def CEQ_D : CEQ_D_ENC, CEQ_D_DESC, Requires<[HasMSA]>; 2016 2017def CEQI_B : CEQI_B_ENC, CEQI_B_DESC, Requires<[HasMSA]>; 2018def CEQI_H : CEQI_H_ENC, CEQI_H_DESC, Requires<[HasMSA]>; 2019def CEQI_W : CEQI_W_ENC, CEQI_W_DESC, Requires<[HasMSA]>; 2020def CEQI_D : CEQI_D_ENC, CEQI_D_DESC, Requires<[HasMSA]>; 2021 2022def CLE_S_B : CLE_S_B_ENC, CLE_S_B_DESC, Requires<[HasMSA]>; 2023def CLE_S_H : CLE_S_H_ENC, CLE_S_H_DESC, Requires<[HasMSA]>; 2024def CLE_S_W : CLE_S_W_ENC, CLE_S_W_DESC, Requires<[HasMSA]>; 2025def CLE_S_D : CLE_S_D_ENC, CLE_S_D_DESC, Requires<[HasMSA]>; 2026 2027def CLE_U_B : CLE_U_B_ENC, CLE_U_B_DESC, Requires<[HasMSA]>; 2028def CLE_U_H : CLE_U_H_ENC, CLE_U_H_DESC, Requires<[HasMSA]>; 2029def CLE_U_W : CLE_U_W_ENC, CLE_U_W_DESC, Requires<[HasMSA]>; 2030def CLE_U_D : CLE_U_D_ENC, CLE_U_D_DESC, Requires<[HasMSA]>; 2031 2032def CLEI_S_B : CLEI_S_B_ENC, CLEI_S_B_DESC, Requires<[HasMSA]>; 2033def CLEI_S_H : CLEI_S_H_ENC, CLEI_S_H_DESC, Requires<[HasMSA]>; 2034def CLEI_S_W : CLEI_S_W_ENC, CLEI_S_W_DESC, Requires<[HasMSA]>; 2035def CLEI_S_D : CLEI_S_D_ENC, CLEI_S_D_DESC, Requires<[HasMSA]>; 2036 2037def CLEI_U_B : CLEI_U_B_ENC, CLEI_U_B_DESC, Requires<[HasMSA]>; 2038def CLEI_U_H : CLEI_U_H_ENC, CLEI_U_H_DESC, Requires<[HasMSA]>; 2039def CLEI_U_W : CLEI_U_W_ENC, CLEI_U_W_DESC, Requires<[HasMSA]>; 2040def CLEI_U_D : CLEI_U_D_ENC, CLEI_U_D_DESC, Requires<[HasMSA]>; 2041 2042def CLT_S_B : CLT_S_B_ENC, CLT_S_B_DESC, Requires<[HasMSA]>; 2043def CLT_S_H : CLT_S_H_ENC, CLT_S_H_DESC, Requires<[HasMSA]>; 2044def CLT_S_W : CLT_S_W_ENC, CLT_S_W_DESC, Requires<[HasMSA]>; 2045def CLT_S_D : CLT_S_D_ENC, CLT_S_D_DESC, Requires<[HasMSA]>; 2046 2047def CLT_U_B : CLT_U_B_ENC, CLT_U_B_DESC, Requires<[HasMSA]>; 2048def CLT_U_H : CLT_U_H_ENC, CLT_U_H_DESC, Requires<[HasMSA]>; 2049def CLT_U_W : CLT_U_W_ENC, CLT_U_W_DESC, Requires<[HasMSA]>; 2050def CLT_U_D : CLT_U_D_ENC, CLT_U_D_DESC, Requires<[HasMSA]>; 2051 2052def CLTI_S_B : CLTI_S_B_ENC, CLTI_S_B_DESC, Requires<[HasMSA]>; 2053def CLTI_S_H : CLTI_S_H_ENC, CLTI_S_H_DESC, Requires<[HasMSA]>; 2054def CLTI_S_W : CLTI_S_W_ENC, CLTI_S_W_DESC, Requires<[HasMSA]>; 2055def CLTI_S_D : CLTI_S_D_ENC, CLTI_S_D_DESC, Requires<[HasMSA]>; 2056 2057def CLTI_U_B : CLTI_U_B_ENC, CLTI_U_B_DESC, Requires<[HasMSA]>; 2058def CLTI_U_H : CLTI_U_H_ENC, CLTI_U_H_DESC, Requires<[HasMSA]>; 2059def CLTI_U_W : CLTI_U_W_ENC, CLTI_U_W_DESC, Requires<[HasMSA]>; 2060def CLTI_U_D : CLTI_U_D_ENC, CLTI_U_D_DESC, Requires<[HasMSA]>; 2061 2062def COPY_S_B : COPY_S_B_ENC, COPY_S_B_DESC, Requires<[HasMSA]>; 2063def COPY_S_H : COPY_S_H_ENC, COPY_S_H_DESC, Requires<[HasMSA]>; 2064def COPY_S_W : COPY_S_W_ENC, COPY_S_W_DESC, Requires<[HasMSA]>; 2065 2066def COPY_U_B : COPY_U_B_ENC, COPY_U_B_DESC, Requires<[HasMSA]>; 2067def COPY_U_H : COPY_U_H_ENC, COPY_U_H_DESC, Requires<[HasMSA]>; 2068def COPY_U_W : COPY_U_W_ENC, COPY_U_W_DESC, Requires<[HasMSA]>; 2069 2070def DIV_S_B : DIV_S_B_ENC, DIV_S_B_DESC, Requires<[HasMSA]>; 2071def DIV_S_H : DIV_S_H_ENC, DIV_S_H_DESC, Requires<[HasMSA]>; 2072def DIV_S_W : DIV_S_W_ENC, DIV_S_W_DESC, Requires<[HasMSA]>; 2073def DIV_S_D : DIV_S_D_ENC, DIV_S_D_DESC, Requires<[HasMSA]>; 2074 2075def DIV_U_B : DIV_U_B_ENC, DIV_U_B_DESC, Requires<[HasMSA]>; 2076def DIV_U_H : DIV_U_H_ENC, DIV_U_H_DESC, Requires<[HasMSA]>; 2077def DIV_U_W : DIV_U_W_ENC, DIV_U_W_DESC, Requires<[HasMSA]>; 2078def DIV_U_D : DIV_U_D_ENC, DIV_U_D_DESC, Requires<[HasMSA]>; 2079 2080def DOTP_S_B : DOTP_S_B_ENC, DOTP_S_B_DESC, Requires<[HasMSA]>; 2081def DOTP_S_H : DOTP_S_H_ENC, DOTP_S_H_DESC, Requires<[HasMSA]>; 2082def DOTP_S_W : DOTP_S_W_ENC, DOTP_S_W_DESC, Requires<[HasMSA]>; 2083def DOTP_S_D : DOTP_S_D_ENC, DOTP_S_D_DESC, Requires<[HasMSA]>; 2084 2085def DOTP_U_B : DOTP_U_B_ENC, DOTP_U_B_DESC, Requires<[HasMSA]>; 2086def DOTP_U_H : DOTP_U_H_ENC, DOTP_U_H_DESC, Requires<[HasMSA]>; 2087def DOTP_U_W : DOTP_U_W_ENC, DOTP_U_W_DESC, Requires<[HasMSA]>; 2088def DOTP_U_D : DOTP_U_D_ENC, DOTP_U_D_DESC, Requires<[HasMSA]>; 2089 2090def DPADD_S_H : DPADD_S_H_ENC, DPADD_S_H_DESC, Requires<[HasMSA]>; 2091def DPADD_S_W : DPADD_S_W_ENC, DPADD_S_W_DESC, Requires<[HasMSA]>; 2092def DPADD_S_D : DPADD_S_D_ENC, DPADD_S_D_DESC, Requires<[HasMSA]>; 2093 2094def DPADD_U_H : DPADD_U_H_ENC, DPADD_U_H_DESC, Requires<[HasMSA]>; 2095def DPADD_U_W : DPADD_U_W_ENC, DPADD_U_W_DESC, Requires<[HasMSA]>; 2096def DPADD_U_D : DPADD_U_D_ENC, DPADD_U_D_DESC, Requires<[HasMSA]>; 2097 2098def DPSUB_S_H : DPSUB_S_H_ENC, DPSUB_S_H_DESC, Requires<[HasMSA]>; 2099def DPSUB_S_W : DPSUB_S_W_ENC, DPSUB_S_W_DESC, Requires<[HasMSA]>; 2100def DPSUB_S_D : DPSUB_S_D_ENC, DPSUB_S_D_DESC, Requires<[HasMSA]>; 2101 2102def DPSUB_U_H : DPSUB_U_H_ENC, DPSUB_U_H_DESC, Requires<[HasMSA]>; 2103def DPSUB_U_W : DPSUB_U_W_ENC, DPSUB_U_W_DESC, Requires<[HasMSA]>; 2104def DPSUB_U_D : DPSUB_U_D_ENC, DPSUB_U_D_DESC, Requires<[HasMSA]>; 2105 2106def FADD_W : FADD_W_ENC, FADD_W_DESC, Requires<[HasMSA]>; 2107def FADD_D : FADD_D_ENC, FADD_D_DESC, Requires<[HasMSA]>; 2108 2109def FCEQ_W : FCEQ_W_ENC, FCEQ_W_DESC, Requires<[HasMSA]>; 2110def FCEQ_D : FCEQ_D_ENC, FCEQ_D_DESC, Requires<[HasMSA]>; 2111 2112def FCLE_W : FCLE_W_ENC, FCLE_W_DESC, Requires<[HasMSA]>; 2113def FCLE_D : FCLE_D_ENC, FCLE_D_DESC, Requires<[HasMSA]>; 2114 2115def FCLT_W : FCLT_W_ENC, FCLT_W_DESC, Requires<[HasMSA]>; 2116def FCLT_D : FCLT_D_ENC, FCLT_D_DESC, Requires<[HasMSA]>; 2117 2118def FCLASS_W : FCLASS_W_ENC, FCLASS_W_DESC, Requires<[HasMSA]>; 2119def FCLASS_D : FCLASS_D_ENC, FCLASS_D_DESC, Requires<[HasMSA]>; 2120 2121def FCGE_W : FCGE_W_ENC, FCGE_W_DESC, Requires<[HasMSA]>; 2122def FCGE_D : FCGE_D_ENC, FCGE_D_DESC, Requires<[HasMSA]>; 2123 2124def FCGT_W : FCGT_W_ENC, FCGT_W_DESC, Requires<[HasMSA]>; 2125def FCGT_D : FCGT_D_ENC, FCGT_D_DESC, Requires<[HasMSA]>; 2126 2127def FCNE_W : FCNE_W_ENC, FCNE_W_DESC, Requires<[HasMSA]>; 2128def FCNE_D : FCNE_D_ENC, FCNE_D_DESC, Requires<[HasMSA]>; 2129 2130def FCUN_W : FCUN_W_ENC, FCUN_W_DESC, Requires<[HasMSA]>; 2131def FCUN_D : FCUN_D_ENC, FCUN_D_DESC, Requires<[HasMSA]>; 2132 2133def FDIV_W : FDIV_W_ENC, FDIV_W_DESC, Requires<[HasMSA]>; 2134def FDIV_D : FDIV_D_ENC, FDIV_D_DESC, Requires<[HasMSA]>; 2135 2136def FEXDO_H : FEXDO_H_ENC, FEXDO_H_DESC, Requires<[HasMSA]>; 2137def FEXDO_W : FEXDO_W_ENC, FEXDO_W_DESC, Requires<[HasMSA]>; 2138 2139def FEXP2_W : FEXP2_W_ENC, FEXP2_W_DESC, Requires<[HasMSA]>; 2140def FEXP2_D : FEXP2_D_ENC, FEXP2_D_DESC, Requires<[HasMSA]>; 2141 2142def FEXUPL_W : FEXUPL_W_ENC, FEXUPL_W_DESC, Requires<[HasMSA]>; 2143def FEXUPL_D : FEXUPL_D_ENC, FEXUPL_D_DESC, Requires<[HasMSA]>; 2144 2145def FEXUPR_W : FEXUPR_W_ENC, FEXUPR_W_DESC, Requires<[HasMSA]>; 2146def FEXUPR_D : FEXUPR_D_ENC, FEXUPR_D_DESC, Requires<[HasMSA]>; 2147 2148def FFINT_S_W : FFINT_S_W_ENC, FFINT_S_W_DESC, Requires<[HasMSA]>; 2149def FFINT_S_D : FFINT_S_D_ENC, FFINT_S_D_DESC, Requires<[HasMSA]>; 2150 2151def FFINT_U_W : FFINT_U_W_ENC, FFINT_U_W_DESC, Requires<[HasMSA]>; 2152def FFINT_U_D : FFINT_U_D_ENC, FFINT_U_D_DESC, Requires<[HasMSA]>; 2153 2154def FFQL_W : FFQL_W_ENC, FFQL_W_DESC, Requires<[HasMSA]>; 2155def FFQL_D : FFQL_D_ENC, FFQL_D_DESC, Requires<[HasMSA]>; 2156 2157def FFQR_W : FFQR_W_ENC, FFQR_W_DESC, Requires<[HasMSA]>; 2158def FFQR_D : FFQR_D_ENC, FFQR_D_DESC, Requires<[HasMSA]>; 2159 2160def FILL_B : FILL_B_ENC, FILL_B_DESC, Requires<[HasMSA]>; 2161def FILL_H : FILL_H_ENC, FILL_H_DESC, Requires<[HasMSA]>; 2162def FILL_W : FILL_W_ENC, FILL_W_DESC, Requires<[HasMSA]>; 2163 2164def FLOG2_W : FLOG2_W_ENC, FLOG2_W_DESC, Requires<[HasMSA]>; 2165def FLOG2_D : FLOG2_D_ENC, FLOG2_D_DESC, Requires<[HasMSA]>; 2166 2167def FMADD_W : FMADD_W_ENC, FMADD_W_DESC, Requires<[HasMSA]>; 2168def FMADD_D : FMADD_D_ENC, FMADD_D_DESC, Requires<[HasMSA]>; 2169 2170def FMAX_W : FMAX_W_ENC, FMAX_W_DESC, Requires<[HasMSA]>; 2171def FMAX_D : FMAX_D_ENC, FMAX_D_DESC, Requires<[HasMSA]>; 2172 2173def FMAX_A_W : FMAX_A_W_ENC, FMAX_A_W_DESC, Requires<[HasMSA]>; 2174def FMAX_A_D : FMAX_A_D_ENC, FMAX_A_D_DESC, Requires<[HasMSA]>; 2175 2176def FMIN_W : FMIN_W_ENC, FMIN_W_DESC, Requires<[HasMSA]>; 2177def FMIN_D : FMIN_D_ENC, FMIN_D_DESC, Requires<[HasMSA]>; 2178 2179def FMIN_A_W : FMIN_A_W_ENC, FMIN_A_W_DESC, Requires<[HasMSA]>; 2180def FMIN_A_D : FMIN_A_D_ENC, FMIN_A_D_DESC, Requires<[HasMSA]>; 2181 2182def FMSUB_W : FMSUB_W_ENC, FMSUB_W_DESC, Requires<[HasMSA]>; 2183def FMSUB_D : FMSUB_D_ENC, FMSUB_D_DESC, Requires<[HasMSA]>; 2184 2185def FMUL_W : FMUL_W_ENC, FMUL_W_DESC, Requires<[HasMSA]>; 2186def FMUL_D : FMUL_D_ENC, FMUL_D_DESC, Requires<[HasMSA]>; 2187 2188def FRINT_W : FRINT_W_ENC, FRINT_W_DESC, Requires<[HasMSA]>; 2189def FRINT_D : FRINT_D_ENC, FRINT_D_DESC, Requires<[HasMSA]>; 2190 2191def FRCP_W : FRCP_W_ENC, FRCP_W_DESC, Requires<[HasMSA]>; 2192def FRCP_D : FRCP_D_ENC, FRCP_D_DESC, Requires<[HasMSA]>; 2193 2194def FRSQRT_W : FRSQRT_W_ENC, FRSQRT_W_DESC, Requires<[HasMSA]>; 2195def FRSQRT_D : FRSQRT_D_ENC, FRSQRT_D_DESC, Requires<[HasMSA]>; 2196 2197def FSEQ_W : FSEQ_W_ENC, FSEQ_W_DESC, Requires<[HasMSA]>; 2198def FSEQ_D : FSEQ_D_ENC, FSEQ_D_DESC, Requires<[HasMSA]>; 2199 2200def FSLE_W : FSLE_W_ENC, FSLE_W_DESC, Requires<[HasMSA]>; 2201def FSLE_D : FSLE_D_ENC, FSLE_D_DESC, Requires<[HasMSA]>; 2202 2203def FSLT_W : FSLT_W_ENC, FSLT_W_DESC, Requires<[HasMSA]>; 2204def FSLT_D : FSLT_D_ENC, FSLT_D_DESC, Requires<[HasMSA]>; 2205 2206def FSGE_W : FSGE_W_ENC, FSGE_W_DESC, Requires<[HasMSA]>; 2207def FSGE_D : FSGE_D_ENC, FSGE_D_DESC, Requires<[HasMSA]>; 2208 2209def FSGT_W : FSGT_W_ENC, FSGT_W_DESC, Requires<[HasMSA]>; 2210def FSGT_D : FSGT_D_ENC, FSGT_D_DESC, Requires<[HasMSA]>; 2211 2212def FSNE_W : FSNE_W_ENC, FSNE_W_DESC, Requires<[HasMSA]>; 2213def FSNE_D : FSNE_D_ENC, FSNE_D_DESC, Requires<[HasMSA]>; 2214 2215def FSQRT_W : FSQRT_W_ENC, FSQRT_W_DESC, Requires<[HasMSA]>; 2216def FSQRT_D : FSQRT_D_ENC, FSQRT_D_DESC, Requires<[HasMSA]>; 2217 2218def FSUB_W : FSUB_W_ENC, FSUB_W_DESC, Requires<[HasMSA]>; 2219def FSUB_D : FSUB_D_ENC, FSUB_D_DESC, Requires<[HasMSA]>; 2220 2221def FTINT_S_W : FTINT_S_W_ENC, FTINT_S_W_DESC, Requires<[HasMSA]>; 2222def FTINT_S_D : FTINT_S_D_ENC, FTINT_S_D_DESC, Requires<[HasMSA]>; 2223 2224def FTINT_U_W : FTINT_U_W_ENC, FTINT_U_W_DESC, Requires<[HasMSA]>; 2225def FTINT_U_D : FTINT_U_D_ENC, FTINT_U_D_DESC, Requires<[HasMSA]>; 2226 2227def FTQ_H : FTQ_H_ENC, FTQ_H_DESC, Requires<[HasMSA]>; 2228def FTQ_W : FTQ_W_ENC, FTQ_W_DESC, Requires<[HasMSA]>; 2229 2230def ILVEV_B : ILVEV_B_ENC, ILVEV_B_DESC, Requires<[HasMSA]>; 2231def ILVEV_H : ILVEV_H_ENC, ILVEV_H_DESC, Requires<[HasMSA]>; 2232def ILVEV_W : ILVEV_W_ENC, ILVEV_W_DESC, Requires<[HasMSA]>; 2233def ILVEV_D : ILVEV_D_ENC, ILVEV_D_DESC, Requires<[HasMSA]>; 2234 2235def ILVL_B : ILVL_B_ENC, ILVL_B_DESC, Requires<[HasMSA]>; 2236def ILVL_H : ILVL_H_ENC, ILVL_H_DESC, Requires<[HasMSA]>; 2237def ILVL_W : ILVL_W_ENC, ILVL_W_DESC, Requires<[HasMSA]>; 2238def ILVL_D : ILVL_D_ENC, ILVL_D_DESC, Requires<[HasMSA]>; 2239 2240def ILVOD_B : ILVOD_B_ENC, ILVOD_B_DESC, Requires<[HasMSA]>; 2241def ILVOD_H : ILVOD_H_ENC, ILVOD_H_DESC, Requires<[HasMSA]>; 2242def ILVOD_W : ILVOD_W_ENC, ILVOD_W_DESC, Requires<[HasMSA]>; 2243def ILVOD_D : ILVOD_D_ENC, ILVOD_D_DESC, Requires<[HasMSA]>; 2244 2245def ILVR_B : ILVR_B_ENC, ILVR_B_DESC, Requires<[HasMSA]>; 2246def ILVR_H : ILVR_H_ENC, ILVR_H_DESC, Requires<[HasMSA]>; 2247def ILVR_W : ILVR_W_ENC, ILVR_W_DESC, Requires<[HasMSA]>; 2248def ILVR_D : ILVR_D_ENC, ILVR_D_DESC, Requires<[HasMSA]>; 2249 2250def INSERT_B : INSERT_B_ENC, INSERT_B_DESC, Requires<[HasMSA]>; 2251def INSERT_H : INSERT_H_ENC, INSERT_H_DESC, Requires<[HasMSA]>; 2252def INSERT_W : INSERT_W_ENC, INSERT_W_DESC, Requires<[HasMSA]>; 2253 2254def LD_B: LD_B_ENC, LD_B_DESC, Requires<[HasMSA]>; 2255def LD_H: LD_H_ENC, LD_H_DESC, Requires<[HasMSA]>; 2256def LD_W: LD_W_ENC, LD_W_DESC, Requires<[HasMSA]>; 2257def LD_D: LD_D_ENC, LD_D_DESC, Requires<[HasMSA]>; 2258 2259def LDI_B : LDI_B_ENC, LDI_B_DESC, Requires<[HasMSA]>; 2260def LDI_H : LDI_H_ENC, LDI_H_DESC, Requires<[HasMSA]>; 2261def LDI_W : LDI_W_ENC, LDI_W_DESC, Requires<[HasMSA]>; 2262 2263def MADD_Q_H : MADD_Q_H_ENC, MADD_Q_H_DESC, Requires<[HasMSA]>; 2264def MADD_Q_W : MADD_Q_W_ENC, MADD_Q_W_DESC, Requires<[HasMSA]>; 2265 2266def MADDR_Q_H : MADDR_Q_H_ENC, MADDR_Q_H_DESC, Requires<[HasMSA]>; 2267def MADDR_Q_W : MADDR_Q_W_ENC, MADDR_Q_W_DESC, Requires<[HasMSA]>; 2268 2269def MADDV_B : MADDV_B_ENC, MADDV_B_DESC, Requires<[HasMSA]>; 2270def MADDV_H : MADDV_H_ENC, MADDV_H_DESC, Requires<[HasMSA]>; 2271def MADDV_W : MADDV_W_ENC, MADDV_W_DESC, Requires<[HasMSA]>; 2272def MADDV_D : MADDV_D_ENC, MADDV_D_DESC, Requires<[HasMSA]>; 2273 2274def MAX_A_B : MAX_A_B_ENC, MAX_A_B_DESC, Requires<[HasMSA]>; 2275def MAX_A_H : MAX_A_H_ENC, MAX_A_H_DESC, Requires<[HasMSA]>; 2276def MAX_A_W : MAX_A_W_ENC, MAX_A_W_DESC, Requires<[HasMSA]>; 2277def MAX_A_D : MAX_A_D_ENC, MAX_A_D_DESC, Requires<[HasMSA]>; 2278 2279def MAX_S_B : MAX_S_B_ENC, MAX_S_B_DESC, Requires<[HasMSA]>; 2280def MAX_S_H : MAX_S_H_ENC, MAX_S_H_DESC, Requires<[HasMSA]>; 2281def MAX_S_W : MAX_S_W_ENC, MAX_S_W_DESC, Requires<[HasMSA]>; 2282def MAX_S_D : MAX_S_D_ENC, MAX_S_D_DESC, Requires<[HasMSA]>; 2283 2284def MAX_U_B : MAX_U_B_ENC, MAX_U_B_DESC, Requires<[HasMSA]>; 2285def MAX_U_H : MAX_U_H_ENC, MAX_U_H_DESC, Requires<[HasMSA]>; 2286def MAX_U_W : MAX_U_W_ENC, MAX_U_W_DESC, Requires<[HasMSA]>; 2287def MAX_U_D : MAX_U_D_ENC, MAX_U_D_DESC, Requires<[HasMSA]>; 2288 2289def MAXI_S_B : MAXI_S_B_ENC, MAXI_S_B_DESC, Requires<[HasMSA]>; 2290def MAXI_S_H : MAXI_S_H_ENC, MAXI_S_H_DESC, Requires<[HasMSA]>; 2291def MAXI_S_W : MAXI_S_W_ENC, MAXI_S_W_DESC, Requires<[HasMSA]>; 2292def MAXI_S_D : MAXI_S_D_ENC, MAXI_S_D_DESC, Requires<[HasMSA]>; 2293 2294def MAXI_U_B : MAXI_U_B_ENC, MAXI_U_B_DESC, Requires<[HasMSA]>; 2295def MAXI_U_H : MAXI_U_H_ENC, MAXI_U_H_DESC, Requires<[HasMSA]>; 2296def MAXI_U_W : MAXI_U_W_ENC, MAXI_U_W_DESC, Requires<[HasMSA]>; 2297def MAXI_U_D : MAXI_U_D_ENC, MAXI_U_D_DESC, Requires<[HasMSA]>; 2298 2299def MIN_A_B : MIN_A_B_ENC, MIN_A_B_DESC, Requires<[HasMSA]>; 2300def MIN_A_H : MIN_A_H_ENC, MIN_A_H_DESC, Requires<[HasMSA]>; 2301def MIN_A_W : MIN_A_W_ENC, MIN_A_W_DESC, Requires<[HasMSA]>; 2302def MIN_A_D : MIN_A_D_ENC, MIN_A_D_DESC, Requires<[HasMSA]>; 2303 2304def MIN_S_B : MIN_S_B_ENC, MIN_S_B_DESC, Requires<[HasMSA]>; 2305def MIN_S_H : MIN_S_H_ENC, MIN_S_H_DESC, Requires<[HasMSA]>; 2306def MIN_S_W : MIN_S_W_ENC, MIN_S_W_DESC, Requires<[HasMSA]>; 2307def MIN_S_D : MIN_S_D_ENC, MIN_S_D_DESC, Requires<[HasMSA]>; 2308 2309def MIN_U_B : MIN_U_B_ENC, MIN_U_B_DESC, Requires<[HasMSA]>; 2310def MIN_U_H : MIN_U_H_ENC, MIN_U_H_DESC, Requires<[HasMSA]>; 2311def MIN_U_W : MIN_U_W_ENC, MIN_U_W_DESC, Requires<[HasMSA]>; 2312def MIN_U_D : MIN_U_D_ENC, MIN_U_D_DESC, Requires<[HasMSA]>; 2313 2314def MINI_S_B : MINI_S_B_ENC, MINI_S_B_DESC, Requires<[HasMSA]>; 2315def MINI_S_H : MINI_S_H_ENC, MINI_S_H_DESC, Requires<[HasMSA]>; 2316def MINI_S_W : MINI_S_W_ENC, MINI_S_W_DESC, Requires<[HasMSA]>; 2317def MINI_S_D : MINI_S_D_ENC, MINI_S_D_DESC, Requires<[HasMSA]>; 2318 2319def MINI_U_B : MINI_U_B_ENC, MINI_U_B_DESC, Requires<[HasMSA]>; 2320def MINI_U_H : MINI_U_H_ENC, MINI_U_H_DESC, Requires<[HasMSA]>; 2321def MINI_U_W : MINI_U_W_ENC, MINI_U_W_DESC, Requires<[HasMSA]>; 2322def MINI_U_D : MINI_U_D_ENC, MINI_U_D_DESC, Requires<[HasMSA]>; 2323 2324def MOD_S_B : MOD_S_B_ENC, MOD_S_B_DESC, Requires<[HasMSA]>; 2325def MOD_S_H : MOD_S_H_ENC, MOD_S_H_DESC, Requires<[HasMSA]>; 2326def MOD_S_W : MOD_S_W_ENC, MOD_S_W_DESC, Requires<[HasMSA]>; 2327def MOD_S_D : MOD_S_D_ENC, MOD_S_D_DESC, Requires<[HasMSA]>; 2328 2329def MOD_U_B : MOD_U_B_ENC, MOD_U_B_DESC, Requires<[HasMSA]>; 2330def MOD_U_H : MOD_U_H_ENC, MOD_U_H_DESC, Requires<[HasMSA]>; 2331def MOD_U_W : MOD_U_W_ENC, MOD_U_W_DESC, Requires<[HasMSA]>; 2332def MOD_U_D : MOD_U_D_ENC, MOD_U_D_DESC, Requires<[HasMSA]>; 2333 2334def MSUB_Q_H : MSUB_Q_H_ENC, MSUB_Q_H_DESC, Requires<[HasMSA]>; 2335def MSUB_Q_W : MSUB_Q_W_ENC, MSUB_Q_W_DESC, Requires<[HasMSA]>; 2336 2337def MSUBR_Q_H : MSUBR_Q_H_ENC, MSUBR_Q_H_DESC, Requires<[HasMSA]>; 2338def MSUBR_Q_W : MSUBR_Q_W_ENC, MSUBR_Q_W_DESC, Requires<[HasMSA]>; 2339 2340def MSUBV_B : MSUBV_B_ENC, MSUBV_B_DESC, Requires<[HasMSA]>; 2341def MSUBV_H : MSUBV_H_ENC, MSUBV_H_DESC, Requires<[HasMSA]>; 2342def MSUBV_W : MSUBV_W_ENC, MSUBV_W_DESC, Requires<[HasMSA]>; 2343def MSUBV_D : MSUBV_D_ENC, MSUBV_D_DESC, Requires<[HasMSA]>; 2344 2345def MUL_Q_H : MUL_Q_H_ENC, MUL_Q_H_DESC, Requires<[HasMSA]>; 2346def MUL_Q_W : MUL_Q_W_ENC, MUL_Q_W_DESC, Requires<[HasMSA]>; 2347 2348def MULR_Q_H : MULR_Q_H_ENC, MULR_Q_H_DESC, Requires<[HasMSA]>; 2349def MULR_Q_W : MULR_Q_W_ENC, MULR_Q_W_DESC, Requires<[HasMSA]>; 2350 2351def MULV_B : MULV_B_ENC, MULV_B_DESC, Requires<[HasMSA]>; 2352def MULV_H : MULV_H_ENC, MULV_H_DESC, Requires<[HasMSA]>; 2353def MULV_W : MULV_W_ENC, MULV_W_DESC, Requires<[HasMSA]>; 2354def MULV_D : MULV_D_ENC, MULV_D_DESC, Requires<[HasMSA]>; 2355 2356def NLOC_B : NLOC_B_ENC, NLOC_B_DESC, Requires<[HasMSA]>; 2357def NLOC_H : NLOC_H_ENC, NLOC_H_DESC, Requires<[HasMSA]>; 2358def NLOC_W : NLOC_W_ENC, NLOC_W_DESC, Requires<[HasMSA]>; 2359def NLOC_D : NLOC_D_ENC, NLOC_D_DESC, Requires<[HasMSA]>; 2360 2361def NLZC_B : NLZC_B_ENC, NLZC_B_DESC, Requires<[HasMSA]>; 2362def NLZC_H : NLZC_H_ENC, NLZC_H_DESC, Requires<[HasMSA]>; 2363def NLZC_W : NLZC_W_ENC, NLZC_W_DESC, Requires<[HasMSA]>; 2364def NLZC_D : NLZC_D_ENC, NLZC_D_DESC, Requires<[HasMSA]>; 2365 2366def NORI_B : NORI_B_ENC, NORI_B_DESC, Requires<[HasMSA]>; 2367 2368def ORI_B : ORI_B_ENC, ORI_B_DESC, Requires<[HasMSA]>; 2369 2370def PCKEV_B : PCKEV_B_ENC, PCKEV_B_DESC, Requires<[HasMSA]>; 2371def PCKEV_H : PCKEV_H_ENC, PCKEV_H_DESC, Requires<[HasMSA]>; 2372def PCKEV_W : PCKEV_W_ENC, PCKEV_W_DESC, Requires<[HasMSA]>; 2373def PCKEV_D : PCKEV_D_ENC, PCKEV_D_DESC, Requires<[HasMSA]>; 2374 2375def PCKOD_B : PCKOD_B_ENC, PCKOD_B_DESC, Requires<[HasMSA]>; 2376def PCKOD_H : PCKOD_H_ENC, PCKOD_H_DESC, Requires<[HasMSA]>; 2377def PCKOD_W : PCKOD_W_ENC, PCKOD_W_DESC, Requires<[HasMSA]>; 2378def PCKOD_D : PCKOD_D_ENC, PCKOD_D_DESC, Requires<[HasMSA]>; 2379 2380def PCNT_B : PCNT_B_ENC, PCNT_B_DESC, Requires<[HasMSA]>; 2381def PCNT_H : PCNT_H_ENC, PCNT_H_DESC, Requires<[HasMSA]>; 2382def PCNT_W : PCNT_W_ENC, PCNT_W_DESC, Requires<[HasMSA]>; 2383def PCNT_D : PCNT_D_ENC, PCNT_D_DESC, Requires<[HasMSA]>; 2384 2385def SAT_S_B : SAT_S_B_ENC, SAT_S_B_DESC, Requires<[HasMSA]>; 2386def SAT_S_H : SAT_S_H_ENC, SAT_S_H_DESC, Requires<[HasMSA]>; 2387def SAT_S_W : SAT_S_W_ENC, SAT_S_W_DESC, Requires<[HasMSA]>; 2388def SAT_S_D : SAT_S_D_ENC, SAT_S_D_DESC, Requires<[HasMSA]>; 2389 2390def SAT_U_B : SAT_U_B_ENC, SAT_U_B_DESC, Requires<[HasMSA]>; 2391def SAT_U_H : SAT_U_H_ENC, SAT_U_H_DESC, Requires<[HasMSA]>; 2392def SAT_U_W : SAT_U_W_ENC, SAT_U_W_DESC, Requires<[HasMSA]>; 2393def SAT_U_D : SAT_U_D_ENC, SAT_U_D_DESC, Requires<[HasMSA]>; 2394 2395def SHF_B : SHF_B_ENC, SHF_B_DESC, Requires<[HasMSA]>; 2396def SHF_H : SHF_H_ENC, SHF_H_DESC, Requires<[HasMSA]>; 2397def SHF_W : SHF_W_ENC, SHF_W_DESC, Requires<[HasMSA]>; 2398 2399def SLD_B : SLD_B_ENC, SLD_B_DESC, Requires<[HasMSA]>; 2400def SLD_H : SLD_H_ENC, SLD_H_DESC, Requires<[HasMSA]>; 2401def SLD_W : SLD_W_ENC, SLD_W_DESC, Requires<[HasMSA]>; 2402def SLD_D : SLD_D_ENC, SLD_D_DESC, Requires<[HasMSA]>; 2403 2404def SLDI_B : SLDI_B_ENC, SLDI_B_DESC, Requires<[HasMSA]>; 2405def SLDI_H : SLDI_H_ENC, SLDI_H_DESC, Requires<[HasMSA]>; 2406def SLDI_W : SLDI_W_ENC, SLDI_W_DESC, Requires<[HasMSA]>; 2407def SLDI_D : SLDI_D_ENC, SLDI_D_DESC, Requires<[HasMSA]>; 2408 2409def SLL_B : SLL_B_ENC, SLL_B_DESC, Requires<[HasMSA]>; 2410def SLL_H : SLL_H_ENC, SLL_H_DESC, Requires<[HasMSA]>; 2411def SLL_W : SLL_W_ENC, SLL_W_DESC, Requires<[HasMSA]>; 2412def SLL_D : SLL_D_ENC, SLL_D_DESC, Requires<[HasMSA]>; 2413 2414def SLLI_B : SLLI_B_ENC, SLLI_B_DESC, Requires<[HasMSA]>; 2415def SLLI_H : SLLI_H_ENC, SLLI_H_DESC, Requires<[HasMSA]>; 2416def SLLI_W : SLLI_W_ENC, SLLI_W_DESC, Requires<[HasMSA]>; 2417def SLLI_D : SLLI_D_ENC, SLLI_D_DESC, Requires<[HasMSA]>; 2418 2419def SPLAT_B : SPLAT_B_ENC, SPLAT_B_DESC, Requires<[HasMSA]>; 2420def SPLAT_H : SPLAT_H_ENC, SPLAT_H_DESC, Requires<[HasMSA]>; 2421def SPLAT_W : SPLAT_W_ENC, SPLAT_W_DESC, Requires<[HasMSA]>; 2422def SPLAT_D : SPLAT_D_ENC, SPLAT_D_DESC, Requires<[HasMSA]>; 2423 2424def SPLATI_B : SPLATI_B_ENC, SPLATI_B_DESC, Requires<[HasMSA]>; 2425def SPLATI_H : SPLATI_H_ENC, SPLATI_H_DESC, Requires<[HasMSA]>; 2426def SPLATI_W : SPLATI_W_ENC, SPLATI_W_DESC, Requires<[HasMSA]>; 2427def SPLATI_D : SPLATI_D_ENC, SPLATI_D_DESC, Requires<[HasMSA]>; 2428 2429def SRA_B : SRA_B_ENC, SRA_B_DESC, Requires<[HasMSA]>; 2430def SRA_H : SRA_H_ENC, SRA_H_DESC, Requires<[HasMSA]>; 2431def SRA_W : SRA_W_ENC, SRA_W_DESC, Requires<[HasMSA]>; 2432def SRA_D : SRA_D_ENC, SRA_D_DESC, Requires<[HasMSA]>; 2433 2434def SRAI_B : SRAI_B_ENC, SRAI_B_DESC, Requires<[HasMSA]>; 2435def SRAI_H : SRAI_H_ENC, SRAI_H_DESC, Requires<[HasMSA]>; 2436def SRAI_W : SRAI_W_ENC, SRAI_W_DESC, Requires<[HasMSA]>; 2437def SRAI_D : SRAI_D_ENC, SRAI_D_DESC, Requires<[HasMSA]>; 2438 2439def SRL_B : SRL_B_ENC, SRL_B_DESC, Requires<[HasMSA]>; 2440def SRL_H : SRL_H_ENC, SRL_H_DESC, Requires<[HasMSA]>; 2441def SRL_W : SRL_W_ENC, SRL_W_DESC, Requires<[HasMSA]>; 2442def SRL_D : SRL_D_ENC, SRL_D_DESC, Requires<[HasMSA]>; 2443 2444def SRLI_B : SRLI_B_ENC, SRLI_B_DESC, Requires<[HasMSA]>; 2445def SRLI_H : SRLI_H_ENC, SRLI_H_DESC, Requires<[HasMSA]>; 2446def SRLI_W : SRLI_W_ENC, SRLI_W_DESC, Requires<[HasMSA]>; 2447def SRLI_D : SRLI_D_ENC, SRLI_D_DESC, Requires<[HasMSA]>; 2448 2449def ST_B: ST_B_ENC, ST_B_DESC, Requires<[HasMSA]>; 2450def ST_H: ST_H_ENC, ST_H_DESC, Requires<[HasMSA]>; 2451def ST_W: ST_W_ENC, ST_W_DESC, Requires<[HasMSA]>; 2452def ST_D: ST_D_ENC, ST_D_DESC, Requires<[HasMSA]>; 2453 2454def SUBS_S_B : SUBS_S_B_ENC, SUBS_S_B_DESC, Requires<[HasMSA]>; 2455def SUBS_S_H : SUBS_S_H_ENC, SUBS_S_H_DESC, Requires<[HasMSA]>; 2456def SUBS_S_W : SUBS_S_W_ENC, SUBS_S_W_DESC, Requires<[HasMSA]>; 2457def SUBS_S_D : SUBS_S_D_ENC, SUBS_S_D_DESC, Requires<[HasMSA]>; 2458 2459def SUBS_U_B : SUBS_U_B_ENC, SUBS_U_B_DESC, Requires<[HasMSA]>; 2460def SUBS_U_H : SUBS_U_H_ENC, SUBS_U_H_DESC, Requires<[HasMSA]>; 2461def SUBS_U_W : SUBS_U_W_ENC, SUBS_U_W_DESC, Requires<[HasMSA]>; 2462def SUBS_U_D : SUBS_U_D_ENC, SUBS_U_D_DESC, Requires<[HasMSA]>; 2463 2464def SUBSUS_U_B : SUBSUS_U_B_ENC, SUBSUS_U_B_DESC, Requires<[HasMSA]>; 2465def SUBSUS_U_H : SUBSUS_U_H_ENC, SUBSUS_U_H_DESC, Requires<[HasMSA]>; 2466def SUBSUS_U_W : SUBSUS_U_W_ENC, SUBSUS_U_W_DESC, Requires<[HasMSA]>; 2467def SUBSUS_U_D : SUBSUS_U_D_ENC, SUBSUS_U_D_DESC, Requires<[HasMSA]>; 2468 2469def SUBSUU_S_B : SUBSUU_S_B_ENC, SUBSUU_S_B_DESC, Requires<[HasMSA]>; 2470def SUBSUU_S_H : SUBSUU_S_H_ENC, SUBSUU_S_H_DESC, Requires<[HasMSA]>; 2471def SUBSUU_S_W : SUBSUU_S_W_ENC, SUBSUU_S_W_DESC, Requires<[HasMSA]>; 2472def SUBSUU_S_D : SUBSUU_S_D_ENC, SUBSUU_S_D_DESC, Requires<[HasMSA]>; 2473 2474def SUBV_B : SUBV_B_ENC, SUBV_B_DESC, Requires<[HasMSA]>; 2475def SUBV_H : SUBV_H_ENC, SUBV_H_DESC, Requires<[HasMSA]>; 2476def SUBV_W : SUBV_W_ENC, SUBV_W_DESC, Requires<[HasMSA]>; 2477def SUBV_D : SUBV_D_ENC, SUBV_D_DESC, Requires<[HasMSA]>; 2478 2479def SUBVI_B : SUBVI_B_ENC, SUBVI_B_DESC, Requires<[HasMSA]>; 2480def SUBVI_H : SUBVI_H_ENC, SUBVI_H_DESC, Requires<[HasMSA]>; 2481def SUBVI_W : SUBVI_W_ENC, SUBVI_W_DESC, Requires<[HasMSA]>; 2482def SUBVI_D : SUBVI_D_ENC, SUBVI_D_DESC, Requires<[HasMSA]>; 2483 2484def VSHF_B : VSHF_B_ENC, VSHF_B_DESC, Requires<[HasMSA]>; 2485def VSHF_H : VSHF_H_ENC, VSHF_H_DESC, Requires<[HasMSA]>; 2486def VSHF_W : VSHF_W_ENC, VSHF_W_DESC, Requires<[HasMSA]>; 2487def VSHF_D : VSHF_D_ENC, VSHF_D_DESC, Requires<[HasMSA]>; 2488 2489def XORI_B : XORI_B_ENC, XORI_B_DESC, Requires<[HasMSA]>; 2490 2491// Patterns. 2492class MSAPat<dag pattern, dag result, Predicate pred = HasMSA> : 2493 Pat<pattern, result>, Requires<[pred]>; 2494 2495def LD_FH : MSAPat<(v8f16 (load addr:$addr)), 2496 (LD_H addr:$addr)>; 2497def LD_FW : MSAPat<(v4f32 (load addr:$addr)), 2498 (LD_W addr:$addr)>; 2499def LD_FD : MSAPat<(v2f64 (load addr:$addr)), 2500 (LD_D addr:$addr)>; 2501 2502def ST_FH : MSAPat<(store (v8f16 MSA128:$ws), addr:$addr), 2503 (ST_H MSA128:$ws, addr:$addr)>; 2504def ST_FW : MSAPat<(store (v4f32 MSA128:$ws), addr:$addr), 2505 (ST_W MSA128:$ws, addr:$addr)>; 2506def ST_FD : MSAPat<(store (v2f64 MSA128:$ws), addr:$addr), 2507 (ST_D MSA128:$ws, addr:$addr)>; 2508