[all-commits] [llvm/llvm-project] 1aa3b6: [LoongArch] Add definition for LSX instructions

wanglei via All-commits all-commits at lists.llvm.org
Thu Jul 6 20:22:54 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 1aa3b64ed2781f064a40b0f9bd196a1265f50b3c
      https://github.com/llvm/llvm-project/commit/1aa3b64ed2781f064a40b0f9bd196a1265f50b3c
  Author: wanglei <wanglei at loongson.cn>
  Date:   2023-07-07 (Fri, 07 Jul 2023)

  Changed paths:
    M llvm/lib/Target/LoongArch/AsmParser/LoongArchAsmParser.cpp
    M llvm/lib/Target/LoongArch/Disassembler/LoongArchDisassembler.cpp
    M llvm/lib/Target/LoongArch/LoongArchInstrInfo.td
    A llvm/lib/Target/LoongArch/LoongArchLSXInstrFormats.td
    A llvm/lib/Target/LoongArch/LoongArchLSXInstrInfo.td
    M llvm/lib/Target/LoongArch/LoongArchRegisterInfo.td
    M llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchMCCodeEmitter.cpp

  Log Message:
  -----------
  [LoongArch] Add definition for LSX instructions

This patch adds the definition for the `LSX` registers and instructions.
It also adds handling for new immediate operands in the AsmParser. This
patch ensures that llvm-mc and llvm-objdump correctly handle the `LSX`
instructions.

We expand those pseudo-instructions `vrepli.{b,h,w,d}` in the
MCCodeEmitter. This increases the readability of the output when
generating assembly files.

Reviewed By: SixWeining

Differential Revision: https://reviews.llvm.org/D154183


  Commit: f3d18b9dc6f73755b58df5f06fcae992322aeaed
      https://github.com/llvm/llvm-project/commit/f3d18b9dc6f73755b58df5f06fcae992322aeaed
  Author: wanglei <wanglei at loongson.cn>
  Date:   2023-07-07 (Fri, 07 Jul 2023)

  Changed paths:
    M llvm/lib/Target/LoongArch/Disassembler/LoongArchDisassembler.cpp
    M llvm/lib/Target/LoongArch/LoongArchInstrInfo.td
    A llvm/lib/Target/LoongArch/LoongArchLASXInstrFormats.td
    A llvm/lib/Target/LoongArch/LoongArchLASXInstrInfo.td
    M llvm/lib/Target/LoongArch/LoongArchRegisterInfo.td
    M llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchMCCodeEmitter.cpp

  Log Message:
  -----------
  [LoongArch] Add definition for LASX instructions

This patch adds the definition of the LASX instructions, providing
support only for assembly and disassembly, similar to D154183.

Depends on D154183

Reviewed By: SixWeining

Differential Revision: https://reviews.llvm.org/D154195


  Commit: 12d2acdf4acc4c31e9ff483685d766b1f4f22b4e
      https://github.com/llvm/llvm-project/commit/12d2acdf4acc4c31e9ff483685d766b1f4f22b4e
  Author: chenli <chenli at loongson.cn>
  Date:   2023-07-07 (Fri, 07 Jul 2023)

  Changed paths:
    A llvm/test/MC/LoongArch/lsx/absd.s
    A llvm/test/MC/LoongArch/lsx/add.s
    A llvm/test/MC/LoongArch/lsx/adda.s
    A llvm/test/MC/LoongArch/lsx/addi.s
    A llvm/test/MC/LoongArch/lsx/addw.s
    A llvm/test/MC/LoongArch/lsx/and.s
    A llvm/test/MC/LoongArch/lsx/andi.s
    A llvm/test/MC/LoongArch/lsx/andn.s
    A llvm/test/MC/LoongArch/lsx/avg.s
    A llvm/test/MC/LoongArch/lsx/avgr.s
    A llvm/test/MC/LoongArch/lsx/bitclr.s
    A llvm/test/MC/LoongArch/lsx/bitrev.s
    A llvm/test/MC/LoongArch/lsx/bitsel.s
    A llvm/test/MC/LoongArch/lsx/bitseli.s
    A llvm/test/MC/LoongArch/lsx/bitset.s
    A llvm/test/MC/LoongArch/lsx/bsll.s
    A llvm/test/MC/LoongArch/lsx/bsrl.s
    A llvm/test/MC/LoongArch/lsx/clo.s
    A llvm/test/MC/LoongArch/lsx/clz.s
    A llvm/test/MC/LoongArch/lsx/div.s
    A llvm/test/MC/LoongArch/lsx/exth.s
    A llvm/test/MC/LoongArch/lsx/extl.s
    A llvm/test/MC/LoongArch/lsx/extrins.s
    A llvm/test/MC/LoongArch/lsx/fadd.s
    A llvm/test/MC/LoongArch/lsx/fclass.s
    A llvm/test/MC/LoongArch/lsx/fcmp.s
    A llvm/test/MC/LoongArch/lsx/fcvt.s
    A llvm/test/MC/LoongArch/lsx/fcvth.s
    A llvm/test/MC/LoongArch/lsx/fcvtl.s
    A llvm/test/MC/LoongArch/lsx/fdiv.s
    A llvm/test/MC/LoongArch/lsx/ffint.s
    A llvm/test/MC/LoongArch/lsx/flogb.s
    A llvm/test/MC/LoongArch/lsx/fmadd.s
    A llvm/test/MC/LoongArch/lsx/fmax.s
    A llvm/test/MC/LoongArch/lsx/fmaxa.s
    A llvm/test/MC/LoongArch/lsx/fmin.s
    A llvm/test/MC/LoongArch/lsx/fmina.s
    A llvm/test/MC/LoongArch/lsx/fmsub.s
    A llvm/test/MC/LoongArch/lsx/fmul.s
    A llvm/test/MC/LoongArch/lsx/fnmadd.s
    A llvm/test/MC/LoongArch/lsx/fnmsub.s
    A llvm/test/MC/LoongArch/lsx/frecip.s
    A llvm/test/MC/LoongArch/lsx/frint.s
    A llvm/test/MC/LoongArch/lsx/frsqrt.s
    A llvm/test/MC/LoongArch/lsx/frstp.s
    A llvm/test/MC/LoongArch/lsx/fsqrt.s
    A llvm/test/MC/LoongArch/lsx/fsub.s
    A llvm/test/MC/LoongArch/lsx/ftint.s
    A llvm/test/MC/LoongArch/lsx/haddw.s
    A llvm/test/MC/LoongArch/lsx/hsubw.s
    A llvm/test/MC/LoongArch/lsx/ilv.s
    A llvm/test/MC/LoongArch/lsx/insgr2vr.s
    A llvm/test/MC/LoongArch/lsx/invalid-imm.s
    A llvm/test/MC/LoongArch/lsx/ld.s
    A llvm/test/MC/LoongArch/lsx/ldi.s
    A llvm/test/MC/LoongArch/lsx/ldrepl.s
    A llvm/test/MC/LoongArch/lsx/madd.s
    A llvm/test/MC/LoongArch/lsx/maddw.s
    A llvm/test/MC/LoongArch/lsx/max.s
    A llvm/test/MC/LoongArch/lsx/min.s
    A llvm/test/MC/LoongArch/lsx/mod.s
    A llvm/test/MC/LoongArch/lsx/mskgez.s
    A llvm/test/MC/LoongArch/lsx/mskltz.s
    A llvm/test/MC/LoongArch/lsx/msknz.s
    A llvm/test/MC/LoongArch/lsx/msub.s
    A llvm/test/MC/LoongArch/lsx/muh.s
    A llvm/test/MC/LoongArch/lsx/mul.s
    A llvm/test/MC/LoongArch/lsx/mulw.s
    A llvm/test/MC/LoongArch/lsx/neg.s
    A llvm/test/MC/LoongArch/lsx/nor.s
    A llvm/test/MC/LoongArch/lsx/nori.s
    A llvm/test/MC/LoongArch/lsx/or.s
    A llvm/test/MC/LoongArch/lsx/ori.s
    A llvm/test/MC/LoongArch/lsx/orn.s
    A llvm/test/MC/LoongArch/lsx/pack.s
    A llvm/test/MC/LoongArch/lsx/pcnt.s
    A llvm/test/MC/LoongArch/lsx/permi.s
    A llvm/test/MC/LoongArch/lsx/pick.s
    A llvm/test/MC/LoongArch/lsx/pickve2gr.s
    A llvm/test/MC/LoongArch/lsx/replgr2vr.s
    A llvm/test/MC/LoongArch/lsx/replve.s
    A llvm/test/MC/LoongArch/lsx/replvei.s
    A llvm/test/MC/LoongArch/lsx/rotr.s
    A llvm/test/MC/LoongArch/lsx/sadd.s
    A llvm/test/MC/LoongArch/lsx/sat.s
    A llvm/test/MC/LoongArch/lsx/seq.s
    A llvm/test/MC/LoongArch/lsx/set.s
    A llvm/test/MC/LoongArch/lsx/setallnez.s
    A llvm/test/MC/LoongArch/lsx/setanyeqz.s
    A llvm/test/MC/LoongArch/lsx/shuf.s
    A llvm/test/MC/LoongArch/lsx/shuf4i.s
    A llvm/test/MC/LoongArch/lsx/signcov.s
    A llvm/test/MC/LoongArch/lsx/sle.s
    A llvm/test/MC/LoongArch/lsx/sll.s
    A llvm/test/MC/LoongArch/lsx/sllwil.s
    A llvm/test/MC/LoongArch/lsx/slt.s
    A llvm/test/MC/LoongArch/lsx/sra.s
    A llvm/test/MC/LoongArch/lsx/sran.s
    A llvm/test/MC/LoongArch/lsx/srani.s
    A llvm/test/MC/LoongArch/lsx/srar.s
    A llvm/test/MC/LoongArch/lsx/srarn.s
    A llvm/test/MC/LoongArch/lsx/srarni.s
    A llvm/test/MC/LoongArch/lsx/srl.s
    A llvm/test/MC/LoongArch/lsx/srln.s
    A llvm/test/MC/LoongArch/lsx/srlni.s
    A llvm/test/MC/LoongArch/lsx/srlr.s
    A llvm/test/MC/LoongArch/lsx/srlrn.s
    A llvm/test/MC/LoongArch/lsx/srlrni.s
    A llvm/test/MC/LoongArch/lsx/ssran.s
    A llvm/test/MC/LoongArch/lsx/ssrani.s
    A llvm/test/MC/LoongArch/lsx/ssrarn.s
    A llvm/test/MC/LoongArch/lsx/ssrarni.s
    A llvm/test/MC/LoongArch/lsx/ssrln.s
    A llvm/test/MC/LoongArch/lsx/ssrlni.s
    A llvm/test/MC/LoongArch/lsx/ssrlrn.s
    A llvm/test/MC/LoongArch/lsx/ssrlrni.s
    A llvm/test/MC/LoongArch/lsx/ssub.s
    A llvm/test/MC/LoongArch/lsx/st.s
    A llvm/test/MC/LoongArch/lsx/stelm.s
    A llvm/test/MC/LoongArch/lsx/sub.s
    A llvm/test/MC/LoongArch/lsx/subi.s
    A llvm/test/MC/LoongArch/lsx/subw.s
    A llvm/test/MC/LoongArch/lsx/xor.s
    A llvm/test/MC/LoongArch/lsx/xori.s

  Log Message:
  -----------
  [LoongArch][MC] Add testcases for LSX instructions

Depends on D154183

Reviewed By: SixWeining

Differential Revision: https://reviews.llvm.org/D154197


  Commit: 99d74edcf5847a108744f652ca2e8f462777fa61
      https://github.com/llvm/llvm-project/commit/99d74edcf5847a108744f652ca2e8f462777fa61
  Author: chenli <chenli at loongson.cn>
  Date:   2023-07-07 (Fri, 07 Jul 2023)

  Changed paths:
    A llvm/test/MC/LoongArch/lasx/absd.s
    A llvm/test/MC/LoongArch/lasx/add.s
    A llvm/test/MC/LoongArch/lasx/adda.s
    A llvm/test/MC/LoongArch/lasx/addi.s
    A llvm/test/MC/LoongArch/lasx/addw.s
    A llvm/test/MC/LoongArch/lasx/and.s
    A llvm/test/MC/LoongArch/lasx/andi.s
    A llvm/test/MC/LoongArch/lasx/andn.s
    A llvm/test/MC/LoongArch/lasx/avg.s
    A llvm/test/MC/LoongArch/lasx/avgr.s
    A llvm/test/MC/LoongArch/lasx/bitclr.s
    A llvm/test/MC/LoongArch/lasx/bitrev.s
    A llvm/test/MC/LoongArch/lasx/bitsel.s
    A llvm/test/MC/LoongArch/lasx/bitseli.s
    A llvm/test/MC/LoongArch/lasx/bitset.s
    A llvm/test/MC/LoongArch/lasx/bsll.s
    A llvm/test/MC/LoongArch/lasx/bsrl.s
    A llvm/test/MC/LoongArch/lasx/clo.s
    A llvm/test/MC/LoongArch/lasx/clz.s
    A llvm/test/MC/LoongArch/lasx/div.s
    A llvm/test/MC/LoongArch/lasx/ext2xv.s
    A llvm/test/MC/LoongArch/lasx/exth.s
    A llvm/test/MC/LoongArch/lasx/extl.s
    A llvm/test/MC/LoongArch/lasx/extrins.s
    A llvm/test/MC/LoongArch/lasx/fadd.s
    A llvm/test/MC/LoongArch/lasx/fclass.s
    A llvm/test/MC/LoongArch/lasx/fcmp.s
    A llvm/test/MC/LoongArch/lasx/fcvt.s
    A llvm/test/MC/LoongArch/lasx/fcvth.s
    A llvm/test/MC/LoongArch/lasx/fcvtl.s
    A llvm/test/MC/LoongArch/lasx/fdiv.s
    A llvm/test/MC/LoongArch/lasx/ffint.s
    A llvm/test/MC/LoongArch/lasx/flogb.s
    A llvm/test/MC/LoongArch/lasx/fmadd.s
    A llvm/test/MC/LoongArch/lasx/fmax.s
    A llvm/test/MC/LoongArch/lasx/fmaxa.s
    A llvm/test/MC/LoongArch/lasx/fmin.s
    A llvm/test/MC/LoongArch/lasx/fmina.s
    A llvm/test/MC/LoongArch/lasx/fmsub.s
    A llvm/test/MC/LoongArch/lasx/fmul.s
    A llvm/test/MC/LoongArch/lasx/fnmadd.s
    A llvm/test/MC/LoongArch/lasx/fnmsub.s
    A llvm/test/MC/LoongArch/lasx/frecip.s
    A llvm/test/MC/LoongArch/lasx/frint.s
    A llvm/test/MC/LoongArch/lasx/frsqrt.s
    A llvm/test/MC/LoongArch/lasx/frstp.s
    A llvm/test/MC/LoongArch/lasx/fsqrt.s
    A llvm/test/MC/LoongArch/lasx/fsub.s
    A llvm/test/MC/LoongArch/lasx/ftint.s
    A llvm/test/MC/LoongArch/lasx/haddw.s
    A llvm/test/MC/LoongArch/lasx/hsubw.s
    A llvm/test/MC/LoongArch/lasx/ilv.s
    A llvm/test/MC/LoongArch/lasx/insgr2vr.s
    A llvm/test/MC/LoongArch/lasx/insve0.s
    A llvm/test/MC/LoongArch/lasx/invalid-imm.s
    A llvm/test/MC/LoongArch/lasx/ld.s
    A llvm/test/MC/LoongArch/lasx/ldi.s
    A llvm/test/MC/LoongArch/lasx/ldrepl.s
    A llvm/test/MC/LoongArch/lasx/madd.s
    A llvm/test/MC/LoongArch/lasx/maddw.s
    A llvm/test/MC/LoongArch/lasx/max.s
    A llvm/test/MC/LoongArch/lasx/min.s
    A llvm/test/MC/LoongArch/lasx/mod.s
    A llvm/test/MC/LoongArch/lasx/mskgez.s
    A llvm/test/MC/LoongArch/lasx/mskltz.s
    A llvm/test/MC/LoongArch/lasx/msknz.s
    A llvm/test/MC/LoongArch/lasx/msub.s
    A llvm/test/MC/LoongArch/lasx/muh.s
    A llvm/test/MC/LoongArch/lasx/mul.s
    A llvm/test/MC/LoongArch/lasx/mulw.s
    A llvm/test/MC/LoongArch/lasx/neg.s
    A llvm/test/MC/LoongArch/lasx/nor.s
    A llvm/test/MC/LoongArch/lasx/nori.s
    A llvm/test/MC/LoongArch/lasx/or.s
    A llvm/test/MC/LoongArch/lasx/ori.s
    A llvm/test/MC/LoongArch/lasx/orn.s
    A llvm/test/MC/LoongArch/lasx/pack.s
    A llvm/test/MC/LoongArch/lasx/pcnt.s
    A llvm/test/MC/LoongArch/lasx/perm.s
    A llvm/test/MC/LoongArch/lasx/permi.s
    A llvm/test/MC/LoongArch/lasx/pick.s
    A llvm/test/MC/LoongArch/lasx/pickve.s
    A llvm/test/MC/LoongArch/lasx/pickve2gr.s
    A llvm/test/MC/LoongArch/lasx/repl128vei.s
    A llvm/test/MC/LoongArch/lasx/replgr2vr.s
    A llvm/test/MC/LoongArch/lasx/replve.s
    A llvm/test/MC/LoongArch/lasx/replve0.s
    A llvm/test/MC/LoongArch/lasx/rotr.s
    A llvm/test/MC/LoongArch/lasx/sadd.s
    A llvm/test/MC/LoongArch/lasx/sat.s
    A llvm/test/MC/LoongArch/lasx/seq.s
    A llvm/test/MC/LoongArch/lasx/set.s
    A llvm/test/MC/LoongArch/lasx/setallnez.s
    A llvm/test/MC/LoongArch/lasx/setanyeqz.s
    A llvm/test/MC/LoongArch/lasx/shuf.s
    A llvm/test/MC/LoongArch/lasx/shuf4i.s
    A llvm/test/MC/LoongArch/lasx/signcov.s
    A llvm/test/MC/LoongArch/lasx/sle.s
    A llvm/test/MC/LoongArch/lasx/sll.s
    A llvm/test/MC/LoongArch/lasx/sllwil.s
    A llvm/test/MC/LoongArch/lasx/slt.s
    A llvm/test/MC/LoongArch/lasx/sra.s
    A llvm/test/MC/LoongArch/lasx/sran.s
    A llvm/test/MC/LoongArch/lasx/srani.s
    A llvm/test/MC/LoongArch/lasx/srar.s
    A llvm/test/MC/LoongArch/lasx/srarn.s
    A llvm/test/MC/LoongArch/lasx/srarni.s
    A llvm/test/MC/LoongArch/lasx/srl.s
    A llvm/test/MC/LoongArch/lasx/srln.s
    A llvm/test/MC/LoongArch/lasx/srlni.s
    A llvm/test/MC/LoongArch/lasx/srlr.s
    A llvm/test/MC/LoongArch/lasx/srlrn.s
    A llvm/test/MC/LoongArch/lasx/srlrni.s
    A llvm/test/MC/LoongArch/lasx/ssran.s
    A llvm/test/MC/LoongArch/lasx/ssrani.s
    A llvm/test/MC/LoongArch/lasx/ssrarn.s
    A llvm/test/MC/LoongArch/lasx/ssrarni.s
    A llvm/test/MC/LoongArch/lasx/ssrln.s
    A llvm/test/MC/LoongArch/lasx/ssrlni.s
    A llvm/test/MC/LoongArch/lasx/ssrlrn.s
    A llvm/test/MC/LoongArch/lasx/ssrlrni.s
    A llvm/test/MC/LoongArch/lasx/ssub.s
    A llvm/test/MC/LoongArch/lasx/st.s
    A llvm/test/MC/LoongArch/lasx/stelm.s
    A llvm/test/MC/LoongArch/lasx/sub.s
    A llvm/test/MC/LoongArch/lasx/subi.s
    A llvm/test/MC/LoongArch/lasx/subw.s
    A llvm/test/MC/LoongArch/lasx/xor.s
    A llvm/test/MC/LoongArch/lasx/xori.s

  Log Message:
  -----------
  [LoongArch][MC] Add testcases for LASX instructions

Depends on D154195

Reviewed By: SixWeining

Differential Revision: https://reviews.llvm.org/D154326


Compare: https://github.com/llvm/llvm-project/compare/2dcba670070b...99d74edcf584


More information about the All-commits mailing list