[llvm] [AArch64] Add @llvm.experimental.vector.match (PR #101974)
Paul Walker via llvm-commits
llvm-commits at lists.llvm.org
Fri Nov 8 06:43:06 PST 2024
================
@@ -8156,6 +8156,37 @@ void SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I,
DAG.getNode(ISD::EXTRACT_SUBVECTOR, sdl, ResultVT, Vec, Index));
return;
}
+ case Intrinsic::experimental_vector_match: {
+ SDValue Op1 = getValue(I.getOperand(0));
+ SDValue Op2 = getValue(I.getOperand(1));
+ SDValue Mask = getValue(I.getOperand(2));
+ EVT Op1VT = Op1.getValueType();
+ EVT Op2VT = Op2.getValueType();
+ EVT ResVT = Mask.getValueType();
+ unsigned SearchSize = Op2VT.getVectorNumElements();
+
+ // If the target has native support for this vector match operation, lower
+ // the intrinsic directly; otherwise, lower it below.
+ if (!TLI.shouldExpandVectorMatch(Op1VT, SearchSize)) {
+ visitTargetIntrinsic(I, Intrinsic);
+ return;
+ }
+
+ SDValue Ret = DAG.getNode(ISD::SPLAT_VECTOR, sdl, ResVT,
+ DAG.getConstant(0, sdl, MVT::i1));
----------------
paulwalker-arm wrote:
```suggestion
SDValue Ret = DAG.getConstant(0, sdl, ResVT));
```
https://github.com/llvm/llvm-project/pull/101974
More information about the llvm-commits
mailing list