[PATCH] D69281: [FPEnv] Constrained FCmp intrinsics

Ulrich Weigand via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sat Nov 23 14:15:11 PST 2019


uweigand updated this revision to Diff 230775.
uweigand retitled this revision from "[FPEnv][WIP] Constrained FCmp intrinsics" to "[FPEnv] Constrained FCmp intrinsics".
uweigand added a comment.

This is now a functionally complete patch to implement constrained floating-point comparison intrinsics.

The major differences to the prior version are:

- Added documentation for the new intrinsics.
- Added support for signaling comparisons.
- Updated for common-code changes (ConstrainedOps.def).
- Removed (incorrect and unnecessary) optimization in DAGCombine.
- Reviewed SystemZ back-end optimizations to make sure they respect strict semantics.

There are still opportunities to implement more optimizations in common code, but that can wait for later patches.

To handling signaling comparisons I now added a second intrinsic llvm.experimental.constrained.fcmps, which works otherwise the same as llvm.experiemental.constrained.fcmp.  (Another design choice could have been to use a single intrinsics with an extra boolean argument, but that seemed to be less useful.)


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D69281/new/

https://reviews.llvm.org/D69281

Files:
  llvm/docs/LangRef.rst
  llvm/include/llvm/CodeGen/ISDOpcodes.h
  llvm/include/llvm/CodeGen/TargetLowering.h
  llvm/include/llvm/IR/ConstrainedOps.def
  llvm/include/llvm/IR/IntrinsicInst.h
  llvm/include/llvm/IR/Intrinsics.td
  llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
  llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
  llvm/lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp
  llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
  llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
  llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
  llvm/lib/CodeGen/SelectionDAG/SelectionDAGDumper.cpp
  llvm/lib/IR/IntrinsicInst.cpp
  llvm/lib/IR/Verifier.cpp
  llvm/lib/Target/SystemZ/SystemZElimCompare.cpp
  llvm/lib/Target/SystemZ/SystemZISelLowering.cpp
  llvm/lib/Target/SystemZ/SystemZISelLowering.h
  llvm/lib/Target/SystemZ/SystemZInstrFP.td
  llvm/lib/Target/SystemZ/SystemZInstrVector.td
  llvm/lib/Target/SystemZ/SystemZOperators.td
  llvm/lib/Target/SystemZ/SystemZPatterns.td
  llvm/lib/Target/SystemZ/SystemZShortenInst.cpp
  llvm/test/CodeGen/SystemZ/fp-strict-cmp-01.ll
  llvm/test/CodeGen/SystemZ/fp-strict-cmp-02.ll
  llvm/test/CodeGen/SystemZ/fp-strict-cmp-03.ll
  llvm/test/CodeGen/SystemZ/fp-strict-cmp-04.ll
  llvm/test/CodeGen/SystemZ/fp-strict-cmp-05.ll
  llvm/test/CodeGen/SystemZ/fp-strict-cmp-06.ll
  llvm/test/CodeGen/SystemZ/fp-strict-cmps-01.ll
  llvm/test/CodeGen/SystemZ/fp-strict-cmps-02.ll
  llvm/test/CodeGen/SystemZ/fp-strict-cmps-03.ll
  llvm/test/CodeGen/SystemZ/fp-strict-cmps-04.ll
  llvm/test/CodeGen/SystemZ/fp-strict-cmps-05.ll
  llvm/test/CodeGen/SystemZ/fp-strict-cmps-06.ll
  llvm/test/CodeGen/SystemZ/vec-strict-cmp-01.ll
  llvm/test/CodeGen/SystemZ/vec-strict-cmp-02.ll
  llvm/test/CodeGen/SystemZ/vec-strict-cmp-03.ll
  llvm/test/CodeGen/SystemZ/vec-strict-cmps-01.ll
  llvm/test/CodeGen/SystemZ/vec-strict-cmps-02.ll
  llvm/test/CodeGen/SystemZ/vec-strict-cmps-03.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D69281.230775.patch
Type: text/x-patch
Size: 265558 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20191123/82ac3c76/attachment-0001.bin>


More information about the llvm-commits mailing list