mirror of
https://github.com/zama-ai/concrete.git
synced 2026-02-09 03:55:04 -05:00
enhance(tests): Generate from 1 to 29 bits end to end tests fhe tests for basic operators
This commit is contained in:
@@ -1,354 +1,3 @@
|
||||
description: identity
|
||||
program: |
|
||||
func.func @main(%arg0: !FHE.eint<3>) -> !FHE.eint<3> {
|
||||
return %arg0: !FHE.eint<3>
|
||||
}
|
||||
tests:
|
||||
- inputs:
|
||||
- scalar: 1
|
||||
outputs:
|
||||
- scalar: 1
|
||||
---
|
||||
description: identity_16bits
|
||||
program: |
|
||||
func.func @main(%arg0: !FHE.eint<16>) -> !FHE.eint<16> {
|
||||
return %arg0: !FHE.eint<16>
|
||||
}
|
||||
tests:
|
||||
- inputs:
|
||||
- scalar: 1
|
||||
outputs:
|
||||
- scalar: 1
|
||||
- inputs:
|
||||
- scalar: 0
|
||||
outputs:
|
||||
- scalar: 0
|
||||
- inputs:
|
||||
- scalar: 72071
|
||||
outputs:
|
||||
- scalar: 72071
|
||||
---
|
||||
description: zero_tensor
|
||||
program: |
|
||||
func.func @main() -> tensor<2x2x4x!FHE.eint<6>> {
|
||||
%0 = "FHE.zero_tensor"() : () -> tensor<2x2x4x!FHE.eint<6>>
|
||||
return %0 : tensor<2x2x4x!FHE.eint<6>>
|
||||
}
|
||||
tests:
|
||||
- outputs:
|
||||
- tensor: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
|
||||
shape: [2,2,4]
|
||||
---
|
||||
description: zero_tensor_16bits
|
||||
program: |
|
||||
func.func @main() -> tensor<2x2x4x!FHE.eint<16>> {
|
||||
%0 = "FHE.zero_tensor"() : () -> tensor<2x2x4x!FHE.eint<16>>
|
||||
return %0 : tensor<2x2x4x!FHE.eint<16>>
|
||||
}
|
||||
tests:
|
||||
- outputs:
|
||||
- tensor: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
|
||||
shape: [2,2,4]
|
||||
---
|
||||
description: add_eint_int_cst
|
||||
program: |
|
||||
func.func @main(%arg0: !FHE.eint<2>) -> !FHE.eint<2> {
|
||||
%0 = arith.constant 1 : i3
|
||||
%1 = "FHE.add_eint_int"(%arg0, %0): (!FHE.eint<2>, i3) -> (!FHE.eint<2>)
|
||||
return %1: !FHE.eint<2>
|
||||
}
|
||||
tests:
|
||||
- inputs:
|
||||
- scalar: 0
|
||||
outputs:
|
||||
- scalar: 1
|
||||
---
|
||||
description: add_eint_int_cst_16bits
|
||||
program: |
|
||||
func.func @main(%arg0: !FHE.eint<16>) -> !FHE.eint<16> {
|
||||
%0 = arith.constant 1 : i17
|
||||
%1 = "FHE.add_eint_int"(%arg0, %0): (!FHE.eint<16>, i17) -> (!FHE.eint<16>)
|
||||
return %1: !FHE.eint<16>
|
||||
}
|
||||
tests:
|
||||
- inputs:
|
||||
- scalar: 0
|
||||
outputs:
|
||||
- scalar: 1
|
||||
- inputs:
|
||||
- scalar: 65534
|
||||
outputs:
|
||||
- scalar: 65535
|
||||
---
|
||||
description: add_eint_int_arg
|
||||
program: |
|
||||
func.func @main(%arg0: !FHE.eint<2>, %arg1: i3) -> !FHE.eint<2> {
|
||||
%1 = "FHE.add_eint_int"(%arg0, %arg1): (!FHE.eint<2>, i3) -> (!FHE.eint<2>)
|
||||
return %1: !FHE.eint<2>
|
||||
}
|
||||
tests:
|
||||
- inputs:
|
||||
- scalar: 0
|
||||
- scalar: 1
|
||||
outputs:
|
||||
- scalar: 1
|
||||
- inputs:
|
||||
- scalar: 1
|
||||
- scalar: 2
|
||||
outputs:
|
||||
- scalar: 3
|
||||
---
|
||||
description: add_eint_int_arg_16bits
|
||||
program: |
|
||||
func.func @main(%arg0: !FHE.eint<16>, %arg1: i17) -> !FHE.eint<16> {
|
||||
%1 = "FHE.add_eint_int"(%arg0, %arg1): (!FHE.eint<16>, i17) -> (!FHE.eint<16>)
|
||||
return %1: !FHE.eint<16>
|
||||
}
|
||||
tests:
|
||||
- inputs:
|
||||
- scalar: 0
|
||||
- scalar: 0
|
||||
outputs:
|
||||
- scalar: 0
|
||||
- inputs:
|
||||
- scalar: 0
|
||||
- scalar: 5
|
||||
outputs:
|
||||
- scalar: 5
|
||||
- inputs:
|
||||
- scalar: 32767
|
||||
- scalar: 32768
|
||||
outputs:
|
||||
- scalar: 65535
|
||||
---
|
||||
description: add_eint
|
||||
program: |
|
||||
func.func @main(%arg0: !FHE.eint<2>, %arg1: !FHE.eint<2>) -> !FHE.eint<2> {
|
||||
%1 = "FHE.add_eint"(%arg0, %arg1): (!FHE.eint<2>, !FHE.eint<2>) -> (!FHE.eint<2>)
|
||||
return %1: !FHE.eint<2>
|
||||
}
|
||||
tests:
|
||||
- inputs:
|
||||
- scalar: 0
|
||||
- scalar: 1
|
||||
outputs:
|
||||
- scalar: 1
|
||||
- inputs:
|
||||
- scalar: 1
|
||||
- scalar: 2
|
||||
outputs:
|
||||
- scalar: 3
|
||||
---
|
||||
description: add_eint_16bits
|
||||
program: |
|
||||
func.func @main(%arg0: !FHE.eint<16>, %arg1: !FHE.eint<16>) -> !FHE.eint<16> {
|
||||
%1 = "FHE.add_eint"(%arg0, %arg1): (!FHE.eint<16>, !FHE.eint<16>) -> (!FHE.eint<16>)
|
||||
return %1: !FHE.eint<16>
|
||||
}
|
||||
tests:
|
||||
- inputs:
|
||||
- scalar: 0
|
||||
- scalar: 0
|
||||
outputs:
|
||||
- scalar: 0
|
||||
- inputs:
|
||||
- scalar: 0
|
||||
- scalar: 5
|
||||
outputs:
|
||||
- scalar: 5
|
||||
- inputs:
|
||||
- scalar: 32767
|
||||
- scalar: 32768
|
||||
outputs:
|
||||
- scalar: 65535
|
||||
---
|
||||
description: sub_eint_int_cst
|
||||
program: |
|
||||
func.func @main(%arg0: !FHE.eint<5>) -> !FHE.eint<5> {
|
||||
%0 = arith.constant 7 : i6
|
||||
%1 = "FHE.sub_eint_int"(%arg0, %0): (!FHE.eint<5>, i6) -> (!FHE.eint<5>)
|
||||
return %1: !FHE.eint<5>
|
||||
}
|
||||
tests:
|
||||
- inputs:
|
||||
- scalar: 10
|
||||
outputs:
|
||||
- scalar: 3
|
||||
- inputs:
|
||||
- scalar: 7
|
||||
outputs:
|
||||
- scalar: 0
|
||||
---
|
||||
description: sub_eint_int_cst_16bits
|
||||
program: |
|
||||
func.func @main(%arg0: !FHE.eint<16>) -> !FHE.eint<16> {
|
||||
%0 = arith.constant 7 : i17
|
||||
%1 = "FHE.sub_eint_int"(%arg0, %0): (!FHE.eint<16>, i17) -> (!FHE.eint<16>)
|
||||
return %1: !FHE.eint<16>
|
||||
}
|
||||
tests:
|
||||
- inputs:
|
||||
- scalar: 7
|
||||
outputs:
|
||||
- scalar: 0
|
||||
---
|
||||
description: sub_eint_int_arg
|
||||
program: |
|
||||
func.func @main(%arg0: !FHE.eint<4>, %arg1: i5) -> !FHE.eint<4> {
|
||||
%1 = "FHE.sub_eint_int"(%arg0, %arg1): (!FHE.eint<4>, i5) -> (!FHE.eint<4>)
|
||||
return %1: !FHE.eint<4>
|
||||
}
|
||||
tests:
|
||||
- inputs:
|
||||
- scalar: 2
|
||||
- scalar: 2
|
||||
outputs:
|
||||
- scalar: 0
|
||||
- inputs:
|
||||
- scalar: 3
|
||||
- scalar: 1
|
||||
outputs:
|
||||
- scalar: 2
|
||||
- inputs:
|
||||
- scalar: 7
|
||||
- scalar: 4
|
||||
outputs:
|
||||
- scalar: 3
|
||||
---
|
||||
description: sub_eint_int_arg_16bits_fixme
|
||||
program: |
|
||||
func.func @main(%arg0: !FHE.eint<16>, %arg1: i17) -> !FHE.eint<16> {
|
||||
%1 = "FHE.sub_eint_int"(%arg0, %arg1): (!FHE.eint<16>, i17) -> (!FHE.eint<16>)
|
||||
return %1: !FHE.eint<16>
|
||||
}
|
||||
tests:
|
||||
- inputs:
|
||||
- scalar: 72071
|
||||
- scalar: 2
|
||||
outputs:
|
||||
- scalar: 72069
|
||||
---
|
||||
description: sub_eint
|
||||
program: |
|
||||
func.func @main(%arg0: !FHE.eint<4>, %arg1: !FHE.eint<4>) -> !FHE.eint<4> {
|
||||
%1 = "FHE.sub_eint"(%arg0, %arg1): (!FHE.eint<4>, !FHE.eint<4>) -> (!FHE.eint<4>)
|
||||
return %1: !FHE.eint<4>
|
||||
}
|
||||
tests:
|
||||
- inputs:
|
||||
- scalar: 2
|
||||
- scalar: 2
|
||||
outputs:
|
||||
- scalar: 0
|
||||
- inputs:
|
||||
- scalar: 3
|
||||
- scalar: 1
|
||||
outputs:
|
||||
- scalar: 2
|
||||
- inputs:
|
||||
- scalar: 7
|
||||
- scalar: 4
|
||||
outputs:
|
||||
- scalar: 3
|
||||
---
|
||||
description: sub_eint_16bits
|
||||
program: |
|
||||
func.func @main(%arg0: !FHE.eint<16>, %arg1: !FHE.eint<16>) -> !FHE.eint<16> {
|
||||
%1 = "FHE.sub_eint"(%arg0, %arg1): (!FHE.eint<16>, !FHE.eint<16>) -> (!FHE.eint<16>)
|
||||
return %1: !FHE.eint<16>
|
||||
}
|
||||
tests:
|
||||
- inputs:
|
||||
- scalar: 0
|
||||
- scalar: 0
|
||||
outputs:
|
||||
- scalar: 0
|
||||
- inputs:
|
||||
- scalar: 72071
|
||||
- scalar: 72071
|
||||
outputs:
|
||||
- scalar: 0
|
||||
- inputs:
|
||||
- scalar: 7
|
||||
- scalar: 4
|
||||
outputs:
|
||||
- scalar: 3
|
||||
---
|
||||
description: sub_int_eint_arg
|
||||
program: |
|
||||
func.func @main(%arg0: i3, %arg1: !FHE.eint<2>) -> !FHE.eint<2> {
|
||||
%1 = "FHE.sub_int_eint"(%arg0, %arg1): (i3, !FHE.eint<2>) -> (!FHE.eint<2>)
|
||||
return %1: !FHE.eint<2>
|
||||
}
|
||||
tests:
|
||||
- inputs:
|
||||
- scalar: 2
|
||||
- scalar: 2
|
||||
outputs:
|
||||
- scalar: 0
|
||||
- inputs:
|
||||
- scalar: 2
|
||||
- scalar: 1
|
||||
outputs:
|
||||
- scalar: 1
|
||||
- inputs:
|
||||
- scalar: 7
|
||||
- scalar: 2
|
||||
outputs:
|
||||
- scalar: 5
|
||||
---
|
||||
description: sub_int_eint_arg_16bits
|
||||
program: |
|
||||
func.func @main(%arg0: i17, %arg1: !FHE.eint<16>) -> !FHE.eint<16> {
|
||||
%1 = "FHE.sub_int_eint"(%arg0, %arg1): (i17, !FHE.eint<16>) -> (!FHE.eint<16>)
|
||||
return %1: !FHE.eint<16>
|
||||
}
|
||||
tests:
|
||||
- inputs:
|
||||
- scalar: 0
|
||||
- scalar: 0
|
||||
outputs:
|
||||
- scalar: 0
|
||||
- inputs:
|
||||
- scalar: 0
|
||||
- scalar: -1
|
||||
outputs:
|
||||
- scalar: 1
|
||||
---
|
||||
description: sub_int_eint_cst
|
||||
program: |
|
||||
func.func @main(%arg0: !FHE.eint<2>) -> !FHE.eint<2> {
|
||||
%0 = arith.constant 7 : i3
|
||||
%1 = "FHE.sub_int_eint"(%0, %arg0): (i3, !FHE.eint<2>) -> (!FHE.eint<2>)
|
||||
return %1 : !FHE.eint<2>
|
||||
}
|
||||
tests:
|
||||
- inputs:
|
||||
- scalar: 1
|
||||
outputs:
|
||||
- scalar: 6
|
||||
- inputs:
|
||||
- scalar: 2
|
||||
outputs:
|
||||
- scalar: 5
|
||||
---
|
||||
description: sub_int_eint_cst_16bits
|
||||
program: |
|
||||
func.func @main(%arg0: !FHE.eint<16>) -> !FHE.eint<16> {
|
||||
%0 = arith.constant 65535 : i17
|
||||
%1 = "FHE.sub_int_eint"(%0, %arg0): (i17, !FHE.eint<16>) -> (!FHE.eint<16>)
|
||||
return %1: !FHE.eint<16>
|
||||
}
|
||||
tests:
|
||||
- inputs:
|
||||
- scalar: 65535
|
||||
outputs:
|
||||
- scalar: 0
|
||||
- inputs:
|
||||
- scalar: 0
|
||||
outputs:
|
||||
- scalar: 65535
|
||||
---
|
||||
# TODO: Rewrite/Remove
|
||||
# The FHE.neg_eint op doesn't come with a well defined semantics as FHE.eint
|
||||
# has an undefined behavior for under/overflow.
|
||||
@@ -427,98 +76,6 @@ tests:
|
||||
outputs:
|
||||
- scalar: 3
|
||||
---
|
||||
description: mul_eint_int_cst
|
||||
program: |
|
||||
func.func @main(%arg0: !FHE.eint<2>) -> !FHE.eint<2> {
|
||||
%0 = arith.constant 2 : i3
|
||||
%1 = "FHE.mul_eint_int"(%arg0, %0): (!FHE.eint<2>, i3) -> (!FHE.eint<2>)
|
||||
return %1: !FHE.eint<2>
|
||||
}
|
||||
tests:
|
||||
- inputs:
|
||||
- scalar: 0
|
||||
outputs:
|
||||
- scalar: 0
|
||||
- inputs:
|
||||
- scalar: 1
|
||||
outputs:
|
||||
- scalar: 2
|
||||
- inputs:
|
||||
- scalar: 2
|
||||
outputs:
|
||||
- scalar: 4
|
||||
- inputs:
|
||||
- scalar: 2
|
||||
outputs:
|
||||
- scalar: 4
|
||||
---
|
||||
description: mul_eint_int_cst_16bits
|
||||
program: |
|
||||
func.func @main(%arg0: !FHE.eint<16>) -> !FHE.eint<16> {
|
||||
%0 = arith.constant 2 : i17
|
||||
%1 = "FHE.mul_eint_int"(%arg0, %0): (!FHE.eint<16>, i17) -> (!FHE.eint<16>)
|
||||
return %1: !FHE.eint<16>
|
||||
}
|
||||
tests:
|
||||
- inputs:
|
||||
- scalar: 0
|
||||
outputs:
|
||||
- scalar: 0
|
||||
- inputs:
|
||||
- scalar: 1
|
||||
outputs:
|
||||
- scalar: 2
|
||||
- inputs:
|
||||
- scalar: 36035
|
||||
outputs:
|
||||
- scalar: 72070
|
||||
---
|
||||
description: mul_eint_int_arg
|
||||
program: |
|
||||
func.func @main(%arg0: !FHE.eint<2>, %arg1: i3) -> !FHE.eint<2> {
|
||||
%1 = "FHE.mul_eint_int"(%arg0, %arg1): (!FHE.eint<2>, i3) -> (!FHE.eint<2>)
|
||||
return %1: !FHE.eint<2>
|
||||
}
|
||||
tests:
|
||||
- inputs:
|
||||
- scalar: 0
|
||||
- scalar: 2
|
||||
outputs:
|
||||
- scalar: 0
|
||||
- inputs:
|
||||
- scalar: 1
|
||||
- scalar: 2
|
||||
outputs:
|
||||
- scalar: 2
|
||||
- inputs:
|
||||
- scalar: 2
|
||||
- scalar: 2
|
||||
outputs:
|
||||
- scalar: 4
|
||||
---
|
||||
description: mul_eint_int_arg_16bits
|
||||
program: |
|
||||
func.func @main(%arg0: !FHE.eint<16>, %arg1: i17) -> !FHE.eint<16> {
|
||||
%1 = "FHE.mul_eint_int"(%arg0, %arg1): (!FHE.eint<16>, i17) -> (!FHE.eint<16>)
|
||||
return %1: !FHE.eint<16>
|
||||
}
|
||||
tests:
|
||||
- inputs:
|
||||
- scalar: 0
|
||||
- scalar: 87
|
||||
outputs:
|
||||
- scalar: 0
|
||||
- inputs:
|
||||
- scalar: 1
|
||||
- scalar: 72071
|
||||
outputs:
|
||||
- scalar: 72071
|
||||
- inputs:
|
||||
- scalar: 2
|
||||
- scalar: 3572
|
||||
outputs:
|
||||
- scalar: 7144
|
||||
---
|
||||
description: apply_lookup_table_1_bits
|
||||
program: |
|
||||
func.func @main(%arg0: !FHE.eint<1>) -> !FHE.eint<1> {
|
||||
|
||||
6152
compiler/tests/end_to_end_fixture/end_to_end_leveled.yaml
Normal file
6152
compiler/tests/end_to_end_fixture/end_to_end_leveled.yaml
Normal file
File diff suppressed because it is too large
Load Diff
264
compiler/tests/end_to_end_fixture/end_to_end_leveled_gen.py
Normal file
264
compiler/tests/end_to_end_fixture/end_to_end_leveled_gen.py
Normal file
@@ -0,0 +1,264 @@
|
||||
MAX_PRECISION = 29
|
||||
|
||||
|
||||
def main():
|
||||
print("# /!\ DO NOT EDIT MANUALLY THIS FILE MANUALLY")
|
||||
print("# /!\ THIS FILE HAS BEEN GENERATED THANKS THE end_to_end_levelled_gen.py scripts")
|
||||
print("# This reference file aims to test all levelled ops with all bitwidth than we known that the compiler/optimizer support.\n\n")
|
||||
for p in range(1, MAX_PRECISION+1):
|
||||
if p != 1:
|
||||
print("---")
|
||||
max_value = ((2 ** p) - 1)
|
||||
integer_bitwidth = p + 1
|
||||
# identity
|
||||
print("description: identity_{0}bits".format(p))
|
||||
print("program: |")
|
||||
print(
|
||||
" func.func @main(%arg0: !FHE.eint<{0}>) -> !FHE.eint<{0}> {{".format(p))
|
||||
print(" return %arg0: !FHE.eint<{0}>".format(p))
|
||||
print(" }")
|
||||
print("tests:")
|
||||
print(" - inputs:")
|
||||
print(" - scalar: {0}".format(max_value))
|
||||
print(" outputs:")
|
||||
print(" - scalar: {0}".format(max_value))
|
||||
print("---")
|
||||
# zero_tensor
|
||||
print("description: zero_tensor_{0}bits".format(p))
|
||||
print("program: |")
|
||||
print(
|
||||
" func.func @main() -> tensor<2x2x4x!FHE.eint<{0}>> {{".format(p))
|
||||
print(
|
||||
" %0 = \"FHE.zero_tensor\"() : () -> tensor<2x2x4x!FHE.eint<{0}>>".format(p))
|
||||
print(" return %0: tensor<2x2x4x!FHE.eint<{0}>>".format(p))
|
||||
print(" }")
|
||||
print("tests:")
|
||||
print(" - outputs:")
|
||||
print(" - tensor: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]")
|
||||
print(" shape: [2,2,4]")
|
||||
print("---")
|
||||
# add_eint_int_cst
|
||||
print("description: add_eint_int_cst_{0}bits".format(p))
|
||||
print("program: |")
|
||||
print(
|
||||
" func.func @main(%arg0: !FHE.eint<{0}>) -> !FHE.eint<{0}> {{".format(p))
|
||||
print(" %0 = arith.constant 1 : i{0}".format(integer_bitwidth))
|
||||
print(
|
||||
" %1 = \"FHE.add_eint_int\"(%arg0, %0): (!FHE.eint<{0}>, i{1}) -> (!FHE.eint<{0}>)".format(p, integer_bitwidth))
|
||||
print(" return %1: !FHE.eint<{0}>".format(p))
|
||||
print(" }")
|
||||
print("tests:")
|
||||
print(" - inputs:")
|
||||
print(" - scalar: {0}".format(max_value-1))
|
||||
print(" outputs:")
|
||||
print(" - scalar: {0}".format(max_value))
|
||||
print("---")
|
||||
# add_eint_int_arg
|
||||
print("description: add_eint_int_arg_{0}bits".format(p))
|
||||
print("program: |")
|
||||
print(
|
||||
" func.func @main(%arg0: !FHE.eint<{0}>, %arg1: i{1}) -> !FHE.eint<{0}> {{".format(p, integer_bitwidth))
|
||||
print(
|
||||
" %0 = \"FHE.add_eint_int\"(%arg0, %arg1): (!FHE.eint<{0}>, i{1}) -> (!FHE.eint<{0}>)".format(p, integer_bitwidth))
|
||||
print(" return %0: !FHE.eint<{0}>".format(p))
|
||||
print(" }")
|
||||
print("tests:")
|
||||
print(" - inputs:")
|
||||
print(" - scalar: {0}".format(max_value-1))
|
||||
print(" - scalar: {0}".format(1))
|
||||
print(" outputs:")
|
||||
print(" - scalar: {0}".format(max_value))
|
||||
print(" - inputs:")
|
||||
print(" - scalar: {0}".format(max_value))
|
||||
print(" - scalar: {0}".format(0))
|
||||
print(" outputs:")
|
||||
print(" - scalar: {0}".format(max_value))
|
||||
print(" - inputs:")
|
||||
print(" - scalar: {0}".format((max_value-1) >> 1))
|
||||
print(" - scalar: {0}".format((max_value >> 1) + 1))
|
||||
print(" outputs:")
|
||||
print(" - scalar: {0}".format(max_value))
|
||||
print("---")
|
||||
# add_eint
|
||||
print("description: add_eint_{0}_bits".format(p))
|
||||
print("program: |")
|
||||
print(
|
||||
" func.func @main(%arg0: !FHE.eint<{0}>, %arg1: !FHE.eint<{0}>) -> !FHE.eint<{0}> {{".format(p))
|
||||
print(
|
||||
" %res = \"FHE.add_eint\"(%arg0, %arg1): (!FHE.eint<{0}>, !FHE.eint<{0}>) -> !FHE.eint<{0}>".format(p))
|
||||
print(" return %res: !FHE.eint<{0}>".format(p))
|
||||
print(" }")
|
||||
print("tests:")
|
||||
print(" - inputs:")
|
||||
print(" - scalar: {0}".format(((2 ** p) >> 1) - 1))
|
||||
print(" - scalar: {0}".format(((2 ** p) >> 1)))
|
||||
print(" outputs:")
|
||||
print(" - scalar: {0}".format((2 ** p) - 1))
|
||||
print("---")
|
||||
# sub_eint_int_cst
|
||||
print("description: sub_eint_int_cst_{0}bits".format(p))
|
||||
print("program: |")
|
||||
print(
|
||||
" func.func @main(%arg0: !FHE.eint<{0}>) -> !FHE.eint<{0}> {{".format(p))
|
||||
print(" %0 = arith.constant {1} : i{0}".format(
|
||||
integer_bitwidth, max_value))
|
||||
print(
|
||||
" %1 = \"FHE.sub_eint_int\"(%arg0, %0): (!FHE.eint<{0}>, i{1}) -> (!FHE.eint<{0}>)".format(p, integer_bitwidth))
|
||||
print(" return %1: !FHE.eint<{0}>".format(p))
|
||||
print(" }")
|
||||
print("tests:")
|
||||
print(" - inputs:")
|
||||
print(" - scalar: {0}".format(max_value))
|
||||
print(" outputs:")
|
||||
print(" - scalar: 0")
|
||||
print("---")
|
||||
# sub_eint_int_arg
|
||||
print("description: sub_eint_int_arg_{0}bits".format(p))
|
||||
print("program: |")
|
||||
print(
|
||||
" func.func @main(%arg0: !FHE.eint<{0}>, %arg1: i{1}) -> !FHE.eint<{0}> {{".format(p, integer_bitwidth))
|
||||
print(
|
||||
" %1 = \"FHE.sub_eint_int\"(%arg0, %arg1): (!FHE.eint<{0}>, i{1}) -> (!FHE.eint<{0}>)".format(p, integer_bitwidth))
|
||||
print(" return %1: !FHE.eint<{0}>".format(p))
|
||||
print(" }")
|
||||
print("tests:")
|
||||
print(" - inputs:")
|
||||
print(" - scalar: {0}".format(max_value))
|
||||
print(" - scalar: {0}".format(max_value))
|
||||
print(" outputs:")
|
||||
print(" - scalar: 0")
|
||||
print(" - inputs:")
|
||||
print(" - scalar: {0}".format(max_value))
|
||||
print(" - scalar: 0")
|
||||
print(" outputs:")
|
||||
print(" - scalar: {0}".format(max_value))
|
||||
print(" - inputs:")
|
||||
print(" - scalar: {0}".format(max_value - 1))
|
||||
print(" - scalar: {0}".format(max_value >> 1))
|
||||
print(" outputs:")
|
||||
print(" - scalar: {0}".format(max_value >> 1))
|
||||
print("---")
|
||||
# sub_int_eint_cst
|
||||
print("description: sub_int_eint_cst_{0}bits".format(p))
|
||||
print("program: |")
|
||||
print(
|
||||
" func.func @main(%arg0: !FHE.eint<{0}>) -> !FHE.eint<{0}> {{".format(p))
|
||||
print(" %0 = arith.constant {1} : i{0}".format(
|
||||
integer_bitwidth, max_value))
|
||||
print(
|
||||
" %1 = \"FHE.sub_int_eint\"(%0, %arg0): (i{1}, !FHE.eint<{0}>) -> (!FHE.eint<{0}>)".format(p, integer_bitwidth))
|
||||
print(" return %1: !FHE.eint<{0}>".format(p))
|
||||
print(" }")
|
||||
print("tests:")
|
||||
print(" - inputs:")
|
||||
print(" - scalar: {0}".format(max_value))
|
||||
print(" outputs:")
|
||||
print(" - scalar: 0")
|
||||
print("---")
|
||||
# sub_int_eint_arg
|
||||
print("description: sub_int_eint_arg_{0}bits".format(p))
|
||||
print("program: |")
|
||||
print(
|
||||
" func.func @main(%arg0: i{1}, %arg1: !FHE.eint<{0}>) -> !FHE.eint<{0}> {{".format(p, integer_bitwidth))
|
||||
print(
|
||||
" %1 = \"FHE.sub_int_eint\"(%arg0, %arg1): (i{1}, !FHE.eint<{0}>) -> (!FHE.eint<{0}>)".format(p, integer_bitwidth))
|
||||
print(" return %1: !FHE.eint<{0}>".format(p))
|
||||
print(" }")
|
||||
print("tests:")
|
||||
print(" - inputs:")
|
||||
print(" - scalar: {0}".format(max_value))
|
||||
print(" - scalar: {0}".format(max_value))
|
||||
print(" outputs:")
|
||||
print(" - scalar: 0")
|
||||
print(" - inputs:")
|
||||
print(" - scalar: {0}".format(max_value))
|
||||
print(" - scalar: 0")
|
||||
print(" outputs:")
|
||||
print(" - scalar: {0}".format(max_value))
|
||||
print(" - inputs:")
|
||||
print(" - scalar: {0}".format(max_value - 1))
|
||||
print(" - scalar: {0}".format(max_value >> 1))
|
||||
print(" outputs:")
|
||||
print(" - scalar: {0}".format(max_value >> 1))
|
||||
print("---")
|
||||
# sub_eint
|
||||
print("description: sub_eint_{0}bits".format(p))
|
||||
print("program: |")
|
||||
print(
|
||||
" func.func @main(%arg0: !FHE.eint<{0}>, %arg1: !FHE.eint<{0}>) -> !FHE.eint<{0}> {{".format(p))
|
||||
print(
|
||||
" %1 = \"FHE.sub_eint\"(%arg0, %arg1): (!FHE.eint<{0}>, !FHE.eint<{0}>) -> (!FHE.eint<{0}>)".format(p))
|
||||
print(" return %1: !FHE.eint<{0}>".format(p))
|
||||
print(" }")
|
||||
print("tests:")
|
||||
print(" - inputs:")
|
||||
print(" - scalar: {0}".format(max_value))
|
||||
print(" - scalar: {0}".format(max_value))
|
||||
print(" outputs:")
|
||||
print(" - scalar: 0")
|
||||
print(" - inputs:")
|
||||
print(" - scalar: {0}".format(max_value))
|
||||
print(" - scalar: 0")
|
||||
print(" outputs:")
|
||||
print(" - scalar: {0}".format(max_value))
|
||||
print(" - inputs:")
|
||||
print(" - scalar: {0}".format(max_value - 1))
|
||||
print(" - scalar: {0}".format(max_value >> 1))
|
||||
print(" outputs:")
|
||||
print(" - scalar: {0}".format(max_value >> 1))
|
||||
print("---")
|
||||
# mul_eint_int_cst
|
||||
print("description: mul_eint_int_cst_{0}bits".format(p))
|
||||
print("program: |")
|
||||
print(
|
||||
" func.func @main(%arg0: !FHE.eint<{0}>) -> !FHE.eint<{0}> {{".format(p))
|
||||
print(" %0 = arith.constant 2 : i{0}".format(
|
||||
integer_bitwidth, max_value))
|
||||
print(
|
||||
" %1 = \"FHE.mul_eint_int\"(%arg0, %0): (!FHE.eint<{0}>, i{1}) -> (!FHE.eint<{0}>)".format(p, integer_bitwidth))
|
||||
print(" return %1: !FHE.eint<{0}>".format(p))
|
||||
print(" }")
|
||||
print("tests:")
|
||||
print(" - inputs:")
|
||||
print(" - scalar: 0")
|
||||
print(" outputs:")
|
||||
print(" - scalar: 0")
|
||||
print(" - inputs:")
|
||||
print(" - scalar: {0}".format(max_value >> 1))
|
||||
print(" outputs:")
|
||||
print(" - scalar: {0}".format(max_value - 1))
|
||||
print("---")
|
||||
# mul_eint_int_arg
|
||||
print("description: mul_eint_int_arg_{0}bits".format(p))
|
||||
print("program: |")
|
||||
print(
|
||||
" func.func @main(%arg0: !FHE.eint<{0}>, %arg1: i{1}) -> !FHE.eint<{0}> {{".format(p, integer_bitwidth))
|
||||
print(
|
||||
" %1 = \"FHE.mul_eint_int\"(%arg0, %arg1): (!FHE.eint<{0}>, i{1}) -> (!FHE.eint<{0}>)".format(p, integer_bitwidth))
|
||||
print(" return %1: !FHE.eint<{0}>".format(p))
|
||||
print(" }")
|
||||
print("tests:")
|
||||
print(" - inputs:")
|
||||
print(" - scalar: 0")
|
||||
print(" - scalar: {0}".format(max_value))
|
||||
print(" outputs:")
|
||||
print(" - scalar: 0")
|
||||
print(" - inputs:")
|
||||
print(" - scalar: {0}".format(max_value))
|
||||
print(" - scalar: 0")
|
||||
print(" outputs:")
|
||||
print(" - scalar: 0")
|
||||
print(" - inputs:")
|
||||
print(" - scalar: 1")
|
||||
print(" - scalar: {0}".format(max_value))
|
||||
print(" outputs:")
|
||||
print(" - scalar: {0}".format(max_value))
|
||||
print(" - inputs:")
|
||||
print(" - scalar: {0}".format(max_value))
|
||||
print(" - scalar: 1")
|
||||
print(" outputs:")
|
||||
print(" - scalar: {0}".format(max_value))
|
||||
print("---")
|
||||
|
||||
|
||||
main()
|
||||
@@ -115,7 +115,10 @@ std::string printEndToEndDesc(const testing::TestParamInfo<EndToEndDesc> desc) {
|
||||
"tests/end_to_end_fixture/end_to_end_encrypted_tensor.yaml") \
|
||||
INSTANTIATE_END_TO_END_TEST_SUITE_FROM_FILE( \
|
||||
FHELinalg, suite, lambdasupport, \
|
||||
"tests/end_to_end_fixture/end_to_end_fhelinalg.yaml")
|
||||
"tests/end_to_end_fixture/end_to_end_fhelinalg.yaml") \
|
||||
INSTANTIATE_END_TO_END_TEST_SUITE_FROM_FILE( \
|
||||
FHELeveledOps, suite, lambdasupport, \
|
||||
"tests/end_to_end_fixture/end_to_end_leveled.yaml")
|
||||
|
||||
/// Instantiate the test suite for Jit
|
||||
INSTANTIATE_END_TO_END_TEST_SUITE_FROM_ALL_TEST_FILES(
|
||||
|
||||
Reference in New Issue
Block a user