https://github.com/jacquesguan created https://github.com/llvm/llvm-project/pull/199598
Since SegInstSEW is only used by segment load/store, no need to keep it for other builtins. >From 28ab8d77d6d3042ebe2eb0aa8d6d12b6192dba1e Mon Sep 17 00:00:00 2001 From: Jianjian GUAN <[email protected]> Date: Tue, 26 May 2026 11:00:47 +0800 Subject: [PATCH] [RISCV][NFC] Remove SegInstSEW for unused function Since SegInstSEW is used by segment load/store, no need to keep it for other builtins. --- clang/include/clang/Basic/riscv_vector.td | 52 +++++++++++----------- clang/lib/CodeGen/TargetBuiltins/RISCV.cpp | 50 ++++++++++----------- clang/utils/TableGen/RISCVVEmitter.cpp | 24 +++++----- 3 files changed, 63 insertions(+), 63 deletions(-) diff --git a/clang/include/clang/Basic/riscv_vector.td b/clang/include/clang/Basic/riscv_vector.td index 386290f8b4ba1..a8a0c050d11ee 100644 --- a/clang/include/clang/Basic/riscv_vector.td +++ b/clang/include/clang/Basic/riscv_vector.td @@ -57,7 +57,7 @@ multiclass RVVVLEFFBuiltin<list<string> types> { UnMaskedPolicyScheme = HasPassthruOperand, ManualCodegen = [{ return emitRVVVLEFFBuiltin(this, E, ReturnValue, ResultType, ID, Ops, - PolicyAttrs, IsMasked, SegInstSEW); + PolicyAttrs, IsMasked); }] in { foreach type = types in { def : RVVBuiltin<"v", "vPCePz", type>; @@ -114,7 +114,7 @@ let HasMaskedOffOperand = false, MaskedPolicyScheme = NonePolicy, ManualCodegen = [{ return emitRVVVSEMaskBuiltin(this, E, ReturnValue, ResultType, ID, Ops, - PolicyAttrs, IsMasked, SegInstSEW); + PolicyAttrs, IsMasked); }] in { class RVVVSEMaskBuiltin : RVVBuiltin<"m", "0PUem", "c"> { let Name = "vsm_v"; @@ -143,7 +143,7 @@ multiclass RVVVSSEBuiltin<list<string> types> { MaskedPolicyScheme = NonePolicy, ManualCodegen = [{ return emitRVVVSSEBuiltin(this, E, ReturnValue, ResultType, ID, Ops, - PolicyAttrs, IsMasked, SegInstSEW); + PolicyAttrs, IsMasked); }] in { foreach type = types in { def : RVVBuiltin<"v", "0Petv", type>; @@ -159,7 +159,7 @@ multiclass RVVIndexedStore<string op> { MaskedPolicyScheme = NonePolicy, ManualCodegen = [{ return emitRVVIndexedStoreBuiltin(this, E, ReturnValue, ResultType, ID, - Ops, PolicyAttrs, IsMasked, SegInstSEW); + Ops, PolicyAttrs, IsMasked); }] in { foreach type = TypeList in { foreach eew_list = EEWList[0-2] in { @@ -315,7 +315,7 @@ multiclass RVVPseudoUnaryBuiltin<string IR, string type_range> { UnMaskedPolicyScheme = HasPassthruOperand, ManualCodegen = [{ return emitRVVPseudoUnaryBuiltin(this, E, ReturnValue, ResultType, ID, - Ops, PolicyAttrs, IsMasked, SegInstSEW); + Ops, PolicyAttrs, IsMasked); }] in { def : RVVBuiltin<"v", "vv", type_range>; } @@ -328,7 +328,7 @@ multiclass RVVPseudoVNotBuiltin<string IR, string type_range> { UnMaskedPolicyScheme = HasPassthruOperand, ManualCodegen = [{ return emitRVVPseudoVNotBuiltin(this, E, ReturnValue, ResultType, ID, - Ops, PolicyAttrs, IsMasked, SegInstSEW); + Ops, PolicyAttrs, IsMasked); }] in { def : RVVBuiltin<"v", "vv", type_range>; def : RVVBuiltin<"Uv", "UvUv", type_range>; @@ -341,7 +341,7 @@ multiclass RVVPseudoMaskBuiltin<string IR, string type_range> { HasMasked = false, ManualCodegen = [{ return emitRVVPseudoMaskBuiltin(this, E, ReturnValue, ResultType, ID, - Ops, PolicyAttrs, IsMasked, SegInstSEW); + Ops, PolicyAttrs, IsMasked); }] in { def : RVVBuiltin<"m", "mm", type_range>; } @@ -354,7 +354,7 @@ multiclass RVVPseudoVFUnaryBuiltin<string IR, string type_range> { UnMaskedPolicyScheme = HasPassthruOperand, ManualCodegen = [{ return emitRVVPseudoVFUnaryBuiltin(this, E, ReturnValue, ResultType, ID, - Ops, PolicyAttrs, IsMasked, SegInstSEW); + Ops, PolicyAttrs, IsMasked); }] in { def : RVVBuiltin<"v", "vv", type_range>; } @@ -369,7 +369,7 @@ multiclass RVVPseudoVWCVTBuiltin<string IR, string MName, string type_range, UnMaskedPolicyScheme = HasPassthruOperand, ManualCodegen = [{ return emitRVVPseudoVWCVTBuiltin(this, E, ReturnValue, ResultType, ID, - Ops, PolicyAttrs, IsMasked, SegInstSEW); + Ops, PolicyAttrs, IsMasked); }] in { foreach s_p = suffixes_prototypes in { def : RVVBuiltin<s_p[0], s_p[1], type_range>; @@ -386,7 +386,7 @@ multiclass RVVPseudoVNCVTBuiltin<string IR, string MName, string type_range, UnMaskedPolicyScheme = HasPassthruOperand, ManualCodegen = [{ return emitRVVPseudoVNCVTBuiltin(this, E, ReturnValue, ResultType, ID, - Ops, PolicyAttrs, IsMasked, SegInstSEW); + Ops, PolicyAttrs, IsMasked); }] in { foreach s_p = suffixes_prototypes in { def : RVVBuiltin<s_p[0], s_p[1], type_range>; @@ -405,7 +405,7 @@ let HasBuiltinAlias = false, HasVL = false, HasMasked = false, Log2LMUL = [0], IRName = "", ManualCodegen = [{ return emitRVVVlenbBuiltin(this, E, ReturnValue, ResultType, ID, Ops, - PolicyAttrs, IsMasked, SegInstSEW); + PolicyAttrs, IsMasked); }] in { def vlenb : RVVBuiltin<"", "u", "i">; @@ -482,7 +482,7 @@ let HasBuiltinAlias = false, Log2LMUL = [0], ManualCodegen = [{ return emitRVVVsetvliBuiltin(this, E, ReturnValue, ResultType, ID, Ops, - PolicyAttrs, IsMasked, SegInstSEW); + PolicyAttrs, IsMasked); }] in // Set XLEN type { def vsetvli : RVVBuiltin<"", "zzKzKz", "i">; @@ -963,7 +963,7 @@ defm vssub : RVVSignedBinBuiltinSet; let ManualCodegen = [{ { return emitRVVAveragingBuiltin(this, E, ReturnValue, ResultType, ID, Ops, - PolicyAttrs, IsMasked, SegInstSEW); + PolicyAttrs, IsMasked); } }] in { // 12.2. Vector Single-Width Averaging Add and Subtract @@ -983,7 +983,7 @@ let ManualCodegen = [{ let ManualCodegen = [{ { return emitRVVNarrowingClipBuiltin(this, E, ReturnValue, ResultType, ID, - Ops, PolicyAttrs, IsMasked, SegInstSEW); + Ops, PolicyAttrs, IsMasked); } }] in { // 12.5. Vector Narrowing Fixed-Point Clip Instructions @@ -1008,7 +1008,7 @@ let UnMaskedPolicyScheme = HasPassthruOperand in { let ManualCodegen = [{ { return emitRVVFloatingPointBuiltin(this, E, ReturnValue, ResultType, ID, - Ops, PolicyAttrs, IsMasked, SegInstSEW); + Ops, PolicyAttrs, IsMasked); } }] in { let HasFRMRoundModeOp = true in { @@ -1046,8 +1046,7 @@ let ManualCodegen = [{ let ManualCodegen = [{ { return emitRVVWideningFloatingPointBuiltin( - this, E, ReturnValue, ResultType, ID, Ops, PolicyAttrs, IsMasked, - SegInstSEW); + this, E, ReturnValue, ResultType, ID, Ops, PolicyAttrs, IsMasked); } }] in { let HasFRMRoundModeOp = true in { @@ -1098,7 +1097,7 @@ let UnMaskedPolicyScheme = HasPolicyOperand in { let ManualCodegen = [{ { return emitRVVFMABuiltin(this, E, ReturnValue, ResultType, ID, Ops, - PolicyAttrs, IsMasked, SegInstSEW); + PolicyAttrs, IsMasked); } }] in { let HasFRMRoundModeOp = 1 in { @@ -1126,7 +1125,7 @@ let ManualCodegen = [{ let ManualCodegen = [{ { return emitRVVWideningFMABuiltin(this, E, ReturnValue, ResultType, ID, - Ops, PolicyAttrs, IsMasked, SegInstSEW); + Ops, PolicyAttrs, IsMasked); } }] in { let HasFRMRoundModeOp = 1 in { @@ -1165,7 +1164,7 @@ let UnMaskedPolicyScheme = HasPassthruOperand in { let ManualCodegen = [{ { return emitRVVFloatingUnaryBuiltin(this, E, ReturnValue, ResultType, ID, - Ops, PolicyAttrs, IsMasked, SegInstSEW); + Ops, PolicyAttrs, IsMasked); } }] in { let HasFRMRoundModeOp = 1 in { @@ -1372,7 +1371,7 @@ let Log2LMUL = [-3, -2, -1, 0, 1, 2], let ManualCodegen = [{ { return emitRVVFloatingConvBuiltin(this, E, ReturnValue, ResultType, ID, - Ops, PolicyAttrs, IsMasked, SegInstSEW); + Ops, PolicyAttrs, IsMasked); } }] in { let HasFRMRoundModeOp = 1 in { @@ -1626,8 +1625,7 @@ defm vfredmin : RVVFloatingReductionBuiltin; let ManualCodegen = [{ { return emitRVVFloatingReductionBuiltin( - this, E, ReturnValue, ResultType, ID, Ops, PolicyAttrs, IsMasked, - SegInstSEW); + this, E, ReturnValue, ResultType, ID, Ops, PolicyAttrs, IsMasked); } }] in { let HasFRMRoundModeOp = 1 in { @@ -1792,7 +1790,7 @@ let HasMasked = false, HasVL = false, IRName = "" in { let Name = "vreinterpret_v", MaskedPolicyScheme = NonePolicy, ManualCodegen = [{ return emitRVVReinterpretBuiltin(this, E, ReturnValue, ResultType, ID, - Ops, PolicyAttrs, IsMasked, SegInstSEW); + Ops, PolicyAttrs, IsMasked); }] in { // Reinterpret between different type under the same SEW and LMUL def vreinterpret_i_u : RVVBuiltin<"Uvv", "vUv", "csil", "v">; @@ -1925,7 +1923,7 @@ let HasMasked = false, HasVL = false, IRName = "" in { let Name = "vget_v", MaskedPolicyScheme = NonePolicy, ManualCodegen = [{ return emitRVVGetBuiltin(this, E, ReturnValue, ResultType, ID, Ops, - PolicyAttrs, IsMasked, SegInstSEW); + PolicyAttrs, IsMasked); }] in { foreach dst_lmul = ["(SFixedLog2LMUL:0)", "(SFixedLog2LMUL:1)", "(SFixedLog2LMUL:2)"] in { def : RVVBuiltin<"v" # dst_lmul # "v", dst_lmul # "vvKz", "csilxfdy", dst_lmul # "v">; @@ -1941,7 +1939,7 @@ let HasMasked = false, HasVL = false, IRName = "" in { let Name = "vset_v", MaskedPolicyScheme = NonePolicy, ManualCodegen = [{ return emitRVVSetBuiltin(this, E, ReturnValue, ResultType, ID, Ops, - PolicyAttrs, IsMasked, SegInstSEW); + PolicyAttrs, IsMasked); }] in { foreach dst_lmul = ["(LFixedLog2LMUL:1)", "(LFixedLog2LMUL:2)", "(LFixedLog2LMUL:3)"] in { def : RVVBuiltin<"v" # dst_lmul # "v", dst_lmul # "v" # dst_lmul # "vKzv", "csilxfdy">; @@ -1960,7 +1958,7 @@ let HasMasked = false, HasVL = false, IRName = "" in { SupportOverloading = false, ManualCodegen = [{ return emitRVVCreateBuiltin(this, E, ReturnValue, ResultType, ID, Ops, - PolicyAttrs, IsMasked, SegInstSEW); + PolicyAttrs, IsMasked); }] in { // Since the vcreate_v uses LFixedLog2LMUL, setting the Log2LMUL to [-3] can diff --git a/clang/lib/CodeGen/TargetBuiltins/RISCV.cpp b/clang/lib/CodeGen/TargetBuiltins/RISCV.cpp index eec6d49334f5f..0bf9841ef89f7 100644 --- a/clang/lib/CodeGen/TargetBuiltins/RISCV.cpp +++ b/clang/lib/CodeGen/TargetBuiltins/RISCV.cpp @@ -32,7 +32,7 @@ static LLVM_ATTRIBUTE_NOINLINE Value * emitRVVVLEFFBuiltin(CodeGenFunction *CGF, const CallExpr *E, ReturnValueSlot ReturnValue, llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, - int PolicyAttrs, bool IsMasked, unsigned SegInstSEW) { + int PolicyAttrs, bool IsMasked) { auto &Builder = CGF->Builder; auto &CGM = CGF->CGM; llvm::SmallVector<llvm::Type *, 3> IntrinsicTypes; @@ -69,7 +69,7 @@ static LLVM_ATTRIBUTE_NOINLINE Value * emitRVVVSSEBuiltin(CodeGenFunction *CGF, const CallExpr *E, ReturnValueSlot ReturnValue, llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, - int PolicyAttrs, bool IsMasked, unsigned SegInstSEW) { + int PolicyAttrs, bool IsMasked) { auto &Builder = CGF->Builder; auto &CGM = CGF->CGM; llvm::SmallVector<llvm::Type *, 3> IntrinsicTypes; @@ -92,7 +92,7 @@ emitRVVVSSEBuiltin(CodeGenFunction *CGF, const CallExpr *E, static LLVM_ATTRIBUTE_NOINLINE Value *emitRVVIndexedStoreBuiltin( CodeGenFunction *CGF, const CallExpr *E, ReturnValueSlot ReturnValue, llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, - int PolicyAttrs, bool IsMasked, unsigned SegInstSEW) { + int PolicyAttrs, bool IsMasked) { auto &Builder = CGF->Builder; auto &CGM = CGF->CGM; llvm::SmallVector<llvm::Type *, 4> IntrinsicTypes; @@ -119,7 +119,7 @@ static LLVM_ATTRIBUTE_NOINLINE Value * emitRVVPseudoUnaryBuiltin(CodeGenFunction *CGF, const CallExpr *E, ReturnValueSlot ReturnValue, llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, - int PolicyAttrs, bool IsMasked, unsigned SegInstSEW) { + int PolicyAttrs, bool IsMasked) { auto &Builder = CGF->Builder; auto &CGM = CGF->CGM; llvm::SmallVector<llvm::Type *, 3> IntrinsicTypes; @@ -149,7 +149,7 @@ static LLVM_ATTRIBUTE_NOINLINE Value * emitRVVPseudoVNotBuiltin(CodeGenFunction *CGF, const CallExpr *E, ReturnValueSlot ReturnValue, llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, - int PolicyAttrs, bool IsMasked, unsigned SegInstSEW) { + int PolicyAttrs, bool IsMasked) { auto &Builder = CGF->Builder; auto &CGM = CGF->CGM; llvm::SmallVector<llvm::Type *, 3> IntrinsicTypes; @@ -179,7 +179,7 @@ static LLVM_ATTRIBUTE_NOINLINE Value * emitRVVPseudoMaskBuiltin(CodeGenFunction *CGF, const CallExpr *E, ReturnValueSlot ReturnValue, llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, - int PolicyAttrs, bool IsMasked, unsigned SegInstSEW) { + int PolicyAttrs, bool IsMasked) { auto &Builder = CGF->Builder; auto &CGM = CGF->CGM; llvm::SmallVector<llvm::Type *, 3> IntrinsicTypes; @@ -193,7 +193,7 @@ emitRVVPseudoMaskBuiltin(CodeGenFunction *CGF, const CallExpr *E, static LLVM_ATTRIBUTE_NOINLINE Value *emitRVVPseudoVFUnaryBuiltin( CodeGenFunction *CGF, const CallExpr *E, ReturnValueSlot ReturnValue, llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, - int PolicyAttrs, bool IsMasked, unsigned SegInstSEW) { + int PolicyAttrs, bool IsMasked) { auto &Builder = CGF->Builder; auto &CGM = CGF->CGM; llvm::SmallVector<llvm::Type *, 3> IntrinsicTypes; @@ -220,7 +220,7 @@ static LLVM_ATTRIBUTE_NOINLINE Value * emitRVVPseudoVWCVTBuiltin(CodeGenFunction *CGF, const CallExpr *E, ReturnValueSlot ReturnValue, llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, - int PolicyAttrs, bool IsMasked, unsigned SegInstSEW) { + int PolicyAttrs, bool IsMasked) { auto &Builder = CGF->Builder; auto &CGM = CGF->CGM; llvm::SmallVector<llvm::Type *, 4> IntrinsicTypes; @@ -250,7 +250,7 @@ static LLVM_ATTRIBUTE_NOINLINE Value * emitRVVPseudoVNCVTBuiltin(CodeGenFunction *CGF, const CallExpr *E, ReturnValueSlot ReturnValue, llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, - int PolicyAttrs, bool IsMasked, unsigned SegInstSEW) { + int PolicyAttrs, bool IsMasked) { auto &Builder = CGF->Builder; auto &CGM = CGF->CGM; llvm::SmallVector<llvm::Type *, 4> IntrinsicTypes; @@ -282,7 +282,7 @@ static LLVM_ATTRIBUTE_NOINLINE Value * emitRVVVlenbBuiltin(CodeGenFunction *CGF, const CallExpr *E, ReturnValueSlot ReturnValue, llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, - int PolicyAttrs, bool IsMasked, unsigned SegInstSEW) { + int PolicyAttrs, bool IsMasked) { auto &Builder = CGF->Builder; auto &CGM = CGF->CGM; LLVMContext &Context = CGM.getLLVMContext(); @@ -299,7 +299,7 @@ static LLVM_ATTRIBUTE_NOINLINE Value * emitRVVVsetvliBuiltin(CodeGenFunction *CGF, const CallExpr *E, ReturnValueSlot ReturnValue, llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, - int PolicyAttrs, bool IsMasked, unsigned SegInstSEW) { + int PolicyAttrs, bool IsMasked) { auto &Builder = CGF->Builder; auto &CGM = CGF->CGM; llvm::Function *F = CGM.getIntrinsic(ID, {ResultType}); @@ -310,7 +310,7 @@ static LLVM_ATTRIBUTE_NOINLINE Value * emitRVVVSEMaskBuiltin(CodeGenFunction *CGF, const CallExpr *E, ReturnValueSlot ReturnValue, llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, - int PolicyAttrs, bool IsMasked, unsigned SegInstSEW) { + int PolicyAttrs, bool IsMasked) { auto &Builder = CGF->Builder; auto &CGM = CGF->CGM; llvm::SmallVector<llvm::Type *, 3> IntrinsicTypes; @@ -491,7 +491,7 @@ static LLVM_ATTRIBUTE_NOINLINE Value * emitRVVAveragingBuiltin(CodeGenFunction *CGF, const CallExpr *E, ReturnValueSlot ReturnValue, llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, - int PolicyAttrs, bool IsMasked, unsigned SegInstSEW) { + int PolicyAttrs, bool IsMasked) { auto &Builder = CGF->Builder; auto &CGM = CGF->CGM; // LLVM intrinsic @@ -520,7 +520,7 @@ emitRVVAveragingBuiltin(CodeGenFunction *CGF, const CallExpr *E, static LLVM_ATTRIBUTE_NOINLINE Value *emitRVVNarrowingClipBuiltin( CodeGenFunction *CGF, const CallExpr *E, ReturnValueSlot ReturnValue, llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, - int PolicyAttrs, bool IsMasked, unsigned SegInstSEW) { + int PolicyAttrs, bool IsMasked) { auto &Builder = CGF->Builder; auto &CGM = CGF->CGM; // LLVM intrinsic @@ -550,7 +550,7 @@ static LLVM_ATTRIBUTE_NOINLINE Value *emitRVVNarrowingClipBuiltin( static LLVM_ATTRIBUTE_NOINLINE Value *emitRVVFloatingPointBuiltin( CodeGenFunction *CGF, const CallExpr *E, ReturnValueSlot ReturnValue, llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, - int PolicyAttrs, bool IsMasked, unsigned SegInstSEW) { + int PolicyAttrs, bool IsMasked) { auto &Builder = CGF->Builder; auto &CGM = CGF->CGM; // LLVM intrinsic @@ -585,7 +585,7 @@ static LLVM_ATTRIBUTE_NOINLINE Value *emitRVVFloatingPointBuiltin( static LLVM_ATTRIBUTE_NOINLINE Value *emitRVVWideningFloatingPointBuiltin( CodeGenFunction *CGF, const CallExpr *E, ReturnValueSlot ReturnValue, llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, - int PolicyAttrs, bool IsMasked, unsigned SegInstSEW) { + int PolicyAttrs, bool IsMasked) { auto &Builder = CGF->Builder; auto &CGM = CGF->CGM; // LLVM intrinsic @@ -688,7 +688,7 @@ static LLVM_ATTRIBUTE_NOINLINE Value * emitRVVFMABuiltin(CodeGenFunction *CGF, const CallExpr *E, ReturnValueSlot ReturnValue, llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, - int PolicyAttrs, bool IsMasked, unsigned SegInstSEW) { + int PolicyAttrs, bool IsMasked) { auto &Builder = CGF->Builder; auto &CGM = CGF->CGM; // LLVM intrinsic @@ -717,7 +717,7 @@ static LLVM_ATTRIBUTE_NOINLINE Value * emitRVVWideningFMABuiltin(CodeGenFunction *CGF, const CallExpr *E, ReturnValueSlot ReturnValue, llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, - int PolicyAttrs, bool IsMasked, unsigned SegInstSEW) { + int PolicyAttrs, bool IsMasked) { auto &Builder = CGF->Builder; auto &CGM = CGF->CGM; // LLVM intrinsic @@ -745,7 +745,7 @@ emitRVVWideningFMABuiltin(CodeGenFunction *CGF, const CallExpr *E, static LLVM_ATTRIBUTE_NOINLINE Value *emitRVVFloatingUnaryBuiltin( CodeGenFunction *CGF, const CallExpr *E, ReturnValueSlot ReturnValue, llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, - int PolicyAttrs, bool IsMasked, unsigned SegInstSEW) { + int PolicyAttrs, bool IsMasked) { auto &Builder = CGF->Builder; auto &CGM = CGF->CGM; llvm::SmallVector<llvm::Type *, 3> IntrinsicTypes; @@ -781,7 +781,7 @@ static LLVM_ATTRIBUTE_NOINLINE Value *emitRVVFloatingUnaryBuiltin( static LLVM_ATTRIBUTE_NOINLINE Value *emitRVVFloatingConvBuiltin( CodeGenFunction *CGF, const CallExpr *E, ReturnValueSlot ReturnValue, llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, - int PolicyAttrs, bool IsMasked, unsigned SegInstSEW) { + int PolicyAttrs, bool IsMasked) { auto &Builder = CGF->Builder; auto &CGM = CGF->CGM; // LLVM intrinsic @@ -815,7 +815,7 @@ static LLVM_ATTRIBUTE_NOINLINE Value *emitRVVFloatingConvBuiltin( static LLVM_ATTRIBUTE_NOINLINE Value *emitRVVFloatingReductionBuiltin( CodeGenFunction *CGF, const CallExpr *E, ReturnValueSlot ReturnValue, llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, - int PolicyAttrs, bool IsMasked, unsigned SegInstSEW) { + int PolicyAttrs, bool IsMasked) { auto &Builder = CGF->Builder; auto &CGM = CGF->CGM; // LLVM intrinsic @@ -848,7 +848,7 @@ static LLVM_ATTRIBUTE_NOINLINE Value * emitRVVReinterpretBuiltin(CodeGenFunction *CGF, const CallExpr *E, ReturnValueSlot ReturnValue, llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, - int PolicyAttrs, bool IsMasked, unsigned SegInstSEW) { + int PolicyAttrs, bool IsMasked) { auto &Builder = CGF->Builder; auto &CGM = CGF->CGM; @@ -887,7 +887,7 @@ static LLVM_ATTRIBUTE_NOINLINE Value * emitRVVGetBuiltin(CodeGenFunction *CGF, const CallExpr *E, ReturnValueSlot ReturnValue, llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, - int PolicyAttrs, bool IsMasked, unsigned SegInstSEW) { + int PolicyAttrs, bool IsMasked) { auto &Builder = CGF->Builder; auto *VecTy = cast<ScalableVectorType>(ResultType); if (auto *OpVecTy = dyn_cast<ScalableVectorType>(Ops[0]->getType())) { @@ -912,7 +912,7 @@ static LLVM_ATTRIBUTE_NOINLINE Value * emitRVVSetBuiltin(CodeGenFunction *CGF, const CallExpr *E, ReturnValueSlot ReturnValue, llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, - int PolicyAttrs, bool IsMasked, unsigned SegInstSEW) { + int PolicyAttrs, bool IsMasked) { auto &Builder = CGF->Builder; if (auto *ResVecTy = dyn_cast<ScalableVectorType>(ResultType)) { auto *VecTy = cast<ScalableVectorType>(Ops[2]->getType()); @@ -937,7 +937,7 @@ static LLVM_ATTRIBUTE_NOINLINE Value * emitRVVCreateBuiltin(CodeGenFunction *CGF, const CallExpr *E, ReturnValueSlot ReturnValue, llvm::Type *ResultType, Intrinsic::ID ID, SmallVectorImpl<Value *> &Ops, - int PolicyAttrs, bool IsMasked, unsigned SegInstSEW) { + int PolicyAttrs, bool IsMasked) { auto &Builder = CGF->Builder; llvm::Value *ReturnVector = llvm::PoisonValue::get(ResultType); auto *VecTy = cast<ScalableVectorType>(Ops[0]->getType()); diff --git a/clang/utils/TableGen/RISCVVEmitter.cpp b/clang/utils/TableGen/RISCVVEmitter.cpp index 1b8ad7e556e8b..4d2ad24d9de02 100644 --- a/clang/utils/TableGen/RISCVVEmitter.cpp +++ b/clang/utils/TableGen/RISCVVEmitter.cpp @@ -250,17 +250,19 @@ void emitCodeGenSwitchBody(const RVVIntrinsic *RVVI, raw_ostream &OS) { OS << " TWiden = " << RVVI->getTWiden() << ";\n"; OS << " PolicyAttrs = " << RVVI->getPolicyAttrsBits() << ";\n"; - unsigned IndexedLoadStorePtrIdx = getIndexedLoadStorePtrIdx(RVVI); - if (IndexedLoadStorePtrIdx != UnknownIndex) { - OS << " {\n"; - OS << " auto PointeeType = E->getArg(" << IndexedLoadStorePtrIdx - << ")->getType()->getPointeeType();\n"; - OS << " SegInstSEW = " - "llvm::Log2_64(getContext().getTypeSize(PointeeType));\n"; - OS << " }\n"; - } else { - OS << " SegInstSEW = " << getSegInstLog2SEW(RVVI->getOverloadedName()) - << ";\n"; + if (RVVI->getManualCodegen().contains("SegInstSEW")) { + unsigned IndexedLoadStorePtrIdx = getIndexedLoadStorePtrIdx(RVVI); + if (IndexedLoadStorePtrIdx != UnknownIndex) { + OS << " {\n"; + OS << " auto PointeeType = E->getArg(" << IndexedLoadStorePtrIdx + << ")->getType()->getPointeeType();\n"; + OS << " SegInstSEW = " + "llvm::Log2_64(getContext().getTypeSize(PointeeType));\n"; + OS << " }\n"; + } else { + OS << " SegInstSEW = " << getSegInstLog2SEW(RVVI->getOverloadedName()) + << ";\n"; + } } if (RVVI->hasManualCodegen()) { _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
