Checkpoint the party/runtime stack before share-program and malicious-mode work.
Ship the TLS mesh, composer, Beaver/Yao/leaf MPC, prep/online paths, apps, and docs so the tree is pushable before elevating share_expr, security_mode, and prep resume. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
695f8e84f7
commit
0d22946a0e
1835 changed files with 170291 additions and 2849 deletions
|
|
@ -15,6 +15,7 @@
|
|||
#include <iterator>
|
||||
#include <memory>
|
||||
#include <new>
|
||||
#include <type_traits>
|
||||
#include <utility>
|
||||
|
||||
#include "hedley/hedley.h"
|
||||
|
|
@ -32,8 +33,8 @@ template <typename LaneT>
|
|||
class dynamic_packed_array
|
||||
{
|
||||
static constexpr std::size_t lane_bits = utils::packed_lane_bits_v<LaneT>;
|
||||
static_assert(lane_bits == 2 || lane_bits == 4,
|
||||
"dynamic_packed_array lanes are 2 or 4 bits");
|
||||
static_assert(lane_bits == 1 || lane_bits == 2 || lane_bits == 4,
|
||||
"dynamic_packed_array lanes are 1, 2, or 4 bits");
|
||||
static constexpr std::size_t lanes_per_word = 64u / lane_bits;
|
||||
static constexpr unsigned lane_mask = (1u << lane_bits) - 1u;
|
||||
|
||||
|
|
@ -54,6 +55,9 @@ class dynamic_packed_array
|
|||
lane_ref(word_type * word, unsigned shift) noexcept
|
||||
: word_{word}, shift_{shift} {}
|
||||
|
||||
HEDLEY_NO_THROW
|
||||
lane_ref(const lane_ref &) noexcept = default;
|
||||
|
||||
HEDLEY_NO_THROW
|
||||
HEDLEY_ALWAYS_INLINE
|
||||
operator LaneT() const noexcept
|
||||
|
|
@ -65,8 +69,14 @@ class dynamic_packed_array
|
|||
HEDLEY_ALWAYS_INLINE
|
||||
lane_ref & operator=(LaneT value) noexcept
|
||||
{
|
||||
const auto val = static_cast<word_type>(
|
||||
static_cast<unsigned>(value) & lane_mask);
|
||||
const unsigned bits = [](LaneT v) {
|
||||
if constexpr (std::is_enum_v<LaneT> || std::is_integral_v<LaneT>)
|
||||
return static_cast<unsigned>(v);
|
||||
else
|
||||
return static_cast<unsigned>(
|
||||
static_cast<typename LaneT::integral_type>(v));
|
||||
}(value);
|
||||
const auto val = static_cast<word_type>(bits & lane_mask);
|
||||
*word_ = (*word_ & ~(static_cast<word_type>(lane_mask) << shift_))
|
||||
| (val << shift_);
|
||||
return *this;
|
||||
|
|
@ -333,6 +343,9 @@ class packed_share_output : public dynamic_packed_array<LaneT>
|
|||
HEDLEY_NO_THROW
|
||||
explicit reference(typename lanes::reference lane) noexcept : lane_{lane} {}
|
||||
|
||||
HEDLEY_NO_THROW
|
||||
reference(const reference &) noexcept = default;
|
||||
|
||||
HEDLEY_NO_THROW
|
||||
operator share_type() const noexcept
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue