diff options
| author | Evandro Menezes <e.menezes@samsung.com> | 2016-07-19 22:31:11 +0000 |
|---|---|---|
| committer | Evandro Menezes <e.menezes@samsung.com> | 2016-07-19 22:31:11 +0000 |
| commit | 238fa76574be7f2ee88383ca377fb8f3ed587951 (patch) | |
| tree | b4eef7f2ab827f5373d6f6dc732424b406cdf52a /llvm/lib/Target/AArch64 | |
| parent | 5d2ea9dcf8a0f7ecc74153afd35ea782af5f1b86 (diff) | |
| download | bcm5719-llvm-238fa76574be7f2ee88383ca377fb8f3ed587951.tar.gz bcm5719-llvm-238fa76574be7f2ee88383ca377fb8f3ed587951.zip | |
[AArch64] Properly validate the reciprocal estimation.
Add check for legal data types when expanding into a Newton series.
Differential Revision: https://reviews.llvm.org/D22267
llvm-svn: 276041
Diffstat (limited to 'llvm/lib/Target/AArch64')
| -rw-r--r-- | llvm/lib/Target/AArch64/AArch64ISelLowering.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp b/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp index d6f2a190d4c..26e3b21b640 100644 --- a/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp +++ b/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp @@ -4568,6 +4568,12 @@ static SDValue getEstimate(const AArch64Subtarget &ST, return SDValue(); EVT VT = Operand.getValueType(); + if (VT != MVT::f64 && VT != MVT::v1f64 && VT != MVT::v2f64 && + VT != MVT::f32 && VT != MVT::v1f32 && + VT != MVT::v2f32 && VT != MVT::v4f32 && + (!ST.hasFullFP16() || + (VT != MVT::f16 && VT != MVT::v4f16 && VT != MVT::v8f16))) + return SDValue(); std::string RecipOp; RecipOp = Opcode == (AArch64ISD::FRECPE) ? "div": "sqrt"; |

