Add new ISD nodes: ISD::FMINNAN and ISD::FMAXNAN
The intention of these is to be a corollary to ISD::FMINNUM/FMAXNUM, differing only on how NaNs are treated. FMINNUM returns the non-NaN input (when given one NaN and one non-NaN), FMINNAN returns the NaN input instead. This patch includes support for scalarizing, widening and splitting vectors, but not expansion or softening. The reason is that these should never be needed - FMINNAN nodes are only going to be created in one place (SDAGBuilder::visitSelect) and there we'll check if the node is legal or custom. I could preemptively add expand and soften code, but I'm fairly opposed to adding code I can't test. It's bad enough I can't create tests with this patch, but at least this code will be exercised by the ARM and AArch64 backends fairly shortly. llvm-svn: 244581
This commit is contained in:
@@ -814,6 +814,8 @@ void TargetLoweringBase::initActions() {
|
||||
setOperationAction(ISD::CONCAT_VECTORS, VT, Expand);
|
||||
setOperationAction(ISD::FMINNUM, VT, Expand);
|
||||
setOperationAction(ISD::FMAXNUM, VT, Expand);
|
||||
setOperationAction(ISD::FMINNAN, VT, Expand);
|
||||
setOperationAction(ISD::FMAXNAN, VT, Expand);
|
||||
setOperationAction(ISD::FMAD, VT, Expand);
|
||||
setOperationAction(ISD::SMIN, VT, Expand);
|
||||
setOperationAction(ISD::SMAX, VT, Expand);
|
||||
|
||||
Reference in New Issue
Block a user