1 ; RUN: llc < %s -verify-machineinstrs -mtriple=aarch64-none-linux-gnu -mattr=+neon | FileCheck %s 2 3 define <8 x i8> @and8xi8(<8 x i8> %a, <8 x i8> %b) { 4 ; CHECK-LABEL: and8xi8: 5 ; CHECK: and {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 6 %tmp1 = and <8 x i8> %a, %b; 7 ret <8 x i8> %tmp1 8 } 9 10 define <16 x i8> @and16xi8(<16 x i8> %a, <16 x i8> %b) { 11 ; CHECK-LABEL: and16xi8: 12 ; CHECK: and {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 13 %tmp1 = and <16 x i8> %a, %b; 14 ret <16 x i8> %tmp1 15 } 16 17 18 define <8 x i8> @orr8xi8(<8 x i8> %a, <8 x i8> %b) { 19 ; CHECK-LABEL: orr8xi8: 20 ; CHECK: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 21 %tmp1 = or <8 x i8> %a, %b; 22 ret <8 x i8> %tmp1 23 } 24 25 define <16 x i8> @orr16xi8(<16 x i8> %a, <16 x i8> %b) { 26 ; CHECK-LABEL: orr16xi8: 27 ; CHECK: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 28 %tmp1 = or <16 x i8> %a, %b; 29 ret <16 x i8> %tmp1 30 } 31 32 33 define <8 x i8> @xor8xi8(<8 x i8> %a, <8 x i8> %b) { 34 ; CHECK-LABEL: xor8xi8: 35 ; CHECK: eor {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 36 %tmp1 = xor <8 x i8> %a, %b; 37 ret <8 x i8> %tmp1 38 } 39 40 define <16 x i8> @xor16xi8(<16 x i8> %a, <16 x i8> %b) { 41 ; CHECK-LABEL: xor16xi8: 42 ; CHECK: eor {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 43 %tmp1 = xor <16 x i8> %a, %b; 44 ret <16 x i8> %tmp1 45 } 46 47 define <8 x i8> @bsl8xi8_const(<8 x i8> %a, <8 x i8> %b) { 48 ; CHECK-LABEL: bsl8xi8_const: 49 ; CHECK: movi {{d[0-9]+}}, #0x{{0*}}ffff0000ffff 50 ; CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 51 %tmp1 = and <8 x i8> %a, < i8 -1, i8 -1, i8 0, i8 0, i8 -1, i8 -1, i8 0, i8 0 > 52 %tmp2 = and <8 x i8> %b, < i8 0, i8 0, i8 -1, i8 -1, i8 0, i8 0, i8 -1, i8 -1 > 53 %tmp3 = or <8 x i8> %tmp1, %tmp2 54 ret <8 x i8> %tmp3 55 } 56 57 define <16 x i8> @bsl16xi8_const(<16 x i8> %a, <16 x i8> %b) { 58 ; CHECK-LABEL: bsl16xi8_const: 59 ; CHECK: movi {{v[0-9]+}}.2d, #0x{{0*}}ffffffff 60 ; CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 61 %tmp1 = and <16 x i8> %a, < i8 -1, i8 -1, i8 -1, i8 -1, i8 0, i8 0, i8 0, i8 0, i8 -1, i8 -1, i8 -1, i8 -1, i8 0, i8 0, i8 0, i8 0 > 62 %tmp2 = and <16 x i8> %b, < i8 0, i8 0, i8 0, i8 0, i8 -1, i8 -1, i8 -1, i8 -1, i8 0, i8 0, i8 0, i8 0, i8 -1, i8 -1, i8 -1, i8 -1 > 63 %tmp3 = or <16 x i8> %tmp1, %tmp2 64 ret <16 x i8> %tmp3 65 } 66 67 define <8 x i8> @orn8xi8(<8 x i8> %a, <8 x i8> %b) { 68 ; CHECK-LABEL: orn8xi8: 69 ; CHECK: orn {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 70 %tmp1 = xor <8 x i8> %b, < i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1 > 71 %tmp2 = or <8 x i8> %a, %tmp1 72 ret <8 x i8> %tmp2 73 } 74 75 define <16 x i8> @orn16xi8(<16 x i8> %a, <16 x i8> %b) { 76 ; CHECK-LABEL: orn16xi8: 77 ; CHECK: orn {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 78 %tmp1 = xor <16 x i8> %b, < 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 > 79 %tmp2 = or <16 x i8> %a, %tmp1 80 ret <16 x i8> %tmp2 81 } 82 83 define <8 x i8> @bic8xi8(<8 x i8> %a, <8 x i8> %b) { 84 ; CHECK-LABEL: bic8xi8: 85 ; CHECK: bic {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 86 %tmp1 = xor <8 x i8> %b, < i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1 > 87 %tmp2 = and <8 x i8> %a, %tmp1 88 ret <8 x i8> %tmp2 89 } 90 91 define <16 x i8> @bic16xi8(<16 x i8> %a, <16 x i8> %b) { 92 ; CHECK-LABEL: bic16xi8: 93 ; CHECK: bic {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 94 %tmp1 = xor <16 x i8> %b, < 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 > 95 %tmp2 = and <16 x i8> %a, %tmp1 96 ret <16 x i8> %tmp2 97 } 98 99 define <2 x i32> @orrimm2s_lsl0(<2 x i32> %a) { 100 ; CHECK-LABEL: orrimm2s_lsl0: 101 ; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}} 102 %tmp1 = or <2 x i32> %a, < i32 255, i32 255> 103 ret <2 x i32> %tmp1 104 } 105 106 define <2 x i32> @orrimm2s_lsl8(<2 x i32> %a) { 107 ; CHECK-LABEL: orrimm2s_lsl8: 108 ; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #8 109 %tmp1 = or <2 x i32> %a, < i32 65280, i32 65280> 110 ret <2 x i32> %tmp1 111 } 112 113 define <2 x i32> @orrimm2s_lsl16(<2 x i32> %a) { 114 ; CHECK-LABEL: orrimm2s_lsl16: 115 ; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #16 116 %tmp1 = or <2 x i32> %a, < i32 16711680, i32 16711680> 117 ret <2 x i32> %tmp1 118 } 119 120 define <2 x i32> @orrimm2s_lsl24(<2 x i32> %a) { 121 ; CHECK-LABEL: orrimm2s_lsl24: 122 ; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #24 123 %tmp1 = or <2 x i32> %a, < i32 4278190080, i32 4278190080> 124 ret <2 x i32> %tmp1 125 } 126 127 define <4 x i32> @orrimm4s_lsl0(<4 x i32> %a) { 128 ; CHECK-LABEL: orrimm4s_lsl0: 129 ; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}} 130 %tmp1 = or <4 x i32> %a, < i32 255, i32 255, i32 255, i32 255> 131 ret <4 x i32> %tmp1 132 } 133 134 define <4 x i32> @orrimm4s_lsl8(<4 x i32> %a) { 135 ; CHECK-LABEL: orrimm4s_lsl8: 136 ; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #8 137 %tmp1 = or <4 x i32> %a, < i32 65280, i32 65280, i32 65280, i32 65280> 138 ret <4 x i32> %tmp1 139 } 140 141 define <4 x i32> @orrimm4s_lsl16(<4 x i32> %a) { 142 ; CHECK-LABEL: orrimm4s_lsl16: 143 ; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #16 144 %tmp1 = or <4 x i32> %a, < i32 16711680, i32 16711680, i32 16711680, i32 16711680> 145 ret <4 x i32> %tmp1 146 } 147 148 define <4 x i32> @orrimm4s_lsl24(<4 x i32> %a) { 149 ; CHECK-LABEL: orrimm4s_lsl24: 150 ; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #24 151 %tmp1 = or <4 x i32> %a, < i32 4278190080, i32 4278190080, i32 4278190080, i32 4278190080> 152 ret <4 x i32> %tmp1 153 } 154 155 define <4 x i16> @orrimm4h_lsl0(<4 x i16> %a) { 156 ; CHECK-LABEL: orrimm4h_lsl0: 157 ; CHECK: orr {{v[0-9]+}}.4h, #{{0xff|255}} 158 %tmp1 = or <4 x i16> %a, < i16 255, i16 255, i16 255, i16 255 > 159 ret <4 x i16> %tmp1 160 } 161 162 define <4 x i16> @orrimm4h_lsl8(<4 x i16> %a) { 163 ; CHECK-LABEL: orrimm4h_lsl8: 164 ; CHECK: orr {{v[0-9]+}}.4h, #{{0xff|255}}, lsl #8 165 %tmp1 = or <4 x i16> %a, < i16 65280, i16 65280, i16 65280, i16 65280 > 166 ret <4 x i16> %tmp1 167 } 168 169 define <8 x i16> @orrimm8h_lsl0(<8 x i16> %a) { 170 ; CHECK-LABEL: orrimm8h_lsl0: 171 ; CHECK: orr {{v[0-9]+}}.8h, #{{0xff|255}} 172 %tmp1 = or <8 x i16> %a, < i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255 > 173 ret <8 x i16> %tmp1 174 } 175 176 define <8 x i16> @orrimm8h_lsl8(<8 x i16> %a) { 177 ; CHECK-LABEL: orrimm8h_lsl8: 178 ; CHECK: orr {{v[0-9]+}}.8h, #{{0xff|255}}, lsl #8 179 %tmp1 = or <8 x i16> %a, < i16 65280, i16 65280, i16 65280, i16 65280, i16 65280, i16 65280, i16 65280, i16 65280 > 180 ret <8 x i16> %tmp1 181 } 182 183 define <2 x i32> @bicimm2s_lsl0(<2 x i32> %a) { 184 ; CHECK-LABEL: bicimm2s_lsl0: 185 ; CHECK: bic {{v[0-9]+}}.2s, #{{0x10|16}} 186 %tmp1 = and <2 x i32> %a, < i32 4294967279, i32 4294967279 > 187 ret <2 x i32> %tmp1 188 } 189 190 define <2 x i32> @bicimm2s_lsl8(<2 x i32> %a) { 191 ; CHECK-LABEL: bicimm2s_lsl8: 192 ; CHECK: bic {{v[0-9]+}}.2s, #{{0x10|16}}, lsl #8 193 %tmp1 = and <2 x i32> %a, < i32 4294963199, i32 4294963199 > 194 ret <2 x i32> %tmp1 195 } 196 197 define <2 x i32> @bicimm2s_lsl16(<2 x i32> %a) { 198 ; CHECK-LABEL: bicimm2s_lsl16: 199 ; CHECK: bic {{v[0-9]+}}.2s, #{{0x10|16}}, lsl #16 200 %tmp1 = and <2 x i32> %a, < i32 4293918719, i32 4293918719 > 201 ret <2 x i32> %tmp1 202 } 203 204 define <2 x i32> @bicimm2s_lsl124(<2 x i32> %a) { 205 ; CHECK-LABEL: bicimm2s_lsl124: 206 ; CHECK: bic {{v[0-9]+}}.2s, #{{0x10|16}}, lsl #24 207 %tmp1 = and <2 x i32> %a, < i32 4026531839, i32 4026531839> 208 ret <2 x i32> %tmp1 209 } 210 211 define <4 x i32> @bicimm4s_lsl0(<4 x i32> %a) { 212 ; CHECK-LABEL: bicimm4s_lsl0: 213 ; CHECK: bic {{v[0-9]+}}.4s, #{{0x10|16}} 214 %tmp1 = and <4 x i32> %a, < i32 4294967279, i32 4294967279, i32 4294967279, i32 4294967279 > 215 ret <4 x i32> %tmp1 216 } 217 218 define <4 x i32> @bicimm4s_lsl8(<4 x i32> %a) { 219 ; CHECK-LABEL: bicimm4s_lsl8: 220 ; CHECK: bic {{v[0-9]+}}.4s, #{{0x10|16}}, lsl #8 221 %tmp1 = and <4 x i32> %a, < i32 4294963199, i32 4294963199, i32 4294963199, i32 4294963199 > 222 ret <4 x i32> %tmp1 223 } 224 225 define <4 x i32> @bicimm4s_lsl16(<4 x i32> %a) { 226 ; CHECK-LABEL: bicimm4s_lsl16: 227 ; CHECK: bic {{v[0-9]+}}.4s, #{{0x10|16}}, lsl #16 228 %tmp1 = and <4 x i32> %a, < i32 4293918719, i32 4293918719, i32 4293918719, i32 4293918719 > 229 ret <4 x i32> %tmp1 230 } 231 232 define <4 x i32> @bicimm4s_lsl124(<4 x i32> %a) { 233 ; CHECK-LABEL: bicimm4s_lsl124: 234 ; CHECK: bic {{v[0-9]+}}.4s, #{{0x10|16}}, lsl #24 235 %tmp1 = and <4 x i32> %a, < i32 4026531839, i32 4026531839, i32 4026531839, i32 4026531839> 236 ret <4 x i32> %tmp1 237 } 238 239 define <4 x i16> @bicimm4h_lsl0_a(<4 x i16> %a) { 240 ; CHECK-LABEL: bicimm4h_lsl0_a: 241 ; CHECK: bic {{v[0-9]+}}.4h, #{{0x10|16}} 242 %tmp1 = and <4 x i16> %a, < i16 4294967279, i16 4294967279, i16 4294967279, i16 4294967279 > 243 ret <4 x i16> %tmp1 244 } 245 246 define <4 x i16> @bicimm4h_lsl0_b(<4 x i16> %a) { 247 ; CHECK-LABEL: bicimm4h_lsl0_b: 248 ; CHECK: bic {{v[0-9]+}}.4h, #{{0xff|255}} 249 %tmp1 = and <4 x i16> %a, < i16 65280, i16 65280, i16 65280, i16 65280 > 250 ret <4 x i16> %tmp1 251 } 252 253 define <4 x i16> @bicimm4h_lsl8_a(<4 x i16> %a) { 254 ; CHECK-LABEL: bicimm4h_lsl8_a: 255 ; CHECK: bic {{v[0-9]+}}.4h, #{{0x10|16}}, lsl #8 256 %tmp1 = and <4 x i16> %a, < i16 4294963199, i16 4294963199, i16 4294963199, i16 4294963199> 257 ret <4 x i16> %tmp1 258 } 259 260 define <4 x i16> @bicimm4h_lsl8_b(<4 x i16> %a) { 261 ; CHECK-LABEL: bicimm4h_lsl8_b: 262 ; CHECK: bic {{v[0-9]+}}.4h, #{{0xff|255}}, lsl #8 263 %tmp1 = and <4 x i16> %a, < i16 255, i16 255, i16 255, i16 255> 264 ret <4 x i16> %tmp1 265 } 266 267 define <8 x i16> @bicimm8h_lsl0_a(<8 x i16> %a) { 268 ; CHECK-LABEL: bicimm8h_lsl0_a: 269 ; CHECK: bic {{v[0-9]+}}.8h, #{{0x10|16}} 270 %tmp1 = and <8 x i16> %a, < i16 4294967279, i16 4294967279, i16 4294967279, i16 4294967279, 271 i16 4294967279, i16 4294967279, i16 4294967279, i16 4294967279 > 272 ret <8 x i16> %tmp1 273 } 274 275 define <8 x i16> @bicimm8h_lsl0_b(<8 x i16> %a) { 276 ; CHECK-LABEL: bicimm8h_lsl0_b: 277 ; CHECK: bic {{v[0-9]+}}.8h, #{{0xff|255}} 278 %tmp1 = and <8 x i16> %a, < i16 65280, i16 65280, i16 65280, i16 65280, i16 65280, i16 65280, i16 65280, i16 65280 > 279 ret <8 x i16> %tmp1 280 } 281 282 define <8 x i16> @bicimm8h_lsl8_a(<8 x i16> %a) { 283 ; CHECK-LABEL: bicimm8h_lsl8_a: 284 ; CHECK: bic {{v[0-9]+}}.8h, #{{0x10|16}}, lsl #8 285 %tmp1 = and <8 x i16> %a, < i16 4294963199, i16 4294963199, i16 4294963199, i16 4294963199, 286 i16 4294963199, i16 4294963199, i16 4294963199, i16 4294963199> 287 ret <8 x i16> %tmp1 288 } 289 290 define <8 x i16> @bicimm8h_lsl8_b(<8 x i16> %a) { 291 ; CHECK-LABEL: bicimm8h_lsl8_b: 292 ; CHECK: bic {{v[0-9]+}}.8h, #{{0xff|255}}, lsl #8 293 %tmp1 = and <8 x i16> %a, < i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255> 294 ret <8 x i16> %tmp1 295 } 296 297 define <2 x i32> @and2xi32(<2 x i32> %a, <2 x i32> %b) { 298 ; CHECK-LABEL: and2xi32: 299 ; CHECK: and {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 300 %tmp1 = and <2 x i32> %a, %b; 301 ret <2 x i32> %tmp1 302 } 303 304 define <4 x i16> @and4xi16(<4 x i16> %a, <4 x i16> %b) { 305 ; CHECK-LABEL: and4xi16: 306 ; CHECK: and {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 307 %tmp1 = and <4 x i16> %a, %b; 308 ret <4 x i16> %tmp1 309 } 310 311 define <1 x i64> @and1xi64(<1 x i64> %a, <1 x i64> %b) { 312 ; CHECK-LABEL: and1xi64: 313 ; CHECK: and {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 314 %tmp1 = and <1 x i64> %a, %b; 315 ret <1 x i64> %tmp1 316 } 317 318 define <4 x i32> @and4xi32(<4 x i32> %a, <4 x i32> %b) { 319 ; CHECK-LABEL: and4xi32: 320 ; CHECK: and {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 321 %tmp1 = and <4 x i32> %a, %b; 322 ret <4 x i32> %tmp1 323 } 324 325 define <8 x i16> @and8xi16(<8 x i16> %a, <8 x i16> %b) { 326 ; CHECK-LABEL: and8xi16: 327 ; CHECK: and {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 328 %tmp1 = and <8 x i16> %a, %b; 329 ret <8 x i16> %tmp1 330 } 331 332 define <2 x i64> @and2xi64(<2 x i64> %a, <2 x i64> %b) { 333 ; CHECK-LABEL: and2xi64: 334 ; CHECK: and {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 335 %tmp1 = and <2 x i64> %a, %b; 336 ret <2 x i64> %tmp1 337 } 338 339 define <2 x i32> @orr2xi32(<2 x i32> %a, <2 x i32> %b) { 340 ; CHECK-LABEL: orr2xi32: 341 ; CHECK: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 342 %tmp1 = or <2 x i32> %a, %b; 343 ret <2 x i32> %tmp1 344 } 345 346 define <4 x i16> @orr4xi16(<4 x i16> %a, <4 x i16> %b) { 347 ; CHECK-LABEL: orr4xi16: 348 ; CHECK: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 349 %tmp1 = or <4 x i16> %a, %b; 350 ret <4 x i16> %tmp1 351 } 352 353 define <1 x i64> @orr1xi64(<1 x i64> %a, <1 x i64> %b) { 354 ; CHECK-LABEL: orr1xi64: 355 ; CHECK: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 356 %tmp1 = or <1 x i64> %a, %b; 357 ret <1 x i64> %tmp1 358 } 359 360 define <4 x i32> @orr4xi32(<4 x i32> %a, <4 x i32> %b) { 361 ; CHECK-LABEL: orr4xi32: 362 ; CHECK: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 363 %tmp1 = or <4 x i32> %a, %b; 364 ret <4 x i32> %tmp1 365 } 366 367 define <8 x i16> @orr8xi16(<8 x i16> %a, <8 x i16> %b) { 368 ; CHECK-LABEL: orr8xi16: 369 ; CHECK: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 370 %tmp1 = or <8 x i16> %a, %b; 371 ret <8 x i16> %tmp1 372 } 373 374 define <2 x i64> @orr2xi64(<2 x i64> %a, <2 x i64> %b) { 375 ; CHECK-LABEL: orr2xi64: 376 ; CHECK: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 377 %tmp1 = or <2 x i64> %a, %b; 378 ret <2 x i64> %tmp1 379 } 380 381 define <2 x i32> @eor2xi32(<2 x i32> %a, <2 x i32> %b) { 382 ; CHECK-LABEL: eor2xi32: 383 ; CHECK: eor {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 384 %tmp1 = xor <2 x i32> %a, %b; 385 ret <2 x i32> %tmp1 386 } 387 388 define <4 x i16> @eor4xi16(<4 x i16> %a, <4 x i16> %b) { 389 ; CHECK-LABEL: eor4xi16: 390 ; CHECK: eor {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 391 %tmp1 = xor <4 x i16> %a, %b; 392 ret <4 x i16> %tmp1 393 } 394 395 define <1 x i64> @eor1xi64(<1 x i64> %a, <1 x i64> %b) { 396 ; CHECK-LABEL: eor1xi64: 397 ; CHECK: eor {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 398 %tmp1 = xor <1 x i64> %a, %b; 399 ret <1 x i64> %tmp1 400 } 401 402 define <4 x i32> @eor4xi32(<4 x i32> %a, <4 x i32> %b) { 403 ; CHECK-LABEL: eor4xi32: 404 ; CHECK: eor {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 405 %tmp1 = xor <4 x i32> %a, %b; 406 ret <4 x i32> %tmp1 407 } 408 409 define <8 x i16> @eor8xi16(<8 x i16> %a, <8 x i16> %b) { 410 ; CHECK-LABEL: eor8xi16: 411 ; CHECK: eor {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 412 %tmp1 = xor <8 x i16> %a, %b; 413 ret <8 x i16> %tmp1 414 } 415 416 define <2 x i64> @eor2xi64(<2 x i64> %a, <2 x i64> %b) { 417 ; CHECK-LABEL: eor2xi64: 418 ; CHECK: eor {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 419 %tmp1 = xor <2 x i64> %a, %b; 420 ret <2 x i64> %tmp1 421 } 422 423 424 define <2 x i32> @bic2xi32(<2 x i32> %a, <2 x i32> %b) { 425 ; CHECK-LABEL: bic2xi32: 426 ; CHECK: bic {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 427 %tmp1 = xor <2 x i32> %b, < i32 -1, i32 -1 > 428 %tmp2 = and <2 x i32> %a, %tmp1 429 ret <2 x i32> %tmp2 430 } 431 432 define <4 x i16> @bic4xi16(<4 x i16> %a, <4 x i16> %b) { 433 ; CHECK-LABEL: bic4xi16: 434 ; CHECK: bic {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 435 %tmp1 = xor <4 x i16> %b, < i16 -1, i16 -1, i16 -1, i16-1 > 436 %tmp2 = and <4 x i16> %a, %tmp1 437 ret <4 x i16> %tmp2 438 } 439 440 define <1 x i64> @bic1xi64(<1 x i64> %a, <1 x i64> %b) { 441 ; CHECK-LABEL: bic1xi64: 442 ; CHECK: bic {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 443 %tmp1 = xor <1 x i64> %b, < i64 -1> 444 %tmp2 = and <1 x i64> %a, %tmp1 445 ret <1 x i64> %tmp2 446 } 447 448 define <4 x i32> @bic4xi32(<4 x i32> %a, <4 x i32> %b) { 449 ; CHECK-LABEL: bic4xi32: 450 ; CHECK: bic {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 451 %tmp1 = xor <4 x i32> %b, < i32 -1, i32 -1, i32 -1, i32 -1> 452 %tmp2 = and <4 x i32> %a, %tmp1 453 ret <4 x i32> %tmp2 454 } 455 456 define <8 x i16> @bic8xi16(<8 x i16> %a, <8 x i16> %b) { 457 ; CHECK-LABEL: bic8xi16: 458 ; CHECK: bic {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 459 %tmp1 = xor <8 x i16> %b, < i16 -1, i16 -1, i16 -1, i16-1, i16 -1, i16 -1, i16 -1, i16 -1 > 460 %tmp2 = and <8 x i16> %a, %tmp1 461 ret <8 x i16> %tmp2 462 } 463 464 define <2 x i64> @bic2xi64(<2 x i64> %a, <2 x i64> %b) { 465 ; CHECK-LABEL: bic2xi64: 466 ; CHECK: bic {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 467 %tmp1 = xor <2 x i64> %b, < i64 -1, i64 -1> 468 %tmp2 = and <2 x i64> %a, %tmp1 469 ret <2 x i64> %tmp2 470 } 471 472 define <2 x i32> @orn2xi32(<2 x i32> %a, <2 x i32> %b) { 473 ; CHECK-LABEL: orn2xi32: 474 ; CHECK: orn {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 475 %tmp1 = xor <2 x i32> %b, < i32 -1, i32 -1 > 476 %tmp2 = or <2 x i32> %a, %tmp1 477 ret <2 x i32> %tmp2 478 } 479 480 define <4 x i16> @orn4xi16(<4 x i16> %a, <4 x i16> %b) { 481 ; CHECK-LABEL: orn4xi16: 482 ; CHECK: orn {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 483 %tmp1 = xor <4 x i16> %b, < i16 -1, i16 -1, i16 -1, i16-1 > 484 %tmp2 = or <4 x i16> %a, %tmp1 485 ret <4 x i16> %tmp2 486 } 487 488 define <1 x i64> @orn1xi64(<1 x i64> %a, <1 x i64> %b) { 489 ; CHECK-LABEL: orn1xi64: 490 ; CHECK: orn {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 491 %tmp1 = xor <1 x i64> %b, < i64 -1> 492 %tmp2 = or <1 x i64> %a, %tmp1 493 ret <1 x i64> %tmp2 494 } 495 496 define <4 x i32> @orn4xi32(<4 x i32> %a, <4 x i32> %b) { 497 ; CHECK-LABEL: orn4xi32: 498 ; CHECK: orn {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 499 %tmp1 = xor <4 x i32> %b, < i32 -1, i32 -1, i32 -1, i32 -1> 500 %tmp2 = or <4 x i32> %a, %tmp1 501 ret <4 x i32> %tmp2 502 } 503 504 define <8 x i16> @orn8xi16(<8 x i16> %a, <8 x i16> %b) { 505 ; CHECK-LABEL: orn8xi16: 506 ; CHECK: orn {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 507 %tmp1 = xor <8 x i16> %b, < i16 -1, i16 -1, i16 -1, i16-1, i16 -1, i16 -1, i16 -1, i16 -1 > 508 %tmp2 = or <8 x i16> %a, %tmp1 509 ret <8 x i16> %tmp2 510 } 511 512 define <2 x i64> @orn2xi64(<2 x i64> %a, <2 x i64> %b) { 513 ; CHECK-LABEL: orn2xi64: 514 ; CHECK: orn {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 515 %tmp1 = xor <2 x i64> %b, < i64 -1, i64 -1> 516 %tmp2 = or <2 x i64> %a, %tmp1 517 ret <2 x i64> %tmp2 518 } 519 520 define <2 x i32> @bsl2xi32_const(<2 x i32> %a, <2 x i32> %b) { 521 ; CHECK-LABEL: bsl2xi32_const: 522 ; CHECK: movi {{d[0-9]+}}, #0x{{0*}}ffffffff 523 ; CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 524 %tmp1 = and <2 x i32> %a, < i32 -1, i32 0 > 525 %tmp2 = and <2 x i32> %b, < i32 0, i32 -1 > 526 %tmp3 = or <2 x i32> %tmp1, %tmp2 527 ret <2 x i32> %tmp3 528 } 529 530 531 define <4 x i16> @bsl4xi16_const(<4 x i16> %a, <4 x i16> %b) { 532 ; CHECK-LABEL: bsl4xi16_const: 533 ; CHECK: movi {{d[0-9]+}}, #0x{{0*}}ffff0000ffff 534 ; CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 535 %tmp1 = and <4 x i16> %a, < i16 -1, i16 0, i16 -1,i16 0 > 536 %tmp2 = and <4 x i16> %b, < i16 0, i16 -1,i16 0, i16 -1 > 537 %tmp3 = or <4 x i16> %tmp1, %tmp2 538 ret <4 x i16> %tmp3 539 } 540 541 define <1 x i64> @bsl1xi64_const(<1 x i64> %a, <1 x i64> %b) { 542 ; CHECK-LABEL: bsl1xi64_const: 543 ; CHECK: movi {{d[0-9]+}}, #0xffffffffffffff00 544 ; CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 545 %tmp1 = and <1 x i64> %a, < i64 -256 > 546 %tmp2 = and <1 x i64> %b, < i64 255 > 547 %tmp3 = or <1 x i64> %tmp1, %tmp2 548 ret <1 x i64> %tmp3 549 } 550 551 define <4 x i32> @bsl4xi32_const(<4 x i32> %a, <4 x i32> %b) { 552 ; CHECK-LABEL: bsl4xi32_const: 553 ; CHECK: movi {{v[0-9]+}}.2d, #0x{{0*}}ffffffff 554 ; CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 555 %tmp1 = and <4 x i32> %a, < i32 -1, i32 0, i32 -1, i32 0 > 556 %tmp2 = and <4 x i32> %b, < i32 0, i32 -1, i32 0, i32 -1 > 557 %tmp3 = or <4 x i32> %tmp1, %tmp2 558 ret <4 x i32> %tmp3 559 } 560 561 define <8 x i16> @bsl8xi16_const(<8 x i16> %a, <8 x i16> %b) { 562 ; CHECK-LABEL: bsl8xi16_const: 563 ; CHECK: movi {{v[0-9]+}}.2d, #0x{{0*}}ffffffff 564 ; CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 565 %tmp1 = and <8 x i16> %a, < i16 -1, i16 -1, i16 0,i16 0, i16 -1, i16 -1, i16 0,i16 0 > 566 %tmp2 = and <8 x i16> %b, < i16 0, i16 0, i16 -1, i16 -1, i16 0, i16 0, i16 -1, i16 -1 > 567 %tmp3 = or <8 x i16> %tmp1, %tmp2 568 ret <8 x i16> %tmp3 569 } 570 571 define <2 x i64> @bsl2xi64_const(<2 x i64> %a, <2 x i64> %b) { 572 ; CHECK-LABEL: bsl2xi64_const: 573 ; CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 574 %tmp1 = and <2 x i64> %a, < i64 -1, i64 0 > 575 %tmp2 = and <2 x i64> %b, < i64 0, i64 -1 > 576 %tmp3 = or <2 x i64> %tmp1, %tmp2 577 ret <2 x i64> %tmp3 578 } 579 580 581 define <8 x i8> @bsl8xi8(<8 x i8> %v1, <8 x i8> %v2, <8 x i8> %v3) { 582 ; CHECK-LABEL: bsl8xi8: 583 ; CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 584 %1 = and <8 x i8> %v1, %v2 585 %2 = xor <8 x i8> %v1, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1> 586 %3 = and <8 x i8> %2, %v3 587 %4 = or <8 x i8> %1, %3 588 ret <8 x i8> %4 589 } 590 591 define <4 x i16> @bsl4xi16(<4 x i16> %v1, <4 x i16> %v2, <4 x i16> %v3) { 592 ; CHECK-LABEL: bsl4xi16: 593 ; CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 594 %1 = and <4 x i16> %v1, %v2 595 %2 = xor <4 x i16> %v1, <i16 -1, i16 -1, i16 -1, i16 -1> 596 %3 = and <4 x i16> %2, %v3 597 %4 = or <4 x i16> %1, %3 598 ret <4 x i16> %4 599 } 600 601 define <2 x i32> @bsl2xi32(<2 x i32> %v1, <2 x i32> %v2, <2 x i32> %v3) { 602 ; CHECK-LABEL: bsl2xi32: 603 ; CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 604 %1 = and <2 x i32> %v1, %v2 605 %2 = xor <2 x i32> %v1, <i32 -1, i32 -1> 606 %3 = and <2 x i32> %2, %v3 607 %4 = or <2 x i32> %1, %3 608 ret <2 x i32> %4 609 } 610 611 define <1 x i64> @bsl1xi64(<1 x i64> %v1, <1 x i64> %v2, <1 x i64> %v3) { 612 ; CHECK-LABEL: bsl1xi64: 613 ; CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 614 %1 = and <1 x i64> %v1, %v2 615 %2 = xor <1 x i64> %v1, <i64 -1> 616 %3 = and <1 x i64> %2, %v3 617 %4 = or <1 x i64> %1, %3 618 ret <1 x i64> %4 619 } 620 621 define <16 x i8> @bsl16xi8(<16 x i8> %v1, <16 x i8> %v2, <16 x i8> %v3) { 622 ; CHECK-LABEL: bsl16xi8: 623 ; CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 624 %1 = and <16 x i8> %v1, %v2 625 %2 = xor <16 x i8> %v1, <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> 626 %3 = and <16 x i8> %2, %v3 627 %4 = or <16 x i8> %1, %3 628 ret <16 x i8> %4 629 } 630 631 define <8 x i16> @bsl8xi16(<8 x i16> %v1, <8 x i16> %v2, <8 x i16> %v3) { 632 ; CHECK-LABEL: bsl8xi16: 633 ; CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 634 %1 = and <8 x i16> %v1, %v2 635 %2 = xor <8 x i16> %v1, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1> 636 %3 = and <8 x i16> %2, %v3 637 %4 = or <8 x i16> %1, %3 638 ret <8 x i16> %4 639 } 640 641 define <4 x i32> @bsl4xi32(<4 x i32> %v1, <4 x i32> %v2, <4 x i32> %v3) { 642 ; CHECK-LABEL: bsl4xi32: 643 ; CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 644 %1 = and <4 x i32> %v1, %v2 645 %2 = xor <4 x i32> %v1, <i32 -1, i32 -1, i32 -1, i32 -1> 646 %3 = and <4 x i32> %2, %v3 647 %4 = or <4 x i32> %1, %3 648 ret <4 x i32> %4 649 } 650 651 define <8 x i8> @vselect_v8i8(<8 x i8> %a) { 652 ; CHECK-LABEL: vselect_v8i8: 653 ; CHECK: movi {{d[0-9]+}}, #0x{{0*}}ffff 654 ; CHECK-NEXT: {{bsl v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b|and v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b}} 655 %b = select <8 x i1> <i1 true, i1 true, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false>, <8 x i8> %a, <8 x i8> <i8 undef, i8 undef, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0> 656 ret <8 x i8> %b 657 } 658 659 define <4 x i16> @vselect_v4i16(<4 x i16> %a) { 660 ; CHECK-LABEL: vselect_v4i16: 661 ; CHECK: movi {{d[0-9]+}}, #0x{{0*}}ffff 662 ; CHECK-NEXT: {{bsl v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b|and v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b}} 663 %b = select <4 x i1> <i1 true, i1 false, i1 false, i1 false>, <4 x i16> %a, <4 x i16> <i16 undef, i16 0, i16 0, i16 0> 664 ret <4 x i16> %b 665 } 666 667 define <8 x i8> @vselect_cmp_ne(<8 x i8> %a, <8 x i8> %b, <8 x i8> %c) { 668 ; CHECK-LABEL: vselect_cmp_ne: 669 ; CHECK: cmeq {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 670 ; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 671 ; CHECK-NEXT: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 672 %cmp = icmp ne <8 x i8> %a, %b 673 %d = select <8 x i1> %cmp, <8 x i8> %b, <8 x i8> %c 674 ret <8 x i8> %d 675 } 676 677 define <8 x i8> @vselect_cmp_eq(<8 x i8> %a, <8 x i8> %b, <8 x i8> %c) { 678 ; CHECK-LABEL: vselect_cmp_eq: 679 ; CHECK: cmeq {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 680 ; CHECK-NEXT: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 681 %cmp = icmp eq <8 x i8> %a, %b 682 %d = select <8 x i1> %cmp, <8 x i8> %b, <8 x i8> %c 683 ret <8 x i8> %d 684 } 685 686 define <8 x i8> @vselect_cmpz_ne(<8 x i8> %a, <8 x i8> %b, <8 x i8> %c) { 687 ; CHECK-LABEL: vselect_cmpz_ne: 688 ; CHECK: cmeq {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #0 689 ; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 690 ; CHECK-NEXT: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 691 %cmp = icmp ne <8 x i8> %a, zeroinitializer 692 %d = select <8 x i1> %cmp, <8 x i8> %b, <8 x i8> %c 693 ret <8 x i8> %d 694 } 695 696 define <8 x i8> @vselect_cmpz_eq(<8 x i8> %a, <8 x i8> %b, <8 x i8> %c) { 697 ; CHECK-LABEL: vselect_cmpz_eq: 698 ; CHECK: cmeq {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #0 699 ; CHECK-NEXT: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 700 %cmp = icmp eq <8 x i8> %a, zeroinitializer 701 %d = select <8 x i1> %cmp, <8 x i8> %b, <8 x i8> %c 702 ret <8 x i8> %d 703 } 704 705 define <8 x i8> @vselect_tst(<8 x i8> %a, <8 x i8> %b, <8 x i8> %c) { 706 ; CHECK-LABEL: vselect_tst: 707 ; CHECK: cmtst {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 708 ; CHECK-NEXT: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 709 %tmp3 = and <8 x i8> %a, %b 710 %tmp4 = icmp ne <8 x i8> %tmp3, zeroinitializer 711 %d = select <8 x i1> %tmp4, <8 x i8> %b, <8 x i8> %c 712 ret <8 x i8> %d 713 } 714 715 define <2 x i64> @bsl2xi64(<2 x i64> %v1, <2 x i64> %v2, <2 x i64> %v3) { 716 ; CHECK-LABEL: bsl2xi64: 717 ; CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 718 %1 = and <2 x i64> %v1, %v2 719 %2 = xor <2 x i64> %v1, <i64 -1, i64 -1> 720 %3 = and <2 x i64> %2, %v3 721 %4 = or <2 x i64> %1, %3 722 ret <2 x i64> %4 723 } 724 725 define <8 x i8> @orrimm8b_as_orrimm4h_lsl0(<8 x i8> %a) { 726 ; CHECK-LABEL: orrimm8b_as_orrimm4h_lsl0: 727 ; CHECK: orr {{v[0-9]+}}.4h, #{{0xff|255}} 728 %val = or <8 x i8> %a, <i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0> 729 ret <8 x i8> %val 730 } 731 732 define <8 x i8> @orrimm8b_as_orimm4h_lsl8(<8 x i8> %a) { 733 ; CHECK-LABEL: orrimm8b_as_orimm4h_lsl8: 734 ; CHECK: orr {{v[0-9]+}}.4h, #{{0xff|255}}, lsl #8 735 %val = or <8 x i8> %a, <i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255> 736 ret <8 x i8> %val 737 } 738 739 define <16 x i8> @orimm16b_as_orrimm8h_lsl0(<16 x i8> %a) { 740 ; CHECK-LABEL: orimm16b_as_orrimm8h_lsl0: 741 ; CHECK: orr {{v[0-9]+}}.8h, #{{0xff|255}} 742 %val = or <16 x i8> %a, <i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0> 743 ret <16 x i8> %val 744 } 745 746 define <16 x i8> @orimm16b_as_orrimm8h_lsl8(<16 x i8> %a) { 747 ; CHECK-LABEL: orimm16b_as_orrimm8h_lsl8: 748 ; CHECK: orr {{v[0-9]+}}.8h, #{{0xff|255}}, lsl #8 749 %val = or <16 x i8> %a, <i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255> 750 ret <16 x i8> %val 751 } 752 753 define <8 x i8> @and8imm2s_lsl0(<8 x i8> %a) { 754 ; CHECK-LABEL: and8imm2s_lsl0: 755 ; CHECK: bic {{v[0-9]+}}.2s, #{{0xff|255}} 756 %tmp1 = and <8 x i8> %a, < i8 0, i8 255, i8 255, i8 255, i8 0, i8 255, i8 255, i8 255> 757 ret <8 x i8> %tmp1 758 } 759 760 define <8 x i8> @and8imm2s_lsl8(<8 x i8> %a) { 761 ; CHECK-LABEL: and8imm2s_lsl8: 762 ; CHECK: bic {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #8 763 %tmp1 = and <8 x i8> %a, < i8 255, i8 0, i8 255, i8 255, i8 255, i8 0, i8 255, i8 255> 764 ret <8 x i8> %tmp1 765 } 766 767 define <8 x i8> @and8imm2s_lsl16(<8 x i8> %a) { 768 ; CHECK-LABEL: and8imm2s_lsl16: 769 ; CHECK: bic {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #16 770 %tmp1 = and <8 x i8> %a, < i8 255, i8 255, i8 0, i8 255, i8 255, i8 255, i8 0, i8 255> 771 ret <8 x i8> %tmp1 772 } 773 774 define <8 x i8> @and8imm2s_lsl24(<8 x i8> %a) { 775 ; CHECK-LABEL: and8imm2s_lsl24: 776 ; CHECK: bic {{v[0-9]+}}.2s, #{{0xfe|254}}, lsl #24 777 %tmp1 = and <8 x i8> %a, < i8 255, i8 255, i8 255, i8 1, i8 255, i8 255, i8 255, i8 1> 778 ret <8 x i8> %tmp1 779 } 780 781 define <4 x i16> @and16imm2s_lsl0(<4 x i16> %a) { 782 ; CHECK-LABEL: and16imm2s_lsl0: 783 ; CHECK: bic {{v[0-9]+}}.2s, #{{0xff|255}} 784 %tmp1 = and <4 x i16> %a, < i16 65280, i16 65535, i16 65280, i16 65535> 785 ret <4 x i16> %tmp1 786 } 787 788 define <4 x i16> @and16imm2s_lsl8(<4 x i16> %a) { 789 ; CHECK-LABEL: and16imm2s_lsl8: 790 ; CHECK: bic {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #8 791 %tmp1 = and <4 x i16> %a, < i16 255, i16 65535, i16 255, i16 65535> 792 ret <4 x i16> %tmp1 793 } 794 795 define <4 x i16> @and16imm2s_lsl16(<4 x i16> %a) { 796 ; CHECK-LABEL: and16imm2s_lsl16: 797 ; CHECK: bic {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #16 798 %tmp1 = and <4 x i16> %a, < i16 65535, i16 65280, i16 65535, i16 65280> 799 ret <4 x i16> %tmp1 800 } 801 802 define <4 x i16> @and16imm2s_lsl24(<4 x i16> %a) { 803 ; CHECK-LABEL: and16imm2s_lsl24: 804 ; CHECK: bic {{v[0-9]+}}.2s, #{{0xfe|254}}, lsl #24 805 %tmp1 = and <4 x i16> %a, < i16 65535, i16 511, i16 65535, i16 511> 806 ret <4 x i16> %tmp1 807 } 808 809 810 define <1 x i64> @and64imm2s_lsl0(<1 x i64> %a) { 811 ; CHECK-LABEL: and64imm2s_lsl0: 812 ; CHECK: bic {{v[0-9]+}}.2s, #{{0xff|255}} 813 %tmp1 = and <1 x i64> %a, < i64 -1095216660736> 814 ret <1 x i64> %tmp1 815 } 816 817 define <1 x i64> @and64imm2s_lsl8(<1 x i64> %a) { 818 ; CHECK-LABEL: and64imm2s_lsl8: 819 ; CHECK: bic {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #8 820 %tmp1 = and <1 x i64> %a, < i64 -280375465148161> 821 ret <1 x i64> %tmp1 822 } 823 824 define <1 x i64> @and64imm2s_lsl16(<1 x i64> %a) { 825 ; CHECK-LABEL: and64imm2s_lsl16: 826 ; CHECK: bic {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #16 827 %tmp1 = and <1 x i64> %a, < i64 -71776119077928961> 828 ret <1 x i64> %tmp1 829 } 830 831 define <1 x i64> @and64imm2s_lsl24(<1 x i64> %a) { 832 ; CHECK-LABEL: and64imm2s_lsl24: 833 ; CHECK: bic {{v[0-9]+}}.2s, #{{0xfe|254}}, lsl #24 834 %tmp1 = and <1 x i64> %a, < i64 144115183814443007> 835 ret <1 x i64> %tmp1 836 } 837 838 define <16 x i8> @and8imm4s_lsl0(<16 x i8> %a) { 839 ; CHECK-LABEL: and8imm4s_lsl0: 840 ; CHECK: bic {{v[0-9]+}}.4s, #{{0xff|255}} 841 %tmp1 = and <16 x i8> %a, < i8 0, i8 255, i8 255, i8 255, i8 0, i8 255, i8 255, i8 255, i8 0, i8 255, i8 255, i8 255, i8 0, i8 255, i8 255, i8 255> 842 ret <16 x i8> %tmp1 843 } 844 845 define <16 x i8> @and8imm4s_lsl8(<16 x i8> %a) { 846 ; CHECK-LABEL: and8imm4s_lsl8: 847 ; CHECK: bic {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #8 848 %tmp1 = and <16 x i8> %a, < i8 255, i8 0, i8 255, i8 255, i8 255, i8 0, i8 255, i8 255, i8 255, i8 0, i8 255, i8 255, i8 255, i8 0, i8 255, i8 255> 849 ret <16 x i8> %tmp1 850 } 851 852 define <16 x i8> @and8imm4s_lsl16(<16 x i8> %a) { 853 ; CHECK-LABEL: and8imm4s_lsl16: 854 ; CHECK: bic {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #16 855 %tmp1 = and <16 x i8> %a, < i8 255, i8 255, i8 0, i8 255, i8 255, i8 255, i8 0, i8 255, i8 255, i8 255, i8 0, i8 255, i8 255, i8 255, i8 0, i8 255> 856 ret <16 x i8> %tmp1 857 } 858 859 define <16 x i8> @and8imm4s_lsl24(<16 x i8> %a) { 860 ; CHECK-LABEL: and8imm4s_lsl24: 861 ; CHECK: bic {{v[0-9]+}}.4s, #{{0xfe|254}}, lsl #24 862 %tmp1 = and <16 x i8> %a, < i8 255, i8 255, i8 255, i8 1, i8 255, i8 255, i8 255, i8 1, i8 255, i8 255, i8 255, i8 1, i8 255, i8 255, i8 255, i8 1> 863 ret <16 x i8> %tmp1 864 } 865 866 define <8 x i16> @and16imm4s_lsl0(<8 x i16> %a) { 867 ; CHECK-LABEL: and16imm4s_lsl0: 868 ; CHECK: bic {{v[0-9]+}}.4s, #{{0xff|255}} 869 %tmp1 = and <8 x i16> %a, < i16 65280, i16 65535, i16 65280, i16 65535, i16 65280, i16 65535, i16 65280, i16 65535> 870 ret <8 x i16> %tmp1 871 } 872 873 define <8 x i16> @and16imm4s_lsl8(<8 x i16> %a) { 874 ; CHECK-LABEL: and16imm4s_lsl8: 875 ; CHECK: bic {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #8 876 %tmp1 = and <8 x i16> %a, < i16 255, i16 65535, i16 255, i16 65535, i16 255, i16 65535, i16 255, i16 65535> 877 ret <8 x i16> %tmp1 878 } 879 880 define <8 x i16> @and16imm4s_lsl16(<8 x i16> %a) { 881 ; CHECK-LABEL: and16imm4s_lsl16: 882 ; CHECK: bic {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #16 883 %tmp1 = and <8 x i16> %a, < i16 65535, i16 65280, i16 65535, i16 65280, i16 65535, i16 65280, i16 65535, i16 65280> 884 ret <8 x i16> %tmp1 885 } 886 887 define <8 x i16> @and16imm4s_lsl24(<8 x i16> %a) { 888 ; CHECK-LABEL: and16imm4s_lsl24: 889 ; CHECK: bic {{v[0-9]+}}.4s, #{{0xfe|254}}, lsl #24 890 %tmp1 = and <8 x i16> %a, < i16 65535, i16 511, i16 65535, i16 511, i16 65535, i16 511, i16 65535, i16 511> 891 ret <8 x i16> %tmp1 892 } 893 894 define <2 x i64> @and64imm4s_lsl0(<2 x i64> %a) { 895 ; CHECK-LABEL: and64imm4s_lsl0: 896 ; CHECK: bic {{v[0-9]+}}.4s, #{{0xff|255}} 897 %tmp1 = and <2 x i64> %a, < i64 -1095216660736, i64 -1095216660736> 898 ret <2 x i64> %tmp1 899 } 900 901 define <2 x i64> @and64imm4s_lsl8(<2 x i64> %a) { 902 ; CHECK-LABEL: and64imm4s_lsl8: 903 ; CHECK: bic {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #8 904 %tmp1 = and <2 x i64> %a, < i64 -280375465148161, i64 -280375465148161> 905 ret <2 x i64> %tmp1 906 } 907 908 define <2 x i64> @and64imm4s_lsl16(<2 x i64> %a) { 909 ; CHECK-LABEL: and64imm4s_lsl16: 910 ; CHECK: bic {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #16 911 %tmp1 = and <2 x i64> %a, < i64 -71776119077928961, i64 -71776119077928961> 912 ret <2 x i64> %tmp1 913 } 914 915 define <2 x i64> @and64imm4s_lsl24(<2 x i64> %a) { 916 ; CHECK-LABEL: and64imm4s_lsl24: 917 ; CHECK: bic {{v[0-9]+}}.4s, #{{0xfe|254}}, lsl #24 918 %tmp1 = and <2 x i64> %a, < i64 144115183814443007, i64 144115183814443007> 919 ret <2 x i64> %tmp1 920 } 921 922 define <8 x i8> @and8imm4h_lsl0(<8 x i8> %a) { 923 ; CHECK-LABEL: and8imm4h_lsl0: 924 ; CHECK: bic {{v[0-9]+}}.4h, #{{0xff|255}} 925 %tmp1 = and <8 x i8> %a, < i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255> 926 ret <8 x i8> %tmp1 927 } 928 929 define <8 x i8> @and8imm4h_lsl8(<8 x i8> %a) { 930 ; CHECK-LABEL: and8imm4h_lsl8: 931 ; CHECK: bic {{v[0-9]+}}.4h, #{{0xff|255}}, lsl #8 932 %tmp1 = and <8 x i8> %a, < i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0> 933 ret <8 x i8> %tmp1 934 } 935 936 define <2 x i32> @and16imm4h_lsl0(<2 x i32> %a) { 937 ; CHECK-LABEL: and16imm4h_lsl0: 938 ; CHECK: bic {{v[0-9]+}}.4h, #{{0xff|255}} 939 %tmp1 = and <2 x i32> %a, < i32 4278255360, i32 4278255360> 940 ret <2 x i32> %tmp1 941 } 942 943 define <2 x i32> @and16imm4h_lsl8(<2 x i32> %a) { 944 ; CHECK-LABEL: and16imm4h_lsl8: 945 ; CHECK: bic {{v[0-9]+}}.4h, #{{0xff|255}}, lsl #8 946 %tmp1 = and <2 x i32> %a, < i32 16711935, i32 16711935> 947 ret <2 x i32> %tmp1 948 } 949 950 define <1 x i64> @and64imm4h_lsl0(<1 x i64> %a) { 951 ; CHECK-LABEL: and64imm4h_lsl0: 952 ; CHECK: bic {{v[0-9]+}}.4h, #{{0xff|255}} 953 %tmp1 = and <1 x i64> %a, < i64 -71777214294589696> 954 ret <1 x i64> %tmp1 955 } 956 957 define <1 x i64> @and64imm4h_lsl8(<1 x i64> %a) { 958 ; CHECK-LABEL: and64imm4h_lsl8: 959 ; CHECK: bic {{v[0-9]+}}.4h, #{{0xff|255}}, lsl #8 960 %tmp1 = and <1 x i64> %a, < i64 71777214294589695> 961 ret <1 x i64> %tmp1 962 } 963 964 define <16 x i8> @and8imm8h_lsl0(<16 x i8> %a) { 965 ; CHECK-LABEL: and8imm8h_lsl0: 966 ; CHECK: bic {{v[0-9]+}}.8h, #{{0xff|255}} 967 %tmp1 = and <16 x i8> %a, < i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255 > 968 ret <16 x i8> %tmp1 969 } 970 971 define <16 x i8> @and8imm8h_lsl8(<16 x i8> %a) { 972 ; CHECK-LABEL: and8imm8h_lsl8: 973 ; CHECK: bic {{v[0-9]+}}.8h, #{{0xff|255}}, lsl #8 974 %tmp1 = and <16 x i8> %a, <i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0 > 975 ret <16 x i8> %tmp1 976 } 977 978 define <4 x i32> @and16imm8h_lsl0(<4 x i32> %a) { 979 ; CHECK-LABEL: and16imm8h_lsl0: 980 ; CHECK: bic {{v[0-9]+}}.8h, #{{0xff|255}} 981 %tmp1 = and <4 x i32> %a, < i32 4278255360, i32 4278255360, i32 4278255360, i32 4278255360> 982 ret <4 x i32> %tmp1 983 } 984 985 define <4 x i32> @and16imm8h_lsl8(<4 x i32> %a) { 986 ; CHECK-LABEL: and16imm8h_lsl8: 987 ; CHECK: bic {{v[0-9]+}}.8h, #{{0xff|255}}, lsl #8 988 %tmp1 = and <4 x i32> %a, < i32 16711935, i32 16711935, i32 16711935, i32 16711935> 989 ret <4 x i32> %tmp1 990 } 991 992 define <2 x i64> @and64imm8h_lsl0(<2 x i64> %a) { 993 ; CHECK-LABEL: and64imm8h_lsl0: 994 ; CHECK: bic {{v[0-9]+}}.8h, #{{0xff|255}} 995 %tmp1 = and <2 x i64> %a, < i64 -71777214294589696, i64 -71777214294589696> 996 ret <2 x i64> %tmp1 997 } 998 999 define <2 x i64> @and64imm8h_lsl8(<2 x i64> %a) { 1000 ; CHECK-LABEL: and64imm8h_lsl8: 1001 ; CHECK: bic {{v[0-9]+}}.8h, #{{0xff|255}}, lsl #8 1002 %tmp1 = and <2 x i64> %a, < i64 71777214294589695, i64 71777214294589695> 1003 ret <2 x i64> %tmp1 1004 } 1005 1006 define <8 x i8> @orr8imm2s_lsl0(<8 x i8> %a) { 1007 ; CHECK-LABEL: orr8imm2s_lsl0: 1008 ; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}} 1009 %tmp1 = or <8 x i8> %a, < i8 255, i8 0, i8 0, i8 0, i8 255, i8 0, i8 0, i8 0> 1010 ret <8 x i8> %tmp1 1011 } 1012 1013 define <8 x i8> @orr8imm2s_lsl8(<8 x i8> %a) { 1014 ; CHECK-LABEL: orr8imm2s_lsl8: 1015 ; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #8 1016 %tmp1 = or <8 x i8> %a, < i8 0, i8 255, i8 0, i8 0, i8 0, i8 255, i8 0, i8 0> 1017 ret <8 x i8> %tmp1 1018 } 1019 1020 define <8 x i8> @orr8imm2s_lsl16(<8 x i8> %a) { 1021 ; CHECK-LABEL: orr8imm2s_lsl16: 1022 ; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #16 1023 %tmp1 = or <8 x i8> %a, < i8 0, i8 0, i8 255, i8 0, i8 0, i8 0, i8 255, i8 0> 1024 ret <8 x i8> %tmp1 1025 } 1026 1027 define <8 x i8> @orr8imm2s_lsl24(<8 x i8> %a) { 1028 ; CHECK-LABEL: orr8imm2s_lsl24: 1029 ; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #24 1030 %tmp1 = or <8 x i8> %a, < i8 0, i8 0, i8 0, i8 255, i8 0, i8 0, i8 0, i8 255> 1031 ret <8 x i8> %tmp1 1032 } 1033 1034 define <4 x i16> @orr16imm2s_lsl0(<4 x i16> %a) { 1035 ; CHECK-LABEL: orr16imm2s_lsl0: 1036 ; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}} 1037 %tmp1 = or <4 x i16> %a, < i16 255, i16 0, i16 255, i16 0> 1038 ret <4 x i16> %tmp1 1039 } 1040 1041 define <4 x i16> @orr16imm2s_lsl8(<4 x i16> %a) { 1042 ; CHECK-LABEL: orr16imm2s_lsl8: 1043 ; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #8 1044 %tmp1 = or <4 x i16> %a, < i16 65280, i16 0, i16 65280, i16 0> 1045 ret <4 x i16> %tmp1 1046 } 1047 1048 define <4 x i16> @orr16imm2s_lsl16(<4 x i16> %a) { 1049 ; CHECK-LABEL: orr16imm2s_lsl16: 1050 ; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #16 1051 %tmp1 = or <4 x i16> %a, < i16 0, i16 255, i16 0, i16 255> 1052 ret <4 x i16> %tmp1 1053 } 1054 1055 define <4 x i16> @orr16imm2s_lsl24(<4 x i16> %a) { 1056 ; CHECK-LABEL: orr16imm2s_lsl24: 1057 ; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #24 1058 %tmp1 = or <4 x i16> %a, < i16 0, i16 65280, i16 0, i16 65280> 1059 ret <4 x i16> %tmp1 1060 } 1061 1062 define <1 x i64> @orr64imm2s_lsl0(<1 x i64> %a) { 1063 ; CHECK-LABEL: orr64imm2s_lsl0: 1064 ; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}} 1065 %tmp1 = or <1 x i64> %a, < i64 1095216660735> 1066 ret <1 x i64> %tmp1 1067 } 1068 1069 define <1 x i64> @orr64imm2s_lsl8(<1 x i64> %a) { 1070 ; CHECK-LABEL: orr64imm2s_lsl8: 1071 ; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #8 1072 %tmp1 = or <1 x i64> %a, < i64 280375465148160> 1073 ret <1 x i64> %tmp1 1074 } 1075 1076 define <1 x i64> @orr64imm2s_lsl16(<1 x i64> %a) { 1077 ; CHECK-LABEL: orr64imm2s_lsl16: 1078 ; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #16 1079 %tmp1 = or <1 x i64> %a, < i64 71776119077928960> 1080 ret <1 x i64> %tmp1 1081 } 1082 1083 define <1 x i64> @orr64imm2s_lsl24(<1 x i64> %a) { 1084 ; CHECK-LABEL: orr64imm2s_lsl24: 1085 ; CHECK: orr {{v[0-9]+}}.2s, #{{0xff|255}}, lsl #24 1086 %tmp1 = or <1 x i64> %a, < i64 -72057589759737856> 1087 ret <1 x i64> %tmp1 1088 } 1089 1090 define <16 x i8> @orr8imm4s_lsl0(<16 x i8> %a) { 1091 ; CHECK-LABEL: orr8imm4s_lsl0: 1092 ; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}} 1093 %tmp1 = or <16 x i8> %a, < i8 255, i8 0, i8 0, i8 0, i8 255, i8 0, i8 0, i8 0, i8 255, i8 0, i8 0, i8 0, i8 255, i8 0, i8 0, i8 0> 1094 ret <16 x i8> %tmp1 1095 } 1096 1097 define <16 x i8> @orr8imm4s_lsl8(<16 x i8> %a) { 1098 ; CHECK-LABEL: orr8imm4s_lsl8: 1099 ; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #8 1100 %tmp1 = or <16 x i8> %a, < i8 0, i8 255, i8 0, i8 0, i8 0, i8 255, i8 0, i8 0, i8 0, i8 255, i8 0, i8 0, i8 0, i8 255, i8 0, i8 0> 1101 ret <16 x i8> %tmp1 1102 } 1103 1104 define <16 x i8> @orr8imm4s_lsl16(<16 x i8> %a) { 1105 ; CHECK-LABEL: orr8imm4s_lsl16: 1106 ; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #16 1107 %tmp1 = or <16 x i8> %a, < i8 0, i8 0, i8 255, i8 0, i8 0, i8 0, i8 255, i8 0, i8 0, i8 0, i8 255, i8 0, i8 0, i8 0, i8 255, i8 0> 1108 ret <16 x i8> %tmp1 1109 } 1110 1111 define <16 x i8> @orr8imm4s_lsl24(<16 x i8> %a) { 1112 ; CHECK-LABEL: orr8imm4s_lsl24: 1113 ; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #24 1114 %tmp1 = or <16 x i8> %a, < i8 0, i8 0, i8 0, i8 255, i8 0, i8 0, i8 0, i8 255, i8 0, i8 0, i8 0, i8 255, i8 0, i8 0, i8 0, i8 255> 1115 ret <16 x i8> %tmp1 1116 } 1117 1118 define <8 x i16> @orr16imm4s_lsl0(<8 x i16> %a) { 1119 ; CHECK-LABEL: orr16imm4s_lsl0: 1120 ; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}} 1121 %tmp1 = or <8 x i16> %a, < i16 255, i16 0, i16 255, i16 0, i16 255, i16 0, i16 255, i16 0> 1122 ret <8 x i16> %tmp1 1123 } 1124 1125 define <8 x i16> @orr16imm4s_lsl8(<8 x i16> %a) { 1126 ; CHECK-LABEL: orr16imm4s_lsl8: 1127 ; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #8 1128 %tmp1 = or <8 x i16> %a, < i16 65280, i16 0, i16 65280, i16 0, i16 65280, i16 0, i16 65280, i16 0> 1129 ret <8 x i16> %tmp1 1130 } 1131 1132 define <8 x i16> @orr16imm4s_lsl16(<8 x i16> %a) { 1133 ; CHECK-LABEL: orr16imm4s_lsl16: 1134 ; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #16 1135 %tmp1 = or <8 x i16> %a, < i16 0, i16 255, i16 0, i16 255, i16 0, i16 255, i16 0, i16 255> 1136 ret <8 x i16> %tmp1 1137 } 1138 1139 define <8 x i16> @orr16imm4s_lsl24(<8 x i16> %a) { 1140 ; CHECK-LABEL: orr16imm4s_lsl24: 1141 ; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #24 1142 %tmp1 = or <8 x i16> %a, < i16 0, i16 65280, i16 0, i16 65280, i16 0, i16 65280, i16 0, i16 65280> 1143 ret <8 x i16> %tmp1 1144 } 1145 1146 define <2 x i64> @orr64imm4s_lsl0(<2 x i64> %a) { 1147 ; CHECK-LABEL: orr64imm4s_lsl0: 1148 ; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}} 1149 %tmp1 = or <2 x i64> %a, < i64 1095216660735, i64 1095216660735> 1150 ret <2 x i64> %tmp1 1151 } 1152 1153 define <2 x i64> @orr64imm4s_lsl8(<2 x i64> %a) { 1154 ; CHECK-LABEL: orr64imm4s_lsl8: 1155 ; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #8 1156 %tmp1 = or <2 x i64> %a, < i64 280375465148160, i64 280375465148160> 1157 ret <2 x i64> %tmp1 1158 } 1159 1160 define <2 x i64> @orr64imm4s_lsl16(<2 x i64> %a) { 1161 ; CHECK-LABEL: orr64imm4s_lsl16: 1162 ; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #16 1163 %tmp1 = or <2 x i64> %a, < i64 71776119077928960, i64 71776119077928960> 1164 ret <2 x i64> %tmp1 1165 } 1166 1167 define <2 x i64> @orr64imm4s_lsl24(<2 x i64> %a) { 1168 ; CHECK-LABEL: orr64imm4s_lsl24: 1169 ; CHECK: orr {{v[0-9]+}}.4s, #{{0xff|255}}, lsl #24 1170 %tmp1 = or <2 x i64> %a, < i64 -72057589759737856, i64 -72057589759737856> 1171 ret <2 x i64> %tmp1 1172 } 1173 1174 define <8 x i8> @orr8imm4h_lsl0(<8 x i8> %a) { 1175 ; CHECK-LABEL: orr8imm4h_lsl0: 1176 ; CHECK: orr {{v[0-9]+}}.4h, #{{0xff|255}} 1177 %tmp1 = or <8 x i8> %a, < i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0> 1178 ret <8 x i8> %tmp1 1179 } 1180 1181 define <8 x i8> @orr8imm4h_lsl8(<8 x i8> %a) { 1182 ; CHECK-LABEL: orr8imm4h_lsl8: 1183 ; CHECK: orr {{v[0-9]+}}.4h, #{{0xff|255}}, lsl #8 1184 %tmp1 = or <8 x i8> %a, < i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255> 1185 ret <8 x i8> %tmp1 1186 } 1187 1188 define <2 x i32> @orr16imm4h_lsl0(<2 x i32> %a) { 1189 ; CHECK-LABEL: orr16imm4h_lsl0: 1190 ; CHECK: orr {{v[0-9]+}}.4h, #{{0xff|255}} 1191 %tmp1 = or <2 x i32> %a, < i32 16711935, i32 16711935> 1192 ret <2 x i32> %tmp1 1193 } 1194 1195 define <2 x i32> @orr16imm4h_lsl8(<2 x i32> %a) { 1196 ; CHECK-LABEL: orr16imm4h_lsl8: 1197 ; CHECK: orr {{v[0-9]+}}.4h, #{{0xff|255}}, lsl #8 1198 %tmp1 = or <2 x i32> %a, < i32 4278255360, i32 4278255360> 1199 ret <2 x i32> %tmp1 1200 } 1201 1202 define <1 x i64> @orr64imm4h_lsl0(<1 x i64> %a) { 1203 ; CHECK-LABEL: orr64imm4h_lsl0: 1204 ; CHECK: orr {{v[0-9]+}}.4h, #{{0xff|255}} 1205 %tmp1 = or <1 x i64> %a, < i64 71777214294589695> 1206 ret <1 x i64> %tmp1 1207 } 1208 1209 define <1 x i64> @orr64imm4h_lsl8(<1 x i64> %a) { 1210 ; CHECK-LABEL: orr64imm4h_lsl8: 1211 ; CHECK: orr {{v[0-9]+}}.4h, #{{0xff|255}}, lsl #8 1212 %tmp1 = or <1 x i64> %a, < i64 -71777214294589696> 1213 ret <1 x i64> %tmp1 1214 } 1215 1216 define <16 x i8> @orr8imm8h_lsl0(<16 x i8> %a) { 1217 ; CHECK-LABEL: orr8imm8h_lsl0: 1218 ; CHECK: orr {{v[0-9]+}}.8h, #{{0xff|255}} 1219 %tmp1 = or <16 x i8> %a, < i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0> 1220 ret <16 x i8> %tmp1 1221 } 1222 1223 define <16 x i8> @orr8imm8h_lsl8(<16 x i8> %a) { 1224 ; CHECK-LABEL: orr8imm8h_lsl8: 1225 ; CHECK: orr {{v[0-9]+}}.8h, #{{0xff|255}}, lsl #8 1226 %tmp1 = or <16 x i8> %a, < i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255, i8 0, i8 255> 1227 ret <16 x i8> %tmp1 1228 } 1229 1230 define <4 x i32> @orr16imm8h_lsl0(<4 x i32> %a) { 1231 ; CHECK-LABEL: orr16imm8h_lsl0: 1232 ; CHECK: orr {{v[0-9]+}}.8h, #{{0xff|255}} 1233 %tmp1 = or <4 x i32> %a, < i32 16711935, i32 16711935, i32 16711935, i32 16711935> 1234 ret <4 x i32> %tmp1 1235 } 1236 1237 define <4 x i32> @orr16imm8h_lsl8(<4 x i32> %a) { 1238 ; CHECK-LABEL: orr16imm8h_lsl8: 1239 ; CHECK: orr {{v[0-9]+}}.8h, #{{0xff|255}}, lsl #8 1240 %tmp1 = or <4 x i32> %a, < i32 4278255360, i32 4278255360, i32 4278255360, i32 4278255360> 1241 ret <4 x i32> %tmp1 1242 } 1243 1244 define <2 x i64> @orr64imm8h_lsl0(<2 x i64> %a) { 1245 ; CHECK-LABEL: orr64imm8h_lsl0: 1246 ; CHECK: orr {{v[0-9]+}}.8h, #{{0xff|255}} 1247 %tmp1 = or <2 x i64> %a, < i64 71777214294589695, i64 71777214294589695> 1248 ret <2 x i64> %tmp1 1249 } 1250 1251 define <2 x i64> @orr64imm8h_lsl8(<2 x i64> %a) { 1252 ; CHECK-LABEL: orr64imm8h_lsl8: 1253 ; CHECK: orr {{v[0-9]+}}.8h, #{{0xff|255}}, lsl #8 1254 %tmp1 = or <2 x i64> %a, < i64 -71777214294589696, i64 -71777214294589696> 1255 ret <2 x i64> %tmp1 1256 } 1257 1258