Lines Matching refs:Ops
34 Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, in emitRVVVLEFFBuiltin() argument
41 std::rotate(Ops.begin(), Ops.begin() + 1, Ops.end() - 1); in emitRVVVLEFFBuiltin()
43 Ops.insert(Ops.begin(), llvm::PoisonValue::get(ResultType)); in emitRVVVLEFFBuiltin()
44 Ops.push_back(ConstantInt::get(Ops.back()->getType(), PolicyAttrs)); in emitRVVVLEFFBuiltin()
45 IntrinsicTypes = {ResultType, Ops[4]->getType(), Ops[2]->getType()}; in emitRVVVLEFFBuiltin()
48 Ops.insert(Ops.begin(), llvm::PoisonValue::get(ResultType)); in emitRVVVLEFFBuiltin()
49 IntrinsicTypes = {ResultType, Ops[3]->getType(), Ops[1]->getType()}; in emitRVVVLEFFBuiltin()
51 Value *NewVL = Ops[2]; in emitRVVVLEFFBuiltin()
52 Ops.erase(Ops.begin() + 2); in emitRVVVLEFFBuiltin()
54 llvm::Value *LoadValue = Builder.CreateCall(F, Ops, ""); in emitRVVVLEFFBuiltin()
71 Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, in emitRVVVSSEBuiltin() argument
79 std::swap(Ops[0], Ops[3]); in emitRVVVSSEBuiltin()
82 std::rotate(Ops.begin(), Ops.begin() + 2, Ops.begin() + 3); in emitRVVVSSEBuiltin()
85 IntrinsicTypes = {Ops[0]->getType(), Ops[1]->getType(), Ops[4]->getType()}; in emitRVVVSSEBuiltin()
87 IntrinsicTypes = {Ops[0]->getType(), Ops[1]->getType(), Ops[3]->getType()}; in emitRVVVSSEBuiltin()
89 return Builder.CreateCall(F, Ops, ""); in emitRVVVSSEBuiltin()
94 llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, in emitRVVIndexedStoreBuiltin() argument
102 std::swap(Ops[0], Ops[3]); in emitRVVIndexedStoreBuiltin()
106 std::rotate(Ops.begin(), Ops.begin() + 2, Ops.begin() + 3); in emitRVVIndexedStoreBuiltin()
109 IntrinsicTypes = {Ops[0]->getType(), Ops[1]->getType(), Ops[2]->getType(), in emitRVVIndexedStoreBuiltin()
110 Ops[4]->getType()}; in emitRVVIndexedStoreBuiltin()
112 IntrinsicTypes = {Ops[0]->getType(), Ops[1]->getType(), Ops[2]->getType(), in emitRVVIndexedStoreBuiltin()
113 Ops[3]->getType()}; in emitRVVIndexedStoreBuiltin()
115 return Builder.CreateCall(F, Ops, ""); in emitRVVIndexedStoreBuiltin()
121 Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, in emitRVVPseudoUnaryBuiltin() argument
127 std::rotate(Ops.begin(), Ops.begin() + 1, Ops.end() - 1); in emitRVVPseudoUnaryBuiltin()
129 Ops.insert(Ops.begin(), llvm::PoisonValue::get(ResultType)); in emitRVVPseudoUnaryBuiltin()
132 Ops.insert(Ops.begin(), llvm::PoisonValue::get(ResultType)); in emitRVVPseudoUnaryBuiltin()
135 Ops.insert(Ops.begin() + 2, llvm::Constant::getNullValue(ElemTy)); in emitRVVPseudoUnaryBuiltin()
137 Ops.push_back(ConstantInt::get(Ops.back()->getType(), PolicyAttrs)); in emitRVVPseudoUnaryBuiltin()
139 IntrinsicTypes = {ResultType, ElemTy, Ops[4]->getType()}; in emitRVVPseudoUnaryBuiltin()
142 IntrinsicTypes = {ResultType, ElemTy, Ops[3]->getType()}; in emitRVVPseudoUnaryBuiltin()
145 return Builder.CreateCall(F, Ops, ""); in emitRVVPseudoUnaryBuiltin()
151 Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, in emitRVVPseudoVNotBuiltin() argument
157 std::rotate(Ops.begin(), Ops.begin() + 1, Ops.end() - 1); in emitRVVPseudoVNotBuiltin()
159 Ops.insert(Ops.begin(), llvm::PoisonValue::get(ResultType)); in emitRVVPseudoVNotBuiltin()
162 Ops.insert(Ops.begin(), llvm::PoisonValue::get(ResultType)); in emitRVVPseudoVNotBuiltin()
165 Ops.insert(Ops.begin() + 2, llvm::Constant::getAllOnesValue(ElemTy)); in emitRVVPseudoVNotBuiltin()
167 Ops.push_back(ConstantInt::get(Ops.back()->getType(), PolicyAttrs)); in emitRVVPseudoVNotBuiltin()
169 IntrinsicTypes = {ResultType, ElemTy, Ops[4]->getType()}; in emitRVVPseudoVNotBuiltin()
172 IntrinsicTypes = {ResultType, ElemTy, Ops[3]->getType()}; in emitRVVPseudoVNotBuiltin()
175 return Builder.CreateCall(F, Ops, ""); in emitRVVPseudoVNotBuiltin()
181 Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, in emitRVVPseudoMaskBuiltin() argument
187 IntrinsicTypes = {ResultType, Ops[1]->getType()}; in emitRVVPseudoMaskBuiltin()
188 Ops.insert(Ops.begin() + 1, Ops[0]); in emitRVVPseudoMaskBuiltin()
190 return Builder.CreateCall(F, Ops, ""); in emitRVVPseudoMaskBuiltin()
195 llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, in emitRVVPseudoVFUnaryBuiltin() argument
201 std::rotate(Ops.begin(), Ops.begin() + 1, Ops.end() - 1); in emitRVVPseudoVFUnaryBuiltin()
203 Ops.insert(Ops.begin(), llvm::PoisonValue::get(ResultType)); in emitRVVPseudoVFUnaryBuiltin()
204 Ops.insert(Ops.begin() + 2, Ops[1]); in emitRVVPseudoVFUnaryBuiltin()
205 Ops.push_back(ConstantInt::get(Ops.back()->getType(), PolicyAttrs)); in emitRVVPseudoVFUnaryBuiltin()
207 IntrinsicTypes = {ResultType, Ops[2]->getType(), Ops.back()->getType()}; in emitRVVPseudoVFUnaryBuiltin()
210 Ops.insert(Ops.begin(), llvm::PoisonValue::get(ResultType)); in emitRVVPseudoVFUnaryBuiltin()
212 IntrinsicTypes = {ResultType, Ops[1]->getType(), Ops[2]->getType()}; in emitRVVPseudoVFUnaryBuiltin()
213 Ops.insert(Ops.begin() + 2, Ops[1]); in emitRVVPseudoVFUnaryBuiltin()
216 return Builder.CreateCall(F, Ops, ""); in emitRVVPseudoVFUnaryBuiltin()
222 Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, in emitRVVPseudoVWCVTBuiltin() argument
228 std::rotate(Ops.begin(), Ops.begin() + 1, Ops.end() - 1); in emitRVVPseudoVWCVTBuiltin()
230 Ops.insert(Ops.begin(), llvm::PoisonValue::get(ResultType)); in emitRVVPseudoVWCVTBuiltin()
233 Ops.insert(Ops.begin(), llvm::PoisonValue::get(ResultType)); in emitRVVPseudoVWCVTBuiltin()
235 auto ElemTy = cast<llvm::VectorType>(Ops[1]->getType())->getElementType(); in emitRVVPseudoVWCVTBuiltin()
236 Ops.insert(Ops.begin() + 2, llvm::Constant::getNullValue(ElemTy)); in emitRVVPseudoVWCVTBuiltin()
238 Ops.push_back(ConstantInt::get(Ops.back()->getType(), PolicyAttrs)); in emitRVVPseudoVWCVTBuiltin()
240 IntrinsicTypes = {ResultType, Ops[1]->getType(), ElemTy, Ops[4]->getType()}; in emitRVVPseudoVWCVTBuiltin()
243 IntrinsicTypes = {ResultType, Ops[1]->getType(), ElemTy, Ops[3]->getType()}; in emitRVVPseudoVWCVTBuiltin()
246 return Builder.CreateCall(F, Ops, ""); in emitRVVPseudoVWCVTBuiltin()
252 Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, in emitRVVPseudoVNCVTBuiltin() argument
258 std::rotate(Ops.begin(), Ops.begin() + 1, Ops.end() - 1); in emitRVVPseudoVNCVTBuiltin()
260 Ops.insert(Ops.begin(), llvm::PoisonValue::get(ResultType)); in emitRVVPseudoVNCVTBuiltin()
263 Ops.insert(Ops.begin(), llvm::PoisonValue::get(ResultType)); in emitRVVPseudoVNCVTBuiltin()
265 Ops.insert(Ops.begin() + 2, in emitRVVPseudoVNCVTBuiltin()
266 llvm::Constant::getNullValue(Ops.back()->getType())); in emitRVVPseudoVNCVTBuiltin()
268 Ops.push_back(ConstantInt::get(Ops.back()->getType(), PolicyAttrs)); in emitRVVPseudoVNCVTBuiltin()
270 IntrinsicTypes = {ResultType, Ops[1]->getType(), Ops[4]->getType(), in emitRVVPseudoVNCVTBuiltin()
271 Ops[4]->getType()}; in emitRVVPseudoVNCVTBuiltin()
274 IntrinsicTypes = {ResultType, Ops[1]->getType(), Ops[3]->getType(), in emitRVVPseudoVNCVTBuiltin()
275 Ops[3]->getType()}; in emitRVVPseudoVNCVTBuiltin()
278 return Builder.CreateCall(F, Ops, ""); in emitRVVPseudoVNCVTBuiltin()
284 Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, in emitRVVVlenbBuiltin() argument
301 Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, in emitRVVVsetvliBuiltin() argument
306 return Builder.CreateCall(F, Ops, ""); in emitRVVVsetvliBuiltin()
312 Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, in emitRVVVSEMaskBuiltin() argument
320 std::swap(Ops[0], Ops[2]); in emitRVVVSEMaskBuiltin()
324 std::swap(Ops[0], Ops[1]); in emitRVVVSEMaskBuiltin()
327 IntrinsicTypes = {Ops[0]->getType(), Ops[1]->getType(), Ops[3]->getType()}; in emitRVVVSEMaskBuiltin()
329 IntrinsicTypes = {Ops[0]->getType(), Ops[1]->getType(), Ops[2]->getType()}; in emitRVVVSEMaskBuiltin()
331 return Builder.CreateCall(F, Ops, ""); in emitRVVVSEMaskBuiltin()
336 llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, in emitRVVUnitStridedSegLoadTupleBuiltin() argument
346 IntrinsicTypes = {ResultType, Ops[Offset]->getType(), Ops[0]->getType(), in emitRVVUnitStridedSegLoadTupleBuiltin()
347 Ops.back()->getType()}; in emitRVVUnitStridedSegLoadTupleBuiltin()
349 IntrinsicTypes = {ResultType, Ops[Offset]->getType(), in emitRVVUnitStridedSegLoadTupleBuiltin()
350 Ops.back()->getType()}; in emitRVVUnitStridedSegLoadTupleBuiltin()
352 std::rotate(Ops.begin(), Ops.begin() + 1, Ops.end() - 1); in emitRVVUnitStridedSegLoadTupleBuiltin()
354 Ops.insert(Ops.begin(), llvm::PoisonValue::get(ResultType)); in emitRVVUnitStridedSegLoadTupleBuiltin()
356 Ops.push_back(ConstantInt::get(Ops.back()->getType(), PolicyAttrs)); in emitRVVUnitStridedSegLoadTupleBuiltin()
357 Ops.push_back(ConstantInt::get(Ops.back()->getType(), SegInstSEW)); in emitRVVUnitStridedSegLoadTupleBuiltin()
359 llvm::Value *LoadValue = Builder.CreateCall(F, Ops, ""); in emitRVVUnitStridedSegLoadTupleBuiltin()
367 llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, in emitRVVUnitStridedSegStoreTupleBuiltin() argument
379 std::swap(Ops[0], Ops[2]); in emitRVVUnitStridedSegStoreTupleBuiltin()
381 std::swap(Ops[0], Ops[1]); in emitRVVUnitStridedSegStoreTupleBuiltin()
382 Ops.push_back(ConstantInt::get(Ops.back()->getType(), SegInstSEW)); in emitRVVUnitStridedSegStoreTupleBuiltin()
384 IntrinsicTypes = {Ops[0]->getType(), Ops[1]->getType(), Ops[2]->getType(), in emitRVVUnitStridedSegStoreTupleBuiltin()
385 Ops[3]->getType()}; in emitRVVUnitStridedSegStoreTupleBuiltin()
387 IntrinsicTypes = {Ops[0]->getType(), Ops[1]->getType(), Ops[2]->getType()}; in emitRVVUnitStridedSegStoreTupleBuiltin()
389 return Builder.CreateCall(F, Ops, ""); in emitRVVUnitStridedSegStoreTupleBuiltin()
394 llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, in emitRVVUnitStridedSegLoadFFTupleBuiltin() argument
404 IntrinsicTypes = {ResultType, Ops.back()->getType(), Ops[Offset]->getType(), in emitRVVUnitStridedSegLoadFFTupleBuiltin()
405 Ops[0]->getType()}; in emitRVVUnitStridedSegLoadFFTupleBuiltin()
407 IntrinsicTypes = {ResultType, Ops.back()->getType(), in emitRVVUnitStridedSegLoadFFTupleBuiltin()
408 Ops[Offset]->getType()}; in emitRVVUnitStridedSegLoadFFTupleBuiltin()
410 std::rotate(Ops.begin(), Ops.begin() + 1, Ops.end() - 1); in emitRVVUnitStridedSegLoadFFTupleBuiltin()
412 Ops.insert(Ops.begin(), llvm::PoisonValue::get(ResultType)); in emitRVVUnitStridedSegLoadFFTupleBuiltin()
414 Ops.push_back(ConstantInt::get(Ops.back()->getType(), PolicyAttrs)); in emitRVVUnitStridedSegLoadFFTupleBuiltin()
415 Ops.push_back(ConstantInt::get(Ops.back()->getType(), SegInstSEW)); in emitRVVUnitStridedSegLoadFFTupleBuiltin()
416 Value *NewVL = Ops[2]; in emitRVVUnitStridedSegLoadFFTupleBuiltin()
417 Ops.erase(Ops.begin() + 2); in emitRVVUnitStridedSegLoadFFTupleBuiltin()
419 llvm::Value *LoadValue = Builder.CreateCall(F, Ops, ""); in emitRVVUnitStridedSegLoadFFTupleBuiltin()
434 llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, in emitRVVStridedSegLoadTupleBuiltin() argument
444 IntrinsicTypes = {ResultType, Ops[Offset]->getType(), Ops.back()->getType(), in emitRVVStridedSegLoadTupleBuiltin()
445 Ops[0]->getType()}; in emitRVVStridedSegLoadTupleBuiltin()
447 IntrinsicTypes = {ResultType, Ops[Offset]->getType(), in emitRVVStridedSegLoadTupleBuiltin()
448 Ops.back()->getType()}; in emitRVVStridedSegLoadTupleBuiltin()
450 std::rotate(Ops.begin(), Ops.begin() + 1, Ops.end() - 1); in emitRVVStridedSegLoadTupleBuiltin()
452 Ops.insert(Ops.begin(), llvm::PoisonValue::get(ResultType)); in emitRVVStridedSegLoadTupleBuiltin()
454 Ops.push_back(ConstantInt::get(Ops.back()->getType(), PolicyAttrs)); in emitRVVStridedSegLoadTupleBuiltin()
455 Ops.push_back(ConstantInt::get(Ops.back()->getType(), SegInstSEW)); in emitRVVStridedSegLoadTupleBuiltin()
457 llvm::Value *LoadValue = Builder.CreateCall(F, Ops, ""); in emitRVVStridedSegLoadTupleBuiltin()
465 llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, in emitRVVStridedSegStoreTupleBuiltin() argument
477 std::swap(Ops[0], Ops[3]); in emitRVVStridedSegStoreTupleBuiltin()
479 std::rotate(Ops.begin(), Ops.begin() + 2, Ops.begin() + 3); in emitRVVStridedSegStoreTupleBuiltin()
480 Ops.push_back(ConstantInt::get(Ops.back()->getType(), SegInstSEW)); in emitRVVStridedSegStoreTupleBuiltin()
482 IntrinsicTypes = {Ops[0]->getType(), Ops[1]->getType(), Ops[4]->getType(), in emitRVVStridedSegStoreTupleBuiltin()
483 Ops[3]->getType()}; in emitRVVStridedSegStoreTupleBuiltin()
485 IntrinsicTypes = {Ops[0]->getType(), Ops[1]->getType(), Ops[3]->getType()}; in emitRVVStridedSegStoreTupleBuiltin()
487 return Builder.CreateCall(F, Ops, ""); in emitRVVStridedSegStoreTupleBuiltin()
493 Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, in emitRVVAveragingBuiltin() argument
508 std::rotate(Ops.begin(), Ops.begin() + 1, Ops.end() - 2); in emitRVVAveragingBuiltin()
511 Ops.insert(Ops.begin(), llvm::PoisonValue::get(ResultType)); in emitRVVAveragingBuiltin()
514 Ops.push_back(ConstantInt::get(Ops.back()->getType(), PolicyAttrs)); in emitRVVAveragingBuiltin()
517 ID, {ResultType, Ops[2]->getType(), Ops.back()->getType()}); in emitRVVAveragingBuiltin()
518 return Builder.CreateCall(F, Ops, ""); in emitRVVAveragingBuiltin()
523 llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, in emitRVVNarrowingClipBuiltin() argument
538 std::rotate(Ops.begin(), Ops.begin() + 1, Ops.end() - 2); in emitRVVNarrowingClipBuiltin()
541 Ops.insert(Ops.begin(), llvm::PoisonValue::get(ResultType)); in emitRVVNarrowingClipBuiltin()
544 Ops.push_back(ConstantInt::get(Ops.back()->getType(), PolicyAttrs)); in emitRVVNarrowingClipBuiltin()
547 CGM.getIntrinsic(ID, {ResultType, Ops[1]->getType(), Ops[2]->getType(), in emitRVVNarrowingClipBuiltin()
548 Ops.back()->getType()}); in emitRVVNarrowingClipBuiltin()
549 return Builder.CreateCall(F, Ops, ""); in emitRVVNarrowingClipBuiltin()
554 llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, in emitRVVFloatingPointBuiltin() argument
567 IsMasked ? (HasMaskedOff ? Ops.size() == 6 : Ops.size() == 5) in emitRVVFloatingPointBuiltin()
568 : (HasMaskedOff ? Ops.size() == 5 : Ops.size() == 4); in emitRVVFloatingPointBuiltin()
571 Ops.insert(Ops.end() - 1, in emitRVVFloatingPointBuiltin()
572 ConstantInt::get(Ops.back()->getType(), 7)); // frm in emitRVVFloatingPointBuiltin()
575 std::rotate(Ops.begin(), Ops.begin() + 1, Ops.end() - 2); in emitRVVFloatingPointBuiltin()
578 Ops.insert(Ops.begin(), llvm::PoisonValue::get(ResultType)); in emitRVVFloatingPointBuiltin()
581 Ops.push_back(ConstantInt::get(Ops.back()->getType(), PolicyAttrs)); in emitRVVFloatingPointBuiltin()
584 ID, {ResultType, Ops[2]->getType(), Ops.back()->getType()}); in emitRVVFloatingPointBuiltin()
585 return Builder.CreateCall(F, Ops, ""); in emitRVVFloatingPointBuiltin()
590 llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, in emitRVVWideningFloatingPointBuiltin() argument
603 IsMasked ? (HasMaskedOff ? Ops.size() == 6 : Ops.size() == 5) in emitRVVWideningFloatingPointBuiltin()
604 : (HasMaskedOff ? Ops.size() == 5 : Ops.size() == 4); in emitRVVWideningFloatingPointBuiltin()
607 Ops.insert(Ops.end() - 1, in emitRVVWideningFloatingPointBuiltin()
608 ConstantInt::get(Ops.back()->getType(), 7)); // frm in emitRVVWideningFloatingPointBuiltin()
611 std::rotate(Ops.begin(), Ops.begin() + 1, Ops.end() - 2); in emitRVVWideningFloatingPointBuiltin()
614 Ops.insert(Ops.begin(), llvm::PoisonValue::get(ResultType)); in emitRVVWideningFloatingPointBuiltin()
617 Ops.push_back(ConstantInt::get(Ops.back()->getType(), PolicyAttrs)); in emitRVVWideningFloatingPointBuiltin()
620 CGM.getIntrinsic(ID, {ResultType, Ops[1]->getType(), Ops[2]->getType(), in emitRVVWideningFloatingPointBuiltin()
621 Ops.back()->getType()}); in emitRVVWideningFloatingPointBuiltin()
622 return Builder.CreateCall(F, Ops, ""); in emitRVVWideningFloatingPointBuiltin()
627 llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, in emitRVVIndexedSegLoadTupleBuiltin() argument
638 std::rotate(Ops.begin(), Ops.begin() + 1, Ops.end() - 1); in emitRVVIndexedSegLoadTupleBuiltin()
640 Ops.insert(Ops.begin(), llvm::PoisonValue::get(ResultType)); in emitRVVIndexedSegLoadTupleBuiltin()
643 Ops.push_back(ConstantInt::get(Ops.back()->getType(), PolicyAttrs)); in emitRVVIndexedSegLoadTupleBuiltin()
644 Ops.push_back(ConstantInt::get(Ops.back()->getType(), SegInstSEW)); in emitRVVIndexedSegLoadTupleBuiltin()
647 IntrinsicTypes = {ResultType, Ops[1]->getType(), Ops[2]->getType(), in emitRVVIndexedSegLoadTupleBuiltin()
648 Ops[3]->getType(), Ops[4]->getType()}; in emitRVVIndexedSegLoadTupleBuiltin()
650 IntrinsicTypes = {ResultType, Ops[1]->getType(), Ops[2]->getType(), in emitRVVIndexedSegLoadTupleBuiltin()
651 Ops[3]->getType()}; in emitRVVIndexedSegLoadTupleBuiltin()
653 llvm::Value *LoadValue = Builder.CreateCall(F, Ops, ""); in emitRVVIndexedSegLoadTupleBuiltin()
662 llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, in emitRVVIndexedSegStoreTupleBuiltin() argument
675 std::swap(Ops[0], Ops[3]); in emitRVVIndexedSegStoreTupleBuiltin()
677 std::rotate(Ops.begin(), Ops.begin() + 2, Ops.begin() + 3); in emitRVVIndexedSegStoreTupleBuiltin()
679 Ops.push_back(ConstantInt::get(Ops.back()->getType(), SegInstSEW)); in emitRVVIndexedSegStoreTupleBuiltin()
682 IntrinsicTypes = {Ops[0]->getType(), Ops[1]->getType(), Ops[2]->getType(), in emitRVVIndexedSegStoreTupleBuiltin()
683 Ops[3]->getType(), Ops[4]->getType()}; in emitRVVIndexedSegStoreTupleBuiltin()
685 IntrinsicTypes = {Ops[0]->getType(), Ops[1]->getType(), Ops[2]->getType(), in emitRVVIndexedSegStoreTupleBuiltin()
686 Ops[3]->getType()}; in emitRVVIndexedSegStoreTupleBuiltin()
688 return Builder.CreateCall(F, Ops, ""); in emitRVVIndexedSegStoreTupleBuiltin()
694 Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, in emitRVVFMABuiltin() argument
705 bool HasRoundModeOp = IsMasked ? Ops.size() == 6 : Ops.size() == 5; in emitRVVFMABuiltin()
708 Ops.insert(Ops.end() - 1, in emitRVVFMABuiltin()
709 ConstantInt::get(Ops.back()->getType(), 7)); // frm in emitRVVFMABuiltin()
712 std::rotate(Ops.begin(), Ops.begin() + 1, Ops.end() - 2); in emitRVVFMABuiltin()
714 Ops.push_back(ConstantInt::get(Ops.back()->getType(), PolicyAttrs)); in emitRVVFMABuiltin()
717 ID, {ResultType, Ops[1]->getType(), Ops.back()->getType()}); in emitRVVFMABuiltin()
718 return Builder.CreateCall(F, Ops, ""); in emitRVVFMABuiltin()
724 Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, in emitRVVWideningFMABuiltin() argument
734 bool HasRoundModeOp = IsMasked ? Ops.size() == 6 : Ops.size() == 5; in emitRVVWideningFMABuiltin()
737 Ops.insert(Ops.end() - 1, in emitRVVWideningFMABuiltin()
738 ConstantInt::get(Ops.back()->getType(), 7)); // frm in emitRVVWideningFMABuiltin()
741 std::rotate(Ops.begin(), Ops.begin() + 1, Ops.begin() + 4); in emitRVVWideningFMABuiltin()
743 Ops.push_back(ConstantInt::get(Ops.back()->getType(), PolicyAttrs)); in emitRVVWideningFMABuiltin()
746 CGM.getIntrinsic(ID, {ResultType, Ops[1]->getType(), Ops[2]->getType(), in emitRVVWideningFMABuiltin()
747 Ops.back()->getType()}); in emitRVVWideningFMABuiltin()
748 return Builder.CreateCall(F, Ops, ""); in emitRVVWideningFMABuiltin()
753 llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, in emitRVVFloatingUnaryBuiltin() argument
766 IsMasked ? (HasMaskedOff ? Ops.size() == 5 : Ops.size() == 4) in emitRVVFloatingUnaryBuiltin()
767 : (HasMaskedOff ? Ops.size() == 4 : Ops.size() == 3); in emitRVVFloatingUnaryBuiltin()
770 Ops.insert(Ops.end() - 1, in emitRVVFloatingUnaryBuiltin()
771 ConstantInt::get(Ops.back()->getType(), 7)); // frm in emitRVVFloatingUnaryBuiltin()
774 std::rotate(Ops.begin(), Ops.begin() + 1, Ops.end() - 2); in emitRVVFloatingUnaryBuiltin()
777 Ops.insert(Ops.begin(), llvm::PoisonValue::get(ResultType)); in emitRVVFloatingUnaryBuiltin()
780 Ops.push_back(ConstantInt::get(Ops.back()->getType(), PolicyAttrs)); in emitRVVFloatingUnaryBuiltin()
782 IntrinsicTypes = {ResultType, Ops.back()->getType()}; in emitRVVFloatingUnaryBuiltin()
784 return Builder.CreateCall(F, Ops, ""); in emitRVVFloatingUnaryBuiltin()
789 llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, in emitRVVFloatingConvBuiltin() argument
801 IsMasked ? (HasMaskedOff ? Ops.size() == 5 : Ops.size() == 4) in emitRVVFloatingConvBuiltin()
802 : (HasMaskedOff ? Ops.size() == 4 : Ops.size() == 3); in emitRVVFloatingConvBuiltin()
805 Ops.insert(Ops.end() - 1, in emitRVVFloatingConvBuiltin()
806 ConstantInt::get(Ops.back()->getType(), 7)); // frm in emitRVVFloatingConvBuiltin()
809 std::rotate(Ops.begin(), Ops.begin() + 1, Ops.end() - 2); in emitRVVFloatingConvBuiltin()
812 Ops.insert(Ops.begin(), llvm::PoisonValue::get(ResultType)); in emitRVVFloatingConvBuiltin()
815 Ops.push_back(ConstantInt::get(Ops.back()->getType(), PolicyAttrs)); in emitRVVFloatingConvBuiltin()
818 ID, {ResultType, Ops[1]->getType(), Ops.back()->getType()}); in emitRVVFloatingConvBuiltin()
819 return Builder.CreateCall(F, Ops, ""); in emitRVVFloatingConvBuiltin()
824 llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, in emitRVVFloatingReductionBuiltin() argument
837 IsMasked ? (HasMaskedOff ? Ops.size() == 6 : Ops.size() == 5) in emitRVVFloatingReductionBuiltin()
838 : (HasMaskedOff ? Ops.size() == 5 : Ops.size() == 4); in emitRVVFloatingReductionBuiltin()
841 Ops.insert(Ops.end() - 1, in emitRVVFloatingReductionBuiltin()
842 ConstantInt::get(Ops.back()->getType(), 7)); // frm in emitRVVFloatingReductionBuiltin()
845 std::rotate(Ops.begin(), Ops.begin() + 1, Ops.end() - 2); in emitRVVFloatingReductionBuiltin()
848 Ops.insert(Ops.begin(), llvm::PoisonValue::get(ResultType)); in emitRVVFloatingReductionBuiltin()
851 ID, {ResultType, Ops[1]->getType(), Ops.back()->getType()}); in emitRVVFloatingReductionBuiltin()
852 return Builder.CreateCall(F, Ops, ""); in emitRVVFloatingReductionBuiltin()
858 Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, in emitRVVReinterpretBuiltin() argument
864 Ops[0]->getType()->isIntOrIntVectorTy(1)) { in emitRVVReinterpretBuiltin()
866 isa<ScalableVectorType>(Ops[0]->getType())); in emitRVVReinterpretBuiltin()
877 llvm::Value *BitCast = Builder.CreateBitCast(Ops[0], Boolean64Ty); in emitRVVReinterpretBuiltin()
886 Boolean64Ty, llvm::PoisonValue::get(Boolean64Ty), Ops[0], in emitRVVReinterpretBuiltin()
891 return Builder.CreateBitCast(Ops[0], ResultType); in emitRVVReinterpretBuiltin()
897 Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, in emitRVVGetBuiltin() argument
901 if (auto *OpVecTy = dyn_cast<ScalableVectorType>(Ops[0]->getType())) { in emitRVVGetBuiltin()
906 Ops[1] = Builder.CreateZExt(Ops[1], Builder.getInt64Ty()); in emitRVVGetBuiltin()
907 Ops[1] = Builder.CreateAnd(Ops[1], MaxIndex - 1); in emitRVVGetBuiltin()
908 Ops[1] = in emitRVVGetBuiltin()
909 Builder.CreateMul(Ops[1], ConstantInt::get(Ops[1]->getType(), in emitRVVGetBuiltin()
911 return Builder.CreateExtractVector(ResultType, Ops[0], Ops[1]); in emitRVVGetBuiltin()
915 Intrinsic::riscv_tuple_extract, {ResultType, Ops[0]->getType()}, in emitRVVGetBuiltin()
916 {Ops[0], Builder.CreateTrunc(Ops[1], Builder.getInt32Ty())}); in emitRVVGetBuiltin()
922 Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, in emitRVVSetBuiltin() argument
926 auto *VecTy = cast<ScalableVectorType>(Ops[2]->getType()); in emitRVVSetBuiltin()
931 Ops[1] = Builder.CreateZExt(Ops[1], Builder.getInt64Ty()); in emitRVVSetBuiltin()
932 Ops[1] = Builder.CreateAnd(Ops[1], MaxIndex - 1); in emitRVVSetBuiltin()
933 Ops[1] = in emitRVVSetBuiltin()
934 Builder.CreateMul(Ops[1], ConstantInt::get(Ops[1]->getType(), in emitRVVSetBuiltin()
936 return Builder.CreateInsertVector(ResultType, Ops[0], Ops[2], Ops[1]); in emitRVVSetBuiltin()
940 Intrinsic::riscv_tuple_insert, {ResultType, Ops[2]->getType()}, in emitRVVSetBuiltin()
941 {Ops[0], Ops[2], Builder.CreateTrunc(Ops[1], Builder.getInt32Ty())}); in emitRVVSetBuiltin()
947 Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, in emitRVVCreateBuiltin() argument
951 auto *VecTy = cast<ScalableVectorType>(Ops[0]->getType()); in emitRVVCreateBuiltin()
952 for (unsigned I = 0, N = Ops.size(); I < N; ++I) { in emitRVVCreateBuiltin()
957 Builder.CreateInsertVector(ResultType, ReturnVector, Ops[I], Idx); in emitRVVCreateBuiltin()
961 {ResultType, Ops[I]->getType()}, in emitRVVCreateBuiltin()
962 {ReturnVector, Ops[I], Idx}); in emitRVVCreateBuiltin()
1092 SmallVector<Value *, 4> Ops; in EmitRISCVBuiltinExpr() local
1121 Ops.push_back(AggValue); in EmitRISCVBuiltinExpr()
1124 Ops.push_back(EmitScalarOrConstFoldImmArg(ICEArguments, i, E)); in EmitRISCVBuiltinExpr()
1236 Function *F = CGM.getIntrinsic(Intrinsic::ctlz, Ops[0]->getType()); in EmitRISCVBuiltinExpr()
1237 Value *Result = Builder.CreateCall(F, {Ops[0], Builder.getInt1(false)}); in EmitRISCVBuiltinExpr()
1245 Function *F = CGM.getIntrinsic(Intrinsic::cttz, Ops[0]->getType()); in EmitRISCVBuiltinExpr()
1246 Value *Result = Builder.CreateCall(F, {Ops[0], Builder.getInt1(false)}); in EmitRISCVBuiltinExpr()
1257 if (Ops.size() == 2) in EmitRISCVBuiltinExpr()
1258 DomainVal = cast<ConstantInt>(Ops[1])->getZExtValue(); in EmitRISCVBuiltinExpr()
1275 Address(Ops[0], ResTy, CharUnits::fromQuantity(Width / 8))); in EmitRISCVBuiltinExpr()
1285 if (Ops.size() == 3) in EmitRISCVBuiltinExpr()
1286 DomainVal = cast<ConstantInt>(Ops[2])->getZExtValue(); in EmitRISCVBuiltinExpr()
1294 StoreInst *Store = Builder.CreateDefaultAlignedStore(Ops[1], Ops[0]); in EmitRISCVBuiltinExpr()
1327 return Builder.CreateSExt(Builder.CreateTrunc(Ops[0], Int8Ty), Int32Ty, in EmitRISCVBuiltinExpr()
1330 return Builder.CreateZExt(Builder.CreateTrunc(Ops[0], Int8Ty), Int32Ty, in EmitRISCVBuiltinExpr()
1333 return Builder.CreateSExt(Builder.CreateTrunc(Ops[0], Int16Ty), Int32Ty, in EmitRISCVBuiltinExpr()
1336 return Builder.CreateZExt(Builder.CreateTrunc(Ops[0], Int16Ty), Int32Ty, in EmitRISCVBuiltinExpr()
1339 return Builder.CreateZExt(Builder.CreateICmpSLE(Ops[0], Ops[1]), Int32Ty, in EmitRISCVBuiltinExpr()
1342 return Builder.CreateZExt(Builder.CreateICmpULE(Ops[0], Ops[1]), Int32Ty, in EmitRISCVBuiltinExpr()
1370 return Builder.CreateCall(F, Ops, ""); in EmitRISCVBuiltinExpr()