| // RUN: llvm-mc -triple=aarch64-none-linux-gnu < %s | FileCheck %s | |
| // RUN: not llvm-mc -mattr=+no-neg-immediates -triple=aarch64-none-linux-gnu < %s 2>&1 | FileCheck %s --check-prefix=CHECK-NO-NEG-IMM | |
| // CHECK: and x0, x1, #0xfffffffffffffffd | |
| // CHECK: and x0, x1, #0xfffffffffffffffd | |
| // CHECK-NO-NEG-IMM: instruction requires: NegativeImmediates | |
| and x0, x1, #~2 | |
| bic x0, x1, #2 | |
| // CHECK: and w0, w1, #0xfffffffd | |
| // CHECK: and w0, w1, #0xfffffffd | |
| // CHECK-NO-NEG-IMM: instruction requires: NegativeImmediates | |
| and w0, w1, #~2 | |
| bic w0, w1, #2 | |
| // CHECK: ands x0, x1, #0xfffffffffffffffd | |
| // CHECK: ands x0, x1, #0xfffffffffffffffd | |
| // CHECK-NO-NEG-IMM: instruction requires: NegativeImmediates | |
| ands x0, x1, #~2 | |
| bics x0, x1, #2 | |
| // CHECK: ands w0, w1, #0xfffffffd | |
| // CHECK: ands w0, w1, #0xfffffffd | |
| // CHECK-NO-NEG-IMM: instruction requires: NegativeImmediates | |
| ands w0, w1, #~2 | |
| bics w0, w1, #2 | |
| // CHECK: orr x0, x1, #0xfffffffffffffffd | |
| // CHECK: orr x0, x1, #0xfffffffffffffffd | |
| // CHECK-NO-NEG-IMM: instruction requires: NegativeImmediates | |
| orr x0, x1, #~2 | |
| orn x0, x1, #2 | |
| // CHECK: orr w2, w1, #0xfffffffc | |
| // CHECK: orr w2, w1, #0xfffffffc | |
| // CHECK-NO-NEG-IMM: instruction requires: NegativeImmediates | |
| orr w2, w1, #~3 | |
| orn w2, w1, #3 | |
| // CHECK: eor x0, x1, #0xfffffffffffffffd | |
| // CHECK: eor x0, x1, #0xfffffffffffffffd | |
| // CHECK-NO-NEG-IMM: instruction requires: NegativeImmediates | |
| eor x0, x1, #~2 | |
| eon x0, x1, #2 | |
| // CHECK: eor w2, w1, #0xfffffffc | |
| // CHECK: eor w2, w1, #0xfffffffc | |
| // CHECK-NO-NEG-IMM: instruction requires: NegativeImmediates | |
| eor w2, w1, #~3 | |
| eon w2, w1, #3 |