def MOVE(classical_reg1, classical_reg2): """ Produce a MOVE instruction. :param classical_reg1: The first classical register. :param classical_reg2: The second classical register, which gets modified. :return: A ClassicalMove instance. """ left = unpack_classical_reg(classical_reg1) right = unpack_classical_reg(classical_reg2) return ClassicalMove(left, right)
def MOVE(classical_reg1: MemoryReferenceDesignator, classical_reg2: Union[MemoryReferenceDesignator, int, float]) -> ClassicalMove: """ Produce a MOVE instruction. :param classical_reg1: The first classical register, which gets modified. :param classical_reg2: The second classical register or immediate value. :return: A ClassicalMove instance. """ left, right = unpack_reg_val_pair(classical_reg1, classical_reg2) return ClassicalMove(left, right)
def exitClassicalBinary(self, ctx): # type: (QuilParser.ClassicalBinaryContext) -> None if ctx.AND(): self.result.append( ClassicalAnd(_addr(ctx.addr(0)), _addr(ctx.addr(1)))) elif ctx.OR(): self.result.append( ClassicalOr(_addr(ctx.addr(0)), _addr(ctx.addr(1)))) elif ctx.MOVE(): self.result.append( ClassicalMove(_addr(ctx.addr(0)), _addr(ctx.addr(1)))) elif ctx.EXCHANGE(): self.result.append( ClassicalExchange(_addr(ctx.addr(0)), _addr(ctx.addr(1))))
def move(self, left, right): return ClassicalMove(left, right)