Skip to content

Commit dd4f0e4

Browse files
committed
Add unit tests
1 parent be20002 commit dd4f0e4

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

test/stim/passes/test_squin_qubit_to_stim.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import os
22
import math
3+
from math import pi
34

45
from kirin import ir
56
from kirin.dialects import py
@@ -151,6 +152,37 @@ def test():
151152
assert codegen(test).strip() == "SQRT_Y 0"
152153

153154

155+
def test_adjoint_gates_rewrite():
156+
157+
@sq.kernel
158+
def test():
159+
q = sq.qalloc(4)
160+
sq.s_adj(q[0])
161+
sq.sqrt_x_adj(q[1])
162+
sq.sqrt_y_adj(q[2])
163+
sq.sqrt_z_adj(q[3]) # same as S_DAG
164+
return
165+
166+
SquinToStimPass(test.dialects)(test)
167+
assert codegen(test).strip() == "S_DAG 0\nSQRT_X_DAG 1\nSQRT_Y_DAG 2\nS_DAG 3"
168+
169+
170+
def test_u3_rewrite():
171+
172+
@sq.kernel
173+
def test():
174+
q = sq.qalloc(1)
175+
176+
sq.u3(-pi / 2, -pi / 2, -pi / 2, q[0]) # S @ SQRT_Y @ S = Z @ SQRT_X
177+
sq.u3(-pi / 2, -pi / 2, pi / 2, q[0]) # S @ SQRT_Y @ S_DAG = SQRT_X
178+
sq.u3(-pi / 2, pi / 2, -pi / 2, q[0]) # S_DAG @ SQRT_Y @ S = SQRT_X
179+
return
180+
181+
SquinToStimPass(test.dialects)(test)
182+
base_stim_prog = load_reference_program("u3_gates.stim")
183+
assert codegen(test) == base_stim_prog.rstrip()
184+
185+
154186
def test_for_loop_nontrivial_index_rewrite():
155187

156188
@sq.kernel

0 commit comments

Comments
 (0)