55 lines
1.4 KiB
ArmAsm
55 lines
1.4 KiB
ArmAsm
.text
|
|
_start:
|
|
li x2, 0xdead00000 # +59774074880
|
|
li x3, 0 # zero
|
|
li x4, 1 # one
|
|
li x5, -1 # -1
|
|
li x6, 0xdead00000 # duplicate of x2
|
|
li x7, -235555555555 # negative
|
|
li x8, 123456789 # positive
|
|
li x9, 765432000000 # positive
|
|
li x10, 0x7fffffffffffffff # max positive 64b
|
|
li x11, 0x8000000000000000 # min negative 64b
|
|
|
|
# --------------------------------------------------------------
|
|
# 1. MULHSU : a * 0
|
|
mulhsu x31, x2, x3
|
|
# expected: 0000000000000000
|
|
|
|
# 2. MULHSU : a * 1
|
|
mulhsu x31, x2, x4
|
|
# expected: 0000000000000000
|
|
|
|
# 3. MULHSU : a * a
|
|
mulhsu x31, x2, x6
|
|
# expected: 00000000000000c1
|
|
|
|
# 4. MULHSU : -1 * a
|
|
mulhsu x31, x5, x2
|
|
# expected: ffffffffffffffff
|
|
|
|
# 5. MULHSU : negative * positive
|
|
mulhsu x31, x7, x8
|
|
# expected: fffffffffffffffe
|
|
|
|
# 6. MULHSU : negative * positive large
|
|
mulhsu x31, x7, x9
|
|
# expected: ffffffffffffd9d1
|
|
|
|
# 7. MULHSU : positive * positive
|
|
mulhsu x31, x8, x9
|
|
# expected: 0000000000000005
|
|
|
|
# 8. MULHSU : overflow example (max * 2)
|
|
li x12, 2
|
|
mulhsu x31, x10, x12
|
|
# expected: 0000000000000000
|
|
|
|
# 9. MULHSU : max * max
|
|
mulhsu x31, x10, x10
|
|
# expected: 3fffffffffffffff
|
|
|
|
# 10. MULHSU : min * max
|
|
mulhsu x31, x11, x10
|
|
# expected: c000000000000000
|