1//===- LoongArchLSXInstrInfo.td - LoongArch LSX instructions -*- tablegen -*-=// 2// 3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4// See https://llvm.org/LICENSE.txt for license information. 5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6// 7//===----------------------------------------------------------------------===// 8// 9// This file describes the SIMD extension instructions. 10// 11//===----------------------------------------------------------------------===// 12 13//===----------------------------------------------------------------------===// 14// Instruction class templates 15//===----------------------------------------------------------------------===// 16 17class LSX1RI13_VI<bits<32> op, Operand ImmOpnd = simm13> 18 : Fmt1RI13_VI<op, (outs LSX128:$vd), (ins ImmOpnd:$imm13), "$vd, $imm13">; 19 20class LSX2R_VV<bits<32> op> 21 : Fmt2R_VV<op, (outs LSX128:$vd), (ins LSX128:$vj), "$vd, $vj">; 22 23class LSX2R_VR<bits<32> op> 24 : Fmt2R_VR<op, (outs LSX128:$vd), (ins GPR:$rj), "$vd, $rj">; 25 26class LSX2R_CV<bits<32> op> 27 : Fmt2R_CV<op, (outs CFR:$cd), (ins LSX128:$vj), "$cd, $vj">; 28 29class LSX2RI1_VVI<bits<32> op, Operand ImmOpnd = uimm1> 30 : Fmt2RI1_VVI<op, (outs LSX128:$vd), (ins LSX128:$vj, ImmOpnd:$imm1), 31 "$vd, $vj, $imm1">; 32 33class LSX2RI1_RVI<bits<32> op, Operand ImmOpnd = uimm1> 34 : Fmt2RI1_RVI<op, (outs GPR:$rd), (ins LSX128:$vj, ImmOpnd:$imm1), 35 "$rd, $vj, $imm1">; 36 37class LSX2RI2_VVI<bits<32> op, Operand ImmOpnd = uimm2> 38 : Fmt2RI2_VVI<op, (outs LSX128:$vd), (ins LSX128:$vj, ImmOpnd:$imm2), 39 "$vd, $vj, $imm2">; 40 41class LSX2RI2_RVI<bits<32> op, Operand ImmOpnd = uimm2> 42 : Fmt2RI2_RVI<op, (outs GPR:$rd), (ins LSX128:$vj, ImmOpnd:$imm2), 43 "$rd, $vj, $imm2">; 44 45class LSX2RI3_VVI<bits<32> op, Operand ImmOpnd = uimm3> 46 : Fmt2RI3_VVI<op, (outs LSX128:$vd), (ins LSX128:$vj, ImmOpnd:$imm3), 47 "$vd, $vj, $imm3">; 48 49class LSX2RI3_RVI<bits<32> op, Operand ImmOpnd = uimm3> 50 : Fmt2RI3_RVI<op, (outs GPR:$rd), (ins LSX128:$vj, ImmOpnd:$imm3), 51 "$rd, $vj, $imm3">; 52 53class LSX2RI4_VVI<bits<32> op, Operand ImmOpnd = uimm4> 54 : Fmt2RI4_VVI<op, (outs LSX128:$vd), (ins LSX128:$vj, ImmOpnd:$imm4), 55 "$vd, $vj, $imm4">; 56 57class LSX2RI4_RVI<bits<32> op, Operand ImmOpnd = uimm4> 58 : Fmt2RI4_RVI<op, (outs GPR:$rd), (ins LSX128:$vj, ImmOpnd:$imm4), 59 "$rd, $vj, $imm4">; 60 61class LSX2RI5_VVI<bits<32> op, Operand ImmOpnd = uimm5> 62 : Fmt2RI5_VVI<op, (outs LSX128:$vd), (ins LSX128:$vj, ImmOpnd:$imm5), 63 "$vd, $vj, $imm5">; 64 65class LSX2RI6_VVI<bits<32> op, Operand ImmOpnd = uimm6> 66 : Fmt2RI6_VVI<op, (outs LSX128:$vd), (ins LSX128:$vj, ImmOpnd:$imm6), 67 "$vd, $vj, $imm6">; 68 69class LSX2RI8_VVI<bits<32> op, Operand ImmOpnd = uimm8> 70 : Fmt2RI8_VVI<op, (outs LSX128:$vd), (ins LSX128:$vj, ImmOpnd:$imm8), 71 "$vd, $vj, $imm8">; 72 73class LSX2RI8I1_VRII<bits<32> op, Operand ImmOpnd = simm8, 74 Operand IdxOpnd = uimm1> 75 : Fmt2RI8I1_VRII<op, (outs), 76 (ins LSX128:$vd, GPR:$rj, ImmOpnd:$imm8, IdxOpnd:$imm1), 77 "$vd, $rj, $imm8, $imm1">; 78class LSX2RI8I2_VRII<bits<32> op, Operand ImmOpnd = simm8, 79 Operand IdxOpnd = uimm2> 80 : Fmt2RI8I2_VRII<op, (outs), 81 (ins LSX128:$vd, GPR:$rj, ImmOpnd:$imm8, IdxOpnd:$imm2), 82 "$vd, $rj, $imm8, $imm2">; 83class LSX2RI8I3_VRII<bits<32> op, Operand ImmOpnd = simm8, 84 Operand IdxOpnd = uimm3> 85 : Fmt2RI8I3_VRII<op, (outs), 86 (ins LSX128:$vd, GPR:$rj, ImmOpnd:$imm8, IdxOpnd:$imm3), 87 "$vd, $rj, $imm8, $imm3">; 88class LSX2RI8I4_VRII<bits<32> op, Operand ImmOpnd = simm8, 89 Operand IdxOpnd = uimm4> 90 : Fmt2RI8I4_VRII<op, (outs), 91 (ins LSX128:$vd, GPR:$rj, ImmOpnd:$imm8, IdxOpnd:$imm4), 92 "$vd, $rj, $imm8, $imm4">; 93 94class LSX3R_VVV<bits<32> op> 95 : Fmt3R_VVV<op, (outs LSX128:$vd), (ins LSX128:$vj, LSX128:$vk), 96 "$vd, $vj, $vk">; 97 98class LSX3R_VVR<bits<32> op> 99 : Fmt3R_VVR<op, (outs LSX128:$vd), (ins LSX128:$vj, GPR:$rk), 100 "$vd, $vj, $rk">; 101 102class LSX4R_VVVV<bits<32> op> 103 : Fmt4R_VVVV<op, (outs LSX128:$vd), 104 (ins LSX128:$vj, LSX128:$vk, LSX128:$va), 105 "$vd, $vj, $vk, $va">; 106 107let Constraints = "$vd = $dst" in { 108 109class LSX2RI1_VVRI<bits<32> op, Operand ImmOpnd = uimm1> 110 : Fmt2RI1_VRI<op, (outs LSX128:$dst), (ins LSX128:$vd, GPR:$rj, ImmOpnd:$imm1), 111 "$vd, $rj, $imm1">; 112class LSX2RI2_VVRI<bits<32> op, Operand ImmOpnd = uimm2> 113 : Fmt2RI2_VRI<op, (outs LSX128:$dst), (ins LSX128:$vd, GPR:$rj, ImmOpnd:$imm2), 114 "$vd, $rj, $imm2">; 115class LSX2RI3_VVRI<bits<32> op, Operand ImmOpnd = uimm3> 116 : Fmt2RI3_VRI<op, (outs LSX128:$dst), (ins LSX128:$vd, GPR:$rj, ImmOpnd:$imm3), 117 "$vd, $rj, $imm3">; 118class LSX2RI4_VVRI<bits<32> op, Operand ImmOpnd = uimm4> 119 : Fmt2RI4_VRI<op, (outs LSX128:$dst), (ins LSX128:$vd, GPR:$rj, ImmOpnd:$imm4), 120 "$vd, $rj, $imm4">; 121 122class LSX2RI4_VVVI<bits<32> op, Operand ImmOpnd = uimm4> 123 : Fmt2RI4_VVI<op, (outs LSX128:$dst), (ins LSX128:$vd, LSX128:$vj, ImmOpnd:$imm4), 124 "$vd, $vj, $imm4">; 125class LSX2RI5_VVVI<bits<32> op, Operand ImmOpnd = uimm5> 126 : Fmt2RI5_VVI<op, (outs LSX128:$dst), (ins LSX128:$vd, LSX128:$vj, ImmOpnd:$imm5), 127 "$vd, $vj, $imm5">; 128class LSX2RI6_VVVI<bits<32> op, Operand ImmOpnd = uimm6> 129 : Fmt2RI6_VVI<op, (outs LSX128:$dst), (ins LSX128:$vd, LSX128:$vj, ImmOpnd:$imm6), 130 "$vd, $vj, $imm6">; 131class LSX2RI7_VVVI<bits<32> op, Operand ImmOpnd = uimm7> 132 : Fmt2RI7_VVI<op, (outs LSX128:$dst), (ins LSX128:$vd, LSX128:$vj, ImmOpnd:$imm7), 133 "$vd, $vj, $imm7">; 134 135class LSX2RI8_VVVI<bits<32> op, Operand ImmOpnd = uimm8> 136 : Fmt2RI8_VVI<op, (outs LSX128:$dst), (ins LSX128:$vd, LSX128:$vj, ImmOpnd:$imm8), 137 "$vd, $vj, $imm8">; 138 139class LSX3R_VVVV<bits<32> op> 140 : Fmt3R_VVV<op, (outs LSX128:$dst), (ins LSX128:$vd, LSX128:$vj, LSX128:$vk), 141 "$vd, $vj, $vk">; 142 143} // Constraints = "$vd = $dst" 144 145class LSX2RI9_Load<bits<32> op, Operand ImmOpnd = simm9_lsl3> 146 : Fmt2RI9_VRI<op, (outs LSX128:$vd), (ins GPR:$rj, ImmOpnd:$imm9), 147 "$vd, $rj, $imm9">; 148class LSX2RI10_Load<bits<32> op, Operand ImmOpnd = simm10_lsl2> 149 : Fmt2RI10_VRI<op, (outs LSX128:$vd), (ins GPR:$rj, ImmOpnd:$imm10), 150 "$vd, $rj, $imm10">; 151class LSX2RI11_Load<bits<32> op, Operand ImmOpnd = simm11_lsl1> 152 : Fmt2RI11_VRI<op, (outs LSX128:$vd), (ins GPR:$rj, ImmOpnd:$imm11), 153 "$vd, $rj, $imm11">; 154class LSX2RI12_Load<bits<32> op, Operand ImmOpnd = simm12> 155 : Fmt2RI12_VRI<op, (outs LSX128:$vd), (ins GPR:$rj, ImmOpnd:$imm12), 156 "$vd, $rj, $imm12">; 157class LSX2RI12_Store<bits<32> op, Operand ImmOpnd = simm12> 158 : Fmt2RI12_VRI<op, (outs), (ins LSX128:$vd, GPR:$rj, ImmOpnd:$imm12), 159 "$vd, $rj, $imm12">; 160 161class LSX3R_Load<bits<32> op> 162 : Fmt3R_VRR<op, (outs LSX128:$vd), (ins GPR:$rj, GPR:$rk), 163 "$vd, $rj, $rk">; 164class LSX3R_Store<bits<32> op> 165 : Fmt3R_VRR<op, (outs), (ins LSX128:$vd, GPR:$rj, GPR:$rk), 166 "$vd, $rj, $rk">; 167 168//===----------------------------------------------------------------------===// 169// Instructions 170//===----------------------------------------------------------------------===// 171 172let hasSideEffects = 0, Predicates = [HasExtLSX] in { 173 174let mayLoad = 0, mayStore = 0 in { 175 176def VADD_B : LSX3R_VVV<0x700a0000>; 177def VADD_H : LSX3R_VVV<0x700a8000>; 178def VADD_W : LSX3R_VVV<0x700b0000>; 179def VADD_D : LSX3R_VVV<0x700b8000>; 180def VADD_Q : LSX3R_VVV<0x712d0000>; 181 182def VSUB_B : LSX3R_VVV<0x700c0000>; 183def VSUB_H : LSX3R_VVV<0x700c8000>; 184def VSUB_W : LSX3R_VVV<0x700d0000>; 185def VSUB_D : LSX3R_VVV<0x700d8000>; 186def VSUB_Q : LSX3R_VVV<0x712d8000>; 187 188def VADDI_BU : LSX2RI5_VVI<0x728a0000>; 189def VADDI_HU : LSX2RI5_VVI<0x728a8000>; 190def VADDI_WU : LSX2RI5_VVI<0x728b0000>; 191def VADDI_DU : LSX2RI5_VVI<0x728b8000>; 192 193def VSUBI_BU : LSX2RI5_VVI<0x728c0000>; 194def VSUBI_HU : LSX2RI5_VVI<0x728c8000>; 195def VSUBI_WU : LSX2RI5_VVI<0x728d0000>; 196def VSUBI_DU : LSX2RI5_VVI<0x728d8000>; 197 198def VNEG_B : LSX2R_VV<0x729c3000>; 199def VNEG_H : LSX2R_VV<0x729c3400>; 200def VNEG_W : LSX2R_VV<0x729c3800>; 201def VNEG_D : LSX2R_VV<0x729c3c00>; 202 203def VSADD_B : LSX3R_VVV<0x70460000>; 204def VSADD_H : LSX3R_VVV<0x70468000>; 205def VSADD_W : LSX3R_VVV<0x70470000>; 206def VSADD_D : LSX3R_VVV<0x70478000>; 207def VSADD_BU : LSX3R_VVV<0x704a0000>; 208def VSADD_HU : LSX3R_VVV<0x704a8000>; 209def VSADD_WU : LSX3R_VVV<0x704b0000>; 210def VSADD_DU : LSX3R_VVV<0x704b8000>; 211 212def VSSUB_B : LSX3R_VVV<0x70480000>; 213def VSSUB_H : LSX3R_VVV<0x70488000>; 214def VSSUB_W : LSX3R_VVV<0x70490000>; 215def VSSUB_D : LSX3R_VVV<0x70498000>; 216def VSSUB_BU : LSX3R_VVV<0x704c0000>; 217def VSSUB_HU : LSX3R_VVV<0x704c8000>; 218def VSSUB_WU : LSX3R_VVV<0x704d0000>; 219def VSSUB_DU : LSX3R_VVV<0x704d8000>; 220 221def VHADDW_H_B : LSX3R_VVV<0x70540000>; 222def VHADDW_W_H : LSX3R_VVV<0x70548000>; 223def VHADDW_D_W : LSX3R_VVV<0x70550000>; 224def VHADDW_Q_D : LSX3R_VVV<0x70558000>; 225def VHADDW_HU_BU : LSX3R_VVV<0x70580000>; 226def VHADDW_WU_HU : LSX3R_VVV<0x70588000>; 227def VHADDW_DU_WU : LSX3R_VVV<0x70590000>; 228def VHADDW_QU_DU : LSX3R_VVV<0x70598000>; 229 230def VHSUBW_H_B : LSX3R_VVV<0x70560000>; 231def VHSUBW_W_H : LSX3R_VVV<0x70568000>; 232def VHSUBW_D_W : LSX3R_VVV<0x70570000>; 233def VHSUBW_Q_D : LSX3R_VVV<0x70578000>; 234def VHSUBW_HU_BU : LSX3R_VVV<0x705a0000>; 235def VHSUBW_WU_HU : LSX3R_VVV<0x705a8000>; 236def VHSUBW_DU_WU : LSX3R_VVV<0x705b0000>; 237def VHSUBW_QU_DU : LSX3R_VVV<0x705b8000>; 238 239def VADDWEV_H_B : LSX3R_VVV<0x701e0000>; 240def VADDWEV_W_H : LSX3R_VVV<0x701e8000>; 241def VADDWEV_D_W : LSX3R_VVV<0x701f0000>; 242def VADDWEV_Q_D : LSX3R_VVV<0x701f8000>; 243def VADDWOD_H_B : LSX3R_VVV<0x70220000>; 244def VADDWOD_W_H : LSX3R_VVV<0x70228000>; 245def VADDWOD_D_W : LSX3R_VVV<0x70230000>; 246def VADDWOD_Q_D : LSX3R_VVV<0x70238000>; 247 248def VSUBWEV_H_B : LSX3R_VVV<0x70200000>; 249def VSUBWEV_W_H : LSX3R_VVV<0x70208000>; 250def VSUBWEV_D_W : LSX3R_VVV<0x70210000>; 251def VSUBWEV_Q_D : LSX3R_VVV<0x70218000>; 252def VSUBWOD_H_B : LSX3R_VVV<0x70240000>; 253def VSUBWOD_W_H : LSX3R_VVV<0x70248000>; 254def VSUBWOD_D_W : LSX3R_VVV<0x70250000>; 255def VSUBWOD_Q_D : LSX3R_VVV<0x70258000>; 256 257def VADDWEV_H_BU : LSX3R_VVV<0x702e0000>; 258def VADDWEV_W_HU : LSX3R_VVV<0x702e8000>; 259def VADDWEV_D_WU : LSX3R_VVV<0x702f0000>; 260def VADDWEV_Q_DU : LSX3R_VVV<0x702f8000>; 261def VADDWOD_H_BU : LSX3R_VVV<0x70320000>; 262def VADDWOD_W_HU : LSX3R_VVV<0x70328000>; 263def VADDWOD_D_WU : LSX3R_VVV<0x70330000>; 264def VADDWOD_Q_DU : LSX3R_VVV<0x70338000>; 265 266def VSUBWEV_H_BU : LSX3R_VVV<0x70300000>; 267def VSUBWEV_W_HU : LSX3R_VVV<0x70308000>; 268def VSUBWEV_D_WU : LSX3R_VVV<0x70310000>; 269def VSUBWEV_Q_DU : LSX3R_VVV<0x70318000>; 270def VSUBWOD_H_BU : LSX3R_VVV<0x70340000>; 271def VSUBWOD_W_HU : LSX3R_VVV<0x70348000>; 272def VSUBWOD_D_WU : LSX3R_VVV<0x70350000>; 273def VSUBWOD_Q_DU : LSX3R_VVV<0x70358000>; 274 275def VADDWEV_H_BU_B : LSX3R_VVV<0x703e0000>; 276def VADDWEV_W_HU_H : LSX3R_VVV<0x703e8000>; 277def VADDWEV_D_WU_W : LSX3R_VVV<0x703f0000>; 278def VADDWEV_Q_DU_D : LSX3R_VVV<0x703f8000>; 279def VADDWOD_H_BU_B : LSX3R_VVV<0x70400000>; 280def VADDWOD_W_HU_H : LSX3R_VVV<0x70408000>; 281def VADDWOD_D_WU_W : LSX3R_VVV<0x70410000>; 282def VADDWOD_Q_DU_D : LSX3R_VVV<0x70418000>; 283 284def VAVG_B : LSX3R_VVV<0x70640000>; 285def VAVG_H : LSX3R_VVV<0x70648000>; 286def VAVG_W : LSX3R_VVV<0x70650000>; 287def VAVG_D : LSX3R_VVV<0x70658000>; 288def VAVG_BU : LSX3R_VVV<0x70660000>; 289def VAVG_HU : LSX3R_VVV<0x70668000>; 290def VAVG_WU : LSX3R_VVV<0x70670000>; 291def VAVG_DU : LSX3R_VVV<0x70678000>; 292def VAVGR_B : LSX3R_VVV<0x70680000>; 293def VAVGR_H : LSX3R_VVV<0x70688000>; 294def VAVGR_W : LSX3R_VVV<0x70690000>; 295def VAVGR_D : LSX3R_VVV<0x70698000>; 296def VAVGR_BU : LSX3R_VVV<0x706a0000>; 297def VAVGR_HU : LSX3R_VVV<0x706a8000>; 298def VAVGR_WU : LSX3R_VVV<0x706b0000>; 299def VAVGR_DU : LSX3R_VVV<0x706b8000>; 300 301def VABSD_B : LSX3R_VVV<0x70600000>; 302def VABSD_H : LSX3R_VVV<0x70608000>; 303def VABSD_W : LSX3R_VVV<0x70610000>; 304def VABSD_D : LSX3R_VVV<0x70618000>; 305def VABSD_BU : LSX3R_VVV<0x70620000>; 306def VABSD_HU : LSX3R_VVV<0x70628000>; 307def VABSD_WU : LSX3R_VVV<0x70630000>; 308def VABSD_DU : LSX3R_VVV<0x70638000>; 309 310def VADDA_B : LSX3R_VVV<0x705c0000>; 311def VADDA_H : LSX3R_VVV<0x705c8000>; 312def VADDA_W : LSX3R_VVV<0x705d0000>; 313def VADDA_D : LSX3R_VVV<0x705d8000>; 314 315def VMAX_B : LSX3R_VVV<0x70700000>; 316def VMAX_H : LSX3R_VVV<0x70708000>; 317def VMAX_W : LSX3R_VVV<0x70710000>; 318def VMAX_D : LSX3R_VVV<0x70718000>; 319def VMAXI_B : LSX2RI5_VVI<0x72900000, simm5>; 320def VMAXI_H : LSX2RI5_VVI<0x72908000, simm5>; 321def VMAXI_W : LSX2RI5_VVI<0x72910000, simm5>; 322def VMAXI_D : LSX2RI5_VVI<0x72918000, simm5>; 323def VMAX_BU : LSX3R_VVV<0x70740000>; 324def VMAX_HU : LSX3R_VVV<0x70748000>; 325def VMAX_WU : LSX3R_VVV<0x70750000>; 326def VMAX_DU : LSX3R_VVV<0x70758000>; 327def VMAXI_BU : LSX2RI5_VVI<0x72940000>; 328def VMAXI_HU : LSX2RI5_VVI<0x72948000>; 329def VMAXI_WU : LSX2RI5_VVI<0x72950000>; 330def VMAXI_DU : LSX2RI5_VVI<0x72958000>; 331 332def VMIN_B : LSX3R_VVV<0x70720000>; 333def VMIN_H : LSX3R_VVV<0x70728000>; 334def VMIN_W : LSX3R_VVV<0x70730000>; 335def VMIN_D : LSX3R_VVV<0x70738000>; 336def VMINI_B : LSX2RI5_VVI<0x72920000, simm5>; 337def VMINI_H : LSX2RI5_VVI<0x72928000, simm5>; 338def VMINI_W : LSX2RI5_VVI<0x72930000, simm5>; 339def VMINI_D : LSX2RI5_VVI<0x72938000, simm5>; 340def VMIN_BU : LSX3R_VVV<0x70760000>; 341def VMIN_HU : LSX3R_VVV<0x70768000>; 342def VMIN_WU : LSX3R_VVV<0x70770000>; 343def VMIN_DU : LSX3R_VVV<0x70778000>; 344def VMINI_BU : LSX2RI5_VVI<0x72960000>; 345def VMINI_HU : LSX2RI5_VVI<0x72968000>; 346def VMINI_WU : LSX2RI5_VVI<0x72970000>; 347def VMINI_DU : LSX2RI5_VVI<0x72978000>; 348 349def VMUL_B : LSX3R_VVV<0x70840000>; 350def VMUL_H : LSX3R_VVV<0x70848000>; 351def VMUL_W : LSX3R_VVV<0x70850000>; 352def VMUL_D : LSX3R_VVV<0x70858000>; 353 354def VMUH_B : LSX3R_VVV<0x70860000>; 355def VMUH_H : LSX3R_VVV<0x70868000>; 356def VMUH_W : LSX3R_VVV<0x70870000>; 357def VMUH_D : LSX3R_VVV<0x70878000>; 358def VMUH_BU : LSX3R_VVV<0x70880000>; 359def VMUH_HU : LSX3R_VVV<0x70888000>; 360def VMUH_WU : LSX3R_VVV<0x70890000>; 361def VMUH_DU : LSX3R_VVV<0x70898000>; 362 363def VMULWEV_H_B : LSX3R_VVV<0x70900000>; 364def VMULWEV_W_H : LSX3R_VVV<0x70908000>; 365def VMULWEV_D_W : LSX3R_VVV<0x70910000>; 366def VMULWEV_Q_D : LSX3R_VVV<0x70918000>; 367def VMULWOD_H_B : LSX3R_VVV<0x70920000>; 368def VMULWOD_W_H : LSX3R_VVV<0x70928000>; 369def VMULWOD_D_W : LSX3R_VVV<0x70930000>; 370def VMULWOD_Q_D : LSX3R_VVV<0x70938000>; 371def VMULWEV_H_BU : LSX3R_VVV<0x70980000>; 372def VMULWEV_W_HU : LSX3R_VVV<0x70988000>; 373def VMULWEV_D_WU : LSX3R_VVV<0x70990000>; 374def VMULWEV_Q_DU : LSX3R_VVV<0x70998000>; 375def VMULWOD_H_BU : LSX3R_VVV<0x709a0000>; 376def VMULWOD_W_HU : LSX3R_VVV<0x709a8000>; 377def VMULWOD_D_WU : LSX3R_VVV<0x709b0000>; 378def VMULWOD_Q_DU : LSX3R_VVV<0x709b8000>; 379def VMULWEV_H_BU_B : LSX3R_VVV<0x70a00000>; 380def VMULWEV_W_HU_H : LSX3R_VVV<0x70a08000>; 381def VMULWEV_D_WU_W : LSX3R_VVV<0x70a10000>; 382def VMULWEV_Q_DU_D : LSX3R_VVV<0x70a18000>; 383def VMULWOD_H_BU_B : LSX3R_VVV<0x70a20000>; 384def VMULWOD_W_HU_H : LSX3R_VVV<0x70a28000>; 385def VMULWOD_D_WU_W : LSX3R_VVV<0x70a30000>; 386def VMULWOD_Q_DU_D : LSX3R_VVV<0x70a38000>; 387 388def VMADD_B : LSX3R_VVVV<0x70a80000>; 389def VMADD_H : LSX3R_VVVV<0x70a88000>; 390def VMADD_W : LSX3R_VVVV<0x70a90000>; 391def VMADD_D : LSX3R_VVVV<0x70a98000>; 392 393def VMSUB_B : LSX3R_VVVV<0x70aa0000>; 394def VMSUB_H : LSX3R_VVVV<0x70aa8000>; 395def VMSUB_W : LSX3R_VVVV<0x70ab0000>; 396def VMSUB_D : LSX3R_VVVV<0x70ab8000>; 397 398def VMADDWEV_H_B : LSX3R_VVVV<0x70ac0000>; 399def VMADDWEV_W_H : LSX3R_VVVV<0x70ac8000>; 400def VMADDWEV_D_W : LSX3R_VVVV<0x70ad0000>; 401def VMADDWEV_Q_D : LSX3R_VVVV<0x70ad8000>; 402def VMADDWOD_H_B : LSX3R_VVVV<0x70ae0000>; 403def VMADDWOD_W_H : LSX3R_VVVV<0x70ae8000>; 404def VMADDWOD_D_W : LSX3R_VVVV<0x70af0000>; 405def VMADDWOD_Q_D : LSX3R_VVVV<0x70af8000>; 406def VMADDWEV_H_BU : LSX3R_VVVV<0x70b40000>; 407def VMADDWEV_W_HU : LSX3R_VVVV<0x70b48000>; 408def VMADDWEV_D_WU : LSX3R_VVVV<0x70b50000>; 409def VMADDWEV_Q_DU : LSX3R_VVVV<0x70b58000>; 410def VMADDWOD_H_BU : LSX3R_VVVV<0x70b60000>; 411def VMADDWOD_W_HU : LSX3R_VVVV<0x70b68000>; 412def VMADDWOD_D_WU : LSX3R_VVVV<0x70b70000>; 413def VMADDWOD_Q_DU : LSX3R_VVVV<0x70b78000>; 414def VMADDWEV_H_BU_B : LSX3R_VVVV<0x70bc0000>; 415def VMADDWEV_W_HU_H : LSX3R_VVVV<0x70bc8000>; 416def VMADDWEV_D_WU_W : LSX3R_VVVV<0x70bd0000>; 417def VMADDWEV_Q_DU_D : LSX3R_VVVV<0x70bd8000>; 418def VMADDWOD_H_BU_B : LSX3R_VVVV<0x70be0000>; 419def VMADDWOD_W_HU_H : LSX3R_VVVV<0x70be8000>; 420def VMADDWOD_D_WU_W : LSX3R_VVVV<0x70bf0000>; 421def VMADDWOD_Q_DU_D : LSX3R_VVVV<0x70bf8000>; 422 423def VDIV_B : LSX3R_VVV<0x70e00000>; 424def VDIV_H : LSX3R_VVV<0x70e08000>; 425def VDIV_W : LSX3R_VVV<0x70e10000>; 426def VDIV_D : LSX3R_VVV<0x70e18000>; 427def VDIV_BU : LSX3R_VVV<0x70e40000>; 428def VDIV_HU : LSX3R_VVV<0x70e48000>; 429def VDIV_WU : LSX3R_VVV<0x70e50000>; 430def VDIV_DU : LSX3R_VVV<0x70e58000>; 431 432def VMOD_B : LSX3R_VVV<0x70e20000>; 433def VMOD_H : LSX3R_VVV<0x70e28000>; 434def VMOD_W : LSX3R_VVV<0x70e30000>; 435def VMOD_D : LSX3R_VVV<0x70e38000>; 436def VMOD_BU : LSX3R_VVV<0x70e60000>; 437def VMOD_HU : LSX3R_VVV<0x70e68000>; 438def VMOD_WU : LSX3R_VVV<0x70e70000>; 439def VMOD_DU : LSX3R_VVV<0x70e78000>; 440 441def VSAT_B : LSX2RI3_VVI<0x73242000>; 442def VSAT_H : LSX2RI4_VVI<0x73244000>; 443def VSAT_W : LSX2RI5_VVI<0x73248000>; 444def VSAT_D : LSX2RI6_VVI<0x73250000>; 445def VSAT_BU : LSX2RI3_VVI<0x73282000>; 446def VSAT_HU : LSX2RI4_VVI<0x73284000>; 447def VSAT_WU : LSX2RI5_VVI<0x73288000>; 448def VSAT_DU : LSX2RI6_VVI<0x73290000>; 449 450def VEXTH_H_B : LSX2R_VV<0x729ee000>; 451def VEXTH_W_H : LSX2R_VV<0x729ee400>; 452def VEXTH_D_W : LSX2R_VV<0x729ee800>; 453def VEXTH_Q_D : LSX2R_VV<0x729eec00>; 454def VEXTH_HU_BU : LSX2R_VV<0x729ef000>; 455def VEXTH_WU_HU : LSX2R_VV<0x729ef400>; 456def VEXTH_DU_WU : LSX2R_VV<0x729ef800>; 457def VEXTH_QU_DU : LSX2R_VV<0x729efc00>; 458 459def VSIGNCOV_B : LSX3R_VVV<0x712e0000>; 460def VSIGNCOV_H : LSX3R_VVV<0x712e8000>; 461def VSIGNCOV_W : LSX3R_VVV<0x712f0000>; 462def VSIGNCOV_D : LSX3R_VVV<0x712f8000>; 463 464def VMSKLTZ_B : LSX2R_VV<0x729c4000>; 465def VMSKLTZ_H : LSX2R_VV<0x729c4400>; 466def VMSKLTZ_W : LSX2R_VV<0x729c4800>; 467def VMSKLTZ_D : LSX2R_VV<0x729c4c00>; 468 469def VMSKGEZ_B : LSX2R_VV<0x729c5000>; 470 471def VMSKNZ_B : LSX2R_VV<0x729c6000>; 472 473def VLDI : LSX1RI13_VI<0x73e00000>; 474 475def VAND_V : LSX3R_VVV<0x71260000>; 476def VOR_V : LSX3R_VVV<0x71268000>; 477def VXOR_V : LSX3R_VVV<0x71270000>; 478def VNOR_V : LSX3R_VVV<0x71278000>; 479def VANDN_V : LSX3R_VVV<0x71280000>; 480def VORN_V : LSX3R_VVV<0x71288000>; 481 482def VANDI_B : LSX2RI8_VVI<0x73d00000>; 483def VORI_B : LSX2RI8_VVI<0x73d40000>; 484def VXORI_B : LSX2RI8_VVI<0x73d80000>; 485def VNORI_B : LSX2RI8_VVI<0x73dc0000>; 486 487def VSLL_B : LSX3R_VVV<0x70e80000>; 488def VSLL_H : LSX3R_VVV<0x70e88000>; 489def VSLL_W : LSX3R_VVV<0x70e90000>; 490def VSLL_D : LSX3R_VVV<0x70e98000>; 491def VSLLI_B : LSX2RI3_VVI<0x732c2000>; 492def VSLLI_H : LSX2RI4_VVI<0x732c4000>; 493def VSLLI_W : LSX2RI5_VVI<0x732c8000>; 494def VSLLI_D : LSX2RI6_VVI<0x732d0000>; 495 496def VSRL_B : LSX3R_VVV<0x70ea0000>; 497def VSRL_H : LSX3R_VVV<0x70ea8000>; 498def VSRL_W : LSX3R_VVV<0x70eb0000>; 499def VSRL_D : LSX3R_VVV<0x70eb8000>; 500def VSRLI_B : LSX2RI3_VVI<0x73302000>; 501def VSRLI_H : LSX2RI4_VVI<0x73304000>; 502def VSRLI_W : LSX2RI5_VVI<0x73308000>; 503def VSRLI_D : LSX2RI6_VVI<0x73310000>; 504 505def VSRA_B : LSX3R_VVV<0x70ec0000>; 506def VSRA_H : LSX3R_VVV<0x70ec8000>; 507def VSRA_W : LSX3R_VVV<0x70ed0000>; 508def VSRA_D : LSX3R_VVV<0x70ed8000>; 509def VSRAI_B : LSX2RI3_VVI<0x73342000>; 510def VSRAI_H : LSX2RI4_VVI<0x73344000>; 511def VSRAI_W : LSX2RI5_VVI<0x73348000>; 512def VSRAI_D : LSX2RI6_VVI<0x73350000>; 513 514def VROTR_B : LSX3R_VVV<0x70ee0000>; 515def VROTR_H : LSX3R_VVV<0x70ee8000>; 516def VROTR_W : LSX3R_VVV<0x70ef0000>; 517def VROTR_D : LSX3R_VVV<0x70ef8000>; 518def VROTRI_B : LSX2RI3_VVI<0x72a02000>; 519def VROTRI_H : LSX2RI4_VVI<0x72a04000>; 520def VROTRI_W : LSX2RI5_VVI<0x72a08000>; 521def VROTRI_D : LSX2RI6_VVI<0x72a10000>; 522 523def VSLLWIL_H_B : LSX2RI3_VVI<0x73082000>; 524def VSLLWIL_W_H : LSX2RI4_VVI<0x73084000>; 525def VSLLWIL_D_W : LSX2RI5_VVI<0x73088000>; 526def VEXTL_Q_D : LSX2R_VV<0x73090000>; 527def VSLLWIL_HU_BU : LSX2RI3_VVI<0x730c2000>; 528def VSLLWIL_WU_HU : LSX2RI4_VVI<0x730c4000>; 529def VSLLWIL_DU_WU : LSX2RI5_VVI<0x730c8000>; 530def VEXTL_QU_DU : LSX2R_VV<0x730d0000>; 531 532def VSRLR_B : LSX3R_VVV<0x70f00000>; 533def VSRLR_H : LSX3R_VVV<0x70f08000>; 534def VSRLR_W : LSX3R_VVV<0x70f10000>; 535def VSRLR_D : LSX3R_VVV<0x70f18000>; 536def VSRLRI_B : LSX2RI3_VVI<0x72a42000>; 537def VSRLRI_H : LSX2RI4_VVI<0x72a44000>; 538def VSRLRI_W : LSX2RI5_VVI<0x72a48000>; 539def VSRLRI_D : LSX2RI6_VVI<0x72a50000>; 540 541def VSRAR_B : LSX3R_VVV<0x70f20000>; 542def VSRAR_H : LSX3R_VVV<0x70f28000>; 543def VSRAR_W : LSX3R_VVV<0x70f30000>; 544def VSRAR_D : LSX3R_VVV<0x70f38000>; 545def VSRARI_B : LSX2RI3_VVI<0x72a82000>; 546def VSRARI_H : LSX2RI4_VVI<0x72a84000>; 547def VSRARI_W : LSX2RI5_VVI<0x72a88000>; 548def VSRARI_D : LSX2RI6_VVI<0x72a90000>; 549 550def VSRLN_B_H : LSX3R_VVV<0x70f48000>; 551def VSRLN_H_W : LSX3R_VVV<0x70f50000>; 552def VSRLN_W_D : LSX3R_VVV<0x70f58000>; 553def VSRAN_B_H : LSX3R_VVV<0x70f68000>; 554def VSRAN_H_W : LSX3R_VVV<0x70f70000>; 555def VSRAN_W_D : LSX3R_VVV<0x70f78000>; 556 557def VSRLNI_B_H : LSX2RI4_VVVI<0x73404000>; 558def VSRLNI_H_W : LSX2RI5_VVVI<0x73408000>; 559def VSRLNI_W_D : LSX2RI6_VVVI<0x73410000>; 560def VSRLNI_D_Q : LSX2RI7_VVVI<0x73420000>; 561def VSRANI_B_H : LSX2RI4_VVVI<0x73584000>; 562def VSRANI_H_W : LSX2RI5_VVVI<0x73588000>; 563def VSRANI_W_D : LSX2RI6_VVVI<0x73590000>; 564def VSRANI_D_Q : LSX2RI7_VVVI<0x735a0000>; 565 566def VSRLRN_B_H : LSX3R_VVV<0x70f88000>; 567def VSRLRN_H_W : LSX3R_VVV<0x70f90000>; 568def VSRLRN_W_D : LSX3R_VVV<0x70f98000>; 569def VSRARN_B_H : LSX3R_VVV<0x70fa8000>; 570def VSRARN_H_W : LSX3R_VVV<0x70fb0000>; 571def VSRARN_W_D : LSX3R_VVV<0x70fb8000>; 572 573def VSRLRNI_B_H : LSX2RI4_VVVI<0x73444000>; 574def VSRLRNI_H_W : LSX2RI5_VVVI<0x73448000>; 575def VSRLRNI_W_D : LSX2RI6_VVVI<0x73450000>; 576def VSRLRNI_D_Q : LSX2RI7_VVVI<0x73460000>; 577def VSRARNI_B_H : LSX2RI4_VVVI<0x735c4000>; 578def VSRARNI_H_W : LSX2RI5_VVVI<0x735c8000>; 579def VSRARNI_W_D : LSX2RI6_VVVI<0x735d0000>; 580def VSRARNI_D_Q : LSX2RI7_VVVI<0x735e0000>; 581 582def VSSRLN_B_H : LSX3R_VVV<0x70fc8000>; 583def VSSRLN_H_W : LSX3R_VVV<0x70fd0000>; 584def VSSRLN_W_D : LSX3R_VVV<0x70fd8000>; 585def VSSRAN_B_H : LSX3R_VVV<0x70fe8000>; 586def VSSRAN_H_W : LSX3R_VVV<0x70ff0000>; 587def VSSRAN_W_D : LSX3R_VVV<0x70ff8000>; 588def VSSRLN_BU_H : LSX3R_VVV<0x71048000>; 589def VSSRLN_HU_W : LSX3R_VVV<0x71050000>; 590def VSSRLN_WU_D : LSX3R_VVV<0x71058000>; 591def VSSRAN_BU_H : LSX3R_VVV<0x71068000>; 592def VSSRAN_HU_W : LSX3R_VVV<0x71070000>; 593def VSSRAN_WU_D : LSX3R_VVV<0x71078000>; 594 595def VSSRLNI_B_H : LSX2RI4_VVVI<0x73484000>; 596def VSSRLNI_H_W : LSX2RI5_VVVI<0x73488000>; 597def VSSRLNI_W_D : LSX2RI6_VVVI<0x73490000>; 598def VSSRLNI_D_Q : LSX2RI7_VVVI<0x734a0000>; 599def VSSRANI_B_H : LSX2RI4_VVVI<0x73604000>; 600def VSSRANI_H_W : LSX2RI5_VVVI<0x73608000>; 601def VSSRANI_W_D : LSX2RI6_VVVI<0x73610000>; 602def VSSRANI_D_Q : LSX2RI7_VVVI<0x73620000>; 603def VSSRLNI_BU_H : LSX2RI4_VVVI<0x734c4000>; 604def VSSRLNI_HU_W : LSX2RI5_VVVI<0x734c8000>; 605def VSSRLNI_WU_D : LSX2RI6_VVVI<0x734d0000>; 606def VSSRLNI_DU_Q : LSX2RI7_VVVI<0x734e0000>; 607def VSSRANI_BU_H : LSX2RI4_VVVI<0x73644000>; 608def VSSRANI_HU_W : LSX2RI5_VVVI<0x73648000>; 609def VSSRANI_WU_D : LSX2RI6_VVVI<0x73650000>; 610def VSSRANI_DU_Q : LSX2RI7_VVVI<0x73660000>; 611 612def VSSRLRN_B_H : LSX3R_VVV<0x71008000>; 613def VSSRLRN_H_W : LSX3R_VVV<0x71010000>; 614def VSSRLRN_W_D : LSX3R_VVV<0x71018000>; 615def VSSRARN_B_H : LSX3R_VVV<0x71028000>; 616def VSSRARN_H_W : LSX3R_VVV<0x71030000>; 617def VSSRARN_W_D : LSX3R_VVV<0x71038000>; 618def VSSRLRN_BU_H : LSX3R_VVV<0x71088000>; 619def VSSRLRN_HU_W : LSX3R_VVV<0x71090000>; 620def VSSRLRN_WU_D : LSX3R_VVV<0x71098000>; 621def VSSRARN_BU_H : LSX3R_VVV<0x710a8000>; 622def VSSRARN_HU_W : LSX3R_VVV<0x710b0000>; 623def VSSRARN_WU_D : LSX3R_VVV<0x710b8000>; 624 625def VSSRLRNI_B_H : LSX2RI4_VVVI<0x73504000>; 626def VSSRLRNI_H_W : LSX2RI5_VVVI<0x73508000>; 627def VSSRLRNI_W_D : LSX2RI6_VVVI<0x73510000>; 628def VSSRLRNI_D_Q : LSX2RI7_VVVI<0x73520000>; 629def VSSRARNI_B_H : LSX2RI4_VVVI<0x73684000>; 630def VSSRARNI_H_W : LSX2RI5_VVVI<0x73688000>; 631def VSSRARNI_W_D : LSX2RI6_VVVI<0x73690000>; 632def VSSRARNI_D_Q : LSX2RI7_VVVI<0x736a0000>; 633def VSSRLRNI_BU_H : LSX2RI4_VVVI<0x73544000>; 634def VSSRLRNI_HU_W : LSX2RI5_VVVI<0x73548000>; 635def VSSRLRNI_WU_D : LSX2RI6_VVVI<0x73550000>; 636def VSSRLRNI_DU_Q : LSX2RI7_VVVI<0x73560000>; 637def VSSRARNI_BU_H : LSX2RI4_VVVI<0x736c4000>; 638def VSSRARNI_HU_W : LSX2RI5_VVVI<0x736c8000>; 639def VSSRARNI_WU_D : LSX2RI6_VVVI<0x736d0000>; 640def VSSRARNI_DU_Q : LSX2RI7_VVVI<0x736e0000>; 641 642def VCLO_B : LSX2R_VV<0x729c0000>; 643def VCLO_H : LSX2R_VV<0x729c0400>; 644def VCLO_W : LSX2R_VV<0x729c0800>; 645def VCLO_D : LSX2R_VV<0x729c0c00>; 646def VCLZ_B : LSX2R_VV<0x729c1000>; 647def VCLZ_H : LSX2R_VV<0x729c1400>; 648def VCLZ_W : LSX2R_VV<0x729c1800>; 649def VCLZ_D : LSX2R_VV<0x729c1c00>; 650 651def VPCNT_B : LSX2R_VV<0x729c2000>; 652def VPCNT_H : LSX2R_VV<0x729c2400>; 653def VPCNT_W : LSX2R_VV<0x729c2800>; 654def VPCNT_D : LSX2R_VV<0x729c2c00>; 655 656def VBITCLR_B : LSX3R_VVV<0x710c0000>; 657def VBITCLR_H : LSX3R_VVV<0x710c8000>; 658def VBITCLR_W : LSX3R_VVV<0x710d0000>; 659def VBITCLR_D : LSX3R_VVV<0x710d8000>; 660def VBITCLRI_B : LSX2RI3_VVI<0x73102000>; 661def VBITCLRI_H : LSX2RI4_VVI<0x73104000>; 662def VBITCLRI_W : LSX2RI5_VVI<0x73108000>; 663def VBITCLRI_D : LSX2RI6_VVI<0x73110000>; 664 665def VBITSET_B : LSX3R_VVV<0x710e0000>; 666def VBITSET_H : LSX3R_VVV<0x710e8000>; 667def VBITSET_W : LSX3R_VVV<0x710f0000>; 668def VBITSET_D : LSX3R_VVV<0x710f8000>; 669def VBITSETI_B : LSX2RI3_VVI<0x73142000>; 670def VBITSETI_H : LSX2RI4_VVI<0x73144000>; 671def VBITSETI_W : LSX2RI5_VVI<0x73148000>; 672def VBITSETI_D : LSX2RI6_VVI<0x73150000>; 673 674def VBITREV_B : LSX3R_VVV<0x71100000>; 675def VBITREV_H : LSX3R_VVV<0x71108000>; 676def VBITREV_W : LSX3R_VVV<0x71110000>; 677def VBITREV_D : LSX3R_VVV<0x71118000>; 678def VBITREVI_B : LSX2RI3_VVI<0x73182000>; 679def VBITREVI_H : LSX2RI4_VVI<0x73184000>; 680def VBITREVI_W : LSX2RI5_VVI<0x73188000>; 681def VBITREVI_D : LSX2RI6_VVI<0x73190000>; 682 683def VFRSTP_B : LSX3R_VVVV<0x712b0000>; 684def VFRSTP_H : LSX3R_VVVV<0x712b8000>; 685def VFRSTPI_B : LSX2RI5_VVVI<0x729a0000>; 686def VFRSTPI_H : LSX2RI5_VVVI<0x729a8000>; 687 688def VFADD_S : LSX3R_VVV<0x71308000>; 689def VFADD_D : LSX3R_VVV<0x71310000>; 690def VFSUB_S : LSX3R_VVV<0x71328000>; 691def VFSUB_D : LSX3R_VVV<0x71330000>; 692def VFMUL_S : LSX3R_VVV<0x71388000>; 693def VFMUL_D : LSX3R_VVV<0x71390000>; 694def VFDIV_S : LSX3R_VVV<0x713a8000>; 695def VFDIV_D : LSX3R_VVV<0x713b0000>; 696 697def VFMADD_S : LSX4R_VVVV<0x09100000>; 698def VFMADD_D : LSX4R_VVVV<0x09200000>; 699def VFMSUB_S : LSX4R_VVVV<0x09500000>; 700def VFMSUB_D : LSX4R_VVVV<0x09600000>; 701def VFNMADD_S : LSX4R_VVVV<0x09900000>; 702def VFNMADD_D : LSX4R_VVVV<0x09a00000>; 703def VFNMSUB_S : LSX4R_VVVV<0x09d00000>; 704def VFNMSUB_D : LSX4R_VVVV<0x09e00000>; 705 706def VFMAX_S : LSX3R_VVV<0x713c8000>; 707def VFMAX_D : LSX3R_VVV<0x713d0000>; 708def VFMIN_S : LSX3R_VVV<0x713e8000>; 709def VFMIN_D : LSX3R_VVV<0x713f0000>; 710 711def VFMAXA_S : LSX3R_VVV<0x71408000>; 712def VFMAXA_D : LSX3R_VVV<0x71410000>; 713def VFMINA_S : LSX3R_VVV<0x71428000>; 714def VFMINA_D : LSX3R_VVV<0x71430000>; 715 716def VFLOGB_S : LSX2R_VV<0x729cc400>; 717def VFLOGB_D : LSX2R_VV<0x729cc800>; 718 719def VFCLASS_S : LSX2R_VV<0x729cd400>; 720def VFCLASS_D : LSX2R_VV<0x729cd800>; 721 722def VFSQRT_S : LSX2R_VV<0x729ce400>; 723def VFSQRT_D : LSX2R_VV<0x729ce800>; 724def VFRECIP_S : LSX2R_VV<0x729cf400>; 725def VFRECIP_D : LSX2R_VV<0x729cf800>; 726def VFRSQRT_S : LSX2R_VV<0x729d0400>; 727def VFRSQRT_D : LSX2R_VV<0x729d0800>; 728 729def VFCVTL_S_H : LSX2R_VV<0x729de800>; 730def VFCVTH_S_H : LSX2R_VV<0x729dec00>; 731def VFCVTL_D_S : LSX2R_VV<0x729df000>; 732def VFCVTH_D_S : LSX2R_VV<0x729df400>; 733def VFCVT_H_S : LSX3R_VVV<0x71460000>; 734def VFCVT_S_D : LSX3R_VVV<0x71468000>; 735 736def VFRINTRNE_S : LSX2R_VV<0x729d7400>; 737def VFRINTRNE_D : LSX2R_VV<0x729d7800>; 738def VFRINTRZ_S : LSX2R_VV<0x729d6400>; 739def VFRINTRZ_D : LSX2R_VV<0x729d6800>; 740def VFRINTRP_S : LSX2R_VV<0x729d5400>; 741def VFRINTRP_D : LSX2R_VV<0x729d5800>; 742def VFRINTRM_S : LSX2R_VV<0x729d4400>; 743def VFRINTRM_D : LSX2R_VV<0x729d4800>; 744def VFRINT_S : LSX2R_VV<0x729d3400>; 745def VFRINT_D : LSX2R_VV<0x729d3800>; 746 747def VFTINTRNE_W_S : LSX2R_VV<0x729e5000>; 748def VFTINTRNE_L_D : LSX2R_VV<0x729e5400>; 749def VFTINTRZ_W_S : LSX2R_VV<0x729e4800>; 750def VFTINTRZ_L_D : LSX2R_VV<0x729e4c00>; 751def VFTINTRP_W_S : LSX2R_VV<0x729e4000>; 752def VFTINTRP_L_D : LSX2R_VV<0x729e4400>; 753def VFTINTRM_W_S : LSX2R_VV<0x729e3800>; 754def VFTINTRM_L_D : LSX2R_VV<0x729e3c00>; 755def VFTINT_W_S : LSX2R_VV<0x729e3000>; 756def VFTINT_L_D : LSX2R_VV<0x729e3400>; 757def VFTINTRZ_WU_S : LSX2R_VV<0x729e7000>; 758def VFTINTRZ_LU_D : LSX2R_VV<0x729e7400>; 759def VFTINT_WU_S : LSX2R_VV<0x729e5800>; 760def VFTINT_LU_D : LSX2R_VV<0x729e5c00>; 761 762def VFTINTRNE_W_D : LSX3R_VVV<0x714b8000>; 763def VFTINTRZ_W_D : LSX3R_VVV<0x714b0000>; 764def VFTINTRP_W_D : LSX3R_VVV<0x714a8000>; 765def VFTINTRM_W_D : LSX3R_VVV<0x714a0000>; 766def VFTINT_W_D : LSX3R_VVV<0x71498000>; 767 768def VFTINTRNEL_L_S : LSX2R_VV<0x729ea000>; 769def VFTINTRNEH_L_S : LSX2R_VV<0x729ea400>; 770def VFTINTRZL_L_S : LSX2R_VV<0x729e9800>; 771def VFTINTRZH_L_S : LSX2R_VV<0x729e9c00>; 772def VFTINTRPL_L_S : LSX2R_VV<0x729e9000>; 773def VFTINTRPH_L_S : LSX2R_VV<0x729e9400>; 774def VFTINTRML_L_S : LSX2R_VV<0x729e8800>; 775def VFTINTRMH_L_S : LSX2R_VV<0x729e8c00>; 776def VFTINTL_L_S : LSX2R_VV<0x729e8000>; 777def VFTINTH_L_S : LSX2R_VV<0x729e8400>; 778 779def VFFINT_S_W : LSX2R_VV<0x729e0000>; 780def VFFINT_D_L : LSX2R_VV<0x729e0800>; 781def VFFINT_S_WU : LSX2R_VV<0x729e0400>; 782def VFFINT_D_LU : LSX2R_VV<0x729e0c00>; 783def VFFINTL_D_W : LSX2R_VV<0x729e1000>; 784def VFFINTH_D_W : LSX2R_VV<0x729e1400>; 785def VFFINT_S_L : LSX3R_VVV<0x71480000>; 786 787def VSEQ_B : LSX3R_VVV<0x70000000>; 788def VSEQ_H : LSX3R_VVV<0x70008000>; 789def VSEQ_W : LSX3R_VVV<0x70010000>; 790def VSEQ_D : LSX3R_VVV<0x70018000>; 791def VSEQI_B : LSX2RI5_VVI<0x72800000, simm5>; 792def VSEQI_H : LSX2RI5_VVI<0x72808000, simm5>; 793def VSEQI_W : LSX2RI5_VVI<0x72810000, simm5>; 794def VSEQI_D : LSX2RI5_VVI<0x72818000, simm5>; 795 796def VSLE_B : LSX3R_VVV<0x70020000>; 797def VSLE_H : LSX3R_VVV<0x70028000>; 798def VSLE_W : LSX3R_VVV<0x70030000>; 799def VSLE_D : LSX3R_VVV<0x70038000>; 800def VSLEI_B : LSX2RI5_VVI<0x72820000, simm5>; 801def VSLEI_H : LSX2RI5_VVI<0x72828000, simm5>; 802def VSLEI_W : LSX2RI5_VVI<0x72830000, simm5>; 803def VSLEI_D : LSX2RI5_VVI<0x72838000, simm5>; 804 805def VSLE_BU : LSX3R_VVV<0x70040000>; 806def VSLE_HU : LSX3R_VVV<0x70048000>; 807def VSLE_WU : LSX3R_VVV<0x70050000>; 808def VSLE_DU : LSX3R_VVV<0x70058000>; 809def VSLEI_BU : LSX2RI5_VVI<0x72840000>; 810def VSLEI_HU : LSX2RI5_VVI<0x72848000>; 811def VSLEI_WU : LSX2RI5_VVI<0x72850000>; 812def VSLEI_DU : LSX2RI5_VVI<0x72858000>; 813 814def VSLT_B : LSX3R_VVV<0x70060000>; 815def VSLT_H : LSX3R_VVV<0x70068000>; 816def VSLT_W : LSX3R_VVV<0x70070000>; 817def VSLT_D : LSX3R_VVV<0x70078000>; 818def VSLTI_B : LSX2RI5_VVI<0x72860000, simm5>; 819def VSLTI_H : LSX2RI5_VVI<0x72868000, simm5>; 820def VSLTI_W : LSX2RI5_VVI<0x72870000, simm5>; 821def VSLTI_D : LSX2RI5_VVI<0x72878000, simm5>; 822 823def VSLT_BU : LSX3R_VVV<0x70080000>; 824def VSLT_HU : LSX3R_VVV<0x70088000>; 825def VSLT_WU : LSX3R_VVV<0x70090000>; 826def VSLT_DU : LSX3R_VVV<0x70098000>; 827def VSLTI_BU : LSX2RI5_VVI<0x72880000>; 828def VSLTI_HU : LSX2RI5_VVI<0x72888000>; 829def VSLTI_WU : LSX2RI5_VVI<0x72890000>; 830def VSLTI_DU : LSX2RI5_VVI<0x72898000>; 831 832def VFCMP_CAF_S : LSX3R_VVV<0x0c500000>; 833def VFCMP_SAF_S : LSX3R_VVV<0x0c508000>; 834def VFCMP_CLT_S : LSX3R_VVV<0x0c510000>; 835def VFCMP_SLT_S : LSX3R_VVV<0x0c518000>; 836def VFCMP_CEQ_S : LSX3R_VVV<0x0c520000>; 837def VFCMP_SEQ_S : LSX3R_VVV<0x0c528000>; 838def VFCMP_CLE_S : LSX3R_VVV<0x0c530000>; 839def VFCMP_SLE_S : LSX3R_VVV<0x0c538000>; 840def VFCMP_CUN_S : LSX3R_VVV<0x0c540000>; 841def VFCMP_SUN_S : LSX3R_VVV<0x0c548000>; 842def VFCMP_CULT_S : LSX3R_VVV<0x0c550000>; 843def VFCMP_SULT_S : LSX3R_VVV<0x0c558000>; 844def VFCMP_CUEQ_S : LSX3R_VVV<0x0c560000>; 845def VFCMP_SUEQ_S : LSX3R_VVV<0x0c568000>; 846def VFCMP_CULE_S : LSX3R_VVV<0x0c570000>; 847def VFCMP_SULE_S : LSX3R_VVV<0x0c578000>; 848def VFCMP_CNE_S : LSX3R_VVV<0x0c580000>; 849def VFCMP_SNE_S : LSX3R_VVV<0x0c588000>; 850def VFCMP_COR_S : LSX3R_VVV<0x0c5a0000>; 851def VFCMP_SOR_S : LSX3R_VVV<0x0c5a8000>; 852def VFCMP_CUNE_S : LSX3R_VVV<0x0c5c0000>; 853def VFCMP_SUNE_S : LSX3R_VVV<0x0c5c8000>; 854 855def VFCMP_CAF_D : LSX3R_VVV<0x0c600000>; 856def VFCMP_SAF_D : LSX3R_VVV<0x0c608000>; 857def VFCMP_CLT_D : LSX3R_VVV<0x0c610000>; 858def VFCMP_SLT_D : LSX3R_VVV<0x0c618000>; 859def VFCMP_CEQ_D : LSX3R_VVV<0x0c620000>; 860def VFCMP_SEQ_D : LSX3R_VVV<0x0c628000>; 861def VFCMP_CLE_D : LSX3R_VVV<0x0c630000>; 862def VFCMP_SLE_D : LSX3R_VVV<0x0c638000>; 863def VFCMP_CUN_D : LSX3R_VVV<0x0c640000>; 864def VFCMP_SUN_D : LSX3R_VVV<0x0c648000>; 865def VFCMP_CULT_D : LSX3R_VVV<0x0c650000>; 866def VFCMP_SULT_D : LSX3R_VVV<0x0c658000>; 867def VFCMP_CUEQ_D : LSX3R_VVV<0x0c660000>; 868def VFCMP_SUEQ_D : LSX3R_VVV<0x0c668000>; 869def VFCMP_CULE_D : LSX3R_VVV<0x0c670000>; 870def VFCMP_SULE_D : LSX3R_VVV<0x0c678000>; 871def VFCMP_CNE_D : LSX3R_VVV<0x0c680000>; 872def VFCMP_SNE_D : LSX3R_VVV<0x0c688000>; 873def VFCMP_COR_D : LSX3R_VVV<0x0c6a0000>; 874def VFCMP_SOR_D : LSX3R_VVV<0x0c6a8000>; 875def VFCMP_CUNE_D : LSX3R_VVV<0x0c6c0000>; 876def VFCMP_SUNE_D : LSX3R_VVV<0x0c6c8000>; 877 878def VBITSEL_V : LSX4R_VVVV<0x0d100000>; 879 880def VBITSELI_B : LSX2RI8_VVVI<0x73c40000>; 881 882def VSETEQZ_V : LSX2R_CV<0x729c9800>; 883def VSETNEZ_V : LSX2R_CV<0x729c9c00>; 884def VSETANYEQZ_B : LSX2R_CV<0x729ca000>; 885def VSETANYEQZ_H : LSX2R_CV<0x729ca400>; 886def VSETANYEQZ_W : LSX2R_CV<0x729ca800>; 887def VSETANYEQZ_D : LSX2R_CV<0x729cac00>; 888def VSETALLNEZ_B : LSX2R_CV<0x729cb000>; 889def VSETALLNEZ_H : LSX2R_CV<0x729cb400>; 890def VSETALLNEZ_W : LSX2R_CV<0x729cb800>; 891def VSETALLNEZ_D : LSX2R_CV<0x729cbc00>; 892 893def VINSGR2VR_B : LSX2RI4_VVRI<0x72eb8000>; 894def VINSGR2VR_H : LSX2RI3_VVRI<0x72ebc000>; 895def VINSGR2VR_W : LSX2RI2_VVRI<0x72ebe000>; 896def VINSGR2VR_D : LSX2RI1_VVRI<0x72ebf000>; 897def VPICKVE2GR_B : LSX2RI4_RVI<0x72ef8000>; 898def VPICKVE2GR_H : LSX2RI3_RVI<0x72efc000>; 899def VPICKVE2GR_W : LSX2RI2_RVI<0x72efe000>; 900def VPICKVE2GR_D : LSX2RI1_RVI<0x72eff000>; 901def VPICKVE2GR_BU : LSX2RI4_RVI<0x72f38000>; 902def VPICKVE2GR_HU : LSX2RI3_RVI<0x72f3c000>; 903def VPICKVE2GR_WU : LSX2RI2_RVI<0x72f3e000>; 904def VPICKVE2GR_DU : LSX2RI1_RVI<0x72f3f000>; 905 906def VREPLGR2VR_B : LSX2R_VR<0x729f0000>; 907def VREPLGR2VR_H : LSX2R_VR<0x729f0400>; 908def VREPLGR2VR_W : LSX2R_VR<0x729f0800>; 909def VREPLGR2VR_D : LSX2R_VR<0x729f0c00>; 910 911def VREPLVE_B : LSX3R_VVR<0x71220000>; 912def VREPLVE_H : LSX3R_VVR<0x71228000>; 913def VREPLVE_W : LSX3R_VVR<0x71230000>; 914def VREPLVE_D : LSX3R_VVR<0x71238000>; 915def VREPLVEI_B : LSX2RI4_VVI<0x72f78000>; 916def VREPLVEI_H : LSX2RI3_VVI<0x72f7c000>; 917def VREPLVEI_W : LSX2RI2_VVI<0x72f7e000>; 918def VREPLVEI_D : LSX2RI1_VVI<0x72f7f000>; 919 920def VBSLL_V : LSX2RI5_VVI<0x728e0000>; 921def VBSRL_V : LSX2RI5_VVI<0x728e8000>; 922 923def VPACKEV_B : LSX3R_VVV<0x71160000>; 924def VPACKEV_H : LSX3R_VVV<0x71168000>; 925def VPACKEV_W : LSX3R_VVV<0x71170000>; 926def VPACKEV_D : LSX3R_VVV<0x71178000>; 927def VPACKOD_B : LSX3R_VVV<0x71180000>; 928def VPACKOD_H : LSX3R_VVV<0x71188000>; 929def VPACKOD_W : LSX3R_VVV<0x71190000>; 930def VPACKOD_D : LSX3R_VVV<0x71198000>; 931 932def VPICKEV_B : LSX3R_VVV<0x711e0000>; 933def VPICKEV_H : LSX3R_VVV<0x711e8000>; 934def VPICKEV_W : LSX3R_VVV<0x711f0000>; 935def VPICKEV_D : LSX3R_VVV<0x711f8000>; 936def VPICKOD_B : LSX3R_VVV<0x71200000>; 937def VPICKOD_H : LSX3R_VVV<0x71208000>; 938def VPICKOD_W : LSX3R_VVV<0x71210000>; 939def VPICKOD_D : LSX3R_VVV<0x71218000>; 940 941def VILVL_B : LSX3R_VVV<0x711a0000>; 942def VILVL_H : LSX3R_VVV<0x711a8000>; 943def VILVL_W : LSX3R_VVV<0x711b0000>; 944def VILVL_D : LSX3R_VVV<0x711b8000>; 945def VILVH_B : LSX3R_VVV<0x711c0000>; 946def VILVH_H : LSX3R_VVV<0x711c8000>; 947def VILVH_W : LSX3R_VVV<0x711d0000>; 948def VILVH_D : LSX3R_VVV<0x711d8000>; 949 950def VSHUF_B : LSX4R_VVVV<0x0d500000>; 951 952def VSHUF_H : LSX3R_VVVV<0x717a8000>; 953def VSHUF_W : LSX3R_VVVV<0x717b0000>; 954def VSHUF_D : LSX3R_VVVV<0x717b8000>; 955 956def VSHUF4I_B : LSX2RI8_VVI<0x73900000>; 957def VSHUF4I_H : LSX2RI8_VVI<0x73940000>; 958def VSHUF4I_W : LSX2RI8_VVI<0x73980000>; 959def VSHUF4I_D : LSX2RI8_VVVI<0x739c0000>; 960 961def VPERMI_W : LSX2RI8_VVVI<0x73e40000>; 962 963def VEXTRINS_D : LSX2RI8_VVVI<0x73800000>; 964def VEXTRINS_W : LSX2RI8_VVVI<0x73840000>; 965def VEXTRINS_H : LSX2RI8_VVVI<0x73880000>; 966def VEXTRINS_B : LSX2RI8_VVVI<0x738c0000>; 967} // mayLoad = 0, mayStore = 0 968 969let mayLoad = 1, mayStore = 0 in { 970def VLD : LSX2RI12_Load<0x2c000000>; 971def VLDX : LSX3R_Load<0x38400000>; 972 973def VLDREPL_B : LSX2RI12_Load<0x30800000>; 974def VLDREPL_H : LSX2RI11_Load<0x30400000>; 975def VLDREPL_W : LSX2RI10_Load<0x30200000>; 976def VLDREPL_D : LSX2RI9_Load<0x30100000>; 977} // mayLoad = 1, mayStore = 0 978 979let mayLoad = 0, mayStore = 1 in { 980def VST : LSX2RI12_Store<0x2c400000>; 981def VSTX : LSX3R_Store<0x38440000>; 982 983def VSTELM_B : LSX2RI8I4_VRII<0x31800000>; 984def VSTELM_H : LSX2RI8I3_VRII<0x31400000, simm8_lsl1>; 985def VSTELM_W : LSX2RI8I2_VRII<0x31200000, simm8_lsl2>; 986def VSTELM_D : LSX2RI8I1_VRII<0x31100000, simm8_lsl3>; 987} // mayLoad = 0, mayStore = 1 988 989} // hasSideEffects = 0, Predicates = [HasExtLSX] 990 991/// Pseudo-instructions 992 993let Predicates = [HasExtLSX] in { 994 995let hasSideEffects = 0, mayLoad = 0, mayStore = 0, isCodeGenOnly = 0, 996 isAsmParserOnly = 1 in { 997def PseudoVREPLI_B : Pseudo<(outs LSX128:$vd), (ins simm10:$imm), [], 998 "vrepli.b", "$vd, $imm">; 999def PseudoVREPLI_H : Pseudo<(outs LSX128:$vd), (ins simm10:$imm), [], 1000 "vrepli.h", "$vd, $imm">; 1001def PseudoVREPLI_W : Pseudo<(outs LSX128:$vd), (ins simm10:$imm), [], 1002 "vrepli.w", "$vd, $imm">; 1003def PseudoVREPLI_D : Pseudo<(outs LSX128:$vd), (ins simm10:$imm), [], 1004 "vrepli.d", "$vd, $imm">; 1005} 1006 1007} // Predicates = [HasExtLSX] 1008