42 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -o - -mtriple=x86_64-unknown-unknown -mattr=+sse2 | FileCheck %s --check-prefix=SSE3; RUN: llc < %s -o - -mtriple=x86_64-unknown-unknown -mattr=+avx | FileCheck %s --check-prefix=AVX4 5define <8 x i16> @foo(<8 x i16> %a, <8 x i16> %b) {6; SSE-LABEL: foo:7; SSE: # %bb.0:8; SSE-NEXT: pcmpeqw %xmm1, %xmm09; SSE-NEXT: pand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm010; SSE-NEXT: retq11;12; AVX-LABEL: foo:13; AVX: # %bb.0:14; AVX-NEXT: vpcmpeqw %xmm1, %xmm0, %xmm015; AVX-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm016; AVX-NEXT: retq17 %icmp = icmp eq <8 x i16> %a, %b18 %zext = zext <8 x i1> %icmp to <8 x i16>19 %shl = shl nuw nsw <8 x i16> %zext, <i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5>20 ret <8 x i16> %shl21}22 23; Don't fail with an assert due to an undef in the buildvector24define <8 x i16> @bar(<8 x i16> %a, <8 x i16> %b) {25; SSE-LABEL: bar:26; SSE: # %bb.0:27; SSE-NEXT: pcmpeqw %xmm1, %xmm028; SSE-NEXT: pand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm029; SSE-NEXT: retq30;31; AVX-LABEL: bar:32; AVX: # %bb.0:33; AVX-NEXT: vpcmpeqw %xmm1, %xmm0, %xmm034; AVX-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm035; AVX-NEXT: retq36 %icmp = icmp eq <8 x i16> %a, %b37 %zext = zext <8 x i1> %icmp to <8 x i16>38 %shl = shl nuw nsw <8 x i16> %zext, <i16 5, i16 undef, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5>39 ret <8 x i16> %shl40}41 42