Home | History | Annotate | Download | only in ARM
      1 @ RUN: llvm-mc -mcpu=cortex-a8 -triple armv7-apple-darwin -show-encoding < %s | FileCheck %s
      2 
      3 
      4 @ CHECK: vadd.i8	d16, d17, d16           @ encoding: [0xa0,0x08,0x41,0xf2]
      5 	vadd.i8	d16, d17, d16
      6 @ CHECK: vadd.i16	d16, d17, d16   @ encoding: [0xa0,0x08,0x51,0xf2]
      7 	vadd.i16	d16, d17, d16
      8 @ CHECK: vadd.i64	d16, d17, d16   @ encoding: [0xa0,0x08,0x71,0xf2]
      9 	vadd.i64	d16, d17, d16
     10 @ CHECK: vadd.i32	d16, d17, d16   @ encoding: [0xa0,0x08,0x61,0xf2]
     11 	vadd.i32	d16, d17, d16
     12 @ CHECK: vadd.f32	d16, d16, d17   @ encoding: [0xa1,0x0d,0x40,0xf2]
     13 	vadd.f32	d16, d16, d17
     14 @ CHECK: vadd.f32	q8, q8, q9      @ encoding: [0xe2,0x0d,0x40,0xf2]
     15 	vadd.f32	q8, q8, q9
     16 
     17 @ CHECK: vaddl.s8	q8, d17, d16    @ encoding: [0xa0,0x00,0xc1,0xf2]
     18 	vaddl.s8	q8, d17, d16
     19 @ CHECK: vaddl.s16	q8, d17, d16    @ encoding: [0xa0,0x00,0xd1,0xf2]
     20 	vaddl.s16	q8, d17, d16
     21 @ CHECK: vaddl.s32	q8, d17, d16    @ encoding: [0xa0,0x00,0xe1,0xf2]
     22 	vaddl.s32	q8, d17, d16
     23 @ CHECK: vaddl.u8	q8, d17, d16    @ encoding: [0xa0,0x00,0xc1,0xf3]
     24 	vaddl.u8	q8, d17, d16
     25 @ CHECK: vaddl.u16	q8, d17, d16    @ encoding: [0xa0,0x00,0xd1,0xf3]
     26 	vaddl.u16	q8, d17, d16
     27 @ CHECK: vaddl.u32	q8, d17, d16    @ encoding: [0xa0,0x00,0xe1,0xf3]
     28 	vaddl.u32	q8, d17, d16
     29 
     30 @ CHECK: vaddw.s8	q8, q8, d18     @ encoding: [0xa2,0x01,0xc0,0xf2]
     31 	vaddw.s8	q8, q8, d18
     32 @ CHECK: vaddw.s16	q8, q8, d18     @ encoding: [0xa2,0x01,0xd0,0xf2]
     33 	vaddw.s16	q8, q8, d18
     34 @ CHECK: vaddw.s32	q8, q8, d18     @ encoding: [0xa2,0x01,0xe0,0xf2]
     35 	vaddw.s32	q8, q8, d18
     36 @ CHECK: vaddw.u8	q8, q8, d18     @ encoding: [0xa2,0x01,0xc0,0xf3]
     37 	vaddw.u8	q8, q8, d18
     38 @ CHECK: vaddw.u16	q8, q8, d18     @ encoding: [0xa2,0x01,0xd0,0xf3]
     39 	vaddw.u16	q8, q8, d18
     40 @ CHECK: vaddw.u32	q8, q8, d18     @ encoding: [0xa2,0x01,0xe0,0xf3]
     41 	vaddw.u32	q8, q8, d18
     42 
     43 @ CHECK: vhadd.s8	d16, d16, d17   @ encoding: [0xa1,0x00,0x40,0xf2]
     44 	vhadd.s8	d16, d16, d17
     45 @ CHECK: vhadd.s16	d16, d16, d17   @ encoding: [0xa1,0x00,0x50,0xf2]
     46 	vhadd.s16	d16, d16, d17
     47 @ CHECK: vhadd.s32	d16, d16, d17   @ encoding: [0xa1,0x00,0x60,0xf2]
     48 	vhadd.s32	d16, d16, d17
     49 @ CHECK: vhadd.u8	d16, d16, d17   @ encoding: [0xa1,0x00,0x40,0xf3]
     50 	vhadd.u8	d16, d16, d17
     51 @ CHECK: vhadd.u16	d16, d16, d17   @ encoding: [0xa1,0x00,0x50,0xf3]
     52 	vhadd.u16	d16, d16, d17
     53 @ CHECK: vhadd.u32	d16, d16, d17   @ encoding: [0xa1,0x00,0x60,0xf3]
     54 	vhadd.u32	d16, d16, d17
     55 @ CHECK: vhadd.s8	q8, q8, q9      @ encoding: [0xe2,0x00,0x40,0xf2]
     56 	vhadd.s8	q8, q8, q9
     57 @ CHECK: vhadd.s16	q8, q8, q9      @ encoding: [0xe2,0x00,0x50,0xf2]
     58 	vhadd.s16	q8, q8, q9
     59 @ CHECK: vhadd.s32	q8, q8, q9      @ encoding: [0xe2,0x00,0x60,0xf2]
     60 	vhadd.s32	q8, q8, q9
     61   @ CHECK: vhadd.u8	q8, q8, q9      @ encoding: [0xe2,0x00,0x40,0xf3]
     62 	vhadd.u8	q8, q8, q9
     63 @ CHECK: vhadd.u16	q8, q8, q9      @ encoding: [0xe2,0x00,0x50,0xf3]
     64 	vhadd.u16	q8, q8, q9
     65 @ CHECK: vhadd.u32	q8, q8, q9      @ encoding: [0xe2,0x00,0x60,0xf3]
     66 	vhadd.u32	q8, q8, q9
     67 
     68 
     69 	vhadd.s8	d11, d24
     70 	vhadd.s16	d12, d23
     71 	vhadd.s32	d13, d22
     72 	vhadd.u8	d14, d21
     73 	vhadd.u16	d15, d20
     74 	vhadd.u32	d16, d19
     75 	vhadd.s8	q1, q12
     76 	vhadd.s16	q2, q11
     77 	vhadd.s32	q3, q10
     78 	vhadd.u8	q4, q9
     79 	vhadd.u16	q5, q8
     80 	vhadd.u32	q6, q7
     81 
     82 @ CHECK: vhadd.s8	d11, d11, d24   @ encoding: [0x28,0xb0,0x0b,0xf2]
     83 @ CHECK: vhadd.s16	d12, d12, d23   @ encoding: [0x27,0xc0,0x1c,0xf2]
     84 @ CHECK: vhadd.s32	d13, d13, d22   @ encoding: [0x26,0xd0,0x2d,0xf2]
     85 @ CHECK: vhadd.u8	d14, d14, d21   @ encoding: [0x25,0xe0,0x0e,0xf3]
     86 @ CHECK: vhadd.u16	d15, d15, d20   @ encoding: [0x24,0xf0,0x1f,0xf3]
     87 @ CHECK: vhadd.u32	d16, d16, d19   @ encoding: [0xa3,0x00,0x60,0xf3]
     88 @ CHECK: vhadd.s8	q1, q1, q12     @ encoding: [0x68,0x20,0x02,0xf2]
     89 @ CHECK: vhadd.s16	q2, q2, q11     @ encoding: [0x66,0x40,0x14,0xf2]
     90 @ CHECK: vhadd.s32	q3, q3, q10     @ encoding: [0x64,0x60,0x26,0xf2]
     91 @ CHECK: vhadd.u8	q4, q4, q9      @ encoding: [0x62,0x80,0x08,0xf3]
     92 @ CHECK: vhadd.u16	q5, q5, q8      @ encoding: [0x60,0xa0,0x1a,0xf3]
     93 @ CHECK: vhadd.u32	q6, q6, q7      @ encoding: [0x4e,0xc0,0x2c,0xf3]
     94 
     95 	vrhadd.s8	d16, d16, d17
     96 	vrhadd.s16	d16, d16, d17
     97 	vrhadd.s32	d16, d16, d17
     98 	vrhadd.u8	d16, d16, d17
     99 	vrhadd.u16	d16, d16, d17
    100 	vrhadd.u32	d16, d16, d17
    101 	vrhadd.s8	q8, q8, q9
    102 	vrhadd.s16	q8, q8, q9
    103 	vrhadd.s32	q8, q8, q9
    104 	vrhadd.u8	q8, q8, q9
    105 	vrhadd.u16	q8, q8, q9
    106 	vrhadd.u32	q8, q8, q9
    107         @ Two-operand forms.
    108 	vrhadd.s8	d16, d17
    109 	vrhadd.s16	d16, d17
    110 	vrhadd.s32	d16, d17
    111 	vrhadd.u8	d16, d17
    112 	vrhadd.u16	d16, d17
    113 	vrhadd.u32	d16, d17
    114 	vrhadd.s8	q8, q9
    115 	vrhadd.s16	q8, q9
    116 	vrhadd.s32	q8, q9
    117 	vrhadd.u8	q8, q9
    118 	vrhadd.u16	q8, q9
    119 	vrhadd.u32	q8, q9
    120 
    121 @ CHECK: vrhadd.s8	d16, d16, d17   @ encoding: [0xa1,0x01,0x40,0xf2]
    122 @ CHECK: vrhadd.s16	d16, d16, d17   @ encoding: [0xa1,0x01,0x50,0xf2]
    123 @ CHECK: vrhadd.s32	d16, d16, d17   @ encoding: [0xa1,0x01,0x60,0xf2]
    124 @ CHECK: vrhadd.u8	d16, d16, d17   @ encoding: [0xa1,0x01,0x40,0xf3]
    125 @ CHECK: vrhadd.u16	d16, d16, d17   @ encoding: [0xa1,0x01,0x50,0xf3]
    126 @ CHECK: vrhadd.u32	d16, d16, d17   @ encoding: [0xa1,0x01,0x60,0xf3]
    127 @ CHECK: vrhadd.s8	q8, q8, q9      @ encoding: [0xe2,0x01,0x40,0xf2]
    128 @ CHECK: vrhadd.s16	q8, q8, q9      @ encoding: [0xe2,0x01,0x50,0xf2]
    129 @ CHECK: vrhadd.s32	q8, q8, q9      @ encoding: [0xe2,0x01,0x60,0xf2]
    130 @ CHECK: vrhadd.u8	q8, q8, q9      @ encoding: [0xe2,0x01,0x40,0xf3]
    131 @ CHECK: vrhadd.u16	q8, q8, q9      @ encoding: [0xe2,0x01,0x50,0xf3]
    132 @ CHECK: vrhadd.u32	q8, q8, q9      @ encoding: [0xe2,0x01,0x60,0xf3]
    133 
    134 @ CHECK: vrhadd.s8	d16, d16, d17   @ encoding: [0xa1,0x01,0x40,0xf2]
    135 @ CHECK: vrhadd.s16	d16, d16, d17   @ encoding: [0xa1,0x01,0x50,0xf2]
    136 @ CHECK: vrhadd.s32	d16, d16, d17   @ encoding: [0xa1,0x01,0x60,0xf2]
    137 @ CHECK: vrhadd.u8	d16, d16, d17   @ encoding: [0xa1,0x01,0x40,0xf3]
    138 @ CHECK: vrhadd.u16	d16, d16, d17   @ encoding: [0xa1,0x01,0x50,0xf3]
    139 @ CHECK: vrhadd.u32	d16, d16, d17   @ encoding: [0xa1,0x01,0x60,0xf3]
    140 @ CHECK: vrhadd.s8	q8, q8, q9      @ encoding: [0xe2,0x01,0x40,0xf2]
    141 @ CHECK: vrhadd.s16	q8, q8, q9      @ encoding: [0xe2,0x01,0x50,0xf2]
    142 @ CHECK: vrhadd.s32	q8, q8, q9      @ encoding: [0xe2,0x01,0x60,0xf2]
    143 @ CHECK: vrhadd.u8	q8, q8, q9      @ encoding: [0xe2,0x01,0x40,0xf3]
    144 @ CHECK: vrhadd.u16	q8, q8, q9      @ encoding: [0xe2,0x01,0x50,0xf3]
    145 @ CHECK: vrhadd.u32	q8, q8, q9      @ encoding: [0xe2,0x01,0x60,0xf3]
    146 
    147 
    148 	vqadd.s8	d16, d16, d17
    149 	vqadd.s16	d16, d16, d17
    150 	vqadd.s32	d16, d16, d17
    151 	vqadd.s64	d16, d16, d17
    152 	vqadd.u8	d16, d16, d17
    153 	vqadd.u16	d16, d16, d17
    154 	vqadd.u32	d16, d16, d17
    155 	vqadd.u64	d16, d16, d17
    156 
    157 @ CHECK: vqadd.s8	d16, d16, d17   @ encoding: [0xb1,0x00,0x40,0xf2]
    158 @ CHECK: vqadd.s16	d16, d16, d17   @ encoding: [0xb1,0x00,0x50,0xf2]
    159 @ CHECK: vqadd.s32	d16, d16, d17   @ encoding: [0xb1,0x00,0x60,0xf2]
    160 @ CHECK: vqadd.s64	d16, d16, d17   @ encoding: [0xb1,0x00,0x70,0xf2]
    161 @ CHECK: vqadd.u8	d16, d16, d17   @ encoding: [0xb1,0x00,0x40,0xf3]
    162 @ CHECK: vqadd.u16	d16, d16, d17   @ encoding: [0xb1,0x00,0x50,0xf3]
    163 @ CHECK: vqadd.u32	d16, d16, d17   @ encoding: [0xb1,0x00,0x60,0xf3]
    164 @ CHECK: vqadd.u64	d16, d16, d17   @ encoding: [0xb1,0x00,0x70,0xf3]
    165 
    166 	vqadd.s8	q8, q8, q9
    167 	vqadd.s16	q8, q8, q9
    168 	vqadd.s32	q8, q8, q9
    169 	vqadd.s64	q8, q8, q9
    170 	vqadd.u8	q8, q8, q9
    171 	vqadd.u16	q8, q8, q9
    172 	vqadd.u32	q8, q8, q9
    173 	vqadd.u64	q8, q8, q9
    174 
    175 @ CHECK: vqadd.s8	q8, q8, q9      @ encoding: [0xf2,0x00,0x40,0xf2]
    176 @ CHECK: vqadd.s16	q8, q8, q9      @ encoding: [0xf2,0x00,0x50,0xf2]
    177 @ CHECK: vqadd.s32	q8, q8, q9      @ encoding: [0xf2,0x00,0x60,0xf2]
    178 @ CHECK: vqadd.s64	q8, q8, q9      @ encoding: [0xf2,0x00,0x70,0xf2]
    179 @ CHECK: vqadd.u8	q8, q8, q9      @ encoding: [0xf2,0x00,0x40,0xf3]
    180 @ CHECK: vqadd.u16	q8, q8, q9      @ encoding: [0xf2,0x00,0x50,0xf3]
    181 @ CHECK: vqadd.u32	q8, q8, q9      @ encoding: [0xf2,0x00,0x60,0xf3]
    182 @ CHECK: vqadd.u64	q8, q8, q9      @ encoding: [0xf2,0x00,0x70,0xf3]
    183 
    184 
    185 @ two-operand variants.
    186 	vqadd.s8	d16, d17
    187 	vqadd.s16	d16, d17
    188 	vqadd.s32	d16, d17
    189 	vqadd.s64	d16, d17
    190 	vqadd.u8	d16, d17
    191 	vqadd.u16	d16, d17
    192 	vqadd.u32	d16, d17
    193 	vqadd.u64	d16, d17
    194 
    195 @ CHECK: vqadd.s8	d16, d16, d17   @ encoding: [0xb1,0x00,0x40,0xf2]
    196 @ CHECK: vqadd.s16	d16, d16, d17   @ encoding: [0xb1,0x00,0x50,0xf2]
    197 @ CHECK: vqadd.s32	d16, d16, d17   @ encoding: [0xb1,0x00,0x60,0xf2]
    198 @ CHECK: vqadd.s64	d16, d16, d17   @ encoding: [0xb1,0x00,0x70,0xf2]
    199 @ CHECK: vqadd.u8	d16, d16, d17   @ encoding: [0xb1,0x00,0x40,0xf3]
    200 @ CHECK: vqadd.u16	d16, d16, d17   @ encoding: [0xb1,0x00,0x50,0xf3]
    201 @ CHECK: vqadd.u32	d16, d16, d17   @ encoding: [0xb1,0x00,0x60,0xf3]
    202 @ CHECK: vqadd.u64	d16, d16, d17   @ encoding: [0xb1,0x00,0x70,0xf3]
    203 
    204 	vqadd.s8	q8, q9
    205 	vqadd.s16	q8, q9
    206 	vqadd.s32	q8, q9
    207 	vqadd.s64	q8, q9
    208 	vqadd.u8	q8, q9
    209 	vqadd.u16	q8, q9
    210 	vqadd.u32	q8, q9
    211 	vqadd.u64	q8, q9
    212 
    213 @ CHECK: vqadd.s8	q8, q8, q9      @ encoding: [0xf2,0x00,0x40,0xf2]
    214 @ CHECK: vqadd.s16	q8, q8, q9      @ encoding: [0xf2,0x00,0x50,0xf2]
    215 @ CHECK: vqadd.s32	q8, q8, q9      @ encoding: [0xf2,0x00,0x60,0xf2]
    216 @ CHECK: vqadd.s64	q8, q8, q9      @ encoding: [0xf2,0x00,0x70,0xf2]
    217 @ CHECK: vqadd.u8	q8, q8, q9      @ encoding: [0xf2,0x00,0x40,0xf3]
    218 @ CHECK: vqadd.u16	q8, q8, q9      @ encoding: [0xf2,0x00,0x50,0xf3]
    219 @ CHECK: vqadd.u32	q8, q8, q9      @ encoding: [0xf2,0x00,0x60,0xf3]
    220 @ CHECK: vqadd.u64	q8, q8, q9      @ encoding: [0xf2,0x00,0x70,0xf3]
    221 
    222 
    223 @ CHECK: vaddhn.i16	d16, q8, q9     @ encoding: [0xa2,0x04,0xc0,0xf2]
    224 	vaddhn.i16	d16, q8, q9
    225 @ CHECK: vaddhn.i32	d16, q8, q9     @ encoding: [0xa2,0x04,0xd0,0xf2]
    226 	vaddhn.i32	d16, q8, q9
    227 @ CHECK: vaddhn.i64	d16, q8, q9     @ encoding: [0xa2,0x04,0xe0,0xf2]
    228 	vaddhn.i64	d16, q8, q9
    229 @ CHECK: vraddhn.i16	d16, q8, q9     @ encoding: [0xa2,0x04,0xc0,0xf3]
    230 	vraddhn.i16	d16, q8, q9
    231 @ CHECK: vraddhn.i32	d16, q8, q9     @ encoding: [0xa2,0x04,0xd0,0xf3]
    232 	vraddhn.i32	d16, q8, q9
    233 @ CHECK: vraddhn.i64	d16, q8, q9     @ encoding: [0xa2,0x04,0xe0,0xf3]
    234 	vraddhn.i64	d16, q8, q9
    235 
    236 
    237 @ Two-operand variants
    238 
    239 	vadd.i8  d6, d5
    240 	vadd.i16 d7, d1
    241 	vadd.i32 d8, d2
    242 	vadd.i64 d9, d3
    243 
    244 	vadd.i8  q6, q5
    245 	vadd.i16 q7, q1
    246 	vadd.i32 q8, q2
    247 	vadd.i64 q9, q3
    248 
    249 @ CHECK: vadd.i8	d6, d6, d5      @ encoding: [0x05,0x68,0x06,0xf2]
    250 @ CHECK: vadd.i16	d7, d7, d1      @ encoding: [0x01,0x78,0x17,0xf2]
    251 @ CHECK: vadd.i32	d8, d8, d2      @ encoding: [0x02,0x88,0x28,0xf2]
    252 @ CHECK: vadd.i64	d9, d9, d3      @ encoding: [0x03,0x98,0x39,0xf2]
    253 
    254 @ CHECK: vadd.i8	q6, q6, q5      @ encoding: [0x4a,0xc8,0x0c,0xf2]
    255 @ CHECK: vadd.i16	q7, q7, q1      @ encoding: [0x42,0xe8,0x1e,0xf2]
    256 @ CHECK: vadd.i32	q8, q8, q2      @ encoding: [0xc4,0x08,0x60,0xf2]
    257 @ CHECK: vadd.i64	q9, q9, q3      @ encoding: [0xc6,0x28,0x72,0xf2]
    258 
    259 
    260 	vaddw.s8  q6, d5
    261 	vaddw.s16 q7, d1
    262 	vaddw.s32 q8, d2
    263 
    264 	vaddw.u8  q6, d5
    265 	vaddw.u16 q7, d1
    266 	vaddw.u32 q8, d2
    267 
    268 @ CHECK: vaddw.s8	q6, q6, d5      @ encoding: [0x05,0xc1,0x8c,0xf2]
    269 @ CHECK: vaddw.s16	q7, q7, d1      @ encoding: [0x01,0xe1,0x9e,0xf2]
    270 @ CHECK: vaddw.s32	q8, q8, d2      @ encoding: [0x82,0x01,0xe0,0xf2]
    271 
    272 @ CHECK: vaddw.u8	q6, q6, d5      @ encoding: [0x05,0xc1,0x8c,0xf3]
    273 @ CHECK: vaddw.u16	q7, q7, d1      @ encoding: [0x01,0xe1,0x9e,0xf3]
    274 @ CHECK: vaddw.u32	q8, q8, d2      @ encoding: [0x82,0x01,0xe0,0xf3]
    275