53 lines
752 B
ArmAsm
53 lines
752 B
ArmAsm
# mach: aarch64
|
|
|
|
# Check the multiply highpart instructions: smulh, umulh.
|
|
|
|
# Test -2*2, -1<<32*-1<<32, -2*-2, and 2*2.
|
|
|
|
.include "testutils.inc"
|
|
|
|
start
|
|
|
|
mov x0, #-2
|
|
mov x1, #2
|
|
smulh x2, x0, x1
|
|
cmp x2, #-1
|
|
bne .Lfailure
|
|
umulh x3, x0, x1
|
|
cmp x3, #1
|
|
bne .Lfailure
|
|
|
|
mov w0, #-1
|
|
lsl x0, x0, #32 // 0xffffffff00000000
|
|
mov x1, x0
|
|
smulh x2, x0, x1
|
|
cmp x2, #1
|
|
bne .Lfailure
|
|
umulh x3, x0, x1
|
|
mov w4, #-2
|
|
lsl x4, x4, #32
|
|
add x4, x4, #1 // 0xfffffffe00000001
|
|
cmp x3, x4
|
|
bne .Lfailure
|
|
|
|
mov x0, #-2
|
|
mov x1, #-2
|
|
smulh x2, x0, x1
|
|
cmp x2, #0
|
|
bne .Lfailure
|
|
umulh x3, x0, x1
|
|
cmp x3, #-4
|
|
bne .Lfailure
|
|
|
|
mov x0, #2
|
|
mov x1, #2
|
|
smulh x2, x0, x1
|
|
cmp x2, #0
|
|
bne .Lfailure
|
|
umulh x3, x0, x1
|
|
cmp x3, #0
|
|
bne .Lfailure
|
|
|
|
pass
|
|
.Lfailure:
|
|
fail
|