@@ -5934,21 +5934,19 @@ bool CombinerHelper::matchTruncSSatS(MachineInstr &MI,
59345934 unsigned NumSrcBits = SrcTy.getScalarSizeInBits ();
59355935 assert (NumSrcBits > NumDstBits && " Unexpected types for truncate operation" );
59365936
5937+ if (!LI || !isLegal ({TargetOpcode::G_TRUNC_SSAT_S, {DstTy, SrcTy}}))
5938+ return false ;
5939+
59375940 APInt SignedMax = APInt::getSignedMaxValue (NumDstBits).sext (NumSrcBits);
59385941 APInt SignedMin = APInt::getSignedMinValue (NumDstBits).sext (NumSrcBits);
5939- if (LI && isLegal ({TargetOpcode::G_TRUNC_SSAT_S, {DstTy, SrcTy}})) {
5940- if (mi_match (
5941- Src, MRI,
5942- m_GSMin (m_GSMax (m_Reg (MatchInfo), m_SpecificICstOrSplat (SignedMin)),
5943- m_SpecificICstOrSplat (SignedMax))))
5944- return true ;
5945- if (mi_match (
5946- Src, MRI,
5947- m_GSMax (m_GSMin (m_Reg (MatchInfo), m_SpecificICstOrSplat (SignedMax)),
5948- m_SpecificICstOrSplat (SignedMin))))
5949- return true ;
5950- }
5951- return false ;
5942+ return mi_match (Src, MRI,
5943+ m_GSMin (m_GSMax (m_Reg (MatchInfo),
5944+ m_SpecificICstOrSplat (SignedMin)),
5945+ m_SpecificICstOrSplat (SignedMax))) ||
5946+ mi_match (Src, MRI,
5947+ m_GSMax (m_GSMin (m_Reg (MatchInfo),
5948+ m_SpecificICstOrSplat (SignedMax)),
5949+ m_SpecificICstOrSplat (SignedMin)));
59525950}
59535951
59545952void CombinerHelper::applyTruncSSatS (MachineInstr &MI,
@@ -5968,23 +5966,19 @@ bool CombinerHelper::matchTruncSSatU(MachineInstr &MI,
59685966 unsigned NumSrcBits = SrcTy.getScalarSizeInBits ();
59695967 assert (NumSrcBits > NumDstBits && " Unexpected types for truncate operation" );
59705968
5969+ if (!LI || !isLegal ({TargetOpcode::G_TRUNC_SSAT_U, {DstTy, SrcTy}}))
5970+ return false ;
59715971 APInt UnsignedMax = APInt::getMaxValue (NumDstBits).zext (NumSrcBits);
5972- if (LI && isLegal ({TargetOpcode::G_TRUNC_SSAT_U, {DstTy, SrcTy}})) {
5973- if (mi_match (Src, MRI,
5974- m_GSMin (m_GSMax (m_Reg (MatchInfo), m_SpecificICstOrSplat (0 )),
5975- m_SpecificICstOrSplat (UnsignedMax))))
5976- return true ;
5977- if (mi_match (Src, MRI,
5978- m_GSMax (m_GSMin (m_Reg (MatchInfo),
5979- m_SpecificICstOrSplat (UnsignedMax)),
5980- m_SpecificICstOrSplat (0 ))))
5981- return true ;
5982- if (mi_match (Src, MRI,
5983- m_GUMin (m_GSMax (m_Reg (MatchInfo), m_SpecificICstOrSplat (0 )),
5984- m_SpecificICstOrSplat (UnsignedMax))))
5985- return true ;
5986- }
5987- return false ;
5972+ return mi_match (Src, MRI,
5973+ m_GSMin (m_GSMax (m_Reg (MatchInfo), m_SpecificICstOrSplat (0 )),
5974+ m_SpecificICstOrSplat (UnsignedMax))) ||
5975+ mi_match (Src, MRI,
5976+ m_GSMax (m_GSMin (m_Reg (MatchInfo),
5977+ m_SpecificICstOrSplat (UnsignedMax)),
5978+ m_SpecificICstOrSplat (0 ))) ||
5979+ mi_match (Src, MRI,
5980+ m_GUMin (m_GSMax (m_Reg (MatchInfo), m_SpecificICstOrSplat (0 )),
5981+ m_SpecificICstOrSplat (UnsignedMax)));
59885982}
59895983
59905984void CombinerHelper::applyTruncSSatU (MachineInstr &MI,
0 commit comments