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