https://github.com/jacquesguan updated 
https://github.com/llvm/llvm-project/pull/199598

>From 5b4fbce797e148e65c2a688e591ca915bfef9a1c 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 | 92 ++++++++++++----------
 clang/utils/TableGen/RISCVVEmitter.cpp     | 24 +++---
 3 files changed, 87 insertions(+), 81 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..3bf7dd07d54d3 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;
@@ -89,10 +89,11 @@ emitRVVVSSEBuiltin(CodeGenFunction *CGF, const CallExpr *E,
   return Builder.CreateCall(F, Ops, "");
 }
 
-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) {
+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) {
   auto &Builder = CGF->Builder;
   auto &CGM = CGF->CGM;
   llvm::SmallVector<llvm::Type *, 4> IntrinsicTypes;
@@ -119,7 +120,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 +150,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 +180,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;
@@ -190,10 +191,11 @@ emitRVVPseudoMaskBuiltin(CodeGenFunction *CGF, const 
CallExpr *E,
   return Builder.CreateCall(F, Ops, "");
 }
 
-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) {
+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) {
   auto &Builder = CGF->Builder;
   auto &CGM = CGF->CGM;
   llvm::SmallVector<llvm::Type *, 3> IntrinsicTypes;
@@ -220,7 +222,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 +252,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 +284,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 +301,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 +312,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 +493,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
@@ -517,10 +519,11 @@ emitRVVAveragingBuiltin(CodeGenFunction *CGF, const 
CallExpr *E,
   return Builder.CreateCall(F, Ops, "");
 }
 
-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) {
+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) {
   auto &Builder = CGF->Builder;
   auto &CGM = CGF->CGM;
   // LLVM intrinsic
@@ -547,10 +550,11 @@ static LLVM_ATTRIBUTE_NOINLINE Value 
*emitRVVNarrowingClipBuiltin(
   return Builder.CreateCall(F, Ops, "");
 }
 
-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) {
+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) {
   auto &Builder = CGF->Builder;
   auto &CGM = CGF->CGM;
   // LLVM intrinsic
@@ -585,7 +589,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 +692,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 +721,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
@@ -742,10 +746,11 @@ emitRVVWideningFMABuiltin(CodeGenFunction *CGF, const 
CallExpr *E,
   return Builder.CreateCall(F, Ops, "");
 }
 
-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) {
+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) {
   auto &Builder = CGF->Builder;
   auto &CGM = CGF->CGM;
   llvm::SmallVector<llvm::Type *, 3> IntrinsicTypes;
@@ -778,10 +783,11 @@ static LLVM_ATTRIBUTE_NOINLINE Value 
*emitRVVFloatingUnaryBuiltin(
   return Builder.CreateCall(F, Ops, "");
 }
 
-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) {
+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) {
   auto &Builder = CGF->Builder;
   auto &CGM = CGF->CGM;
   // LLVM intrinsic
@@ -815,7 +821,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 +854,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 +893,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 +918,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 +943,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

Reply via email to