[PATCH] D61262: [AArch64] Implement MC support for Scalable Vector Extension 2 (SVE2)

Cullen Rhodes via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Apr 29 07:26:19 PDT 2019


c-rhodes created this revision.
c-rhodes added reviewers: sdesmalen, SjoerdMeijer, olista01.
Herald added subscribers: kristina, kristof.beyls, tschuett, javed.absar.
Herald added a project: LLVM.

This patch adds MC support for the entire Arm SVE2 instruction set, along with
flag changes enabling the feature.

All new instructions are defined in the existing AArch64SVEInstrInfo.td and
SVEInstrFormats.td TableGen files, with the latter containing the more generic
multiclasses.

The majority of instructions are enabled with the sve2 feature flag, although
there are 4 additional architecture features enabling other instructions, these
are: sve2-aes, sve2-sm4, sve2-sha3, and bitperm.

For more information please refer to the ISA spec available at:
https://developer.arm.com/docs/ddi0602/latest


Repository:
  rL LLVM

https://reviews.llvm.org/D61262

Files:
  include/llvm/Support/AArch64TargetParser.def
  include/llvm/Support/AArch64TargetParser.h
  include/llvm/Support/ARMTargetParser.h
  lib/Support/AArch64TargetParser.cpp
  lib/Target/AArch64/AArch64.td
  lib/Target/AArch64/AArch64InstrInfo.td
  lib/Target/AArch64/AArch64SVEInstrInfo.td
  lib/Target/AArch64/AArch64SchedA53.td
  lib/Target/AArch64/AArch64SchedA57.td
  lib/Target/AArch64/AArch64SchedCyclone.td
  lib/Target/AArch64/AArch64SchedExynosM1.td
  lib/Target/AArch64/AArch64SchedExynosM3.td
  lib/Target/AArch64/AArch64SchedExynosM4.td
  lib/Target/AArch64/AArch64SchedFalkor.td
  lib/Target/AArch64/AArch64SchedKryo.td
  lib/Target/AArch64/AArch64SchedThunderX.td
  lib/Target/AArch64/AArch64SchedThunderX2T99.td
  lib/Target/AArch64/AArch64Subtarget.h
  lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
  lib/Target/AArch64/SVEInstrFormats.td
  test/MC/AArch64/SVE/ldnt1b-diagnostics.s
  test/MC/AArch64/SVE/movprfx-diagnostics.s
  test/MC/AArch64/SVE/stnt1b-diagnostics.s
  test/MC/AArch64/SVE2/adclb-diagnostics.s
  test/MC/AArch64/SVE2/adclb.s
  test/MC/AArch64/SVE2/adclt-diagnostics.s
  test/MC/AArch64/SVE2/adclt.s
  test/MC/AArch64/SVE2/addhnb-diagnostics.s
  test/MC/AArch64/SVE2/addhnb.s
  test/MC/AArch64/SVE2/addhnt-diagnostics.s
  test/MC/AArch64/SVE2/addhnt.s
  test/MC/AArch64/SVE2/addp-diagnostics.s
  test/MC/AArch64/SVE2/addp.s
  test/MC/AArch64/SVE2/aesd-diagnostics.s
  test/MC/AArch64/SVE2/aesd.s
  test/MC/AArch64/SVE2/aese-diagnostics.s
  test/MC/AArch64/SVE2/aese.s
  test/MC/AArch64/SVE2/aesimc-diagnostics.s
  test/MC/AArch64/SVE2/aesimc.s
  test/MC/AArch64/SVE2/aesmc-diagnostics.s
  test/MC/AArch64/SVE2/aesmc.s
  test/MC/AArch64/SVE2/bcax-diagnostics.s
  test/MC/AArch64/SVE2/bcax.s
  test/MC/AArch64/SVE2/bdep-diagnostics.s
  test/MC/AArch64/SVE2/bdep.s
  test/MC/AArch64/SVE2/bext-diagnostics.s
  test/MC/AArch64/SVE2/bext.s
  test/MC/AArch64/SVE2/bgrp-diagnostics.s
  test/MC/AArch64/SVE2/bgrp.s
  test/MC/AArch64/SVE2/bsl-diagnostics.s
  test/MC/AArch64/SVE2/bsl.s
  test/MC/AArch64/SVE2/bsl1n-diagnostics.s
  test/MC/AArch64/SVE2/bsl1n.s
  test/MC/AArch64/SVE2/bsl2n-diagnostics.s
  test/MC/AArch64/SVE2/bsl2n.s
  test/MC/AArch64/SVE2/cadd-diagnostics.s
  test/MC/AArch64/SVE2/cadd.s
  test/MC/AArch64/SVE2/cdot-diagnostics.s
  test/MC/AArch64/SVE2/cdot.s
  test/MC/AArch64/SVE2/cmla-diagnostics.s
  test/MC/AArch64/SVE2/cmla.s
  test/MC/AArch64/SVE2/directive-arch-negative.s
  test/MC/AArch64/SVE2/directive-arch.s
  test/MC/AArch64/SVE2/directive-arch_extension-negative.s
  test/MC/AArch64/SVE2/directive-arch_extension.s
  test/MC/AArch64/SVE2/directive-cpu-negative.s
  test/MC/AArch64/SVE2/directive-cpu.s
  test/MC/AArch64/SVE2/eor3-diagnostics.s
  test/MC/AArch64/SVE2/eor3.s
  test/MC/AArch64/SVE2/eorbt-diagnostics.s
  test/MC/AArch64/SVE2/eorbt.s
  test/MC/AArch64/SVE2/eortb-diagnostics.s
  test/MC/AArch64/SVE2/eortb.s
  test/MC/AArch64/SVE2/ext-diagnostics.s
  test/MC/AArch64/SVE2/ext.s
  test/MC/AArch64/SVE2/faddp-diagnostics.s
  test/MC/AArch64/SVE2/faddp.s
  test/MC/AArch64/SVE2/fcvtlt-diagnostics.s
  test/MC/AArch64/SVE2/fcvtlt.s
  test/MC/AArch64/SVE2/fcvtnt-diagnostics.s
  test/MC/AArch64/SVE2/fcvtnt.s
  test/MC/AArch64/SVE2/fcvtx-diagnostics.s
  test/MC/AArch64/SVE2/fcvtx.s
  test/MC/AArch64/SVE2/fcvtxnt-diagnostics.s
  test/MC/AArch64/SVE2/fcvtxnt.s
  test/MC/AArch64/SVE2/flogb-diagnostics.s
  test/MC/AArch64/SVE2/flogb.s
  test/MC/AArch64/SVE2/fmaxnmp-diagnostics.s
  test/MC/AArch64/SVE2/fmaxnmp.s
  test/MC/AArch64/SVE2/fmaxp-diagnostics.s
  test/MC/AArch64/SVE2/fmaxp.s
  test/MC/AArch64/SVE2/fminnmp-diagnostics.s
  test/MC/AArch64/SVE2/fminnmp.s
  test/MC/AArch64/SVE2/fminp-diagnostics.s
  test/MC/AArch64/SVE2/fminp.s
  test/MC/AArch64/SVE2/fmlalb-diagnostics.s
  test/MC/AArch64/SVE2/fmlalb.s
  test/MC/AArch64/SVE2/fmlalt-diagnostics.s
  test/MC/AArch64/SVE2/fmlalt.s
  test/MC/AArch64/SVE2/fmlslb-diagnostics.s
  test/MC/AArch64/SVE2/fmlslb.s
  test/MC/AArch64/SVE2/fmlslt-diagnostics.s
  test/MC/AArch64/SVE2/fmlslt.s
  test/MC/AArch64/SVE2/histcnt-diagnostics.s
  test/MC/AArch64/SVE2/histcnt.s
  test/MC/AArch64/SVE2/histseg-diagnostics.s
  test/MC/AArch64/SVE2/histseg.s
  test/MC/AArch64/SVE2/ldnt1b-diagnostics.s
  test/MC/AArch64/SVE2/ldnt1b.s
  test/MC/AArch64/SVE2/ldnt1d-diagnostics.s
  test/MC/AArch64/SVE2/ldnt1d.s
  test/MC/AArch64/SVE2/ldnt1h-diagnostics.s
  test/MC/AArch64/SVE2/ldnt1h.s
  test/MC/AArch64/SVE2/ldnt1sb-diagnostics.s
  test/MC/AArch64/SVE2/ldnt1sb.s
  test/MC/AArch64/SVE2/ldnt1sh-diagnostics.s
  test/MC/AArch64/SVE2/ldnt1sh.s
  test/MC/AArch64/SVE2/ldnt1sw-diagnostics.s
  test/MC/AArch64/SVE2/ldnt1sw.s
  test/MC/AArch64/SVE2/ldnt1w-diagnostics.s
  test/MC/AArch64/SVE2/ldnt1w.s
  test/MC/AArch64/SVE2/match-diagnostics.s
  test/MC/AArch64/SVE2/match.s
  test/MC/AArch64/SVE2/mla-diagnostics.s
  test/MC/AArch64/SVE2/mla.s
  test/MC/AArch64/SVE2/mls-diagnostics.s
  test/MC/AArch64/SVE2/mls.s
  test/MC/AArch64/SVE2/mul-diagnostics.s
  test/MC/AArch64/SVE2/mul.s
  test/MC/AArch64/SVE2/nbsl-diagnostics.s
  test/MC/AArch64/SVE2/nbsl.s
  test/MC/AArch64/SVE2/nmatch-diagnostics.s
  test/MC/AArch64/SVE2/nmatch.s
  test/MC/AArch64/SVE2/pmul-diagnostics.s
  test/MC/AArch64/SVE2/pmul.s
  test/MC/AArch64/SVE2/pmullb-128-diagnostics.s
  test/MC/AArch64/SVE2/pmullb-128.s
  test/MC/AArch64/SVE2/pmullb-diagnostics.s
  test/MC/AArch64/SVE2/pmullb.s
  test/MC/AArch64/SVE2/pmullt-128-diagnostics.s
  test/MC/AArch64/SVE2/pmullt-128.s
  test/MC/AArch64/SVE2/pmullt-diagnostics.s
  test/MC/AArch64/SVE2/pmullt.s
  test/MC/AArch64/SVE2/raddhnb-diagnostics.s
  test/MC/AArch64/SVE2/raddhnb.s
  test/MC/AArch64/SVE2/raddhnt-diagnostics.s
  test/MC/AArch64/SVE2/raddhnt.s
  test/MC/AArch64/SVE2/rax1-diagnostics.s
  test/MC/AArch64/SVE2/rax1.s
  test/MC/AArch64/SVE2/rshrnb-diagnostics.s
  test/MC/AArch64/SVE2/rshrnb.s
  test/MC/AArch64/SVE2/rshrnt-diagnostics.s
  test/MC/AArch64/SVE2/rshrnt.s
  test/MC/AArch64/SVE2/rsubhnb-diagnostics.s
  test/MC/AArch64/SVE2/rsubhnb.s
  test/MC/AArch64/SVE2/rsubhnt-diagnostics.s
  test/MC/AArch64/SVE2/rsubhnt.s
  test/MC/AArch64/SVE2/saba-diagnostics.s
  test/MC/AArch64/SVE2/saba.s
  test/MC/AArch64/SVE2/sabalb-diagnostics.s
  test/MC/AArch64/SVE2/sabalb.s
  test/MC/AArch64/SVE2/sabalt-diagnostics.s
  test/MC/AArch64/SVE2/sabalt.s
  test/MC/AArch64/SVE2/sabdlb-diagnostics.s
  test/MC/AArch64/SVE2/sabdlb.s
  test/MC/AArch64/SVE2/sabdlt-diagnostics.s
  test/MC/AArch64/SVE2/sabdlt.s
  test/MC/AArch64/SVE2/sadalp-diagnostics.s
  test/MC/AArch64/SVE2/sadalp.s
  test/MC/AArch64/SVE2/saddlb-diagnostics.s
  test/MC/AArch64/SVE2/saddlb.s
  test/MC/AArch64/SVE2/saddlbt-diagnostics.s
  test/MC/AArch64/SVE2/saddlbt.s
  test/MC/AArch64/SVE2/saddlt-diagnostics.s
  test/MC/AArch64/SVE2/saddlt.s
  test/MC/AArch64/SVE2/saddwb-diagnostics.s
  test/MC/AArch64/SVE2/saddwb.s
  test/MC/AArch64/SVE2/saddwt-diagnostics.s
  test/MC/AArch64/SVE2/saddwt.s
  test/MC/AArch64/SVE2/sbclb-diagnostics.s
  test/MC/AArch64/SVE2/sbclb.s
  test/MC/AArch64/SVE2/sbclt-diagnostics.s
  test/MC/AArch64/SVE2/sbclt.s
  test/MC/AArch64/SVE2/shadd-diagnostics.s
  test/MC/AArch64/SVE2/shadd.s
  test/MC/AArch64/SVE2/shrnb-diagnostics.s
  test/MC/AArch64/SVE2/shrnb.s
  test/MC/AArch64/SVE2/shrnt-diagnostics.s
  test/MC/AArch64/SVE2/shrnt.s
  test/MC/AArch64/SVE2/shsub-diagnostics.s
  test/MC/AArch64/SVE2/shsub.s
  test/MC/AArch64/SVE2/shsubr-diagnostics.s
  test/MC/AArch64/SVE2/shsubr.s
  test/MC/AArch64/SVE2/sli-diagnostics.s
  test/MC/AArch64/SVE2/sli.s
  test/MC/AArch64/SVE2/sm4e-diagnostics.s
  test/MC/AArch64/SVE2/sm4e.s
  test/MC/AArch64/SVE2/sm4ekey-diagnostics.s
  test/MC/AArch64/SVE2/sm4ekey.s
  test/MC/AArch64/SVE2/smaxp-diagnostics.s
  test/MC/AArch64/SVE2/smaxp.s
  test/MC/AArch64/SVE2/sminp-diagnostics.s
  test/MC/AArch64/SVE2/sminp.s
  test/MC/AArch64/SVE2/smlalb-diagnostics.s
  test/MC/AArch64/SVE2/smlalb.s
  test/MC/AArch64/SVE2/smlalt-diagnostics.s
  test/MC/AArch64/SVE2/smlalt.s
  test/MC/AArch64/SVE2/smlslb-diagnostics.s
  test/MC/AArch64/SVE2/smlslb.s
  test/MC/AArch64/SVE2/smlslt-diagnostics.s
  test/MC/AArch64/SVE2/smlslt.s
  test/MC/AArch64/SVE2/smulh-diagnostics.s
  test/MC/AArch64/SVE2/smulh.s
  test/MC/AArch64/SVE2/smullb-diagnostics.s
  test/MC/AArch64/SVE2/smullb.s
  test/MC/AArch64/SVE2/smullt-diagnostics.s
  test/MC/AArch64/SVE2/smullt.s
  test/MC/AArch64/SVE2/splice-diagnostics.s
  test/MC/AArch64/SVE2/splice.s
  test/MC/AArch64/SVE2/sqabs-diagnostics.s
  test/MC/AArch64/SVE2/sqabs.s
  test/MC/AArch64/SVE2/sqadd-diagnostics.s
  test/MC/AArch64/SVE2/sqadd.s
  test/MC/AArch64/SVE2/sqcadd-diagnostics.s
  test/MC/AArch64/SVE2/sqcadd.s
  test/MC/AArch64/SVE2/sqdmlalb-diagnostics.s
  test/MC/AArch64/SVE2/sqdmlalb.s
  test/MC/AArch64/SVE2/sqdmlalbt-diagnostics.s
  test/MC/AArch64/SVE2/sqdmlalbt.s
  test/MC/AArch64/SVE2/sqdmlalt-diagnostics.s
  test/MC/AArch64/SVE2/sqdmlalt.s
  test/MC/AArch64/SVE2/sqdmlslb-diagnostics.s
  test/MC/AArch64/SVE2/sqdmlslb.s
  test/MC/AArch64/SVE2/sqdmlslbt-diagnostics.s
  test/MC/AArch64/SVE2/sqdmlslbt.s
  test/MC/AArch64/SVE2/sqdmlslt-diagnostics.s
  test/MC/AArch64/SVE2/sqdmlslt.s
  test/MC/AArch64/SVE2/sqdmulh-diagnostics.s
  test/MC/AArch64/SVE2/sqdmulh.s
  test/MC/AArch64/SVE2/sqdmullb-diagnostics.s
  test/MC/AArch64/SVE2/sqdmullb.s
  test/MC/AArch64/SVE2/sqdmullt-diagnostics.s
  test/MC/AArch64/SVE2/sqdmullt.s
  test/MC/AArch64/SVE2/sqneg-diagnostics.s
  test/MC/AArch64/SVE2/sqneg.s
  test/MC/AArch64/SVE2/sqrdcmlah-diagnostics.s
  test/MC/AArch64/SVE2/sqrdcmlah.s
  test/MC/AArch64/SVE2/sqrdmlah-diagnostics.s
  test/MC/AArch64/SVE2/sqrdmlah.s
  test/MC/AArch64/SVE2/sqrdmlsh-diagnostics.s
  (204 more files...)





More information about the llvm-commits mailing list