Home | History | Annotate | Download | only in AArch64

Lines Matching refs:BFI

771   case AArch64ISD::BFI:            return "AArch64ISD::BFI";
2462 // Now we need to alter MaskedVal so that it is an appropriate input for a BFI
2463 // instruction. BFI will do a left-shift by LSB before applying the mask we've
2471 // the BFI.
2498 /// Searches from N for an existing AArch64ISD::BFI node, possibly surrounded by
2499 /// a mask and an extension. Returns true if a BFI was found and provides
2501 static bool findMaskedBFI(SDValue N, SDValue &BFI, uint64_t &Mask,
2517 if (N.getOpcode() == AArch64ISD::BFI) {
2518 BFI = N;
2525 /// Try to combine a subtree (rooted at an OR) into a "masked BFI" node, which
2526 /// is roughly equivalent to (and (BFI ...), mask). This form is used because it
2577 // can do now is check whether a BFI exists.
2586 SDValue BFI = DAG.getNode(AArch64ISD::BFI, DL, VT,
2593 return BFI;
2595 return DAG.getNode(ISD::AND, DL, VT, BFI,
2619 SDValue BFI;
2623 if (findMaskedBFI(N->getOperand(0), BFI, ExistingMask, Extended))
2625 else if (findMaskedBFI(N->getOperand(1), BFI, ExistingMask, Extended))
2630 // We can only combine a BFI with another compatible mask.
2641 SDValue OldBFIVal = BFI.getOperand(0);
2642 SDValue NewBFIVal = BFI.getOperand(1);
2647 assert(VT == MVT::i64 && BFI.getValueType() == MVT::i32
2648 && "Invalid types for BFI");
2657 BFI = DAG.getNode(AArch64ISD::BFI, DL, VT,
2659 BFI.getOperand(2), BFI.getOperand(3));
2663 return BFI;
2665 return DAG.getNode(ISD::AND, DL, VT, BFI,