49 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512vl,+prefer-256-bit | FileCheck %s --check-prefix=AVX256NOBW3; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512vl,-prefer-256-bit | FileCheck %s --check-prefix=AVX512NOBW4; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f,+prefer-256-bit | FileCheck %s --check-prefix=AVX512NOBW5; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f,-prefer-256-bit | FileCheck %s --check-prefix=AVX512NOBW6; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512bw,+prefer-256-bit | FileCheck %s --check-prefix=AVX512BW7; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512bw,-prefer-256-bit | FileCheck %s --check-prefix=AVX512BW8; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512bw,+avx512vl,+prefer-256-bit | FileCheck %s --check-prefix=AVX256BWVL9; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512bw,+avx512vl,-prefer-256-bit | FileCheck %s --check-prefix=AVX512BWVL10 11define <16 x i8> @testv16i16_trunc_v16i8(<16 x i16> %x) {12; AVX256NOBW-LABEL: testv16i16_trunc_v16i8:13; AVX256NOBW: # %bb.0:14; AVX256NOBW-NEXT: vpandd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %ymm015; AVX256NOBW-NEXT: vextracti128 $1, %ymm0, %xmm116; AVX256NOBW-NEXT: vpackuswb %xmm1, %xmm0, %xmm017; AVX256NOBW-NEXT: vzeroupper18; AVX256NOBW-NEXT: retq19;20; AVX512NOBW-LABEL: testv16i16_trunc_v16i8:21; AVX512NOBW: # %bb.0:22; AVX512NOBW-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],zero23; AVX512NOBW-NEXT: vpmovdb %zmm0, %xmm024; AVX512NOBW-NEXT: vzeroupper25; AVX512NOBW-NEXT: retq26;27; AVX512BW-LABEL: testv16i16_trunc_v16i8:28; AVX512BW: # %bb.0:29; AVX512BW-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm030; AVX512BW-NEXT: vpmovwb %zmm0, %ymm031; AVX512BW-NEXT: # kill: def $xmm0 killed $xmm0 killed $ymm032; AVX512BW-NEXT: vzeroupper33; AVX512BW-NEXT: retq34;35; AVX256BWVL-LABEL: testv16i16_trunc_v16i8:36; AVX256BWVL: # %bb.0:37; AVX256BWVL-NEXT: vpmovwb %ymm0, %xmm038; AVX256BWVL-NEXT: vzeroupper39; AVX256BWVL-NEXT: retq40;41; AVX512BWVL-LABEL: testv16i16_trunc_v16i8:42; AVX512BWVL: # %bb.0:43; AVX512BWVL-NEXT: vpmovwb %ymm0, %xmm044; AVX512BWVL-NEXT: vzeroupper45; AVX512BWVL-NEXT: retq46 %trunc = trunc <16 x i16> %x to <16 x i8>47 ret <16 x i8> %trunc48}49