Skip to content

Commit 73629e3

Browse files
chenhengqiopsiff
authored andcommitted
LoongArch: Add more instruction opcodes and emit_* helpers
mainline inclusion from mainline-v6.7-rc1 category: bugfix This patch adds more instruction opcodes and their corresponding emit_* helpers which will be used in later patches. Signed-off-by: Hengqi Chen <hengqi.chen@gmail.com> Signed-off-by: Huacai Chen <chenhuacai@loongson.cn> [ Conflict because of ("LoongArch: KVM: Add cpucfg area for kvm hypervisor ") upstream merge before ] (cherry picked from commit add2802) Signed-off-by: Wentao Guan <guanwentao@uniontech.com> Conflicts: arch/loongarch/include/asm/inst.h
1 parent 1d1623f commit 73629e3

1 file changed

Lines changed: 13 additions & 0 deletions

File tree

  • arch/loongarch/include/asm

arch/loongarch/include/asm/inst.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ enum reg2_op {
6666
revbd_op = 0x0f,
6767
revh2w_op = 0x10,
6868
revhd_op = 0x11,
69+
extwh_op = 0x16,
70+
extwb_op = 0x17,
6971
cpucfg_op = 0x1b,
7072
iocsrrdb_op = 0x19200,
7173
iocsrrdh_op = 0x19201,
@@ -574,6 +576,8 @@ static inline void emit_##NAME(union loongarch_instruction *insn, \
574576
DEF_EMIT_REG2_FORMAT(revb2h, revb2h_op)
575577
DEF_EMIT_REG2_FORMAT(revb2w, revb2w_op)
576578
DEF_EMIT_REG2_FORMAT(revbd, revbd_op)
579+
DEF_EMIT_REG2_FORMAT(extwh, extwh_op)
580+
DEF_EMIT_REG2_FORMAT(extwb, extwb_op)
577581

578582
#define DEF_EMIT_REG2I5_FORMAT(NAME, OP) \
579583
static inline void emit_##NAME(union loongarch_instruction *insn, \
@@ -625,6 +629,9 @@ DEF_EMIT_REG2I12_FORMAT(lu52id, lu52id_op)
625629
DEF_EMIT_REG2I12_FORMAT(andi, andi_op)
626630
DEF_EMIT_REG2I12_FORMAT(ori, ori_op)
627631
DEF_EMIT_REG2I12_FORMAT(xori, xori_op)
632+
DEF_EMIT_REG2I12_FORMAT(ldb, ldb_op)
633+
DEF_EMIT_REG2I12_FORMAT(ldh, ldh_op)
634+
DEF_EMIT_REG2I12_FORMAT(ldw, ldw_op)
628635
DEF_EMIT_REG2I12_FORMAT(ldbu, ldbu_op)
629636
DEF_EMIT_REG2I12_FORMAT(ldhu, ldhu_op)
630637
DEF_EMIT_REG2I12_FORMAT(ldwu, ldwu_op)
@@ -713,9 +720,12 @@ static inline void emit_##NAME(union loongarch_instruction *insn, \
713720
insn->reg3_format.rk = rk; \
714721
}
715722

723+
DEF_EMIT_REG3_FORMAT(addw, addw_op)
716724
DEF_EMIT_REG3_FORMAT(addd, addd_op)
717725
DEF_EMIT_REG3_FORMAT(subd, subd_op)
718726
DEF_EMIT_REG3_FORMAT(muld, muld_op)
727+
DEF_EMIT_REG3_FORMAT(divd, divd_op)
728+
DEF_EMIT_REG3_FORMAT(modd, modd_op)
719729
DEF_EMIT_REG3_FORMAT(divdu, divdu_op)
720730
DEF_EMIT_REG3_FORMAT(moddu, moddu_op)
721731
DEF_EMIT_REG3_FORMAT(and, and_op)
@@ -727,6 +737,9 @@ DEF_EMIT_REG3_FORMAT(srlw, srlw_op)
727737
DEF_EMIT_REG3_FORMAT(srld, srld_op)
728738
DEF_EMIT_REG3_FORMAT(sraw, sraw_op)
729739
DEF_EMIT_REG3_FORMAT(srad, srad_op)
740+
DEF_EMIT_REG3_FORMAT(ldxb, ldxb_op)
741+
DEF_EMIT_REG3_FORMAT(ldxh, ldxh_op)
742+
DEF_EMIT_REG3_FORMAT(ldxw, ldxw_op)
730743
DEF_EMIT_REG3_FORMAT(ldxbu, ldxbu_op)
731744
DEF_EMIT_REG3_FORMAT(ldxhu, ldxhu_op)
732745
DEF_EMIT_REG3_FORMAT(ldxwu, ldxwu_op)

0 commit comments

Comments
 (0)