|  | ; 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] |