Changeset View
Changeset View
Standalone View
Standalone View
llvm/trunk/test/CodeGen/X86/avx512-trunc.ll
Show First 20 Lines • Show All 452 Lines • ▼ Show 20 Lines | |||||
; SKX-NEXT: retq | ; SKX-NEXT: retq | ||||
%x = trunc <32 x i16> %i to <32 x i8> | %x = trunc <32 x i16> %i to <32 x i8> | ||||
ret <32 x i8> %x | ret <32 x i8> %x | ||||
} | } | ||||
define void @trunc_wb_512_mem(<32 x i16> %i, <32 x i8>* %res) #0 { | define void @trunc_wb_512_mem(<32 x i16> %i, <32 x i8>* %res) #0 { | ||||
; KNL-LABEL: trunc_wb_512_mem: | ; KNL-LABEL: trunc_wb_512_mem: | ||||
; KNL: ## %bb.0: | ; KNL: ## %bb.0: | ||||
; KNL-NEXT: vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero | |||||
; KNL-NEXT: vpmovdb %zmm0, %xmm0 | |||||
; KNL-NEXT: vpmovzxwd {{.*#+}} zmm1 = ymm1[0],zero,ymm1[1],zero,ymm1[2],zero,ymm1[3],zero,ymm1[4],zero,ymm1[5],zero,ymm1[6],zero,ymm1[7],zero,ymm1[8],zero,ymm1[9],zero,ymm1[10],zero,ymm1[11],zero,ymm1[12],zero,ymm1[13],zero,ymm1[14],zero,ymm1[15],zero | ; KNL-NEXT: vpmovzxwd {{.*#+}} zmm1 = ymm1[0],zero,ymm1[1],zero,ymm1[2],zero,ymm1[3],zero,ymm1[4],zero,ymm1[5],zero,ymm1[6],zero,ymm1[7],zero,ymm1[8],zero,ymm1[9],zero,ymm1[10],zero,ymm1[11],zero,ymm1[12],zero,ymm1[13],zero,ymm1[14],zero,ymm1[15],zero | ||||
; KNL-NEXT: vpmovdb %zmm1, %xmm1 | ; KNL-NEXT: vpmovdb %zmm1, 16(%rdi) | ||||
; KNL-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 | ; KNL-NEXT: vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero | ||||
; KNL-NEXT: vmovdqa %ymm0, (%rdi) | ; KNL-NEXT: vpmovdb %zmm0, (%rdi) | ||||
; KNL-NEXT: vzeroupper | ; KNL-NEXT: vzeroupper | ||||
; KNL-NEXT: retq | ; KNL-NEXT: retq | ||||
; | ; | ||||
; SKX-LABEL: trunc_wb_512_mem: | ; SKX-LABEL: trunc_wb_512_mem: | ||||
; SKX: ## %bb.0: | ; SKX: ## %bb.0: | ||||
; SKX-NEXT: vpmovwb %zmm0, (%rdi) | ; SKX-NEXT: vpmovwb %zmm0, (%rdi) | ||||
; SKX-NEXT: vzeroupper | ; SKX-NEXT: vzeroupper | ||||
; SKX-NEXT: retq | ; SKX-NEXT: retq | ||||
▲ Show 20 Lines • Show All 187 Lines • ▼ Show 20 Lines | ; ALL-NEXT: retq | ||||
ret <32 x i8> %x6 | ret <32 x i8> %x6 | ||||
} | } | ||||
define void @usat_trunc_db_1024_mem(<32 x i32> %i, <32 x i8>* %p) { | define void @usat_trunc_db_1024_mem(<32 x i32> %i, <32 x i8>* %p) { | ||||
; ALL-LABEL: usat_trunc_db_1024_mem: | ; ALL-LABEL: usat_trunc_db_1024_mem: | ||||
; ALL: ## %bb.0: | ; ALL: ## %bb.0: | ||||
; ALL-NEXT: vpmovusdb %zmm0, %xmm0 | ; ALL-NEXT: vpmovusdb %zmm0, %xmm0 | ||||
; ALL-NEXT: vpmovusdb %zmm1, %xmm1 | ; ALL-NEXT: vpmovusdb %zmm1, %xmm1 | ||||
; ALL-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 | ; ALL-NEXT: vmovdqu %xmm1, 16(%rdi) | ||||
; ALL-NEXT: vmovdqu %ymm0, (%rdi) | ; ALL-NEXT: vmovdqu %xmm0, (%rdi) | ||||
; ALL-NEXT: vzeroupper | ; ALL-NEXT: vzeroupper | ||||
; ALL-NEXT: retq | ; ALL-NEXT: retq | ||||
%x3 = icmp ult <32 x i32> %i, <i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255> | %x3 = icmp ult <32 x i32> %i, <i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255> | ||||
%x5 = select <32 x i1> %x3, <32 x i32> %i, <32 x i32> <i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255> | %x5 = select <32 x i1> %x3, <32 x i32> %i, <32 x i32> <i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255> | ||||
%x6 = trunc <32 x i32> %x5 to <32 x i8> | %x6 = trunc <32 x i32> %x5 to <32 x i8> | ||||
store <32 x i8>%x6, <32 x i8>* %p, align 1 | store <32 x i8>%x6, <32 x i8>* %p, align 1 | ||||
ret void | ret void | ||||
} | } | ||||
▲ Show 20 Lines • Show All 263 Lines • ▼ Show 20 Lines | |||||
define void @smax_usat_trunc_db_1024_mem(<32 x i32> %i, <32 x i8>* %p) { | define void @smax_usat_trunc_db_1024_mem(<32 x i32> %i, <32 x i8>* %p) { | ||||
; ALL-LABEL: smax_usat_trunc_db_1024_mem: | ; ALL-LABEL: smax_usat_trunc_db_1024_mem: | ||||
; ALL: ## %bb.0: | ; ALL: ## %bb.0: | ||||
; ALL-NEXT: vpxor %xmm2, %xmm2, %xmm2 | ; ALL-NEXT: vpxor %xmm2, %xmm2, %xmm2 | ||||
; ALL-NEXT: vpmaxsd %zmm2, %zmm1, %zmm1 | ; ALL-NEXT: vpmaxsd %zmm2, %zmm1, %zmm1 | ||||
; ALL-NEXT: vpmaxsd %zmm2, %zmm0, %zmm0 | ; ALL-NEXT: vpmaxsd %zmm2, %zmm0, %zmm0 | ||||
; ALL-NEXT: vpmovusdb %zmm0, %xmm0 | ; ALL-NEXT: vpmovusdb %zmm0, %xmm0 | ||||
; ALL-NEXT: vpmovusdb %zmm1, %xmm1 | ; ALL-NEXT: vpmovusdb %zmm1, %xmm1 | ||||
; ALL-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 | ; ALL-NEXT: vmovdqu %xmm1, 16(%rdi) | ||||
; ALL-NEXT: vmovdqu %ymm0, (%rdi) | ; ALL-NEXT: vmovdqu %xmm0, (%rdi) | ||||
; ALL-NEXT: vzeroupper | ; ALL-NEXT: vzeroupper | ||||
; ALL-NEXT: retq | ; ALL-NEXT: retq | ||||
%x1 = icmp sgt <32 x i32> %i, <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0> | %x1 = icmp sgt <32 x i32> %i, <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0> | ||||
%x2 = select <32 x i1> %x1, <32 x i32> %i, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0> | %x2 = select <32 x i1> %x1, <32 x i32> %i, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0> | ||||
%x3 = icmp slt <32 x i32> %x2, <i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255> | %x3 = icmp slt <32 x i32> %x2, <i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255> | ||||
%x5 = select <32 x i1> %x3, <32 x i32> %x2, <32 x i32> <i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255> | %x5 = select <32 x i1> %x3, <32 x i32> %x2, <32 x i32> <i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255> | ||||
%x6 = trunc <32 x i32> %x5 to <32 x i8> | %x6 = trunc <32 x i32> %x5 to <32 x i8> | ||||
store <32 x i8>%x6, <32 x i8>* %p, align 1 | store <32 x i8>%x6, <32 x i8>* %p, align 1 | ||||
▲ Show 20 Lines • Show All 73 Lines • Show Last 20 Lines |