98 lines
1.5 KiB
ArmAsm
98 lines
1.5 KiB
ArmAsm
# mach: aarch64
|
|
|
|
# Check the basic integer compare instructions: adds, adds64, subs, subs64.
|
|
# For add, check value pairs 1 and -1 (Z), -1 and -1 (N), 2 and -1 (C),
|
|
# and MIN_INT and -1 (V),
|
|
# Also check -2 and 1 (not C).
|
|
# For sub, negate the second value.
|
|
|
|
.include "testutils.inc"
|
|
|
|
start
|
|
mov w0, #1
|
|
mov w1, #-1
|
|
adds w2, w0, w1
|
|
bne .Lfailure
|
|
mov w0, #-1
|
|
mov w1, #-1
|
|
adds w2, w0, w1
|
|
bpl .Lfailure
|
|
mov w0, #2
|
|
mov w1, #-1
|
|
adds w2, w0, w1
|
|
bcc .Lfailure
|
|
mov w0, #0x80000000
|
|
mov w1, #-1
|
|
adds w2, w0, w1
|
|
bvc .Lfailure
|
|
mov w0, #-2
|
|
mov w1, #1
|
|
adds w2, w0, w1
|
|
bcs .Lfailure
|
|
|
|
mov x0, #1
|
|
mov x1, #-1
|
|
adds x2, x0, x1
|
|
bne .Lfailure
|
|
mov x0, #-1
|
|
mov x1, #-1
|
|
adds x2, x0, x1
|
|
bpl .Lfailure
|
|
mov x0, #2
|
|
mov x1, #-1
|
|
adds x2, x0, x1
|
|
bcc .Lfailure
|
|
mov x0, #0x8000000000000000
|
|
mov x1, #-1
|
|
adds x2, x0, x1
|
|
bvc .Lfailure
|
|
mov x0, #-2
|
|
mov x1, #1
|
|
adds x2, x0, x1
|
|
bcs .Lfailure
|
|
|
|
mov w0, #1
|
|
mov w1, #1
|
|
subs w2, w0, w1
|
|
bne .Lfailure
|
|
mov w0, #-1
|
|
mov w1, #1
|
|
subs w2, w0, w1
|
|
bpl .Lfailure
|
|
mov w0, #2
|
|
mov w1, #1
|
|
subs w2, w0, w1
|
|
bcc .Lfailure
|
|
mov w0, #0x80000000
|
|
mov w1, #1
|
|
subs w2, w0, w1
|
|
bvc .Lfailure
|
|
mov w0, #-2
|
|
mov w1, #-1
|
|
subs w2, w0, w1
|
|
bcs .Lfailure
|
|
|
|
mov x0, #1
|
|
mov x1, #1
|
|
subs x2, x0, x1
|
|
bne .Lfailure
|
|
mov x0, #-1
|
|
mov x1, #1
|
|
subs x2, x0, x1
|
|
bpl .Lfailure
|
|
mov x0, #2
|
|
mov x1, #1
|
|
subs x2, x0, x1
|
|
bcc .Lfailure
|
|
mov x0, #0x8000000000000000
|
|
mov x1, #1
|
|
subs x2, x0, x1
|
|
bvc .Lfailure
|
|
mov x0, #-2
|
|
mov x1, #-1
|
|
subs x2, x0, x1
|
|
bcs .Lfailure
|
|
|
|
pass
|
|
.Lfailure:
|
|
fail
|