; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=skx | FileCheck --check-prefix=SKX %s define <8 x i16> @extract_subvector128_v32i16(<32 x i16> %x) nounwind { ; SKX-LABEL: extract_subvector128_v32i16: ; SKX: ## BB#0: ; SKX-NEXT: vextracti32x4 $2, %zmm0, %xmm0 ; SKX-NEXT: retq %r1 = shufflevector <32 x i16> %x, <32 x i16> undef, <8 x i32> ret <8 x i16> %r1 } define <8 x i16> @extract_subvector128_v32i16_first_element(<32 x i16> %x) nounwind { ; SKX-LABEL: extract_subvector128_v32i16_first_element: ; SKX: ## BB#0: ; SKX-NEXT: retq %r1 = shufflevector <32 x i16> %x, <32 x i16> undef, <8 x i32> ret <8 x i16> %r1 } define <16 x i8> @extract_subvector128_v64i8(<64 x i8> %x) nounwind { ; SKX-LABEL: extract_subvector128_v64i8: ; SKX: ## BB#0: ; SKX-NEXT: vextracti32x4 $2, %zmm0, %xmm0 ; SKX-NEXT: retq %r1 = shufflevector <64 x i8> %x, <64 x i8> undef, <16 x i32> ret <16 x i8> %r1 } define <16 x i8> @extract_subvector128_v64i8_first_element(<64 x i8> %x) nounwind { ; SKX-LABEL: extract_subvector128_v64i8_first_element: ; SKX: ## BB#0: ; SKX-NEXT: retq %r1 = shufflevector <64 x i8> %x, <64 x i8> undef, <16 x i32> ret <16 x i8> %r1 } define <16 x i16> @extract_subvector256_v32i16(<32 x i16> %x) nounwind { ; SKX-LABEL: extract_subvector256_v32i16: ; SKX: ## BB#0: ; SKX-NEXT: vextracti64x4 $1, %zmm0, %ymm0 ; SKX-NEXT: retq %r1 = shufflevector <32 x i16> %x, <32 x i16> undef, <16 x i32> ret <16 x i16> %r1 } define <32 x i8> @extract_subvector256_v64i8(<64 x i8> %x) nounwind { ; SKX-LABEL: extract_subvector256_v64i8: ; SKX: ## BB#0: ; SKX-NEXT: vextracti64x4 $1, %zmm0, %ymm0 ; SKX-NEXT: retq %r1 = shufflevector <64 x i8> %x, <64 x i8> undef, <32 x i32> ret <32 x i8> %r1 }