Home | History | Annotate | Download | only in ARM
      1 ; RUN: llc -mtriple=arm-eabi -mattr=+neon -mcpu=cortex-a8 %s -o - | FileCheck %s
      2 
      3 define <8 x i8> @v_andi8(<8 x i8>* %A, <8 x i8>* %B) nounwind {
      4 ;CHECK-LABEL: v_andi8:
      5 ;CHECK: vand
      6 	%tmp1 = load <8 x i8>, <8 x i8>* %A
      7 	%tmp2 = load <8 x i8>, <8 x i8>* %B
      8 	%tmp3 = and <8 x i8> %tmp1, %tmp2
      9 	ret <8 x i8> %tmp3
     10 }
     11 
     12 define <4 x i16> @v_andi16(<4 x i16>* %A, <4 x i16>* %B) nounwind {
     13 ;CHECK-LABEL: v_andi16:
     14 ;CHECK: vand
     15 	%tmp1 = load <4 x i16>, <4 x i16>* %A
     16 	%tmp2 = load <4 x i16>, <4 x i16>* %B
     17 	%tmp3 = and <4 x i16> %tmp1, %tmp2
     18 	ret <4 x i16> %tmp3
     19 }
     20 
     21 define <2 x i32> @v_andi32(<2 x i32>* %A, <2 x i32>* %B) nounwind {
     22 ;CHECK-LABEL: v_andi32:
     23 ;CHECK: vand
     24 	%tmp1 = load <2 x i32>, <2 x i32>* %A
     25 	%tmp2 = load <2 x i32>, <2 x i32>* %B
     26 	%tmp3 = and <2 x i32> %tmp1, %tmp2
     27 	ret <2 x i32> %tmp3
     28 }
     29 
     30 define <1 x i64> @v_andi64(<1 x i64>* %A, <1 x i64>* %B) nounwind {
     31 ;CHECK-LABEL: v_andi64:
     32 ;CHECK: vand
     33 	%tmp1 = load <1 x i64>, <1 x i64>* %A
     34 	%tmp2 = load <1 x i64>, <1 x i64>* %B
     35 	%tmp3 = and <1 x i64> %tmp1, %tmp2
     36 	ret <1 x i64> %tmp3
     37 }
     38 
     39 define <16 x i8> @v_andQi8(<16 x i8>* %A, <16 x i8>* %B) nounwind {
     40 ;CHECK-LABEL: v_andQi8:
     41 ;CHECK: vand
     42 	%tmp1 = load <16 x i8>, <16 x i8>* %A
     43 	%tmp2 = load <16 x i8>, <16 x i8>* %B
     44 	%tmp3 = and <16 x i8> %tmp1, %tmp2
     45 	ret <16 x i8> %tmp3
     46 }
     47 
     48 define <8 x i16> @v_andQi16(<8 x i16>* %A, <8 x i16>* %B) nounwind {
     49 ;CHECK-LABEL: v_andQi16:
     50 ;CHECK: vand
     51 	%tmp1 = load <8 x i16>, <8 x i16>* %A
     52 	%tmp2 = load <8 x i16>, <8 x i16>* %B
     53 	%tmp3 = and <8 x i16> %tmp1, %tmp2
     54 	ret <8 x i16> %tmp3
     55 }
     56 
     57 define <4 x i32> @v_andQi32(<4 x i32>* %A, <4 x i32>* %B) nounwind {
     58 ;CHECK-LABEL: v_andQi32:
     59 ;CHECK: vand
     60 	%tmp1 = load <4 x i32>, <4 x i32>* %A
     61 	%tmp2 = load <4 x i32>, <4 x i32>* %B
     62 	%tmp3 = and <4 x i32> %tmp1, %tmp2
     63 	ret <4 x i32> %tmp3
     64 }
     65 
     66 define <2 x i64> @v_andQi64(<2 x i64>* %A, <2 x i64>* %B) nounwind {
     67 ;CHECK-LABEL: v_andQi64:
     68 ;CHECK: vand
     69 	%tmp1 = load <2 x i64>, <2 x i64>* %A
     70 	%tmp2 = load <2 x i64>, <2 x i64>* %B
     71 	%tmp3 = and <2 x i64> %tmp1, %tmp2
     72 	ret <2 x i64> %tmp3
     73 }
     74 
     75 define <8 x i8> @v_bici8(<8 x i8>* %A, <8 x i8>* %B) nounwind {
     76 ;CHECK-LABEL: v_bici8:
     77 ;CHECK: vbic
     78 	%tmp1 = load <8 x i8>, <8 x i8>* %A
     79 	%tmp2 = load <8 x i8>, <8 x i8>* %B
     80 	%tmp3 = xor <8 x i8> %tmp2, < i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1 >
     81 	%tmp4 = and <8 x i8> %tmp1, %tmp3
     82 	ret <8 x i8> %tmp4
     83 }
     84 
     85 define <4 x i16> @v_bici16(<4 x i16>* %A, <4 x i16>* %B) nounwind {
     86 ;CHECK-LABEL: v_bici16:
     87 ;CHECK: vbic
     88 	%tmp1 = load <4 x i16>, <4 x i16>* %A
     89 	%tmp2 = load <4 x i16>, <4 x i16>* %B
     90 	%tmp3 = xor <4 x i16> %tmp2, < i16 -1, i16 -1, i16 -1, i16 -1 >
     91 	%tmp4 = and <4 x i16> %tmp1, %tmp3
     92 	ret <4 x i16> %tmp4
     93 }
     94 
     95 define <2 x i32> @v_bici32(<2 x i32>* %A, <2 x i32>* %B) nounwind {
     96 ;CHECK-LABEL: v_bici32:
     97 ;CHECK: vbic
     98 	%tmp1 = load <2 x i32>, <2 x i32>* %A
     99 	%tmp2 = load <2 x i32>, <2 x i32>* %B
    100 	%tmp3 = xor <2 x i32> %tmp2, < i32 -1, i32 -1 >
    101 	%tmp4 = and <2 x i32> %tmp1, %tmp3
    102 	ret <2 x i32> %tmp4
    103 }
    104 
    105 define <1 x i64> @v_bici64(<1 x i64>* %A, <1 x i64>* %B) nounwind {
    106 ;CHECK-LABEL: v_bici64:
    107 ;CHECK: vbic
    108 	%tmp1 = load <1 x i64>, <1 x i64>* %A
    109 	%tmp2 = load <1 x i64>, <1 x i64>* %B
    110 	%tmp3 = xor <1 x i64> %tmp2, < i64 -1 >
    111 	%tmp4 = and <1 x i64> %tmp1, %tmp3
    112 	ret <1 x i64> %tmp4
    113 }
    114 
    115 define <16 x i8> @v_bicQi8(<16 x i8>* %A, <16 x i8>* %B) nounwind {
    116 ;CHECK-LABEL: v_bicQi8:
    117 ;CHECK: vbic
    118 	%tmp1 = load <16 x i8>, <16 x i8>* %A
    119 	%tmp2 = load <16 x i8>, <16 x i8>* %B
    120 	%tmp3 = xor <16 x i8> %tmp2, < i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1 >
    121 	%tmp4 = and <16 x i8> %tmp1, %tmp3
    122 	ret <16 x i8> %tmp4
    123 }
    124 
    125 define <8 x i16> @v_bicQi16(<8 x i16>* %A, <8 x i16>* %B) nounwind {
    126 ;CHECK-LABEL: v_bicQi16:
    127 ;CHECK: vbic
    128 	%tmp1 = load <8 x i16>, <8 x i16>* %A
    129 	%tmp2 = load <8 x i16>, <8 x i16>* %B
    130 	%tmp3 = xor <8 x i16> %tmp2, < i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1 >
    131 	%tmp4 = and <8 x i16> %tmp1, %tmp3
    132 	ret <8 x i16> %tmp4
    133 }
    134 
    135 define <4 x i32> @v_bicQi32(<4 x i32>* %A, <4 x i32>* %B) nounwind {
    136 ;CHECK-LABEL: v_bicQi32:
    137 ;CHECK: vbic
    138 	%tmp1 = load <4 x i32>, <4 x i32>* %A
    139 	%tmp2 = load <4 x i32>, <4 x i32>* %B
    140 	%tmp3 = xor <4 x i32> %tmp2, < i32 -1, i32 -1, i32 -1, i32 -1 >
    141 	%tmp4 = and <4 x i32> %tmp1, %tmp3
    142 	ret <4 x i32> %tmp4
    143 }
    144 
    145 define <2 x i64> @v_bicQi64(<2 x i64>* %A, <2 x i64>* %B) nounwind {
    146 ;CHECK-LABEL: v_bicQi64:
    147 ;CHECK: vbic
    148 	%tmp1 = load <2 x i64>, <2 x i64>* %A
    149 	%tmp2 = load <2 x i64>, <2 x i64>* %B
    150 	%tmp3 = xor <2 x i64> %tmp2, < i64 -1, i64 -1 >
    151 	%tmp4 = and <2 x i64> %tmp1, %tmp3
    152 	ret <2 x i64> %tmp4
    153 }
    154 
    155 define <8 x i8> @v_eori8(<8 x i8>* %A, <8 x i8>* %B) nounwind {
    156 ;CHECK-LABEL: v_eori8:
    157 ;CHECK: veor
    158 	%tmp1 = load <8 x i8>, <8 x i8>* %A
    159 	%tmp2 = load <8 x i8>, <8 x i8>* %B
    160 	%tmp3 = xor <8 x i8> %tmp1, %tmp2
    161 	ret <8 x i8> %tmp3
    162 }
    163 
    164 define <4 x i16> @v_eori16(<4 x i16>* %A, <4 x i16>* %B) nounwind {
    165 ;CHECK-LABEL: v_eori16:
    166 ;CHECK: veor
    167 	%tmp1 = load <4 x i16>, <4 x i16>* %A
    168 	%tmp2 = load <4 x i16>, <4 x i16>* %B
    169 	%tmp3 = xor <4 x i16> %tmp1, %tmp2
    170 	ret <4 x i16> %tmp3
    171 }
    172 
    173 define <2 x i32> @v_eori32(<2 x i32>* %A, <2 x i32>* %B) nounwind {
    174 ;CHECK-LABEL: v_eori32:
    175 ;CHECK: veor
    176 	%tmp1 = load <2 x i32>, <2 x i32>* %A
    177 	%tmp2 = load <2 x i32>, <2 x i32>* %B
    178 	%tmp3 = xor <2 x i32> %tmp1, %tmp2
    179 	ret <2 x i32> %tmp3
    180 }
    181 
    182 define <1 x i64> @v_eori64(<1 x i64>* %A, <1 x i64>* %B) nounwind {
    183 ;CHECK-LABEL: v_eori64:
    184 ;CHECK: veor
    185 	%tmp1 = load <1 x i64>, <1 x i64>* %A
    186 	%tmp2 = load <1 x i64>, <1 x i64>* %B
    187 	%tmp3 = xor <1 x i64> %tmp1, %tmp2
    188 	ret <1 x i64> %tmp3
    189 }
    190 
    191 define <16 x i8> @v_eorQi8(<16 x i8>* %A, <16 x i8>* %B) nounwind {
    192 ;CHECK-LABEL: v_eorQi8:
    193 ;CHECK: veor
    194 	%tmp1 = load <16 x i8>, <16 x i8>* %A
    195 	%tmp2 = load <16 x i8>, <16 x i8>* %B
    196 	%tmp3 = xor <16 x i8> %tmp1, %tmp2
    197 	ret <16 x i8> %tmp3
    198 }
    199 
    200 define <8 x i16> @v_eorQi16(<8 x i16>* %A, <8 x i16>* %B) nounwind {
    201 ;CHECK-LABEL: v_eorQi16:
    202 ;CHECK: veor
    203 	%tmp1 = load <8 x i16>, <8 x i16>* %A
    204 	%tmp2 = load <8 x i16>, <8 x i16>* %B
    205 	%tmp3 = xor <8 x i16> %tmp1, %tmp2
    206 	ret <8 x i16> %tmp3
    207 }
    208 
    209 define <4 x i32> @v_eorQi32(<4 x i32>* %A, <4 x i32>* %B) nounwind {
    210 ;CHECK-LABEL: v_eorQi32:
    211 ;CHECK: veor
    212 	%tmp1 = load <4 x i32>, <4 x i32>* %A
    213 	%tmp2 = load <4 x i32>, <4 x i32>* %B
    214 	%tmp3 = xor <4 x i32> %tmp1, %tmp2
    215 	ret <4 x i32> %tmp3
    216 }
    217 
    218 define <2 x i64> @v_eorQi64(<2 x i64>* %A, <2 x i64>* %B) nounwind {
    219 ;CHECK-LABEL: v_eorQi64:
    220 ;CHECK: veor
    221 	%tmp1 = load <2 x i64>, <2 x i64>* %A
    222 	%tmp2 = load <2 x i64>, <2 x i64>* %B
    223 	%tmp3 = xor <2 x i64> %tmp1, %tmp2
    224 	ret <2 x i64> %tmp3
    225 }
    226 
    227 define <8 x i8> @v_mvni8(<8 x i8>* %A) nounwind {
    228 ;CHECK-LABEL: v_mvni8:
    229 ;CHECK: vmvn
    230 	%tmp1 = load <8 x i8>, <8 x i8>* %A
    231 	%tmp2 = xor <8 x i8> %tmp1, < i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1 >
    232 	ret <8 x i8> %tmp2
    233 }
    234 
    235 define <4 x i16> @v_mvni16(<4 x i16>* %A) nounwind {
    236 ;CHECK-LABEL: v_mvni16:
    237 ;CHECK: vmvn
    238 	%tmp1 = load <4 x i16>, <4 x i16>* %A
    239 	%tmp2 = xor <4 x i16> %tmp1, < i16 -1, i16 -1, i16 -1, i16 -1 >
    240 	ret <4 x i16> %tmp2
    241 }
    242 
    243 define <2 x i32> @v_mvni32(<2 x i32>* %A) nounwind {
    244 ;CHECK-LABEL: v_mvni32:
    245 ;CHECK: vmvn
    246 	%tmp1 = load <2 x i32>, <2 x i32>* %A
    247 	%tmp2 = xor <2 x i32> %tmp1, < i32 -1, i32 -1 >
    248 	ret <2 x i32> %tmp2
    249 }
    250 
    251 define <1 x i64> @v_mvni64(<1 x i64>* %A) nounwind {
    252 ;CHECK-LABEL: v_mvni64:
    253 ;CHECK: vmvn
    254 	%tmp1 = load <1 x i64>, <1 x i64>* %A
    255 	%tmp2 = xor <1 x i64> %tmp1, < i64 -1 >
    256 	ret <1 x i64> %tmp2
    257 }
    258 
    259 define <16 x i8> @v_mvnQi8(<16 x i8>* %A) nounwind {
    260 ;CHECK-LABEL: v_mvnQi8:
    261 ;CHECK: vmvn
    262 	%tmp1 = load <16 x i8>, <16 x i8>* %A
    263 	%tmp2 = xor <16 x i8> %tmp1, < i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1 >
    264 	ret <16 x i8> %tmp2
    265 }
    266 
    267 define <8 x i16> @v_mvnQi16(<8 x i16>* %A) nounwind {
    268 ;CHECK-LABEL: v_mvnQi16:
    269 ;CHECK: vmvn
    270 	%tmp1 = load <8 x i16>, <8 x i16>* %A
    271 	%tmp2 = xor <8 x i16> %tmp1, < i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1 >
    272 	ret <8 x i16> %tmp2
    273 }
    274 
    275 define <4 x i32> @v_mvnQi32(<4 x i32>* %A) nounwind {
    276 ;CHECK-LABEL: v_mvnQi32:
    277 ;CHECK: vmvn
    278 	%tmp1 = load <4 x i32>, <4 x i32>* %A
    279 	%tmp2 = xor <4 x i32> %tmp1, < i32 -1, i32 -1, i32 -1, i32 -1 >
    280 	ret <4 x i32> %tmp2
    281 }
    282 
    283 define <2 x i64> @v_mvnQi64(<2 x i64>* %A) nounwind {
    284 ;CHECK-LABEL: v_mvnQi64:
    285 ;CHECK: vmvn
    286 	%tmp1 = load <2 x i64>, <2 x i64>* %A
    287 	%tmp2 = xor <2 x i64> %tmp1, < i64 -1, i64 -1 >
    288 	ret <2 x i64> %tmp2
    289 }
    290 
    291 define <8 x i8> @v_orri8(<8 x i8>* %A, <8 x i8>* %B) nounwind {
    292 ;CHECK-LABEL: v_orri8:
    293 ;CHECK: vorr
    294 	%tmp1 = load <8 x i8>, <8 x i8>* %A
    295 	%tmp2 = load <8 x i8>, <8 x i8>* %B
    296 	%tmp3 = or <8 x i8> %tmp1, %tmp2
    297 	ret <8 x i8> %tmp3
    298 }
    299 
    300 define <4 x i16> @v_orri16(<4 x i16>* %A, <4 x i16>* %B) nounwind {
    301 ;CHECK-LABEL: v_orri16:
    302 ;CHECK: vorr
    303 	%tmp1 = load <4 x i16>, <4 x i16>* %A
    304 	%tmp2 = load <4 x i16>, <4 x i16>* %B
    305 	%tmp3 = or <4 x i16> %tmp1, %tmp2
    306 	ret <4 x i16> %tmp3
    307 }
    308 
    309 define <2 x i32> @v_orri32(<2 x i32>* %A, <2 x i32>* %B) nounwind {
    310 ;CHECK-LABEL: v_orri32:
    311 ;CHECK: vorr
    312 	%tmp1 = load <2 x i32>, <2 x i32>* %A
    313 	%tmp2 = load <2 x i32>, <2 x i32>* %B
    314 	%tmp3 = or <2 x i32> %tmp1, %tmp2
    315 	ret <2 x i32> %tmp3
    316 }
    317 
    318 define <1 x i64> @v_orri64(<1 x i64>* %A, <1 x i64>* %B) nounwind {
    319 ;CHECK-LABEL: v_orri64:
    320 ;CHECK: vorr
    321 	%tmp1 = load <1 x i64>, <1 x i64>* %A
    322 	%tmp2 = load <1 x i64>, <1 x i64>* %B
    323 	%tmp3 = or <1 x i64> %tmp1, %tmp2
    324 	ret <1 x i64> %tmp3
    325 }
    326 
    327 define <16 x i8> @v_orrQi8(<16 x i8>* %A, <16 x i8>* %B) nounwind {
    328 ;CHECK-LABEL: v_orrQi8:
    329 ;CHECK: vorr
    330 	%tmp1 = load <16 x i8>, <16 x i8>* %A
    331 	%tmp2 = load <16 x i8>, <16 x i8>* %B
    332 	%tmp3 = or <16 x i8> %tmp1, %tmp2
    333 	ret <16 x i8> %tmp3
    334 }
    335 
    336 define <8 x i16> @v_orrQi16(<8 x i16>* %A, <8 x i16>* %B) nounwind {
    337 ;CHECK-LABEL: v_orrQi16:
    338 ;CHECK: vorr
    339 	%tmp1 = load <8 x i16>, <8 x i16>* %A
    340 	%tmp2 = load <8 x i16>, <8 x i16>* %B
    341 	%tmp3 = or <8 x i16> %tmp1, %tmp2
    342 	ret <8 x i16> %tmp3
    343 }
    344 
    345 define <4 x i32> @v_orrQi32(<4 x i32>* %A, <4 x i32>* %B) nounwind {
    346 ;CHECK-LABEL: v_orrQi32:
    347 ;CHECK: vorr
    348 	%tmp1 = load <4 x i32>, <4 x i32>* %A
    349 	%tmp2 = load <4 x i32>, <4 x i32>* %B
    350 	%tmp3 = or <4 x i32> %tmp1, %tmp2
    351 	ret <4 x i32> %tmp3
    352 }
    353 
    354 define <2 x i64> @v_orrQi64(<2 x i64>* %A, <2 x i64>* %B) nounwind {
    355 ;CHECK-LABEL: v_orrQi64:
    356 ;CHECK: vorr
    357 	%tmp1 = load <2 x i64>, <2 x i64>* %A
    358 	%tmp2 = load <2 x i64>, <2 x i64>* %B
    359 	%tmp3 = or <2 x i64> %tmp1, %tmp2
    360 	ret <2 x i64> %tmp3
    361 }
    362 
    363 define <8 x i8> @v_orni8(<8 x i8>* %A, <8 x i8>* %B) nounwind {
    364 ;CHECK-LABEL: v_orni8:
    365 ;CHECK: vorn
    366 	%tmp1 = load <8 x i8>, <8 x i8>* %A
    367 	%tmp2 = load <8 x i8>, <8 x i8>* %B
    368 	%tmp3 = xor <8 x i8> %tmp2, < i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1 >
    369 	%tmp4 = or <8 x i8> %tmp1, %tmp3
    370 	ret <8 x i8> %tmp4
    371 }
    372 
    373 define <4 x i16> @v_orni16(<4 x i16>* %A, <4 x i16>* %B) nounwind {
    374 ;CHECK-LABEL: v_orni16:
    375 ;CHECK: vorn
    376 	%tmp1 = load <4 x i16>, <4 x i16>* %A
    377 	%tmp2 = load <4 x i16>, <4 x i16>* %B
    378 	%tmp3 = xor <4 x i16> %tmp2, < i16 -1, i16 -1, i16 -1, i16 -1 >
    379 	%tmp4 = or <4 x i16> %tmp1, %tmp3
    380 	ret <4 x i16> %tmp4
    381 }
    382 
    383 define <2 x i32> @v_orni32(<2 x i32>* %A, <2 x i32>* %B) nounwind {
    384 ;CHECK-LABEL: v_orni32:
    385 ;CHECK: vorn
    386 	%tmp1 = load <2 x i32>, <2 x i32>* %A
    387 	%tmp2 = load <2 x i32>, <2 x i32>* %B
    388 	%tmp3 = xor <2 x i32> %tmp2, < i32 -1, i32 -1 >
    389 	%tmp4 = or <2 x i32> %tmp1, %tmp3
    390 	ret <2 x i32> %tmp4
    391 }
    392 
    393 define <1 x i64> @v_orni64(<1 x i64>* %A, <1 x i64>* %B) nounwind {
    394 ;CHECK-LABEL: v_orni64:
    395 ;CHECK: vorn
    396 	%tmp1 = load <1 x i64>, <1 x i64>* %A
    397 	%tmp2 = load <1 x i64>, <1 x i64>* %B
    398 	%tmp3 = xor <1 x i64> %tmp2, < i64 -1 >
    399 	%tmp4 = or <1 x i64> %tmp1, %tmp3
    400 	ret <1 x i64> %tmp4
    401 }
    402 
    403 define <16 x i8> @v_ornQi8(<16 x i8>* %A, <16 x i8>* %B) nounwind {
    404 ;CHECK-LABEL: v_ornQi8:
    405 ;CHECK: vorn
    406 	%tmp1 = load <16 x i8>, <16 x i8>* %A
    407 	%tmp2 = load <16 x i8>, <16 x i8>* %B
    408 	%tmp3 = xor <16 x i8> %tmp2, < i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1 >
    409 	%tmp4 = or <16 x i8> %tmp1, %tmp3
    410 	ret <16 x i8> %tmp4
    411 }
    412 
    413 define <8 x i16> @v_ornQi16(<8 x i16>* %A, <8 x i16>* %B) nounwind {
    414 ;CHECK-LABEL: v_ornQi16:
    415 ;CHECK: vorn
    416 	%tmp1 = load <8 x i16>, <8 x i16>* %A
    417 	%tmp2 = load <8 x i16>, <8 x i16>* %B
    418 	%tmp3 = xor <8 x i16> %tmp2, < i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1 >
    419 	%tmp4 = or <8 x i16> %tmp1, %tmp3
    420 	ret <8 x i16> %tmp4
    421 }
    422 
    423 define <4 x i32> @v_ornQi32(<4 x i32>* %A, <4 x i32>* %B) nounwind {
    424 ;CHECK-LABEL: v_ornQi32:
    425 ;CHECK: vorn
    426 	%tmp1 = load <4 x i32>, <4 x i32>* %A
    427 	%tmp2 = load <4 x i32>, <4 x i32>* %B
    428 	%tmp3 = xor <4 x i32> %tmp2, < i32 -1, i32 -1, i32 -1, i32 -1 >
    429 	%tmp4 = or <4 x i32> %tmp1, %tmp3
    430 	ret <4 x i32> %tmp4
    431 }
    432 
    433 define <2 x i64> @v_ornQi64(<2 x i64>* %A, <2 x i64>* %B) nounwind {
    434 ;CHECK-LABEL: v_ornQi64:
    435 ;CHECK: vorn
    436 	%tmp1 = load <2 x i64>, <2 x i64>* %A
    437 	%tmp2 = load <2 x i64>, <2 x i64>* %B
    438 	%tmp3 = xor <2 x i64> %tmp2, < i64 -1, i64 -1 >
    439 	%tmp4 = or <2 x i64> %tmp1, %tmp3
    440 	ret <2 x i64> %tmp4
    441 }
    442 
    443 define <8 x i8> @vtsti8(<8 x i8>* %A, <8 x i8>* %B) nounwind {
    444 ;CHECK-LABEL: vtsti8:
    445 ;CHECK: vtst.8
    446 	%tmp1 = load <8 x i8>, <8 x i8>* %A
    447 	%tmp2 = load <8 x i8>, <8 x i8>* %B
    448 	%tmp3 = and <8 x i8> %tmp1, %tmp2
    449 	%tmp4 = icmp ne <8 x i8> %tmp3, zeroinitializer
    450         %tmp5 = sext <8 x i1> %tmp4 to <8 x i8>
    451 	ret <8 x i8> %tmp5
    452 }
    453 
    454 define <4 x i16> @vtsti16(<4 x i16>* %A, <4 x i16>* %B) nounwind {
    455 ;CHECK-LABEL: vtsti16:
    456 ;CHECK: vtst.16
    457 	%tmp1 = load <4 x i16>, <4 x i16>* %A
    458 	%tmp2 = load <4 x i16>, <4 x i16>* %B
    459 	%tmp3 = and <4 x i16> %tmp1, %tmp2
    460 	%tmp4 = icmp ne <4 x i16> %tmp3, zeroinitializer
    461         %tmp5 = sext <4 x i1> %tmp4 to <4 x i16>
    462 	ret <4 x i16> %tmp5
    463 }
    464 
    465 define <2 x i32> @vtsti32(<2 x i32>* %A, <2 x i32>* %B) nounwind {
    466 ;CHECK-LABEL: vtsti32:
    467 ;CHECK: vtst.32
    468 	%tmp1 = load <2 x i32>, <2 x i32>* %A
    469 	%tmp2 = load <2 x i32>, <2 x i32>* %B
    470 	%tmp3 = and <2 x i32> %tmp1, %tmp2
    471 	%tmp4 = icmp ne <2 x i32> %tmp3, zeroinitializer
    472         %tmp5 = sext <2 x i1> %tmp4 to <2 x i32>
    473 	ret <2 x i32> %tmp5
    474 }
    475 
    476 define <16 x i8> @vtstQi8(<16 x i8>* %A, <16 x i8>* %B) nounwind {
    477 ;CHECK-LABEL: vtstQi8:
    478 ;CHECK: vtst.8
    479 	%tmp1 = load <16 x i8>, <16 x i8>* %A
    480 	%tmp2 = load <16 x i8>, <16 x i8>* %B
    481 	%tmp3 = and <16 x i8> %tmp1, %tmp2
    482 	%tmp4 = icmp ne <16 x i8> %tmp3, zeroinitializer
    483         %tmp5 = sext <16 x i1> %tmp4 to <16 x i8>
    484 	ret <16 x i8> %tmp5
    485 }
    486 
    487 define <8 x i16> @vtstQi16(<8 x i16>* %A, <8 x i16>* %B) nounwind {
    488 ;CHECK-LABEL: vtstQi16:
    489 ;CHECK: vtst.16
    490 	%tmp1 = load <8 x i16>, <8 x i16>* %A
    491 	%tmp2 = load <8 x i16>, <8 x i16>* %B
    492 	%tmp3 = and <8 x i16> %tmp1, %tmp2
    493 	%tmp4 = icmp ne <8 x i16> %tmp3, zeroinitializer
    494         %tmp5 = sext <8 x i1> %tmp4 to <8 x i16>
    495 	ret <8 x i16> %tmp5
    496 }
    497 
    498 define <4 x i32> @vtstQi32(<4 x i32>* %A, <4 x i32>* %B) nounwind {
    499 ;CHECK-LABEL: vtstQi32:
    500 ;CHECK: vtst.32
    501 	%tmp1 = load <4 x i32>, <4 x i32>* %A
    502 	%tmp2 = load <4 x i32>, <4 x i32>* %B
    503 	%tmp3 = and <4 x i32> %tmp1, %tmp2
    504 	%tmp4 = icmp ne <4 x i32> %tmp3, zeroinitializer
    505         %tmp5 = sext <4 x i1> %tmp4 to <4 x i32>
    506 	ret <4 x i32> %tmp5
    507 }
    508 
    509 define <8 x i8> @v_orrimm(<8 x i8>* %A) nounwind {
    510 ; CHECK-LABEL: v_orrimm:
    511 ; CHECK-NOT: vmov
    512 ; CHECK-NOT: vmvn
    513 ; CHECK: vorr
    514 	%tmp1 = load <8 x i8>, <8 x i8>* %A
    515 	%tmp3 = or <8 x i8> %tmp1, <i8 0, i8 0, i8 0, i8 1, i8 0, i8 0, i8 0, i8 1>
    516 	ret <8 x i8> %tmp3
    517 }
    518 
    519 define <16 x i8> @v_orrimmQ(<16 x i8>* %A) nounwind {
    520 ; CHECK: v_orrimmQ
    521 ; CHECK-NOT: vmov
    522 ; CHECK-NOT: vmvn
    523 ; CHECK: vorr
    524 	%tmp1 = load <16 x i8>, <16 x i8>* %A
    525 	%tmp3 = or <16 x i8> %tmp1, <i8 0, i8 0, i8 0, i8 1, i8 0, i8 0, i8 0, i8 1, i8 0, i8 0, i8 0, i8 1, i8 0, i8 0, i8 0, i8 1>
    526 	ret <16 x i8> %tmp3
    527 }
    528 
    529 define <8 x i8> @v_bicimm(<8 x i8>* %A) nounwind {
    530 ; CHECK-LABEL: v_bicimm:
    531 ; CHECK-NOT: vmov
    532 ; CHECK-NOT: vmvn
    533 ; CHECK: vbic
    534 	%tmp1 = load <8 x i8>, <8 x i8>* %A
    535 	%tmp3 = and <8 x i8> %tmp1, < i8 -1, i8 -1, i8 -1, i8 0, i8 -1, i8 -1, i8 -1, i8 0 >
    536 	ret <8 x i8> %tmp3
    537 }
    538 
    539 define <16 x i8> @v_bicimmQ(<16 x i8>* %A) nounwind {
    540 ; CHECK-LABEL: v_bicimmQ:
    541 ; CHECK-NOT: vmov
    542 ; CHECK-NOT: vmvn
    543 ; CHECK: vbic
    544 	%tmp1 = load <16 x i8>, <16 x i8>* %A
    545 	%tmp3 = and <16 x i8> %tmp1, < i8 -1, i8 -1, i8 -1, i8 0, i8 -1, i8 -1, i8 -1, i8 0, i8 -1, i8 -1, i8 -1, i8 0, i8 -1, i8 -1, i8 -1, i8 0 >
    546 	ret <16 x i8> %tmp3
    547 }
    548