[PATCH] D48128: [ARM] Parallel DSP IR Pass

Sjoerd Meijer via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jun 13 07:46:44 PDT 2018


SjoerdMeijer created this revision.
SjoerdMeijer added reviewers: samparker, eli.friedman, rengolin, t.p.northover, john.brawn.
Herald added subscribers: chrib, kristof.beyls, mgorny, mehdi_amini.
Herald added a reviewer: javed.absar.

Armv6 introduced instructions to perform 32-bit SIMD operations. The purpose of
this pass is to do some straightforward IR pattern matching to create ACLE DSP
intrinsics, which map on these 32-bit SIMD operations. Because this is based on
simple pattern matching and it is Arm specific, we thought a separate IR pass
that runs late would be a good place to do this rather than e.g. the SLP
vectoriser.

      

Currently, only the SMLAD instruction gets recognised. This does two
multiplications with 16-bit operands, and stores the result in an accumulator.
Support for more of these DSP instructions will be added later. This triggers
on a matrix-multiply kernel in a popular benchmark.


https://reviews.llvm.org/D48128

Files:
  include/llvm/InitializePasses.h
  include/llvm/Transforms/Scalar.h
  lib/Target/ARM/ARMTargetMachine.cpp
  lib/Transforms/IPO/PassManagerBuilder.cpp
  lib/Transforms/Scalar/CMakeLists.txt
  lib/Transforms/Scalar/ParallelDSP.cpp
  lib/Transforms/Scalar/Scalar.cpp
  test/Transforms/ParallelDSP/smlad0.ll
  test/Transforms/ParallelDSP/smlad1.ll
  test/Transforms/ParallelDSP/smlad2.ll
  test/Transforms/ParallelDSP/smlad3.ll
  test/Transforms/ParallelDSP/smlad4.ll
  test/Transforms/ParallelDSP/smlad5.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D48128.151165.patch
Type: text/x-patch
Size: 35817 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180613/44d122ef/attachment-0001.bin>


More information about the llvm-commits mailing list