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-prefixes=CHECK,X86 3; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx2 | FileCheck %s --check-prefixes=CHECK,X64 4 5define <8 x i32> @v8i32_cmpgt(<8 x i32> %i, <8 x i32> %j) nounwind readnone { 6; CHECK-LABEL: v8i32_cmpgt: 7; CHECK: # %bb.0: 8; CHECK-NEXT: vpcmpgtd %ymm0, %ymm1, %ymm0 9; CHECK-NEXT: ret{{[l|q]}} 10 %bincmp = icmp slt <8 x i32> %i, %j 11 %x = sext <8 x i1> %bincmp to <8 x i32> 12 ret <8 x i32> %x 13} 14 15define <4 x i64> @v4i64_cmpgt(<4 x i64> %i, <4 x i64> %j) nounwind readnone { 16; CHECK-LABEL: v4i64_cmpgt: 17; CHECK: # %bb.0: 18; CHECK-NEXT: vpcmpgtq %ymm0, %ymm1, %ymm0 19; CHECK-NEXT: ret{{[l|q]}} 20 %bincmp = icmp slt <4 x i64> %i, %j 21 %x = sext <4 x i1> %bincmp to <4 x i64> 22 ret <4 x i64> %x 23} 24 25define <16 x i16> @v16i16_cmpgt(<16 x i16> %i, <16 x i16> %j) nounwind readnone { 26; CHECK-LABEL: v16i16_cmpgt: 27; CHECK: # %bb.0: 28; CHECK-NEXT: vpcmpgtw %ymm0, %ymm1, %ymm0 29; CHECK-NEXT: ret{{[l|q]}} 30 %bincmp = icmp slt <16 x i16> %i, %j 31 %x = sext <16 x i1> %bincmp to <16 x i16> 32 ret <16 x i16> %x 33} 34 35define <32 x i8> @v32i8_cmpgt(<32 x i8> %i, <32 x i8> %j) nounwind readnone { 36; CHECK-LABEL: v32i8_cmpgt: 37; CHECK: # %bb.0: 38; CHECK-NEXT: vpcmpgtb %ymm0, %ymm1, %ymm0 39; CHECK-NEXT: ret{{[l|q]}} 40 %bincmp = icmp slt <32 x i8> %i, %j 41 %x = sext <32 x i1> %bincmp to <32 x i8> 42 ret <32 x i8> %x 43} 44 45define <8 x i32> @int256_cmpeq(<8 x i32> %i, <8 x i32> %j) nounwind readnone { 46; CHECK-LABEL: int256_cmpeq: 47; CHECK: # %bb.0: 48; CHECK-NEXT: vpcmpeqd %ymm1, %ymm0, %ymm0 49; CHECK-NEXT: ret{{[l|q]}} 50 %bincmp = icmp eq <8 x i32> %i, %j 51 %x = sext <8 x i1> %bincmp to <8 x i32> 52 ret <8 x i32> %x 53} 54 55define <4 x i64> @v4i64_cmpeq(<4 x i64> %i, <4 x i64> %j) nounwind readnone { 56; CHECK-LABEL: v4i64_cmpeq: 57; CHECK: # %bb.0: 58; CHECK-NEXT: vpcmpeqq %ymm1, %ymm0, %ymm0 59; CHECK-NEXT: ret{{[l|q]}} 60 %bincmp = icmp eq <4 x i64> %i, %j 61 %x = sext <4 x i1> %bincmp to <4 x i64> 62 ret <4 x i64> %x 63} 64 65define <16 x i16> @v16i16_cmpeq(<16 x i16> %i, <16 x i16> %j) nounwind readnone { 66; CHECK-LABEL: v16i16_cmpeq: 67; CHECK: # %bb.0: 68; CHECK-NEXT: vpcmpeqw %ymm1, %ymm0, %ymm0 69; CHECK-NEXT: ret{{[l|q]}} 70 %bincmp = icmp eq <16 x i16> %i, %j 71 %x = sext <16 x i1> %bincmp to <16 x i16> 72 ret <16 x i16> %x 73} 74 75define <32 x i8> @v32i8_cmpeq(<32 x i8> %i, <32 x i8> %j) nounwind readnone { 76; CHECK-LABEL: v32i8_cmpeq: 77; CHECK: # %bb.0: 78; CHECK-NEXT: vpcmpeqb %ymm1, %ymm0, %ymm0 79; CHECK-NEXT: ret{{[l|q]}} 80 %bincmp = icmp eq <32 x i8> %i, %j 81 %x = sext <32 x i1> %bincmp to <32 x i8> 82 ret <32 x i8> %x 83} 84;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: 85; X64: {{.*}} 86; X86: {{.*}} 87