Lines Matching defs:adaptor
255 OpFoldResult arith::ConstantOp::fold(FoldAdaptor adaptor) { return getValue(); }
306 OpFoldResult arith::AddIOp::fold(FoldAdaptor adaptor) {
308 if (matchPattern(adaptor.getRhs(), m_Zero()))
322 adaptor.getOperands(),
350 arith::AddUIExtendedOp::fold(FoldAdaptor adaptor,
368 adaptor.getOperands(),
371 ArrayRef({sumAttr, adaptor.getLhs()}),
394 OpFoldResult arith::SubIOp::fold(FoldAdaptor adaptor) {
403 if (matchPattern(adaptor.getRhs(), m_Zero()))
416 adaptor.getOperands(),
431 OpFoldResult arith::MulIOp::fold(FoldAdaptor adaptor) {
433 if (matchPattern(adaptor.getRhs(), m_Zero()))
436 if (matchPattern(adaptor.getRhs(), m_One()))
442 adaptor.getOperands(),
490 arith::MulSIExtendedOp::fold(FoldAdaptor adaptor,
493 if (matchPattern(adaptor.getRhs(), m_Zero())) {
494 Attribute zero = adaptor.getRhs();
502 adaptor.getOperands(),
506 adaptor.getOperands(), [](const APInt &a, const APInt &b) {
536 arith::MulUIExtendedOp::fold(FoldAdaptor adaptor,
539 if (matchPattern(adaptor.getRhs(), m_Zero())) {
540 Attribute zero = adaptor.getRhs();
547 if (matchPattern(adaptor.getRhs(), m_One())) {
557 adaptor.getOperands(),
561 adaptor.getOperands(), [](const APInt &a, const APInt &b) {
599 OpFoldResult arith::DivUIOp::fold(FoldAdaptor adaptor) {
601 if (matchPattern(adaptor.getRhs(), m_One()))
610 auto result = constFoldBinaryOp<IntegerAttr>(adaptor.getOperands(),
639 OpFoldResult arith::DivSIOp::fold(FoldAdaptor adaptor) {
641 if (matchPattern(adaptor.getRhs(), m_One()))
651 adaptor.getOperands(), [&](APInt a, const APInt &b) {
695 OpFoldResult arith::CeilDivUIOp::fold(FoldAdaptor adaptor) {
697 if (matchPattern(adaptor.getRhs(), m_One()))
702 adaptor.getOperands(), [&](APInt a, const APInt &b) {
725 OpFoldResult arith::CeilDivSIOp::fold(FoldAdaptor adaptor) {
727 if (matchPattern(adaptor.getRhs(), m_One()))
735 adaptor.getOperands(), [&](APInt a, const APInt &b) {
794 OpFoldResult arith::FloorDivSIOp::fold(FoldAdaptor adaptor) {
796 if (matchPattern(adaptor.getRhs(), m_One()))
802 adaptor.getOperands(), [&](APInt a, const APInt &b) {
817 OpFoldResult arith::RemUIOp::fold(FoldAdaptor adaptor) {
819 if (matchPattern(adaptor.getRhs(), m_One()))
824 auto result = constFoldBinaryOp<IntegerAttr>(adaptor.getOperands(),
840 OpFoldResult arith::RemSIOp::fold(FoldAdaptor adaptor) {
842 if (matchPattern(adaptor.getRhs(), m_One()))
847 auto result = constFoldBinaryOp<IntegerAttr>(adaptor.getOperands(),
880 OpFoldResult arith::AndIOp::fold(FoldAdaptor adaptor) {
882 if (matchPattern(adaptor.getRhs(), m_Zero()))
886 if (matchPattern(adaptor.getRhs(), m_ConstantInt(&intValue)) &&
905 adaptor.getOperands(),
913 OpFoldResult arith::OrIOp::fold(FoldAdaptor adaptor) {
914 if (APInt rhsVal; matchPattern(adaptor.getRhs(), m_ConstantInt(&rhsVal))) {
920 return adaptor.getRhs();
936 adaptor.getOperands(),
944 OpFoldResult arith::XOrIOp::fold(FoldAdaptor adaptor) {
946 if (matchPattern(adaptor.getRhs(), m_Zero()))
969 adaptor.getOperands(),
982 OpFoldResult arith::NegFOp::fold(FoldAdaptor adaptor) {
986 return constFoldUnaryOp<FloatAttr>(adaptor.getOperands(),
994 OpFoldResult arith::AddFOp::fold(FoldAdaptor adaptor) {
996 if (matchPattern(adaptor.getRhs(), m_NegZeroFloat()))
1000 adaptor.getOperands(),
1008 OpFoldResult arith::SubFOp::fold(FoldAdaptor adaptor) {
1010 if (matchPattern(adaptor.getRhs(), m_PosZeroFloat()))
1014 adaptor.getOperands(),
1022 OpFoldResult arith::MaximumFOp::fold(FoldAdaptor adaptor) {
1028 if (matchPattern(adaptor.getRhs(), m_NegInfFloat()))
1032 adaptor.getOperands(),
1040 OpFoldResult arith::MaxNumFOp::fold(FoldAdaptor adaptor) {
1046 if (matchPattern(adaptor.getRhs(), m_NaNFloat()))
1049 return constFoldBinaryOp<FloatAttr>(adaptor.getOperands(), llvm::maxnum);
1056 OpFoldResult MaxSIOp::fold(FoldAdaptor adaptor) {
1062 matchPattern(adaptor.getRhs(), m_ConstantInt(&intValue))) {
1071 return constFoldBinaryOp<IntegerAttr>(adaptor.getOperands(),
1081 OpFoldResult MaxUIOp::fold(FoldAdaptor adaptor) {
1087 matchPattern(adaptor.getRhs(), m_ConstantInt(&intValue))) {
1096 return constFoldBinaryOp<IntegerAttr>(adaptor.getOperands(),
1106 OpFoldResult arith::MinimumFOp::fold(FoldAdaptor adaptor) {
1112 if (matchPattern(adaptor.getRhs(), m_PosInfFloat()))
1116 adaptor.getOperands(),
1124 OpFoldResult arith::MinNumFOp::fold(FoldAdaptor adaptor) {
1130 if (matchPattern(adaptor.getRhs(), m_NaNFloat()))
1134 adaptor.getOperands(),
1142 OpFoldResult MinSIOp::fold(FoldAdaptor adaptor) {
1148 matchPattern(adaptor.getRhs(), m_ConstantInt(&intValue))) {
1157 return constFoldBinaryOp<IntegerAttr>(adaptor.getOperands(),
1167 OpFoldResult MinUIOp::fold(FoldAdaptor adaptor) {
1173 matchPattern(adaptor.getRhs(), m_ConstantInt(&intValue))) {
1182 return constFoldBinaryOp<IntegerAttr>(adaptor.getOperands(),
1192 OpFoldResult arith::MulFOp::fold(FoldAdaptor adaptor) {
1194 if (matchPattern(adaptor.getRhs(), m_OneFloat()))
1198 adaptor.getOperands(),
1211 OpFoldResult arith::DivFOp::fold(FoldAdaptor adaptor) {
1213 if (matchPattern(adaptor.getRhs(), m_OneFloat()))
1217 adaptor.getOperands(),
1230 OpFoldResult arith::RemFOp::fold(FoldAdaptor adaptor) {
1231 return constFoldBinaryOp<FloatAttr>(adaptor.getOperands(),
1361 OpFoldResult arith::ExtUIOp::fold(FoldAdaptor adaptor) {
1370 adaptor.getOperands(), getType(),
1388 OpFoldResult arith::ExtSIOp::fold(FoldAdaptor adaptor) {
1397 adaptor.getOperands(), getType(),
1422 OpFoldResult arith::ExtFOp::fold(FoldAdaptor adaptor) {
1442 adaptor.getOperands(), getType(),
1463 OpFoldResult arith::TruncIOp::fold(FoldAdaptor adaptor) {
1492 adaptor.getOperands(), getType(),
1519 OpFoldResult arith::TruncFOp::fold(FoldAdaptor adaptor) {
1523 adaptor.getOperands(), getType(),
1588 OpFoldResult arith::UIToFPOp::fold(FoldAdaptor adaptor) {
1591 adaptor.getOperands(), getType(),
1610 OpFoldResult arith::SIToFPOp::fold(FoldAdaptor adaptor) {
1613 adaptor.getOperands(), getType(),
1632 OpFoldResult arith::FPToUIOp::fold(FoldAdaptor adaptor) {
1636 adaptor.getOperands(), getType(),
1654 OpFoldResult arith::FPToSIOp::fold(FoldAdaptor adaptor) {
1658 adaptor.getOperands(), getType(),
1690 OpFoldResult arith::IndexCastOp::fold(FoldAdaptor adaptor) {
1697 adaptor.getOperands(), getType(),
1717 OpFoldResult arith::IndexCastUIOp::fold(FoldAdaptor adaptor) {
1724 adaptor.getOperands(), getType(),
1751 OpFoldResult arith::BitcastOp::fold(FoldAdaptor adaptor) {
1753 auto operand = adaptor.getIn();
1844 OpFoldResult arith::CmpIOp::fold(FoldAdaptor adaptor) {
1851 if (matchPattern(adaptor.getRhs(), m_Zero())) {
1875 if (matchPattern(adaptor.getRhs(), m_One())) {
1883 if (adaptor.getLhs() && !adaptor.getRhs()) {
1908 if (auto lhs = llvm::dyn_cast_if_present<TypedAttr>(adaptor.getLhs())) {
1910 adaptor.getOperands(), getI1SameShape(lhs.getType()),
1977 OpFoldResult arith::CmpFOp::fold(FoldAdaptor adaptor) {
1978 auto lhs = llvm::dyn_cast_if_present<FloatAttr>(adaptor.getLhs());
1979 auto rhs = llvm::dyn_cast_if_present<FloatAttr>(adaptor.getRhs());
2329 OpFoldResult arith::SelectOp::fold(FoldAdaptor adaptor) {
2338 if (matchPattern(adaptor.getCondition(), m_One()))
2342 if (matchPattern(adaptor.getCondition(), m_Zero()))
2346 if (isa_and_nonnull<ub::PoisonAttr>(adaptor.getTrueValue()))
2349 if (isa_and_nonnull<ub::PoisonAttr>(adaptor.getFalseValue()))
2354 matchPattern(adaptor.getTrueValue(), m_One()) &&
2355 matchPattern(adaptor.getFalseValue(), m_Zero()))
2379 llvm::dyn_cast_if_present<DenseElementsAttr>(adaptor.getCondition())) {
2381 llvm::dyn_cast_if_present<DenseElementsAttr>(adaptor.getTrueValue())) {
2383 llvm::dyn_cast_if_present<DenseElementsAttr>(adaptor.getFalseValue())) {
2462 OpFoldResult arith::ShLIOp::fold(FoldAdaptor adaptor) {
2464 if (matchPattern(adaptor.getRhs(), m_Zero()))
2469 adaptor.getOperands(), [&](const APInt &a, const APInt &b) {
2480 OpFoldResult arith::ShRUIOp::fold(FoldAdaptor adaptor) {
2482 if (matchPattern(adaptor.getRhs(), m_Zero()))
2487 adaptor.getOperands(), [&](const APInt &a, const APInt &b) {
2498 OpFoldResult arith::ShRSIOp::fold(FoldAdaptor adaptor) {
2500 if (matchPattern(adaptor.getRhs(), m_Zero()))
2505 adaptor.getOperands(), [&](const APInt &a, const APInt &b) {