Skip to content

Commit a19df91

Browse files
chenhengqigregkh
authored andcommitted
LoongArch: Add more instruction opcodes and emit_* helpers
commit add2802 upstream. 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> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 0299355 commit a19df91

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
@@ -65,6 +65,8 @@ enum reg2_op {
6565
revbd_op = 0x0f,
6666
revh2w_op = 0x10,
6767
revhd_op = 0x11,
68+
extwh_op = 0x16,
69+
extwb_op = 0x17,
6870
};
6971

7072
enum reg2i5_op {
@@ -556,6 +558,8 @@ static inline void emit_##NAME(union loongarch_instruction *insn, \
556558
DEF_EMIT_REG2_FORMAT(revb2h, revb2h_op)
557559
DEF_EMIT_REG2_FORMAT(revb2w, revb2w_op)
558560
DEF_EMIT_REG2_FORMAT(revbd, revbd_op)
561+
DEF_EMIT_REG2_FORMAT(extwh, extwh_op)
562+
DEF_EMIT_REG2_FORMAT(extwb, extwb_op)
559563

560564
#define DEF_EMIT_REG2I5_FORMAT(NAME, OP) \
561565
static inline void emit_##NAME(union loongarch_instruction *insn, \
@@ -607,6 +611,9 @@ DEF_EMIT_REG2I12_FORMAT(lu52id, lu52id_op)
607611
DEF_EMIT_REG2I12_FORMAT(andi, andi_op)
608612
DEF_EMIT_REG2I12_FORMAT(ori, ori_op)
609613
DEF_EMIT_REG2I12_FORMAT(xori, xori_op)
614+
DEF_EMIT_REG2I12_FORMAT(ldb, ldb_op)
615+
DEF_EMIT_REG2I12_FORMAT(ldh, ldh_op)
616+
DEF_EMIT_REG2I12_FORMAT(ldw, ldw_op)
610617
DEF_EMIT_REG2I12_FORMAT(ldbu, ldbu_op)
611618
DEF_EMIT_REG2I12_FORMAT(ldhu, ldhu_op)
612619
DEF_EMIT_REG2I12_FORMAT(ldwu, ldwu_op)
@@ -695,9 +702,12 @@ static inline void emit_##NAME(union loongarch_instruction *insn, \
695702
insn->reg3_format.rk = rk; \
696703
}
697704

705+
DEF_EMIT_REG3_FORMAT(addw, addw_op)
698706
DEF_EMIT_REG3_FORMAT(addd, addd_op)
699707
DEF_EMIT_REG3_FORMAT(subd, subd_op)
700708
DEF_EMIT_REG3_FORMAT(muld, muld_op)
709+
DEF_EMIT_REG3_FORMAT(divd, divd_op)
710+
DEF_EMIT_REG3_FORMAT(modd, modd_op)
701711
DEF_EMIT_REG3_FORMAT(divdu, divdu_op)
702712
DEF_EMIT_REG3_FORMAT(moddu, moddu_op)
703713
DEF_EMIT_REG3_FORMAT(and, and_op)
@@ -709,6 +719,9 @@ DEF_EMIT_REG3_FORMAT(srlw, srlw_op)
709719
DEF_EMIT_REG3_FORMAT(srld, srld_op)
710720
DEF_EMIT_REG3_FORMAT(sraw, sraw_op)
711721
DEF_EMIT_REG3_FORMAT(srad, srad_op)
722+
DEF_EMIT_REG3_FORMAT(ldxb, ldxb_op)
723+
DEF_EMIT_REG3_FORMAT(ldxh, ldxh_op)
724+
DEF_EMIT_REG3_FORMAT(ldxw, ldxw_op)
712725
DEF_EMIT_REG3_FORMAT(ldxbu, ldxbu_op)
713726
DEF_EMIT_REG3_FORMAT(ldxhu, ldxhu_op)
714727
DEF_EMIT_REG3_FORMAT(ldxwu, ldxwu_op)

0 commit comments

Comments
 (0)