    .text
_start:
    li x2,  0xdead00000        # +59774074880
    li x3,  0              # zero
    li x4,  1              # one
    li x5,  123456789          # small positive
    li x6,  0xdead00000        # duplicate of x2
    li x7,  765432000000        # large positive
    li x8,  123456789          # small positive
    li x9, 234567890000        # large positive
    li x10, 0xffffffffffffffff  # max positive 64b
    li x11, 0x8000000000000000  # min unsigned = 2^63

    # --------------------------------------------------------------
    # 1. MULHU : a * 0
    mulhu x31, x2, x3
    # expected: 0000000000000000

    # 2. MULHU : a * 1
    mulhu x31, x2, x4
    # expected: 0000000000000000

    # 3. MULHU : a * a
    mulhu x31, x2, x6
    # expected: 00000000000000c1

    # 4. MULHU : small * small
    mulhu x31, x5, x8
    # expected: 0000000000000000

    # 5. MULHU : small * large
    mulhu x31, x5, x7
    # expected: 0000000000000005

    # 6. MULHU : large * small
    mulhu x31, x7, x8
    # expected: 0000000000000005

    # 7. MULHU : large * large
    mulhu x31, x7, x9
    # expected: 0000000000002605

    # 8. MULHU : max * 2
    li x12, 2
    mulhu x31, x10, x12
    # expected: 0000000000000001

    # 9. MULHU : max * max
    mulhu x31, x10, x10
    # expected: fffffffffffffffe

    # 10. MULHU : min * max
    mulhu x31, x11, x10
    # expected: 7fffffffffffffff
