1. [TTI][LV] preferPredicateOverEpilogue (details)
  2. NeonEmitter: remove special 'a' type modifier. (details)
Commit 6c2a4f5ff93e16c3b86c18543e02a193ced2d956 by sjoerd.meijer
[TTI][LV] preferPredicateOverEpilogue
We have two ways to steer creating a predicated vector body over
creating a scalar epilogue. To force this, we have 1) a command line
option and 2) a pragma available. This adds a third: a target hook to
TargetTransformInfo that can be queried whether predication is preferred
or not, which allows the vectoriser to make the decision without forcing
While this change behaves as a non-functional change for now, it shows
the required TTI plumbing, usage of this new hook in the vectoriser, and
the beginning of an ARM MVE implementation. I will follow up on this
- a complete MVE implementation, see D69845.
- a patch to disable this, i.e. we should respect
and its corresponding loophint.
Differential Revision:
The file was addedllvm/test/Transforms/LoopVectorize/ARM/prefer-tail-loop-folding.ll
The file was modifiedllvm/lib/Target/ARM/ARMTargetTransformInfo.cpp
The file was modifiedllvm/test/Transforms/LoopVectorize/ARM/tail-loop-folding.ll
The file was modifiedllvm/lib/Target/ARM/ARMTargetTransformInfo.h
The file was modifiedllvm/include/llvm/Analysis/TargetTransformInfoImpl.h
The file was modifiedllvm/include/llvm/CodeGen/BasicTTIImpl.h
The file was modifiedllvm/lib/Analysis/TargetTransformInfo.cpp
The file was modifiedllvm/lib/Transforms/Vectorize/LoopVectorize.cpp
The file was modifiedllvm/include/llvm/Analysis/TargetTransformInfo.h
Commit 59f063b89c518ae81467f6015d1c428c61583f71 by Tim Northover
NeonEmitter: remove special 'a' type modifier.
'a' used to implement a splat in C++ code in NeonEmitter.cpp, but this
can be done directly from .td expansions now (and most ops already did).
So removing it simplifies the overall code.
The file was modifiedclang/utils/TableGen/NeonEmitter.cpp
The file was modifiedclang/include/clang/Basic/
The file was modifiedclang/test/CodeGen/arm_neon_intrinsics.c
The file was modifiedclang/test/CodeGen/aarch64-neon-2velem.c
The file was modifiedclang/include/clang/Basic/