Home | History | Annotate | Download | only in AArch64
      1 ; RUN: llvm-mc -triple arm64-apple-darwin -show-encoding < %s | FileCheck %s
      2 
      3 foo:
      4 ;==---------------------------------------------------------------------------==
      5 ; 5.4.2 Logical (immediate)
      6 ;==---------------------------------------------------------------------------==
      7 
      8   and   w0, w0, #1
      9   and   x0, x0, #1
     10   and   w1, w2, #15
     11   and   x1, x2, #15
     12   and   sp, x5, #~15
     13   ands  w0, w0, #1
     14   ands  x0, x0, #1
     15   ands  w1, w2, #15
     16   ands  x1, x2, #15
     17 
     18 ; CHECK: and  w0, w0, #0x1           ; encoding: [0x00,0x00,0x00,0x12]
     19 ; CHECK: and  x0, x0, #0x1           ; encoding: [0x00,0x00,0x40,0x92]
     20 ; CHECK: and  w1, w2, #0xf           ; encoding: [0x41,0x0c,0x00,0x12]
     21 ; CHECK: and  x1, x2, #0xf           ; encoding: [0x41,0x0c,0x40,0x92]
     22 ; CHECK: and  sp, x5, #0xfffffffffffffff0 ; encoding: [0xbf,0xec,0x7c,0x92]
     23 ; CHECK: ands w0, w0, #0x1           ; encoding: [0x00,0x00,0x00,0x72]
     24 ; CHECK: ands x0, x0, #0x1           ; encoding: [0x00,0x00,0x40,0xf2]
     25 ; CHECK: ands w1, w2, #0xf           ; encoding: [0x41,0x0c,0x00,0x72]
     26 ; CHECK: ands x1, x2, #0xf           ; encoding: [0x41,0x0c,0x40,0xf2]
     27 
     28   eor w1, w2, #0x4000
     29   eor x1, x2, #0x8000
     30 
     31 ; CHECK: eor w1, w2, #0x4000         ; encoding: [0x41,0x00,0x12,0x52]
     32 ; CHECK: eor x1, x2, #0x8000         ; encoding: [0x41,0x00,0x71,0xd2]
     33 
     34   orr w1, w2, #0x4000
     35   orr x1, x2, #0x8000
     36 
     37 ; CHECK: orr w1, w2, #0x4000         ; encoding: [0x41,0x00,0x12,0x32]
     38 ; CHECK: orr x1, x2, #0x8000         ; encoding: [0x41,0x00,0x71,0xb2]
     39 
     40   orr w8, wzr, #0x1
     41   orr x8, xzr, #0x1
     42 
     43 ; CHECK: orr w8, wzr, #0x1           ; encoding: [0xe8,0x03,0x00,0x32]
     44 ; CHECK: orr x8, xzr, #0x1           ; encoding: [0xe8,0x03,0x40,0xb2]
     45 
     46 ;==---------------------------------------------------------------------------==
     47 ; 5.5.3 Logical (shifted register)
     48 ;==---------------------------------------------------------------------------==
     49 
     50   and   w1, w2, w3
     51   and   x1, x2, x3
     52   and   w1, w2, w3, lsl #2
     53   and   x1, x2, x3, lsl #2
     54   and   w1, w2, w3, lsr #2
     55   and   x1, x2, x3, lsr #2
     56   and   w1, w2, w3, asr #2
     57   and   x1, x2, x3, asr #2
     58   and   w1, w2, w3, ror #2
     59   and   x1, x2, x3, ror #2
     60 
     61 ; CHECK: and  w1, w2, w3             ; encoding: [0x41,0x00,0x03,0x0a]
     62 ; CHECK: and  x1, x2, x3             ; encoding: [0x41,0x00,0x03,0x8a]
     63 ; CHECK: and  w1, w2, w3, lsl #2     ; encoding: [0x41,0x08,0x03,0x0a]
     64 ; CHECK: and  x1, x2, x3, lsl #2     ; encoding: [0x41,0x08,0x03,0x8a]
     65 ; CHECK: and  w1, w2, w3, lsr #2     ; encoding: [0x41,0x08,0x43,0x0a]
     66 ; CHECK: and  x1, x2, x3, lsr #2     ; encoding: [0x41,0x08,0x43,0x8a]
     67 ; CHECK: and  w1, w2, w3, asr #2     ; encoding: [0x41,0x08,0x83,0x0a]
     68 ; CHECK: and  x1, x2, x3, asr #2     ; encoding: [0x41,0x08,0x83,0x8a]
     69 ; CHECK: and  w1, w2, w3, ror #2     ; encoding: [0x41,0x08,0xc3,0x0a]
     70 ; CHECK: and  x1, x2, x3, ror #2     ; encoding: [0x41,0x08,0xc3,0x8a]
     71 
     72   ands  w1, w2, w3
     73   ands  x1, x2, x3
     74   ands  w1, w2, w3, lsl #2
     75   ands  x1, x2, x3, lsl #2
     76   ands  w1, w2, w3, lsr #2
     77   ands  x1, x2, x3, lsr #2
     78   ands  w1, w2, w3, asr #2
     79   ands  x1, x2, x3, asr #2
     80   ands  w1, w2, w3, ror #2
     81   ands  x1, x2, x3, ror #2
     82 
     83 ; CHECK: ands w1, w2, w3             ; encoding: [0x41,0x00,0x03,0x6a]
     84 ; CHECK: ands x1, x2, x3             ; encoding: [0x41,0x00,0x03,0xea]
     85 ; CHECK: ands w1, w2, w3, lsl #2     ; encoding: [0x41,0x08,0x03,0x6a]
     86 ; CHECK: ands x1, x2, x3, lsl #2     ; encoding: [0x41,0x08,0x03,0xea]
     87 ; CHECK: ands w1, w2, w3, lsr #2     ; encoding: [0x41,0x08,0x43,0x6a]
     88 ; CHECK: ands x1, x2, x3, lsr #2     ; encoding: [0x41,0x08,0x43,0xea]
     89 ; CHECK: ands w1, w2, w3, asr #2     ; encoding: [0x41,0x08,0x83,0x6a]
     90 ; CHECK: ands x1, x2, x3, asr #2     ; encoding: [0x41,0x08,0x83,0xea]
     91 ; CHECK: ands w1, w2, w3, ror #2     ; encoding: [0x41,0x08,0xc3,0x6a]
     92 ; CHECK: ands x1, x2, x3, ror #2     ; encoding: [0x41,0x08,0xc3,0xea]
     93 
     94   bic w1, w2, w3
     95   bic x1, x2, x3
     96   bic w1, w2, w3, lsl #3
     97   bic x1, x2, x3, lsl #3
     98   bic w1, w2, w3, lsr #3
     99   bic x1, x2, x3, lsr #3
    100   bic w1, w2, w3, asr #3
    101   bic x1, x2, x3, asr #3
    102   bic w1, w2, w3, ror #3
    103   bic x1, x2, x3, ror #3
    104 
    105 ; CHECK: bic w1, w2, w3              ; encoding: [0x41,0x00,0x23,0x0a]
    106 ; CHECK: bic x1, x2, x3              ; encoding: [0x41,0x00,0x23,0x8a]
    107 ; CHECK: bic w1, w2, w3, lsl #3      ; encoding: [0x41,0x0c,0x23,0x0a]
    108 ; CHECK: bic x1, x2, x3, lsl #3      ; encoding: [0x41,0x0c,0x23,0x8a]
    109 ; CHECK: bic w1, w2, w3, lsr #3      ; encoding: [0x41,0x0c,0x63,0x0a]
    110 ; CHECK: bic x1, x2, x3, lsr #3      ; encoding: [0x41,0x0c,0x63,0x8a]
    111 ; CHECK: bic w1, w2, w3, asr #3      ; encoding: [0x41,0x0c,0xa3,0x0a]
    112 ; CHECK: bic x1, x2, x3, asr #3      ; encoding: [0x41,0x0c,0xa3,0x8a]
    113 ; CHECK: bic w1, w2, w3, ror #3      ; encoding: [0x41,0x0c,0xe3,0x0a]
    114 ; CHECK: bic x1, x2, x3, ror #3      ; encoding: [0x41,0x0c,0xe3,0x8a]
    115 
    116   bics w1, w2, w3
    117   bics x1, x2, x3
    118   bics w1, w2, w3, lsl #3
    119   bics x1, x2, x3, lsl #3
    120   bics w1, w2, w3, lsr #3
    121   bics x1, x2, x3, lsr #3
    122   bics w1, w2, w3, asr #3
    123   bics x1, x2, x3, asr #3
    124   bics w1, w2, w3, ror #3
    125   bics x1, x2, x3, ror #3
    126 
    127 ; CHECK: bics w1, w2, w3             ; encoding: [0x41,0x00,0x23,0x6a]
    128 ; CHECK: bics x1, x2, x3             ; encoding: [0x41,0x00,0x23,0xea]
    129 ; CHECK: bics w1, w2, w3, lsl #3     ; encoding: [0x41,0x0c,0x23,0x6a]
    130 ; CHECK: bics x1, x2, x3, lsl #3     ; encoding: [0x41,0x0c,0x23,0xea]
    131 ; CHECK: bics w1, w2, w3, lsr #3     ; encoding: [0x41,0x0c,0x63,0x6a]
    132 ; CHECK: bics x1, x2, x3, lsr #3     ; encoding: [0x41,0x0c,0x63,0xea]
    133 ; CHECK: bics w1, w2, w3, asr #3     ; encoding: [0x41,0x0c,0xa3,0x6a]
    134 ; CHECK: bics x1, x2, x3, asr #3     ; encoding: [0x41,0x0c,0xa3,0xea]
    135 ; CHECK: bics w1, w2, w3, ror #3     ; encoding: [0x41,0x0c,0xe3,0x6a]
    136 ; CHECK: bics x1, x2, x3, ror #3     ; encoding: [0x41,0x0c,0xe3,0xea]
    137 
    138   eon w1, w2, w3
    139   eon x1, x2, x3
    140   eon w1, w2, w3, lsl #4
    141   eon x1, x2, x3, lsl #4
    142   eon w1, w2, w3, lsr #4
    143   eon x1, x2, x3, lsr #4
    144   eon w1, w2, w3, asr #4
    145   eon x1, x2, x3, asr #4
    146   eon w1, w2, w3, ror #4
    147   eon x1, x2, x3, ror #4
    148 
    149 ; CHECK: eon w1, w2, w3              ; encoding: [0x41,0x00,0x23,0x4a]
    150 ; CHECK: eon x1, x2, x3              ; encoding: [0x41,0x00,0x23,0xca]
    151 ; CHECK: eon w1, w2, w3, lsl #4      ; encoding: [0x41,0x10,0x23,0x4a]
    152 ; CHECK: eon x1, x2, x3, lsl #4      ; encoding: [0x41,0x10,0x23,0xca]
    153 ; CHECK: eon w1, w2, w3, lsr #4      ; encoding: [0x41,0x10,0x63,0x4a]
    154 ; CHECK: eon x1, x2, x3, lsr #4      ; encoding: [0x41,0x10,0x63,0xca]
    155 ; CHECK: eon w1, w2, w3, asr #4      ; encoding: [0x41,0x10,0xa3,0x4a]
    156 ; CHECK: eon x1, x2, x3, asr #4      ; encoding: [0x41,0x10,0xa3,0xca]
    157 ; CHECK: eon w1, w2, w3, ror #4      ; encoding: [0x41,0x10,0xe3,0x4a]
    158 ; CHECK: eon x1, x2, x3, ror #4      ; encoding: [0x41,0x10,0xe3,0xca]
    159 
    160   eor w1, w2, w3
    161   eor x1, x2, x3
    162   eor w1, w2, w3, lsl #5
    163   eor x1, x2, x3, lsl #5
    164   eor w1, w2, w3, lsr #5
    165   eor x1, x2, x3, lsr #5
    166   eor w1, w2, w3, asr #5
    167   eor x1, x2, x3, asr #5
    168   eor w1, w2, w3, ror #5
    169   eor x1, x2, x3, ror #5
    170 
    171 ; CHECK: eor w1, w2, w3              ; encoding: [0x41,0x00,0x03,0x4a]
    172 ; CHECK: eor x1, x2, x3              ; encoding: [0x41,0x00,0x03,0xca]
    173 ; CHECK: eor w1, w2, w3, lsl #5      ; encoding: [0x41,0x14,0x03,0x4a]
    174 ; CHECK: eor x1, x2, x3, lsl #5      ; encoding: [0x41,0x14,0x03,0xca]
    175 ; CHECK: eor w1, w2, w3, lsr #5      ; encoding: [0x41,0x14,0x43,0x4a]
    176 ; CHECK: eor x1, x2, x3, lsr #5      ; encoding: [0x41,0x14,0x43,0xca]
    177 ; CHECK: eor w1, w2, w3, asr #5      ; encoding: [0x41,0x14,0x83,0x4a]
    178 ; CHECK: eor x1, x2, x3, asr #5      ; encoding: [0x41,0x14,0x83,0xca]
    179 ; CHECK: eor w1, w2, w3, ror #5      ; encoding: [0x41,0x14,0xc3,0x4a]
    180 ; CHECK: eor x1, x2, x3, ror #5      ; encoding: [0x41,0x14,0xc3,0xca]
    181 
    182   orr w1, w2, w3
    183   orr x1, x2, x3
    184   orr w1, w2, w3, lsl #6
    185   orr x1, x2, x3, lsl #6
    186   orr w1, w2, w3, lsr #6
    187   orr x1, x2, x3, lsr #6
    188   orr w1, w2, w3, asr #6
    189   orr x1, x2, x3, asr #6
    190   orr w1, w2, w3, ror #6
    191   orr x1, x2, x3, ror #6
    192 
    193 ; CHECK: orr w1, w2, w3              ; encoding: [0x41,0x00,0x03,0x2a]
    194 ; CHECK: orr x1, x2, x3              ; encoding: [0x41,0x00,0x03,0xaa]
    195 ; CHECK: orr w1, w2, w3, lsl #6      ; encoding: [0x41,0x18,0x03,0x2a]
    196 ; CHECK: orr x1, x2, x3, lsl #6      ; encoding: [0x41,0x18,0x03,0xaa]
    197 ; CHECK: orr w1, w2, w3, lsr #6      ; encoding: [0x41,0x18,0x43,0x2a]
    198 ; CHECK: orr x1, x2, x3, lsr #6      ; encoding: [0x41,0x18,0x43,0xaa]
    199 ; CHECK: orr w1, w2, w3, asr #6      ; encoding: [0x41,0x18,0x83,0x2a]
    200 ; CHECK: orr x1, x2, x3, asr #6      ; encoding: [0x41,0x18,0x83,0xaa]
    201 ; CHECK: orr w1, w2, w3, ror #6      ; encoding: [0x41,0x18,0xc3,0x2a]
    202 ; CHECK: orr x1, x2, x3, ror #6      ; encoding: [0x41,0x18,0xc3,0xaa]
    203 
    204   orn w1, w2, w3
    205   orn x1, x2, x3
    206   orn w1, w2, w3, lsl #7
    207   orn x1, x2, x3, lsl #7
    208   orn w1, w2, w3, lsr #7
    209   orn x1, x2, x3, lsr #7
    210   orn w1, w2, w3, asr #7
    211   orn x1, x2, x3, asr #7
    212   orn w1, w2, w3, ror #7
    213   orn x1, x2, x3, ror #7
    214 
    215 ; CHECK: orn w1, w2, w3              ; encoding: [0x41,0x00,0x23,0x2a]
    216 ; CHECK: orn x1, x2, x3              ; encoding: [0x41,0x00,0x23,0xaa]
    217 ; CHECK: orn w1, w2, w3, lsl #7      ; encoding: [0x41,0x1c,0x23,0x2a]
    218 ; CHECK: orn x1, x2, x3, lsl #7      ; encoding: [0x41,0x1c,0x23,0xaa]
    219 ; CHECK: orn w1, w2, w3, lsr #7      ; encoding: [0x41,0x1c,0x63,0x2a]
    220 ; CHECK: orn x1, x2, x3, lsr #7      ; encoding: [0x41,0x1c,0x63,0xaa]
    221 ; CHECK: orn w1, w2, w3, asr #7      ; encoding: [0x41,0x1c,0xa3,0x2a]
    222 ; CHECK: orn x1, x2, x3, asr #7      ; encoding: [0x41,0x1c,0xa3,0xaa]
    223 ; CHECK: orn w1, w2, w3, ror #7      ; encoding: [0x41,0x1c,0xe3,0x2a]
    224 ; CHECK: orn x1, x2, x3, ror #7      ; encoding: [0x41,0x1c,0xe3,0xaa]
    225