Branch: refs/heads/main
Home:
https://github.com/dart-lang/sdk
Commit: 0bef83781763b6987f1637c3b25a58edbb789f5e
https://github.com/dart-lang/sdk/commit/0bef83781763b6987f1637c3b25a58edbb789f5e
Author: Modestas Valauskas <
valauska...@gmail.com>
Date: 2026-05-22 (Fri, 22 May 2026)
Changed paths:
M runtime/lib/integers.cc
M runtime/vm/bootstrap_natives.h
M runtime/vm/compiler/assembler/assembler_arm.cc
M runtime/vm/compiler/assembler/assembler_arm.h
M runtime/vm/compiler/assembler/assembler_arm64.h
M runtime/vm/compiler/assembler/assembler_arm64_test.cc
M runtime/vm/compiler/assembler/assembler_arm_test.cc
M runtime/vm/compiler/assembler/assembler_x64.h
M runtime/vm/compiler/assembler/assembler_x64_test.cc
M runtime/vm/compiler/assembler/disassembler_arm.cc
M runtime/vm/compiler/assembler/disassembler_arm64.cc
M runtime/vm/compiler/assembler/disassembler_x86.cc
M runtime/vm/compiler/backend/evaluator.cc
M runtime/vm/compiler/backend/il.cc
M runtime/vm/compiler/backend/il.h
M runtime/vm/compiler/backend/il_arm.cc
M runtime/vm/compiler/backend/il_arm64.cc
M runtime/vm/compiler/backend/il_riscv.cc
M runtime/vm/compiler/backend/il_x64.cc
M runtime/vm/compiler/frontend/kernel_to_il.cc
M runtime/vm/compiler/recognized_methods_list.h
M runtime/vm/simulator_arm.cc
M runtime/vm/simulator_arm64.cc
M runtime/vm/token.h
M sdk/lib/_internal/vm/lib/integers.dart
Log Message:
-----------
[vm] Recognize int.trailingZeroBitCount/oneBitCount as graph-inlinable
Stacks on top of the int.{trailingZeroBitCount,oneBitCount} API CL
(commit 754239b077e). Both getters route through OTHER_RECOGNIZED_LIST
when a hardware fast path is available; otherwise the newly added
Dart bodies inline at call sites via vm:prefer-inline. The C++
natives are removed.
Backend codegen
---------------
ARM64: NEON CNT + UADDLV (popcount); RBIT + CLZ (ctz).
ARM: NEON CNT + VPADDL chain (popcount); RBIT + CLZ on the
register pair (ctz).
x64: popcntq when TargetCPUFeatures::popcnt_supported();
LoadImmediate(64) + rep_bsfq for ctz (decodes as tzcnt
on BMI1+, preserves dest on zero otherwise).
RISC-V 64: cpop / ctz when RV_baseline includes Zbb.
Per-arch availability is encapsulated in
UnaryInt64OpInstr::IsSupported(Token::Kind).
Apple M-series ARM64, AOT (us/iter, lower is better):
cardinality.swar 371
cardinality.accelerated 154 (2.4x)
forEachSetBit.swar 19031
forEachSetBit.accelerated 4988 (3.8x)
select.swar 199
select.accelerated 77 (2.6x)
complementCardinality.swar 399
complementCardinality.accel 152 (2.6x)
Work towards
https://github.com/dart-lang/sdk/issues/6486 (popcount
and ctz intrinsification).
Work towards
https://github.com/dart-lang/sdk/issues/1053 (efficient
BitSet implementation).
Fixes
https://github.com/dart-lang/sdk/issues/52673
Fixes
https://github.com/dart-lang/sdk/issues/38346
Issue
https://github.com/dart-lang/sdk/issues/10212
Issue
https://github.com/dart-lang/sdk/issues/5798
TEST=tests/corelib/int_bit_count_test
Cq-Include-Trybots: luci.dart.try:vm-aot-linux-release-simarm_x64-try,vm-aot-linux-debug-simarm_x64-try,dart-sdk-linux-riscv64-try
Change-Id: I9c2c4225fd63d54e190398a0fb6649366317dd17
Reviewed-on:
https://dart-review.googlesource.com/c/sdk/+/504221
Commit-Queue: Slava Egorov <
veg...@google.com>
Reviewed-by: Slava Egorov <
veg...@google.com>
Reviewed-by: Martin Kustermann <
kuste...@google.com>
Auto-Submit: Modestas Valauskas <
valauska...@gmail.com>
To unsubscribe from these emails, change your notification settings at
https://github.com/dart-lang/sdk/settings/notifications