xref: /freebsd-src/contrib/llvm-project/llvm/lib/Target/LoongArch/LoongArchLVZInstrInfo.td (revision 06c3fb2749bda94cb5201f81ffdb8fa6c3161b2e)
1*06c3fb27SDimitry Andric//===- LoongArchLVZInstrInfo.td - LoongArch LVZ instructions -*- tablegen -*-=//
2*06c3fb27SDimitry Andric//
3*06c3fb27SDimitry Andric// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*06c3fb27SDimitry Andric// See https://llvm.org/LICENSE.txt for license information.
5*06c3fb27SDimitry Andric// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*06c3fb27SDimitry Andric//
7*06c3fb27SDimitry Andric//===----------------------------------------------------------------------===//
8*06c3fb27SDimitry Andric//
9*06c3fb27SDimitry Andric// This file describes the LVZ extension instructions.
10*06c3fb27SDimitry Andric//
11*06c3fb27SDimitry Andric//===----------------------------------------------------------------------===//
12*06c3fb27SDimitry Andric
13*06c3fb27SDimitry Andric//===----------------------------------------------------------------------===//
14*06c3fb27SDimitry Andric// Instructions
15*06c3fb27SDimitry Andric//===----------------------------------------------------------------------===//
16*06c3fb27SDimitry Andric
17*06c3fb27SDimitry Andriclet hasSideEffects = 1, mayLoad = 0, mayStore = 0, Predicates = [HasExtLVZ] in {
18*06c3fb27SDimitry Andric
19*06c3fb27SDimitry Andricdef GCSRRD : FmtCSR<0x05000000, (outs GPR:$rd), (ins uimm14:$csr_num),
20*06c3fb27SDimitry Andric                    "$rd, $csr_num">;
21*06c3fb27SDimitry Andric
22*06c3fb27SDimitry Andriclet Constraints = "$rd = $dst" in {
23*06c3fb27SDimitry Andricdef GCSRWR : FmtCSR<0x05000020, (outs GPR:$dst),
24*06c3fb27SDimitry Andric                    (ins GPR:$rd, uimm14:$csr_num), "$rd, $csr_num">;
25*06c3fb27SDimitry Andricdef GCSRXCHG : FmtCSRXCHG<0x05000000, (outs GPR:$dst),
26*06c3fb27SDimitry Andric                          (ins GPR:$rd, GPR:$rj, uimm14:$csr_num),
27*06c3fb27SDimitry Andric                          "$rd, $rj, $csr_num">;
28*06c3fb27SDimitry Andric} // Constraints = "$rd = $dst"
29*06c3fb27SDimitry Andric
30*06c3fb27SDimitry Andricdef GTLBFLUSH : FmtI32<0x06482401>;
31*06c3fb27SDimitry Andricdef HVCL : MISC_I15<0x002b8000>;
32*06c3fb27SDimitry Andric
33*06c3fb27SDimitry Andric} // hasSideEffects = 1, mayLoad = 0, mayStore = 0, Predicates = [HasExtLVZ]
34