Home | History | Annotate | Download | only in X86
      1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
      2 ; RUN: llc < %s -o - -mtriple=x86_64-unknown-unknown -mattr=+sse2 | FileCheck %s --check-prefix=SSE
      3 ; RUN: llc < %s -o - -mtriple=x86_64-unknown-unknown -mattr=+avx | FileCheck %s --check-prefix=AVX
      4 
      5 define <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, %xmm0
      9 ; SSE-NEXT:    pand {{.*}}(%rip), %xmm0
     10 ; SSE-NEXT:    retq
     11 ;
     12 ; AVX-LABEL: foo:
     13 ; AVX:       # %bb.0:
     14 ; AVX-NEXT:    vpcmpeqw %xmm1, %xmm0, %xmm0
     15 ; AVX-NEXT:    vpand {{.*}}(%rip), %xmm0, %xmm0
     16 ; AVX-NEXT:    retq
     17   %icmp = icmp eq <8 x i16> %a, %b
     18   %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> %shl
     21 }
     22 
     23 ; Don't fail with an assert due to an undef in the buildvector
     24 define <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, %xmm0
     28 ; SSE-NEXT:    pand {{.*}}(%rip), %xmm0
     29 ; SSE-NEXT:    retq
     30 ;
     31 ; AVX-LABEL: bar:
     32 ; AVX:       # %bb.0:
     33 ; AVX-NEXT:    vpcmpeqw %xmm1, %xmm0, %xmm0
     34 ; AVX-NEXT:    vpand {{.*}}(%rip), %xmm0, %xmm0
     35 ; AVX-NEXT:    retq
     36   %icmp = icmp eq <8 x i16> %a, %b
     37   %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> %shl
     40 }
     41 
     42