Compare commits
10 Commits
debug/gpu/
...
al/bench_t
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3621d12c42 | ||
|
|
1f2e1537fa | ||
|
|
52a1191474 | ||
|
|
d06e8d1e87 | ||
|
|
863234d134 | ||
|
|
fcfb77a8c5 | ||
|
|
98d58ada7a | ||
|
|
8962d1f925 | ||
|
|
f7655cc749 | ||
|
|
371e8238db |
@@ -45,7 +45,7 @@ jobs:
|
||||
# This will allow to fallback on permanent instances running on Hyperstack.
|
||||
- name: Use permanent remote instance
|
||||
id: use-permanent-instance
|
||||
if: ${{ env.SECRETS_AVAILABLE == 'true' && failure() }}
|
||||
if: env.SECRETS_AVAILABLE == 'true' && steps.start-remote-instance.outcome == 'failure'
|
||||
run: |
|
||||
echo "runner_group=h100x1" >> "$GITHUB_OUTPUT"
|
||||
|
||||
|
||||
@@ -72,7 +72,9 @@ jobs:
|
||||
# This will allow to fallback on permanent instances running on Hyperstack.
|
||||
- name: Use permanent remote instance
|
||||
id: use-permanent-instance
|
||||
if: ${{ env.SECRETS_AVAILABLE == 'true' && failure() && inputs.profile == 'single-h100' }}
|
||||
if: env.SECRETS_AVAILABLE == 'true' &&
|
||||
steps.start-remote-instance.outcome == 'failure' &&
|
||||
inputs.profile == 'single-h100'
|
||||
run: |
|
||||
echo "runner_group=h100x1" >> "$GITHUB_OUTPUT"
|
||||
|
||||
|
||||
@@ -136,7 +136,9 @@ jobs:
|
||||
# This will allow to fallback on permanent instances running on Hyperstack.
|
||||
- name: Use permanent remote instance
|
||||
id: use-permanent-instance
|
||||
if: ${{ env.SECRETS_AVAILABLE == 'true' && failure() && inputs.profile == 'single-h100' }}
|
||||
if: env.SECRETS_AVAILABLE == 'true' &&
|
||||
steps.start-remote-instance.outcome == 'failure' &&
|
||||
inputs.profile == 'single-h100'
|
||||
run: |
|
||||
echo "runner_group=h100x1" >> "$GITHUB_OUTPUT"
|
||||
|
||||
|
||||
2
.github/workflows/gpu_fast_h100_tests.yml
vendored
@@ -91,7 +91,7 @@ jobs:
|
||||
# This will allow to fallback on permanent instances running on Hyperstack.
|
||||
- name: Use permanent remote instance
|
||||
id: use-permanent-instance
|
||||
if: ${{ env.SECRETS_AVAILABLE == 'true' && steps.start-remote-instance.outcome == 'failure' }}
|
||||
if: env.SECRETS_AVAILABLE == 'true' && steps.start-remote-instance.outcome == 'failure'
|
||||
run: |
|
||||
echo "runner_group=h100x1" >> "$GITHUB_OUTPUT"
|
||||
|
||||
|
||||
2
.github/workflows/gpu_full_h100_tests.yml
vendored
@@ -42,7 +42,7 @@ jobs:
|
||||
# This will allow to fallback on permanent instances running on Hyperstack.
|
||||
- name: Use permanent remote instance
|
||||
id: use-permanent-instance
|
||||
if: ${{ env.SECRETS_AVAILABLE == 'true' && failure() }}
|
||||
if: env.SECRETS_AVAILABLE == 'true' && steps.start-remote-instance.outcome == 'failure'
|
||||
run: |
|
||||
echo "runner_group=h100x1" >> "$GITHUB_OUTPUT"
|
||||
|
||||
|
||||
@@ -92,7 +92,7 @@ jobs:
|
||||
# This will allow to fallback on permanent instances running on Hyperstack.
|
||||
- name: Use permanent remote instance
|
||||
id: use-permanent-instance
|
||||
if: ${{ env.SECRETS_AVAILABLE == 'true' && failure() }}
|
||||
if: env.SECRETS_AVAILABLE == 'true' && steps.start-remote-instance.outcome == 'failure'
|
||||
run: |
|
||||
echo "runner_group=h100x1" >> "$GITHUB_OUTPUT"
|
||||
|
||||
|
||||
@@ -91,7 +91,7 @@ jobs:
|
||||
# This will allow to fallback on permanent instances running on Hyperstack.
|
||||
- name: Use permanent remote instance
|
||||
id: use-permanent-instance
|
||||
if: ${{ env.SECRETS_AVAILABLE == 'true' && failure() }}
|
||||
if: env.SECRETS_AVAILABLE == 'true' && steps.start-remote-instance.outcome == 'failure'
|
||||
run: |
|
||||
echo "runner_group=h100x1" >> "$GITHUB_OUTPUT"
|
||||
|
||||
|
||||
2
Makefile
@@ -433,6 +433,7 @@ clippy_versionable: install_rs_check_toolchain
|
||||
.PHONY: clippy_tfhe_lints # Run clippy lints on tfhe-lints
|
||||
clippy_tfhe_lints: install_cargo_dylint # the toolchain is selected with toolchain.toml
|
||||
cd utils/tfhe-lints && \
|
||||
rustup toolchain install && \
|
||||
cargo clippy --all-targets -- --no-deps -D warnings
|
||||
|
||||
.PHONY: clippy_all # Run all clippy targets
|
||||
@@ -909,6 +910,7 @@ test_versionable: install_rs_build_toolchain
|
||||
.PHONY: test_tfhe_lints # Run test on tfhe-lints
|
||||
test_tfhe_lints: install_cargo_dylint
|
||||
cd utils/tfhe-lints && \
|
||||
rustup toolchain install && \
|
||||
cargo test
|
||||
|
||||
# The backward compat data repo holds historical binary data but also rust code to generate and load them.
|
||||
|
||||
@@ -113,7 +113,8 @@ void scratch_cuda_full_propagation_64(
|
||||
|
||||
void cuda_full_propagation_64_inplace(void *const *streams,
|
||||
uint32_t const *gpu_indexes,
|
||||
uint32_t gpu_count, void *input_blocks,
|
||||
uint32_t gpu_count,
|
||||
CudaRadixCiphertextFFI *input_blocks,
|
||||
int8_t *mem_ptr, void *const *ksks,
|
||||
void *const *bsks, uint32_t num_blocks);
|
||||
|
||||
|
||||
@@ -841,8 +841,8 @@ template <typename Torus> struct int_fullprop_buffer {
|
||||
|
||||
int_radix_lut<Torus> *lut;
|
||||
|
||||
Torus *tmp_small_lwe_vector;
|
||||
Torus *tmp_big_lwe_vector;
|
||||
CudaRadixCiphertextFFI *tmp_small_lwe_vector;
|
||||
CudaRadixCiphertextFFI *tmp_big_lwe_vector;
|
||||
|
||||
int_fullprop_buffer(cudaStream_t const *streams, uint32_t const *gpu_indexes,
|
||||
uint32_t gpu_count, int_radix_params params,
|
||||
@@ -889,17 +889,14 @@ template <typename Torus> struct int_fullprop_buffer {
|
||||
|
||||
lut->broadcast_lut(streams, gpu_indexes, 0);
|
||||
|
||||
// Temporary arrays
|
||||
Torus small_vector_size =
|
||||
2 * (params.small_lwe_dimension + 1) * sizeof(Torus);
|
||||
Torus big_vector_size =
|
||||
2 * (params.glwe_dimension * params.polynomial_size + 1) *
|
||||
sizeof(Torus);
|
||||
|
||||
tmp_small_lwe_vector = (Torus *)cuda_malloc_async(
|
||||
small_vector_size, streams[0], gpu_indexes[0]);
|
||||
tmp_big_lwe_vector = (Torus *)cuda_malloc_async(
|
||||
big_vector_size, streams[0], gpu_indexes[0]);
|
||||
tmp_small_lwe_vector = new CudaRadixCiphertextFFI;
|
||||
create_zero_radix_ciphertext_async<Torus>(streams[0], gpu_indexes[0],
|
||||
tmp_small_lwe_vector, 2,
|
||||
params.small_lwe_dimension);
|
||||
tmp_big_lwe_vector = new CudaRadixCiphertextFFI;
|
||||
create_zero_radix_ciphertext_async<Torus>(streams[0], gpu_indexes[0],
|
||||
tmp_big_lwe_vector, 2,
|
||||
params.big_lwe_dimension);
|
||||
cuda_synchronize_stream(streams[0], gpu_indexes[0]);
|
||||
free(h_lwe_indexes);
|
||||
}
|
||||
@@ -911,8 +908,10 @@ template <typename Torus> struct int_fullprop_buffer {
|
||||
lut->release(streams, gpu_indexes, 1);
|
||||
delete lut;
|
||||
|
||||
cuda_drop_async(tmp_small_lwe_vector, streams[0], gpu_indexes[0]);
|
||||
cuda_drop_async(tmp_big_lwe_vector, streams[0], gpu_indexes[0]);
|
||||
release_radix_ciphertext(streams[0], gpu_indexes[0], tmp_small_lwe_vector);
|
||||
delete tmp_small_lwe_vector;
|
||||
release_radix_ciphertext(streams[0], gpu_indexes[0], tmp_big_lwe_vector);
|
||||
delete tmp_big_lwe_vector;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -4,17 +4,17 @@
|
||||
|
||||
void cuda_full_propagation_64_inplace(void *const *streams,
|
||||
uint32_t const *gpu_indexes,
|
||||
uint32_t gpu_count, void *input_blocks,
|
||||
uint32_t gpu_count,
|
||||
CudaRadixCiphertextFFI *input_blocks,
|
||||
int8_t *mem_ptr, void *const *ksks,
|
||||
void *const *bsks, uint32_t num_blocks) {
|
||||
|
||||
int_fullprop_buffer<uint64_t> *buffer =
|
||||
(int_fullprop_buffer<uint64_t> *)mem_ptr;
|
||||
|
||||
host_full_propagate_inplace<uint64_t>(
|
||||
(cudaStream_t *)(streams), gpu_indexes, gpu_count,
|
||||
static_cast<uint64_t *>(input_blocks), buffer, (uint64_t **)(ksks), bsks,
|
||||
num_blocks);
|
||||
host_full_propagate_inplace<uint64_t>((cudaStream_t *)(streams), gpu_indexes,
|
||||
gpu_count, input_blocks, buffer,
|
||||
(uint64_t **)(ksks), bsks, num_blocks);
|
||||
}
|
||||
|
||||
void scratch_cuda_full_propagation_64(
|
||||
|
||||
@@ -689,6 +689,7 @@ __host__ void integer_radix_apply_univariate_lookup_table_kb(
|
||||
cuda_memcpy_async_to_cpu(&lut_indexes, lut->get_lut_indexes(0, 0),
|
||||
lut->num_blocks * sizeof(Torus), streams[0],
|
||||
gpu_indexes[0]);
|
||||
cuda_synchronize_stream(streams[0], gpu_indexes[0]);
|
||||
for (uint i = 0; i < num_radix_blocks; i++) {
|
||||
lwe_array_out->degrees[i] = lut->degrees[lut_indexes[i]];
|
||||
lwe_array_out->noise_levels[i] = NoiseLevel::NOMINAL;
|
||||
@@ -964,6 +965,7 @@ __host__ void integer_radix_apply_many_univariate_lookup_table_kb(
|
||||
cuda_memcpy_async_to_cpu(&lut_indexes, lut->get_lut_indexes(0, 0),
|
||||
lut->num_blocks * sizeof(Torus), streams[0],
|
||||
gpu_indexes[0]);
|
||||
cuda_synchronize_stream(streams[0], gpu_indexes[0]);
|
||||
for (uint i = 0; i < lwe_array_out->num_radix_blocks; i++) {
|
||||
lwe_array_out->degrees[i] = lut->degrees[i % lut->num_blocks];
|
||||
lwe_array_out->noise_levels[i] = NoiseLevel::NOMINAL;
|
||||
@@ -1173,6 +1175,7 @@ __host__ void integer_radix_apply_bivariate_lookup_table_kb(
|
||||
cuda_memcpy_async_to_cpu(&lut_indexes, lut->get_lut_indexes(0, 0),
|
||||
lut->num_blocks * sizeof(Torus), streams[0],
|
||||
gpu_indexes[0]);
|
||||
cuda_synchronize_stream(streams[0], gpu_indexes[0]);
|
||||
for (uint i = 0; i < num_radix_blocks; i++) {
|
||||
lwe_array_out->degrees[i] = lut->degrees[lut_indexes[i]];
|
||||
lwe_array_out->noise_levels[i] = NoiseLevel::NOMINAL;
|
||||
@@ -1974,7 +1977,8 @@ void host_compute_shifted_blocks_and_borrow_states(
|
||||
template <typename Torus>
|
||||
void host_full_propagate_inplace(cudaStream_t const *streams,
|
||||
uint32_t const *gpu_indexes,
|
||||
uint32_t gpu_count, Torus *input_blocks,
|
||||
uint32_t gpu_count,
|
||||
CudaRadixCiphertextFFI *input_blocks,
|
||||
int_fullprop_buffer<Torus> *mem_ptr,
|
||||
Torus *const *ksks, void *const *bsks,
|
||||
uint32_t num_blocks) {
|
||||
@@ -1987,39 +1991,51 @@ void host_full_propagate_inplace(cudaStream_t const *streams,
|
||||
uint32_t num_many_lut = 1;
|
||||
uint32_t lut_stride = 0;
|
||||
for (int i = 0; i < num_blocks; i++) {
|
||||
auto cur_input_block = &input_blocks[i * big_lwe_size];
|
||||
CudaRadixCiphertextFFI cur_input_block;
|
||||
as_radix_ciphertext_slice<Torus>(&cur_input_block, input_blocks, i, i + 1);
|
||||
|
||||
/// Since the keyswitch is done on one input only, use only 1 GPU
|
||||
execute_keyswitch_async<Torus>(
|
||||
streams, gpu_indexes, 1, mem_ptr->tmp_small_lwe_vector,
|
||||
mem_ptr->lut->lwe_trivial_indexes, cur_input_block,
|
||||
streams, gpu_indexes, 1, (Torus *)(mem_ptr->tmp_small_lwe_vector->ptr),
|
||||
mem_ptr->lut->lwe_trivial_indexes, (Torus *)cur_input_block.ptr,
|
||||
mem_ptr->lut->lwe_trivial_indexes, ksks, params.big_lwe_dimension,
|
||||
params.small_lwe_dimension, params.ks_base_log, params.ks_level, 1);
|
||||
|
||||
cuda_memcpy_async_gpu_to_gpu(&mem_ptr->tmp_small_lwe_vector[small_lwe_size],
|
||||
mem_ptr->tmp_small_lwe_vector,
|
||||
small_lwe_size * sizeof(Torus), streams[0],
|
||||
gpu_indexes[0]);
|
||||
copy_radix_ciphertext_slice_async<Torus>(
|
||||
streams[0], gpu_indexes[0], mem_ptr->tmp_small_lwe_vector, 1, 2,
|
||||
mem_ptr->tmp_small_lwe_vector, 0, 1);
|
||||
|
||||
execute_pbs_async<Torus>(
|
||||
streams, gpu_indexes, 1, mem_ptr->tmp_big_lwe_vector,
|
||||
streams, gpu_indexes, 1, (Torus *)mem_ptr->tmp_big_lwe_vector->ptr,
|
||||
mem_ptr->lut->lwe_trivial_indexes, mem_ptr->lut->lut_vec,
|
||||
mem_ptr->lut->lut_indexes_vec, mem_ptr->tmp_small_lwe_vector,
|
||||
mem_ptr->lut->lut_indexes_vec,
|
||||
(Torus *)mem_ptr->tmp_small_lwe_vector->ptr,
|
||||
mem_ptr->lut->lwe_trivial_indexes, bsks, mem_ptr->lut->buffer,
|
||||
params.glwe_dimension, params.small_lwe_dimension,
|
||||
params.polynomial_size, params.pbs_base_log, params.pbs_level,
|
||||
params.grouping_factor, 2, params.pbs_type, num_many_lut, lut_stride);
|
||||
|
||||
cuda_memcpy_async_gpu_to_gpu(
|
||||
(void *)cur_input_block, mem_ptr->tmp_big_lwe_vector,
|
||||
big_lwe_size * sizeof(Torus), streams[0], gpu_indexes[0]);
|
||||
copy_radix_ciphertext_slice_async<Torus>(streams[0], gpu_indexes[0],
|
||||
&cur_input_block, 0, 1,
|
||||
mem_ptr->tmp_big_lwe_vector, 0, 1);
|
||||
Torus lut_indexes[mem_ptr->lut->num_blocks];
|
||||
cuda_memcpy_async_to_cpu(&lut_indexes, mem_ptr->lut->get_lut_indexes(0, 0),
|
||||
mem_ptr->lut->num_blocks * sizeof(Torus),
|
||||
streams[0], gpu_indexes[0]);
|
||||
cuda_synchronize_stream(streams[0], gpu_indexes[0]);
|
||||
input_blocks->degrees[i] = mem_ptr->lut->degrees[lut_indexes[0]];
|
||||
input_blocks->noise_levels[i] = NoiseLevel::NOMINAL;
|
||||
|
||||
if (i < num_blocks - 1) {
|
||||
auto next_input_block = &input_blocks[(i + 1) * big_lwe_size];
|
||||
legacy_host_addition<Torus>(streams[0], gpu_indexes[0], next_input_block,
|
||||
(Torus const *)next_input_block,
|
||||
&mem_ptr->tmp_big_lwe_vector[big_lwe_size],
|
||||
params.big_lwe_dimension, 1);
|
||||
CudaRadixCiphertextFFI next_input_block;
|
||||
as_radix_ciphertext_slice<Torus>(&next_input_block, input_blocks, i + 1,
|
||||
i + 2);
|
||||
CudaRadixCiphertextFFI second_input;
|
||||
as_radix_ciphertext_slice<Torus>(&second_input,
|
||||
mem_ptr->tmp_big_lwe_vector, 1, 2);
|
||||
|
||||
host_addition<Torus>(streams[0], gpu_indexes[0], &next_input_block,
|
||||
&next_input_block, &second_input, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -319,7 +319,7 @@ unsafe extern "C" {
|
||||
streams: *const *mut ffi::c_void,
|
||||
gpu_indexes: *const u32,
|
||||
gpu_count: u32,
|
||||
input_blocks: *mut ffi::c_void,
|
||||
input_blocks: *mut CudaRadixCiphertextFFI,
|
||||
mem_ptr: *mut i8,
|
||||
ksks: *const *mut ffi::c_void,
|
||||
bsks: *const *mut ffi::c_void,
|
||||
|
||||
@@ -12,4 +12,5 @@
|
||||
"n3-H100x4": 6.08,
|
||||
"n3-H100x2": 3.04,
|
||||
"n3-L40x1": 0.80
|
||||
"n3-H100x8-SXM5": 24,
|
||||
}
|
||||
|
||||
@@ -1,100 +1,66 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="540.0" height="520" viewBox="0 0 540.0 520">
|
||||
<!-- Header Row -->
|
||||
<rect x="0" y="0" width="540.0" height="40" fill="black" />
|
||||
<text x="10" y="24.0" fill="white" font-family="Arial" font-size="14">Operation \ Size</text>
|
||||
<text x="385.0" y="24.0" fill="white" font-family="Arial" font-size="14">CPU</text>
|
||||
<text x="477.0" y="24.0" fill="white" font-family="Arial" font-size="14">GPU</text>
|
||||
|
||||
<!-- Data Rows -->
|
||||
<rect x="0" y="40" width="540.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="64.0" fill="black" font-family="Arial" font-size="14">Negation (`-`)</text>
|
||||
<rect x="356.0" y="40" width="540.0" height="40" fill="#f3f3f3" />
|
||||
<text x="383.0" y="64.0" fill="black" font-family="Arial" font-size="14">106 ms</text>
|
||||
<rect x="448.0" y="40" width="540.0" height="40" fill="#f3f3f3" />
|
||||
<text x="471.0" y="64.0" fill="black" font-family="Arial" font-size="14">25.2 ms</text>
|
||||
<rect x="0" y="80" width="540.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="104.0" fill="black" font-family="Arial" font-size="14">Add / Sub (`+`,`-`)</text>
|
||||
<rect x="356.0" y="80" width="540.0" height="40" fill="#f3f3f3" />
|
||||
<text x="383.0" y="104.0" fill="black" font-family="Arial" font-size="14">105 ms</text>
|
||||
<rect x="448.0" y="80" width="540.0" height="40" fill="#f3f3f3" />
|
||||
<text x="471.0" y="104.0" fill="black" font-family="Arial" font-size="14">25.2 ms</text>
|
||||
<rect x="0" y="120" width="540.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="144.0" fill="black" font-family="Arial" font-size="14">Mul (`x`)</text>
|
||||
<rect x="356.0" y="120" width="540.0" height="40" fill="#f3f3f3" />
|
||||
<text x="383.0" y="144.0" fill="black" font-family="Arial" font-size="14">401 ms</text>
|
||||
<rect x="448.0" y="120" width="540.0" height="40" fill="#f3f3f3" />
|
||||
<text x="475.0" y="144.0" fill="black" font-family="Arial" font-size="14">237 ms</text>
|
||||
<rect x="0" y="160" width="540.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="184.0" fill="black" font-family="Arial" font-size="14">Equal / Not Equal (`eq`, `ne`)</text>
|
||||
<rect x="356.0" y="160" width="540.0" height="40" fill="#f3f3f3" />
|
||||
<text x="379.0" y="184.0" fill="black" font-family="Arial" font-size="14">81.2 ms</text>
|
||||
<rect x="448.0" y="160" width="540.0" height="40" fill="#f3f3f3" />
|
||||
<text x="471.0" y="184.0" fill="black" font-family="Arial" font-size="14">17.7 ms</text>
|
||||
<rect x="0" y="200" width="540.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="224.0" fill="black" font-family="Arial" font-size="14">Comparisons (`ge`, `gt`, `le`, `lt`)</text>
|
||||
<rect x="356.0" y="200" width="540.0" height="40" fill="#f3f3f3" />
|
||||
<text x="383.0" y="224.0" fill="black" font-family="Arial" font-size="14">102 ms</text>
|
||||
<rect x="448.0" y="200" width="540.0" height="40" fill="#f3f3f3" />
|
||||
<text x="471.0" y="224.0" fill="black" font-family="Arial" font-size="14">26.2 ms</text>
|
||||
<rect x="0" y="240" width="540.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="264.0" fill="black" font-family="Arial" font-size="14">Max / Min (`max`,`min`)</text>
|
||||
<rect x="356.0" y="240" width="540.0" height="40" fill="#f3f3f3" />
|
||||
<text x="383.0" y="264.0" fill="black" font-family="Arial" font-size="14">145 ms</text>
|
||||
<rect x="448.0" y="240" width="540.0" height="40" fill="#f3f3f3" />
|
||||
<text x="471.0" y="264.0" fill="black" font-family="Arial" font-size="14">43.6 ms</text>
|
||||
<rect x="0" y="280" width="540.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="304.0" fill="black" font-family="Arial" font-size="14">Bitwise operations (`&`, `|`, `^`)</text>
|
||||
<rect x="356.0" y="280" width="540.0" height="40" fill="#f3f3f3" />
|
||||
<text x="379.0" y="304.0" fill="black" font-family="Arial" font-size="14">20.7 ms</text>
|
||||
<rect x="448.0" y="280" width="540.0" height="40" fill="#f3f3f3" />
|
||||
<text x="471.0" y="304.0" fill="black" font-family="Arial" font-size="14">5.97 ms</text>
|
||||
<rect x="0" y="320" width="540.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="344.0" fill="black" font-family="Arial" font-size="14">Div / Rem (`/`, `%`)</text>
|
||||
<rect x="356.0" y="320" width="540.0" height="40" fill="#f3f3f3" />
|
||||
<text x="383.0" y="344.0" fill="black" font-family="Arial" font-size="14">8.22 s</text>
|
||||
<rect x="448.0" y="320" width="540.0" height="40" fill="#f3f3f3" />
|
||||
<text x="475.0" y="344.0" fill="black" font-family="Arial" font-size="14">2.05 s</text>
|
||||
<rect x="0" y="360" width="540.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="384.0" fill="black" font-family="Arial" font-size="14">Left / Right Shifts (`<<`, `>>`)</text>
|
||||
<rect x="356.0" y="360" width="540.0" height="40" fill="#f3f3f3" />
|
||||
<text x="383.0" y="384.0" fill="black" font-family="Arial" font-size="14">134 ms</text>
|
||||
<rect x="448.0" y="360" width="540.0" height="40" fill="#f3f3f3" />
|
||||
<text x="471.0" y="384.0" fill="black" font-family="Arial" font-size="14">86.7 ms</text>
|
||||
<rect x="0" y="400" width="540.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="424.0" fill="black" font-family="Arial" font-size="14">Left / Right Rotations (`left_rotate`, `right_rotate`)</text>
|
||||
<rect x="356.0" y="400" width="540.0" height="40" fill="#f3f3f3" />
|
||||
<text x="383.0" y="424.0" fill="black" font-family="Arial" font-size="14">133 ms</text>
|
||||
<rect x="448.0" y="400" width="540.0" height="40" fill="#f3f3f3" />
|
||||
<text x="471.0" y="424.0" fill="black" font-family="Arial" font-size="14">86.8 ms</text>
|
||||
<rect x="0" y="440" width="540.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="464.0" fill="black" font-family="Arial" font-size="14">Leading / Trailing zeros/ones</text>
|
||||
<rect x="356.0" y="440" width="540.0" height="40" fill="#f3f3f3" />
|
||||
<text x="383.0" y="464.0" fill="black" font-family="Arial" font-size="14">247 ms</text>
|
||||
<rect x="448.0" y="440" width="540.0" height="40" fill="#f3f3f3" />
|
||||
<text x="471.0" y="464.0" fill="black" font-family="Arial" font-size="14">62.3 ms</text>
|
||||
<rect x="0" y="480" width="540.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="504.0" fill="black" font-family="Arial" font-size="14">Log2</text>
|
||||
<rect x="356.0" y="480" width="540.0" height="40" fill="#f3f3f3" />
|
||||
<text x="383.0" y="504.0" fill="black" font-family="Arial" font-size="14">267 ms</text>
|
||||
<rect x="448.0" y="480" width="540.0" height="40" fill="#f3f3f3" />
|
||||
<text x="471.0" y="504.0" fill="black" font-family="Arial" font-size="14">73.9 ms</text>
|
||||
|
||||
<!-- Borders -->
|
||||
<line x1="0" y1="0" x2="0" y2="520" stroke="white" />
|
||||
<line x1="356.0" y1="0" x2="356.0" y2="520" stroke="white" />
|
||||
<line x1="448.0" y1="0" x2="448.0" y2="520" stroke="white" />
|
||||
<line x1="0" y1="0" x2="540.0" y2="0" stroke="white" />
|
||||
<line x1="0" y1="40" x2="540.0" y2="40" stroke="white" />
|
||||
<line x1="0" y1="80" x2="540.0" y2="80" stroke="white" />
|
||||
<line x1="0" y1="120" x2="540.0" y2="120" stroke="white" />
|
||||
<line x1="0" y1="160" x2="540.0" y2="160" stroke="white" />
|
||||
<line x1="0" y1="200" x2="540.0" y2="200" stroke="white" />
|
||||
<line x1="0" y1="240" x2="540.0" y2="240" stroke="white" />
|
||||
<line x1="0" y1="280" x2="540.0" y2="280" stroke="white" />
|
||||
<line x1="0" y1="320" x2="540.0" y2="320" stroke="white" />
|
||||
<line x1="0" y1="360" x2="540.0" y2="360" stroke="white" />
|
||||
<line x1="0" y1="400" x2="540.0" y2="400" stroke="white" />
|
||||
<line x1="0" y1="440" x2="540.0" y2="440" stroke="white" />
|
||||
<line x1="0" y1="480" x2="540.0" y2="480" stroke="white" />
|
||||
<line x1="0" y1="520" x2="540.0" y2="520" stroke="white" />
|
||||
<?xml version="1.0" ?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 560" preserveAspectRatio="meet" width="100%" height="560">
|
||||
<rect x="0" y="0" width="720" height="40" fill="black"/>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="6" y="20.0">Operation \ Size</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="405.0" y="20.0">CPU</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="615.0" y="20.0">GPU</text>
|
||||
<rect x="0" y="40" width="300" height="520" fill="#fbbc04"/>
|
||||
<rect x="300" y="40" width="420" height="520" fill="#f3f3f3"/>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="60.0">Negation (-)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="405.0" y="60.0">106 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="615.0" y="60.0">25.2 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="100.0">Add / Sub (+,-)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="405.0" y="100.0">105 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="615.0" y="100.0">25.2 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="140.0">Mul (x)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="405.0" y="140.0">401 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="615.0" y="140.0">237 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="180.0">Equal / Not Equal (eq, ne)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="405.0" y="180.0">81.2 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="615.0" y="180.0">17.7 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="220.0">Comparisons (ge, gt, le, lt)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="405.0" y="220.0">102 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="615.0" y="220.0">26.2 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="260.0">Max / Min (max, min)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="405.0" y="260.0">145 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="615.0" y="260.0">43.6 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="300.0">Bitwise operations (&, |, ^)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="405.0" y="300.0">20.7 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="615.0" y="300.0">5.97 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="340.0">Div / Rem (/, %)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="405.0" y="340.0">8.22 s</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="615.0" y="340.0">2.05 s</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="380.0">Left / Right Shifts (<<, >>)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="405.0" y="380.0">134 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="615.0" y="380.0">86.7 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="420.0">Left / Right Rotations (left_rotate, right_rotate)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="405.0" y="420.0">133 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="615.0" y="420.0">86.8 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="460.0">Leading / Trailing zeros/ones</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="405.0" y="460.0">247 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="615.0" y="460.0">62.3 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="500.0">Log2</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="405.0" y="500.0">267 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="615.0" y="500.0">73.9 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="540.0">Select</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="405.0" y="540.0">32.6 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="615.0" y="540.0">17.5 ms</text>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="0" x2="720" y2="0"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="40" x2="720" y2="40"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="80" x2="720" y2="80"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="120" x2="720" y2="120"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="160" x2="720" y2="160"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="200" x2="720" y2="200"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="240" x2="720" y2="240"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="280" x2="720" y2="280"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="320" x2="720" y2="320"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="360" x2="720" y2="360"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="400" x2="720" y2="400"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="440" x2="720" y2="440"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="480" x2="720" y2="480"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="520" x2="720" y2="520"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="0" x2="0" y2="560"/>
|
||||
<line stroke="white" stroke-width="2" x1="300.0" y1="0" x2="300.0" y2="560"/>
|
||||
<line stroke="white" stroke-width="2" x1="510.0" y1="0" x2="510.0" y2="560"/>
|
||||
<line stroke="white" stroke-width="2" x1="720.0" y1="0" x2="720.0" y2="560"/>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 7.2 KiB After Width: | Height: | Size: 8.3 KiB |
@@ -1,247 +1,116 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1268.0" height="560" viewBox="0 0 1268.0 560">
|
||||
<!-- Header Row -->
|
||||
<rect x="0" y="0" width="1268.0" height="40" fill="black" />
|
||||
<text x="10" y="24.0" fill="white" font-family="Arial" font-size="14">Operation \ Size</text>
|
||||
<text x="383.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint4</text>
|
||||
<text x="515.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint8</text>
|
||||
<text x="643.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint16</text>
|
||||
<text x="775.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint32</text>
|
||||
<text x="907.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint64</text>
|
||||
<text x="1035.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint128</text>
|
||||
<text x="1167.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint256</text>
|
||||
|
||||
<!-- Data Rows -->
|
||||
<rect x="0" y="40" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="64.0" fill="black" font-family="Arial" font-size="14">Negation (`-`)</text>
|
||||
<rect x="344.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="64.0" fill="black" font-family="Arial" font-size="14">33.4 ms</text>
|
||||
<rect x="476.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="64.0" fill="black" font-family="Arial" font-size="14">48.9 ms</text>
|
||||
<rect x="608.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="64.0" fill="black" font-family="Arial" font-size="14">57.4 ms</text>
|
||||
<rect x="740.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="64.0" fill="black" font-family="Arial" font-size="14">79.7 ms</text>
|
||||
<rect x="872.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="919.0" y="64.0" fill="black" font-family="Arial" font-size="14">105 ms</text>
|
||||
<rect x="1004.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="64.0" fill="black" font-family="Arial" font-size="14">159 ms</text>
|
||||
<rect x="1136.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="64.0" fill="black" font-family="Arial" font-size="14">183 ms</text>
|
||||
<rect x="0" y="80" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="104.0" fill="black" font-family="Arial" font-size="14">Add / Sub (`+`,`-`)</text>
|
||||
<rect x="344.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="104.0" fill="black" font-family="Arial" font-size="14">33.5 ms</text>
|
||||
<rect x="476.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="104.0" fill="black" font-family="Arial" font-size="14">53.5 ms</text>
|
||||
<rect x="608.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="104.0" fill="black" font-family="Arial" font-size="14">59.8 ms</text>
|
||||
<rect x="740.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="104.0" fill="black" font-family="Arial" font-size="14">82.1 ms</text>
|
||||
<rect x="872.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="919.0" y="104.0" fill="black" font-family="Arial" font-size="14">109 ms</text>
|
||||
<rect x="1004.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="104.0" fill="black" font-family="Arial" font-size="14">165 ms</text>
|
||||
<rect x="1136.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="104.0" fill="black" font-family="Arial" font-size="14">187 ms</text>
|
||||
<rect x="0" y="120" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="144.0" fill="black" font-family="Arial" font-size="14">Mul (`x`)</text>
|
||||
<rect x="344.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="144.0" fill="black" font-family="Arial" font-size="14">39.7 ms</text>
|
||||
<rect x="476.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="144.0" fill="black" font-family="Arial" font-size="14">97.5 ms</text>
|
||||
<rect x="608.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="655.0" y="144.0" fill="black" font-family="Arial" font-size="14">141 ms</text>
|
||||
<rect x="740.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="787.0" y="144.0" fill="black" font-family="Arial" font-size="14">213 ms</text>
|
||||
<rect x="872.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="919.0" y="144.0" fill="black" font-family="Arial" font-size="14">400 ms</text>
|
||||
<rect x="1004.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="144.0" fill="black" font-family="Arial" font-size="14">1.14 s</text>
|
||||
<rect x="1136.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="144.0" fill="black" font-family="Arial" font-size="14">3.79 s</text>
|
||||
<rect x="0" y="160" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="184.0" fill="black" font-family="Arial" font-size="14">Equal / Not Equal (`eq`, `ne`)</text>
|
||||
<rect x="344.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="184.0" fill="black" font-family="Arial" font-size="14">34.3 ms</text>
|
||||
<rect x="476.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="184.0" fill="black" font-family="Arial" font-size="14">36.1 ms</text>
|
||||
<rect x="608.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="184.0" fill="black" font-family="Arial" font-size="14">56.3 ms</text>
|
||||
<rect x="740.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="184.0" fill="black" font-family="Arial" font-size="14">56.9 ms</text>
|
||||
<rect x="872.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="184.0" fill="black" font-family="Arial" font-size="14">81.4 ms</text>
|
||||
<rect x="1004.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="184.0" fill="black" font-family="Arial" font-size="14">82.0 ms</text>
|
||||
<rect x="1136.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="184.0" fill="black" font-family="Arial" font-size="14">104 ms</text>
|
||||
<rect x="0" y="200" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="224.0" fill="black" font-family="Arial" font-size="14">Comparisons (`ge`, `gt`, `le`, `lt`)</text>
|
||||
<rect x="344.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="224.0" fill="black" font-family="Arial" font-size="14">37.4 ms</text>
|
||||
<rect x="476.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="224.0" fill="black" font-family="Arial" font-size="14">37.1 ms</text>
|
||||
<rect x="608.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="224.0" fill="black" font-family="Arial" font-size="14">54.8 ms</text>
|
||||
<rect x="740.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="224.0" fill="black" font-family="Arial" font-size="14">76.7 ms</text>
|
||||
<rect x="872.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="224.0" fill="black" font-family="Arial" font-size="14">99.0 ms</text>
|
||||
<rect x="1004.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="224.0" fill="black" font-family="Arial" font-size="14">145 ms</text>
|
||||
<rect x="1136.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="224.0" fill="black" font-family="Arial" font-size="14">175 ms</text>
|
||||
<rect x="0" y="240" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="264.0" fill="black" font-family="Arial" font-size="14">Max / Min (`max`,`min`)</text>
|
||||
<rect x="344.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="264.0" fill="black" font-family="Arial" font-size="14">75.6 ms</text>
|
||||
<rect x="476.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="264.0" fill="black" font-family="Arial" font-size="14">76.9 ms</text>
|
||||
<rect x="608.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="264.0" fill="black" font-family="Arial" font-size="14">97.6 ms</text>
|
||||
<rect x="740.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="787.0" y="264.0" fill="black" font-family="Arial" font-size="14">121 ms</text>
|
||||
<rect x="872.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="919.0" y="264.0" fill="black" font-family="Arial" font-size="14">148 ms</text>
|
||||
<rect x="1004.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="264.0" fill="black" font-family="Arial" font-size="14">194 ms</text>
|
||||
<rect x="1136.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="264.0" fill="black" font-family="Arial" font-size="14">244 ms</text>
|
||||
<rect x="0" y="280" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="304.0" fill="black" font-family="Arial" font-size="14">Bitwise operations (`&`, `|`, `^`)</text>
|
||||
<rect x="344.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="304.0" fill="black" font-family="Arial" font-size="14">20.2 ms</text>
|
||||
<rect x="476.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="304.0" fill="black" font-family="Arial" font-size="14">18.7 ms</text>
|
||||
<rect x="608.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="304.0" fill="black" font-family="Arial" font-size="14">19.7 ms</text>
|
||||
<rect x="740.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="304.0" fill="black" font-family="Arial" font-size="14">20.6 ms</text>
|
||||
<rect x="872.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="304.0" fill="black" font-family="Arial" font-size="14">22.9 ms</text>
|
||||
<rect x="1004.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="304.0" fill="black" font-family="Arial" font-size="14">23.8 ms</text>
|
||||
<rect x="1136.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="304.0" fill="black" font-family="Arial" font-size="14">26.3 ms</text>
|
||||
<rect x="0" y="320" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="344.0" fill="black" font-family="Arial" font-size="14">Div / Rem (`/`, `%`)</text>
|
||||
<rect x="344.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="391.0" y="344.0" fill="black" font-family="Arial" font-size="14">295 ms</text>
|
||||
<rect x="476.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="523.0" y="344.0" fill="black" font-family="Arial" font-size="14">644 ms</text>
|
||||
<rect x="608.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="655.0" y="344.0" fill="black" font-family="Arial" font-size="14">1.49 s</text>
|
||||
<rect x="740.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="787.0" y="344.0" fill="black" font-family="Arial" font-size="14">3.44 s</text>
|
||||
<rect x="872.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="919.0" y="344.0" fill="black" font-family="Arial" font-size="14">8.49 s</text>
|
||||
<rect x="1004.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="344.0" fill="black" font-family="Arial" font-size="14">20.9 s</text>
|
||||
<rect x="1136.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="344.0" fill="black" font-family="Arial" font-size="14">54.6 s</text>
|
||||
<rect x="0" y="360" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="384.0" fill="black" font-family="Arial" font-size="14">Left / Right Shifts (`<<`, `>>`)</text>
|
||||
<rect x="344.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="384.0" fill="black" font-family="Arial" font-size="14">34.7 ms</text>
|
||||
<rect x="476.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="384.0" fill="black" font-family="Arial" font-size="14">58.8 ms</text>
|
||||
<rect x="608.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="384.0" fill="black" font-family="Arial" font-size="14">81.9 ms</text>
|
||||
<rect x="740.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="787.0" y="384.0" fill="black" font-family="Arial" font-size="14">107 ms</text>
|
||||
<rect x="872.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="919.0" y="384.0" fill="black" font-family="Arial" font-size="14">142 ms</text>
|
||||
<rect x="1004.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="384.0" fill="black" font-family="Arial" font-size="14">178 ms</text>
|
||||
<rect x="1136.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="384.0" fill="black" font-family="Arial" font-size="14">248 ms</text>
|
||||
<rect x="0" y="400" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="424.0" fill="black" font-family="Arial" font-size="14">Left / Right Rotations (`left_rotate`, `right_rotate`)</text>
|
||||
<rect x="344.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="424.0" fill="black" font-family="Arial" font-size="14">39.7 ms</text>
|
||||
<rect x="476.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="424.0" fill="black" font-family="Arial" font-size="14">59.7 ms</text>
|
||||
<rect x="608.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="424.0" fill="black" font-family="Arial" font-size="14">81.4 ms</text>
|
||||
<rect x="740.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="787.0" y="424.0" fill="black" font-family="Arial" font-size="14">107 ms</text>
|
||||
<rect x="872.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="919.0" y="424.0" fill="black" font-family="Arial" font-size="14">142 ms</text>
|
||||
<rect x="1004.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="424.0" fill="black" font-family="Arial" font-size="14">186 ms</text>
|
||||
<rect x="1136.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="424.0" fill="black" font-family="Arial" font-size="14">249 ms</text>
|
||||
<rect x="0" y="440" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="464.0" fill="black" font-family="Arial" font-size="14">Leading / Trailing zeros/ones</text>
|
||||
<rect x="344.0" y="440" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="464.0" fill="black" font-family="Arial" font-size="14">77.1 ms</text>
|
||||
<rect x="476.0" y="440" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="464.0" fill="black" font-family="Arial" font-size="14">95.7 ms</text>
|
||||
<rect x="608.0" y="440" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="655.0" y="464.0" fill="black" font-family="Arial" font-size="14">159 ms</text>
|
||||
<rect x="740.0" y="440" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="787.0" y="464.0" fill="black" font-family="Arial" font-size="14">182 ms</text>
|
||||
<rect x="872.0" y="440" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="919.0" y="464.0" fill="black" font-family="Arial" font-size="14">255 ms</text>
|
||||
<rect x="1004.0" y="440" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="464.0" fill="black" font-family="Arial" font-size="14">304 ms</text>
|
||||
<rect x="1136.0" y="440" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="464.0" fill="black" font-family="Arial" font-size="14">345 ms</text>
|
||||
<rect x="0" y="480" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="504.0" fill="black" font-family="Arial" font-size="14">Log2</text>
|
||||
<rect x="344.0" y="480" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="504.0" fill="black" font-family="Arial" font-size="14">90.4 ms</text>
|
||||
<rect x="476.0" y="480" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="523.0" y="504.0" fill="black" font-family="Arial" font-size="14">114 ms</text>
|
||||
<rect x="608.0" y="480" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="655.0" y="504.0" fill="black" font-family="Arial" font-size="14">173 ms</text>
|
||||
<rect x="740.0" y="480" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="787.0" y="504.0" fill="black" font-family="Arial" font-size="14">199 ms</text>
|
||||
<rect x="872.0" y="480" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="919.0" y="504.0" fill="black" font-family="Arial" font-size="14">280 ms</text>
|
||||
<rect x="1004.0" y="480" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="504.0" fill="black" font-family="Arial" font-size="14">327 ms</text>
|
||||
<rect x="1136.0" y="480" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="504.0" fill="black" font-family="Arial" font-size="14">369 ms</text>
|
||||
<rect x="0" y="520" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="544.0" fill="black" font-family="Arial" font-size="14">Select</text>
|
||||
<rect x="344.0" y="520" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="544.0" fill="black" font-family="Arial" font-size="14">27.8 ms</text>
|
||||
<rect x="476.0" y="520" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="544.0" fill="black" font-family="Arial" font-size="14">29.7 ms</text>
|
||||
<rect x="608.0" y="520" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="544.0" fill="black" font-family="Arial" font-size="14">32.0 ms</text>
|
||||
<rect x="740.0" y="520" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="544.0" fill="black" font-family="Arial" font-size="14">33.0 ms</text>
|
||||
<rect x="872.0" y="520" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="544.0" fill="black" font-family="Arial" font-size="14">36.1 ms</text>
|
||||
<rect x="1004.0" y="520" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="544.0" fill="black" font-family="Arial" font-size="14">37.2 ms</text>
|
||||
<rect x="1136.0" y="520" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="544.0" fill="black" font-family="Arial" font-size="14">49.6 ms</text>
|
||||
|
||||
<!-- Borders -->
|
||||
<line x1="0" y1="0" x2="0" y2="560" stroke="white" />
|
||||
<line x1="344.0" y1="0" x2="344.0" y2="560" stroke="white" />
|
||||
<line x1="476.0" y1="0" x2="476.0" y2="560" stroke="white" />
|
||||
<line x1="608.0" y1="0" x2="608.0" y2="560" stroke="white" />
|
||||
<line x1="740.0" y1="0" x2="740.0" y2="560" stroke="white" />
|
||||
<line x1="872.0" y1="0" x2="872.0" y2="560" stroke="white" />
|
||||
<line x1="1004.0" y1="0" x2="1004.0" y2="560" stroke="white" />
|
||||
<line x1="1136.0" y1="0" x2="1136.0" y2="560" stroke="white" />
|
||||
<line x1="0" y1="0" x2="1268.0" y2="0" stroke="white" />
|
||||
<line x1="0" y1="40" x2="1268.0" y2="40" stroke="white" />
|
||||
<line x1="0" y1="80" x2="1268.0" y2="80" stroke="white" />
|
||||
<line x1="0" y1="120" x2="1268.0" y2="120" stroke="white" />
|
||||
<line x1="0" y1="160" x2="1268.0" y2="160" stroke="white" />
|
||||
<line x1="0" y1="200" x2="1268.0" y2="200" stroke="white" />
|
||||
<line x1="0" y1="240" x2="1268.0" y2="240" stroke="white" />
|
||||
<line x1="0" y1="280" x2="1268.0" y2="280" stroke="white" />
|
||||
<line x1="0" y1="320" x2="1268.0" y2="320" stroke="white" />
|
||||
<line x1="0" y1="360" x2="1268.0" y2="360" stroke="white" />
|
||||
<line x1="0" y1="400" x2="1268.0" y2="400" stroke="white" />
|
||||
<line x1="0" y1="440" x2="1268.0" y2="440" stroke="white" />
|
||||
<line x1="0" y1="480" x2="1268.0" y2="480" stroke="white" />
|
||||
<line x1="0" y1="520" x2="1268.0" y2="520" stroke="white" />
|
||||
<line x1="0" y1="560" x2="1268.0" y2="560" stroke="white" />
|
||||
<?xml version="1.0" ?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 560" preserveAspectRatio="meet" width="100%" height="560">
|
||||
<rect x="0" y="0" width="720" height="40" fill="black"/>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="6" y="20.0">Operation \ Size</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="342.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="342.0" y="29.666666666666668">8</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="426.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="426.0" y="29.666666666666668">16</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="510.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="510.0" y="29.666666666666668">32</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="594.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="594.0" y="29.666666666666668">64</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="678.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="678.0" y="29.666666666666668">128</text>
|
||||
<rect x="0" y="40" width="300" height="520" fill="#fbbc04"/>
|
||||
<rect x="300" y="40" width="420" height="520" fill="#f3f3f3"/>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="60.0">Negation (-)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="60.0">48.9 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="60.0">57.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="60.0">79.7 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="60.0">105 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="60.0">159 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="100.0">Add / Sub (+,-)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="100.0">53.5 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="100.0">59.8 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="100.0">82.1 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="100.0">109 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="100.0">165 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="140.0">Mul (x)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="140.0">97.5 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="140.0">141 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="140.0">213 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="140.0">400 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="140.0">1.14 s</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="180.0">Equal / Not Equal (eq, ne)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="180.0">36.1 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="180.0">56.3 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="180.0">56.9 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="180.0">81.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="180.0">82.0 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="220.0">Comparisons (ge, gt, le, lt)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="220.0">37.1 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="220.0">54.8 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="220.0">76.7 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="220.0">99.0 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="220.0">145 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="260.0">Max / Min (max, min)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="260.0">76.9 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="260.0">97.6 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="260.0">121 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="260.0">148 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="260.0">194 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="300.0">Bitwise operations (&, |, ^)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="300.0">18.7 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="300.0">19.7 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="300.0">20.6 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="300.0">22.9 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="300.0">23.8 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="340.0">Div / Rem (/, %)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="340.0">644 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="340.0">1.49 s</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="340.0">3.44 s</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="340.0">8.49 s</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="340.0">20.9 s</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="380.0">Left / Right Shifts (<<, >>)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="380.0">58.8 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="380.0">81.9 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="380.0">107 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="380.0">142 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="380.0">178 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="420.0">Left / Right Rotations (left_rotate, right_rotate)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="420.0">59.7 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="420.0">81.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="420.0">107 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="420.0">142 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="420.0">186 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="460.0">Leading / Trailing zeros/ones</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="460.0">95.7 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="460.0">159 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="460.0">182 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="460.0">255 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="460.0">304 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="500.0">Log2</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="500.0">114 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="500.0">173 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="500.0">199 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="500.0">280 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="500.0">327 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="540.0">Select</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="540.0">29.7 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="540.0">32.0 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="540.0">33.0 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="540.0">36.1 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="540.0">37.2 ms</text>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="0" x2="720" y2="0"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="40" x2="720" y2="40"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="80" x2="720" y2="80"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="120" x2="720" y2="120"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="160" x2="720" y2="160"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="200" x2="720" y2="200"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="240" x2="720" y2="240"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="280" x2="720" y2="280"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="320" x2="720" y2="320"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="360" x2="720" y2="360"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="400" x2="720" y2="400"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="440" x2="720" y2="440"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="480" x2="720" y2="480"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="520" x2="720" y2="520"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="0" x2="0" y2="560"/>
|
||||
<line stroke="white" stroke-width="2" x1="300.0" y1="0" x2="300.0" y2="560"/>
|
||||
<line stroke="white" stroke-width="2" x1="384.0" y1="0" x2="384.0" y2="560"/>
|
||||
<line stroke="white" stroke-width="2" x1="468.0" y1="0" x2="468.0" y2="560"/>
|
||||
<line stroke="white" stroke-width="2" x1="552.0" y1="0" x2="552.0" y2="560"/>
|
||||
<line stroke="white" stroke-width="2" x1="636.0" y1="0" x2="636.0" y2="560"/>
|
||||
<line stroke="white" stroke-width="2" x1="720.0" y1="0" x2="720.0" y2="560"/>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 16 KiB |
@@ -1,196 +1,95 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1268.0" height="440" viewBox="0 0 1268.0 440">
|
||||
<!-- Header Row -->
|
||||
<rect x="0" y="0" width="1268.0" height="40" fill="black" />
|
||||
<text x="10" y="24.0" fill="white" font-family="Arial" font-size="14">Operation \ Size</text>
|
||||
<text x="383.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint4</text>
|
||||
<text x="515.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint8</text>
|
||||
<text x="643.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint16</text>
|
||||
<text x="775.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint32</text>
|
||||
<text x="907.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint64</text>
|
||||
<text x="1035.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint128</text>
|
||||
<text x="1167.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint256</text>
|
||||
|
||||
<!-- Data Rows -->
|
||||
<rect x="0" y="40" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="64.0" fill="black" font-family="Arial" font-size="14">Add / Sub (`+`,`-`)</text>
|
||||
<rect x="344.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="64.0" fill="black" font-family="Arial" font-size="14">33.5 ms</text>
|
||||
<rect x="476.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="64.0" fill="black" font-family="Arial" font-size="14">52.5 ms</text>
|
||||
<rect x="608.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="64.0" fill="black" font-family="Arial" font-size="14">60.6 ms</text>
|
||||
<rect x="740.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="64.0" fill="black" font-family="Arial" font-size="14">64.2 ms</text>
|
||||
<rect x="872.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="64.0" fill="black" font-family="Arial" font-size="14">89.3 ms</text>
|
||||
<rect x="1004.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="64.0" fill="black" font-family="Arial" font-size="14">111 ms</text>
|
||||
<rect x="1136.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="64.0" fill="black" font-family="Arial" font-size="14">181 ms</text>
|
||||
<rect x="0" y="80" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="104.0" fill="black" font-family="Arial" font-size="14">Mul (`x`)</text>
|
||||
<rect x="344.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="104.0" fill="black" font-family="Arial" font-size="14">36.2 ms</text>
|
||||
<rect x="476.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="104.0" fill="black" font-family="Arial" font-size="14">74.8 ms</text>
|
||||
<rect x="608.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="655.0" y="104.0" fill="black" font-family="Arial" font-size="14">125 ms</text>
|
||||
<rect x="740.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="787.0" y="104.0" fill="black" font-family="Arial" font-size="14">175 ms</text>
|
||||
<rect x="872.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="919.0" y="104.0" fill="black" font-family="Arial" font-size="14">242 ms</text>
|
||||
<rect x="1004.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="104.0" fill="black" font-family="Arial" font-size="14">453 ms</text>
|
||||
<rect x="1136.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="104.0" fill="black" font-family="Arial" font-size="14">1.11 s</text>
|
||||
<rect x="0" y="120" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="144.0" fill="black" font-family="Arial" font-size="14">Equal / Not Equal (`eq`, `ne`)</text>
|
||||
<rect x="344.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="144.0" fill="black" font-family="Arial" font-size="14">18.8 ms</text>
|
||||
<rect x="476.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="144.0" fill="black" font-family="Arial" font-size="14">32.2 ms</text>
|
||||
<rect x="608.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="144.0" fill="black" font-family="Arial" font-size="14">35.2 ms</text>
|
||||
<rect x="740.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="144.0" fill="black" font-family="Arial" font-size="14">55.2 ms</text>
|
||||
<rect x="872.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="144.0" fill="black" font-family="Arial" font-size="14">58.2 ms</text>
|
||||
<rect x="1004.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="144.0" fill="black" font-family="Arial" font-size="14">79.0 ms</text>
|
||||
<rect x="1136.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="144.0" fill="black" font-family="Arial" font-size="14">81.2 ms</text>
|
||||
<rect x="0" y="160" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="184.0" fill="black" font-family="Arial" font-size="14">Comparisons (`ge`, `gt`, `le`, `lt`)</text>
|
||||
<rect x="344.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="184.0" fill="black" font-family="Arial" font-size="14">15.1 ms</text>
|
||||
<rect x="476.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="184.0" fill="black" font-family="Arial" font-size="14">37.2 ms</text>
|
||||
<rect x="608.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="184.0" fill="black" font-family="Arial" font-size="14">36.6 ms</text>
|
||||
<rect x="740.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="184.0" fill="black" font-family="Arial" font-size="14">56.0 ms</text>
|
||||
<rect x="872.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="184.0" fill="black" font-family="Arial" font-size="14">78.9 ms</text>
|
||||
<rect x="1004.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="184.0" fill="black" font-family="Arial" font-size="14">101 ms</text>
|
||||
<rect x="1136.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="184.0" fill="black" font-family="Arial" font-size="14">145 ms</text>
|
||||
<rect x="0" y="200" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="224.0" fill="black" font-family="Arial" font-size="14">Max / Min (`max`,`min`)</text>
|
||||
<rect x="344.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="224.0" fill="black" font-family="Arial" font-size="14">32.9 ms</text>
|
||||
<rect x="476.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="224.0" fill="black" font-family="Arial" font-size="14">52.6 ms</text>
|
||||
<rect x="608.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="224.0" fill="black" font-family="Arial" font-size="14">57.0 ms</text>
|
||||
<rect x="740.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="224.0" fill="black" font-family="Arial" font-size="14">78.1 ms</text>
|
||||
<rect x="872.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="919.0" y="224.0" fill="black" font-family="Arial" font-size="14">103 ms</text>
|
||||
<rect x="1004.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="224.0" fill="black" font-family="Arial" font-size="14">123 ms</text>
|
||||
<rect x="1136.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="224.0" fill="black" font-family="Arial" font-size="14">171 ms</text>
|
||||
<rect x="0" y="240" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="264.0" fill="black" font-family="Arial" font-size="14">Bitwise operations (`&`, `|`, `^`)</text>
|
||||
<rect x="344.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="264.0" fill="black" font-family="Arial" font-size="14">18.0 ms</text>
|
||||
<rect x="476.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="264.0" fill="black" font-family="Arial" font-size="14">18.9 ms</text>
|
||||
<rect x="608.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="264.0" fill="black" font-family="Arial" font-size="14">19.6 ms</text>
|
||||
<rect x="740.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="264.0" fill="black" font-family="Arial" font-size="14">21.4 ms</text>
|
||||
<rect x="872.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="264.0" fill="black" font-family="Arial" font-size="14">23.1 ms</text>
|
||||
<rect x="1004.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="264.0" fill="black" font-family="Arial" font-size="14">24.1 ms</text>
|
||||
<rect x="1136.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="264.0" fill="black" font-family="Arial" font-size="14">26.7 ms</text>
|
||||
<rect x="0" y="280" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="304.0" fill="black" font-family="Arial" font-size="14">Div (`/`)</text>
|
||||
<rect x="344.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="304.0" fill="black" font-family="Arial" font-size="14">81.1 ms</text>
|
||||
<rect x="476.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="523.0" y="304.0" fill="black" font-family="Arial" font-size="14">139 ms</text>
|
||||
<rect x="608.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="655.0" y="304.0" fill="black" font-family="Arial" font-size="14">202 ms</text>
|
||||
<rect x="740.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="787.0" y="304.0" fill="black" font-family="Arial" font-size="14">280 ms</text>
|
||||
<rect x="872.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="919.0" y="304.0" fill="black" font-family="Arial" font-size="14">456 ms</text>
|
||||
<rect x="1004.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="304.0" fill="black" font-family="Arial" font-size="14">912 ms</text>
|
||||
<rect x="1136.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="304.0" fill="black" font-family="Arial" font-size="14">2.33 s</text>
|
||||
<rect x="0" y="320" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="344.0" fill="black" font-family="Arial" font-size="14">Rem (`%`)</text>
|
||||
<rect x="344.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="391.0" y="344.0" fill="black" font-family="Arial" font-size="14">154 ms</text>
|
||||
<rect x="476.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="523.0" y="344.0" fill="black" font-family="Arial" font-size="14">275 ms</text>
|
||||
<rect x="608.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="655.0" y="344.0" fill="black" font-family="Arial" font-size="14">366 ms</text>
|
||||
<rect x="740.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="787.0" y="344.0" fill="black" font-family="Arial" font-size="14">536 ms</text>
|
||||
<rect x="872.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="919.0" y="344.0" fill="black" font-family="Arial" font-size="14">778 ms</text>
|
||||
<rect x="1004.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="344.0" fill="black" font-family="Arial" font-size="14">1.37 s</text>
|
||||
<rect x="1136.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="344.0" fill="black" font-family="Arial" font-size="14">3.13 s</text>
|
||||
<rect x="0" y="360" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="384.0" fill="black" font-family="Arial" font-size="14">Left / Right Shifts (`<<`, `>>`)</text>
|
||||
<rect x="344.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="384.0" fill="black" font-family="Arial" font-size="14">22.3 ms</text>
|
||||
<rect x="476.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="384.0" fill="black" font-family="Arial" font-size="14">20.0 ms</text>
|
||||
<rect x="608.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="384.0" fill="black" font-family="Arial" font-size="14">20.3 ms</text>
|
||||
<rect x="740.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="384.0" fill="black" font-family="Arial" font-size="14">21.2 ms</text>
|
||||
<rect x="872.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="384.0" fill="black" font-family="Arial" font-size="14">23.2 ms</text>
|
||||
<rect x="1004.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="384.0" fill="black" font-family="Arial" font-size="14">24.2 ms</text>
|
||||
<rect x="1136.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="384.0" fill="black" font-family="Arial" font-size="14">26.5 ms</text>
|
||||
<rect x="0" y="400" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="424.0" fill="black" font-family="Arial" font-size="14">Left / Right Rotations (`left_rotate`, `right_rotate`)</text>
|
||||
<rect x="344.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="424.0" fill="black" font-family="Arial" font-size="14">20.2 ms</text>
|
||||
<rect x="476.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="424.0" fill="black" font-family="Arial" font-size="14">19.5 ms</text>
|
||||
<rect x="608.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="424.0" fill="black" font-family="Arial" font-size="14">20.6 ms</text>
|
||||
<rect x="740.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="424.0" fill="black" font-family="Arial" font-size="14">21.1 ms</text>
|
||||
<rect x="872.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="424.0" fill="black" font-family="Arial" font-size="14">23.6 ms</text>
|
||||
<rect x="1004.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="424.0" fill="black" font-family="Arial" font-size="14">24.1 ms</text>
|
||||
<rect x="1136.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="424.0" fill="black" font-family="Arial" font-size="14">26.2 ms</text>
|
||||
|
||||
<!-- Borders -->
|
||||
<line x1="0" y1="0" x2="0" y2="440" stroke="white" />
|
||||
<line x1="344.0" y1="0" x2="344.0" y2="440" stroke="white" />
|
||||
<line x1="476.0" y1="0" x2="476.0" y2="440" stroke="white" />
|
||||
<line x1="608.0" y1="0" x2="608.0" y2="440" stroke="white" />
|
||||
<line x1="740.0" y1="0" x2="740.0" y2="440" stroke="white" />
|
||||
<line x1="872.0" y1="0" x2="872.0" y2="440" stroke="white" />
|
||||
<line x1="1004.0" y1="0" x2="1004.0" y2="440" stroke="white" />
|
||||
<line x1="1136.0" y1="0" x2="1136.0" y2="440" stroke="white" />
|
||||
<line x1="0" y1="0" x2="1268.0" y2="0" stroke="white" />
|
||||
<line x1="0" y1="40" x2="1268.0" y2="40" stroke="white" />
|
||||
<line x1="0" y1="80" x2="1268.0" y2="80" stroke="white" />
|
||||
<line x1="0" y1="120" x2="1268.0" y2="120" stroke="white" />
|
||||
<line x1="0" y1="160" x2="1268.0" y2="160" stroke="white" />
|
||||
<line x1="0" y1="200" x2="1268.0" y2="200" stroke="white" />
|
||||
<line x1="0" y1="240" x2="1268.0" y2="240" stroke="white" />
|
||||
<line x1="0" y1="280" x2="1268.0" y2="280" stroke="white" />
|
||||
<line x1="0" y1="320" x2="1268.0" y2="320" stroke="white" />
|
||||
<line x1="0" y1="360" x2="1268.0" y2="360" stroke="white" />
|
||||
<line x1="0" y1="400" x2="1268.0" y2="400" stroke="white" />
|
||||
<line x1="0" y1="440" x2="1268.0" y2="440" stroke="white" />
|
||||
<?xml version="1.0" ?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 440" preserveAspectRatio="meet" width="100%" height="440">
|
||||
<rect x="0" y="0" width="720" height="40" fill="black"/>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="6" y="20.0">Operation \ Size</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="342.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="342.0" y="29.666666666666668">8</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="426.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="426.0" y="29.666666666666668">16</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="510.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="510.0" y="29.666666666666668">32</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="594.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="594.0" y="29.666666666666668">64</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="678.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="678.0" y="29.666666666666668">128</text>
|
||||
<rect x="0" y="40" width="300" height="400" fill="#fbbc04"/>
|
||||
<rect x="300" y="40" width="420" height="400" fill="#f3f3f3"/>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="60.0">Add / Sub (+,-)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="60.0">52.5 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="60.0">60.6 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="60.0">64.2 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="60.0">89.3 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="60.0">111 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="100.0">Mul (x)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="100.0">74.8 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="100.0">125 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="100.0">175 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="100.0">242 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="100.0">453 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="140.0">Equal / Not Equal (eq, ne)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="140.0">32.2 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="140.0">35.2 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="140.0">55.2 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="140.0">58.2 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="140.0">79.0 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="180.0">Comparisons (ge, gt, le, lt)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="180.0">37.2 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="180.0">36.6 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="180.0">56.0 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="180.0">78.9 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="180.0">101 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="220.0">Max / Min (max, min)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="220.0">52.6 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="220.0">57.0 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="220.0">78.1 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="220.0">103 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="220.0">123 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="260.0">Bitwise operations (&, |, ^)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="260.0">18.9 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="260.0">19.6 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="260.0">21.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="260.0">23.1 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="260.0">24.1 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="300.0">Div (/)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="300.0">139 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="300.0">202 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="300.0">280 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="300.0">456 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="300.0">912 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="340.0">Rem (%)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="340.0">275 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="340.0">366 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="340.0">536 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="340.0">778 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="340.0">1.37 s</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="380.0">Left / Right Shifts (<<, >>)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="380.0">20.0 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="380.0">20.3 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="380.0">21.2 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="380.0">23.2 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="380.0">24.2 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="420.0">Left / Right Rotations (left_rotate, right_rotate)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="420.0">19.5 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="420.0">20.6 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="420.0">21.1 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="420.0">23.6 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="420.0">24.1 ms</text>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="0" x2="720" y2="0"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="40" x2="720" y2="40"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="80" x2="720" y2="80"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="120" x2="720" y2="120"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="160" x2="720" y2="160"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="200" x2="720" y2="200"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="240" x2="720" y2="240"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="280" x2="720" y2="280"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="320" x2="720" y2="320"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="360" x2="720" y2="360"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="400" x2="720" y2="400"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="0" x2="0" y2="440"/>
|
||||
<line stroke="white" stroke-width="2" x1="300.0" y1="0" x2="300.0" y2="440"/>
|
||||
<line stroke="white" stroke-width="2" x1="384.0" y1="0" x2="384.0" y2="440"/>
|
||||
<line stroke="white" stroke-width="2" x1="468.0" y1="0" x2="468.0" y2="440"/>
|
||||
<line stroke="white" stroke-width="2" x1="552.0" y1="0" x2="552.0" y2="440"/>
|
||||
<line stroke="white" stroke-width="2" x1="636.0" y1="0" x2="636.0" y2="440"/>
|
||||
<line stroke="white" stroke-width="2" x1="720.0" y1="0" x2="720.0" y2="440"/>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 13 KiB |
@@ -1,247 +1,116 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1268.0" height="560" viewBox="0 0 1268.0 560">
|
||||
<!-- Header Row -->
|
||||
<rect x="0" y="0" width="1268.0" height="40" fill="black" />
|
||||
<text x="10" y="24.0" fill="white" font-family="Arial" font-size="14">Operation \ Size</text>
|
||||
<text x="383.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint4</text>
|
||||
<text x="515.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint8</text>
|
||||
<text x="643.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint16</text>
|
||||
<text x="775.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint32</text>
|
||||
<text x="907.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint64</text>
|
||||
<text x="1035.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint128</text>
|
||||
<text x="1167.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint256</text>
|
||||
|
||||
<!-- Data Rows -->
|
||||
<rect x="0" y="40" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="64.0" fill="black" font-family="Arial" font-size="14">Negation (`-`)</text>
|
||||
<rect x="344.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="64.0" fill="black" font-family="Arial" font-size="14">33.1 ms</text>
|
||||
<rect x="476.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="64.0" fill="black" font-family="Arial" font-size="14">48.7 ms</text>
|
||||
<rect x="608.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="64.0" fill="black" font-family="Arial" font-size="14">57.6 ms</text>
|
||||
<rect x="740.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="64.0" fill="black" font-family="Arial" font-size="14">81.2 ms</text>
|
||||
<rect x="872.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="919.0" y="64.0" fill="black" font-family="Arial" font-size="14">106 ms</text>
|
||||
<rect x="1004.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="64.0" fill="black" font-family="Arial" font-size="14">168 ms</text>
|
||||
<rect x="1136.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="64.0" fill="black" font-family="Arial" font-size="14">189 ms</text>
|
||||
<rect x="0" y="80" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="104.0" fill="black" font-family="Arial" font-size="14">Add / Sub (`+`,`-`)</text>
|
||||
<rect x="344.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="104.0" fill="black" font-family="Arial" font-size="14">38.1 ms</text>
|
||||
<rect x="476.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="104.0" fill="black" font-family="Arial" font-size="14">59.9 ms</text>
|
||||
<rect x="608.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="104.0" fill="black" font-family="Arial" font-size="14">60.2 ms</text>
|
||||
<rect x="740.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="104.0" fill="black" font-family="Arial" font-size="14">82.2 ms</text>
|
||||
<rect x="872.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="919.0" y="104.0" fill="black" font-family="Arial" font-size="14">105 ms</text>
|
||||
<rect x="1004.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="104.0" fill="black" font-family="Arial" font-size="14">168 ms</text>
|
||||
<rect x="1136.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="104.0" fill="black" font-family="Arial" font-size="14">182 ms</text>
|
||||
<rect x="0" y="120" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="144.0" fill="black" font-family="Arial" font-size="14">Mul (`x`)</text>
|
||||
<rect x="344.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="144.0" fill="black" font-family="Arial" font-size="14">40.6 ms</text>
|
||||
<rect x="476.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="523.0" y="144.0" fill="black" font-family="Arial" font-size="14">103 ms</text>
|
||||
<rect x="608.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="655.0" y="144.0" fill="black" font-family="Arial" font-size="14">143 ms</text>
|
||||
<rect x="740.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="787.0" y="144.0" fill="black" font-family="Arial" font-size="14">219 ms</text>
|
||||
<rect x="872.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="919.0" y="144.0" fill="black" font-family="Arial" font-size="14">401 ms</text>
|
||||
<rect x="1004.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="144.0" fill="black" font-family="Arial" font-size="14">1.15 s</text>
|
||||
<rect x="1136.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="144.0" fill="black" font-family="Arial" font-size="14">3.84 s</text>
|
||||
<rect x="0" y="160" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="184.0" fill="black" font-family="Arial" font-size="14">Equal / Not Equal (`eq`, `ne`)</text>
|
||||
<rect x="344.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="184.0" fill="black" font-family="Arial" font-size="14">36.5 ms</text>
|
||||
<rect x="476.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="184.0" fill="black" font-family="Arial" font-size="14">37.1 ms</text>
|
||||
<rect x="608.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="184.0" fill="black" font-family="Arial" font-size="14">58.3 ms</text>
|
||||
<rect x="740.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="184.0" fill="black" font-family="Arial" font-size="14">59.0 ms</text>
|
||||
<rect x="872.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="184.0" fill="black" font-family="Arial" font-size="14">81.2 ms</text>
|
||||
<rect x="1004.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="184.0" fill="black" font-family="Arial" font-size="14">82.3 ms</text>
|
||||
<rect x="1136.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="184.0" fill="black" font-family="Arial" font-size="14">106 ms</text>
|
||||
<rect x="0" y="200" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="224.0" fill="black" font-family="Arial" font-size="14">Comparisons (`ge`, `gt`, `le`, `lt`)</text>
|
||||
<rect x="344.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="224.0" fill="black" font-family="Arial" font-size="14">36.3 ms</text>
|
||||
<rect x="476.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="224.0" fill="black" font-family="Arial" font-size="14">37.4 ms</text>
|
||||
<rect x="608.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="224.0" fill="black" font-family="Arial" font-size="14">57.2 ms</text>
|
||||
<rect x="740.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="224.0" fill="black" font-family="Arial" font-size="14">80.1 ms</text>
|
||||
<rect x="872.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="919.0" y="224.0" fill="black" font-family="Arial" font-size="14">102 ms</text>
|
||||
<rect x="1004.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="224.0" fill="black" font-family="Arial" font-size="14">145 ms</text>
|
||||
<rect x="1136.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="224.0" fill="black" font-family="Arial" font-size="14">175 ms</text>
|
||||
<rect x="0" y="240" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="264.0" fill="black" font-family="Arial" font-size="14">Max / Min (`max`,`min`)</text>
|
||||
<rect x="344.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="264.0" fill="black" font-family="Arial" font-size="14">79.4 ms</text>
|
||||
<rect x="476.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="264.0" fill="black" font-family="Arial" font-size="14">79.8 ms</text>
|
||||
<rect x="608.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="264.0" fill="black" font-family="Arial" font-size="14">99.8 ms</text>
|
||||
<rect x="740.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="787.0" y="264.0" fill="black" font-family="Arial" font-size="14">122 ms</text>
|
||||
<rect x="872.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="919.0" y="264.0" fill="black" font-family="Arial" font-size="14">145 ms</text>
|
||||
<rect x="1004.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="264.0" fill="black" font-family="Arial" font-size="14">192 ms</text>
|
||||
<rect x="1136.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="264.0" fill="black" font-family="Arial" font-size="14">246 ms</text>
|
||||
<rect x="0" y="280" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="304.0" fill="black" font-family="Arial" font-size="14">Bitwise operations (`&`, `|`, `^`)</text>
|
||||
<rect x="344.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="304.0" fill="black" font-family="Arial" font-size="14">19.8 ms</text>
|
||||
<rect x="476.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="304.0" fill="black" font-family="Arial" font-size="14">19.4 ms</text>
|
||||
<rect x="608.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="304.0" fill="black" font-family="Arial" font-size="14">19.6 ms</text>
|
||||
<rect x="740.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="304.0" fill="black" font-family="Arial" font-size="14">20.5 ms</text>
|
||||
<rect x="872.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="304.0" fill="black" font-family="Arial" font-size="14">20.7 ms</text>
|
||||
<rect x="1004.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="304.0" fill="black" font-family="Arial" font-size="14">23.3 ms</text>
|
||||
<rect x="1136.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="304.0" fill="black" font-family="Arial" font-size="14">26.0 ms</text>
|
||||
<rect x="0" y="320" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="344.0" fill="black" font-family="Arial" font-size="14">Div / Rem (`/`, `%`)</text>
|
||||
<rect x="344.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="391.0" y="344.0" fill="black" font-family="Arial" font-size="14">291 ms</text>
|
||||
<rect x="476.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="523.0" y="344.0" fill="black" font-family="Arial" font-size="14">693 ms</text>
|
||||
<rect x="608.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="655.0" y="344.0" fill="black" font-family="Arial" font-size="14">1.56 s</text>
|
||||
<rect x="740.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="787.0" y="344.0" fill="black" font-family="Arial" font-size="14">3.52 s</text>
|
||||
<rect x="872.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="919.0" y="344.0" fill="black" font-family="Arial" font-size="14">8.22 s</text>
|
||||
<rect x="1004.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="344.0" fill="black" font-family="Arial" font-size="14">21.1 s</text>
|
||||
<rect x="1136.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="344.0" fill="black" font-family="Arial" font-size="14">55.2 s</text>
|
||||
<rect x="0" y="360" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="384.0" fill="black" font-family="Arial" font-size="14">Left / Right Shifts (`<<`, `>>`)</text>
|
||||
<rect x="344.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="384.0" fill="black" font-family="Arial" font-size="14">38.5 ms</text>
|
||||
<rect x="476.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="384.0" fill="black" font-family="Arial" font-size="14">61.2 ms</text>
|
||||
<rect x="608.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="384.0" fill="black" font-family="Arial" font-size="14">84.3 ms</text>
|
||||
<rect x="740.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="787.0" y="384.0" fill="black" font-family="Arial" font-size="14">109 ms</text>
|
||||
<rect x="872.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="919.0" y="384.0" fill="black" font-family="Arial" font-size="14">134 ms</text>
|
||||
<rect x="1004.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="384.0" fill="black" font-family="Arial" font-size="14">174 ms</text>
|
||||
<rect x="1136.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="384.0" fill="black" font-family="Arial" font-size="14">250 ms</text>
|
||||
<rect x="0" y="400" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="424.0" fill="black" font-family="Arial" font-size="14">Left / Right Rotations (`left_rotate`, `right_rotate`)</text>
|
||||
<rect x="344.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="424.0" fill="black" font-family="Arial" font-size="14">40.4 ms</text>
|
||||
<rect x="476.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="424.0" fill="black" font-family="Arial" font-size="14">61.4 ms</text>
|
||||
<rect x="608.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="424.0" fill="black" font-family="Arial" font-size="14">82.6 ms</text>
|
||||
<rect x="740.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="787.0" y="424.0" fill="black" font-family="Arial" font-size="14">105 ms</text>
|
||||
<rect x="872.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="919.0" y="424.0" fill="black" font-family="Arial" font-size="14">133 ms</text>
|
||||
<rect x="1004.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="424.0" fill="black" font-family="Arial" font-size="14">184 ms</text>
|
||||
<rect x="1136.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="424.0" fill="black" font-family="Arial" font-size="14">259 ms</text>
|
||||
<rect x="0" y="440" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="464.0" fill="black" font-family="Arial" font-size="14">Leading / Trailing zeros/ones</text>
|
||||
<rect x="344.0" y="440" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="464.0" fill="black" font-family="Arial" font-size="14">80.5 ms</text>
|
||||
<rect x="476.0" y="440" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="523.0" y="464.0" fill="black" font-family="Arial" font-size="14">100 ms</text>
|
||||
<rect x="608.0" y="440" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="655.0" y="464.0" fill="black" font-family="Arial" font-size="14">156 ms</text>
|
||||
<rect x="740.0" y="440" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="787.0" y="464.0" fill="black" font-family="Arial" font-size="14">183 ms</text>
|
||||
<rect x="872.0" y="440" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="919.0" y="464.0" fill="black" font-family="Arial" font-size="14">247 ms</text>
|
||||
<rect x="1004.0" y="440" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="464.0" fill="black" font-family="Arial" font-size="14">298 ms</text>
|
||||
<rect x="1136.0" y="440" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="464.0" fill="black" font-family="Arial" font-size="14">347 ms</text>
|
||||
<rect x="0" y="480" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="504.0" fill="black" font-family="Arial" font-size="14">Log2</text>
|
||||
<rect x="344.0" y="480" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="391.0" y="504.0" fill="black" font-family="Arial" font-size="14">100 ms</text>
|
||||
<rect x="476.0" y="480" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="523.0" y="504.0" fill="black" font-family="Arial" font-size="14">121 ms</text>
|
||||
<rect x="608.0" y="480" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="655.0" y="504.0" fill="black" font-family="Arial" font-size="14">182 ms</text>
|
||||
<rect x="740.0" y="480" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="787.0" y="504.0" fill="black" font-family="Arial" font-size="14">205 ms</text>
|
||||
<rect x="872.0" y="480" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="919.0" y="504.0" fill="black" font-family="Arial" font-size="14">267 ms</text>
|
||||
<rect x="1004.0" y="480" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="504.0" fill="black" font-family="Arial" font-size="14">323 ms</text>
|
||||
<rect x="1136.0" y="480" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="504.0" fill="black" font-family="Arial" font-size="14">369 ms</text>
|
||||
<rect x="0" y="520" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="544.0" fill="black" font-family="Arial" font-size="14">Select</text>
|
||||
<rect x="344.0" y="520" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="544.0" fill="black" font-family="Arial" font-size="14">27.6 ms</text>
|
||||
<rect x="476.0" y="520" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="544.0" fill="black" font-family="Arial" font-size="14">30.9 ms</text>
|
||||
<rect x="608.0" y="520" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="544.0" fill="black" font-family="Arial" font-size="14">32.2 ms</text>
|
||||
<rect x="740.0" y="520" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="544.0" fill="black" font-family="Arial" font-size="14">33.3 ms</text>
|
||||
<rect x="872.0" y="520" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="544.0" fill="black" font-family="Arial" font-size="14">32.6 ms</text>
|
||||
<rect x="1004.0" y="520" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="544.0" fill="black" font-family="Arial" font-size="14">37.2 ms</text>
|
||||
<rect x="1136.0" y="520" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="544.0" fill="black" font-family="Arial" font-size="14">51.0 ms</text>
|
||||
|
||||
<!-- Borders -->
|
||||
<line x1="0" y1="0" x2="0" y2="560" stroke="white" />
|
||||
<line x1="344.0" y1="0" x2="344.0" y2="560" stroke="white" />
|
||||
<line x1="476.0" y1="0" x2="476.0" y2="560" stroke="white" />
|
||||
<line x1="608.0" y1="0" x2="608.0" y2="560" stroke="white" />
|
||||
<line x1="740.0" y1="0" x2="740.0" y2="560" stroke="white" />
|
||||
<line x1="872.0" y1="0" x2="872.0" y2="560" stroke="white" />
|
||||
<line x1="1004.0" y1="0" x2="1004.0" y2="560" stroke="white" />
|
||||
<line x1="1136.0" y1="0" x2="1136.0" y2="560" stroke="white" />
|
||||
<line x1="0" y1="0" x2="1268.0" y2="0" stroke="white" />
|
||||
<line x1="0" y1="40" x2="1268.0" y2="40" stroke="white" />
|
||||
<line x1="0" y1="80" x2="1268.0" y2="80" stroke="white" />
|
||||
<line x1="0" y1="120" x2="1268.0" y2="120" stroke="white" />
|
||||
<line x1="0" y1="160" x2="1268.0" y2="160" stroke="white" />
|
||||
<line x1="0" y1="200" x2="1268.0" y2="200" stroke="white" />
|
||||
<line x1="0" y1="240" x2="1268.0" y2="240" stroke="white" />
|
||||
<line x1="0" y1="280" x2="1268.0" y2="280" stroke="white" />
|
||||
<line x1="0" y1="320" x2="1268.0" y2="320" stroke="white" />
|
||||
<line x1="0" y1="360" x2="1268.0" y2="360" stroke="white" />
|
||||
<line x1="0" y1="400" x2="1268.0" y2="400" stroke="white" />
|
||||
<line x1="0" y1="440" x2="1268.0" y2="440" stroke="white" />
|
||||
<line x1="0" y1="480" x2="1268.0" y2="480" stroke="white" />
|
||||
<line x1="0" y1="520" x2="1268.0" y2="520" stroke="white" />
|
||||
<line x1="0" y1="560" x2="1268.0" y2="560" stroke="white" />
|
||||
<?xml version="1.0" ?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 560" preserveAspectRatio="meet" width="100%" height="560">
|
||||
<rect x="0" y="0" width="720" height="40" fill="black"/>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="6" y="20.0">Operation \ Size</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="342.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="342.0" y="29.666666666666668">8</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="426.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="426.0" y="29.666666666666668">16</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="510.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="510.0" y="29.666666666666668">32</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="594.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="594.0" y="29.666666666666668">64</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="678.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="678.0" y="29.666666666666668">128</text>
|
||||
<rect x="0" y="40" width="300" height="520" fill="#fbbc04"/>
|
||||
<rect x="300" y="40" width="420" height="520" fill="#f3f3f3"/>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="60.0">Negation (-)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="60.0">48.7 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="60.0">57.0 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="60.0">78.0 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="60.0">103 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="60.0">162 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="100.0">Add / Sub (+,-)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="100.0">52.5 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="100.0">58.1 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="100.0">79.9 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="100.0">101 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="100.0">161 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="140.0">Mul (x)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="140.0">94.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="140.0">136 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="140.0">210 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="140.0">381 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="140.0">1.1 s</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="180.0">Equal / Not Equal (eq, ne)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="180.0">36.3 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="180.0">55.6 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="180.0">55.0 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="180.0">76.3 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="180.0">77.6 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="220.0">Comparisons (ge, gt, le, lt)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="220.0">36.1 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="220.0">54.2 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="220.0">73.8 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="220.0">94.8 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="220.0">136 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="260.0">Max / Min (max, min)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="260.0">74.9 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="260.0">94.2 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="260.0">115 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="260.0">138 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="260.0">183 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="300.0">Bitwise operations (&, |, ^)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="300.0">18.6 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="300.0">19.0 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="300.0">19.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="300.0">20.3 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="300.0">22.0 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="340.0">Div / Rem (/, %)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="340.0">667 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="340.0">1.49 s</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="340.0">3.39 s</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="340.0">7.87 s</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="340.0">19.6 s</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="380.0">Left / Right Shifts (<<, >>)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="380.0">59.9 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="380.0">79.2 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="380.0">100 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="380.0">128 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="380.0">169 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="420.0">Left / Right Rotations (left_rotate, right_rotate)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="420.0">57.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="420.0">77.1 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="420.0">98.9 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="420.0">128 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="420.0">178 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="460.0">Leading / Trailing zeros/ones</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="460.0">96.5 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="460.0">153 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="460.0">172 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="460.0">234 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="460.0">291 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="500.0">Log2</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="500.0">114 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="500.0">170 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="500.0">195 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="500.0">256 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="500.0">312 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="540.0">Select</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="540.0">28.9 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="540.0">29.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="540.0">31.0 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="540.0">31.9 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="540.0">34.3 ms</text>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="0" x2="720" y2="0"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="40" x2="720" y2="40"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="80" x2="720" y2="80"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="120" x2="720" y2="120"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="160" x2="720" y2="160"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="200" x2="720" y2="200"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="240" x2="720" y2="240"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="280" x2="720" y2="280"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="320" x2="720" y2="320"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="360" x2="720" y2="360"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="400" x2="720" y2="400"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="440" x2="720" y2="440"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="480" x2="720" y2="480"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="520" x2="720" y2="520"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="0" x2="0" y2="560"/>
|
||||
<line stroke="white" stroke-width="2" x1="300.0" y1="0" x2="300.0" y2="560"/>
|
||||
<line stroke="white" stroke-width="2" x1="384.0" y1="0" x2="384.0" y2="560"/>
|
||||
<line stroke="white" stroke-width="2" x1="468.0" y1="0" x2="468.0" y2="560"/>
|
||||
<line stroke="white" stroke-width="2" x1="552.0" y1="0" x2="552.0" y2="560"/>
|
||||
<line stroke="white" stroke-width="2" x1="636.0" y1="0" x2="636.0" y2="560"/>
|
||||
<line stroke="white" stroke-width="2" x1="720.0" y1="0" x2="720.0" y2="560"/>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 16 KiB |
@@ -1,196 +1,95 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1268.0" height="440" viewBox="0 0 1268.0 440">
|
||||
<!-- Header Row -->
|
||||
<rect x="0" y="0" width="1268.0" height="40" fill="black" />
|
||||
<text x="10" y="24.0" fill="white" font-family="Arial" font-size="14">Operation \ Size</text>
|
||||
<text x="383.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint4</text>
|
||||
<text x="515.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint8</text>
|
||||
<text x="643.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint16</text>
|
||||
<text x="775.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint32</text>
|
||||
<text x="907.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint64</text>
|
||||
<text x="1035.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint128</text>
|
||||
<text x="1167.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint256</text>
|
||||
|
||||
<!-- Data Rows -->
|
||||
<rect x="0" y="40" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="64.0" fill="black" font-family="Arial" font-size="14">Add / Sub (`+`,`-`)</text>
|
||||
<rect x="344.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="64.0" fill="black" font-family="Arial" font-size="14">39.8 ms</text>
|
||||
<rect x="476.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="64.0" fill="black" font-family="Arial" font-size="14">56.3 ms</text>
|
||||
<rect x="608.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="64.0" fill="black" font-family="Arial" font-size="14">61.5 ms</text>
|
||||
<rect x="740.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="64.0" fill="black" font-family="Arial" font-size="14">63.8 ms</text>
|
||||
<rect x="872.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="64.0" fill="black" font-family="Arial" font-size="14">88.4 ms</text>
|
||||
<rect x="1004.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="64.0" fill="black" font-family="Arial" font-size="14">111 ms</text>
|
||||
<rect x="1136.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="64.0" fill="black" font-family="Arial" font-size="14">178 ms</text>
|
||||
<rect x="0" y="80" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="104.0" fill="black" font-family="Arial" font-size="14">Mul (`x`)</text>
|
||||
<rect x="344.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="104.0" fill="black" font-family="Arial" font-size="14">40.9 ms</text>
|
||||
<rect x="476.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="104.0" fill="black" font-family="Arial" font-size="14">80.3 ms</text>
|
||||
<rect x="608.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="655.0" y="104.0" fill="black" font-family="Arial" font-size="14">128 ms</text>
|
||||
<rect x="740.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="787.0" y="104.0" fill="black" font-family="Arial" font-size="14">173 ms</text>
|
||||
<rect x="872.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="919.0" y="104.0" fill="black" font-family="Arial" font-size="14">231 ms</text>
|
||||
<rect x="1004.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="104.0" fill="black" font-family="Arial" font-size="14">452 ms</text>
|
||||
<rect x="1136.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="104.0" fill="black" font-family="Arial" font-size="14">1.11 s</text>
|
||||
<rect x="0" y="120" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="144.0" fill="black" font-family="Arial" font-size="14">Equal / Not Equal (`eq`, `ne`)</text>
|
||||
<rect x="344.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="144.0" fill="black" font-family="Arial" font-size="14">19.0 ms</text>
|
||||
<rect x="476.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="144.0" fill="black" font-family="Arial" font-size="14">38.6 ms</text>
|
||||
<rect x="608.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="144.0" fill="black" font-family="Arial" font-size="14">37.8 ms</text>
|
||||
<rect x="740.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="144.0" fill="black" font-family="Arial" font-size="14">58.5 ms</text>
|
||||
<rect x="872.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="144.0" fill="black" font-family="Arial" font-size="14">58.8 ms</text>
|
||||
<rect x="1004.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="144.0" fill="black" font-family="Arial" font-size="14">81.7 ms</text>
|
||||
<rect x="1136.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="144.0" fill="black" font-family="Arial" font-size="14">84.2 ms</text>
|
||||
<rect x="0" y="160" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="184.0" fill="black" font-family="Arial" font-size="14">Comparisons (`ge`, `gt`, `le`, `lt`)</text>
|
||||
<rect x="344.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="184.0" fill="black" font-family="Arial" font-size="14">15.3 ms</text>
|
||||
<rect x="476.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="184.0" fill="black" font-family="Arial" font-size="14">40.9 ms</text>
|
||||
<rect x="608.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="184.0" fill="black" font-family="Arial" font-size="14">39.9 ms</text>
|
||||
<rect x="740.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="184.0" fill="black" font-family="Arial" font-size="14">57.6 ms</text>
|
||||
<rect x="872.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="184.0" fill="black" font-family="Arial" font-size="14">81.0 ms</text>
|
||||
<rect x="1004.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="184.0" fill="black" font-family="Arial" font-size="14">103 ms</text>
|
||||
<rect x="1136.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="184.0" fill="black" font-family="Arial" font-size="14">149 ms</text>
|
||||
<rect x="0" y="200" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="224.0" fill="black" font-family="Arial" font-size="14">Max / Min (`max`,`min`)</text>
|
||||
<rect x="344.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="224.0" fill="black" font-family="Arial" font-size="14">32.9 ms</text>
|
||||
<rect x="476.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="224.0" fill="black" font-family="Arial" font-size="14">59.1 ms</text>
|
||||
<rect x="608.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="224.0" fill="black" font-family="Arial" font-size="14">60.0 ms</text>
|
||||
<rect x="740.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="224.0" fill="black" font-family="Arial" font-size="14">81.6 ms</text>
|
||||
<rect x="872.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="919.0" y="224.0" fill="black" font-family="Arial" font-size="14">103 ms</text>
|
||||
<rect x="1004.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="224.0" fill="black" font-family="Arial" font-size="14">127 ms</text>
|
||||
<rect x="1136.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="224.0" fill="black" font-family="Arial" font-size="14">175 ms</text>
|
||||
<rect x="0" y="240" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="264.0" fill="black" font-family="Arial" font-size="14">Bitwise operations (`&`, `|`, `^`)</text>
|
||||
<rect x="344.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="264.0" fill="black" font-family="Arial" font-size="14">19.0 ms</text>
|
||||
<rect x="476.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="264.0" fill="black" font-family="Arial" font-size="14">19.5 ms</text>
|
||||
<rect x="608.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="264.0" fill="black" font-family="Arial" font-size="14">20.5 ms</text>
|
||||
<rect x="740.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="264.0" fill="black" font-family="Arial" font-size="14">21.0 ms</text>
|
||||
<rect x="872.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="264.0" fill="black" font-family="Arial" font-size="14">22.4 ms</text>
|
||||
<rect x="1004.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="264.0" fill="black" font-family="Arial" font-size="14">23.9 ms</text>
|
||||
<rect x="1136.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="264.0" fill="black" font-family="Arial" font-size="14">26.3 ms</text>
|
||||
<rect x="0" y="280" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="304.0" fill="black" font-family="Arial" font-size="14">Div (`/`)</text>
|
||||
<rect x="344.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="304.0" fill="black" font-family="Arial" font-size="14">81.7 ms</text>
|
||||
<rect x="476.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="523.0" y="304.0" fill="black" font-family="Arial" font-size="14">149 ms</text>
|
||||
<rect x="608.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="655.0" y="304.0" fill="black" font-family="Arial" font-size="14">188 ms</text>
|
||||
<rect x="740.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="787.0" y="304.0" fill="black" font-family="Arial" font-size="14">281 ms</text>
|
||||
<rect x="872.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="919.0" y="304.0" fill="black" font-family="Arial" font-size="14">453 ms</text>
|
||||
<rect x="1004.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="304.0" fill="black" font-family="Arial" font-size="14">844 ms</text>
|
||||
<rect x="1136.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="304.0" fill="black" font-family="Arial" font-size="14">2.45 s</text>
|
||||
<rect x="0" y="320" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="344.0" fill="black" font-family="Arial" font-size="14">Rem (`%`)</text>
|
||||
<rect x="344.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="391.0" y="344.0" fill="black" font-family="Arial" font-size="14">165 ms</text>
|
||||
<rect x="476.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="523.0" y="344.0" fill="black" font-family="Arial" font-size="14">278 ms</text>
|
||||
<rect x="608.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="655.0" y="344.0" fill="black" font-family="Arial" font-size="14">360 ms</text>
|
||||
<rect x="740.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="787.0" y="344.0" fill="black" font-family="Arial" font-size="14">503 ms</text>
|
||||
<rect x="872.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="919.0" y="344.0" fill="black" font-family="Arial" font-size="14">806 ms</text>
|
||||
<rect x="1004.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="344.0" fill="black" font-family="Arial" font-size="14">1.32 s</text>
|
||||
<rect x="1136.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="344.0" fill="black" font-family="Arial" font-size="14">2.98 s</text>
|
||||
<rect x="0" y="360" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="384.0" fill="black" font-family="Arial" font-size="14">Left / Right Shifts (`<<`, `>>`)</text>
|
||||
<rect x="344.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="384.0" fill="black" font-family="Arial" font-size="14">18.8 ms</text>
|
||||
<rect x="476.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="384.0" fill="black" font-family="Arial" font-size="14">20.4 ms</text>
|
||||
<rect x="608.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="384.0" fill="black" font-family="Arial" font-size="14">20.4 ms</text>
|
||||
<rect x="740.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="384.0" fill="black" font-family="Arial" font-size="14">20.9 ms</text>
|
||||
<rect x="872.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="384.0" fill="black" font-family="Arial" font-size="14">21.8 ms</text>
|
||||
<rect x="1004.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="384.0" fill="black" font-family="Arial" font-size="14">23.1 ms</text>
|
||||
<rect x="1136.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="384.0" fill="black" font-family="Arial" font-size="14">26.2 ms</text>
|
||||
<rect x="0" y="400" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="424.0" fill="black" font-family="Arial" font-size="14">Left / Right Rotations (`left_rotate`, `right_rotate`)</text>
|
||||
<rect x="344.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="424.0" fill="black" font-family="Arial" font-size="14">21.0 ms</text>
|
||||
<rect x="476.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="424.0" fill="black" font-family="Arial" font-size="14">20.2 ms</text>
|
||||
<rect x="608.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="424.0" fill="black" font-family="Arial" font-size="14">20.5 ms</text>
|
||||
<rect x="740.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="424.0" fill="black" font-family="Arial" font-size="14">21.0 ms</text>
|
||||
<rect x="872.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="424.0" fill="black" font-family="Arial" font-size="14">21.7 ms</text>
|
||||
<rect x="1004.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="424.0" fill="black" font-family="Arial" font-size="14">23.0 ms</text>
|
||||
<rect x="1136.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="424.0" fill="black" font-family="Arial" font-size="14">26.0 ms</text>
|
||||
|
||||
<!-- Borders -->
|
||||
<line x1="0" y1="0" x2="0" y2="440" stroke="white" />
|
||||
<line x1="344.0" y1="0" x2="344.0" y2="440" stroke="white" />
|
||||
<line x1="476.0" y1="0" x2="476.0" y2="440" stroke="white" />
|
||||
<line x1="608.0" y1="0" x2="608.0" y2="440" stroke="white" />
|
||||
<line x1="740.0" y1="0" x2="740.0" y2="440" stroke="white" />
|
||||
<line x1="872.0" y1="0" x2="872.0" y2="440" stroke="white" />
|
||||
<line x1="1004.0" y1="0" x2="1004.0" y2="440" stroke="white" />
|
||||
<line x1="1136.0" y1="0" x2="1136.0" y2="440" stroke="white" />
|
||||
<line x1="0" y1="0" x2="1268.0" y2="0" stroke="white" />
|
||||
<line x1="0" y1="40" x2="1268.0" y2="40" stroke="white" />
|
||||
<line x1="0" y1="80" x2="1268.0" y2="80" stroke="white" />
|
||||
<line x1="0" y1="120" x2="1268.0" y2="120" stroke="white" />
|
||||
<line x1="0" y1="160" x2="1268.0" y2="160" stroke="white" />
|
||||
<line x1="0" y1="200" x2="1268.0" y2="200" stroke="white" />
|
||||
<line x1="0" y1="240" x2="1268.0" y2="240" stroke="white" />
|
||||
<line x1="0" y1="280" x2="1268.0" y2="280" stroke="white" />
|
||||
<line x1="0" y1="320" x2="1268.0" y2="320" stroke="white" />
|
||||
<line x1="0" y1="360" x2="1268.0" y2="360" stroke="white" />
|
||||
<line x1="0" y1="400" x2="1268.0" y2="400" stroke="white" />
|
||||
<line x1="0" y1="440" x2="1268.0" y2="440" stroke="white" />
|
||||
<?xml version="1.0" ?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 440" preserveAspectRatio="meet" width="100%" height="440">
|
||||
<rect x="0" y="0" width="720" height="40" fill="black"/>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="6" y="20.0">Operation \ Size</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="342.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="342.0" y="29.666666666666668">8</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="426.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="426.0" y="29.666666666666668">16</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="510.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="510.0" y="29.666666666666668">32</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="594.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="594.0" y="29.666666666666668">64</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="678.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="678.0" y="29.666666666666668">128</text>
|
||||
<rect x="0" y="40" width="300" height="400" fill="#fbbc04"/>
|
||||
<rect x="300" y="40" width="420" height="400" fill="#f3f3f3"/>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="60.0">Add / Sub (+,-)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="60.0">51.7 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="60.0">56.2 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="60.0">57.0 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="60.0">78.6 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="60.0">104 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="100.0">Mul (x)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="100.0">75.6 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="100.0">118 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="100.0">161 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="100.0">222 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="100.0">419 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="140.0">Equal / Not Equal (eq, ne)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="140.0">34.6 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="140.0">35.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="140.0">56.0 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="140.0">54.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="140.0">75.8 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="180.0">Comparisons (ge, gt, le, lt)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="180.0">36.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="180.0">35.2 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="180.0">53.7 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="180.0">73.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="180.0">94.5 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="220.0">Max / Min (max, min)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="220.0">55.0 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="220.0">55.7 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="220.0">74.6 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="220.0">95.0 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="220.0">117 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="260.0">Bitwise operations (&, |, ^)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="260.0">19.0 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="260.0">19.1 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="260.0">19.7 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="260.0">21.3 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="260.0">22.7 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="300.0">Div (/)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="300.0">137 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="300.0">189 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="300.0">269 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="300.0">451 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="300.0">833 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="340.0">Rem (%)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="340.0">268 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="340.0">344 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="340.0">492 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="340.0">719 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="340.0">1.27 s</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="380.0">Left / Right Shifts (<<, >>)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="380.0">18.9 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="380.0">19.3 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="380.0">19.6 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="380.0">20.1 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="380.0">21.9 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="420.0">Left / Right Rotations (left_rotate, right_rotate)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="420.0">19.3 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="420.0">19.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="420.0">19.9 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="420.0">21.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="420.0">22.7 ms</text>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="0" x2="720" y2="0"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="40" x2="720" y2="40"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="80" x2="720" y2="80"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="120" x2="720" y2="120"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="160" x2="720" y2="160"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="200" x2="720" y2="200"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="240" x2="720" y2="240"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="280" x2="720" y2="280"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="320" x2="720" y2="320"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="360" x2="720" y2="360"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="400" x2="720" y2="400"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="0" x2="0" y2="440"/>
|
||||
<line stroke="white" stroke-width="2" x1="300.0" y1="0" x2="300.0" y2="440"/>
|
||||
<line stroke="white" stroke-width="2" x1="384.0" y1="0" x2="384.0" y2="440"/>
|
||||
<line stroke="white" stroke-width="2" x1="468.0" y1="0" x2="468.0" y2="440"/>
|
||||
<line stroke="white" stroke-width="2" x1="552.0" y1="0" x2="552.0" y2="440"/>
|
||||
<line stroke="white" stroke-width="2" x1="636.0" y1="0" x2="636.0" y2="440"/>
|
||||
<line stroke="white" stroke-width="2" x1="720.0" y1="0" x2="720.0" y2="440"/>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 13 KiB |
@@ -1,247 +1,116 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1268.0" height="560" viewBox="0 0 1268.0 560">
|
||||
<!-- Header Row -->
|
||||
<rect x="0" y="0" width="1268.0" height="40" fill="black" />
|
||||
<text x="10" y="24.0" fill="white" font-family="Arial" font-size="14">Operation \ Size</text>
|
||||
<text x="383.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint4</text>
|
||||
<text x="515.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint8</text>
|
||||
<text x="643.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint16</text>
|
||||
<text x="775.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint32</text>
|
||||
<text x="907.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint64</text>
|
||||
<text x="1035.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint128</text>
|
||||
<text x="1167.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint256</text>
|
||||
|
||||
<!-- Data Rows -->
|
||||
<rect x="0" y="40" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="64.0" fill="black" font-family="Arial" font-size="14">Negation (`-`)</text>
|
||||
<rect x="344.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="64.0" fill="black" font-family="Arial" font-size="14">10.9 ms</text>
|
||||
<rect x="476.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="64.0" fill="black" font-family="Arial" font-size="14">11.2 ms</text>
|
||||
<rect x="608.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="64.0" fill="black" font-family="Arial" font-size="14">12.5 ms</text>
|
||||
<rect x="740.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="64.0" fill="black" font-family="Arial" font-size="14">17.7 ms</text>
|
||||
<rect x="872.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="64.0" fill="black" font-family="Arial" font-size="14">25.2 ms</text>
|
||||
<rect x="1004.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="64.0" fill="black" font-family="Arial" font-size="14">51.1 ms</text>
|
||||
<rect x="1136.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="64.0" fill="black" font-family="Arial" font-size="14">82.8 ms</text>
|
||||
<rect x="0" y="80" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="104.0" fill="black" font-family="Arial" font-size="14">Add / Sub (`+`,`-`)</text>
|
||||
<rect x="344.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="104.0" fill="black" font-family="Arial" font-size="14">11.0 ms</text>
|
||||
<rect x="476.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="104.0" fill="black" font-family="Arial" font-size="14">11.3 ms</text>
|
||||
<rect x="608.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="104.0" fill="black" font-family="Arial" font-size="14">12.5 ms</text>
|
||||
<rect x="740.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="104.0" fill="black" font-family="Arial" font-size="14">17.7 ms</text>
|
||||
<rect x="872.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="104.0" fill="black" font-family="Arial" font-size="14">25.2 ms</text>
|
||||
<rect x="1004.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="104.0" fill="black" font-family="Arial" font-size="14">51.2 ms</text>
|
||||
<rect x="1136.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="104.0" fill="black" font-family="Arial" font-size="14">82.8 ms</text>
|
||||
<rect x="0" y="120" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="144.0" fill="black" font-family="Arial" font-size="14">Mul (`x`)</text>
|
||||
<rect x="344.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="144.0" fill="black" font-family="Arial" font-size="14">18.0 ms</text>
|
||||
<rect x="476.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="144.0" fill="black" font-family="Arial" font-size="14">23.1 ms</text>
|
||||
<rect x="608.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="144.0" fill="black" font-family="Arial" font-size="14">37.2 ms</text>
|
||||
<rect x="740.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="144.0" fill="black" font-family="Arial" font-size="14">76.4 ms</text>
|
||||
<rect x="872.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="919.0" y="144.0" fill="black" font-family="Arial" font-size="14">237 ms</text>
|
||||
<rect x="1004.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="144.0" fill="black" font-family="Arial" font-size="14">830 ms</text>
|
||||
<rect x="1136.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="144.0" fill="black" font-family="Arial" font-size="14">3.24 s</text>
|
||||
<rect x="0" y="160" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="184.0" fill="black" font-family="Arial" font-size="14">Equal / Not Equal (`eq`, `ne`)</text>
|
||||
<rect x="344.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="184.0" fill="black" font-family="Arial" font-size="14">7.53 ms</text>
|
||||
<rect x="476.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="184.0" fill="black" font-family="Arial" font-size="14">7.65 ms</text>
|
||||
<rect x="608.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="184.0" fill="black" font-family="Arial" font-size="14">11.5 ms</text>
|
||||
<rect x="740.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="184.0" fill="black" font-family="Arial" font-size="14">12.4 ms</text>
|
||||
<rect x="872.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="184.0" fill="black" font-family="Arial" font-size="14">17.7 ms</text>
|
||||
<rect x="1004.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="184.0" fill="black" font-family="Arial" font-size="14">24.1 ms</text>
|
||||
<rect x="1136.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="184.0" fill="black" font-family="Arial" font-size="14">37.7 ms</text>
|
||||
<rect x="0" y="200" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="224.0" fill="black" font-family="Arial" font-size="14">Comparisons (`ge`, `gt`, `le`, `lt`)</text>
|
||||
<rect x="344.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="224.0" fill="black" font-family="Arial" font-size="14">11.1 ms</text>
|
||||
<rect x="476.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="224.0" fill="black" font-family="Arial" font-size="14">11.4 ms</text>
|
||||
<rect x="608.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="224.0" fill="black" font-family="Arial" font-size="14">15.3 ms</text>
|
||||
<rect x="740.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="224.0" fill="black" font-family="Arial" font-size="14">20.1 ms</text>
|
||||
<rect x="872.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="224.0" fill="black" font-family="Arial" font-size="14">26.2 ms</text>
|
||||
<rect x="1004.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="224.0" fill="black" font-family="Arial" font-size="14">38.0 ms</text>
|
||||
<rect x="1136.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="224.0" fill="black" font-family="Arial" font-size="14">58.3 ms</text>
|
||||
<rect x="0" y="240" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="264.0" fill="black" font-family="Arial" font-size="14">Max / Min (`max`,`min`)</text>
|
||||
<rect x="344.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="264.0" fill="black" font-family="Arial" font-size="14">18.3 ms</text>
|
||||
<rect x="476.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="264.0" fill="black" font-family="Arial" font-size="14">18.9 ms</text>
|
||||
<rect x="608.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="264.0" fill="black" font-family="Arial" font-size="14">24.0 ms</text>
|
||||
<rect x="740.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="264.0" fill="black" font-family="Arial" font-size="14">30.6 ms</text>
|
||||
<rect x="872.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="264.0" fill="black" font-family="Arial" font-size="14">43.6 ms</text>
|
||||
<rect x="1004.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="264.0" fill="black" font-family="Arial" font-size="14">68.5 ms</text>
|
||||
<rect x="1136.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="264.0" fill="black" font-family="Arial" font-size="14">107 ms</text>
|
||||
<rect x="0" y="280" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="304.0" fill="black" font-family="Arial" font-size="14">Bitwise operations (`&`, `|`, `^`)</text>
|
||||
<rect x="344.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="304.0" fill="black" font-family="Arial" font-size="14">3.45 ms</text>
|
||||
<rect x="476.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="523.0" y="304.0" fill="black" font-family="Arial" font-size="14">3.6 ms</text>
|
||||
<rect x="608.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="304.0" fill="black" font-family="Arial" font-size="14">4.01 ms</text>
|
||||
<rect x="740.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="304.0" fill="black" font-family="Arial" font-size="14">4.58 ms</text>
|
||||
<rect x="872.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="304.0" fill="black" font-family="Arial" font-size="14">5.97 ms</text>
|
||||
<rect x="1004.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="304.0" fill="black" font-family="Arial" font-size="14">11.2 ms</text>
|
||||
<rect x="1136.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="304.0" fill="black" font-family="Arial" font-size="14">18.9 ms</text>
|
||||
<rect x="0" y="320" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="344.0" fill="black" font-family="Arial" font-size="14">Div / Rem (`/`, `%`)</text>
|
||||
<rect x="344.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="344.0" fill="black" font-family="Arial" font-size="14">78.1 ms</text>
|
||||
<rect x="476.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="523.0" y="344.0" fill="black" font-family="Arial" font-size="14">154 ms</text>
|
||||
<rect x="608.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="655.0" y="344.0" fill="black" font-family="Arial" font-size="14">318 ms</text>
|
||||
<rect x="740.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="787.0" y="344.0" fill="black" font-family="Arial" font-size="14">763 ms</text>
|
||||
<rect x="872.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="919.0" y="344.0" fill="black" font-family="Arial" font-size="14">2.05 s</text>
|
||||
<rect x="1004.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="344.0" fill="black" font-family="Arial" font-size="14">6.35 s</text>
|
||||
<rect x="1136.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="344.0" fill="black" font-family="Arial" font-size="14">22.8 s</text>
|
||||
<rect x="0" y="360" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="384.0" fill="black" font-family="Arial" font-size="14">Left / Right Shifts (`<<`, `>>`)</text>
|
||||
<rect x="344.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="384.0" fill="black" font-family="Arial" font-size="14">17.7 ms</text>
|
||||
<rect x="476.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="384.0" fill="black" font-family="Arial" font-size="14">22.9 ms</text>
|
||||
<rect x="608.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="384.0" fill="black" font-family="Arial" font-size="14">30.4 ms</text>
|
||||
<rect x="740.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="384.0" fill="black" font-family="Arial" font-size="14">43.4 ms</text>
|
||||
<rect x="872.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="384.0" fill="black" font-family="Arial" font-size="14">86.7 ms</text>
|
||||
<rect x="1004.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="384.0" fill="black" font-family="Arial" font-size="14">162 ms</text>
|
||||
<rect x="1136.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="384.0" fill="black" font-family="Arial" font-size="14">280 ms</text>
|
||||
<rect x="0" y="400" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="424.0" fill="black" font-family="Arial" font-size="14">Left / Right Rotations (`left_rotate`, `right_rotate`)</text>
|
||||
<rect x="344.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="424.0" fill="black" font-family="Arial" font-size="14">17.7 ms</text>
|
||||
<rect x="476.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="424.0" fill="black" font-family="Arial" font-size="14">22.9 ms</text>
|
||||
<rect x="608.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="424.0" fill="black" font-family="Arial" font-size="14">30.3 ms</text>
|
||||
<rect x="740.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="424.0" fill="black" font-family="Arial" font-size="14">43.4 ms</text>
|
||||
<rect x="872.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="424.0" fill="black" font-family="Arial" font-size="14">86.8 ms</text>
|
||||
<rect x="1004.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="424.0" fill="black" font-family="Arial" font-size="14">162 ms</text>
|
||||
<rect x="1136.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="424.0" fill="black" font-family="Arial" font-size="14">280 ms</text>
|
||||
<rect x="0" y="440" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="464.0" fill="black" font-family="Arial" font-size="14">Leading / Trailing zeros/ones</text>
|
||||
<rect x="344.0" y="440" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="464.0" fill="black" font-family="Arial" font-size="14">29.0 ms</text>
|
||||
<rect x="476.0" y="440" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="464.0" fill="black" font-family="Arial" font-size="14">25.1 ms</text>
|
||||
<rect x="608.0" y="440" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="464.0" fill="black" font-family="Arial" font-size="14">33.8 ms</text>
|
||||
<rect x="740.0" y="440" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="464.0" fill="black" font-family="Arial" font-size="14">44.4 ms</text>
|
||||
<rect x="872.0" y="440" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="464.0" fill="black" font-family="Arial" font-size="14">62.3 ms</text>
|
||||
<rect x="1004.0" y="440" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="464.0" fill="black" font-family="Arial" font-size="14">105 ms</text>
|
||||
<rect x="1136.0" y="440" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="464.0" fill="black" font-family="Arial" font-size="14">195 ms</text>
|
||||
<rect x="0" y="480" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="504.0" fill="black" font-family="Arial" font-size="14">Log2</text>
|
||||
<rect x="344.0" y="480" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="504.0" fill="black" font-family="Arial" font-size="14">31.9 ms</text>
|
||||
<rect x="476.0" y="480" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="504.0" fill="black" font-family="Arial" font-size="14">35.5 ms</text>
|
||||
<rect x="608.0" y="480" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="504.0" fill="black" font-family="Arial" font-size="14">48.2 ms</text>
|
||||
<rect x="740.0" y="480" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="504.0" fill="black" font-family="Arial" font-size="14">55.2 ms</text>
|
||||
<rect x="872.0" y="480" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="504.0" fill="black" font-family="Arial" font-size="14">73.9 ms</text>
|
||||
<rect x="1004.0" y="480" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="504.0" fill="black" font-family="Arial" font-size="14">113 ms</text>
|
||||
<rect x="1136.0" y="480" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="504.0" fill="black" font-family="Arial" font-size="14">210 ms</text>
|
||||
<rect x="0" y="520" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="544.0" fill="black" font-family="Arial" font-size="14">Select</text>
|
||||
<rect x="344.0" y="520" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="544.0" fill="black" font-family="Arial" font-size="14">7.16 ms</text>
|
||||
<rect x="476.0" y="520" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="544.0" fill="black" font-family="Arial" font-size="14">7.76 ms</text>
|
||||
<rect x="608.0" y="520" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="544.0" fill="black" font-family="Arial" font-size="14">8.72 ms</text>
|
||||
<rect x="740.0" y="520" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="544.0" fill="black" font-family="Arial" font-size="14">10.7 ms</text>
|
||||
<rect x="872.0" y="520" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="544.0" fill="black" font-family="Arial" font-size="14">17.5 ms</text>
|
||||
<rect x="1004.0" y="520" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="544.0" fill="black" font-family="Arial" font-size="14">30.5 ms</text>
|
||||
<rect x="1136.0" y="520" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="544.0" fill="black" font-family="Arial" font-size="14">48.8 ms</text>
|
||||
|
||||
<!-- Borders -->
|
||||
<line x1="0" y1="0" x2="0" y2="560" stroke="white" />
|
||||
<line x1="344.0" y1="0" x2="344.0" y2="560" stroke="white" />
|
||||
<line x1="476.0" y1="0" x2="476.0" y2="560" stroke="white" />
|
||||
<line x1="608.0" y1="0" x2="608.0" y2="560" stroke="white" />
|
||||
<line x1="740.0" y1="0" x2="740.0" y2="560" stroke="white" />
|
||||
<line x1="872.0" y1="0" x2="872.0" y2="560" stroke="white" />
|
||||
<line x1="1004.0" y1="0" x2="1004.0" y2="560" stroke="white" />
|
||||
<line x1="1136.0" y1="0" x2="1136.0" y2="560" stroke="white" />
|
||||
<line x1="0" y1="0" x2="1268.0" y2="0" stroke="white" />
|
||||
<line x1="0" y1="40" x2="1268.0" y2="40" stroke="white" />
|
||||
<line x1="0" y1="80" x2="1268.0" y2="80" stroke="white" />
|
||||
<line x1="0" y1="120" x2="1268.0" y2="120" stroke="white" />
|
||||
<line x1="0" y1="160" x2="1268.0" y2="160" stroke="white" />
|
||||
<line x1="0" y1="200" x2="1268.0" y2="200" stroke="white" />
|
||||
<line x1="0" y1="240" x2="1268.0" y2="240" stroke="white" />
|
||||
<line x1="0" y1="280" x2="1268.0" y2="280" stroke="white" />
|
||||
<line x1="0" y1="320" x2="1268.0" y2="320" stroke="white" />
|
||||
<line x1="0" y1="360" x2="1268.0" y2="360" stroke="white" />
|
||||
<line x1="0" y1="400" x2="1268.0" y2="400" stroke="white" />
|
||||
<line x1="0" y1="440" x2="1268.0" y2="440" stroke="white" />
|
||||
<line x1="0" y1="480" x2="1268.0" y2="480" stroke="white" />
|
||||
<line x1="0" y1="520" x2="1268.0" y2="520" stroke="white" />
|
||||
<line x1="0" y1="560" x2="1268.0" y2="560" stroke="white" />
|
||||
<?xml version="1.0" ?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 560" preserveAspectRatio="meet" width="100%" height="560">
|
||||
<rect x="0" y="0" width="720" height="40" fill="black"/>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="6" y="20.0">Operation \ Size</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="342.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="342.0" y="29.666666666666668">8</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="426.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="426.0" y="29.666666666666668">16</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="510.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="510.0" y="29.666666666666668">32</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="594.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="594.0" y="29.666666666666668">64</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="678.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="678.0" y="29.666666666666668">128</text>
|
||||
<rect x="0" y="40" width="300" height="520" fill="#fbbc04"/>
|
||||
<rect x="300" y="40" width="420" height="520" fill="#f3f3f3"/>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="60.0">Negation (-)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="60.0">11.2 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="60.0">12.5 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="60.0">17.7 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="60.0">25.2 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="60.0">51.1 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="100.0">Add / Sub (+,-)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="100.0">11.3 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="100.0">12.5 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="100.0">17.7 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="100.0">25.2 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="100.0">51.2 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="140.0">Mul (x)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="140.0">23.1 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="140.0">37.2 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="140.0">76.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="140.0">237 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="140.0">830 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="180.0">Equal / Not Equal (eq, ne)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="180.0">7.65 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="180.0">11.5 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="180.0">12.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="180.0">17.7 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="180.0">24.1 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="220.0">Comparisons (ge, gt, le, lt)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="220.0">11.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="220.0">15.3 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="220.0">20.1 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="220.0">26.2 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="220.0">38.0 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="260.0">Max / Min (max, min)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="260.0">18.9 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="260.0">24.0 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="260.0">30.6 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="260.0">43.6 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="260.0">68.5 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="300.0">Bitwise operations (&, |, ^)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="300.0">3.6 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="300.0">4.01 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="300.0">4.58 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="300.0">5.97 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="300.0">11.2 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="340.0">Div / Rem (/, %)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="340.0">154 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="340.0">318 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="340.0">763 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="340.0">2.05 s</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="340.0">6.35 s</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="380.0">Left / Right Shifts (<<, >>)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="380.0">22.9 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="380.0">30.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="380.0">43.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="380.0">86.7 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="380.0">162 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="420.0">Left / Right Rotations (left_rotate, right_rotate)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="420.0">22.9 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="420.0">30.3 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="420.0">43.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="420.0">86.8 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="420.0">162 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="460.0">Leading / Trailing zeros/ones</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="460.0">25.1 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="460.0">33.8 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="460.0">44.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="460.0">62.3 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="460.0">105 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="500.0">Log2</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="500.0">35.5 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="500.0">48.2 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="500.0">55.2 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="500.0">73.9 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="500.0">113 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="540.0">Select</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="540.0">7.76 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="540.0">8.72 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="540.0">10.7 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="540.0">17.5 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="540.0">30.5 ms</text>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="0" x2="720" y2="0"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="40" x2="720" y2="40"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="80" x2="720" y2="80"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="120" x2="720" y2="120"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="160" x2="720" y2="160"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="200" x2="720" y2="200"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="240" x2="720" y2="240"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="280" x2="720" y2="280"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="320" x2="720" y2="320"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="360" x2="720" y2="360"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="400" x2="720" y2="400"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="440" x2="720" y2="440"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="480" x2="720" y2="480"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="520" x2="720" y2="520"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="0" x2="0" y2="560"/>
|
||||
<line stroke="white" stroke-width="2" x1="300.0" y1="0" x2="300.0" y2="560"/>
|
||||
<line stroke="white" stroke-width="2" x1="384.0" y1="0" x2="384.0" y2="560"/>
|
||||
<line stroke="white" stroke-width="2" x1="468.0" y1="0" x2="468.0" y2="560"/>
|
||||
<line stroke="white" stroke-width="2" x1="552.0" y1="0" x2="552.0" y2="560"/>
|
||||
<line stroke="white" stroke-width="2" x1="636.0" y1="0" x2="636.0" y2="560"/>
|
||||
<line stroke="white" stroke-width="2" x1="720.0" y1="0" x2="720.0" y2="560"/>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 16 KiB |
@@ -1,196 +1,95 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1268.0" height="440" viewBox="0 0 1268.0 440">
|
||||
<!-- Header Row -->
|
||||
<rect x="0" y="0" width="1268.0" height="40" fill="black" />
|
||||
<text x="10" y="24.0" fill="white" font-family="Arial" font-size="14">Operation \ Size</text>
|
||||
<text x="383.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint4</text>
|
||||
<text x="515.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint8</text>
|
||||
<text x="643.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint16</text>
|
||||
<text x="775.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint32</text>
|
||||
<text x="907.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint64</text>
|
||||
<text x="1035.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint128</text>
|
||||
<text x="1167.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint256</text>
|
||||
|
||||
<!-- Data Rows -->
|
||||
<rect x="0" y="40" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="64.0" fill="black" font-family="Arial" font-size="14">Add / Sub (`+`,`-`)</text>
|
||||
<rect x="344.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="64.0" fill="black" font-family="Arial" font-size="14">11.1 ms</text>
|
||||
<rect x="476.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="64.0" fill="black" font-family="Arial" font-size="14">11.4 ms</text>
|
||||
<rect x="608.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="64.0" fill="black" font-family="Arial" font-size="14">12.6 ms</text>
|
||||
<rect x="740.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="64.0" fill="black" font-family="Arial" font-size="14">17.8 ms</text>
|
||||
<rect x="872.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="64.0" fill="black" font-family="Arial" font-size="14">25.4 ms</text>
|
||||
<rect x="1004.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="64.0" fill="black" font-family="Arial" font-size="14">51.4 ms</text>
|
||||
<rect x="1136.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="64.0" fill="black" font-family="Arial" font-size="14">83.1 ms</text>
|
||||
<rect x="0" y="80" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="104.0" fill="black" font-family="Arial" font-size="14">Mul (`x`)</text>
|
||||
<rect x="344.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="104.0" fill="black" font-family="Arial" font-size="14">11.4 ms</text>
|
||||
<rect x="476.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="104.0" fill="black" font-family="Arial" font-size="14">18.1 ms</text>
|
||||
<rect x="608.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="104.0" fill="black" font-family="Arial" font-size="14">26.1 ms</text>
|
||||
<rect x="740.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="104.0" fill="black" font-family="Arial" font-size="14">46.6 ms</text>
|
||||
<rect x="872.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="919.0" y="104.0" fill="black" font-family="Arial" font-size="14">109 ms</text>
|
||||
<rect x="1004.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="104.0" fill="black" font-family="Arial" font-size="14">330 ms</text>
|
||||
<rect x="1136.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="104.0" fill="black" font-family="Arial" font-size="14">1.17 s</text>
|
||||
<rect x="0" y="120" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="144.0" fill="black" font-family="Arial" font-size="14">Equal / Not Equal (`eq`, `ne`)</text>
|
||||
<rect x="344.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="144.0" fill="black" font-family="Arial" font-size="14">7.82 ms</text>
|
||||
<rect x="476.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="144.0" fill="black" font-family="Arial" font-size="14">7.81 ms</text>
|
||||
<rect x="608.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="144.0" fill="black" font-family="Arial" font-size="14">8.08 ms</text>
|
||||
<rect x="740.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="144.0" fill="black" font-family="Arial" font-size="14">12.0 ms</text>
|
||||
<rect x="872.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="144.0" fill="black" font-family="Arial" font-size="14">13.0 ms</text>
|
||||
<rect x="1004.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="144.0" fill="black" font-family="Arial" font-size="14">18.8 ms</text>
|
||||
<rect x="1136.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="144.0" fill="black" font-family="Arial" font-size="14">25.8 ms</text>
|
||||
<rect x="0" y="160" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="184.0" fill="black" font-family="Arial" font-size="14">Comparisons (`ge`, `gt`, `le`, `lt`)</text>
|
||||
<rect x="344.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="184.0" fill="black" font-family="Arial" font-size="14">9.31 ms</text>
|
||||
<rect x="476.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="184.0" fill="black" font-family="Arial" font-size="14">9.61 ms</text>
|
||||
<rect x="608.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="184.0" fill="black" font-family="Arial" font-size="14">13.3 ms</text>
|
||||
<rect x="740.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="184.0" fill="black" font-family="Arial" font-size="14">17.4 ms</text>
|
||||
<rect x="872.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="184.0" fill="black" font-family="Arial" font-size="14">22.3 ms</text>
|
||||
<rect x="1004.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="184.0" fill="black" font-family="Arial" font-size="14">29.0 ms</text>
|
||||
<rect x="1136.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="184.0" fill="black" font-family="Arial" font-size="14">41.8 ms</text>
|
||||
<rect x="0" y="200" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="224.0" fill="black" font-family="Arial" font-size="14">Max / Min (`max`,`min`)</text>
|
||||
<rect x="344.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="224.0" fill="black" font-family="Arial" font-size="14">16.5 ms</text>
|
||||
<rect x="476.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="224.0" fill="black" font-family="Arial" font-size="14">17.3 ms</text>
|
||||
<rect x="608.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="224.0" fill="black" font-family="Arial" font-size="14">21.9 ms</text>
|
||||
<rect x="740.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="224.0" fill="black" font-family="Arial" font-size="14">28.1 ms</text>
|
||||
<rect x="872.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="224.0" fill="black" font-family="Arial" font-size="14">39.7 ms</text>
|
||||
<rect x="1004.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="224.0" fill="black" font-family="Arial" font-size="14">59.4 ms</text>
|
||||
<rect x="1136.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="224.0" fill="black" font-family="Arial" font-size="14">90.7 ms</text>
|
||||
<rect x="0" y="240" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="264.0" fill="black" font-family="Arial" font-size="14">Bitwise operations (`&`, `|`, `^`)</text>
|
||||
<rect x="344.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="391.0" y="264.0" fill="black" font-family="Arial" font-size="14">3.3 ms</text>
|
||||
<rect x="476.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="264.0" fill="black" font-family="Arial" font-size="14">3.63 ms</text>
|
||||
<rect x="608.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="264.0" fill="black" font-family="Arial" font-size="14">4.11 ms</text>
|
||||
<rect x="740.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="264.0" fill="black" font-family="Arial" font-size="14">4.65 ms</text>
|
||||
<rect x="872.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="264.0" fill="black" font-family="Arial" font-size="14">6.03 ms</text>
|
||||
<rect x="1004.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="264.0" fill="black" font-family="Arial" font-size="14">11.2 ms</text>
|
||||
<rect x="1136.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="264.0" fill="black" font-family="Arial" font-size="14">19.0 ms</text>
|
||||
<rect x="0" y="280" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="304.0" fill="black" font-family="Arial" font-size="14">Div (`/`)</text>
|
||||
<rect x="344.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="304.0" fill="black" font-family="Arial" font-size="14">16.3 ms</text>
|
||||
<rect x="476.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="304.0" fill="black" font-family="Arial" font-size="14">28.4 ms</text>
|
||||
<rect x="608.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="304.0" fill="black" font-family="Arial" font-size="14">41.6 ms</text>
|
||||
<rect x="740.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="304.0" fill="black" font-family="Arial" font-size="14">83.7 ms</text>
|
||||
<rect x="872.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="919.0" y="304.0" fill="black" font-family="Arial" font-size="14">214 ms</text>
|
||||
<rect x="1004.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="304.0" fill="black" font-family="Arial" font-size="14">664 ms</text>
|
||||
<rect x="1136.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="304.0" fill="black" font-family="Arial" font-size="14">2.34 s</text>
|
||||
<rect x="0" y="320" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="344.0" fill="black" font-family="Arial" font-size="14">Rem (`%`)</text>
|
||||
<rect x="344.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="344.0" fill="black" font-family="Arial" font-size="14">35.5 ms</text>
|
||||
<rect x="476.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="344.0" fill="black" font-family="Arial" font-size="14">56.5 ms</text>
|
||||
<rect x="608.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="344.0" fill="black" font-family="Arial" font-size="14">80.6 ms</text>
|
||||
<rect x="740.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="787.0" y="344.0" fill="black" font-family="Arial" font-size="14">149 ms</text>
|
||||
<rect x="872.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="919.0" y="344.0" fill="black" font-family="Arial" font-size="14">351 ms</text>
|
||||
<rect x="1004.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="344.0" fill="black" font-family="Arial" font-size="14">1.04 s</text>
|
||||
<rect x="1136.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="344.0" fill="black" font-family="Arial" font-size="14">3.68 s</text>
|
||||
<rect x="0" y="360" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="384.0" fill="black" font-family="Arial" font-size="14">Left / Right Shifts (`<<`, `>>`)</text>
|
||||
<rect x="344.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="384.0" fill="black" font-family="Arial" font-size="14">3.49 ms</text>
|
||||
<rect x="476.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="384.0" fill="black" font-family="Arial" font-size="14">3.63 ms</text>
|
||||
<rect x="608.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="655.0" y="384.0" fill="black" font-family="Arial" font-size="14">4.1 ms</text>
|
||||
<rect x="740.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="384.0" fill="black" font-family="Arial" font-size="14">4.63 ms</text>
|
||||
<rect x="872.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="384.0" fill="black" font-family="Arial" font-size="14">6.03 ms</text>
|
||||
<rect x="1004.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="384.0" fill="black" font-family="Arial" font-size="14">11.2 ms</text>
|
||||
<rect x="1136.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="384.0" fill="black" font-family="Arial" font-size="14">19.0 ms</text>
|
||||
<rect x="0" y="400" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="424.0" fill="black" font-family="Arial" font-size="14">Left / Right Rotations (`left_rotate`, `right_rotate`)</text>
|
||||
<rect x="344.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="391.0" y="424.0" fill="black" font-family="Arial" font-size="14">3.5 ms</text>
|
||||
<rect x="476.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="424.0" fill="black" font-family="Arial" font-size="14">3.63 ms</text>
|
||||
<rect x="608.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="424.0" fill="black" font-family="Arial" font-size="14">4.11 ms</text>
|
||||
<rect x="740.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="424.0" fill="black" font-family="Arial" font-size="14">4.64 ms</text>
|
||||
<rect x="872.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="424.0" fill="black" font-family="Arial" font-size="14">6.03 ms</text>
|
||||
<rect x="1004.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="424.0" fill="black" font-family="Arial" font-size="14">11.3 ms</text>
|
||||
<rect x="1136.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="424.0" fill="black" font-family="Arial" font-size="14">19.0 ms</text>
|
||||
|
||||
<!-- Borders -->
|
||||
<line x1="0" y1="0" x2="0" y2="440" stroke="white" />
|
||||
<line x1="344.0" y1="0" x2="344.0" y2="440" stroke="white" />
|
||||
<line x1="476.0" y1="0" x2="476.0" y2="440" stroke="white" />
|
||||
<line x1="608.0" y1="0" x2="608.0" y2="440" stroke="white" />
|
||||
<line x1="740.0" y1="0" x2="740.0" y2="440" stroke="white" />
|
||||
<line x1="872.0" y1="0" x2="872.0" y2="440" stroke="white" />
|
||||
<line x1="1004.0" y1="0" x2="1004.0" y2="440" stroke="white" />
|
||||
<line x1="1136.0" y1="0" x2="1136.0" y2="440" stroke="white" />
|
||||
<line x1="0" y1="0" x2="1268.0" y2="0" stroke="white" />
|
||||
<line x1="0" y1="40" x2="1268.0" y2="40" stroke="white" />
|
||||
<line x1="0" y1="80" x2="1268.0" y2="80" stroke="white" />
|
||||
<line x1="0" y1="120" x2="1268.0" y2="120" stroke="white" />
|
||||
<line x1="0" y1="160" x2="1268.0" y2="160" stroke="white" />
|
||||
<line x1="0" y1="200" x2="1268.0" y2="200" stroke="white" />
|
||||
<line x1="0" y1="240" x2="1268.0" y2="240" stroke="white" />
|
||||
<line x1="0" y1="280" x2="1268.0" y2="280" stroke="white" />
|
||||
<line x1="0" y1="320" x2="1268.0" y2="320" stroke="white" />
|
||||
<line x1="0" y1="360" x2="1268.0" y2="360" stroke="white" />
|
||||
<line x1="0" y1="400" x2="1268.0" y2="400" stroke="white" />
|
||||
<line x1="0" y1="440" x2="1268.0" y2="440" stroke="white" />
|
||||
<?xml version="1.0" ?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 440" preserveAspectRatio="meet" width="100%" height="440">
|
||||
<rect x="0" y="0" width="720" height="40" fill="black"/>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="6" y="20.0">Operation \ Size</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="342.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="342.0" y="29.666666666666668">8</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="426.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="426.0" y="29.666666666666668">16</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="510.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="510.0" y="29.666666666666668">32</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="594.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="594.0" y="29.666666666666668">64</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="678.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="678.0" y="29.666666666666668">128</text>
|
||||
<rect x="0" y="40" width="300" height="400" fill="#fbbc04"/>
|
||||
<rect x="300" y="40" width="420" height="400" fill="#f3f3f3"/>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="60.0">Add / Sub (+,-)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="60.0">11.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="60.0">12.6 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="60.0">17.8 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="60.0">25.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="60.0">51.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="100.0">Mul (x)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="100.0">18.1 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="100.0">26.1 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="100.0">46.6 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="100.0">109 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="100.0">330 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="140.0">Equal / Not Equal (eq, ne)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="140.0">7.81 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="140.0">8.08 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="140.0">12.0 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="140.0">13.0 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="140.0">18.8 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="180.0">Comparisons (ge, gt, le, lt)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="180.0">9.61 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="180.0">13.3 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="180.0">17.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="180.0">22.3 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="180.0">29.0 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="220.0">Max / Min (max, min)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="220.0">17.3 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="220.0">21.9 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="220.0">28.1 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="220.0">39.7 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="220.0">59.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="260.0">Bitwise operations (&, |, ^)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="260.0">3.63 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="260.0">4.11 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="260.0">4.65 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="260.0">6.03 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="260.0">11.2 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="300.0">Div (/)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="300.0">28.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="300.0">41.6 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="300.0">83.7 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="300.0">214 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="300.0">664 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="340.0">Rem (%)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="340.0">56.5 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="340.0">80.6 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="340.0">149 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="340.0">351 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="340.0">1.04 s</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="380.0">Left / Right Shifts (<<, >>)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="380.0">3.63 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="380.0">4.1 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="380.0">4.63 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="380.0">6.03 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="380.0">11.2 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="420.0">Left / Right Rotations (left_rotate, right_rotate)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="420.0">3.63 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="420.0">4.11 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="420.0">4.64 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="420.0">6.03 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="420.0">11.3 ms</text>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="0" x2="720" y2="0"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="40" x2="720" y2="40"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="80" x2="720" y2="80"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="120" x2="720" y2="120"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="160" x2="720" y2="160"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="200" x2="720" y2="200"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="240" x2="720" y2="240"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="280" x2="720" y2="280"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="320" x2="720" y2="320"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="360" x2="720" y2="360"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="400" x2="720" y2="400"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="0" x2="0" y2="440"/>
|
||||
<line stroke="white" stroke-width="2" x1="300.0" y1="0" x2="300.0" y2="440"/>
|
||||
<line stroke="white" stroke-width="2" x1="384.0" y1="0" x2="384.0" y2="440"/>
|
||||
<line stroke="white" stroke-width="2" x1="468.0" y1="0" x2="468.0" y2="440"/>
|
||||
<line stroke="white" stroke-width="2" x1="552.0" y1="0" x2="552.0" y2="440"/>
|
||||
<line stroke="white" stroke-width="2" x1="636.0" y1="0" x2="636.0" y2="440"/>
|
||||
<line stroke="white" stroke-width="2" x1="720.0" y1="0" x2="720.0" y2="440"/>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 13 KiB |
@@ -1,247 +1,116 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1268.0" height="560" viewBox="0 0 1268.0 560">
|
||||
<!-- Header Row -->
|
||||
<rect x="0" y="0" width="1268.0" height="40" fill="black" />
|
||||
<text x="10" y="24.0" fill="white" font-family="Arial" font-size="14">Operation \ Size</text>
|
||||
<text x="383.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint4</text>
|
||||
<text x="515.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint8</text>
|
||||
<text x="643.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint16</text>
|
||||
<text x="775.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint32</text>
|
||||
<text x="907.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint64</text>
|
||||
<text x="1035.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint128</text>
|
||||
<text x="1167.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint256</text>
|
||||
|
||||
<!-- Data Rows -->
|
||||
<rect x="0" y="40" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="64.0" fill="black" font-family="Arial" font-size="14">Negation (`-`)</text>
|
||||
<rect x="344.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="64.0" fill="black" font-family="Arial" font-size="14">11.2 ms</text>
|
||||
<rect x="476.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="64.0" fill="black" font-family="Arial" font-size="14">11.4 ms</text>
|
||||
<rect x="608.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="64.0" fill="black" font-family="Arial" font-size="14">11.6 ms</text>
|
||||
<rect x="740.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="64.0" fill="black" font-family="Arial" font-size="14">16.4 ms</text>
|
||||
<rect x="872.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="64.0" fill="black" font-family="Arial" font-size="14">21.9 ms</text>
|
||||
<rect x="1004.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="64.0" fill="black" font-family="Arial" font-size="14">36.7 ms</text>
|
||||
<rect x="1136.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="64.0" fill="black" font-family="Arial" font-size="14">57.6 ms</text>
|
||||
<rect x="0" y="80" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="104.0" fill="black" font-family="Arial" font-size="14">Add / Sub (`+`,`-`)</text>
|
||||
<rect x="344.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="104.0" fill="black" font-family="Arial" font-size="14">11.2 ms</text>
|
||||
<rect x="476.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="104.0" fill="black" font-family="Arial" font-size="14">11.4 ms</text>
|
||||
<rect x="608.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="104.0" fill="black" font-family="Arial" font-size="14">11.7 ms</text>
|
||||
<rect x="740.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="104.0" fill="black" font-family="Arial" font-size="14">16.4 ms</text>
|
||||
<rect x="872.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="104.0" fill="black" font-family="Arial" font-size="14">21.9 ms</text>
|
||||
<rect x="1004.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="104.0" fill="black" font-family="Arial" font-size="14">36.7 ms</text>
|
||||
<rect x="1136.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="104.0" fill="black" font-family="Arial" font-size="14">57.6 ms</text>
|
||||
<rect x="0" y="120" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="144.0" fill="black" font-family="Arial" font-size="14">Mul (`x`)</text>
|
||||
<rect x="344.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="144.0" fill="black" font-family="Arial" font-size="14">18.4 ms</text>
|
||||
<rect x="476.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="144.0" fill="black" font-family="Arial" font-size="14">22.7 ms</text>
|
||||
<rect x="608.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="144.0" fill="black" font-family="Arial" font-size="14">31.3 ms</text>
|
||||
<rect x="740.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="144.0" fill="black" font-family="Arial" font-size="14">63.4 ms</text>
|
||||
<rect x="872.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="919.0" y="144.0" fill="black" font-family="Arial" font-size="14">164 ms</text>
|
||||
<rect x="1004.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="144.0" fill="black" font-family="Arial" font-size="14">545 ms</text>
|
||||
<rect x="1136.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="144.0" fill="black" font-family="Arial" font-size="14">2.11 s</text>
|
||||
<rect x="0" y="160" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="184.0" fill="black" font-family="Arial" font-size="14">Equal / Not Equal (`eq`, `ne`)</text>
|
||||
<rect x="344.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="184.0" fill="black" font-family="Arial" font-size="14">7.81 ms</text>
|
||||
<rect x="476.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="184.0" fill="black" font-family="Arial" font-size="14">7.95 ms</text>
|
||||
<rect x="608.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="184.0" fill="black" font-family="Arial" font-size="14">11.6 ms</text>
|
||||
<rect x="740.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="184.0" fill="black" font-family="Arial" font-size="14">12.3 ms</text>
|
||||
<rect x="872.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="184.0" fill="black" font-family="Arial" font-size="14">16.8 ms</text>
|
||||
<rect x="1004.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="184.0" fill="black" font-family="Arial" font-size="14">19.2 ms</text>
|
||||
<rect x="1136.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="184.0" fill="black" font-family="Arial" font-size="14">30.2 ms</text>
|
||||
<rect x="0" y="200" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="224.0" fill="black" font-family="Arial" font-size="14">Comparisons (`ge`, `gt`, `le`, `lt`)</text>
|
||||
<rect x="344.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="224.0" fill="black" font-family="Arial" font-size="14">11.6 ms</text>
|
||||
<rect x="476.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="224.0" fill="black" font-family="Arial" font-size="14">11.7 ms</text>
|
||||
<rect x="608.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="224.0" fill="black" font-family="Arial" font-size="14">15.3 ms</text>
|
||||
<rect x="740.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="224.0" fill="black" font-family="Arial" font-size="14">19.7 ms</text>
|
||||
<rect x="872.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="224.0" fill="black" font-family="Arial" font-size="14">24.6 ms</text>
|
||||
<rect x="1004.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="224.0" fill="black" font-family="Arial" font-size="14">31.6 ms</text>
|
||||
<rect x="1136.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="224.0" fill="black" font-family="Arial" font-size="14">45.8 ms</text>
|
||||
<rect x="0" y="240" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="264.0" fill="black" font-family="Arial" font-size="14">Max / Min (`max`,`min`)</text>
|
||||
<rect x="344.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="264.0" fill="black" font-family="Arial" font-size="14">18.7 ms</text>
|
||||
<rect x="476.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="264.0" fill="black" font-family="Arial" font-size="14">18.9 ms</text>
|
||||
<rect x="608.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="264.0" fill="black" font-family="Arial" font-size="14">23.3 ms</text>
|
||||
<rect x="740.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="264.0" fill="black" font-family="Arial" font-size="14">28.7 ms</text>
|
||||
<rect x="872.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="264.0" fill="black" font-family="Arial" font-size="14">35.9 ms</text>
|
||||
<rect x="1004.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="264.0" fill="black" font-family="Arial" font-size="14">50.0 ms</text>
|
||||
<rect x="1136.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="264.0" fill="black" font-family="Arial" font-size="14">77.4 ms</text>
|
||||
<rect x="0" y="280" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="304.0" fill="black" font-family="Arial" font-size="14">Bitwise operations (`&`, `|`, `^`)</text>
|
||||
<rect x="344.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="304.0" fill="black" font-family="Arial" font-size="14">3.52 ms</text>
|
||||
<rect x="476.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="304.0" fill="black" font-family="Arial" font-size="14">3.54 ms</text>
|
||||
<rect x="608.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="304.0" fill="black" font-family="Arial" font-size="14">3.66 ms</text>
|
||||
<rect x="740.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="304.0" fill="black" font-family="Arial" font-size="14">4.24 ms</text>
|
||||
<rect x="872.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="304.0" fill="black" font-family="Arial" font-size="14">4.82 ms</text>
|
||||
<rect x="1004.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="304.0" fill="black" font-family="Arial" font-size="14">6.43 ms</text>
|
||||
<rect x="1136.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="304.0" fill="black" font-family="Arial" font-size="14">12.0 ms</text>
|
||||
<rect x="0" y="320" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="344.0" fill="black" font-family="Arial" font-size="14">Div / Rem (`/`, `%`)</text>
|
||||
<rect x="344.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="391.0" y="344.0" fill="black" font-family="Arial" font-size="14">122 ms</text>
|
||||
<rect x="476.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="523.0" y="344.0" fill="black" font-family="Arial" font-size="14">273 ms</text>
|
||||
<rect x="608.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="655.0" y="344.0" fill="black" font-family="Arial" font-size="14">580 ms</text>
|
||||
<rect x="740.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="787.0" y="344.0" fill="black" font-family="Arial" font-size="14">1.28 s</text>
|
||||
<rect x="872.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="919.0" y="344.0" fill="black" font-family="Arial" font-size="14">2.97 s</text>
|
||||
<rect x="1004.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="344.0" fill="black" font-family="Arial" font-size="14">7.41 s</text>
|
||||
<rect x="1136.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="344.0" fill="black" font-family="Arial" font-size="14">20.4 s</text>
|
||||
<rect x="0" y="360" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="384.0" fill="black" font-family="Arial" font-size="14">Left / Right Shifts (`<<`, `>>`)</text>
|
||||
<rect x="344.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="384.0" fill="black" font-family="Arial" font-size="14">17.9 ms</text>
|
||||
<rect x="476.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="384.0" fill="black" font-family="Arial" font-size="14">21.8 ms</text>
|
||||
<rect x="608.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="384.0" fill="black" font-family="Arial" font-size="14">27.9 ms</text>
|
||||
<rect x="740.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="384.0" fill="black" font-family="Arial" font-size="14">36.5 ms</text>
|
||||
<rect x="872.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="384.0" fill="black" font-family="Arial" font-size="14">53.1 ms</text>
|
||||
<rect x="1004.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="384.0" fill="black" font-family="Arial" font-size="14">106 ms</text>
|
||||
<rect x="1136.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="384.0" fill="black" font-family="Arial" font-size="14">197 ms</text>
|
||||
<rect x="0" y="400" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="424.0" fill="black" font-family="Arial" font-size="14">Left / Right Rotations (`left_rotate`, `right_rotate`)</text>
|
||||
<rect x="344.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="424.0" fill="black" font-family="Arial" font-size="14">17.9 ms</text>
|
||||
<rect x="476.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="424.0" fill="black" font-family="Arial" font-size="14">21.8 ms</text>
|
||||
<rect x="608.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="424.0" fill="black" font-family="Arial" font-size="14">27.9 ms</text>
|
||||
<rect x="740.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="424.0" fill="black" font-family="Arial" font-size="14">36.5 ms</text>
|
||||
<rect x="872.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="424.0" fill="black" font-family="Arial" font-size="14">53.2 ms</text>
|
||||
<rect x="1004.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="424.0" fill="black" font-family="Arial" font-size="14">106 ms</text>
|
||||
<rect x="1136.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="424.0" fill="black" font-family="Arial" font-size="14">197 ms</text>
|
||||
<rect x="0" y="440" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="464.0" fill="black" font-family="Arial" font-size="14">Leading / Trailing zeros/ones</text>
|
||||
<rect x="344.0" y="440" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="464.0" fill="black" font-family="Arial" font-size="14">29.5 ms</text>
|
||||
<rect x="476.0" y="440" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="464.0" fill="black" font-family="Arial" font-size="14">25.5 ms</text>
|
||||
<rect x="608.0" y="440" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="464.0" fill="black" font-family="Arial" font-size="14">32.9 ms</text>
|
||||
<rect x="740.0" y="440" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="464.0" fill="black" font-family="Arial" font-size="14">42.9 ms</text>
|
||||
<rect x="872.0" y="440" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="464.0" fill="black" font-family="Arial" font-size="14">56.5 ms</text>
|
||||
<rect x="1004.0" y="440" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="464.0" fill="black" font-family="Arial" font-size="14">78.5 ms</text>
|
||||
<rect x="1136.0" y="440" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="464.0" fill="black" font-family="Arial" font-size="14">136 ms</text>
|
||||
<rect x="0" y="480" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="504.0" fill="black" font-family="Arial" font-size="14">Log2</text>
|
||||
<rect x="344.0" y="480" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="504.0" fill="black" font-family="Arial" font-size="14">32.6 ms</text>
|
||||
<rect x="476.0" y="480" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="504.0" fill="black" font-family="Arial" font-size="14">43.8 ms</text>
|
||||
<rect x="608.0" y="480" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="504.0" fill="black" font-family="Arial" font-size="14">57.7 ms</text>
|
||||
<rect x="740.0" y="480" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="504.0" fill="black" font-family="Arial" font-size="14">99.5 ms</text>
|
||||
<rect x="872.0" y="480" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="919.0" y="504.0" fill="black" font-family="Arial" font-size="14">280 ms</text>
|
||||
<rect x="1004.0" y="480" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="504.0" fill="black" font-family="Arial" font-size="14">962 ms</text>
|
||||
<rect x="1136.0" y="480" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="504.0" fill="black" font-family="Arial" font-size="14">4.78 s</text>
|
||||
<rect x="0" y="520" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="544.0" fill="black" font-family="Arial" font-size="14">Select</text>
|
||||
<rect x="344.0" y="520" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="544.0" fill="black" font-family="Arial" font-size="14">7.08 ms</text>
|
||||
<rect x="476.0" y="520" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="544.0" fill="black" font-family="Arial" font-size="14">7.38 ms</text>
|
||||
<rect x="608.0" y="520" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="544.0" fill="black" font-family="Arial" font-size="14">7.98 ms</text>
|
||||
<rect x="740.0" y="520" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="544.0" fill="black" font-family="Arial" font-size="14">9.02 ms</text>
|
||||
<rect x="872.0" y="520" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="544.0" fill="black" font-family="Arial" font-size="14">11.3 ms</text>
|
||||
<rect x="1004.0" y="520" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="544.0" fill="black" font-family="Arial" font-size="14">18.6 ms</text>
|
||||
<rect x="1136.0" y="520" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="544.0" fill="black" font-family="Arial" font-size="14">32.8 ms</text>
|
||||
|
||||
<!-- Borders -->
|
||||
<line x1="0" y1="0" x2="0" y2="560" stroke="white" />
|
||||
<line x1="344.0" y1="0" x2="344.0" y2="560" stroke="white" />
|
||||
<line x1="476.0" y1="0" x2="476.0" y2="560" stroke="white" />
|
||||
<line x1="608.0" y1="0" x2="608.0" y2="560" stroke="white" />
|
||||
<line x1="740.0" y1="0" x2="740.0" y2="560" stroke="white" />
|
||||
<line x1="872.0" y1="0" x2="872.0" y2="560" stroke="white" />
|
||||
<line x1="1004.0" y1="0" x2="1004.0" y2="560" stroke="white" />
|
||||
<line x1="1136.0" y1="0" x2="1136.0" y2="560" stroke="white" />
|
||||
<line x1="0" y1="0" x2="1268.0" y2="0" stroke="white" />
|
||||
<line x1="0" y1="40" x2="1268.0" y2="40" stroke="white" />
|
||||
<line x1="0" y1="80" x2="1268.0" y2="80" stroke="white" />
|
||||
<line x1="0" y1="120" x2="1268.0" y2="120" stroke="white" />
|
||||
<line x1="0" y1="160" x2="1268.0" y2="160" stroke="white" />
|
||||
<line x1="0" y1="200" x2="1268.0" y2="200" stroke="white" />
|
||||
<line x1="0" y1="240" x2="1268.0" y2="240" stroke="white" />
|
||||
<line x1="0" y1="280" x2="1268.0" y2="280" stroke="white" />
|
||||
<line x1="0" y1="320" x2="1268.0" y2="320" stroke="white" />
|
||||
<line x1="0" y1="360" x2="1268.0" y2="360" stroke="white" />
|
||||
<line x1="0" y1="400" x2="1268.0" y2="400" stroke="white" />
|
||||
<line x1="0" y1="440" x2="1268.0" y2="440" stroke="white" />
|
||||
<line x1="0" y1="480" x2="1268.0" y2="480" stroke="white" />
|
||||
<line x1="0" y1="520" x2="1268.0" y2="520" stroke="white" />
|
||||
<line x1="0" y1="560" x2="1268.0" y2="560" stroke="white" />
|
||||
<?xml version="1.0" ?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 560" preserveAspectRatio="meet" width="100%" height="560">
|
||||
<rect x="0" y="0" width="720" height="40" fill="black"/>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="6" y="20.0">Operation \ Size</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="342.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="342.0" y="29.666666666666668">8</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="426.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="426.0" y="29.666666666666668">16</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="510.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="510.0" y="29.666666666666668">32</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="594.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="594.0" y="29.666666666666668">64</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="678.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="678.0" y="29.666666666666668">128</text>
|
||||
<rect x="0" y="40" width="300" height="520" fill="#fbbc04"/>
|
||||
<rect x="300" y="40" width="420" height="520" fill="#f3f3f3"/>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="60.0">Negation (-)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="60.0">11.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="60.0">11.6 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="60.0">16.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="60.0">21.9 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="60.0">36.7 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="100.0">Add / Sub (+,-)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="100.0">11.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="100.0">11.7 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="100.0">16.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="100.0">21.9 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="100.0">36.7 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="140.0">Mul (x)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="140.0">22.7 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="140.0">31.3 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="140.0">63.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="140.0">164 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="140.0">545 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="180.0">Equal / Not Equal (eq, ne)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="180.0">7.95 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="180.0">11.6 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="180.0">12.3 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="180.0">16.8 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="180.0">19.2 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="220.0">Comparisons (ge, gt, le, lt)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="220.0">11.7 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="220.0">15.3 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="220.0">19.7 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="220.0">24.6 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="220.0">31.6 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="260.0">Max / Min (max, min)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="260.0">18.9 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="260.0">23.3 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="260.0">28.7 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="260.0">35.9 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="260.0">50.0 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="300.0">Bitwise operations (&, |, ^)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="300.0">3.54 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="300.0">3.66 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="300.0">4.24 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="300.0">4.82 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="300.0">6.43 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="340.0">Div / Rem (/, %)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="340.0">273 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="340.0">580 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="340.0">1.28 s</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="340.0">2.97 s</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="340.0">7.41 s</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="380.0">Left / Right Shifts (<<, >>)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="380.0">21.8 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="380.0">27.9 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="380.0">36.5 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="380.0">53.1 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="380.0">106 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="420.0">Left / Right Rotations (left_rotate, right_rotate)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="420.0">21.8 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="420.0">27.9 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="420.0">36.5 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="420.0">53.2 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="420.0">106 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="460.0">Leading / Trailing zeros/ones</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="460.0">25.5 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="460.0">32.9 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="460.0">42.9 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="460.0">56.5 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="460.0">78.5 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="500.0">Log2</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="500.0">43.8 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="500.0">57.7 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="500.0">99.5 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="500.0">280 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="500.0">962 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="540.0">Select</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="540.0">7.38 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="540.0">7.98 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="540.0">9.02 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="540.0">11.3 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="540.0">18.6 ms</text>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="0" x2="720" y2="0"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="40" x2="720" y2="40"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="80" x2="720" y2="80"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="120" x2="720" y2="120"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="160" x2="720" y2="160"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="200" x2="720" y2="200"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="240" x2="720" y2="240"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="280" x2="720" y2="280"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="320" x2="720" y2="320"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="360" x2="720" y2="360"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="400" x2="720" y2="400"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="440" x2="720" y2="440"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="480" x2="720" y2="480"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="520" x2="720" y2="520"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="0" x2="0" y2="560"/>
|
||||
<line stroke="white" stroke-width="2" x1="300.0" y1="0" x2="300.0" y2="560"/>
|
||||
<line stroke="white" stroke-width="2" x1="384.0" y1="0" x2="384.0" y2="560"/>
|
||||
<line stroke="white" stroke-width="2" x1="468.0" y1="0" x2="468.0" y2="560"/>
|
||||
<line stroke="white" stroke-width="2" x1="552.0" y1="0" x2="552.0" y2="560"/>
|
||||
<line stroke="white" stroke-width="2" x1="636.0" y1="0" x2="636.0" y2="560"/>
|
||||
<line stroke="white" stroke-width="2" x1="720.0" y1="0" x2="720.0" y2="560"/>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 16 KiB |
@@ -1,196 +1,95 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1268.0" height="440" viewBox="0 0 1268.0 440">
|
||||
<!-- Header Row -->
|
||||
<rect x="0" y="0" width="1268.0" height="40" fill="black" />
|
||||
<text x="10" y="24.0" fill="white" font-family="Arial" font-size="14">Operation \ Size</text>
|
||||
<text x="383.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint4</text>
|
||||
<text x="515.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint8</text>
|
||||
<text x="643.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint16</text>
|
||||
<text x="775.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint32</text>
|
||||
<text x="907.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint64</text>
|
||||
<text x="1035.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint128</text>
|
||||
<text x="1167.0" y="24.0" fill="white" font-family="Arial" font-size="14">FheUint256</text>
|
||||
|
||||
<!-- Data Rows -->
|
||||
<rect x="0" y="40" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="64.0" fill="black" font-family="Arial" font-size="14">Add / Sub (`+`,`-`)</text>
|
||||
<rect x="344.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="64.0" fill="black" font-family="Arial" font-size="14">11.2 ms</text>
|
||||
<rect x="476.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="64.0" fill="black" font-family="Arial" font-size="14">11.4 ms</text>
|
||||
<rect x="608.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="64.0" fill="black" font-family="Arial" font-size="14">11.7 ms</text>
|
||||
<rect x="740.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="64.0" fill="black" font-family="Arial" font-size="14">16.5 ms</text>
|
||||
<rect x="872.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="64.0" fill="black" font-family="Arial" font-size="14">22.0 ms</text>
|
||||
<rect x="1004.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="64.0" fill="black" font-family="Arial" font-size="14">36.8 ms</text>
|
||||
<rect x="1136.0" y="40" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="64.0" fill="black" font-family="Arial" font-size="14">57.8 ms</text>
|
||||
<rect x="0" y="80" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="104.0" fill="black" font-family="Arial" font-size="14">Mul (`x`)</text>
|
||||
<rect x="344.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="104.0" fill="black" font-family="Arial" font-size="14">11.5 ms</text>
|
||||
<rect x="476.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="104.0" fill="black" font-family="Arial" font-size="14">18.1 ms</text>
|
||||
<rect x="608.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="104.0" fill="black" font-family="Arial" font-size="14">24.9 ms</text>
|
||||
<rect x="740.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="104.0" fill="black" font-family="Arial" font-size="14">41.7 ms</text>
|
||||
<rect x="872.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="104.0" fill="black" font-family="Arial" font-size="14">93.5 ms</text>
|
||||
<rect x="1004.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="104.0" fill="black" font-family="Arial" font-size="14">271 ms</text>
|
||||
<rect x="1136.0" y="80" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="104.0" fill="black" font-family="Arial" font-size="14">991 ms</text>
|
||||
<rect x="0" y="120" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="144.0" fill="black" font-family="Arial" font-size="14">Equal / Not Equal (`eq`, `ne`)</text>
|
||||
<rect x="344.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="144.0" fill="black" font-family="Arial" font-size="14">8.04 ms</text>
|
||||
<rect x="476.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="144.0" fill="black" font-family="Arial" font-size="14">8.26 ms</text>
|
||||
<rect x="608.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="144.0" fill="black" font-family="Arial" font-size="14">8.53 ms</text>
|
||||
<rect x="740.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="144.0" fill="black" font-family="Arial" font-size="14">12.4 ms</text>
|
||||
<rect x="872.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="144.0" fill="black" font-family="Arial" font-size="14">13.2 ms</text>
|
||||
<rect x="1004.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="144.0" fill="black" font-family="Arial" font-size="14">18.0 ms</text>
|
||||
<rect x="1136.0" y="120" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="144.0" fill="black" font-family="Arial" font-size="14">21.3 ms</text>
|
||||
<rect x="0" y="160" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="184.0" fill="black" font-family="Arial" font-size="14">Comparisons (`ge`, `gt`, `le`, `lt`)</text>
|
||||
<rect x="344.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="391.0" y="184.0" fill="black" font-family="Arial" font-size="14">9.6 ms</text>
|
||||
<rect x="476.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="184.0" fill="black" font-family="Arial" font-size="14">9.95 ms</text>
|
||||
<rect x="608.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="184.0" fill="black" font-family="Arial" font-size="14">13.7 ms</text>
|
||||
<rect x="740.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="184.0" fill="black" font-family="Arial" font-size="14">17.4 ms</text>
|
||||
<rect x="872.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="184.0" fill="black" font-family="Arial" font-size="14">21.7 ms</text>
|
||||
<rect x="1004.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="184.0" fill="black" font-family="Arial" font-size="14">27.4 ms</text>
|
||||
<rect x="1136.0" y="160" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="184.0" fill="black" font-family="Arial" font-size="14">35.3 ms</text>
|
||||
<rect x="0" y="200" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="224.0" fill="black" font-family="Arial" font-size="14">Max / Min (`max`,`min`)</text>
|
||||
<rect x="344.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="224.0" fill="black" font-family="Arial" font-size="14">16.8 ms</text>
|
||||
<rect x="476.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="224.0" fill="black" font-family="Arial" font-size="14">17.0 ms</text>
|
||||
<rect x="608.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="224.0" fill="black" font-family="Arial" font-size="14">21.6 ms</text>
|
||||
<rect x="740.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="224.0" fill="black" font-family="Arial" font-size="14">26.4 ms</text>
|
||||
<rect x="872.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="224.0" fill="black" font-family="Arial" font-size="14">33.4 ms</text>
|
||||
<rect x="1004.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="224.0" fill="black" font-family="Arial" font-size="14">46.2 ms</text>
|
||||
<rect x="1136.0" y="200" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="224.0" fill="black" font-family="Arial" font-size="14">68.1 ms</text>
|
||||
<rect x="0" y="240" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="264.0" fill="black" font-family="Arial" font-size="14">Bitwise operations (`&`, `|`, `^`)</text>
|
||||
<rect x="344.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="264.0" fill="black" font-family="Arial" font-size="14">3.41 ms</text>
|
||||
<rect x="476.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="264.0" fill="black" font-family="Arial" font-size="14">3.64 ms</text>
|
||||
<rect x="608.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="264.0" fill="black" font-family="Arial" font-size="14">3.79 ms</text>
|
||||
<rect x="740.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="264.0" fill="black" font-family="Arial" font-size="14">4.36 ms</text>
|
||||
<rect x="872.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="264.0" fill="black" font-family="Arial" font-size="14">4.91 ms</text>
|
||||
<rect x="1004.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="264.0" fill="black" font-family="Arial" font-size="14">6.54 ms</text>
|
||||
<rect x="1136.0" y="240" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="264.0" fill="black" font-family="Arial" font-size="14">12.1 ms</text>
|
||||
<rect x="0" y="280" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="304.0" fill="black" font-family="Arial" font-size="14">Div (`/`)</text>
|
||||
<rect x="344.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="304.0" fill="black" font-family="Arial" font-size="14">15.7 ms</text>
|
||||
<rect x="476.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="304.0" fill="black" font-family="Arial" font-size="14">26.7 ms</text>
|
||||
<rect x="608.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="304.0" fill="black" font-family="Arial" font-size="14">39.4 ms</text>
|
||||
<rect x="740.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="304.0" fill="black" font-family="Arial" font-size="14">71.8 ms</text>
|
||||
<rect x="872.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="919.0" y="304.0" fill="black" font-family="Arial" font-size="14">176 ms</text>
|
||||
<rect x="1004.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="304.0" fill="black" font-family="Arial" font-size="14">544 ms</text>
|
||||
<rect x="1136.0" y="280" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="304.0" fill="black" font-family="Arial" font-size="14">1.99 s</text>
|
||||
<rect x="0" y="320" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="344.0" fill="black" font-family="Arial" font-size="14">Rem (`%`)</text>
|
||||
<rect x="344.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="344.0" fill="black" font-family="Arial" font-size="14">36.4 ms</text>
|
||||
<rect x="476.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="344.0" fill="black" font-family="Arial" font-size="14">56.9 ms</text>
|
||||
<rect x="608.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="344.0" fill="black" font-family="Arial" font-size="14">77.4 ms</text>
|
||||
<rect x="740.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="787.0" y="344.0" fill="black" font-family="Arial" font-size="14">131 ms</text>
|
||||
<rect x="872.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="919.0" y="344.0" fill="black" font-family="Arial" font-size="14">292 ms</text>
|
||||
<rect x="1004.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1051.0" y="344.0" fill="black" font-family="Arial" font-size="14">839 ms</text>
|
||||
<rect x="1136.0" y="320" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1183.0" y="344.0" fill="black" font-family="Arial" font-size="14">2.97 s</text>
|
||||
<rect x="0" y="360" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="384.0" fill="black" font-family="Arial" font-size="14">Left / Right Shifts (`<<`, `>>`)</text>
|
||||
<rect x="344.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="384.0" fill="black" font-family="Arial" font-size="14">3.54 ms</text>
|
||||
<rect x="476.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="384.0" fill="black" font-family="Arial" font-size="14">3.55 ms</text>
|
||||
<rect x="608.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="655.0" y="384.0" fill="black" font-family="Arial" font-size="14">3.7 ms</text>
|
||||
<rect x="740.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="384.0" fill="black" font-family="Arial" font-size="14">4.28 ms</text>
|
||||
<rect x="872.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="384.0" fill="black" font-family="Arial" font-size="14">4.82 ms</text>
|
||||
<rect x="1004.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="384.0" fill="black" font-family="Arial" font-size="14">6.45 ms</text>
|
||||
<rect x="1136.0" y="360" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="384.0" fill="black" font-family="Arial" font-size="14">11.9 ms</text>
|
||||
<rect x="0" y="400" width="1268.0" height="40" fill="#fbbc04" />
|
||||
<text x="10" y="424.0" fill="black" font-family="Arial" font-size="14">Left / Right Rotations (`left_rotate`, `right_rotate`)</text>
|
||||
<rect x="344.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="387.0" y="424.0" fill="black" font-family="Arial" font-size="14">3.54 ms</text>
|
||||
<rect x="476.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="519.0" y="424.0" fill="black" font-family="Arial" font-size="14">3.55 ms</text>
|
||||
<rect x="608.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="651.0" y="424.0" fill="black" font-family="Arial" font-size="14">3.71 ms</text>
|
||||
<rect x="740.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="783.0" y="424.0" fill="black" font-family="Arial" font-size="14">4.28 ms</text>
|
||||
<rect x="872.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="915.0" y="424.0" fill="black" font-family="Arial" font-size="14">4.82 ms</text>
|
||||
<rect x="1004.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1047.0" y="424.0" fill="black" font-family="Arial" font-size="14">6.46 ms</text>
|
||||
<rect x="1136.0" y="400" width="1268.0" height="40" fill="#f3f3f3" />
|
||||
<text x="1179.0" y="424.0" fill="black" font-family="Arial" font-size="14">12.0 ms</text>
|
||||
|
||||
<!-- Borders -->
|
||||
<line x1="0" y1="0" x2="0" y2="440" stroke="white" />
|
||||
<line x1="344.0" y1="0" x2="344.0" y2="440" stroke="white" />
|
||||
<line x1="476.0" y1="0" x2="476.0" y2="440" stroke="white" />
|
||||
<line x1="608.0" y1="0" x2="608.0" y2="440" stroke="white" />
|
||||
<line x1="740.0" y1="0" x2="740.0" y2="440" stroke="white" />
|
||||
<line x1="872.0" y1="0" x2="872.0" y2="440" stroke="white" />
|
||||
<line x1="1004.0" y1="0" x2="1004.0" y2="440" stroke="white" />
|
||||
<line x1="1136.0" y1="0" x2="1136.0" y2="440" stroke="white" />
|
||||
<line x1="0" y1="0" x2="1268.0" y2="0" stroke="white" />
|
||||
<line x1="0" y1="40" x2="1268.0" y2="40" stroke="white" />
|
||||
<line x1="0" y1="80" x2="1268.0" y2="80" stroke="white" />
|
||||
<line x1="0" y1="120" x2="1268.0" y2="120" stroke="white" />
|
||||
<line x1="0" y1="160" x2="1268.0" y2="160" stroke="white" />
|
||||
<line x1="0" y1="200" x2="1268.0" y2="200" stroke="white" />
|
||||
<line x1="0" y1="240" x2="1268.0" y2="240" stroke="white" />
|
||||
<line x1="0" y1="280" x2="1268.0" y2="280" stroke="white" />
|
||||
<line x1="0" y1="320" x2="1268.0" y2="320" stroke="white" />
|
||||
<line x1="0" y1="360" x2="1268.0" y2="360" stroke="white" />
|
||||
<line x1="0" y1="400" x2="1268.0" y2="400" stroke="white" />
|
||||
<line x1="0" y1="440" x2="1268.0" y2="440" stroke="white" />
|
||||
<?xml version="1.0" ?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 440" preserveAspectRatio="meet" width="100%" height="440">
|
||||
<rect x="0" y="0" width="720" height="40" fill="black"/>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="6" y="20.0">Operation \ Size</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="342.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="342.0" y="29.666666666666668">8</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="426.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="426.0" y="29.666666666666668">16</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="510.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="510.0" y="29.666666666666668">32</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="594.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="594.0" y="29.666666666666668">64</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="678.0" y="13.333333333333334">FheUint</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white" x="678.0" y="29.666666666666668">128</text>
|
||||
<rect x="0" y="40" width="300" height="400" fill="#fbbc04"/>
|
||||
<rect x="300" y="40" width="420" height="400" fill="#f3f3f3"/>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="60.0">Add / Sub (+,-)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="60.0">11.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="60.0">11.7 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="60.0">16.5 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="60.0">22.0 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="60.0">36.8 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="100.0">Mul (x)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="100.0">18.1 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="100.0">24.9 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="100.0">41.7 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="100.0">93.5 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="100.0">271 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="140.0">Equal / Not Equal (eq, ne)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="140.0">8.26 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="140.0">8.53 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="140.0">12.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="140.0">13.2 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="140.0">18.0 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="180.0">Comparisons (ge, gt, le, lt)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="180.0">9.95 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="180.0">13.7 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="180.0">17.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="180.0">21.7 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="180.0">27.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="220.0">Max / Min (max, min)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="220.0">17.0 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="220.0">21.6 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="220.0">26.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="220.0">33.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="220.0">46.2 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="260.0">Bitwise operations (&, |, ^)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="260.0">3.64 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="260.0">3.79 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="260.0">4.36 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="260.0">4.91 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="260.0">6.54 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="300.0">Div (/)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="300.0">26.7 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="300.0">39.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="300.0">71.8 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="300.0">176 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="300.0">544 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="340.0">Rem (%)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="340.0">56.9 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="340.0">77.4 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="340.0">131 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="340.0">292 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="340.0">839 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="380.0">Left / Right Shifts (<<, >>)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="380.0">3.55 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="380.0">3.7 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="380.0">4.28 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="380.0">4.82 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="380.0">6.45 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="start" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="6" y="420.0">Left / Right Rotations (left_rotate, right_rotate)</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="342.0" y="420.0">3.55 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="426.0" y="420.0">3.71 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="510.0" y="420.0">4.28 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="594.0" y="420.0">4.82 ms</text>
|
||||
<text dominant-baseline="middle" text-anchor="middle" font-family="Arial" font-size="14" font-weight="normal" fill="black" x="678.0" y="420.0">6.46 ms</text>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="0" x2="720" y2="0"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="40" x2="720" y2="40"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="80" x2="720" y2="80"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="120" x2="720" y2="120"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="160" x2="720" y2="160"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="200" x2="720" y2="200"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="240" x2="720" y2="240"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="280" x2="720" y2="280"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="320" x2="720" y2="320"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="360" x2="720" y2="360"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="400" x2="720" y2="400"/>
|
||||
<line stroke="white" stroke-width="2" x1="0" y1="0" x2="0" y2="440"/>
|
||||
<line stroke="white" stroke-width="2" x1="300.0" y1="0" x2="300.0" y2="440"/>
|
||||
<line stroke="white" stroke-width="2" x1="384.0" y1="0" x2="384.0" y2="440"/>
|
||||
<line stroke="white" stroke-width="2" x1="468.0" y1="0" x2="468.0" y2="440"/>
|
||||
<line stroke="white" stroke-width="2" x1="552.0" y1="0" x2="552.0" y2="440"/>
|
||||
<line stroke="white" stroke-width="2" x1="636.0" y1="0" x2="636.0" y2="440"/>
|
||||
<line stroke="white" stroke-width="2" x1="720.0" y1="0" x2="720.0" y2="440"/>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 13 KiB |
@@ -12,4 +12,4 @@ make print_doc_bench_parameters
|
||||
|
||||
### Operation time over FheUint 64
|
||||
|
||||

|
||||

|
||||
|
||||
@@ -14,21 +14,21 @@ The following tables benchmark the execution time of some operation sets using `
|
||||
|
||||
The next table shows the operation timings on CPU when all inputs are encrypted:
|
||||
|
||||

|
||||

|
||||
|
||||
The next table shows the operation timings on CPU when the left input is encrypted and the right is a clear scalar of the same size:
|
||||
|
||||

|
||||

|
||||
|
||||
## Pfail: $$2^{-128}$$
|
||||
|
||||
The next table shows the operation timings on CPU when all inputs are encrypted:
|
||||
|
||||

|
||||

|
||||
|
||||
The next table shows the operation timings on CPU when the left input is encrypted and the right is a clear scalar of the same size:
|
||||
|
||||

|
||||

|
||||
|
||||
All timings are based on parallelized Radix-based integer operations where each block is encrypted using the default parameters `PARAM_MESSAGE_2_CARRY_2_KS_PBS`. To ensure predictable timings, we perform operations in the `default` mode, which ensures that the input and output encoding are similar (i.e., the carries are always emptied).
|
||||
|
||||
|
||||
@@ -13,15 +13,15 @@ Note that these benchmarks use Gaussian parameters. `MB-PBS` stands for multi-bi
|
||||
|
||||
## P-fail: $$2^{-40}$$
|
||||
|
||||

|
||||

|
||||
|
||||
## P-fail: $$2^{-64}$$
|
||||
|
||||

|
||||

|
||||
|
||||
## P-fail: $$2^{-128}$$
|
||||
|
||||

|
||||

|
||||
|
||||
## Reproducing TFHE-rs benchmarks
|
||||
|
||||
|
||||
@@ -12,22 +12,22 @@ The cryptographic parameters `PARAM_GPU_MULTI_BIT_MESSAGE_2_CARRY_2_GROUP_3_KS_P
|
||||
Below come the results for the execution on a single H100.
|
||||
The following table shows the performance when the inputs of the benchmarked operation are encrypted:
|
||||
|
||||

|
||||

|
||||
|
||||
The following table shows the performance when the left input of the benchmarked operation is encrypted and the other is a clear scalar of the same size:
|
||||
|
||||

|
||||

|
||||
|
||||
## 2xH100
|
||||
|
||||
Below come the results for the execution on two H100's.
|
||||
The following table shows the performance when the inputs of the benchmarked operation are encrypted:
|
||||
|
||||

|
||||

|
||||
|
||||
The following table shows the performance when the left input of the benchmarked operation is encrypted and the other is a clear scalar of the same size:
|
||||
|
||||

|
||||

|
||||
|
||||
## Reproducing TFHE-rs benchmarks
|
||||
|
||||
|
||||
@@ -8,11 +8,11 @@ All GPU benchmarks were launched on H100 GPUs, and rely on the multithreaded PBS
|
||||
|
||||
## P-fail: $$2^{-40}$$
|
||||
|
||||

|
||||

|
||||
|
||||
## P-fail: $$2^{-64}$$
|
||||
|
||||

|
||||

|
||||
|
||||
## Reproducing TFHE-rs benchmarks
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ use crate::core_crypto::prelude::{CastFrom, CastInto, Numeric};
|
||||
use crate::integer::bigint::static_signed::StaticSignedBigInt;
|
||||
use crate::integer::bigint::static_unsigned::StaticUnsignedBigInt;
|
||||
use core::ops::{AddAssign, BitAnd, ShlAssign, ShrAssign};
|
||||
use std::ops::{BitOrAssign, Shl, Sub};
|
||||
use std::ops::{BitOrAssign, Not, Shl, Shr, Sub};
|
||||
|
||||
// These work for signed number as rust uses 2-Complements
|
||||
// And Arithmetic shift for signed number (logical for unsigned)
|
||||
@@ -14,8 +14,10 @@ pub trait Decomposable:
|
||||
+ ShrAssign<u32>
|
||||
+ Eq
|
||||
+ CastFrom<u32>
|
||||
+ Shr<u32, Output = Self>
|
||||
+ Shl<u32, Output = Self>
|
||||
+ BitOrAssign<Self>
|
||||
+ Not<Output = Self>
|
||||
{
|
||||
}
|
||||
pub trait Recomposable:
|
||||
@@ -86,13 +88,20 @@ impl<const N: usize> RecomposableFrom<u8> for StaticUnsignedBigInt<N> {}
|
||||
impl<const N: usize> DecomposableInto<u64> for StaticUnsignedBigInt<N> {}
|
||||
impl<const N: usize> DecomposableInto<u8> for StaticUnsignedBigInt<N> {}
|
||||
|
||||
#[derive(Copy, Clone)]
|
||||
#[repr(u32)]
|
||||
pub enum PaddingBitValue {
|
||||
Zero = 0,
|
||||
One = 1,
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct BlockDecomposer<T> {
|
||||
data: T,
|
||||
bit_mask: T,
|
||||
num_bits_in_mask: u32,
|
||||
num_bits_valid: u32,
|
||||
padding_bit: T,
|
||||
padding_bit: Option<PaddingBitValue>,
|
||||
limit: Option<T>,
|
||||
}
|
||||
|
||||
@@ -100,19 +109,27 @@ impl<T> BlockDecomposer<T>
|
||||
where
|
||||
T: Decomposable,
|
||||
{
|
||||
/// Creates a block decomposer that will stop when the value reaches zero
|
||||
pub fn with_early_stop_at_zero(value: T, bits_per_block: u32) -> Self {
|
||||
Self::new_(value, bits_per_block, Some(T::ZERO), T::ZERO)
|
||||
Self::new_(value, bits_per_block, Some(T::ZERO), None)
|
||||
}
|
||||
|
||||
pub fn with_padding_bit(value: T, bits_per_block: u32, padding_bit: T) -> Self {
|
||||
Self::new_(value, bits_per_block, None, padding_bit)
|
||||
/// Creates a block decomposer that will set the surplus bits to a specific value
|
||||
/// when bits_per_block is not a multiple of T::BITS
|
||||
pub fn with_padding_bit(value: T, bits_per_block: u32, padding_bit: PaddingBitValue) -> Self {
|
||||
Self::new_(value, bits_per_block, None, Some(padding_bit))
|
||||
}
|
||||
|
||||
pub fn new(value: T, bits_per_block: u32) -> Self {
|
||||
Self::new_(value, bits_per_block, None, T::ZERO)
|
||||
Self::new_(value, bits_per_block, None, None)
|
||||
}
|
||||
|
||||
fn new_(value: T, bits_per_block: u32, limit: Option<T>, padding_bit: T) -> Self {
|
||||
fn new_(
|
||||
value: T,
|
||||
bits_per_block: u32,
|
||||
limit: Option<T>,
|
||||
padding_bit: Option<PaddingBitValue>,
|
||||
) -> Self {
|
||||
assert!(bits_per_block <= T::BITS as u32);
|
||||
let num_bits_valid = T::BITS as u32;
|
||||
|
||||
@@ -129,6 +146,31 @@ where
|
||||
padding_bit,
|
||||
}
|
||||
}
|
||||
|
||||
// We concretize the iterator type to allow usage of callbacks working on iterator for generic
|
||||
// integer encryption
|
||||
pub fn iter_as<V>(self) -> std::iter::Map<Self, fn(T) -> V>
|
||||
where
|
||||
V: Numeric,
|
||||
T: CastInto<V>,
|
||||
{
|
||||
assert!(self.num_bits_in_mask <= V::BITS as u32);
|
||||
self.map(CastInto::cast_into)
|
||||
}
|
||||
|
||||
pub fn next_as<V>(&mut self) -> Option<V>
|
||||
where
|
||||
V: CastFrom<T>,
|
||||
{
|
||||
self.next().map(|masked| V::cast_from(masked))
|
||||
}
|
||||
|
||||
pub fn checked_next_as<V>(&mut self) -> Option<V>
|
||||
where
|
||||
V: TryFrom<T>,
|
||||
{
|
||||
self.next().and_then(|masked| V::try_from(masked).ok())
|
||||
}
|
||||
}
|
||||
|
||||
impl<T> Iterator for BlockDecomposer<T>
|
||||
@@ -159,11 +201,18 @@ where
|
||||
|
||||
if self.num_bits_valid < self.num_bits_in_mask {
|
||||
// This will be the case when self.num_bits_in_mask is not a multiple
|
||||
// of T::BITS. We replace bits that
|
||||
// do not come from the actual T but from the padding
|
||||
// intoduced by the shift, to a specific value.
|
||||
for i in self.num_bits_valid..self.num_bits_in_mask {
|
||||
masked |= self.padding_bit << i;
|
||||
// of T::BITS.
|
||||
//
|
||||
// We replace bits that do not come from the actual T but from the padding
|
||||
// introduced by the shift, to a specific value, if one was provided.
|
||||
if let Some(padding_bit) = self.padding_bit {
|
||||
let padding_mask = (self.bit_mask >> self.num_bits_valid) << self.num_bits_valid;
|
||||
masked = masked & !padding_mask;
|
||||
|
||||
let padding_bit = T::cast_from(padding_bit as u32);
|
||||
for i in self.num_bits_valid..self.num_bits_in_mask {
|
||||
masked |= padding_bit << i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -184,36 +233,6 @@ where
|
||||
}
|
||||
}
|
||||
|
||||
impl<T> BlockDecomposer<T>
|
||||
where
|
||||
T: Decomposable,
|
||||
{
|
||||
// We concretize the iterator type to allow usage of callbacks working on iterator for generic
|
||||
// integer encryption
|
||||
pub fn iter_as<V>(self) -> std::iter::Map<Self, fn(T) -> V>
|
||||
where
|
||||
V: Numeric,
|
||||
T: CastInto<V>,
|
||||
{
|
||||
assert!(self.num_bits_in_mask <= V::BITS as u32);
|
||||
self.map(CastInto::cast_into)
|
||||
}
|
||||
|
||||
pub fn next_as<V>(&mut self) -> Option<V>
|
||||
where
|
||||
V: CastFrom<T>,
|
||||
{
|
||||
self.next().map(|masked| V::cast_from(masked))
|
||||
}
|
||||
|
||||
pub fn checked_next_as<V>(&mut self) -> Option<V>
|
||||
where
|
||||
V: TryFrom<T>,
|
||||
{
|
||||
self.next().and_then(|masked| V::try_from(masked).ok())
|
||||
}
|
||||
}
|
||||
|
||||
pub struct BlockRecomposer<T> {
|
||||
data: T,
|
||||
bit_mask: T,
|
||||
@@ -310,6 +329,36 @@ mod tests {
|
||||
assert_eq!(expected_blocks, blocks);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_bit_block_decomposer_3() {
|
||||
let bits_per_block = 3;
|
||||
|
||||
let value = -1i8;
|
||||
let blocks = BlockDecomposer::new(value, bits_per_block)
|
||||
.iter_as::<u64>()
|
||||
.collect::<Vec<_>>();
|
||||
// We expect the last block padded with 1s as a consequence of arithmetic shift
|
||||
let expected_blocks = vec![7, 7, 7];
|
||||
assert_eq!(expected_blocks, blocks);
|
||||
|
||||
let value = i8::MIN;
|
||||
let blocks = BlockDecomposer::new(value, bits_per_block)
|
||||
.iter_as::<u64>()
|
||||
.collect::<Vec<_>>();
|
||||
// We expect the last block padded with 1s as a consequence of arithmetic shift
|
||||
let expected_blocks = vec![0, 0, 6];
|
||||
assert_eq!(expected_blocks, blocks);
|
||||
|
||||
let value = -1i8;
|
||||
let blocks =
|
||||
BlockDecomposer::with_padding_bit(value, bits_per_block, PaddingBitValue::Zero)
|
||||
.iter_as::<u64>()
|
||||
.collect::<Vec<_>>();
|
||||
// We expect the last block padded with 0s as we force that
|
||||
let expected_blocks = vec![7, 7, 3];
|
||||
assert_eq!(expected_blocks, blocks);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_bit_block_decomposer_recomposer_carry_handling_in_between() {
|
||||
let value = u16::MAX as u32;
|
||||
|
||||
@@ -139,17 +139,17 @@ impl CudaBooleanBlock {
|
||||
let h_lwe_ciphertext_list = self.0.ciphertext.d_blocks.to_lwe_ciphertext_list(streams);
|
||||
let ciphertext_modulus = h_lwe_ciphertext_list.ciphertext_modulus();
|
||||
|
||||
let block = Ciphertext {
|
||||
ct: LweCiphertextOwned::from_container(
|
||||
let block = Ciphertext::new(
|
||||
LweCiphertextOwned::from_container(
|
||||
h_lwe_ciphertext_list.into_container(),
|
||||
ciphertext_modulus,
|
||||
),
|
||||
degree: self.0.ciphertext.info.blocks[0].degree,
|
||||
noise_level: self.0.ciphertext.info.blocks[0].noise_level,
|
||||
message_modulus: self.0.ciphertext.info.blocks[0].message_modulus,
|
||||
carry_modulus: self.0.ciphertext.info.blocks[0].carry_modulus,
|
||||
pbs_order: self.0.ciphertext.info.blocks[0].pbs_order,
|
||||
};
|
||||
self.0.ciphertext.info.blocks[0].degree,
|
||||
self.0.ciphertext.info.blocks[0].noise_level,
|
||||
self.0.ciphertext.info.blocks[0].message_modulus,
|
||||
self.0.ciphertext.info.blocks[0].carry_modulus,
|
||||
self.0.ciphertext.info.blocks[0].pbs_order,
|
||||
);
|
||||
|
||||
BooleanBlock::new_unchecked(block)
|
||||
}
|
||||
|
||||
@@ -161,13 +161,15 @@ impl CudaRadixCiphertext {
|
||||
.into_container()
|
||||
.chunks(lwe_size)
|
||||
.zip(&self.info.blocks)
|
||||
.map(|(data, i)| Ciphertext {
|
||||
ct: LweCiphertextOwned::from_container(data.to_vec(), ciphertext_modulus),
|
||||
degree: i.degree,
|
||||
noise_level: i.noise_level,
|
||||
message_modulus: i.message_modulus,
|
||||
carry_modulus: i.carry_modulus,
|
||||
pbs_order: i.pbs_order,
|
||||
.map(|(data, i)| {
|
||||
Ciphertext::new(
|
||||
LweCiphertextOwned::from_container(data.to_vec(), ciphertext_modulus),
|
||||
i.degree,
|
||||
i.noise_level,
|
||||
i.message_modulus,
|
||||
i.carry_modulus,
|
||||
i.pbs_order,
|
||||
)
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
|
||||
@@ -1249,7 +1249,7 @@ pub unsafe fn unchecked_scalar_comparison_integer_radix_kb_async<T: UnsignedInte
|
||||
/// is required
|
||||
pub unsafe fn full_propagate_assign_async<T: UnsignedInteger, B: Numeric>(
|
||||
streams: &CudaStreams,
|
||||
radix_lwe_input: &mut CudaVec<T>,
|
||||
radix_lwe_input: &mut CudaRadixCiphertext,
|
||||
bootstrapping_key: &CudaVec<B>,
|
||||
keyswitch_key: &CudaVec<T>,
|
||||
lwe_dimension: LweDimension,
|
||||
@@ -1267,7 +1267,7 @@ pub unsafe fn full_propagate_assign_async<T: UnsignedInteger, B: Numeric>(
|
||||
) {
|
||||
assert_eq!(
|
||||
streams.gpu_indexes[0],
|
||||
radix_lwe_input.gpu_index(0),
|
||||
radix_lwe_input.d_blocks.0.d_vec.gpu_index(0),
|
||||
"GPU error: all data should reside on the same GPU."
|
||||
);
|
||||
assert_eq!(
|
||||
@@ -1281,6 +1281,23 @@ pub unsafe fn full_propagate_assign_async<T: UnsignedInteger, B: Numeric>(
|
||||
"GPU error: all data should reside on the same GPU."
|
||||
);
|
||||
let mut mem_ptr: *mut i8 = std::ptr::null_mut();
|
||||
let mut radix_lwe_input_degrees = radix_lwe_input
|
||||
.info
|
||||
.blocks
|
||||
.iter()
|
||||
.map(|b| b.degree.0)
|
||||
.collect();
|
||||
let mut radix_lwe_input_noise_levels = radix_lwe_input
|
||||
.info
|
||||
.blocks
|
||||
.iter()
|
||||
.map(|b| b.noise_level.0)
|
||||
.collect();
|
||||
let mut cuda_ffi_radix_lwe_input = prepare_cuda_radix_ffi(
|
||||
radix_lwe_input,
|
||||
&mut radix_lwe_input_degrees,
|
||||
&mut radix_lwe_input_noise_levels,
|
||||
);
|
||||
scratch_cuda_full_propagation_64(
|
||||
streams.ptr.as_ptr(),
|
||||
streams.gpu_indexes_ptr(),
|
||||
@@ -1303,7 +1320,7 @@ pub unsafe fn full_propagate_assign_async<T: UnsignedInteger, B: Numeric>(
|
||||
streams.ptr.as_ptr(),
|
||||
streams.gpu_indexes_ptr(),
|
||||
streams.len() as u32,
|
||||
radix_lwe_input.as_mut_c_ptr(0),
|
||||
&mut cuda_ffi_radix_lwe_input,
|
||||
mem_ptr,
|
||||
keyswitch_key.ptr.as_ptr(),
|
||||
bootstrapping_key.ptr.as_ptr(),
|
||||
@@ -1315,6 +1332,7 @@ pub unsafe fn full_propagate_assign_async<T: UnsignedInteger, B: Numeric>(
|
||||
streams.len() as u32,
|
||||
std::ptr::addr_of_mut!(mem_ptr),
|
||||
);
|
||||
update_noise_degree(radix_lwe_input, &cuda_ffi_radix_lwe_input);
|
||||
}
|
||||
|
||||
#[allow(clippy::too_many_arguments)]
|
||||
|
||||
@@ -569,7 +569,7 @@ impl CudaServerKey {
|
||||
let output_flag = OutputFlag::from_signedness(CudaSignedRadixCiphertext::IS_SIGNED);
|
||||
|
||||
let mut ct_res = lhs.duplicate_async(stream);
|
||||
let mut carry_out: CudaSignedRadixCiphertext = self
|
||||
let carry_out: CudaSignedRadixCiphertext = self
|
||||
.add_and_propagate_single_carry_assign_async(
|
||||
&mut ct_res,
|
||||
rhs,
|
||||
@@ -578,14 +578,6 @@ impl CudaServerKey {
|
||||
output_flag,
|
||||
);
|
||||
|
||||
if lhs.as_ref().info.blocks.last().unwrap().noise_level == NoiseLevel::ZERO
|
||||
&& rhs.as_ref().info.blocks.last().unwrap().noise_level == NoiseLevel::ZERO
|
||||
{
|
||||
carry_out.as_mut().info = carry_out.as_ref().info.boolean_info(NoiseLevel::ZERO);
|
||||
} else {
|
||||
carry_out.as_mut().info = carry_out.as_ref().info.boolean_info(NoiseLevel::NOMINAL);
|
||||
}
|
||||
|
||||
let ct_overflowed = CudaBooleanBlock::from_cuda_radix_ciphertext(carry_out.ciphertext);
|
||||
|
||||
(ct_res, ct_overflowed)
|
||||
|
||||
@@ -383,7 +383,7 @@ impl CudaServerKey {
|
||||
CudaBootstrappingKey::Classic(d_bsk) => {
|
||||
full_propagate_assign_async(
|
||||
streams,
|
||||
&mut ciphertext.d_blocks.0.d_vec,
|
||||
ciphertext,
|
||||
&d_bsk.d_vec,
|
||||
&self.key_switching_key.d_vec,
|
||||
d_bsk.input_lwe_dimension(),
|
||||
@@ -403,7 +403,7 @@ impl CudaServerKey {
|
||||
CudaBootstrappingKey::MultiBit(d_multibit_bsk) => {
|
||||
full_propagate_assign_async(
|
||||
streams,
|
||||
&mut ciphertext.d_blocks.0.d_vec,
|
||||
ciphertext,
|
||||
&d_multibit_bsk.d_vec,
|
||||
&self.key_switching_key.d_vec,
|
||||
d_multibit_bsk.input_lwe_dimension(),
|
||||
@@ -422,14 +422,6 @@ impl CudaServerKey {
|
||||
}
|
||||
}
|
||||
}
|
||||
ciphertext.info.blocks.iter_mut().for_each(|b| {
|
||||
b.degree = Degree::new(b.message_modulus.0 - 1);
|
||||
b.noise_level = if b.noise_level == NoiseLevel::ZERO {
|
||||
NoiseLevel::ZERO
|
||||
} else {
|
||||
NoiseLevel::NOMINAL
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
/// Prepend trivial zero LSB blocks to an existing [`CudaUnsignedRadixCiphertext`] or
|
||||
|
||||
@@ -49,7 +49,7 @@ impl ServerKey {
|
||||
&& self
|
||||
.key
|
||||
.max_noise_level
|
||||
.validate(ct_i.noise_level * scalar)
|
||||
.validate(ct_i.noise_level() * scalar)
|
||||
.is_ok()
|
||||
{
|
||||
self.key.unchecked_scalar_mul_assign(ct_i, scalar_i);
|
||||
|
||||
@@ -60,7 +60,7 @@ impl ServerKey {
|
||||
&& self
|
||||
.key
|
||||
.max_noise_level
|
||||
.validate(ct_i.noise_level * scalar)
|
||||
.validate(ct_i.noise_level() * scalar)
|
||||
.is_ok()
|
||||
{
|
||||
self.key.unchecked_scalar_mul_assign(ct_i, scalar_i);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
use crate::core_crypto::prelude::Numeric;
|
||||
use crate::integer::block_decomposition::{BlockDecomposer, DecomposableInto};
|
||||
use crate::integer::block_decomposition::{BlockDecomposer, DecomposableInto, PaddingBitValue};
|
||||
use crate::integer::ciphertext::{IntegerRadixCiphertext, RadixCiphertext};
|
||||
use crate::integer::server_key::CheckError;
|
||||
use crate::integer::ServerKey;
|
||||
@@ -92,17 +92,12 @@ impl ServerKey {
|
||||
// The only case where these msb could become 0 after the addition
|
||||
// is if scalar == T::ZERO (=> !T::ZERO == T::MAX => T::MAX + 1 == overflow),
|
||||
// but this case has been handled earlier.
|
||||
let padding_bit = 1u32; // To handle when bits is not a multiple of T::BITS
|
||||
// All bits of message set to one
|
||||
let pad_block = (1 << bits_in_message as u8) - 1;
|
||||
|
||||
let decomposer = BlockDecomposer::with_padding_bit(
|
||||
neg_scalar,
|
||||
bits_in_message,
|
||||
Scalar::cast_from(padding_bit),
|
||||
)
|
||||
.iter_as::<u8>()
|
||||
.chain(std::iter::repeat(pad_block));
|
||||
let decomposer =
|
||||
BlockDecomposer::with_padding_bit(neg_scalar, bits_in_message, PaddingBitValue::One)
|
||||
.iter_as::<u8>()
|
||||
.chain(std::iter::repeat(pad_block));
|
||||
Some(decomposer)
|
||||
}
|
||||
|
||||
|
||||
@@ -65,7 +65,7 @@ impl ServerKey {
|
||||
result
|
||||
.blocks_mut()
|
||||
.par_iter_mut()
|
||||
.filter(|b| b.noise_level > NoiseLevel::NOMINAL)
|
||||
.filter(|b| b.noise_level() > NoiseLevel::NOMINAL)
|
||||
.for_each(|block| self.key.message_extract_assign(block));
|
||||
return result;
|
||||
}
|
||||
@@ -81,7 +81,7 @@ impl ServerKey {
|
||||
ct.blocks().iter().all(|block| self
|
||||
.key
|
||||
.max_noise_level
|
||||
.validate(block.noise_level + NoiseLevel::NOMINAL)
|
||||
.validate(block.noise_level() + NoiseLevel::NOMINAL)
|
||||
.is_ok()),
|
||||
"Blocks of ciphertext to be shifted has a noise level too high"
|
||||
);
|
||||
@@ -152,7 +152,7 @@ impl ServerKey {
|
||||
assert!(current_blocks.iter().all(|block| {
|
||||
self.key
|
||||
.max_noise_level
|
||||
.validate(block.noise_level + shift_bit.noise_level())
|
||||
.validate(block.noise_level() + shift_bit.noise_level())
|
||||
.is_ok()
|
||||
}));
|
||||
|
||||
|
||||
@@ -240,7 +240,7 @@ impl ServerKey {
|
||||
s.spawn(|_| {
|
||||
to_be_cleaned
|
||||
.par_iter_mut()
|
||||
.filter(|block| block.noise_level > NoiseLevel::NOMINAL)
|
||||
.filter(|block| block.noise_level() > NoiseLevel::NOMINAL)
|
||||
.for_each(|block| self.key.message_extract_assign(block));
|
||||
});
|
||||
}
|
||||
|
||||
@@ -169,7 +169,7 @@ impl ServerKey {
|
||||
if !ct1.block_carries_are_empty() {
|
||||
self.full_propagate_parallelized(ct1);
|
||||
}
|
||||
if ct2.noise_level != NoiseLevel::NOMINAL || !ct2.carry_is_empty() {
|
||||
if ct2.noise_level() != NoiseLevel::NOMINAL || !ct2.carry_is_empty() {
|
||||
self.key.message_extract_assign(ct2);
|
||||
}
|
||||
|
||||
|
||||
@@ -447,15 +447,15 @@ where
|
||||
|
||||
let encrypted_result = executor.execute((&ct, &shift));
|
||||
for (i, b) in encrypted_result.blocks.iter().enumerate() {
|
||||
if b.noise_level > NoiseLevel::NOMINAL {
|
||||
println!("{i}: {:?}", b.noise_level);
|
||||
if b.noise_level() > NoiseLevel::NOMINAL {
|
||||
println!("{i}: {:?}", b.noise_level());
|
||||
}
|
||||
}
|
||||
assert!(
|
||||
encrypted_result
|
||||
.blocks
|
||||
.iter()
|
||||
.all(|b| b.noise_level <= NoiseLevel::NOMINAL),
|
||||
.all(|b| b.noise_level() <= NoiseLevel::NOMINAL),
|
||||
"Expected all blocks to have at most NOMINAL noise level"
|
||||
);
|
||||
let decrypted_result: u64 = cks.decrypt_radix(&encrypted_result);
|
||||
@@ -472,7 +472,7 @@ where
|
||||
encrypted_result
|
||||
.blocks
|
||||
.iter()
|
||||
.all(|b| b.noise_level <= NoiseLevel::NOMINAL),
|
||||
.all(|b| b.noise_level() <= NoiseLevel::NOMINAL),
|
||||
"Expected all blocks to have at most NOMINAL noise level"
|
||||
);
|
||||
let decrypted_result: u64 = cks.decrypt_radix(&encrypted_result);
|
||||
@@ -530,7 +530,7 @@ where
|
||||
encrypted_result
|
||||
.blocks
|
||||
.iter()
|
||||
.all(|b| b.noise_level <= NoiseLevel::NOMINAL),
|
||||
.all(|b| b.noise_level() <= NoiseLevel::NOMINAL),
|
||||
"Expected all blocks to have at most NOMINAL noise level"
|
||||
);
|
||||
let decrypted_result: u64 = cks.decrypt_radix(&encrypted_result);
|
||||
@@ -546,7 +546,7 @@ where
|
||||
encrypted_result
|
||||
.blocks
|
||||
.iter()
|
||||
.all(|b| b.noise_level <= NoiseLevel::NOMINAL),
|
||||
.all(|b| b.noise_level() <= NoiseLevel::NOMINAL),
|
||||
"Expected all blocks to have at most NOMINAL noise level"
|
||||
);
|
||||
let decrypted_result: u64 = cks.decrypt_radix(&encrypted_result);
|
||||
@@ -606,7 +606,7 @@ where
|
||||
encrypted_result
|
||||
.blocks
|
||||
.iter()
|
||||
.all(|b| b.noise_level <= NoiseLevel::NOMINAL),
|
||||
.all(|b| b.noise_level() <= NoiseLevel::NOMINAL),
|
||||
"Expected all blocks to have at most NOMINAL noise level"
|
||||
);
|
||||
let expected = rotate_left_helper(clear, clear_shift, nb_bits);
|
||||
@@ -622,7 +622,7 @@ where
|
||||
encrypted_result
|
||||
.blocks
|
||||
.iter()
|
||||
.all(|b| b.noise_level <= NoiseLevel::NOMINAL),
|
||||
.all(|b| b.noise_level() <= NoiseLevel::NOMINAL),
|
||||
"Expected all blocks to have at most NOMINAL noise level"
|
||||
);
|
||||
let decrypted_result: u64 = cks.decrypt_radix(&encrypted_result);
|
||||
@@ -677,7 +677,7 @@ where
|
||||
encrypted_result
|
||||
.blocks
|
||||
.iter()
|
||||
.all(|b| b.noise_level <= NoiseLevel::NOMINAL),
|
||||
.all(|b| b.noise_level() <= NoiseLevel::NOMINAL),
|
||||
"Expected all blocks to have at most NOMINAL noise level"
|
||||
);
|
||||
let decrypted_result: u64 = cks.decrypt_radix(&encrypted_result);
|
||||
@@ -694,7 +694,7 @@ where
|
||||
encrypted_result
|
||||
.blocks
|
||||
.iter()
|
||||
.all(|b| b.noise_level <= NoiseLevel::NOMINAL),
|
||||
.all(|b| b.noise_level() <= NoiseLevel::NOMINAL),
|
||||
"Expected all blocks to have at most NOMINAL noise level"
|
||||
);
|
||||
let decrypted_result: u64 = cks.decrypt_radix(&encrypted_result);
|
||||
@@ -2421,7 +2421,7 @@ where
|
||||
assert!(res
|
||||
.blocks
|
||||
.iter()
|
||||
.all(|b| b.noise_level <= NoiseLevel::NOMINAL));
|
||||
.all(|b| b.noise_level() <= NoiseLevel::NOMINAL));
|
||||
assert_eq!(res, tmp);
|
||||
|
||||
clear = clear.wrapping_mul(clear2.wrapping_mul(multiplier)) % modulus;
|
||||
@@ -2821,7 +2821,7 @@ where
|
||||
assert!(
|
||||
ct.blocks
|
||||
.iter()
|
||||
.all(|b| b.noise_level <= NoiseLevel::NOMINAL),
|
||||
.all(|b| b.noise_level() <= NoiseLevel::NOMINAL),
|
||||
"Invalid noise_level after propagation"
|
||||
);
|
||||
|
||||
@@ -2886,7 +2886,7 @@ where
|
||||
assert!(
|
||||
ct.blocks
|
||||
.iter()
|
||||
.all(|b| b.noise_level <= NoiseLevel::NOMINAL),
|
||||
.all(|b| b.noise_level() <= NoiseLevel::NOMINAL),
|
||||
"Invalid noise_level after propagation"
|
||||
);
|
||||
|
||||
@@ -2968,7 +2968,7 @@ where
|
||||
assert!(
|
||||
ct.blocks
|
||||
.iter()
|
||||
.all(|b| b.noise_level <= NoiseLevel::NOMINAL),
|
||||
.all(|b| b.noise_level() <= NoiseLevel::NOMINAL),
|
||||
"Invalid noise_level after propagation"
|
||||
);
|
||||
|
||||
|
||||
@@ -574,7 +574,7 @@ pub(crate) fn random_op_sequence_test<P>(
|
||||
);
|
||||
res.blocks.iter().enumerate().for_each(|(k, b)| {
|
||||
assert!(
|
||||
b.noise_level <= NoiseLevel::NOMINAL,
|
||||
b.noise_level() <= NoiseLevel::NOMINAL,
|
||||
"Noise level greater than nominal value on op {fn_name} for block {k}",
|
||||
)
|
||||
});
|
||||
@@ -624,7 +624,7 @@ pub(crate) fn random_op_sequence_test<P>(
|
||||
);
|
||||
res.blocks.iter().enumerate().for_each(|(k, b)| {
|
||||
assert!(
|
||||
b.noise_level <= NoiseLevel::NOMINAL,
|
||||
b.noise_level() <= NoiseLevel::NOMINAL,
|
||||
"Noise level greater than nominal value on op {fn_name} for block {k}",
|
||||
)
|
||||
});
|
||||
@@ -665,7 +665,7 @@ pub(crate) fn random_op_sequence_test<P>(
|
||||
);
|
||||
res.blocks.iter().enumerate().for_each(|(k, b)| {
|
||||
assert!(
|
||||
b.noise_level <= NoiseLevel::NOMINAL,
|
||||
b.noise_level() <= NoiseLevel::NOMINAL,
|
||||
"Noise level greater than nominal value on op {fn_name} for block {k}",
|
||||
)
|
||||
});
|
||||
@@ -707,12 +707,12 @@ pub(crate) fn random_op_sequence_test<P>(
|
||||
);
|
||||
res.blocks.iter().enumerate().for_each(|(k, b)| {
|
||||
assert!(
|
||||
b.noise_level <= NoiseLevel::NOMINAL,
|
||||
b.noise_level() <= NoiseLevel::NOMINAL,
|
||||
"Noise level greater than nominal value on op {fn_name} for block {k}",
|
||||
)
|
||||
});
|
||||
assert!(
|
||||
overflow.0.noise_level <= NoiseLevel::NOMINAL,
|
||||
overflow.0.noise_level() <= NoiseLevel::NOMINAL,
|
||||
"Noise level greater than nominal value on overflow for op {fn_name}",
|
||||
);
|
||||
// Determinism check
|
||||
@@ -765,12 +765,12 @@ pub(crate) fn random_op_sequence_test<P>(
|
||||
);
|
||||
res.blocks.iter().enumerate().for_each(|(k, b)| {
|
||||
assert!(
|
||||
b.noise_level <= NoiseLevel::NOMINAL,
|
||||
b.noise_level() <= NoiseLevel::NOMINAL,
|
||||
"Noise level greater than nominal value on op {fn_name} for block {k}",
|
||||
)
|
||||
});
|
||||
assert!(
|
||||
overflow.0.noise_level <= NoiseLevel::NOMINAL,
|
||||
overflow.0.noise_level() <= NoiseLevel::NOMINAL,
|
||||
"Noise level greater than nominal value on overflow for op {fn_name}",
|
||||
);
|
||||
// Determinism check
|
||||
@@ -815,7 +815,7 @@ pub(crate) fn random_op_sequence_test<P>(
|
||||
|
||||
let res = comparison_op_executor.execute((&left_vec[i], &right_vec[i]));
|
||||
assert!(
|
||||
res.0.noise_level <= NoiseLevel::NOMINAL,
|
||||
res.0.noise_level() <= NoiseLevel::NOMINAL,
|
||||
"Noise level greater than nominal value on op {fn_name}",
|
||||
);
|
||||
// Determinism check
|
||||
@@ -852,7 +852,7 @@ pub(crate) fn random_op_sequence_test<P>(
|
||||
|
||||
let res = scalar_comparison_op_executor.execute((&left_vec[i], clear_right_vec[i]));
|
||||
assert!(
|
||||
res.0.noise_level <= NoiseLevel::NOMINAL,
|
||||
res.0.noise_level() <= NoiseLevel::NOMINAL,
|
||||
"Noise level greater than nominal value on op {fn_name}",
|
||||
);
|
||||
// Determinism check
|
||||
@@ -895,7 +895,7 @@ pub(crate) fn random_op_sequence_test<P>(
|
||||
);
|
||||
res.blocks.iter().enumerate().for_each(|(k, b)| {
|
||||
assert!(
|
||||
b.noise_level <= NoiseLevel::NOMINAL,
|
||||
b.noise_level() <= NoiseLevel::NOMINAL,
|
||||
"Noise level greater than nominal value on op {fn_name} for block {k}",
|
||||
)
|
||||
});
|
||||
@@ -942,13 +942,13 @@ pub(crate) fn random_op_sequence_test<P>(
|
||||
);
|
||||
res_q.blocks.iter().enumerate().for_each(|(k, b)| {
|
||||
assert!(
|
||||
b.noise_level <= NoiseLevel::NOMINAL,
|
||||
b.noise_level() <= NoiseLevel::NOMINAL,
|
||||
"Noise level greater than nominal value on op {fn_name} for block {k}",
|
||||
)
|
||||
});
|
||||
res_r.blocks.iter().enumerate().for_each(|(k, b)| {
|
||||
assert!(
|
||||
b.noise_level <= NoiseLevel::NOMINAL,
|
||||
b.noise_level() <= NoiseLevel::NOMINAL,
|
||||
"Noise level greater than nominal value on op {fn_name} for block {k}",
|
||||
)
|
||||
});
|
||||
@@ -1005,13 +1005,13 @@ pub(crate) fn random_op_sequence_test<P>(
|
||||
);
|
||||
res_q.blocks.iter().enumerate().for_each(|(k, b)| {
|
||||
assert!(
|
||||
b.noise_level <= NoiseLevel::NOMINAL,
|
||||
b.noise_level() <= NoiseLevel::NOMINAL,
|
||||
"Noise level greater than nominal value on op {fn_name} for block {k}",
|
||||
)
|
||||
});
|
||||
res_r.blocks.iter().enumerate().for_each(|(k, b)| {
|
||||
assert!(
|
||||
b.noise_level <= NoiseLevel::NOMINAL,
|
||||
b.noise_level() <= NoiseLevel::NOMINAL,
|
||||
"Noise level greater than nominal value on op {fn_name} for block {k}",
|
||||
)
|
||||
});
|
||||
@@ -1073,7 +1073,7 @@ pub(crate) fn random_op_sequence_test<P>(
|
||||
);
|
||||
res.blocks.iter().enumerate().for_each(|(k, b)| {
|
||||
assert!(
|
||||
b.noise_level <= NoiseLevel::NOMINAL,
|
||||
b.noise_level() <= NoiseLevel::NOMINAL,
|
||||
"Noise level greater than nominal value on op {fn_name} for block {k}",
|
||||
)
|
||||
});
|
||||
|
||||
@@ -666,7 +666,7 @@ pub(crate) fn signed_random_op_sequence_test<P>(
|
||||
);
|
||||
res.blocks.iter().enumerate().for_each(|(k, b)| {
|
||||
assert!(
|
||||
b.noise_level <= NoiseLevel::NOMINAL,
|
||||
b.noise_level() <= NoiseLevel::NOMINAL,
|
||||
"Noise level greater than nominal value on op {fn_name} for block {k}",
|
||||
)
|
||||
});
|
||||
@@ -716,7 +716,7 @@ pub(crate) fn signed_random_op_sequence_test<P>(
|
||||
);
|
||||
res.blocks.iter().enumerate().for_each(|(k, b)| {
|
||||
assert!(
|
||||
b.noise_level <= NoiseLevel::NOMINAL,
|
||||
b.noise_level() <= NoiseLevel::NOMINAL,
|
||||
"Noise level greater than nominal value on op {fn_name} for block {k}",
|
||||
)
|
||||
});
|
||||
@@ -757,7 +757,7 @@ pub(crate) fn signed_random_op_sequence_test<P>(
|
||||
);
|
||||
res.blocks.iter().enumerate().for_each(|(k, b)| {
|
||||
assert!(
|
||||
b.noise_level <= NoiseLevel::NOMINAL,
|
||||
b.noise_level() <= NoiseLevel::NOMINAL,
|
||||
"Noise level greater than nominal value on op {fn_name} for block {k}",
|
||||
)
|
||||
});
|
||||
@@ -799,12 +799,12 @@ pub(crate) fn signed_random_op_sequence_test<P>(
|
||||
);
|
||||
res.blocks.iter().enumerate().for_each(|(k, b)| {
|
||||
assert!(
|
||||
b.noise_level <= NoiseLevel::NOMINAL,
|
||||
b.noise_level() <= NoiseLevel::NOMINAL,
|
||||
"Noise level greater than nominal value on op {fn_name} for block {k}",
|
||||
)
|
||||
});
|
||||
assert!(
|
||||
overflow.0.noise_level <= NoiseLevel::NOMINAL,
|
||||
overflow.0.noise_level() <= NoiseLevel::NOMINAL,
|
||||
"Noise level greater than nominal value on overflow for op {fn_name}",
|
||||
);
|
||||
// Determinism check
|
||||
@@ -857,12 +857,12 @@ pub(crate) fn signed_random_op_sequence_test<P>(
|
||||
);
|
||||
res.blocks.iter().enumerate().for_each(|(k, b)| {
|
||||
assert!(
|
||||
b.noise_level <= NoiseLevel::NOMINAL,
|
||||
b.noise_level() <= NoiseLevel::NOMINAL,
|
||||
"Noise level greater than nominal value on op {fn_name} for block {k}",
|
||||
)
|
||||
});
|
||||
assert!(
|
||||
overflow.0.noise_level <= NoiseLevel::NOMINAL,
|
||||
overflow.0.noise_level() <= NoiseLevel::NOMINAL,
|
||||
"Noise level greater than nominal value on overflow for op {fn_name}",
|
||||
);
|
||||
// Determinism check
|
||||
@@ -907,7 +907,7 @@ pub(crate) fn signed_random_op_sequence_test<P>(
|
||||
|
||||
let res = comparison_op_executor.execute((&left_vec[i], &right_vec[i]));
|
||||
assert!(
|
||||
res.0.noise_level <= NoiseLevel::NOMINAL,
|
||||
res.0.noise_level() <= NoiseLevel::NOMINAL,
|
||||
"Noise level greater than nominal value on op {fn_name}",
|
||||
);
|
||||
// Determinism check
|
||||
@@ -944,7 +944,7 @@ pub(crate) fn signed_random_op_sequence_test<P>(
|
||||
|
||||
let res = scalar_comparison_op_executor.execute((&left_vec[i], clear_right_vec[i]));
|
||||
assert!(
|
||||
res.0.noise_level <= NoiseLevel::NOMINAL,
|
||||
res.0.noise_level() <= NoiseLevel::NOMINAL,
|
||||
"Noise level greater than nominal value on op {fn_name}",
|
||||
);
|
||||
// Determinism check
|
||||
@@ -987,7 +987,7 @@ pub(crate) fn signed_random_op_sequence_test<P>(
|
||||
);
|
||||
res.blocks.iter().enumerate().for_each(|(k, b)| {
|
||||
assert!(
|
||||
b.noise_level <= NoiseLevel::NOMINAL,
|
||||
b.noise_level() <= NoiseLevel::NOMINAL,
|
||||
"Noise level greater than nominal value on op {fn_name} for block {k}",
|
||||
)
|
||||
});
|
||||
@@ -1034,13 +1034,13 @@ pub(crate) fn signed_random_op_sequence_test<P>(
|
||||
);
|
||||
res_q.blocks.iter().enumerate().for_each(|(k, b)| {
|
||||
assert!(
|
||||
b.noise_level <= NoiseLevel::NOMINAL,
|
||||
b.noise_level() <= NoiseLevel::NOMINAL,
|
||||
"Noise level greater than nominal value on op {fn_name} for block {k}",
|
||||
)
|
||||
});
|
||||
res_r.blocks.iter().enumerate().for_each(|(k, b)| {
|
||||
assert!(
|
||||
b.noise_level <= NoiseLevel::NOMINAL,
|
||||
b.noise_level() <= NoiseLevel::NOMINAL,
|
||||
"Noise level greater than nominal value on op {fn_name} for block {k}",
|
||||
)
|
||||
});
|
||||
@@ -1097,13 +1097,13 @@ pub(crate) fn signed_random_op_sequence_test<P>(
|
||||
);
|
||||
res_q.blocks.iter().enumerate().for_each(|(k, b)| {
|
||||
assert!(
|
||||
b.noise_level <= NoiseLevel::NOMINAL,
|
||||
b.noise_level() <= NoiseLevel::NOMINAL,
|
||||
"Noise level greater than nominal value on op {fn_name} for block {k}",
|
||||
)
|
||||
});
|
||||
res_r.blocks.iter().enumerate().for_each(|(k, b)| {
|
||||
assert!(
|
||||
b.noise_level <= NoiseLevel::NOMINAL,
|
||||
b.noise_level() <= NoiseLevel::NOMINAL,
|
||||
"Noise level greater than nominal value on op {fn_name} for block {k}",
|
||||
)
|
||||
});
|
||||
@@ -1165,7 +1165,7 @@ pub(crate) fn signed_random_op_sequence_test<P>(
|
||||
);
|
||||
res.blocks.iter().enumerate().for_each(|(k, b)| {
|
||||
assert!(
|
||||
b.noise_level <= NoiseLevel::NOMINAL,
|
||||
b.noise_level() <= NoiseLevel::NOMINAL,
|
||||
"Noise level greater than nominal value on op {fn_name} for block {k}",
|
||||
)
|
||||
});
|
||||
@@ -1208,7 +1208,7 @@ pub(crate) fn signed_random_op_sequence_test<P>(
|
||||
);
|
||||
res.blocks.iter().enumerate().for_each(|(k, b)| {
|
||||
assert!(
|
||||
b.noise_level <= NoiseLevel::NOMINAL,
|
||||
b.noise_level() <= NoiseLevel::NOMINAL,
|
||||
"Noise level greater than nominal value on op {fn_name} for block {k}",
|
||||
)
|
||||
});
|
||||
@@ -1251,7 +1251,7 @@ pub(crate) fn signed_random_op_sequence_test<P>(
|
||||
);
|
||||
res.blocks.iter().enumerate().for_each(|(k, b)| {
|
||||
assert!(
|
||||
b.noise_level <= NoiseLevel::NOMINAL,
|
||||
b.noise_level() <= NoiseLevel::NOMINAL,
|
||||
"Noise level greater than nominal value on op {fn_name} for block {k}",
|
||||
)
|
||||
});
|
||||
|
||||
@@ -295,6 +295,10 @@ where
|
||||
expected overflow flag {expected_overflowed}, got {decrypted_overflowed}"
|
||||
);
|
||||
assert_eq!(encrypted_overflow.0.degree.get(), 1);
|
||||
#[cfg(feature = "gpu")]
|
||||
assert_eq!(encrypted_overflow.0.noise_level(), NoiseLevel::NOMINAL);
|
||||
|
||||
#[cfg(not(feature = "gpu"))]
|
||||
assert_eq!(encrypted_overflow.0.noise_level(), NoiseLevel::ZERO);
|
||||
}
|
||||
|
||||
|
||||
@@ -224,6 +224,10 @@ where
|
||||
expected overflow flag {expected_overflowed}, got {decrypted_overflowed}"
|
||||
);
|
||||
assert_eq!(encrypted_overflow.0.degree.get(), 1);
|
||||
#[cfg(feature = "gpu")]
|
||||
assert_eq!(encrypted_overflow.0.noise_level(), NoiseLevel::NOMINAL);
|
||||
|
||||
#[cfg(not(feature = "gpu"))]
|
||||
assert_eq!(encrypted_overflow.0.noise_level(), NoiseLevel::ZERO);
|
||||
}
|
||||
|
||||
|
||||
@@ -251,6 +251,10 @@ where
|
||||
expected overflow flag {expected_overflowed}, got {decrypted_overflowed}"
|
||||
);
|
||||
assert_eq!(encrypted_overflow.0.degree.get(), 1);
|
||||
#[cfg(feature = "gpu")]
|
||||
assert_eq!(encrypted_overflow.0.noise_level(), NoiseLevel::NOMINAL);
|
||||
|
||||
#[cfg(not(feature = "gpu"))]
|
||||
assert_eq!(encrypted_overflow.0.noise_level(), NoiseLevel::ZERO);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -248,7 +248,7 @@ fn panic_if_any_block_info_exceeds_max_degree_or_noise(
|
||||
first_block.degree
|
||||
);
|
||||
assert!(
|
||||
max_noise_level.validate(first_block.noise_level).is_ok(),
|
||||
max_noise_level.validate(first_block.noise_level()).is_ok(),
|
||||
"Block at index 0 has a noise level {:?} that exceeds max noise level ({max_noise_level:?})",
|
||||
first_block.degree
|
||||
);
|
||||
@@ -260,7 +260,7 @@ fn panic_if_any_block_info_exceeds_max_degree_or_noise(
|
||||
block.degree
|
||||
);
|
||||
assert!(
|
||||
max_noise_level.validate(block.noise_level).is_ok(),
|
||||
max_noise_level.validate(block.noise_level()).is_ok(),
|
||||
"Block at index {i} has a noise level {:?} that exceeds max noise level ({max_noise_level:?})",
|
||||
block.degree
|
||||
);
|
||||
@@ -283,10 +283,10 @@ where
|
||||
|
||||
for (i, block) in ct.blocks.iter().enumerate() {
|
||||
assert_eq!(
|
||||
block.noise_level,
|
||||
block.noise_level(),
|
||||
NoiseLevel::NOMINAL,
|
||||
"Block at index {i} / {num_blocks} has a non nominal noise level: {:?}",
|
||||
block.noise_level
|
||||
block.noise_level()
|
||||
);
|
||||
|
||||
assert!(
|
||||
@@ -321,10 +321,10 @@ where
|
||||
continue;
|
||||
}
|
||||
assert_eq!(
|
||||
block.noise_level,
|
||||
block.noise_level(),
|
||||
NoiseLevel::NOMINAL,
|
||||
"Block at index {i} has a non nominal noise level: {:?}",
|
||||
block.noise_level
|
||||
block.noise_level()
|
||||
);
|
||||
|
||||
assert!(
|
||||
@@ -387,9 +387,10 @@ impl ExpectedNoiseLevels {
|
||||
.enumerate()
|
||||
{
|
||||
assert_eq!(
|
||||
block.noise_level, expected_noise,
|
||||
block.noise_level(),
|
||||
expected_noise,
|
||||
"Block at index {i} has noise level {:?}, but {expected_noise:?} was expected",
|
||||
block.noise_level
|
||||
block.noise_level()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -251,7 +251,7 @@ impl ExpectedNoiseLevels {
|
||||
lhs.blocks
|
||||
.iter()
|
||||
.zip(rhs.blocks.iter())
|
||||
.map(|(a, b)| a.noise_level + b.noise_level),
|
||||
.map(|(a, b)| a.noise_level() + b.noise_level()),
|
||||
);
|
||||
self
|
||||
}
|
||||
|
||||
@@ -171,7 +171,7 @@ impl ExpectedNoiseLevels {
|
||||
lhs.blocks
|
||||
.iter()
|
||||
.zip(rhs.blocks.iter())
|
||||
.map(|(a, b)| a.noise_level + b.noise_level),
|
||||
.map(|(a, b)| a.noise_level() + b.noise_level()),
|
||||
);
|
||||
self
|
||||
}
|
||||
|
||||
@@ -397,7 +397,7 @@ where
|
||||
expected_degrees.panic_if_any_is_not_equal(&result);
|
||||
expected_noise_level.panic_if_any_is_not_equal(&result);
|
||||
assert_eq!(is_ok.0.degree.get(), 0);
|
||||
assert_eq!(is_ok.0.noise_level.get(), 0);
|
||||
assert_eq!(is_ok.0.noise_level().get(), 0);
|
||||
|
||||
assert_eq!(cks.decrypt::<u64>(&result), 0);
|
||||
assert!(!cks.decrypt_bool(&is_ok));
|
||||
@@ -456,7 +456,7 @@ where
|
||||
|
||||
panic_if_any_block_is_not_clean_or_trivial(&result, &cks);
|
||||
assert_eq!(is_ok.0.degree, Degree::new(1));
|
||||
assert_eq!(is_ok.0.noise_level, NoiseLevel::NOMINAL);
|
||||
assert_eq!(is_ok.0.noise_level(), NoiseLevel::NOMINAL);
|
||||
|
||||
let result = cks.decrypt::<u64>(&result);
|
||||
let is_ok = cks.decrypt_bool(&is_ok);
|
||||
@@ -531,7 +531,7 @@ where
|
||||
|
||||
panic_if_any_block_is_not_clean_or_trivial(&result, &cks);
|
||||
assert_eq!(is_ok.0.degree, Degree::new(1));
|
||||
assert_eq!(is_ok.0.noise_level, NoiseLevel::NOMINAL);
|
||||
assert_eq!(is_ok.0.noise_level(), NoiseLevel::NOMINAL);
|
||||
|
||||
let result = cks.decrypt::<u64>(&result);
|
||||
let is_ok = cks.decrypt_bool(&is_ok);
|
||||
@@ -743,7 +743,7 @@ where
|
||||
|
||||
assert!(result.is_trivial());
|
||||
assert_eq!(result.0.degree, Degree::new(0));
|
||||
assert_eq!(result.0.noise_level, NoiseLevel::ZERO);
|
||||
assert_eq!(result.0.noise_level(), NoiseLevel::ZERO);
|
||||
assert!(!cks.decrypt_bool(&result));
|
||||
}
|
||||
}
|
||||
@@ -776,7 +776,7 @@ where
|
||||
// If the mapping only contains numbers (output) that needs less than NB_CTXT
|
||||
// blocks, some trivial zeros will be appended
|
||||
assert_eq!(result.0.degree, Degree::new(1));
|
||||
assert_eq!(result.0.noise_level, NoiseLevel::NOMINAL);
|
||||
assert_eq!(result.0.noise_level(), NoiseLevel::NOMINAL);
|
||||
|
||||
let result = cks.decrypt_bool(&result);
|
||||
|
||||
@@ -844,7 +844,7 @@ where
|
||||
// If the mapping only contains numbers (output) that needs less than NB_CTXT
|
||||
// blocks, some trivial zeros will be appended
|
||||
assert_eq!(result.0.degree, Degree::new(1));
|
||||
assert_eq!(result.0.noise_level, NoiseLevel::NOMINAL);
|
||||
assert_eq!(result.0.noise_level(), NoiseLevel::NOMINAL);
|
||||
|
||||
let result = cks.decrypt_bool(&result);
|
||||
|
||||
@@ -877,7 +877,7 @@ where
|
||||
|
||||
assert!(result.is_trivial());
|
||||
assert_eq!(result.0.degree, Degree::new(0));
|
||||
assert_eq!(result.0.noise_level, NoiseLevel::ZERO);
|
||||
assert_eq!(result.0.noise_level(), NoiseLevel::ZERO);
|
||||
assert!(!cks.decrypt_bool(&result));
|
||||
}
|
||||
|
||||
@@ -908,7 +908,7 @@ where
|
||||
// If the mapping only contains numbers (output) that needs less than NB_CTXT
|
||||
// blocks, some trivial zeros will be appended
|
||||
assert_eq!(result.0.degree, Degree::new(1));
|
||||
assert_eq!(result.0.noise_level, NoiseLevel::NOMINAL);
|
||||
assert_eq!(result.0.noise_level(), NoiseLevel::NOMINAL);
|
||||
|
||||
let result = cks.decrypt_bool(&result);
|
||||
assert_eq!(result, expected_result);
|
||||
@@ -972,7 +972,7 @@ where
|
||||
// If the mapping only contains numbers (output) that needs less than NB_CTXT
|
||||
// blocks, some trivial zeros will be appended
|
||||
assert_eq!(result.0.degree, Degree::new(1));
|
||||
assert_eq!(result.0.noise_level, NoiseLevel::NOMINAL);
|
||||
assert_eq!(result.0.noise_level(), NoiseLevel::NOMINAL);
|
||||
|
||||
let result = cks.decrypt_bool(&result);
|
||||
assert_eq!(result, expected_result);
|
||||
@@ -1004,7 +1004,7 @@ where
|
||||
|
||||
assert!(result.is_trivial());
|
||||
assert_eq!(result.0.degree, Degree::new(0));
|
||||
assert_eq!(result.0.noise_level, NoiseLevel::ZERO);
|
||||
assert_eq!(result.0.noise_level(), NoiseLevel::ZERO);
|
||||
assert!(!cks.decrypt_bool(&result));
|
||||
}
|
||||
|
||||
@@ -1029,7 +1029,7 @@ where
|
||||
// If the mapping only contains numbers (output) that needs less than NB_CTXT
|
||||
// blocks, some trivial zeros will be appended
|
||||
assert_eq!(result.0.degree, Degree::new(1));
|
||||
assert_eq!(result.0.noise_level, NoiseLevel::NOMINAL);
|
||||
assert_eq!(result.0.noise_level(), NoiseLevel::NOMINAL);
|
||||
|
||||
let result = cks.decrypt_bool(&result);
|
||||
assert_eq!(result, expected_result);
|
||||
@@ -1087,7 +1087,7 @@ where
|
||||
// If the mapping only contains numbers (output) that needs less than NB_CTXT
|
||||
// blocks, some trivial zeros will be appended
|
||||
assert_eq!(result.0.degree, Degree::new(1));
|
||||
assert_eq!(result.0.noise_level, NoiseLevel::NOMINAL);
|
||||
assert_eq!(result.0.noise_level(), NoiseLevel::NOMINAL);
|
||||
|
||||
let result = cks.decrypt_bool(&result);
|
||||
assert_eq!(result, expected_result);
|
||||
@@ -1122,7 +1122,7 @@ where
|
||||
|
||||
assert!(is_in.is_trivial());
|
||||
assert_eq!(is_in.0.degree, Degree::new(0));
|
||||
assert_eq!(is_in.0.noise_level, NoiseLevel::ZERO);
|
||||
assert_eq!(is_in.0.noise_level(), NoiseLevel::ZERO);
|
||||
assert!(!cks.decrypt_bool(&is_in));
|
||||
}
|
||||
|
||||
@@ -1152,7 +1152,7 @@ where
|
||||
assert_eq!(index, expected_index as u16);
|
||||
|
||||
assert_eq!(is_in.0.degree, Degree::new(1));
|
||||
assert_eq!(is_in.0.noise_level, NoiseLevel::NOMINAL);
|
||||
assert_eq!(is_in.0.noise_level(), NoiseLevel::NOMINAL);
|
||||
|
||||
let is_in = cks.decrypt_bool(&is_in);
|
||||
assert_eq!(is_in, expected_is_in);
|
||||
@@ -1217,7 +1217,7 @@ where
|
||||
assert_eq!(index, expected_index as u16);
|
||||
|
||||
assert_eq!(is_in.0.degree, Degree::new(1));
|
||||
assert_eq!(is_in.0.noise_level, NoiseLevel::NOMINAL);
|
||||
assert_eq!(is_in.0.noise_level(), NoiseLevel::NOMINAL);
|
||||
|
||||
let is_in = cks.decrypt_bool(&is_in);
|
||||
assert_eq!(is_in, expected_is_in);
|
||||
@@ -1252,7 +1252,7 @@ where
|
||||
|
||||
assert!(is_in.is_trivial());
|
||||
assert_eq!(is_in.0.degree, Degree::new(0));
|
||||
assert_eq!(is_in.0.noise_level, NoiseLevel::ZERO);
|
||||
assert_eq!(is_in.0.noise_level(), NoiseLevel::ZERO);
|
||||
assert!(!cks.decrypt_bool(&is_in));
|
||||
}
|
||||
|
||||
@@ -1282,7 +1282,7 @@ where
|
||||
assert_eq!(index, expected_index as u16);
|
||||
|
||||
assert_eq!(is_in.0.degree, Degree::new(1));
|
||||
assert_eq!(is_in.0.noise_level, NoiseLevel::NOMINAL);
|
||||
assert_eq!(is_in.0.noise_level(), NoiseLevel::NOMINAL);
|
||||
|
||||
let is_in = cks.decrypt_bool(&is_in);
|
||||
assert_eq!(is_in, expected_is_in);
|
||||
@@ -1346,7 +1346,7 @@ where
|
||||
assert_eq!(index, expected_index as u16);
|
||||
|
||||
assert_eq!(is_in.0.degree, Degree::new(1));
|
||||
assert_eq!(is_in.0.noise_level, NoiseLevel::NOMINAL);
|
||||
assert_eq!(is_in.0.noise_level(), NoiseLevel::NOMINAL);
|
||||
|
||||
let is_in = cks.decrypt_bool(&is_in);
|
||||
assert_eq!(is_in, expected_is_in);
|
||||
@@ -1384,7 +1384,7 @@ where
|
||||
|
||||
assert!(is_in.is_trivial());
|
||||
assert_eq!(is_in.0.degree, Degree::new(0));
|
||||
assert_eq!(is_in.0.noise_level, NoiseLevel::ZERO);
|
||||
assert_eq!(is_in.0.noise_level(), NoiseLevel::ZERO);
|
||||
assert!(!cks.decrypt_bool(&is_in));
|
||||
}
|
||||
|
||||
@@ -1420,7 +1420,7 @@ where
|
||||
assert_eq!(index, expected_index as u16);
|
||||
|
||||
assert_eq!(is_in.0.degree, Degree::new(1));
|
||||
assert_eq!(is_in.0.noise_level, NoiseLevel::NOMINAL);
|
||||
assert_eq!(is_in.0.noise_level(), NoiseLevel::NOMINAL);
|
||||
|
||||
let is_in = cks.decrypt_bool(&is_in);
|
||||
assert_eq!(is_in, expected_is_in);
|
||||
@@ -1495,7 +1495,7 @@ where
|
||||
assert_eq!(index, expected_index as u16);
|
||||
|
||||
assert_eq!(is_in.0.degree, Degree::new(1));
|
||||
assert_eq!(is_in.0.noise_level, NoiseLevel::NOMINAL);
|
||||
assert_eq!(is_in.0.noise_level(), NoiseLevel::NOMINAL);
|
||||
|
||||
let is_in = cks.decrypt_bool(&is_in);
|
||||
assert_eq!(is_in, expected_is_in);
|
||||
@@ -1529,7 +1529,7 @@ where
|
||||
|
||||
assert!(is_in.is_trivial());
|
||||
assert_eq!(is_in.0.degree, Degree::new(0));
|
||||
assert_eq!(is_in.0.noise_level, NoiseLevel::ZERO);
|
||||
assert_eq!(is_in.0.noise_level(), NoiseLevel::ZERO);
|
||||
assert!(!cks.decrypt_bool(&is_in));
|
||||
}
|
||||
|
||||
@@ -1564,7 +1564,7 @@ where
|
||||
assert_eq!(index, expected_index as u16);
|
||||
|
||||
assert_eq!(is_in.0.degree, Degree::new(1));
|
||||
assert_eq!(is_in.0.noise_level, NoiseLevel::NOMINAL);
|
||||
assert_eq!(is_in.0.noise_level(), NoiseLevel::NOMINAL);
|
||||
|
||||
let is_in = cks.decrypt_bool(&is_in);
|
||||
assert_eq!(is_in, expected_is_in);
|
||||
@@ -1630,7 +1630,7 @@ where
|
||||
assert_eq!(index, expected_index as u16);
|
||||
|
||||
assert_eq!(is_in.0.degree, Degree::new(1));
|
||||
assert_eq!(is_in.0.noise_level, NoiseLevel::NOMINAL);
|
||||
assert_eq!(is_in.0.noise_level(), NoiseLevel::NOMINAL);
|
||||
|
||||
let is_in = cks.decrypt_bool(&is_in);
|
||||
assert_eq!(is_in, expected_is_in);
|
||||
@@ -1668,7 +1668,7 @@ where
|
||||
|
||||
assert!(is_in.is_trivial());
|
||||
assert_eq!(is_in.0.degree, Degree::new(0));
|
||||
assert_eq!(is_in.0.noise_level, NoiseLevel::ZERO);
|
||||
assert_eq!(is_in.0.noise_level(), NoiseLevel::ZERO);
|
||||
assert!(!cks.decrypt_bool(&is_in));
|
||||
}
|
||||
|
||||
@@ -1709,7 +1709,7 @@ where
|
||||
assert_eq!(index, expected_index as u16);
|
||||
|
||||
assert_eq!(is_in.0.degree, Degree::new(1));
|
||||
assert_eq!(is_in.0.noise_level, NoiseLevel::NOMINAL);
|
||||
assert_eq!(is_in.0.noise_level(), NoiseLevel::NOMINAL);
|
||||
|
||||
let is_in = cks.decrypt_bool(&is_in);
|
||||
assert_eq!(is_in, expected_is_in);
|
||||
@@ -1793,7 +1793,7 @@ where
|
||||
assert_eq!(index, expected_index as u16);
|
||||
|
||||
assert_eq!(is_in.0.degree, Degree::new(1));
|
||||
assert_eq!(is_in.0.noise_level, NoiseLevel::NOMINAL);
|
||||
assert_eq!(is_in.0.noise_level(), NoiseLevel::NOMINAL);
|
||||
|
||||
let is_in = cks.decrypt_bool(&is_in);
|
||||
assert_eq!(is_in, expected_is_in);
|
||||
@@ -1827,7 +1827,7 @@ where
|
||||
|
||||
assert!(is_in.is_trivial());
|
||||
assert_eq!(is_in.0.degree, Degree::new(0));
|
||||
assert_eq!(is_in.0.noise_level, NoiseLevel::ZERO);
|
||||
assert_eq!(is_in.0.noise_level(), NoiseLevel::ZERO);
|
||||
assert!(!cks.decrypt_bool(&is_in));
|
||||
}
|
||||
|
||||
@@ -1867,7 +1867,7 @@ where
|
||||
assert_eq!(index, expected_index as u16);
|
||||
|
||||
assert_eq!(is_in.0.degree, Degree::new(1));
|
||||
assert_eq!(is_in.0.noise_level, NoiseLevel::NOMINAL);
|
||||
assert_eq!(is_in.0.noise_level(), NoiseLevel::NOMINAL);
|
||||
|
||||
let is_in = cks.decrypt_bool(&is_in);
|
||||
assert_eq!(is_in, expected_is_in);
|
||||
@@ -1930,7 +1930,7 @@ where
|
||||
assert_eq!(index, expected_index as u16);
|
||||
|
||||
assert_eq!(is_in.0.degree, Degree::new(1));
|
||||
assert_eq!(is_in.0.noise_level, NoiseLevel::NOMINAL);
|
||||
assert_eq!(is_in.0.noise_level(), NoiseLevel::NOMINAL);
|
||||
|
||||
let is_in = cks.decrypt_bool(&is_in);
|
||||
assert_eq!(is_in, expected_is_in);
|
||||
|
||||
@@ -128,14 +128,14 @@ impl CompactCiphertextList {
|
||||
lwe_view.as_ref().to_vec(),
|
||||
self.ct_list.ciphertext_modulus(),
|
||||
);
|
||||
let shortint_ct_to_cast = Ciphertext {
|
||||
ct: lwe_to_cast,
|
||||
degree: self.degree,
|
||||
message_modulus: self.message_modulus,
|
||||
carry_modulus: self.carry_modulus,
|
||||
let shortint_ct_to_cast = Ciphertext::new(
|
||||
lwe_to_cast,
|
||||
self.degree,
|
||||
NoiseLevel::UNKNOWN,
|
||||
self.message_modulus,
|
||||
self.carry_modulus,
|
||||
pbs_order,
|
||||
noise_level: NoiseLevel::UNKNOWN,
|
||||
};
|
||||
);
|
||||
|
||||
casting_key
|
||||
.cast_and_apply_functions(&shortint_ct_to_cast, functions.as_deref())
|
||||
@@ -151,14 +151,14 @@ impl CompactCiphertextList {
|
||||
lwe_view.as_ref().to_vec(),
|
||||
self.ct_list.ciphertext_modulus(),
|
||||
);
|
||||
Ciphertext {
|
||||
Ciphertext::new(
|
||||
ct,
|
||||
degree: self.degree,
|
||||
message_modulus: self.message_modulus,
|
||||
carry_modulus: self.carry_modulus,
|
||||
self.degree,
|
||||
NoiseLevel::NOMINAL,
|
||||
self.message_modulus,
|
||||
self.carry_modulus,
|
||||
pbs_order,
|
||||
noise_level: NoiseLevel::NOMINAL,
|
||||
}
|
||||
)
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
|
||||
@@ -56,14 +56,14 @@ impl CompressedCiphertext {
|
||||
noise_level,
|
||||
} = self;
|
||||
|
||||
Ciphertext {
|
||||
ct: ct.decompress_into_lwe_ciphertext(),
|
||||
degree: *degree,
|
||||
message_modulus: *message_modulus,
|
||||
carry_modulus: *carry_modulus,
|
||||
pbs_order: *pbs_order,
|
||||
noise_level: *noise_level,
|
||||
}
|
||||
Ciphertext::new(
|
||||
ct.decompress_into_lwe_ciphertext(),
|
||||
*degree,
|
||||
*noise_level,
|
||||
*message_modulus,
|
||||
*carry_modulus,
|
||||
*pbs_order,
|
||||
)
|
||||
}
|
||||
|
||||
/// Deconstruct a [`CompressedCiphertext`] into its constituents.
|
||||
|
||||
@@ -17,7 +17,9 @@ use tfhe_versionable::Versionize;
|
||||
pub struct Ciphertext {
|
||||
pub ct: LweCiphertextOwned<u64>,
|
||||
pub degree: Degree,
|
||||
pub(crate) noise_level: NoiseLevel,
|
||||
// For correctness reasons this field MUST remain private, this forces the use of the accessor
|
||||
// which has noise checks enabled on demand
|
||||
noise_level: NoiseLevel,
|
||||
pub message_modulus: MessageModulus,
|
||||
pub carry_modulus: CarryModulus,
|
||||
pub pbs_order: PBSOrder,
|
||||
|
||||
@@ -170,14 +170,14 @@ impl ServerKey {
|
||||
}
|
||||
};
|
||||
|
||||
Ciphertext {
|
||||
Ciphertext::new(
|
||||
ct,
|
||||
degree: Degree::new(p - 1),
|
||||
noise_level: NoiseLevel::NOMINAL,
|
||||
message_modulus: self.message_modulus,
|
||||
carry_modulus: self.carry_modulus,
|
||||
pbs_order: self.pbs_order,
|
||||
}
|
||||
Degree::new(p - 1),
|
||||
NoiseLevel::NOMINAL,
|
||||
self.message_modulus,
|
||||
self.carry_modulus,
|
||||
self.pbs_order,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ where
|
||||
assert_eq!(clear, dec);
|
||||
|
||||
assert_eq!(ctxt.degree, decompressed_ct.degree);
|
||||
assert_eq!(decompressed_ct.noise_level, NoiseLevel::NOMINAL);
|
||||
assert_eq!(decompressed_ct.noise_level(), NoiseLevel::NOMINAL);
|
||||
assert_eq!(ctxt.message_modulus, decompressed_ct.message_modulus);
|
||||
assert_eq!(ctxt.carry_modulus, decompressed_ct.carry_modulus);
|
||||
assert_eq!(ctxt.pbs_order, decompressed_ct.pbs_order);
|
||||
@@ -50,7 +50,7 @@ where
|
||||
|
||||
assert_eq!((clear + 1) % modulus, dec % modulus);
|
||||
|
||||
assert_eq!(decompressed_ct.noise_level, NoiseLevel::NOMINAL);
|
||||
assert_eq!(decompressed_ct.noise_level(), NoiseLevel::NOMINAL);
|
||||
assert_eq!(ctxt.message_modulus, decompressed_ct.message_modulus);
|
||||
assert_eq!(ctxt.carry_modulus, decompressed_ct.carry_modulus);
|
||||
assert_eq!(ctxt.pbs_order, decompressed_ct.pbs_order);
|
||||
|
||||
@@ -1 +1 @@
|
||||
nightly-2025-02-19
|
||||
nightly-2025-02-20
|
||||
|
||||
@@ -9,11 +9,11 @@ publish = false
|
||||
crate-type = ["cdylib"]
|
||||
|
||||
[dependencies]
|
||||
clippy_utils = { git = "https://github.com/rust-lang/rust-clippy", rev = "ff4a26d442bead94a4c96fb1de967374bc4fbd8e" }
|
||||
dylint_linting = "3.2.1"
|
||||
clippy_utils = { git = "https://github.com/rust-lang/rust-clippy", rev = "238edf273d195c8e472851ebd60571f77f978ac8" }
|
||||
dylint_linting = "4.0.0"
|
||||
|
||||
[dev-dependencies]
|
||||
dylint_testing = "3.2.1"
|
||||
dylint_testing = "4.0.0"
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
tfhe-versionable = "0.4.0"
|
||||
|
||||
@@ -21,5 +21,5 @@ tfhe-versionable = "0.4.0"
|
||||
rustc_private = true
|
||||
|
||||
[[example]]
|
||||
name = "ui"
|
||||
path = "ui/main.rs"
|
||||
name = "ui"
|
||||
path = "ui/main.rs"
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
[toolchain]
|
||||
channel = "nightly-2024-11-28"
|
||||
channel = "nightly-2025-02-20"
|
||||
components = ["llvm-tools-preview", "rustc-dev"]
|
||||
profile = "default"
|
||||
|
||||
@@ -23,7 +23,8 @@ impl SerializeWithoutVersionizeInner {
|
||||
self.versionize_trait
|
||||
.get_or_init(|| {
|
||||
let versionize_trait = cx.tcx.all_traits().find(|def_id| {
|
||||
cx.match_def_path(*def_id, symbols_list_from_str(&VERSIONIZE_TRAIT).as_slice())
|
||||
let path = cx.get_def_path(*def_id);
|
||||
path == symbols_list_from_str(&VERSIONIZE_TRAIT)
|
||||
});
|
||||
|
||||
versionize_trait
|
||||
@@ -85,8 +86,8 @@ impl<'tcx> LateLintPass<'tcx> for SerializeWithoutVersionize {
|
||||
|
||||
// Check if the implemented trait is `Serialize`
|
||||
if let Some(def_id) = trait_ref.trait_def_id() {
|
||||
if cx.match_def_path(def_id, symbols_list_from_str(&SERIALIZE_TRAIT).as_slice())
|
||||
{
|
||||
let path = cx.get_def_path(def_id);
|
||||
if path == symbols_list_from_str(&SERIALIZE_TRAIT) {
|
||||
// Try to find an implementation of versionize for this type
|
||||
let mut found_impl = false;
|
||||
if let Some(versionize_trait) = self.0.versionize_trait(cx) {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
use rustc_ast::tokenstream::TokenTree;
|
||||
use rustc_hir::def_id::DefId;
|
||||
use rustc_hir::AttrArgs;
|
||||
use rustc_lint::LateContext;
|
||||
use rustc_middle::ty::{Ty, TyKind};
|
||||
use rustc_span::Symbol;
|
||||
@@ -11,16 +12,19 @@ pub fn symbols_list_from_str(list: &[&str]) -> Vec<Symbol> {
|
||||
|
||||
/// Checks if the lint is allowed for the item represented by [`DefId`].
|
||||
/// This shouldn't be necessary since the lints are declared with the
|
||||
/// `declare_tool_lint` macro but for a mysterious reason this does not
|
||||
/// `impl_late_lint` macro but for a mysterious reason this does not
|
||||
/// work automatically.
|
||||
pub fn is_allowed_lint(cx: &LateContext<'_>, target: DefId, lint_name: &str) -> bool {
|
||||
for attr in cx.tcx.get_attrs(target, Symbol::intern("allow")) {
|
||||
let tokens = attr.get_normal_item().args.inner_tokens();
|
||||
let mut trees = tokens.trees();
|
||||
if let AttrArgs::Delimited(args) = &attr.get_normal_item().args {
|
||||
let len = args.tokens.len();
|
||||
|
||||
if let Some(TokenTree::Token(tool_token, _)) = trees.next() {
|
||||
if tool_token.is_ident_named(Symbol::intern(lint_name)) {
|
||||
return true;
|
||||
for id in 0..len {
|
||||
if let Some(TokenTree::Token(tool_token, _)) = args.tokens.get(id) {
|
||||
if tool_token.is_ident_named(Symbol::intern(lint_name)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||