[PATCH] D136075: [AArch64]SME2 Multi-vector - Index/Single/Multi Array Vectors LONG INT MLA sources

Caroline via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 17 06:09:18 PDT 2022


CarolineConcatto created this revision.
Herald added subscribers: arphaman, hiraditya, kristof.beyls.
Herald added a project: All.
CarolineConcatto requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

  This patch adds the assembly/disassembly for the following instructions:
  
    SMLALL: (multiple and indexed vector): Multi-vector signed integer multiply-add long long by indexed element.
            (multiple and single vector): Multi-vector signed integer multiply-add long long by vector.
            (multiple vectors): Multi-vector signed integer multiply-add long long.
  
    SMLSLL: (multiple and indexed vector): Multi-vector signed integer multiply-subtract long long by indexed element.
            (multiple and single vector): Multi-vector signed integer multiply-subtract long long by vector.
            (multiple vectors): Multi-vector signed integer multiply-subtract long long.
    SUMLALL: (multiple and indexed vector): Multi-vector signed by unsigned integer multiply-add long long by indexed element.
              (multiple and single vector): Multi-vector signed by unsigned integer multiply-add long long by vector.
  
    UMLALL: (multiple and indexed vector): Multi-vector unsigned integer multiply-add long long by indexed element.
            (multiple and single vector): Multi-vector unsigned integer multiply-add long long by vector.
            (multiple vectors): Multi-vector unsigned integer multiply-add long long.
  
    UMLSLL: (multiple and indexed vector): Multi-vector unsigned integer multiply-subtract long long by indexed element.
            (multiple and single vector): Multi-vector unsigned integer multiply-subtract long long by vector.
            (multiple vectors): Multi-vector unsigned integer multiply-subtract long long.
  
    USMLALL: (multiple and indexed vector): Multi-vector unsigned by signed integer multiply-add long long by indexed element.
            (multiple and single vector): Multi-vector unsigned by signed integer multiply-add long long by vector.
            (multiple vectors): Multi-vector unsigned by signed integer multiply-add long long.

The reference can be found here:

https://developer.arm.com/documentation/ddi0602/2022-09

   It also adds a new immediate:
       uimm2s4range for off2
       uimm1s4range for o1
     to represent the vector select offset.
  The new operands have the range between the first and the last vector position.
  
  Depends on : D135785


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D136075

Files:
  llvm/lib/Target/AArch64/AArch64InstrFormats.td
  llvm/lib/Target/AArch64/AArch64SMEInstrInfo.td
  llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
  llvm/lib/Target/AArch64/SMEInstrFormats.td
  llvm/test/MC/AArch64/SME2/smlall-diagnostics.s
  llvm/test/MC/AArch64/SME2/smlall.s
  llvm/test/MC/AArch64/SME2/smlsll-diagnostics.s
  llvm/test/MC/AArch64/SME2/smlsll.s
  llvm/test/MC/AArch64/SME2/sumlall-diagnostics.s
  llvm/test/MC/AArch64/SME2/sumlall.s
  llvm/test/MC/AArch64/SME2/umlall-diagnostics.s
  llvm/test/MC/AArch64/SME2/umlall.s
  llvm/test/MC/AArch64/SME2/umlsll-diagnostics.s
  llvm/test/MC/AArch64/SME2/umlsll.s
  llvm/test/MC/AArch64/SME2/usmlall-diagnostics.s
  llvm/test/MC/AArch64/SME2/usmlall.s



More information about the llvm-commits mailing list