[clang] [clang][x86][bytecode] added trailing type for ffs, missed in pr llvm#162346 for llvm#160288 (PR #163905)
via cfe-commits
cfe-commits at lists.llvm.org
Fri Oct 17 08:01:02 PDT 2025
https://github.com/donneypr updated https://github.com/llvm/llvm-project/pull/163905
>From c84d8396f21d349bb4e1fbafd35c73ad5bd249e3 Mon Sep 17 00:00:00 2001
From: donneypr <donatoprabahar at gmail.com>
Date: Fri, 17 Oct 2025 00:06:46 -0400
Subject: [PATCH 1/3] added trailing type for ffs, missed in pr llvm#162346 for
llvm#160288
---
clang/lib/AST/ByteCode/InterpBuiltin.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/clang/lib/AST/ByteCode/InterpBuiltin.cpp b/clang/lib/AST/ByteCode/InterpBuiltin.cpp
index 922d67940e22f..517c51a5f7de1 100644
--- a/clang/lib/AST/ByteCode/InterpBuiltin.cpp
+++ b/clang/lib/AST/ByteCode/InterpBuiltin.cpp
@@ -3173,7 +3173,7 @@ bool InterpretBuiltin(InterpState &S, CodePtr OpPC, const CallExpr *Call,
case Builtin::BI__builtin_ffsl:
case Builtin::BI__builtin_ffsll:
return interp__builtin_elementwise_int_unaryop(
- S, OpPC, Call, [](const APSInt &Val) {
+ S, OpPC, Call, [](const APSInt &Val) -> APInt {
return APInt(Val.getBitWidth(),
Val.isZero() ? 0u : Val.countTrailingZeros() + 1u);
});
>From 6261a0574664b199903e69af1d81b668dfc93ec2 Mon Sep 17 00:00:00 2001
From: donneypr <donatoprabahar at gmail.com>
Date: Fri, 17 Oct 2025 00:16:42 -0400
Subject: [PATCH 2/3] addded trailing type to other
interp__builtin_elementwise_int_unaryop callbacks for uniformity
---
clang/lib/AST/ByteCode/InterpBuiltin.cpp | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/clang/lib/AST/ByteCode/InterpBuiltin.cpp b/clang/lib/AST/ByteCode/InterpBuiltin.cpp
index 517c51a5f7de1..35812d4e25981 100644
--- a/clang/lib/AST/ByteCode/InterpBuiltin.cpp
+++ b/clang/lib/AST/ByteCode/InterpBuiltin.cpp
@@ -3319,7 +3319,7 @@ bool InterpretBuiltin(InterpState &S, CodePtr OpPC, const CallExpr *Call,
case clang::X86::BI__builtin_ia32_lzcnt_u32:
case clang::X86::BI__builtin_ia32_lzcnt_u64:
return interp__builtin_elementwise_int_unaryop(
- S, OpPC, Call, [](const APSInt &Src) {
+ S, OpPC, Call, [](const APSInt &Src) -> APInt {
return APInt(Src.getBitWidth(), Src.countLeadingZeros());
});
@@ -3327,7 +3327,7 @@ bool InterpretBuiltin(InterpState &S, CodePtr OpPC, const CallExpr *Call,
case clang::X86::BI__builtin_ia32_tzcnt_u32:
case clang::X86::BI__builtin_ia32_tzcnt_u64:
return interp__builtin_elementwise_int_unaryop(
- S, OpPC, Call, [](const APSInt &Src) {
+ S, OpPC, Call, [](const APSInt &Src) -> APInt {
return APInt(Src.getBitWidth(), Src.countTrailingZeros());
});
@@ -3799,7 +3799,7 @@ bool InterpretBuiltin(InterpState &S, CodePtr OpPC, const CallExpr *Call,
case X86::BI__builtin_ia32_knotsi:
case X86::BI__builtin_ia32_knotdi:
return interp__builtin_elementwise_int_unaryop(
- S, OpPC, Call, [](const APSInt &Src) { return ~Src; });
+ S, OpPC, Call, [](const APSInt &Src) -> APInt { return ~Src; });
case X86::BI__builtin_ia32_kaddqi:
case X86::BI__builtin_ia32_kaddhi:
>From 10b9c681d6850e3f7eefb2abe6f53310fdafb96d Mon Sep 17 00:00:00 2001
From: donneypr <donatoprabahar at gmail.com>
Date: Fri, 17 Oct 2025 11:00:37 -0400
Subject: [PATCH 3/3] removed trailing types for all
interp__builtin_elementwise_int_unaryop callbacks
---
clang/lib/AST/ByteCode/InterpBuiltin.cpp | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/clang/lib/AST/ByteCode/InterpBuiltin.cpp b/clang/lib/AST/ByteCode/InterpBuiltin.cpp
index 35812d4e25981..7d088aea88746 100644
--- a/clang/lib/AST/ByteCode/InterpBuiltin.cpp
+++ b/clang/lib/AST/ByteCode/InterpBuiltin.cpp
@@ -3115,14 +3115,14 @@ bool InterpretBuiltin(InterpState &S, CodePtr OpPC, const CallExpr *Call,
case Builtin::BI__builtin_parityl:
case Builtin::BI__builtin_parityll:
return interp__builtin_elementwise_int_unaryop(
- S, OpPC, Call, [](const APSInt &Val) -> APInt {
+ S, OpPC, Call, [](const APSInt &Val) {
return APInt(Val.getBitWidth(), Val.popcount() % 2);
});
case Builtin::BI__builtin_clrsb:
case Builtin::BI__builtin_clrsbl:
case Builtin::BI__builtin_clrsbll:
return interp__builtin_elementwise_int_unaryop(
- S, OpPC, Call, [](const APSInt &Val) -> APInt {
+ S, OpPC, Call, [](const APSInt &Val) {
return APInt(Val.getBitWidth(),
Val.getBitWidth() - Val.getSignificantBits());
});
@@ -3131,8 +3131,7 @@ bool InterpretBuiltin(InterpState &S, CodePtr OpPC, const CallExpr *Call,
case Builtin::BI__builtin_bitreverse32:
case Builtin::BI__builtin_bitreverse64:
return interp__builtin_elementwise_int_unaryop(
- S, OpPC, Call,
- [](const APSInt &Val) -> APInt { return Val.reverseBits(); });
+ S, OpPC, Call, [](const APSInt &Val) { return Val.reverseBits(); });
case Builtin::BI__builtin_classify_type:
return interp__builtin_classify_type(S, OpPC, Frame, Call);
@@ -3173,7 +3172,7 @@ bool InterpretBuiltin(InterpState &S, CodePtr OpPC, const CallExpr *Call,
case Builtin::BI__builtin_ffsl:
case Builtin::BI__builtin_ffsll:
return interp__builtin_elementwise_int_unaryop(
- S, OpPC, Call, [](const APSInt &Val) -> APInt {
+ S, OpPC, Call, [](const APSInt &Val) {
return APInt(Val.getBitWidth(),
Val.isZero() ? 0u : Val.countTrailingZeros() + 1u);
});
@@ -3319,7 +3318,7 @@ bool InterpretBuiltin(InterpState &S, CodePtr OpPC, const CallExpr *Call,
case clang::X86::BI__builtin_ia32_lzcnt_u32:
case clang::X86::BI__builtin_ia32_lzcnt_u64:
return interp__builtin_elementwise_int_unaryop(
- S, OpPC, Call, [](const APSInt &Src) -> APInt {
+ S, OpPC, Call, [](const APSInt &Src) {
return APInt(Src.getBitWidth(), Src.countLeadingZeros());
});
@@ -3327,7 +3326,7 @@ bool InterpretBuiltin(InterpState &S, CodePtr OpPC, const CallExpr *Call,
case clang::X86::BI__builtin_ia32_tzcnt_u32:
case clang::X86::BI__builtin_ia32_tzcnt_u64:
return interp__builtin_elementwise_int_unaryop(
- S, OpPC, Call, [](const APSInt &Src) -> APInt {
+ S, OpPC, Call, [](const APSInt &Src) {
return APInt(Src.getBitWidth(), Src.countTrailingZeros());
});
@@ -3799,7 +3798,7 @@ bool InterpretBuiltin(InterpState &S, CodePtr OpPC, const CallExpr *Call,
case X86::BI__builtin_ia32_knotsi:
case X86::BI__builtin_ia32_knotdi:
return interp__builtin_elementwise_int_unaryop(
- S, OpPC, Call, [](const APSInt &Src) -> APInt { return ~Src; });
+ S, OpPC, Call, [](const APSInt &Src) { return ~Src; });
case X86::BI__builtin_ia32_kaddqi:
case X86::BI__builtin_ia32_kaddhi:
More information about the cfe-commits
mailing list