Skip to content

Commit b4dab70

Browse files
authored
feat: merge-train/barretenberg (#23850)
See [merge-train-readme.md](https://github.com/AztecProtocol/aztec-packages/blob/next/.github/workflows/merge-train-readme.md). This is a merge-train.
2 parents b82384a + 394482a commit b4dab70

3 files changed

Lines changed: 5 additions & 7 deletions

File tree

barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/pippenger_constantine.fuzzer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
147147
}
148148

149149
// Check 2: SIMD x4 path agrees with scalar path lane-by-lane.
150-
std::array<uint32_t, 4> simd_out{};
150+
alignas(16) std::array<uint32_t, 4> simd_out{};
151151
production_simd(scalars, bit_offset, window_bits, simd_out);
152152
for (size_t lane = 0; lane < 4; ++lane) {
153153
const uint32_t want = production_scalar(scalars[lane].data(), bit_offset, window_bits);

barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/pippenger_constantine.hpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -211,11 +211,9 @@ struct ConstantineSliceParamsU32 {
211211
}
212212

213213
// Store a `SimdU32x4` to a 4-lane uint32 destination as a single 128-bit op.
214-
// On WASM the explicit `wasm_v128_store` is used because earlier codegen for
215-
// the equivalent struct-wrapper assignment was observed to round-trip the
216-
// vector through 4 scalar memory slots; the intrinsic guarantees the
217-
// `i32x4.store` opcode. On native the `vector_size` store lowers directly to
218-
// SSE2 `movdqu` / NEON `st1`.
214+
// Precondition: `dst` is 16-byte aligned.
215+
// On WASM the explicit intrinsic guarantees a `v128.store`; on native the typed
216+
// vector store lets the compiler use aligned SIMD stores (e.g. x86 movaps/movdqa).
219217
[[gnu::always_inline]] inline void simd_u32x4_store(uint32_t* dst, SimdU32x4 v) noexcept
220218
{
221219
#ifdef __wasm_simd128__

barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/pippenger_constantine.test.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ TEST(PippengerConstantine, SimdX4MatchesScalarPathLanewise)
207207
std::array<std::array<uint64_t, NUM_LIMBS_U64>, 4> scalars{
208208
random_scalar_limbs(), random_scalar_limbs(), random_scalar_limbs(), random_scalar_limbs()
209209
};
210-
std::array<uint32_t, 4> got_simd{};
210+
alignas(16) std::array<uint32_t, 4> got_simd{};
211211
production_simd_path(scalars.data(), bit_offset, window_bits, got_simd.data());
212212
for (size_t lane = 0; lane < 4; ++lane) {
213213
const uint32_t want = production_scalar_path(scalars[lane].data(), bit_offset, window_bits);

0 commit comments

Comments
 (0)