aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Sema/SemaChecking.cpp
diff options
context:
space:
mode:
authorwanglei <wanglei@loongson.cn>2023-08-09 16:01:37 +0800
committerwanglei <wanglei@loongson.cn>2023-08-09 16:04:09 +0800
commitea8d3b1f9f2d7385d97fcd34d14db0eb2cb2795c (patch)
tree71759b676704ef9c3d59fd334e349067ff8510a1 /clang/lib/Sema/SemaChecking.cpp
parentc4769ef59c07bcb8c1ab0d9c0fe6e9ef319ffa6a (diff)
downloadllvm-ea8d3b1f9f2d7385d97fcd34d14db0eb2cb2795c.zip
llvm-ea8d3b1f9f2d7385d97fcd34d14db0eb2cb2795c.tar.gz
llvm-ea8d3b1f9f2d7385d97fcd34d14db0eb2cb2795c.tar.bz2
[Clang][LoongArch] Use the ClangBuiltin class to automatically generate support for CBE and CFE
Fixed the type modifier (L->W), removed redundant feature checking code since the feature has already been checked in `EmitBuiltinExpr`. And Cleaned up unused diagnostic information. Reviewed By: SixWeining Differential Revision: https://reviews.llvm.org/D156866
Diffstat (limited to 'clang/lib/Sema/SemaChecking.cpp')
-rw-r--r--clang/lib/Sema/SemaChecking.cpp50
1 files changed, 2 insertions, 48 deletions
diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp
index 7ff5973..0b377d4 100644
--- a/clang/lib/Sema/SemaChecking.cpp
+++ b/clang/lib/Sema/SemaChecking.cpp
@@ -3848,39 +3848,12 @@ bool Sema::CheckLoongArchBuiltinFunctionCall(const TargetInfo &TI,
default:
break;
case LoongArch::BI__builtin_loongarch_cacop_d:
- if (!TI.hasFeature("64bit"))
- return Diag(TheCall->getBeginLoc(),
- diag::err_loongarch_builtin_requires_la64)
- << TheCall->getSourceRange();
- [[fallthrough]];
case LoongArch::BI__builtin_loongarch_cacop_w: {
- if (BuiltinID == LoongArch::BI__builtin_loongarch_cacop_w &&
- !TI.hasFeature("32bit"))
- return Diag(TheCall->getBeginLoc(),
- diag::err_loongarch_builtin_requires_la32)
- << TheCall->getSourceRange();
SemaBuiltinConstantArgRange(TheCall, 0, 0, llvm::maxUIntN(5));
SemaBuiltinConstantArgRange(TheCall, 2, llvm::minIntN(12),
llvm::maxIntN(12));
break;
}
- case LoongArch::BI__builtin_loongarch_crc_w_b_w:
- case LoongArch::BI__builtin_loongarch_crc_w_h_w:
- case LoongArch::BI__builtin_loongarch_crc_w_w_w:
- case LoongArch::BI__builtin_loongarch_crc_w_d_w:
- case LoongArch::BI__builtin_loongarch_crcc_w_b_w:
- case LoongArch::BI__builtin_loongarch_crcc_w_h_w:
- case LoongArch::BI__builtin_loongarch_crcc_w_w_w:
- case LoongArch::BI__builtin_loongarch_crcc_w_d_w:
- case LoongArch::BI__builtin_loongarch_iocsrrd_d:
- case LoongArch::BI__builtin_loongarch_iocsrwr_d:
- case LoongArch::BI__builtin_loongarch_asrtle_d:
- case LoongArch::BI__builtin_loongarch_asrtgt_d:
- if (!TI.hasFeature("64bit"))
- return Diag(TheCall->getBeginLoc(),
- diag::err_loongarch_builtin_requires_la64)
- << TheCall->getSourceRange();
- break;
case LoongArch::BI__builtin_loongarch_break:
case LoongArch::BI__builtin_loongarch_dbar:
case LoongArch::BI__builtin_loongarch_ibar:
@@ -3888,35 +3861,16 @@ bool Sema::CheckLoongArchBuiltinFunctionCall(const TargetInfo &TI,
// Check if immediate is in [0, 32767].
return SemaBuiltinConstantArgRange(TheCall, 0, 0, 32767);
case LoongArch::BI__builtin_loongarch_csrrd_w:
- return SemaBuiltinConstantArgRange(TheCall, 0, 0, 16383);
- case LoongArch::BI__builtin_loongarch_csrwr_w:
- return SemaBuiltinConstantArgRange(TheCall, 1, 0, 16383);
- case LoongArch::BI__builtin_loongarch_csrxchg_w:
- return SemaBuiltinConstantArgRange(TheCall, 2, 0, 16383);
case LoongArch::BI__builtin_loongarch_csrrd_d:
- if (!TI.hasFeature("64bit"))
- return Diag(TheCall->getBeginLoc(),
- diag::err_loongarch_builtin_requires_la64)
- << TheCall->getSourceRange();
return SemaBuiltinConstantArgRange(TheCall, 0, 0, 16383);
+ case LoongArch::BI__builtin_loongarch_csrwr_w:
case LoongArch::BI__builtin_loongarch_csrwr_d:
- if (!TI.hasFeature("64bit"))
- return Diag(TheCall->getBeginLoc(),
- diag::err_loongarch_builtin_requires_la64)
- << TheCall->getSourceRange();
return SemaBuiltinConstantArgRange(TheCall, 1, 0, 16383);
+ case LoongArch::BI__builtin_loongarch_csrxchg_w:
case LoongArch::BI__builtin_loongarch_csrxchg_d:
- if (!TI.hasFeature("64bit"))
- return Diag(TheCall->getBeginLoc(),
- diag::err_loongarch_builtin_requires_la64)
- << TheCall->getSourceRange();
return SemaBuiltinConstantArgRange(TheCall, 2, 0, 16383);
case LoongArch::BI__builtin_loongarch_lddir_d:
case LoongArch::BI__builtin_loongarch_ldpte_d:
- if (!TI.hasFeature("64bit"))
- return Diag(TheCall->getBeginLoc(),
- diag::err_loongarch_builtin_requires_la64)
- << TheCall->getSourceRange();
return SemaBuiltinConstantArgRange(TheCall, 1, 0, 31);
case LoongArch::BI__builtin_loongarch_movfcsr2gr:
case LoongArch::BI__builtin_loongarch_movgr2fcsr: