| # 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 |