.text _start: li x2, 0xdead0 # +912080 li x3, 0 # zero li x4, 1 # one li x5, -1 # -1 li x6, 0xdead0 # duplicate of x2 li x7, -2355 # negative li x8, 123456 # positive li x9, -765432 # negative li x10, 0x7fffffff # max positive 32b li x11, 0x80000000 # min negative 32b # -------------------------------------------------------------- # 1. MULW : a * 0 mulw x31, x2, x3 # expected: 0000000000000000 # 2. MULW : a * 1 mulw x31, x2, x4 # expected: 000000000000dead0 # 3. MULW : a * a mulw x31, x2, x6 # expected: FFFFFFFFB080E900 # 4. MULW : -1 * a mulw x31, x5, x2 # expected: -dead0 # 5. MULW : negative * negative mulw x31, x7, x7 # expected: 000000000054A029 # 6. MULW : negative * positive mulw x31, x7, x8 # expected: FFFFFFFFEEABAD40 # 7. MULW : positive * negative mulw x31, x8, x9 # expected: FFFFFFFFFF879200 # 8. MULW : overflow example (max * 2) li x12, 2 mulw x31, x10, x12 # expected: fffffffffffffffe # 9. MULW : max * max mulw x31, x10, x10 # expected: 0000000000000001 # 10. MULW : min * min mulw x31, x11, x11 # expected: 0000000000000000