[PATCH] D55506: [RFC v2] Allow target to handle STRICT floating-point nodes

Ulrich Weigand via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon May 13 04:18:46 PDT 2019


uweigand updated this revision to Diff 199243.
uweigand edited the summary of this revision.
uweigand added reviewers: kbarton, scanon, mcberg2017.
uweigand added a comment.

Updated to address issues raised during the review:

- Separated out the introduction of the SystemZ FPC register -- this has now been committed as rev. 360570.  The remaining changes in this patch are now solely related to handling FP exceptions.
- Renamed the new flag to mayRaiseFPException to make clear that this is about floating-point.
- No longer treat FP exceptions as equivalent to unmodeled side effects, but treat them separately.  Specifically, as I mentioned above, I'm now handling instructions that may raise FP exceptions in the scheduler such that they'll only conflict with each other (and global barriers like calls and unmodeled side effects), but not with loads or stores.
- Respect the constraint intrinsics metadata to the extent that instructions with fpexcept.ignore no longer are marked as "may raise FP exceptions".

This patch, together with the FPC register patch already committed, is to my understanding sufficient to correctly handle the FP exception related aspects of the constrained intrinsics (as to rounding mode, we still need support for function calls that may change the rounding mode).   To make progress, I'd like to move forward with committing this piece -- assuming all issues related to this part are now addressed.   Comments / reviews welcome!


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

https://reviews.llvm.org/D55506

Files:
  include/llvm/CodeGen/MachineInstr.h
  include/llvm/CodeGen/SelectionDAGNodes.h
  include/llvm/MC/MCInstrDesc.h
  include/llvm/Target/Target.td
  include/llvm/Target/TargetSelectionDAG.td
  lib/CodeGen/GlobalISel/InstructionSelector.cpp
  lib/CodeGen/ImplicitNullChecks.cpp
  lib/CodeGen/MIRParser/MILexer.cpp
  lib/CodeGen/MIRParser/MILexer.h
  lib/CodeGen/MIRParser/MIParser.cpp
  lib/CodeGen/MIRPrinter.cpp
  lib/CodeGen/MachineCSE.cpp
  lib/CodeGen/MachineInstr.cpp
  lib/CodeGen/MachinePipeliner.cpp
  lib/CodeGen/PeepholeOptimizer.cpp
  lib/CodeGen/ScheduleDAGInstrs.cpp
  lib/CodeGen/SelectionDAG/InstrEmitter.cpp
  lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
  lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
  lib/CodeGen/TargetInstrInfo.cpp
  lib/CodeGen/TargetLoweringBase.cpp
  lib/Target/SystemZ/SystemZISelLowering.cpp
  lib/Target/SystemZ/SystemZInstrFP.td
  lib/Target/SystemZ/SystemZInstrVector.td
  lib/Target/SystemZ/SystemZOperators.td
  test/CodeGen/SystemZ/fp-strict-add-01.ll
  test/CodeGen/SystemZ/fp-strict-add-02.ll
  test/CodeGen/SystemZ/fp-strict-add-03.ll
  test/CodeGen/SystemZ/fp-strict-add-04.ll
  test/CodeGen/SystemZ/fp-strict-alias.ll
  test/CodeGen/SystemZ/fp-strict-div-01.ll
  test/CodeGen/SystemZ/fp-strict-div-02.ll
  test/CodeGen/SystemZ/fp-strict-div-03.ll
  test/CodeGen/SystemZ/fp-strict-div-04.ll
  test/CodeGen/SystemZ/fp-strict-mul-01.ll
  test/CodeGen/SystemZ/fp-strict-mul-02.ll
  test/CodeGen/SystemZ/fp-strict-mul-03.ll
  test/CodeGen/SystemZ/fp-strict-mul-04.ll
  test/CodeGen/SystemZ/fp-strict-mul-05.ll
  test/CodeGen/SystemZ/fp-strict-mul-06.ll
  test/CodeGen/SystemZ/fp-strict-mul-07.ll
  test/CodeGen/SystemZ/fp-strict-mul-08.ll
  test/CodeGen/SystemZ/fp-strict-mul-09.ll
  test/CodeGen/SystemZ/fp-strict-mul-10.ll
  test/CodeGen/SystemZ/fp-strict-mul-11.ll
  test/CodeGen/SystemZ/fp-strict-round-01.ll
  test/CodeGen/SystemZ/fp-strict-round-02.ll
  test/CodeGen/SystemZ/fp-strict-round-03.ll
  test/CodeGen/SystemZ/fp-strict-sqrt-01.ll
  test/CodeGen/SystemZ/fp-strict-sqrt-02.ll
  test/CodeGen/SystemZ/fp-strict-sqrt-03.ll
  test/CodeGen/SystemZ/fp-strict-sqrt-04.ll
  test/CodeGen/SystemZ/fp-strict-sub-01.ll
  test/CodeGen/SystemZ/fp-strict-sub-02.ll
  test/CodeGen/SystemZ/fp-strict-sub-03.ll
  test/CodeGen/SystemZ/fp-strict-sub-04.ll
  test/CodeGen/SystemZ/vec-strict-add-01.ll
  test/CodeGen/SystemZ/vec-strict-add-02.ll
  test/CodeGen/SystemZ/vec-strict-div-01.ll
  test/CodeGen/SystemZ/vec-strict-div-02.ll
  test/CodeGen/SystemZ/vec-strict-max-01.ll
  test/CodeGen/SystemZ/vec-strict-min-01.ll
  test/CodeGen/SystemZ/vec-strict-mul-01.ll
  test/CodeGen/SystemZ/vec-strict-mul-02.ll
  test/CodeGen/SystemZ/vec-strict-mul-03.ll
  test/CodeGen/SystemZ/vec-strict-mul-04.ll
  test/CodeGen/SystemZ/vec-strict-mul-05.ll
  test/CodeGen/SystemZ/vec-strict-round-01.ll
  test/CodeGen/SystemZ/vec-strict-round-02.ll
  test/CodeGen/SystemZ/vec-strict-sqrt-01.ll
  test/CodeGen/SystemZ/vec-strict-sqrt-02.ll
  test/CodeGen/SystemZ/vec-strict-sub-01.ll
  test/CodeGen/SystemZ/vec-strict-sub-02.ll
  utils/TableGen/CodeGenInstruction.cpp
  utils/TableGen/CodeGenInstruction.h
  utils/TableGen/InstrInfoEmitter.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D55506.199243.patch
Type: text/x-patch
Size: 263329 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190513/1a791ff1/attachment-0001.bin>


More information about the llvm-commits mailing list