| ; RUN: llvm-mc -triple arm64-apple-darwin -show-encoding < %s | FileCheck %s |
| |
| foo: |
| ;==---------------------------------------------------------------------------== |
| ; 5.4.2 Logical (immediate) |
| ;==---------------------------------------------------------------------------== |
| |
| and w0, w0, #1 |
| and x0, x0, #1 |
| and w1, w2, #15 |
| and x1, x2, #15 |
| and sp, x5, #~15 |
| ands w0, w0, #1 |
| ands x0, x0, #1 |
| ands w1, w2, #15 |
| ands x1, x2, #15 |
| |
| ; CHECK: and w0, w0, #0x1 ; encoding: [0x00,0x00,0x00,0x12] |
| ; CHECK: and x0, x0, #0x1 ; encoding: [0x00,0x00,0x40,0x92] |
| ; CHECK: and w1, w2, #0xf ; encoding: [0x41,0x0c,0x00,0x12] |
| ; CHECK: and x1, x2, #0xf ; encoding: [0x41,0x0c,0x40,0x92] |
| ; CHECK: and sp, x5, #0xfffffffffffffff0 ; encoding: [0xbf,0xec,0x7c,0x92] |
| ; CHECK: ands w0, w0, #0x1 ; encoding: [0x00,0x00,0x00,0x72] |
| ; CHECK: ands x0, x0, #0x1 ; encoding: [0x00,0x00,0x40,0xf2] |
| ; CHECK: ands w1, w2, #0xf ; encoding: [0x41,0x0c,0x00,0x72] |
| ; CHECK: ands x1, x2, #0xf ; encoding: [0x41,0x0c,0x40,0xf2] |
| |
| eor w1, w2, #0x4000 |
| eor x1, x2, #0x8000 |
| |
| ; CHECK: eor w1, w2, #0x4000 ; encoding: [0x41,0x00,0x12,0x52] |
| ; CHECK: eor x1, x2, #0x8000 ; encoding: [0x41,0x00,0x71,0xd2] |
| |
| orr w1, w2, #0x4000 |
| orr x1, x2, #0x8000 |
| |
| ; CHECK: orr w1, w2, #0x4000 ; encoding: [0x41,0x00,0x12,0x32] |
| ; CHECK: orr x1, x2, #0x8000 ; encoding: [0x41,0x00,0x71,0xb2] |
| |
| orr w8, wzr, #0x1 |
| orr x8, xzr, #0x1 |
| |
| ; CHECK: orr w8, wzr, #0x1 ; encoding: [0xe8,0x03,0x00,0x32] |
| ; CHECK: orr x8, xzr, #0x1 ; encoding: [0xe8,0x03,0x40,0xb2] |
| |
| ;==---------------------------------------------------------------------------== |
| ; 5.5.3 Logical (shifted register) |
| ;==---------------------------------------------------------------------------== |
| |
| and w1, w2, w3 |
| and x1, x2, x3 |
| and w1, w2, w3, lsl #2 |
| and x1, x2, x3, lsl #2 |
| and w1, w2, w3, lsr #2 |
| and x1, x2, x3, lsr #2 |
| and w1, w2, w3, asr #2 |
| and x1, x2, x3, asr #2 |
| and w1, w2, w3, ror #2 |
| and x1, x2, x3, ror #2 |
| |
| ; CHECK: and w1, w2, w3 ; encoding: [0x41,0x00,0x03,0x0a] |
| ; CHECK: and x1, x2, x3 ; encoding: [0x41,0x00,0x03,0x8a] |
| ; CHECK: and w1, w2, w3, lsl #2 ; encoding: [0x41,0x08,0x03,0x0a] |
| ; CHECK: and x1, x2, x3, lsl #2 ; encoding: [0x41,0x08,0x03,0x8a] |
| ; CHECK: and w1, w2, w3, lsr #2 ; encoding: [0x41,0x08,0x43,0x0a] |
| ; CHECK: and x1, x2, x3, lsr #2 ; encoding: [0x41,0x08,0x43,0x8a] |
| ; CHECK: and w1, w2, w3, asr #2 ; encoding: [0x41,0x08,0x83,0x0a] |
| ; CHECK: and x1, x2, x3, asr #2 ; encoding: [0x41,0x08,0x83,0x8a] |
| ; CHECK: and w1, w2, w3, ror #2 ; encoding: [0x41,0x08,0xc3,0x0a] |
| ; CHECK: and x1, x2, x3, ror #2 ; encoding: [0x41,0x08,0xc3,0x8a] |
| |
| ands w1, w2, w3 |
| ands x1, x2, x3 |
| ands w1, w2, w3, lsl #2 |
| ands x1, x2, x3, lsl #2 |
| ands w1, w2, w3, lsr #2 |
| ands x1, x2, x3, lsr #2 |
| ands w1, w2, w3, asr #2 |
| ands x1, x2, x3, asr #2 |
| ands w1, w2, w3, ror #2 |
| ands x1, x2, x3, ror #2 |
| |
| ; CHECK: ands w1, w2, w3 ; encoding: [0x41,0x00,0x03,0x6a] |
| ; CHECK: ands x1, x2, x3 ; encoding: [0x41,0x00,0x03,0xea] |
| ; CHECK: ands w1, w2, w3, lsl #2 ; encoding: [0x41,0x08,0x03,0x6a] |
| ; CHECK: ands x1, x2, x3, lsl #2 ; encoding: [0x41,0x08,0x03,0xea] |
| ; CHECK: ands w1, w2, w3, lsr #2 ; encoding: [0x41,0x08,0x43,0x6a] |
| ; CHECK: ands x1, x2, x3, lsr #2 ; encoding: [0x41,0x08,0x43,0xea] |
| ; CHECK: ands w1, w2, w3, asr #2 ; encoding: [0x41,0x08,0x83,0x6a] |
| ; CHECK: ands x1, x2, x3, asr #2 ; encoding: [0x41,0x08,0x83,0xea] |
| ; CHECK: ands w1, w2, w3, ror #2 ; encoding: [0x41,0x08,0xc3,0x6a] |
| ; CHECK: ands x1, x2, x3, ror #2 ; encoding: [0x41,0x08,0xc3,0xea] |
| |
| bic w1, w2, w3 |
| bic x1, x2, x3 |
| bic w1, w2, w3, lsl #3 |
| bic x1, x2, x3, lsl #3 |
| bic w1, w2, w3, lsr #3 |
| bic x1, x2, x3, lsr #3 |
| bic w1, w2, w3, asr #3 |
| bic x1, x2, x3, asr #3 |
| bic w1, w2, w3, ror #3 |
| bic x1, x2, x3, ror #3 |
| |
| ; CHECK: bic w1, w2, w3 ; encoding: [0x41,0x00,0x23,0x0a] |
| ; CHECK: bic x1, x2, x3 ; encoding: [0x41,0x00,0x23,0x8a] |
| ; CHECK: bic w1, w2, w3, lsl #3 ; encoding: [0x41,0x0c,0x23,0x0a] |
| ; CHECK: bic x1, x2, x3, lsl #3 ; encoding: [0x41,0x0c,0x23,0x8a] |
| ; CHECK: bic w1, w2, w3, lsr #3 ; encoding: [0x41,0x0c,0x63,0x0a] |
| ; CHECK: bic x1, x2, x3, lsr #3 ; encoding: [0x41,0x0c,0x63,0x8a] |
| ; CHECK: bic w1, w2, w3, asr #3 ; encoding: [0x41,0x0c,0xa3,0x0a] |
| ; CHECK: bic x1, x2, x3, asr #3 ; encoding: [0x41,0x0c,0xa3,0x8a] |
| ; CHECK: bic w1, w2, w3, ror #3 ; encoding: [0x41,0x0c,0xe3,0x0a] |
| ; CHECK: bic x1, x2, x3, ror #3 ; encoding: [0x41,0x0c,0xe3,0x8a] |
| |
| bics w1, w2, w3 |
| bics x1, x2, x3 |
| bics w1, w2, w3, lsl #3 |
| bics x1, x2, x3, lsl #3 |
| bics w1, w2, w3, lsr #3 |
| bics x1, x2, x3, lsr #3 |
| bics w1, w2, w3, asr #3 |
| bics x1, x2, x3, asr #3 |
| bics w1, w2, w3, ror #3 |
| bics x1, x2, x3, ror #3 |
| |
| ; CHECK: bics w1, w2, w3 ; encoding: [0x41,0x00,0x23,0x6a] |
| ; CHECK: bics x1, x2, x3 ; encoding: [0x41,0x00,0x23,0xea] |
| ; CHECK: bics w1, w2, w3, lsl #3 ; encoding: [0x41,0x0c,0x23,0x6a] |
| ; CHECK: bics x1, x2, x3, lsl #3 ; encoding: [0x41,0x0c,0x23,0xea] |
| ; CHECK: bics w1, w2, w3, lsr #3 ; encoding: [0x41,0x0c,0x63,0x6a] |
| ; CHECK: bics x1, x2, x3, lsr #3 ; encoding: [0x41,0x0c,0x63,0xea] |
| ; CHECK: bics w1, w2, w3, asr #3 ; encoding: [0x41,0x0c,0xa3,0x6a] |
| ; CHECK: bics x1, x2, x3, asr #3 ; encoding: [0x41,0x0c,0xa3,0xea] |
| ; CHECK: bics w1, w2, w3, ror #3 ; encoding: [0x41,0x0c,0xe3,0x6a] |
| ; CHECK: bics x1, x2, x3, ror #3 ; encoding: [0x41,0x0c,0xe3,0xea] |
| |
| eon w1, w2, w3 |
| eon x1, x2, x3 |
| eon w1, w2, w3, lsl #4 |
| eon x1, x2, x3, lsl #4 |
| eon w1, w2, w3, lsr #4 |
| eon x1, x2, x3, lsr #4 |
| eon w1, w2, w3, asr #4 |
| eon x1, x2, x3, asr #4 |
| eon w1, w2, w3, ror #4 |
| eon x1, x2, x3, ror #4 |
| |
| ; CHECK: eon w1, w2, w3 ; encoding: [0x41,0x00,0x23,0x4a] |
| ; CHECK: eon x1, x2, x3 ; encoding: [0x41,0x00,0x23,0xca] |
| ; CHECK: eon w1, w2, w3, lsl #4 ; encoding: [0x41,0x10,0x23,0x4a] |
| ; CHECK: eon x1, x2, x3, lsl #4 ; encoding: [0x41,0x10,0x23,0xca] |
| ; CHECK: eon w1, w2, w3, lsr #4 ; encoding: [0x41,0x10,0x63,0x4a] |
| ; CHECK: eon x1, x2, x3, lsr #4 ; encoding: [0x41,0x10,0x63,0xca] |
| ; CHECK: eon w1, w2, w3, asr #4 ; encoding: [0x41,0x10,0xa3,0x4a] |
| ; CHECK: eon x1, x2, x3, asr #4 ; encoding: [0x41,0x10,0xa3,0xca] |
| ; CHECK: eon w1, w2, w3, ror #4 ; encoding: [0x41,0x10,0xe3,0x4a] |
| ; CHECK: eon x1, x2, x3, ror #4 ; encoding: [0x41,0x10,0xe3,0xca] |
| |
| eor w1, w2, w3 |
| eor x1, x2, x3 |
| eor w1, w2, w3, lsl #5 |
| eor x1, x2, x3, lsl #5 |
| eor w1, w2, w3, lsr #5 |
| eor x1, x2, x3, lsr #5 |
| eor w1, w2, w3, asr #5 |
| eor x1, x2, x3, asr #5 |
| eor w1, w2, w3, ror #5 |
| eor x1, x2, x3, ror #5 |
| |
| ; CHECK: eor w1, w2, w3 ; encoding: [0x41,0x00,0x03,0x4a] |
| ; CHECK: eor x1, x2, x3 ; encoding: [0x41,0x00,0x03,0xca] |
| ; CHECK: eor w1, w2, w3, lsl #5 ; encoding: [0x41,0x14,0x03,0x4a] |
| ; CHECK: eor x1, x2, x3, lsl #5 ; encoding: [0x41,0x14,0x03,0xca] |
| ; CHECK: eor w1, w2, w3, lsr #5 ; encoding: [0x41,0x14,0x43,0x4a] |
| ; CHECK: eor x1, x2, x3, lsr #5 ; encoding: [0x41,0x14,0x43,0xca] |
| ; CHECK: eor w1, w2, w3, asr #5 ; encoding: [0x41,0x14,0x83,0x4a] |
| ; CHECK: eor x1, x2, x3, asr #5 ; encoding: [0x41,0x14,0x83,0xca] |
| ; CHECK: eor w1, w2, w3, ror #5 ; encoding: [0x41,0x14,0xc3,0x4a] |
| ; CHECK: eor x1, x2, x3, ror #5 ; encoding: [0x41,0x14,0xc3,0xca] |
| |
| orr w1, w2, w3 |
| orr x1, x2, x3 |
| orr w1, w2, w3, lsl #6 |
| orr x1, x2, x3, lsl #6 |
| orr w1, w2, w3, lsr #6 |
| orr x1, x2, x3, lsr #6 |
| orr w1, w2, w3, asr #6 |
| orr x1, x2, x3, asr #6 |
| orr w1, w2, w3, ror #6 |
| orr x1, x2, x3, ror #6 |
| |
| ; CHECK: orr w1, w2, w3 ; encoding: [0x41,0x00,0x03,0x2a] |
| ; CHECK: orr x1, x2, x3 ; encoding: [0x41,0x00,0x03,0xaa] |
| ; CHECK: orr w1, w2, w3, lsl #6 ; encoding: [0x41,0x18,0x03,0x2a] |
| ; CHECK: orr x1, x2, x3, lsl #6 ; encoding: [0x41,0x18,0x03,0xaa] |
| ; CHECK: orr w1, w2, w3, lsr #6 ; encoding: [0x41,0x18,0x43,0x2a] |
| ; CHECK: orr x1, x2, x3, lsr #6 ; encoding: [0x41,0x18,0x43,0xaa] |
| ; CHECK: orr w1, w2, w3, asr #6 ; encoding: [0x41,0x18,0x83,0x2a] |
| ; CHECK: orr x1, x2, x3, asr #6 ; encoding: [0x41,0x18,0x83,0xaa] |
| ; CHECK: orr w1, w2, w3, ror #6 ; encoding: [0x41,0x18,0xc3,0x2a] |
| ; CHECK: orr x1, x2, x3, ror #6 ; encoding: [0x41,0x18,0xc3,0xaa] |
| |
| orn w1, w2, w3 |
| orn x1, x2, x3 |
| orn w1, w2, w3, lsl #7 |
| orn x1, x2, x3, lsl #7 |
| orn w1, w2, w3, lsr #7 |
| orn x1, x2, x3, lsr #7 |
| orn w1, w2, w3, asr #7 |
| orn x1, x2, x3, asr #7 |
| orn w1, w2, w3, ror #7 |
| orn x1, x2, x3, ror #7 |
| |
| ; CHECK: orn w1, w2, w3 ; encoding: [0x41,0x00,0x23,0x2a] |
| ; CHECK: orn x1, x2, x3 ; encoding: [0x41,0x00,0x23,0xaa] |
| ; CHECK: orn w1, w2, w3, lsl #7 ; encoding: [0x41,0x1c,0x23,0x2a] |
| ; CHECK: orn x1, x2, x3, lsl #7 ; encoding: [0x41,0x1c,0x23,0xaa] |
| ; CHECK: orn w1, w2, w3, lsr #7 ; encoding: [0x41,0x1c,0x63,0x2a] |
| ; CHECK: orn x1, x2, x3, lsr #7 ; encoding: [0x41,0x1c,0x63,0xaa] |
| ; CHECK: orn w1, w2, w3, asr #7 ; encoding: [0x41,0x1c,0xa3,0x2a] |
| ; CHECK: orn x1, x2, x3, asr #7 ; encoding: [0x41,0x1c,0xa3,0xaa] |
| ; CHECK: orn w1, w2, w3, ror #7 ; encoding: [0x41,0x1c,0xe3,0x2a] |
| ; CHECK: orn x1, x2, x3, ror #7 ; encoding: [0x41,0x1c,0xe3,0xaa] |