Skip to content

Commit 9b05917

Browse files
ashjeongchokobole
authored andcommitted
test(elliptic_curve): add runner test for MSM value testing
1 parent ad6e390 commit 9b05917

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed

tests/Dialect/EllipticCurve/elliptic_curve_to_field_runner.mlir

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,12 @@
33
// RUN: --shared-libs="%mlir_lib_dir/libmlir_runner_utils%shlibext" > %t
44
// RUN: FileCheck %s --check-prefix=CHECK_TEST_OPS_IN_ORDER < %t
55

6+
// RUN: zkir-opt %s -elliptic-curve-to-llvm \
7+
// RUN: | mlir-runner -e test_msm -entry-point-result=void \
8+
// RUN: --shared-libs="%mlir_lib_dir/libmlir_runner_utils%shlibext" > %t
9+
// RUN: FileCheck %s --check-prefix=CHECK_TEST_MSM < %t
10+
11+
612
!PF = !field.pf<11:i32>
713

814
#1 = #field.pf_elem<1:i32> : !PF
@@ -102,3 +108,50 @@ func.func @test_ops_in_order() {
102108
// CHECK_TEST_OPS_IN_ORDER: [0, 0, 0]
103109
// CHECK_TEST_OPS_IN_ORDER: [1, 1]
104110
// CHECK_TEST_OPS_IN_ORDER: [4, 3, 0, 0]
111+
112+
113+
// CHECK-LABEL: @test_msm
114+
func.func @test_msm() {
115+
// 5*(5,3,2) + 7*(1,2,2) + 3*(7,5,1) + 2*(3,2,7)
116+
%var1 = field.pf.constant 1 : !PF
117+
%var2 = field.pf.constant 2 : !PF
118+
%var3 = field.pf.constant 3 : !PF
119+
%var5 = field.pf.constant 5 : !PF
120+
%var7 = field.pf.constant 7 : !PF
121+
122+
%jacobian1 = elliptic_curve.point %var5, %var3, %var2 : !PF -> !jacobian
123+
%jacobian2 = elliptic_curve.point %var1, %var2, %var2 : !PF -> !jacobian
124+
%jacobian3 = elliptic_curve.point %var7, %var5, %var1 : !PF -> !jacobian
125+
%jacobian4 = elliptic_curve.point %var3, %var2, %var7 : !PF -> !jacobian
126+
127+
// CALCULATING TRUE VALUE OF MSM
128+
%scalar_mul1 = elliptic_curve.scalar_mul %var5, %jacobian1 : !PF, !jacobian -> !jacobian
129+
%scalar_mul2 = elliptic_curve.scalar_mul %var7, %jacobian2 : !PF, !jacobian -> !jacobian
130+
%scalar_mul3 = elliptic_curve.scalar_mul %var3, %jacobian3 : !PF, !jacobian -> !jacobian
131+
%scalar_mul4 = elliptic_curve.scalar_mul %var2, %jacobian4 : !PF, !jacobian -> !jacobian
132+
133+
%add1 = elliptic_curve.add %scalar_mul1, %scalar_mul2 : !jacobian, !jacobian -> !jacobian
134+
%add2 = elliptic_curve.add %scalar_mul3, %scalar_mul4 : !jacobian, !jacobian -> !jacobian
135+
%msm_true = elliptic_curve.add %add1, %add2 : !jacobian, !jacobian -> !jacobian
136+
137+
%extract_point = elliptic_curve.extract %msm_true : !jacobian -> tensor<3x!PF>
138+
%extract = field.pf.extract %extract_point : tensor<3x!PF> -> tensor<3xi32>
139+
%mem = bufferization.to_memref %extract : tensor<3xi32> to memref<3xi32>
140+
%U = memref.cast %mem : memref<3xi32> to memref<*xi32>
141+
func.call @printMemrefI32(%U) : (memref<*xi32>) -> ()
142+
143+
// RUNNING MSM
144+
%scalars = tensor.from_elements %var5, %var7, %var3, %var2 : tensor<4x!PF>
145+
%points = elliptic_curve.point_set.from_elements %jacobian1, %jacobian2, %jacobian3, %jacobian4 : tensor<4x!jacobian>
146+
%msm_test = elliptic_curve.msm %scalars , %points: tensor<4x!PF>, tensor<4x!jacobian> -> !jacobian
147+
148+
%extract_point1 = elliptic_curve.extract %msm_test : !jacobian -> tensor<3x!PF>
149+
%extract1 = field.pf.extract %extract_point1 : tensor<3x!PF> -> tensor<3xi32>
150+
%mem1 = bufferization.to_memref %extract1 : tensor<3xi32> to memref<3xi32>
151+
%U1 = memref.cast %mem1 : memref<3xi32> to memref<*xi32>
152+
func.call @printMemrefI32(%U1) : (memref<*xi32>) -> ()
153+
return
154+
}
155+
156+
// CHECK_TEST_MSM: [0, 0, 0]
157+
// CHECK_TEST_MSM: [0, 0, 0]

0 commit comments

Comments
 (0)