blob: d75e0c64e1d991240b7d9c5778474a59c93fe987 [file] [log] [blame]
# 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