@@ -103,3 +103,27 @@ for_loop599: ; preds = %for_loop599, %for_t
103
103
for_exit600: ; preds = %for_loop599
104
104
ret void
105
105
}
106
+
107
+ define <4 x i32 > @pcmpgt (<4 x i8 > %x ) {
108
+ ; AVX-LABEL: pcmpgt:
109
+ ; AVX: # %bb.0:
110
+ ; AVX-NEXT: vpmovzxbd {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
111
+ ; AVX-NEXT: vpxor %xmm1, %xmm1, %xmm1
112
+ ; AVX-NEXT: vpcmpeqd %xmm1, %xmm0, %xmm0
113
+ ; AVX-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1
114
+ ; AVX-NEXT: vpxor %xmm1, %xmm0, %xmm0
115
+ ; AVX-NEXT: retq
116
+ ;
117
+ ; KNL-32-LABEL: pcmpgt:
118
+ ; KNL-32: # %bb.0:
119
+ ; KNL-32-NEXT: vpmovzxbd {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
120
+ ; KNL-32-NEXT: vpxor %xmm1, %xmm1, %xmm1
121
+ ; KNL-32-NEXT: vpcmpeqd %xmm1, %xmm0, %xmm0
122
+ ; KNL-32-NEXT: vpternlogq $15, %zmm0, %zmm0, %zmm0
123
+ ; KNL-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0
124
+ ; KNL-32-NEXT: retl
125
+ %zext = zext <4 x i8 > %x to <4 x i32 >
126
+ %icmp = icmp ne <4 x i32 > %zext , zeroinitializer
127
+ %sext = sext <4 x i1 > %icmp to <4 x i32 >
128
+ ret <4 x i32 > %sext
129
+ }
0 commit comments