]> granicus.if.org Git - llvm/commit
[AArch64][SVE2] Asm: implement CDOT instruction
authorCullen Rhodes <cullen.rhodes@arm.com>
Thu, 16 May 2019 09:33:44 +0000 (09:33 +0000)
committerCullen Rhodes <cullen.rhodes@arm.com>
Thu, 16 May 2019 09:33:44 +0000 (09:33 +0000)
commitefe72cdf194d5aa0ba9be8fcd9dfa505254a6a46
tree30d6a4398585d376c098f021b3dc119f50fc67b1
parentf03e219d2a9effe696b627226ec775d8fd53b419
[AArch64][SVE2] Asm: implement CDOT instruction

Summary:
The complex DOT instructions perform a dot-product on quadtuplets from
two source vectors and the resuling wide real or wide imaginary is
accumulated into the destination register. The instructions come in two
forms:

Vector form, e.g.
  cdot z0.s, z1.b, z2.b, #90    - complex dot product on four 8-bit quad-tuplets,
                                  accumulating results in 32-bit elements. The
                                  complex numbers in the second source vector are
                                  rotated by 90 degrees.

  cdot z0.d, z1.h, z2.h, #180   - complex dot product on four 16-bit quad-tuplets,
                                  accumulating results in 64-bit elements.
                                  The complex numbers in the second source
                                  vector are rotated by 180 degrees.

Indexed form, e.g.
  cdot z0.s, z1.b, z2.b[3], #0  - complex dot product on four 8-bit quad-tuplets,
                                  with specified quadtuplet from second source vector,
                                  accumulating results in 32-bit elements.
  cdot z0.d, z1.h, z2.h[1], #0  - complex dot product on four 16-bit quad-tuplets,
                                  with specified quadtuplet from second source vector,
                                  accumulating results in 64-bit elements.

The specification can be found here:
https://developer.arm.com/docs/ddi0602/latest

Reviewed By: SjoerdMeijer, rovka

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@360870 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/AArch64/AArch64SVEInstrInfo.td
lib/Target/AArch64/SVEInstrFormats.td
test/MC/AArch64/SVE2/cdot-diagnostics.s [new file with mode: 0644]
test/MC/AArch64/SVE2/cdot.s [new file with mode: 0644]