/* Copyright lowRISC contributors. */
/* Licensed under the Apache License, Version 2.0, see LICENSE for details. */
/* SPDX-License-Identifier: Apache-2.0 */
/*
    An example of the pseudo-operations supported by the OTBN ISA
*/

nop_example:
    /* NOP is a no-op, and expands to addi x0, x0, 0 */
    nop

ret_example:
    /* RET is a return and expands to jalr x0, x1, 0 */
    ret

li_example:
    /* LI is a bit more complicated. With a small immediate, it turns
       into just addi */
    li x2, 1230
    li x2, -123

    /* With a big immediate which happens to have nothing set in the
       lower 20 bits, it turns into just a LUI */
    li x2, 1048576
    li x2, -0x800000

    /* With a big immediate in general, we need 2 instructions.
       Firstly, a LUI to set up the upper bits, then an ADDI to sort out
       the lower ones. */
    li x2, 0x10000042

    li x2, 123456789
    li x2, 0x7fffffff
