/* Copyright lowRISC contributors. */
/* Licensed under the Apache License, Version 2.0, see LICENSE for details. */
/* SPDX-License-Identifier: Apache-2.0 */

/* 256-bit multiply example. Loads two 256-bit words from DMem into w1, w0.
   Multiplies usings BN.MULQACC with the result placed into w3, w2 (upper half
   in w3). */

.section .text.start
/* Initialise WDRs before using them */
bn.xor w2, w2, w2
bn.xor w3, w3, w3

/* Load operands into WDRs */
li x2, 0
la x3, operand1
bn.lid x2, 0(x3)

li x2, 1
la x3, operand2
bn.lid x2, 0(x3)

/* Perform the multiply, limbs are 64-bit. Each instance of `mulqacc` will
   operate on two limbs as a 64-bit multiply produces a 128-bit result. */

/* limbs 0 & 1 */
bn.mulqacc.Z        w0.0, w1.0, 0

/* limbs 1 & 2 */
bn.mulqacc          w0.1, w1.0, 64
bn.mulqacc.so w2.L, w0.0, w1.1, 64

/* limbs 2 & 3 */
bn.mulqacc          w0.2, w1.0, 0
bn.mulqacc          w0.1, w1.1, 0
bn.mulqacc          w0.0, w1.2, 0

/* limbs 3 & 4 */
bn.mulqacc          w0.3, w1.0, 64
bn.mulqacc          w0.2, w1.1, 64
bn.mulqacc          w0.1, w1.2, 64
bn.mulqacc.so w2.U, w0.0, w1.3, 64

/* limbs 4 & 5 */
bn.mulqacc          w0.3, w1.1, 0
bn.mulqacc          w0.2, w1.2, 0
bn.mulqacc          w0.1, w1.3, 0

/* limbs 5 & 6 */
bn.mulqacc          w0.3, w1.2, 64
bn.mulqacc.so w3.L, w0.2, w1.3, 64

/* limbs 6 & 7 */
bn.mulqacc.so w3.U, w0.3, w1.3, 0

ecall

.section .data

/* 256-bit integer

   fbc20c8e4ba684f2 f6835831c3623f41
   49de6d75d0221f41 61a5a8d66985591e

   (.quad below is in reverse order) */

operand1:
  .quad 0x61a5a8d66985591e
  .quad 0x49de6d75d0221f41
  .quad 0xf6835831c3623f41
  .quad 0xfbc20c8e4ba684f2

/* 256-bit integer

   10ad673384d81d98 1a1c98e116948392
   60f39da06db956ec 5de6ee4dbd0f089d

   (.quad below is in reverse order) */

operand2:
   .quad 0x5de6ee4dbd0f089d
   .quad 0x60f39da06db956ec
   .quad 0x1a1c98e116948392
   .quad 0x10ad673384d81d98

/* Expected result is
   w3 =
   1066a8691e3ddfee a0a622d04cfd63b4
   ea93fcc837b795eb 3f2b811bfa6dc7f2

   w2 =
   dad4a618536bfd33 565eff3285ab75a5
   59b7199e0622d5ee ed40926c40529766 */
