[PATCH] D121208: [AArch64][SME] Split up SME features. (alternative approach)

Sander de Smalen via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Mar 15 10:40:33 PDT 2022


sdesmalen updated this revision to Diff 415497.
sdesmalen edited the summary of this revision.
sdesmalen added a comment.

Simplified the patch by setting `+pstate-sm1` and `+pstate-za1` by default, 
as neither of these have any effect without `+sme`. This reduces the need
to have separate internal/external flags for SME like in the first
revision because having `+sme` imply `+pstate-sm1` and `+pstate-za1` led
to problems when disabling the pstate features (which is kind of their
intended use).


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D121208/new/

https://reviews.llvm.org/D121208

Files:
  llvm/lib/Support/AArch64TargetParser.cpp
  llvm/lib/Target/AArch64/AArch64.td
  llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
  llvm/lib/Target/AArch64/AArch64InstrFormats.td
  llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
  llvm/lib/Target/AArch64/AArch64InstrInfo.td
  llvm/lib/Target/AArch64/AArch64SMEInstrInfo.td
  llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
  llvm/lib/Target/AArch64/AArch64SchedA64FX.td
  llvm/lib/Target/AArch64/AArch64Subtarget.cpp
  llvm/lib/Target/AArch64/AArch64Subtarget.h
  llvm/lib/Target/AArch64/AArch64SystemOperands.td
  llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
  llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp
  llvm/lib/Target/AArch64/SVEInstrFormats.td
  llvm/test/CodeGen/AArch64/sve-intrinsics-contiguous-prefetches.ll
  llvm/test/CodeGen/AArch64/sve-intrinsics-conversion.ll
  llvm/test/CodeGen/AArch64/sve-intrinsics-counting-bits.ll
  llvm/test/CodeGen/AArch64/sve-intrinsics-counting-elems.ll
  llvm/test/CodeGen/AArch64/sve-intrinsics-create-tuple.ll
  llvm/test/CodeGen/AArch64/sve-intrinsics-fp-converts.ll
  llvm/test/CodeGen/AArch64/sve-intrinsics-insert-extract-tuple.ll
  llvm/test/CodeGen/AArch64/sve-intrinsics-ldN-reg+imm-addr-mode.ll
  llvm/test/CodeGen/AArch64/sve-intrinsics-ldN-reg+reg-addr-mode.ll
  llvm/test/CodeGen/AArch64/sve-intrinsics-ldN-sret-reg+imm-addr-mode.ll
  llvm/test/CodeGen/AArch64/sve-intrinsics-ldN-sret-reg+reg-addr-mode.ll
  llvm/test/CodeGen/AArch64/sve-intrinsics-logical.ll
  llvm/test/CodeGen/AArch64/sve-intrinsics-pred-creation.ll
  llvm/test/CodeGen/AArch64/sve-intrinsics-pred-operations.ll
  llvm/test/CodeGen/AArch64/sve-intrinsics-pred-testing.ll
  llvm/test/CodeGen/AArch64/sve-intrinsics-reinterpret.ll
  llvm/test/CodeGen/AArch64/sve-intrinsics-reversal.ll
  llvm/test/CodeGen/AArch64/sve-intrinsics-sel.ll
  llvm/test/CodeGen/AArch64/sve-intrinsics-sqdec.ll
  llvm/test/CodeGen/AArch64/sve-intrinsics-sqinc.ll
  llvm/test/CodeGen/AArch64/sve-intrinsics-st1-addressing-mode-reg-imm.ll
  llvm/test/CodeGen/AArch64/sve-intrinsics-st1-addressing-mode-reg-reg.ll
  llvm/test/CodeGen/AArch64/sve-intrinsics-st1.ll
  llvm/test/CodeGen/AArch64/sve-intrinsics-stN-reg-imm-addr-mode.ll
  llvm/test/CodeGen/AArch64/sve-intrinsics-stN-reg-reg-addr-mode.ll
  llvm/test/CodeGen/AArch64/sve-intrinsics-stores.ll
  llvm/test/CodeGen/AArch64/sve-intrinsics-uqdec.ll
  llvm/test/CodeGen/AArch64/sve-intrinsics-uqinc.ll
  llvm/test/CodeGen/AArch64/sve-intrinsics-while.ll
  llvm/test/CodeGen/AArch64/sve2-intrinsics-binary-narrowing-add-sub.ll
  llvm/test/CodeGen/AArch64/sve2-intrinsics-binary-narrowing-shr.ll
  llvm/test/CodeGen/AArch64/sve2-intrinsics-complex-dot.ll
  llvm/test/CodeGen/AArch64/sve2-intrinsics-contiguous-conflict-detection.ll
  llvm/test/CodeGen/AArch64/sve2-intrinsics-fp-converts.ll
  llvm/test/CodeGen/AArch64/sve2-intrinsics-fp-int-binary-logarithm.ll
  llvm/test/CodeGen/AArch64/sve2-intrinsics-fp-widening-mul-acc.ll
  llvm/test/CodeGen/AArch64/sve2-intrinsics-int-mul-lane.ll
  llvm/test/CodeGen/AArch64/sve2-intrinsics-non-widening-pairwise-arith.ll
  llvm/test/CodeGen/AArch64/sve2-intrinsics-polynomial-arithmetic.ll
  llvm/test/CodeGen/AArch64/sve2-intrinsics-unary-narrowing.ll
  llvm/test/CodeGen/AArch64/sve2-intrinsics-uniform-complex-arith.ll
  llvm/test/CodeGen/AArch64/sve2-intrinsics-while.ll
  llvm/test/CodeGen/AArch64/sve2-intrinsics-widening-complex-int-arith.ll
  llvm/test/CodeGen/AArch64/sve2-intrinsics-widening-dsp.ll
  llvm/test/CodeGen/AArch64/sve2-intrinsics-widening-pairwise-arith.ll
  llvm/test/MC/AArch64/SME/addha-diagnostics.s
  llvm/test/MC/AArch64/SME/addha-u32.s
  llvm/test/MC/AArch64/SME/addva-diagnostics.s
  llvm/test/MC/AArch64/SME/addva-u32.s
  llvm/test/MC/AArch64/SME/bfmopa.s
  llvm/test/MC/AArch64/SME/bfmops.s
  llvm/test/MC/AArch64/SME/feature.s
  llvm/test/MC/AArch64/SME/fmopa-diagnostics.s
  llvm/test/MC/AArch64/SME/fmopa-fp64.s
  llvm/test/MC/AArch64/SME/fmopa.s
  llvm/test/MC/AArch64/SME/fmops-diagnostics.s
  llvm/test/MC/AArch64/SME/fmops-fp64.s
  llvm/test/MC/AArch64/SME/fmops.s
  llvm/test/MC/AArch64/SME/ld1b.s
  llvm/test/MC/AArch64/SME/ld1d.s
  llvm/test/MC/AArch64/SME/ld1h.s
  llvm/test/MC/AArch64/SME/ld1q.s
  llvm/test/MC/AArch64/SME/ld1w.s
  llvm/test/MC/AArch64/SME/ldr.s
  llvm/test/MC/AArch64/SME/mova.s
  llvm/test/MC/AArch64/SME/psel.s
  llvm/test/MC/AArch64/SME/revd.s
  llvm/test/MC/AArch64/SME/sclamp-diagnostics.s
  llvm/test/MC/AArch64/SME/sclamp.s
  llvm/test/MC/AArch64/SME/smopa-32.s
  llvm/test/MC/AArch64/SME/smopa-diagnostics.s
  llvm/test/MC/AArch64/SME/smops-32.s
  llvm/test/MC/AArch64/SME/smops-diagnostics.s
  llvm/test/MC/AArch64/SME/smstart.s
  llvm/test/MC/AArch64/SME/smstop.s
  llvm/test/MC/AArch64/SME/st1b.s
  llvm/test/MC/AArch64/SME/st1d.s
  llvm/test/MC/AArch64/SME/st1h.s
  llvm/test/MC/AArch64/SME/st1q.s
  llvm/test/MC/AArch64/SME/st1w.s
  llvm/test/MC/AArch64/SME/str.s
  llvm/test/MC/AArch64/SME/streaming-mode-neon-bf16.s
  llvm/test/MC/AArch64/SME/streaming-mode-neon-fp16.s
  llvm/test/MC/AArch64/SME/streaming-mode-neon.s
  llvm/test/MC/AArch64/SME/sumopa-32.s
  llvm/test/MC/AArch64/SME/sumopa-diagnostics.s
  llvm/test/MC/AArch64/SME/sumops-32.s
  llvm/test/MC/AArch64/SME/sumops-diagnostics.s
  llvm/test/MC/AArch64/SME/system-regs.s
  llvm/test/MC/AArch64/SME/uclamp-diagnostics.s
  llvm/test/MC/AArch64/SME/uclamp.s
  llvm/test/MC/AArch64/SME/umopa-32.s
  llvm/test/MC/AArch64/SME/umopa-diagnostics.s
  llvm/test/MC/AArch64/SME/umops-32.s
  llvm/test/MC/AArch64/SME/umops-diagnostics.s
  llvm/test/MC/AArch64/SME/usmopa-32.s
  llvm/test/MC/AArch64/SME/usmopa-diagnostics.s
  llvm/test/MC/AArch64/SME/usmops-32.s
  llvm/test/MC/AArch64/SME/usmops-diagnostics.s
  llvm/test/MC/AArch64/SME/zero.s
  llvm/test/MC/AArch64/SVE/abs.s
  llvm/test/MC/AArch64/SVE/add.s
  llvm/test/MC/AArch64/SVE/addpl.s
  llvm/test/MC/AArch64/SVE/addvl.s
  llvm/test/MC/AArch64/SVE/and.s
  llvm/test/MC/AArch64/SVE/ands.s
  llvm/test/MC/AArch64/SVE/andv.s
  llvm/test/MC/AArch64/SVE/asr.s
  llvm/test/MC/AArch64/SVE/asrd.s
  llvm/test/MC/AArch64/SVE/asrr.s
  llvm/test/MC/AArch64/SVE/bfcvt.s
  llvm/test/MC/AArch64/SVE/bfcvtnt.s
  llvm/test/MC/AArch64/SVE/bfdot.s
  llvm/test/MC/AArch64/SVE/bfmlal.s
  llvm/test/MC/AArch64/SVE/bic.s
  llvm/test/MC/AArch64/SVE/bics.s
  llvm/test/MC/AArch64/SVE/brka.s
  llvm/test/MC/AArch64/SVE/brkas.s
  llvm/test/MC/AArch64/SVE/brkb.s
  llvm/test/MC/AArch64/SVE/brkbs.s
  llvm/test/MC/AArch64/SVE/brkn.s
  llvm/test/MC/AArch64/SVE/brkns.s
  llvm/test/MC/AArch64/SVE/brkpa.s
  llvm/test/MC/AArch64/SVE/brkpas.s
  llvm/test/MC/AArch64/SVE/brkpb.s
  llvm/test/MC/AArch64/SVE/brkpbs.s
  llvm/test/MC/AArch64/SVE/clasta.s
  llvm/test/MC/AArch64/SVE/clastb.s
  llvm/test/MC/AArch64/SVE/cls.s
  llvm/test/MC/AArch64/SVE/clz.s
  llvm/test/MC/AArch64/SVE/cmpeq.s
  llvm/test/MC/AArch64/SVE/cmpge.s
  llvm/test/MC/AArch64/SVE/cmpgt.s
  llvm/test/MC/AArch64/SVE/cmphi.s
  llvm/test/MC/AArch64/SVE/cmphs.s
  llvm/test/MC/AArch64/SVE/cmple.s
  llvm/test/MC/AArch64/SVE/cmplo.s
  llvm/test/MC/AArch64/SVE/cmpls.s
  llvm/test/MC/AArch64/SVE/cmplt.s
  llvm/test/MC/AArch64/SVE/cmpne.s
  llvm/test/MC/AArch64/SVE/cnot.s
  llvm/test/MC/AArch64/SVE/cnt.s
  llvm/test/MC/AArch64/SVE/cntb.s
  llvm/test/MC/AArch64/SVE/cntd.s
  llvm/test/MC/AArch64/SVE/cnth.s
  llvm/test/MC/AArch64/SVE/cntp.s
  llvm/test/MC/AArch64/SVE/cntw.s
  llvm/test/MC/AArch64/SVE/compact.s
  llvm/test/MC/AArch64/SVE/cpy.s
  llvm/test/MC/AArch64/SVE/ctermeq.s
  llvm/test/MC/AArch64/SVE/ctermne.s
  llvm/test/MC/AArch64/SVE/decb.s
  llvm/test/MC/AArch64/SVE/decd.s
  llvm/test/MC/AArch64/SVE/dech.s
  llvm/test/MC/AArch64/SVE/decp.s
  llvm/test/MC/AArch64/SVE/decw.s
  llvm/test/MC/AArch64/SVE/dup.s
  llvm/test/MC/AArch64/SVE/dupm.s
  llvm/test/MC/AArch64/SVE/eon.s
  llvm/test/MC/AArch64/SVE/eor.s
  llvm/test/MC/AArch64/SVE/eors.s
  llvm/test/MC/AArch64/SVE/eorv.s
  llvm/test/MC/AArch64/SVE/ext.s
  llvm/test/MC/AArch64/SVE/fabd.s
  llvm/test/MC/AArch64/SVE/fabs.s
  llvm/test/MC/AArch64/SVE/facge.s
  llvm/test/MC/AArch64/SVE/facgt.s
  llvm/test/MC/AArch64/SVE/facle.s
  llvm/test/MC/AArch64/SVE/faclt.s
  llvm/test/MC/AArch64/SVE/fadd.s
  llvm/test/MC/AArch64/SVE/fadda.s
  llvm/test/MC/AArch64/SVE/faddv.s
  llvm/test/MC/AArch64/SVE/fcadd.s
  llvm/test/MC/AArch64/SVE/fcmeq.s
  llvm/test/MC/AArch64/SVE/fcmge.s
  llvm/test/MC/AArch64/SVE/fcmgt.s
  llvm/test/MC/AArch64/SVE/fcmla.s
  llvm/test/MC/AArch64/SVE/fcmle.s
  llvm/test/MC/AArch64/SVE/fcmlt.s
  llvm/test/MC/AArch64/SVE/fcmne.s
  llvm/test/MC/AArch64/SVE/fcmuo.s
  llvm/test/MC/AArch64/SVE/fcpy.s
  llvm/test/MC/AArch64/SVE/fcvt.s
  llvm/test/MC/AArch64/SVE/fcvtzs.s
  llvm/test/MC/AArch64/SVE/fcvtzu.s
  llvm/test/MC/AArch64/SVE/fdiv.s
  llvm/test/MC/AArch64/SVE/fdivr.s
  llvm/test/MC/AArch64/SVE/fdup.s
  llvm/test/MC/AArch64/SVE/fexpa.s
  llvm/test/MC/AArch64/SVE/fmad.s
  llvm/test/MC/AArch64/SVE/fmax.s
  llvm/test/MC/AArch64/SVE/fmaxnm.s
  llvm/test/MC/AArch64/SVE/fmaxnmv.s
  llvm/test/MC/AArch64/SVE/fmaxv.s
  llvm/test/MC/AArch64/SVE/fmin.s
  llvm/test/MC/AArch64/SVE/fminnm.s
  llvm/test/MC/AArch64/SVE/fminnmv.s
  llvm/test/MC/AArch64/SVE/fminv.s
  llvm/test/MC/AArch64/SVE/fmla.s
  llvm/test/MC/AArch64/SVE/fmls.s
  llvm/test/MC/AArch64/SVE/fmov.s
  llvm/test/MC/AArch64/SVE/fmsb.s
  llvm/test/MC/AArch64/SVE/fmul.s
  llvm/test/MC/AArch64/SVE/fmulx.s
  llvm/test/MC/AArch64/SVE/fneg.s
  llvm/test/MC/AArch64/SVE/fnmad.s
  llvm/test/MC/AArch64/SVE/fnmla.s
  llvm/test/MC/AArch64/SVE/fnmls.s
  llvm/test/MC/AArch64/SVE/fnmsb.s
  llvm/test/MC/AArch64/SVE/frecpe.s
  llvm/test/MC/AArch64/SVE/frecps.s
  llvm/test/MC/AArch64/SVE/frecpx.s
  llvm/test/MC/AArch64/SVE/frinta.s
  llvm/test/MC/AArch64/SVE/frinti.s
  llvm/test/MC/AArch64/SVE/frintm.s
  llvm/test/MC/AArch64/SVE/frintn.s
  llvm/test/MC/AArch64/SVE/frintp.s
  llvm/test/MC/AArch64/SVE/frintx.s
  llvm/test/MC/AArch64/SVE/frintz.s
  llvm/test/MC/AArch64/SVE/frsqrte.s
  llvm/test/MC/AArch64/SVE/frsqrts.s
  llvm/test/MC/AArch64/SVE/fscale.s
  llvm/test/MC/AArch64/SVE/fsqrt.s
  llvm/test/MC/AArch64/SVE/fsub.s
  llvm/test/MC/AArch64/SVE/fsubr.s
  llvm/test/MC/AArch64/SVE/ftsmul.s
  llvm/test/MC/AArch64/SVE/ftssel.s
  llvm/test/MC/AArch64/SVE/incb.s
  llvm/test/MC/AArch64/SVE/incd.s
  llvm/test/MC/AArch64/SVE/inch.s
  llvm/test/MC/AArch64/SVE/incp.s
  llvm/test/MC/AArch64/SVE/incw.s
  llvm/test/MC/AArch64/SVE/index.s
  llvm/test/MC/AArch64/SVE/insr.s
  llvm/test/MC/AArch64/SVE/lasta.s
  (416 more files...)

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D121208.415497.patch
Type: text/x-patch
Size: 508775 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220315/6b1eb3ba/attachment-0001.bin>


More information about the llvm-commits mailing list