[PATCH] D49593: [AArch64][SVE] Asm: Enable instructions to be prefixed.

Sander de Smalen via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jul 20 02:36:39 PDT 2018


sdesmalen created this revision.
sdesmalen added reviewers: rengolin, SjoerdMeijer, samparker, fhahn, javed.absar.
Herald added subscribers: rkruppe, kristof.beyls, tschuett.

This patch enables instructions that are destructive on their
destination- and first source operand, to be prefixed with a
MOVPRFX instruction.

This patch also adds a variety of tests:

- positive tests for all instructions and forms that accept a movprfx for either or both predicated and unpredicated forms.

- negative tests for all instructions and forms that do not accept an unpredicated or predicated movprfx.

- negative tests for the diagnostics that get emitted when a MOVPRFX instruction is used incorrectly.

This is patch [2/2] in a series to add MOVPRFX instructions:

- Patch [1/2]: D.....
- Patch [2/2]: D.....


https://reviews.llvm.org/D49593

Files:
  lib/Target/AArch64/AArch64SVEInstrInfo.td
  lib/Target/AArch64/SVEInstrFormats.td
  test/MC/AArch64/SVE/abs.s
  test/MC/AArch64/SVE/add-diagnostics.s
  test/MC/AArch64/SVE/add.s
  test/MC/AArch64/SVE/adr-diagnostics.s
  test/MC/AArch64/SVE/and-diagnostics.s
  test/MC/AArch64/SVE/and.s
  test/MC/AArch64/SVE/asr-diagnostics.s
  test/MC/AArch64/SVE/asr.s
  test/MC/AArch64/SVE/asrd.s
  test/MC/AArch64/SVE/asrr.s
  test/MC/AArch64/SVE/bic-diagnostics.s
  test/MC/AArch64/SVE/bic.s
  test/MC/AArch64/SVE/clasta-diagnostics.s
  test/MC/AArch64/SVE/clasta.s
  test/MC/AArch64/SVE/clastb-diagnostics.s
  test/MC/AArch64/SVE/clastb.s
  test/MC/AArch64/SVE/cls.s
  test/MC/AArch64/SVE/clz.s
  test/MC/AArch64/SVE/cmpeq-diagnostics.s
  test/MC/AArch64/SVE/cmpge-diagnostics.s
  test/MC/AArch64/SVE/cmpgt-diagnostics.s
  test/MC/AArch64/SVE/cmphi-diagnostics.s
  test/MC/AArch64/SVE/cmphs-diagnostics.s
  test/MC/AArch64/SVE/cmple-diagnostics.s
  test/MC/AArch64/SVE/cmplo-diagnostics.s
  test/MC/AArch64/SVE/cmpls-diagnostics.s
  test/MC/AArch64/SVE/cmplt-diagnostics.s
  test/MC/AArch64/SVE/cmpne-diagnostics.s
  test/MC/AArch64/SVE/cnot.s
  test/MC/AArch64/SVE/cnt.s
  test/MC/AArch64/SVE/compact-diagnostics.s
  test/MC/AArch64/SVE/cpy.s
  test/MC/AArch64/SVE/decp-diagnostics.s
  test/MC/AArch64/SVE/decp.s
  test/MC/AArch64/SVE/dup-diagnostics.s
  test/MC/AArch64/SVE/dupm-diagnostics.s
  test/MC/AArch64/SVE/eon-diagnostics.s
  test/MC/AArch64/SVE/eon.s
  test/MC/AArch64/SVE/eor-diagnostics.s
  test/MC/AArch64/SVE/eor.s
  test/MC/AArch64/SVE/ext-diagnostics.s
  test/MC/AArch64/SVE/ext.s
  test/MC/AArch64/SVE/fabd.s
  test/MC/AArch64/SVE/fabs.s
  test/MC/AArch64/SVE/facge-diagnostics.s
  test/MC/AArch64/SVE/facgt-diagnostics.s
  test/MC/AArch64/SVE/facle-diagnostics.s
  test/MC/AArch64/SVE/faclt-diagnostics.s
  test/MC/AArch64/SVE/fadd-diagnostics.s
  test/MC/AArch64/SVE/fadd.s
  test/MC/AArch64/SVE/fcadd.s
  test/MC/AArch64/SVE/fcmeq-diagnostics.s
  test/MC/AArch64/SVE/fcmge-diagnostics.s
  test/MC/AArch64/SVE/fcmgt-diagnostics.s
  test/MC/AArch64/SVE/fcmla-diagnostics.s
  test/MC/AArch64/SVE/fcmla.s
  test/MC/AArch64/SVE/fcmle-diagnostics.s
  test/MC/AArch64/SVE/fcmlt-diagnostics.s
  test/MC/AArch64/SVE/fcmne-diagnostics.s
  test/MC/AArch64/SVE/fcmuo-diagnostics.s
  test/MC/AArch64/SVE/fcpy.s
  test/MC/AArch64/SVE/fcvt.s
  test/MC/AArch64/SVE/fcvtzs.s
  test/MC/AArch64/SVE/fcvtzu.s
  test/MC/AArch64/SVE/fdiv.s
  test/MC/AArch64/SVE/fdivr.s
  test/MC/AArch64/SVE/fdup-diagnostics.s
  test/MC/AArch64/SVE/fmad.s
  test/MC/AArch64/SVE/fmax.s
  test/MC/AArch64/SVE/fmaxnm.s
  test/MC/AArch64/SVE/fmin.s
  test/MC/AArch64/SVE/fminnm.s
  test/MC/AArch64/SVE/fmla-diagnostics.s
  test/MC/AArch64/SVE/fmla.s
  test/MC/AArch64/SVE/fmls-diagnostics.s
  test/MC/AArch64/SVE/fmls.s
  test/MC/AArch64/SVE/fmov-diagnostics.s
  test/MC/AArch64/SVE/fmov.s
  test/MC/AArch64/SVE/fmsb.s
  test/MC/AArch64/SVE/fmul-diagnostics.s
  test/MC/AArch64/SVE/fmul.s
  test/MC/AArch64/SVE/fmulx.s
  test/MC/AArch64/SVE/fneg.s
  test/MC/AArch64/SVE/fnmad.s
  test/MC/AArch64/SVE/fnmla.s
  test/MC/AArch64/SVE/fnmls.s
  test/MC/AArch64/SVE/fnmsb.s
  test/MC/AArch64/SVE/frecps-diagnostics.s
  test/MC/AArch64/SVE/frecpx.s
  test/MC/AArch64/SVE/frinta.s
  test/MC/AArch64/SVE/frinti.s
  test/MC/AArch64/SVE/frintm.s
  test/MC/AArch64/SVE/frintn.s
  test/MC/AArch64/SVE/frintp.s
  test/MC/AArch64/SVE/frintx.s
  test/MC/AArch64/SVE/frintz.s
  test/MC/AArch64/SVE/frsqrts-diagnostics.s
  test/MC/AArch64/SVE/fscale.s
  test/MC/AArch64/SVE/fsqrt.s
  test/MC/AArch64/SVE/fsub-diagnostics.s
  test/MC/AArch64/SVE/fsub.s
  test/MC/AArch64/SVE/fsubr.s
  test/MC/AArch64/SVE/ftmad-diagnostics.s
  test/MC/AArch64/SVE/ftmad.s
  test/MC/AArch64/SVE/ftsmul-diagnostics.s
  test/MC/AArch64/SVE/incd-diagnostics.s
  test/MC/AArch64/SVE/incd.s
  test/MC/AArch64/SVE/inch-diagnostics.s
  test/MC/AArch64/SVE/inch.s
  test/MC/AArch64/SVE/incp-diagnostics.s
  test/MC/AArch64/SVE/incp.s
  test/MC/AArch64/SVE/incw-diagnostics.s
  test/MC/AArch64/SVE/incw.s
  test/MC/AArch64/SVE/index-diagnostics.s
  test/MC/AArch64/SVE/insr-diagnostics.s
  test/MC/AArch64/SVE/insr.s
  test/MC/AArch64/SVE/lasta-diagnostics.s
  test/MC/AArch64/SVE/lastb-diagnostics.s
  test/MC/AArch64/SVE/ld1b-diagnostics.s
  test/MC/AArch64/SVE/ld1d-diagnostics.s
  test/MC/AArch64/SVE/ld1h-diagnostics.s
  test/MC/AArch64/SVE/ld1rb-diagnostics.s
  test/MC/AArch64/SVE/ld1rd-diagnostics.s
  test/MC/AArch64/SVE/ld1rh-diagnostics.s
  test/MC/AArch64/SVE/ld1rqb-diagnostics.s
  test/MC/AArch64/SVE/ld1rqd-diagnostics.s
  test/MC/AArch64/SVE/ld1rqh-diagnostics.s
  test/MC/AArch64/SVE/ld1rqw-diagnostics.s
  test/MC/AArch64/SVE/ld1rsb-diagnostics.s
  test/MC/AArch64/SVE/ld1rsh-diagnostics.s
  test/MC/AArch64/SVE/ld1rsw-diagnostics.s
  test/MC/AArch64/SVE/ld1rw-diagnostics.s
  test/MC/AArch64/SVE/ld1sb-diagnostics.s
  test/MC/AArch64/SVE/ld1sh-diagnostics.s
  test/MC/AArch64/SVE/ld1sw-diagnostics.s
  test/MC/AArch64/SVE/ld1w-diagnostics.s
  test/MC/AArch64/SVE/ld2b-diagnostics.s
  test/MC/AArch64/SVE/ld2d-diagnostics.s
  test/MC/AArch64/SVE/ld2h-diagnostics.s
  test/MC/AArch64/SVE/ld2w-diagnostics.s
  test/MC/AArch64/SVE/ld3b-diagnostics.s
  test/MC/AArch64/SVE/ld3d-diagnostics.s
  test/MC/AArch64/SVE/ld3h-diagnostics.s
  test/MC/AArch64/SVE/ld3w-diagnostics.s
  test/MC/AArch64/SVE/ld4b-diagnostics.s
  test/MC/AArch64/SVE/ld4d-diagnostics.s
  test/MC/AArch64/SVE/ld4h-diagnostics.s
  test/MC/AArch64/SVE/ld4w-diagnostics.s
  test/MC/AArch64/SVE/ldff1b-diagnostics.s
  test/MC/AArch64/SVE/ldff1d-diagnostics.s
  test/MC/AArch64/SVE/ldff1h-diagnostics.s
  test/MC/AArch64/SVE/ldff1sb-diagnostics.s
  test/MC/AArch64/SVE/ldff1sh-diagnostics.s
  test/MC/AArch64/SVE/ldff1sw-diagnostics.s
  test/MC/AArch64/SVE/ldff1w-diagnostics.s
  test/MC/AArch64/SVE/ldnf1b-diagnostics.s
  test/MC/AArch64/SVE/ldnf1d-diagnostics.s
  test/MC/AArch64/SVE/ldnf1h-diagnostics.s
  test/MC/AArch64/SVE/ldnf1sb-diagnostics.s
  test/MC/AArch64/SVE/ldnf1sh-diagnostics.s
  test/MC/AArch64/SVE/ldnf1sw-diagnostics.s
  test/MC/AArch64/SVE/ldnf1w-diagnostics.s
  test/MC/AArch64/SVE/ldnt1b-diagnostics.s
  test/MC/AArch64/SVE/ldnt1d-diagnostics.s
  test/MC/AArch64/SVE/ldnt1h-diagnostics.s
  test/MC/AArch64/SVE/ldnt1w-diagnostics.s
  test/MC/AArch64/SVE/lsl-diagnostics.s
  test/MC/AArch64/SVE/lsl.s
  test/MC/AArch64/SVE/lslr.s
  test/MC/AArch64/SVE/lsr-diagnostics.s
  test/MC/AArch64/SVE/lsr.s
  test/MC/AArch64/SVE/lsrr.s
  test/MC/AArch64/SVE/mad.s
  test/MC/AArch64/SVE/mla.s
  test/MC/AArch64/SVE/mls.s
  test/MC/AArch64/SVE/mov-diagnostics.s
  test/MC/AArch64/SVE/mov.s
  test/MC/AArch64/SVE/movprfx-diagnostics.s
  test/MC/AArch64/SVE/movprfx.s
  test/MC/AArch64/SVE/msb.s
  test/MC/AArch64/SVE/mul-diagnostics.s
  test/MC/AArch64/SVE/mul.s
  test/MC/AArch64/SVE/neg.s
  test/MC/AArch64/SVE/not.s
  test/MC/AArch64/SVE/orn-diagnostics.s
  test/MC/AArch64/SVE/orn.s
  test/MC/AArch64/SVE/orr-diagnostics.s
  test/MC/AArch64/SVE/orr.s
  test/MC/AArch64/SVE/prfb-diagnostics.s
  test/MC/AArch64/SVE/prfd-diagnostics.s
  test/MC/AArch64/SVE/prfh-diagnostics.s
  test/MC/AArch64/SVE/prfw-diagnostics.s
  test/MC/AArch64/SVE/rbit.s
  test/MC/AArch64/SVE/rev-diagnostics.s
  test/MC/AArch64/SVE/revb.s
  test/MC/AArch64/SVE/revh.s
  test/MC/AArch64/SVE/revw.s
  test/MC/AArch64/SVE/sabd.s
  test/MC/AArch64/SVE/scvtf.s
  test/MC/AArch64/SVE/sdiv.s
  test/MC/AArch64/SVE/sdivr.s
  test/MC/AArch64/SVE/sdot-diagnostics.s
  test/MC/AArch64/SVE/sdot.s
  test/MC/AArch64/SVE/sel-diagnostics.s
  test/MC/AArch64/SVE/smax-diagnostics.s
  test/MC/AArch64/SVE/smax.s
  test/MC/AArch64/SVE/smin-diagnostics.s
  test/MC/AArch64/SVE/smin.s
  test/MC/AArch64/SVE/smulh.s
  test/MC/AArch64/SVE/splice-diagnostics.s
  test/MC/AArch64/SVE/splice.s
  test/MC/AArch64/SVE/sqadd-diagnostics.s
  test/MC/AArch64/SVE/sqadd.s
  test/MC/AArch64/SVE/sqdecd-diagnostics.s
  test/MC/AArch64/SVE/sqdecd.s
  test/MC/AArch64/SVE/sqdech-diagnostics.s
  test/MC/AArch64/SVE/sqdech.s
  test/MC/AArch64/SVE/sqdecp-diagnostics.s
  test/MC/AArch64/SVE/sqdecp.s
  test/MC/AArch64/SVE/sqdecw-diagnostics.s
  test/MC/AArch64/SVE/sqdecw.s
  test/MC/AArch64/SVE/sqincd-diagnostics.s
  test/MC/AArch64/SVE/sqincd.s
  test/MC/AArch64/SVE/sqinch-diagnostics.s
  test/MC/AArch64/SVE/sqinch.s
  test/MC/AArch64/SVE/sqincp-diagnostics.s
  test/MC/AArch64/SVE/sqincp.s
  test/MC/AArch64/SVE/sqincw-diagnostics.s
  test/MC/AArch64/SVE/sqincw.s
  test/MC/AArch64/SVE/sqsub-diagnostics.s
  test/MC/AArch64/SVE/sqsub.s
  test/MC/AArch64/SVE/st1b-diagnostics.s
  test/MC/AArch64/SVE/st1d-diagnostics.s
  test/MC/AArch64/SVE/st1h-diagnostics.s
  test/MC/AArch64/SVE/st1w-diagnostics.s
  test/MC/AArch64/SVE/st2b-diagnostics.s
  test/MC/AArch64/SVE/st2d-diagnostics.s
  test/MC/AArch64/SVE/st2h-diagnostics.s
  test/MC/AArch64/SVE/st2w-diagnostics.s
  test/MC/AArch64/SVE/st3b-diagnostics.s
  test/MC/AArch64/SVE/st3d-diagnostics.s
  test/MC/AArch64/SVE/st3h-diagnostics.s
  test/MC/AArch64/SVE/st3w-diagnostics.s
  test/MC/AArch64/SVE/st4b-diagnostics.s
  test/MC/AArch64/SVE/st4d-diagnostics.s
  test/MC/AArch64/SVE/st4h-diagnostics.s
  test/MC/AArch64/SVE/st4w-diagnostics.s
  test/MC/AArch64/SVE/stnt1b-diagnostics.s
  (55 more files...)

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D49593.156453.patch
Type: text/x-patch
Size: 420997 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180720/cf40ccc1/attachment-0001.bin>


More information about the llvm-commits mailing list