Home | History | Annotate | Download | only in X86
      1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
      2 ; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx2 | FileCheck %s --check-prefix=X32
      3 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx2 | FileCheck %s --check-prefix=X64
      4 
      5 define <8 x i32> @v8i32_cmpgt(<8 x i32> %i, <8 x i32> %j) nounwind readnone {
      6 ; X32-LABEL: v8i32_cmpgt:
      7 ; X32:       # %bb.0:
      8 ; X32-NEXT:    vpcmpgtd %ymm0, %ymm1, %ymm0
      9 ; X32-NEXT:    retl
     10 ;
     11 ; X64-LABEL: v8i32_cmpgt:
     12 ; X64:       # %bb.0:
     13 ; X64-NEXT:    vpcmpgtd %ymm0, %ymm1, %ymm0
     14 ; X64-NEXT:    retq
     15   %bincmp = icmp slt <8 x i32> %i, %j
     16   %x = sext <8 x i1> %bincmp to <8 x i32>
     17   ret <8 x i32> %x
     18 }
     19 
     20 define <4 x i64> @v4i64_cmpgt(<4 x i64> %i, <4 x i64> %j) nounwind readnone {
     21 ; X32-LABEL: v4i64_cmpgt:
     22 ; X32:       # %bb.0:
     23 ; X32-NEXT:    vpcmpgtq %ymm0, %ymm1, %ymm0
     24 ; X32-NEXT:    retl
     25 ;
     26 ; X64-LABEL: v4i64_cmpgt:
     27 ; X64:       # %bb.0:
     28 ; X64-NEXT:    vpcmpgtq %ymm0, %ymm1, %ymm0
     29 ; X64-NEXT:    retq
     30   %bincmp = icmp slt <4 x i64> %i, %j
     31   %x = sext <4 x i1> %bincmp to <4 x i64>
     32   ret <4 x i64> %x
     33 }
     34 
     35 define <16 x i16> @v16i16_cmpgt(<16 x i16> %i, <16 x i16> %j) nounwind readnone {
     36 ; X32-LABEL: v16i16_cmpgt:
     37 ; X32:       # %bb.0:
     38 ; X32-NEXT:    vpcmpgtw %ymm0, %ymm1, %ymm0
     39 ; X32-NEXT:    retl
     40 ;
     41 ; X64-LABEL: v16i16_cmpgt:
     42 ; X64:       # %bb.0:
     43 ; X64-NEXT:    vpcmpgtw %ymm0, %ymm1, %ymm0
     44 ; X64-NEXT:    retq
     45   %bincmp = icmp slt <16 x i16> %i, %j
     46   %x = sext <16 x i1> %bincmp to <16 x i16>
     47   ret <16 x i16> %x
     48 }
     49 
     50 define <32 x i8> @v32i8_cmpgt(<32 x i8> %i, <32 x i8> %j) nounwind readnone {
     51 ; X32-LABEL: v32i8_cmpgt:
     52 ; X32:       # %bb.0:
     53 ; X32-NEXT:    vpcmpgtb %ymm0, %ymm1, %ymm0
     54 ; X32-NEXT:    retl
     55 ;
     56 ; X64-LABEL: v32i8_cmpgt:
     57 ; X64:       # %bb.0:
     58 ; X64-NEXT:    vpcmpgtb %ymm0, %ymm1, %ymm0
     59 ; X64-NEXT:    retq
     60   %bincmp = icmp slt <32 x i8> %i, %j
     61   %x = sext <32 x i1> %bincmp to <32 x i8>
     62   ret <32 x i8> %x
     63 }
     64 
     65 define <8 x i32> @int256_cmpeq(<8 x i32> %i, <8 x i32> %j) nounwind readnone {
     66 ; X32-LABEL: int256_cmpeq:
     67 ; X32:       # %bb.0:
     68 ; X32-NEXT:    vpcmpeqd %ymm1, %ymm0, %ymm0
     69 ; X32-NEXT:    retl
     70 ;
     71 ; X64-LABEL: int256_cmpeq:
     72 ; X64:       # %bb.0:
     73 ; X64-NEXT:    vpcmpeqd %ymm1, %ymm0, %ymm0
     74 ; X64-NEXT:    retq
     75   %bincmp = icmp eq <8 x i32> %i, %j
     76   %x = sext <8 x i1> %bincmp to <8 x i32>
     77   ret <8 x i32> %x
     78 }
     79 
     80 define <4 x i64> @v4i64_cmpeq(<4 x i64> %i, <4 x i64> %j) nounwind readnone {
     81 ; X32-LABEL: v4i64_cmpeq:
     82 ; X32:       # %bb.0:
     83 ; X32-NEXT:    vpcmpeqq %ymm1, %ymm0, %ymm0
     84 ; X32-NEXT:    retl
     85 ;
     86 ; X64-LABEL: v4i64_cmpeq:
     87 ; X64:       # %bb.0:
     88 ; X64-NEXT:    vpcmpeqq %ymm1, %ymm0, %ymm0
     89 ; X64-NEXT:    retq
     90   %bincmp = icmp eq <4 x i64> %i, %j
     91   %x = sext <4 x i1> %bincmp to <4 x i64>
     92   ret <4 x i64> %x
     93 }
     94 
     95 define <16 x i16> @v16i16_cmpeq(<16 x i16> %i, <16 x i16> %j) nounwind readnone {
     96 ; X32-LABEL: v16i16_cmpeq:
     97 ; X32:       # %bb.0:
     98 ; X32-NEXT:    vpcmpeqw %ymm1, %ymm0, %ymm0
     99 ; X32-NEXT:    retl
    100 ;
    101 ; X64-LABEL: v16i16_cmpeq:
    102 ; X64:       # %bb.0:
    103 ; X64-NEXT:    vpcmpeqw %ymm1, %ymm0, %ymm0
    104 ; X64-NEXT:    retq
    105   %bincmp = icmp eq <16 x i16> %i, %j
    106   %x = sext <16 x i1> %bincmp to <16 x i16>
    107   ret <16 x i16> %x
    108 }
    109 
    110 define <32 x i8> @v32i8_cmpeq(<32 x i8> %i, <32 x i8> %j) nounwind readnone {
    111 ; X32-LABEL: v32i8_cmpeq:
    112 ; X32:       # %bb.0:
    113 ; X32-NEXT:    vpcmpeqb %ymm1, %ymm0, %ymm0
    114 ; X32-NEXT:    retl
    115 ;
    116 ; X64-LABEL: v32i8_cmpeq:
    117 ; X64:       # %bb.0:
    118 ; X64-NEXT:    vpcmpeqb %ymm1, %ymm0, %ymm0
    119 ; X64-NEXT:    retq
    120   %bincmp = icmp eq <32 x i8> %i, %j
    121   %x = sext <32 x i1> %bincmp to <32 x i8>
    122   ret <32 x i8> %x
    123 }
    124