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