[Intrinsic] Add fixed point saturating division intrinsics.
authorBevin Hansson <bevin.hansson@ericsson.com>
Mon, 16 Dec 2019 14:25:52 +0000 (15:25 +0100)
committerBevin Hansson <bevin.hansson@ericsson.com>
Mon, 24 Feb 2020 09:50:52 +0000 (10:50 +0100)
commit6e561d1c94edc2ecaab7b79f6b3f1a06f515d531
treefd4f8bcd906b9b2de40f93566e8fd1b0a177fa3b
parent8f46269f0c1cc93b080931fd9dfeffc4d364004b
[Intrinsic] Add fixed point saturating division intrinsics.

Summary:
This patch adds intrinsics and ISelDAG nodes for signed
and unsigned fixed-point division:

```
llvm.sdiv.fix.sat.*
llvm.udiv.fix.sat.*
```

These intrinsics perform scaled, saturating division
on two integers or vectors of integers. They are
required for the implementation of the Embedded-C
fixed-point arithmetic in Clang.

Reviewers: bjope, leonardchan, craig.topper

Subscribers: hiraditya, jdoerfert, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D71550
16 files changed:
llvm/docs/LangRef.rst
llvm/include/llvm/CodeGen/ISDOpcodes.h
llvm/include/llvm/CodeGen/TargetLowering.h
llvm/include/llvm/IR/Intrinsics.td
llvm/include/llvm/Target/TargetSelectionDAG.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/SelectionDAGBuilder.cpp
llvm/lib/CodeGen/SelectionDAG/SelectionDAGDumper.cpp
llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
llvm/lib/CodeGen/TargetLoweringBase.cpp
llvm/lib/IR/Verifier.cpp
llvm/test/CodeGen/X86/sdiv_fix_sat.ll [new file with mode: 0644]
llvm/test/CodeGen/X86/udiv_fix_sat.ll [new file with mode: 0644]