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 5define <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 20define <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 35define <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 50define <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 65define <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 80define <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 95define <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 110define <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