enhance(tests): Generate from 1 to 29 bits end to end tests fhe tests for basic operators

This commit is contained in:
Quentin Bourgerie
2022-08-19 15:34:30 +02:00
parent f69c8dfaba
commit 2ed9fc7583
4 changed files with 6420 additions and 444 deletions

View File

@@ -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> {

File diff suppressed because it is too large Load Diff

View 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()

View File

@@ -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(