mirror of
https://github.com/zama-ai/concrete.git
synced 2026-02-09 03:55:04 -05:00
162 lines
9.5 KiB
C++
162 lines
9.5 KiB
C++
// Part of the Concrete Compiler Project, under the BSD3 License with Zama Exceptions.
|
|
// See https://github.com/zama-ai/homomorphizer/blob/master/LICENSE.txt for license information.
|
|
|
|
/// DO NOT MANUALLY EDIT THIS FILE.
|
|
/// This file was generated thanks the "parameters optimizer".
|
|
/// We should include this in our build system, but for moment it is just a cc
|
|
/// from the optimizer output.
|
|
|
|
#include "zamalang/Support/V0Parameters.h"
|
|
|
|
namespace mlir {
|
|
namespace zamalang {
|
|
using namespace std;
|
|
|
|
const int NORM2_MAX = 31;
|
|
const int P_MAX = 7;
|
|
|
|
const static V0Parameter parameters[NORM2_MAX][P_MAX] = {
|
|
{V0Parameter(1, 10, 514, 2, 8, 5, 2), V0Parameter(1, 10, 564, 2, 8, 5, 2),
|
|
V0Parameter(1, 10, 599, 3, 6, 6, 2), V0Parameter(1, 10, 686, 3, 6, 7, 2),
|
|
V0Parameter(1, 11, 736, 1, 23, 5, 3), V0Parameter(1, 12, 830, 1, 23, 4, 4),
|
|
V0Parameter(1, 12, 830, 1, 23, 4, 4)},
|
|
{V0Parameter(1, 10, 519, 2, 8, 5, 2), V0Parameter(1, 10, 558, 3, 6, 5, 2),
|
|
V0Parameter(1, 10, 610, 3, 6, 6, 2), V0Parameter(1, 11, 689, 1, 23, 4, 3),
|
|
V0Parameter(1, 11, 736, 1, 23, 5, 3), V0Parameter(1, 12, 831, 1, 23, 4, 4),
|
|
V0Parameter(1, 12, 831, 1, 23, 4, 4)},
|
|
{V0Parameter(1, 10, 515, 3, 6, 5, 2), V0Parameter(1, 10, 569, 3, 6, 5, 2),
|
|
V0Parameter(1, 11, 638, 1, 23, 4, 3), V0Parameter(1, 11, 689, 1, 23, 4, 3),
|
|
V0Parameter(1, 11, 737, 1, 23, 5, 3), V0Parameter(1, 12, 840, 1, 23, 4, 4),
|
|
V0Parameter(1, 12, 840, 1, 23, 4, 4)},
|
|
{V0Parameter(1, 10, 523, 3, 6, 5, 2), V0Parameter(1, 11, 598, 1, 23, 4, 3),
|
|
V0Parameter(1, 11, 639, 1, 23, 4, 3), V0Parameter(1, 11, 690, 1, 23, 4, 3),
|
|
V0Parameter(1, 11, 739, 1, 23, 5, 3), V0Parameter(1, 12, 806, 2, 15, 5, 3),
|
|
V0Parameter(1, 12, 806, 2, 15, 5, 3)},
|
|
{V0Parameter(1, 11, 563, 1, 23, 3, 3), V0Parameter(1, 11, 598, 1, 23, 4, 3),
|
|
V0Parameter(1, 11, 639, 1, 23, 4, 3), V0Parameter(1, 11, 691, 1, 23, 4, 3),
|
|
V0Parameter(1, 11, 748, 1, 23, 5, 3), V0Parameter(1, 12, 806, 2, 15, 5, 3),
|
|
V0Parameter(1, 12, 806, 2, 15, 5, 3)},
|
|
{V0Parameter(1, 11, 563, 1, 23, 3, 3), V0Parameter(1, 11, 598, 1, 23, 4, 3),
|
|
V0Parameter(1, 11, 640, 1, 23, 4, 3), V0Parameter(1, 11, 699, 1, 23, 4, 3),
|
|
V0Parameter(1, 11, 736, 2, 15, 5, 3), V0Parameter(1, 12, 806, 2, 16, 5, 3),
|
|
V0Parameter(1, 12, 806, 2, 15, 5, 3)},
|
|
{V0Parameter(1, 11, 563, 1, 23, 3, 3), V0Parameter(1, 11, 599, 1, 23, 4, 3),
|
|
V0Parameter(1, 11, 643, 1, 23, 4, 3), V0Parameter(1, 11, 721, 1, 23, 5, 3),
|
|
V0Parameter(1, 11, 736, 2, 15, 5, 3), V0Parameter(1, 12, 806, 2, 15, 5, 3),
|
|
V0Parameter(1, 12, 806, 2, 15, 5, 3)},
|
|
{V0Parameter(1, 11, 564, 1, 23, 3, 3), V0Parameter(1, 11, 602, 1, 23, 4, 3),
|
|
V0Parameter(1, 11, 671, 1, 23, 4, 3), V0Parameter(1, 11, 689, 2, 15, 4, 3),
|
|
V0Parameter(1, 11, 736, 2, 16, 5, 3), V0Parameter(1, 12, 807, 2, 15, 5, 3),
|
|
V0Parameter(1, 12, 807, 2, 15, 5, 3)},
|
|
{V0Parameter(1, 11, 569, 1, 23, 3, 3), V0Parameter(1, 11, 622, 1, 23, 4, 3),
|
|
V0Parameter(1, 11, 638, 2, 15, 4, 3), V0Parameter(1, 11, 689, 2, 15, 4, 3),
|
|
V0Parameter(1, 11, 736, 2, 15, 5, 3), V0Parameter(1, 12, 809, 2, 15, 5, 3),
|
|
V0Parameter(1, 12, 809, 2, 15, 5, 3)},
|
|
{V0Parameter(1, 11, 555, 1, 23, 5, 2), V0Parameter(1, 11, 579, 2, 16, 5, 2),
|
|
V0Parameter(1, 11, 638, 2, 16, 4, 3), V0Parameter(1, 11, 689, 2, 16, 4, 3),
|
|
V0Parameter(1, 11, 737, 2, 16, 5, 3), V0Parameter(1, 12, 818, 2, 15, 5, 3),
|
|
V0Parameter(1, 12, 818, 2, 15, 5, 3)},
|
|
{V0Parameter(1, 11, 532, 2, 15, 5, 2), V0Parameter(1, 11, 579, 2, 15, 5, 2),
|
|
V0Parameter(1, 11, 638, 2, 15, 4, 3), V0Parameter(1, 11, 690, 2, 15, 4, 3),
|
|
V0Parameter(1, 11, 738, 2, 15, 5, 3), V0Parameter(1, 12, 832, 2, 15, 9, 2),
|
|
V0Parameter(1, 12, 832, 2, 15, 9, 2)},
|
|
{V0Parameter(1, 11, 532, 2, 15, 5, 2), V0Parameter(1, 11, 579, 2, 15, 5, 2),
|
|
V0Parameter(1, 11, 639, 2, 15, 4, 3), V0Parameter(1, 11, 691, 2, 15, 4, 3),
|
|
V0Parameter(1, 11, 743, 2, 16, 5, 3), V0Parameter(1, 12, 807, 3, 12, 5, 3),
|
|
V0Parameter(1, 12, 807, 3, 12, 5, 3)},
|
|
{V0Parameter(1, 11, 532, 2, 15, 5, 2), V0Parameter(1, 11, 579, 2, 16, 5, 2),
|
|
V0Parameter(1, 11, 639, 2, 15, 4, 3), V0Parameter(1, 11, 695, 2, 16, 4, 3),
|
|
V0Parameter(1, 11, 757, 2, 16, 16, 1),
|
|
V0Parameter(1, 12, 811, 3, 12, 5, 3),
|
|
V0Parameter(1, 12, 811, 3, 12, 5, 3)},
|
|
{V0Parameter(1, 11, 533, 2, 16, 5, 2), V0Parameter(1, 11, 580, 2, 15, 5, 2),
|
|
V0Parameter(1, 11, 641, 2, 16, 4, 3), V0Parameter(1, 11, 699, 2, 16, 5, 3),
|
|
V0Parameter(1, 11, 737, 3, 12, 5, 3), V0Parameter(1, 12, 788, 3, 12, 8, 2),
|
|
V0Parameter(1, 12, 788, 3, 12, 8, 2)},
|
|
{V0Parameter(1, 11, 533, 2, 16, 5, 2), V0Parameter(1, 11, 583, 2, 16, 5, 2),
|
|
V0Parameter(1, 11, 653, 2, 16, 4, 3), V0Parameter(1, 11, 665, 3, 12, 6, 2),
|
|
V0Parameter(1, 11, 738, 3, 12, 5, 3), V0Parameter(1, 12, 775, 4, 9, 8, 2),
|
|
V0Parameter(1, 12, 775, 4, 9, 8, 2)},
|
|
{V0Parameter(1, 11, 535, 2, 16, 5, 2), V0Parameter(1, 11, 610, 2, 16, 4, 3),
|
|
V0Parameter(1, 11, 614, 3, 12, 6, 2), V0Parameter(1, 11, 666, 3, 12, 6, 2),
|
|
V0Parameter(1, 11, 747, 3, 12, 5, 3), V0Parameter(1, 12, 782, 4, 9, 8, 2),
|
|
V0Parameter(1, 12, 782, 4, 9, 8, 2)},
|
|
{V0Parameter(1, 11, 544, 2, 16, 5, 2), V0Parameter(1, 11, 580, 3, 12, 5, 2),
|
|
V0Parameter(1, 11, 615, 3, 12, 6, 2), V0Parameter(1, 11, 661, 3, 12, 7, 2),
|
|
V0Parameter(1, 11, 715, 4, 9, 7, 2), V0Parameter(1, 12, 778, 5, 8, 8, 2),
|
|
V0Parameter(1, 12, 778, 5, 8, 8, 2)},
|
|
{V0Parameter(1, 11, 533, 3, 12, 5, 2), V0Parameter(1, 11, 581, 3, 12, 5, 2),
|
|
V0Parameter(1, 11, 618, 3, 12, 6, 2), V0Parameter(1, 11, 687, 3, 12, 7, 2),
|
|
V0Parameter(1, 11, 726, 4, 9, 7, 2), V0Parameter(1, 12, 809, 5, 8, 8, 2),
|
|
V0Parameter(1, 12, 809, 5, 8, 8, 2)},
|
|
{V0Parameter(1, 11, 533, 3, 12, 5, 2), V0Parameter(1, 11, 585, 3, 12, 5, 2),
|
|
V0Parameter(1, 11, 639, 3, 12, 6, 2), V0Parameter(1, 11, 662, 4, 9, 7, 2),
|
|
V0Parameter(1, 11, 717, 5, 8, 7, 2), V0Parameter(1, 12, 820, 6, 7, 9, 2),
|
|
V0Parameter(1, 12, 820, 6, 7, 9, 2)},
|
|
{V0Parameter(1, 11, 536, 3, 12, 5, 2), V0Parameter(1, 11, 593, 3, 12, 6, 2),
|
|
V0Parameter(1, 11, 619, 4, 9, 6, 2), V0Parameter(1, 11, 693, 4, 9, 7, 2),
|
|
V0Parameter(1, 11, 737, 5, 8, 7, 2), V0Parameter(1, 12, 788, 8, 5, 8, 2),
|
|
V0Parameter(1, 12, 788, 8, 5, 8, 2)},
|
|
{V0Parameter(1, 11, 552, 3, 12, 5, 2), V0Parameter(1, 11, 585, 4, 9, 5, 2),
|
|
V0Parameter(1, 11, 644, 4, 9, 6, 2), V0Parameter(1, 11, 665, 5, 8, 7, 2),
|
|
V0Parameter(1, 11, 736, 6, 7, 8, 2), V0Parameter(1, 12, 786, 11, 4, 8, 2),
|
|
V0Parameter(1, 12, 786, 11, 4, 8, 2)},
|
|
{V0Parameter(1, 11, 536, 4, 9, 5, 2), V0Parameter(1, 11, 596, 4, 9, 6, 2),
|
|
V0Parameter(1, 11, 621, 5, 8, 6, 2), V0Parameter(1, 11, 667, 6, 7, 7, 2),
|
|
V0Parameter(1, 11, 746, 7, 6, 8, 2), V0Parameter(1, 12, 798, 14, 3, 9, 2),
|
|
V0Parameter(1, 12, 798, 14, 3, 9, 2)},
|
|
{V0Parameter(1, 11, 555, 4, 9, 5, 2), V0Parameter(1, 11, 580, 5, 8, 6, 2),
|
|
V0Parameter(1, 11, 623, 6, 7, 6, 2), V0Parameter(1, 11, 669, 7, 6, 7, 2),
|
|
V0Parameter(1, 11, 723, 11, 4, 7, 2), V0Parameter(1, 12, 814, 22, 2, 9, 2),
|
|
V0Parameter(1, 12, 814, 22, 2, 9, 2)},
|
|
{V0Parameter(1, 11, 539, 5, 8, 5, 2), V0Parameter(1, 11, 636, 5, 8, 6, 2),
|
|
V0Parameter(1, 11, 625, 7, 6, 6, 2), V0Parameter(1, 11, 674, 9, 5, 7, 2),
|
|
V0Parameter(1, 11, 735, 14, 3, 8, 2), V0Parameter(0, 0, 0, 0, 0, 0, 0),
|
|
V0Parameter(0, 0, 0, 0, 0, 0, 0)},
|
|
{V0Parameter(1, 11, 579, 5, 8, 6, 2), V0Parameter(1, 11, 583, 7, 6, 6, 2),
|
|
V0Parameter(1, 11, 661, 8, 5, 7, 2), V0Parameter(1, 11, 681, 11, 4, 7, 2),
|
|
V0Parameter(1, 11, 736, 22, 2, 8, 2), V0Parameter(0, 0, 0, 0, 0, 0, 0),
|
|
V0Parameter(0, 0, 0, 0, 0, 0, 0)},
|
|
{V0Parameter(1, 11, 541, 7, 6, 5, 2), V0Parameter(1, 11, 611, 8, 5, 6, 2),
|
|
V0Parameter(1, 11, 635, 11, 4, 6, 2), V0Parameter(1, 11, 704, 15, 3, 7, 2),
|
|
V0Parameter(0, 0, 0, 0, 0, 0, 0), V0Parameter(0, 0, 0, 0, 0, 0, 0),
|
|
V0Parameter(0, 0, 0, 0, 0, 0, 0)},
|
|
{V0Parameter(1, 11, 569, 8, 5, 5, 2), V0Parameter(1, 11, 590, 11, 4, 6, 2),
|
|
V0Parameter(1, 11, 647, 15, 3, 7, 2),
|
|
V0Parameter(1, 11, 679, 44, 1, 14, 1), V0Parameter(0, 0, 0, 0, 0, 0, 0),
|
|
V0Parameter(0, 0, 0, 0, 0, 0, 0), V0Parameter(0, 0, 0, 0, 0, 0, 0)},
|
|
{V0Parameter(1, 11, 549, 11, 4, 5, 2), V0Parameter(1, 11, 600, 15, 3, 6, 2),
|
|
V0Parameter(1, 11, 628, 44, 1, 13, 1), V0Parameter(0, 0, 0, 0, 0, 0, 0),
|
|
V0Parameter(0, 0, 0, 0, 0, 0, 0), V0Parameter(0, 0, 0, 0, 0, 0, 0),
|
|
V0Parameter(0, 0, 0, 0, 0, 0, 0)},
|
|
{V0Parameter(1, 11, 559, 15, 3, 5, 2),
|
|
V0Parameter(1, 11, 584, 44, 1, 12, 1), V0Parameter(0, 0, 0, 0, 0, 0, 0),
|
|
V0Parameter(0, 0, 0, 0, 0, 0, 0), V0Parameter(0, 0, 0, 0, 0, 0, 0),
|
|
V0Parameter(0, 0, 0, 0, 0, 0, 0), V0Parameter(0, 0, 0, 0, 0, 0, 0)},
|
|
{V0Parameter(1, 11, 594, 23, 2, 12, 1), V0Parameter(0, 0, 0, 0, 0, 0, 0),
|
|
V0Parameter(0, 0, 0, 0, 0, 0, 0), V0Parameter(0, 0, 0, 0, 0, 0, 0),
|
|
V0Parameter(0, 0, 0, 0, 0, 0, 0), V0Parameter(0, 0, 0, 0, 0, 0, 0),
|
|
V0Parameter(0, 0, 0, 0, 0, 0, 0)},
|
|
{V0Parameter(0, 0, 0, 0, 0, 0, 0), V0Parameter(0, 0, 0, 0, 0, 0, 0),
|
|
V0Parameter(0, 0, 0, 0, 0, 0, 0), V0Parameter(0, 0, 0, 0, 0, 0, 0),
|
|
V0Parameter(0, 0, 0, 0, 0, 0, 0), V0Parameter(0, 0, 0, 0, 0, 0, 0),
|
|
V0Parameter(0, 0, 0, 0, 0, 0, 0)}};
|
|
|
|
const V0Parameter *getV0Parameter(V0FHEConstraint constraint) {
|
|
if (constraint.norm2 > NORM2_MAX) {
|
|
return nullptr;
|
|
}
|
|
if (constraint.p > P_MAX) {
|
|
return nullptr;
|
|
}
|
|
// - 1 is an offset as p is in [1, ...] and not [0, ...]
|
|
auto param = ¶meters[constraint.norm2][constraint.p - 1];
|
|
if (param->glweDimension == 0) {
|
|
return nullptr;
|
|
}
|
|
return param;
|
|
}
|
|
|
|
} // namespace zamalang
|
|
} // namespace mlir
|