[PATCH] D57504: RFC: Prototype & Roadmap for vector predication in LLVM
Simon Moll via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 29 09:39:00 PDT 2019
simoll updated this revision to Diff 226913.
simoll added a comment.
Updates
-------
- Fixed several intrinsic attributes.
- All fp intrinsics are constrained (identically to the `llvm.contrained.*` ones). They behave like regular fp ops if `fpexcept.ignore` is passed.
- Bitcode verifier test.
Observations
------------
- When using `fpexcept.ignore`, the fp callsites should have the `readnone` attribute set on them to override the `inaccessiblememonly` of the intrinsic declarations. That way DCE still works.
- The rules for constrained fp (`strictfp` on the function definition, only constrained fp in that function) apply only if there is a single fp op with exceptions in the function. That is `strictfp` is not necessary when all fp ops have `fpexcept.ignore`.
- When the exception behavior is not `fpxcept.ignore`, the fp op of the intrinsic is not revealed (`getFunctionalOpcode(..)` returns `Call` in that case).
- (FIXME) `NoCapture` does not work on vectors of pointers.
Next steps
----------
As mentioned earlier, generalized pattern matching will be part of a separate RFC (although its still included in this reference implementation).
I'd like to discuss the actual intrinsic signatures next. For that i will upload a new minimal patch for integer intrinsic support.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D57504/new/
https://reviews.llvm.org/D57504
Files:
llvm/docs/LangRef.rst
llvm/docs/Proposals/VectorPredication.rst
llvm/include/llvm/Analysis/InstructionSimplify.h
llvm/include/llvm/Bitcode/LLVMBitCodes.h
llvm/include/llvm/CodeGen/ISDOpcodes.h
llvm/include/llvm/CodeGen/SelectionDAG.h
llvm/include/llvm/CodeGen/SelectionDAGNodes.h
llvm/include/llvm/IR/Attributes.td
llvm/include/llvm/IR/IRBuilder.h
llvm/include/llvm/IR/IntrinsicInst.h
llvm/include/llvm/IR/Intrinsics.td
llvm/include/llvm/IR/MatcherCast.h
llvm/include/llvm/IR/PatternMatch.h
llvm/include/llvm/IR/PredicatedInst.h
llvm/include/llvm/IR/VPBuilder.h
llvm/include/llvm/Target/TargetSelectionDAG.td
llvm/lib/Analysis/InstructionSimplify.cpp
llvm/lib/AsmParser/LLLexer.cpp
llvm/lib/AsmParser/LLParser.cpp
llvm/lib/AsmParser/LLToken.h
llvm/lib/Bitcode/Reader/BitcodeReader.cpp
llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h
llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h
llvm/lib/CodeGen/SelectionDAG/SelectionDAGDumper.cpp
llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
llvm/lib/IR/Attributes.cpp
llvm/lib/IR/CMakeLists.txt
llvm/lib/IR/IntrinsicInst.cpp
llvm/lib/IR/PredicatedInst.cpp
llvm/lib/IR/VPBuilder.cpp
llvm/lib/IR/Verifier.cpp
llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp
llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
llvm/lib/Transforms/InstCombine/InstCombineInternal.h
llvm/lib/Transforms/Utils/CodeExtractor.cpp
llvm/test/Bitcode/attributes.ll
llvm/test/Transforms/InstCombine/vp-fsub.ll
llvm/test/Transforms/InstSimplify/vp-fsub.ll
llvm/test/Verifier/evl_attribs.ll
llvm/test/Verifier/vp-intrinsics.ll
llvm/unittests/IR/IRBuilderTest.cpp
llvm/utils/TableGen/CodeGenIntrinsics.h
llvm/utils/TableGen/CodeGenTarget.cpp
llvm/utils/TableGen/IntrinsicEmitter.cpp
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D57504.226913.patch
Type: text/x-patch
Size: 266664 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20191029/4b628b36/attachment-0001.bin>
More information about the llvm-commits
mailing list