Skip to content

Commit 851a760

Browse files
committed
[X86] Tests for unsigned saturation downconvert detection.
One more test for smax(smin(x, C2), C1) pattern. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@330090 91177308-0d34-0410-b5e6-96231b3b80d8
1 parent cfa414c commit 851a760

File tree

1 file changed

+32
-4
lines changed

1 file changed

+32
-4
lines changed

test/CodeGen/X86/avx512-trunc.ll

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -775,9 +775,8 @@ define <16 x i8> @usat_trunc_db_256(<8 x i32> %x) {
775775
; %res = trunc %d
776776

777777

778-
779-
define void @smax_usat_trunc_wb_256_mem(<16 x i16> %i, <16 x i8>* %res) {
780-
; KNL-LABEL: smax_usat_trunc_wb_256_mem:
778+
define void @smax_usat_trunc_wb_256_mem1(<16 x i16> %i, <16 x i8>* %res) {
779+
; KNL-LABEL: smax_usat_trunc_wb_256_mem1:
781780
; KNL: ## %bb.0:
782781
; KNL-NEXT: vpxor %xmm1, %xmm1, %xmm1
783782
; KNL-NEXT: vpmaxsw %ymm1, %ymm0, %ymm0
@@ -787,7 +786,7 @@ define void @smax_usat_trunc_wb_256_mem(<16 x i16> %i, <16 x i8>* %res) {
787786
; KNL-NEXT: vzeroupper
788787
; KNL-NEXT: retq
789788
;
790-
; SKX-LABEL: smax_usat_trunc_wb_256_mem:
789+
; SKX-LABEL: smax_usat_trunc_wb_256_mem1:
791790
; SKX: ## %bb.0:
792791
; SKX-NEXT: vpxor %xmm1, %xmm1, %xmm1
793792
; SKX-NEXT: vpmaxsw %ymm1, %ymm0, %ymm0
@@ -804,6 +803,35 @@ define void @smax_usat_trunc_wb_256_mem(<16 x i16> %i, <16 x i8>* %res) {
804803
ret void
805804
}
806805

806+
; Test for smax(smin(x, C2), C1).
807+
define void @smax_usat_trunc_wb_256_mem2(<16 x i16> %i, <16 x i8>* %res) {
808+
; KNL-LABEL: smax_usat_trunc_wb_256_mem2:
809+
; KNL: ## %bb.0:
810+
; KNL-NEXT: vpminsw {{.*}}(%rip), %ymm0, %ymm0
811+
; KNL-NEXT: vpxor %xmm1, %xmm1, %xmm1
812+
; KNL-NEXT: vpmaxsw %ymm1, %ymm0, %ymm0
813+
; KNL-NEXT: vpmovsxwd %ymm0, %zmm0
814+
; KNL-NEXT: vpmovdb %zmm0, (%rdi)
815+
; KNL-NEXT: vzeroupper
816+
; KNL-NEXT: retq
817+
;
818+
; SKX-LABEL: smax_usat_trunc_wb_256_mem2:
819+
; SKX: ## %bb.0:
820+
; SKX-NEXT: vpminsw {{.*}}(%rip), %ymm0, %ymm0
821+
; SKX-NEXT: vpxor %xmm1, %xmm1, %xmm1
822+
; SKX-NEXT: vpmaxsw %ymm1, %ymm0, %ymm0
823+
; SKX-NEXT: vpmovwb %ymm0, (%rdi)
824+
; SKX-NEXT: vzeroupper
825+
; SKX-NEXT: retq
826+
%x1 = icmp slt <16 x i16> %i, <i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255>
827+
%x2 = select <16 x i1> %x1, <16 x i16> %i, <16 x i16> <i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255>
828+
%x3 = icmp sgt <16 x i16> %x2, <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>
829+
%x5 = select <16 x i1> %x3, <16 x i16> %x2, <16 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>
830+
%x6 = trunc <16 x i16> %x5 to <16 x i8>
831+
store <16 x i8> %x6, <16 x i8>* %res, align 1
832+
ret void
833+
}
834+
807835
define <16 x i8> @smax_usat_trunc_wb_256(<16 x i16> %i) {
808836
; KNL-LABEL: smax_usat_trunc_wb_256:
809837
; KNL: ## %bb.0:

0 commit comments

Comments
 (0)