brintos

brintos / llvm-project-archived public Read only

0
0
Text · 34.5 KiB · 00cc92f Raw
868 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=skx | FileCheck --check-prefix=SKX %s3 4 5define <8 x i16> @extract_subvector128_v32i16(<32 x i16> %x) nounwind {6; SKX-LABEL: extract_subvector128_v32i16:7; SKX:       ## %bb.0:8; SKX-NEXT:    vextractf32x4 $2, %zmm0, %xmm09; SKX-NEXT:    vzeroupper10; SKX-NEXT:    retq11  %r1 = shufflevector <32 x i16> %x, <32 x i16> undef, <8 x i32> <i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23>12  ret <8 x i16> %r113}14 15define <8 x i16> @extract_subvector128_v32i16_first_element(<32 x i16> %x) nounwind {16; SKX-LABEL: extract_subvector128_v32i16_first_element:17; SKX:       ## %bb.0:18; SKX-NEXT:    ## kill: def $xmm0 killed $xmm0 killed $zmm019; SKX-NEXT:    vzeroupper20; SKX-NEXT:    retq21  %r1 = shufflevector <32 x i16> %x, <32 x i16> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>22  ret <8 x i16> %r123}24 25define <16 x i8> @extract_subvector128_v64i8(<64 x i8> %x) nounwind {26; SKX-LABEL: extract_subvector128_v64i8:27; SKX:       ## %bb.0:28; SKX-NEXT:    vextractf32x4 $2, %zmm0, %xmm029; SKX-NEXT:    vzeroupper30; SKX-NEXT:    retq31  %r1 = shufflevector <64 x i8> %x, <64 x i8> undef, <16 x i32> <i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38,i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47>32  ret <16 x i8> %r133}34 35define <16 x i8> @extract_subvector128_v64i8_first_element(<64 x i8> %x) nounwind {36; SKX-LABEL: extract_subvector128_v64i8_first_element:37; SKX:       ## %bb.0:38; SKX-NEXT:    ## kill: def $xmm0 killed $xmm0 killed $zmm039; SKX-NEXT:    vzeroupper40; SKX-NEXT:    retq41  %r1 = shufflevector <64 x i8> %x, <64 x i8> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>42  ret <16 x i8> %r143}44 45 46define <16 x i16> @extract_subvector256_v32i16(<32 x i16> %x) nounwind {47; SKX-LABEL: extract_subvector256_v32i16:48; SKX:       ## %bb.0:49; SKX-NEXT:    vextractf64x4 $1, %zmm0, %ymm050; SKX-NEXT:    retq51  %r1 = shufflevector <32 x i16> %x, <32 x i16> undef, <16 x i32> <i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>52  ret <16 x i16> %r153}54 55define <32 x i8> @extract_subvector256_v64i8(<64 x i8> %x) nounwind {56; SKX-LABEL: extract_subvector256_v64i8:57; SKX:       ## %bb.0:58; SKX-NEXT:    vextractf64x4 $1, %zmm0, %ymm059; SKX-NEXT:    retq60  %r1 = shufflevector <64 x i8> %x, <64 x i8> undef, <32 x i32> <i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63>61  ret <32 x i8> %r162}63 64define void @extract_subvector256_v8f64_store(ptr nocapture %addr, <4 x double> %a) nounwind uwtable ssp {65; SKX-LABEL: extract_subvector256_v8f64_store:66; SKX:       ## %bb.0: ## %entry67; SKX-NEXT:    vextractf128 $1, %ymm0, (%rdi)68; SKX-NEXT:    vzeroupper69; SKX-NEXT:    retq70entry:71  %0 = shufflevector <4 x double> %a, <4 x double> undef, <2 x i32> <i32 2, i32 3>72  store <2 x double> %0, ptr %addr, align 173  ret void74}75 76define void @extract_subvector256_v8f32_store(ptr nocapture %addr, <8 x float> %a) nounwind uwtable ssp {77; SKX-LABEL: extract_subvector256_v8f32_store:78; SKX:       ## %bb.0: ## %entry79; SKX-NEXT:    vextractf128 $1, %ymm0, (%rdi)80; SKX-NEXT:    vzeroupper81; SKX-NEXT:    retq82entry:83  %0 = shufflevector <8 x float> %a, <8 x float> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>84  store <4 x float> %0, ptr %addr, align 185  ret void86}87 88define void @extract_subvector256_v4i64_store(ptr nocapture %addr, <4 x i64> %a) nounwind uwtable ssp {89; SKX-LABEL: extract_subvector256_v4i64_store:90; SKX:       ## %bb.0: ## %entry91; SKX-NEXT:    vextractf128 $1, %ymm0, (%rdi)92; SKX-NEXT:    vzeroupper93; SKX-NEXT:    retq94entry:95  %0 = shufflevector <4 x i64> %a, <4 x i64> undef, <2 x i32> <i32 2, i32 3>96  store <2 x i64> %0, ptr %addr, align 197  ret void98}99 100define void @extract_subvector256_v8i32_store(ptr nocapture %addr, <8 x i32> %a) nounwind uwtable ssp {101; SKX-LABEL: extract_subvector256_v8i32_store:102; SKX:       ## %bb.0: ## %entry103; SKX-NEXT:    vextractf128 $1, %ymm0, (%rdi)104; SKX-NEXT:    vzeroupper105; SKX-NEXT:    retq106entry:107  %0 = shufflevector <8 x i32> %a, <8 x i32> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>108  store <4 x i32> %0, ptr %addr, align 1109  ret void110}111 112define void @extract_subvector256_v16i16_store(ptr nocapture %addr, <16 x i16> %a) nounwind uwtable ssp {113; SKX-LABEL: extract_subvector256_v16i16_store:114; SKX:       ## %bb.0: ## %entry115; SKX-NEXT:    vextractf128 $1, %ymm0, (%rdi)116; SKX-NEXT:    vzeroupper117; SKX-NEXT:    retq118entry:119  %0 = shufflevector <16 x i16> %a, <16 x i16> undef, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>120  store <8 x i16> %0, ptr %addr, align 1121  ret void122}123 124define void @extract_subvector256_v32i8_store(ptr nocapture %addr, <32 x i8> %a) nounwind uwtable ssp {125; SKX-LABEL: extract_subvector256_v32i8_store:126; SKX:       ## %bb.0: ## %entry127; SKX-NEXT:    vextractf128 $1, %ymm0, (%rdi)128; SKX-NEXT:    vzeroupper129; SKX-NEXT:    retq130entry:131  %0 = shufflevector <32 x i8> %a, <32 x i8> undef, <16 x i32> <i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>132  store <16 x i8> %0, ptr %addr, align 1133  ret void134}135 136define void @extract_subvector256_v4f64_store_lo(ptr nocapture %addr, <4 x double> %a) nounwind uwtable ssp {137; SKX-LABEL: extract_subvector256_v4f64_store_lo:138; SKX:       ## %bb.0: ## %entry139; SKX-NEXT:    vmovups %xmm0, (%rdi)140; SKX-NEXT:    vzeroupper141; SKX-NEXT:    retq142entry:143  %0 = shufflevector <4 x double> %a, <4 x double> undef, <2 x i32> <i32 0, i32 1>144  store <2 x double> %0, ptr %addr, align 1145  ret void146}147 148define void @extract_subvector256_v4f64_store_lo_align_16(ptr nocapture %addr, <4 x double> %a) nounwind uwtable ssp {149; SKX-LABEL: extract_subvector256_v4f64_store_lo_align_16:150; SKX:       ## %bb.0: ## %entry151; SKX-NEXT:    vmovaps %xmm0, (%rdi)152; SKX-NEXT:    vzeroupper153; SKX-NEXT:    retq154entry:155  %0 = shufflevector <4 x double> %a, <4 x double> undef, <2 x i32> <i32 0, i32 1>156  store <2 x double> %0, ptr %addr, align 16157  ret void158}159 160define void @extract_subvector256_v4f32_store_lo(ptr nocapture %addr, <8 x float> %a) nounwind uwtable ssp {161; SKX-LABEL: extract_subvector256_v4f32_store_lo:162; SKX:       ## %bb.0: ## %entry163; SKX-NEXT:    vmovups %xmm0, (%rdi)164; SKX-NEXT:    vzeroupper165; SKX-NEXT:    retq166entry:167  %0 = shufflevector <8 x float> %a, <8 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>168  store <4 x float> %0, ptr %addr, align 1169  ret void170}171 172define void @extract_subvector256_v4f32_store_lo_align_16(ptr nocapture %addr, <8 x float> %a) nounwind uwtable ssp {173; SKX-LABEL: extract_subvector256_v4f32_store_lo_align_16:174; SKX:       ## %bb.0: ## %entry175; SKX-NEXT:    vmovaps %xmm0, (%rdi)176; SKX-NEXT:    vzeroupper177; SKX-NEXT:    retq178entry:179  %0 = shufflevector <8 x float> %a, <8 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>180  store <4 x float> %0, ptr %addr, align 16181  ret void182}183 184define void @extract_subvector256_v2i64_store_lo(ptr nocapture %addr, <4 x i64> %a) nounwind uwtable ssp {185; SKX-LABEL: extract_subvector256_v2i64_store_lo:186; SKX:       ## %bb.0: ## %entry187; SKX-NEXT:    vmovups %xmm0, (%rdi)188; SKX-NEXT:    vzeroupper189; SKX-NEXT:    retq190entry:191  %0 = shufflevector <4 x i64> %a, <4 x i64> undef, <2 x i32> <i32 0, i32 1>192  store <2 x i64> %0, ptr %addr, align 1193  ret void194}195 196define void @extract_subvector256_v2i64_store_lo_align_16(ptr nocapture %addr, <4 x i64> %a) nounwind uwtable ssp {197; SKX-LABEL: extract_subvector256_v2i64_store_lo_align_16:198; SKX:       ## %bb.0: ## %entry199; SKX-NEXT:    vmovaps %xmm0, (%rdi)200; SKX-NEXT:    vzeroupper201; SKX-NEXT:    retq202entry:203  %0 = shufflevector <4 x i64> %a, <4 x i64> undef, <2 x i32> <i32 0, i32 1>204  store <2 x i64> %0, ptr %addr, align 16205  ret void206}207 208define void @extract_subvector256_v4i32_store_lo(ptr nocapture %addr, <8 x i32> %a) nounwind uwtable ssp {209; SKX-LABEL: extract_subvector256_v4i32_store_lo:210; SKX:       ## %bb.0: ## %entry211; SKX-NEXT:    vmovups %xmm0, (%rdi)212; SKX-NEXT:    vzeroupper213; SKX-NEXT:    retq214entry:215  %0 = shufflevector <8 x i32> %a, <8 x i32> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>216  store <4 x i32> %0, ptr %addr, align 1217  ret void218}219 220define void @extract_subvector256_v4i32_store_lo_align_16(ptr nocapture %addr, <8 x i32> %a) nounwind uwtable ssp {221; SKX-LABEL: extract_subvector256_v4i32_store_lo_align_16:222; SKX:       ## %bb.0: ## %entry223; SKX-NEXT:    vmovaps %xmm0, (%rdi)224; SKX-NEXT:    vzeroupper225; SKX-NEXT:    retq226entry:227  %0 = shufflevector <8 x i32> %a, <8 x i32> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>228  store <4 x i32> %0, ptr %addr, align 16229  ret void230}231 232define void @extract_subvector256_v8i16_store_lo(ptr nocapture %addr, <16 x i16> %a) nounwind uwtable ssp {233; SKX-LABEL: extract_subvector256_v8i16_store_lo:234; SKX:       ## %bb.0: ## %entry235; SKX-NEXT:    vmovups %xmm0, (%rdi)236; SKX-NEXT:    vzeroupper237; SKX-NEXT:    retq238entry:239  %0 = shufflevector <16 x i16> %a, <16 x i16> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>240  store <8 x i16> %0, ptr %addr, align 1241  ret void242}243 244define void @extract_subvector256_v8i16_store_lo_align_16(ptr nocapture %addr, <16 x i16> %a) nounwind uwtable ssp {245; SKX-LABEL: extract_subvector256_v8i16_store_lo_align_16:246; SKX:       ## %bb.0: ## %entry247; SKX-NEXT:    vmovaps %xmm0, (%rdi)248; SKX-NEXT:    vzeroupper249; SKX-NEXT:    retq250entry:251  %0 = shufflevector <16 x i16> %a, <16 x i16> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>252  store <8 x i16> %0, ptr %addr, align 16253  ret void254}255 256define void @extract_subvector256_v16i8_store_lo(ptr nocapture %addr, <32 x i8> %a) nounwind uwtable ssp {257; SKX-LABEL: extract_subvector256_v16i8_store_lo:258; SKX:       ## %bb.0: ## %entry259; SKX-NEXT:    vmovups %xmm0, (%rdi)260; SKX-NEXT:    vzeroupper261; SKX-NEXT:    retq262entry:263  %0 = shufflevector <32 x i8> %a, <32 x i8> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>264  store <16 x i8> %0, ptr %addr, align 1265  ret void266}267 268define void @extract_subvector256_v16i8_store_lo_align_16(ptr nocapture %addr, <32 x i8> %a) nounwind uwtable ssp {269; SKX-LABEL: extract_subvector256_v16i8_store_lo_align_16:270; SKX:       ## %bb.0: ## %entry271; SKX-NEXT:    vmovaps %xmm0, (%rdi)272; SKX-NEXT:    vzeroupper273; SKX-NEXT:    retq274entry:275  %0 = shufflevector <32 x i8> %a, <32 x i8> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>276  store <16 x i8> %0, ptr %addr, align 16277  ret void278}279 280define void @extract_subvector512_v2f64_store_lo(ptr nocapture %addr, <8 x double> %a) nounwind uwtable ssp {281; SKX-LABEL: extract_subvector512_v2f64_store_lo:282; SKX:       ## %bb.0: ## %entry283; SKX-NEXT:    vmovups %xmm0, (%rdi)284; SKX-NEXT:    vzeroupper285; SKX-NEXT:    retq286entry:287  %0 = shufflevector <8 x double> %a, <8 x double> undef, <2 x i32> <i32 0, i32 1>288  store <2 x double> %0, ptr %addr, align 1289  ret void290}291 292define void @extract_subvector512_v2f64_store_lo_align_16(ptr nocapture %addr, <8 x double> %a) nounwind uwtable ssp {293; SKX-LABEL: extract_subvector512_v2f64_store_lo_align_16:294; SKX:       ## %bb.0: ## %entry295; SKX-NEXT:    vmovaps %xmm0, (%rdi)296; SKX-NEXT:    vzeroupper297; SKX-NEXT:    retq298entry:299  %0 = shufflevector <8 x double> %a, <8 x double> undef, <2 x i32> <i32 0, i32 1>300  store <2 x double> %0, ptr %addr, align 16301  ret void302}303 304define void @extract_subvector512_v4f32_store_lo(ptr nocapture %addr, <16 x float> %a) nounwind uwtable ssp {305; SKX-LABEL: extract_subvector512_v4f32_store_lo:306; SKX:       ## %bb.0: ## %entry307; SKX-NEXT:    vmovups %xmm0, (%rdi)308; SKX-NEXT:    vzeroupper309; SKX-NEXT:    retq310entry:311  %0 = shufflevector <16 x float> %a, <16 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>312  store <4 x float> %0, ptr %addr, align 1313  ret void314}315 316define void @extract_subvector512_v4f32_store_lo_align_16(ptr nocapture %addr, <16 x float> %a) nounwind uwtable ssp {317; SKX-LABEL: extract_subvector512_v4f32_store_lo_align_16:318; SKX:       ## %bb.0: ## %entry319; SKX-NEXT:    vmovaps %xmm0, (%rdi)320; SKX-NEXT:    vzeroupper321; SKX-NEXT:    retq322entry:323  %0 = shufflevector <16 x float> %a, <16 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>324  store <4 x float> %0, ptr %addr, align 16325  ret void326}327 328define void @extract_subvector512_v2i64_store_lo(ptr nocapture %addr, <8 x i64> %a) nounwind uwtable ssp {329; SKX-LABEL: extract_subvector512_v2i64_store_lo:330; SKX:       ## %bb.0: ## %entry331; SKX-NEXT:    vmovups %xmm0, (%rdi)332; SKX-NEXT:    vzeroupper333; SKX-NEXT:    retq334entry:335  %0 = shufflevector <8 x i64> %a, <8 x i64> undef, <2 x i32> <i32 0, i32 1>336  store <2 x i64> %0, ptr %addr, align 1337  ret void338}339 340define void @extract_subvector512_v2i64_store_lo_align_16(ptr nocapture %addr, <8 x i64> %a) nounwind uwtable ssp {341; SKX-LABEL: extract_subvector512_v2i64_store_lo_align_16:342; SKX:       ## %bb.0: ## %entry343; SKX-NEXT:    vmovaps %xmm0, (%rdi)344; SKX-NEXT:    vzeroupper345; SKX-NEXT:    retq346entry:347  %0 = shufflevector <8 x i64> %a, <8 x i64> undef, <2 x i32> <i32 0, i32 1>348  store <2 x i64> %0, ptr %addr, align 16349  ret void350}351 352define void @extract_subvector512_v4i32_store_lo(ptr nocapture %addr, <16 x i32> %a) nounwind uwtable ssp {353; SKX-LABEL: extract_subvector512_v4i32_store_lo:354; SKX:       ## %bb.0: ## %entry355; SKX-NEXT:    vmovups %xmm0, (%rdi)356; SKX-NEXT:    vzeroupper357; SKX-NEXT:    retq358entry:359  %0 = shufflevector <16 x i32> %a, <16 x i32> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>360  store <4 x i32> %0, ptr %addr, align 1361  ret void362}363 364define void @extract_subvector512_v4i32_store_lo_align_16(ptr nocapture %addr, <16 x i32> %a) nounwind uwtable ssp {365; SKX-LABEL: extract_subvector512_v4i32_store_lo_align_16:366; SKX:       ## %bb.0: ## %entry367; SKX-NEXT:    vmovaps %xmm0, (%rdi)368; SKX-NEXT:    vzeroupper369; SKX-NEXT:    retq370entry:371  %0 = shufflevector <16 x i32> %a, <16 x i32> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>372  store <4 x i32> %0, ptr %addr, align 16373  ret void374}375 376define void @extract_subvector512_v8i16_store_lo(ptr nocapture %addr, <32 x i16> %a) nounwind uwtable ssp {377; SKX-LABEL: extract_subvector512_v8i16_store_lo:378; SKX:       ## %bb.0: ## %entry379; SKX-NEXT:    vmovups %xmm0, (%rdi)380; SKX-NEXT:    vzeroupper381; SKX-NEXT:    retq382entry:383  %0 = shufflevector <32 x i16> %a, <32 x i16> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>384  store <8 x i16> %0, ptr %addr, align 1385  ret void386}387 388define void @extract_subvector512_v16i8_store_lo(ptr nocapture %addr, <64 x i8> %a) nounwind uwtable ssp {389; SKX-LABEL: extract_subvector512_v16i8_store_lo:390; SKX:       ## %bb.0: ## %entry391; SKX-NEXT:    vmovups %xmm0, (%rdi)392; SKX-NEXT:    vzeroupper393; SKX-NEXT:    retq394entry:395  %0 = shufflevector <64 x i8> %a, <64 x i8> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>396  store <16 x i8> %0, ptr %addr, align 1397  ret void398}399 400define void @extract_subvector512_v16i8_store_lo_align_16(ptr nocapture %addr, <64 x i8> %a) nounwind uwtable ssp {401; SKX-LABEL: extract_subvector512_v16i8_store_lo_align_16:402; SKX:       ## %bb.0: ## %entry403; SKX-NEXT:    vmovaps %xmm0, (%rdi)404; SKX-NEXT:    vzeroupper405; SKX-NEXT:    retq406entry:407  %0 = shufflevector <64 x i8> %a, <64 x i8> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>408  store <16 x i8> %0, ptr %addr, align 16409  ret void410}411 412define void @extract_subvector512_v4f64_store_lo(ptr nocapture %addr, <8 x double> %a) nounwind uwtable ssp {413; SKX-LABEL: extract_subvector512_v4f64_store_lo:414; SKX:       ## %bb.0: ## %entry415; SKX-NEXT:    vmovups %ymm0, (%rdi)416; SKX-NEXT:    vzeroupper417; SKX-NEXT:    retq418entry:419  %0 = shufflevector <8 x double> %a, <8 x double> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>420  store <4 x double> %0, ptr %addr, align 1421  ret void422}423 424define void @extract_subvector512_v4f64_store_lo_align_16(ptr nocapture %addr, <8 x double> %a) nounwind uwtable ssp {425; SKX-LABEL: extract_subvector512_v4f64_store_lo_align_16:426; SKX:       ## %bb.0: ## %entry427; SKX-NEXT:    vmovups %ymm0, (%rdi)428; SKX-NEXT:    vzeroupper429; SKX-NEXT:    retq430entry:431  %0 = shufflevector <8 x double> %a, <8 x double> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>432  store <4 x double> %0, ptr %addr, align 16433  ret void434}435 436define void @extract_subvector512_v4f64_store_lo_align_32(ptr nocapture %addr, <8 x double> %a) nounwind uwtable ssp {437; SKX-LABEL: extract_subvector512_v4f64_store_lo_align_32:438; SKX:       ## %bb.0: ## %entry439; SKX-NEXT:    vmovaps %ymm0, (%rdi)440; SKX-NEXT:    vzeroupper441; SKX-NEXT:    retq442entry:443  %0 = shufflevector <8 x double> %a, <8 x double> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>444  store <4 x double> %0, ptr %addr, align 32445  ret void446}447 448define void @extract_subvector512_v8f32_store_lo(ptr nocapture %addr, <16 x float> %a) nounwind uwtable ssp {449; SKX-LABEL: extract_subvector512_v8f32_store_lo:450; SKX:       ## %bb.0: ## %entry451; SKX-NEXT:    vmovups %ymm0, (%rdi)452; SKX-NEXT:    vzeroupper453; SKX-NEXT:    retq454entry:455  %0 = shufflevector <16 x float> %a, <16 x float> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>456  store <8 x float> %0, ptr %addr, align 1457  ret void458}459 460define void @extract_subvector512_v8f32_store_lo_align_16(ptr nocapture %addr, <16 x float> %a) nounwind uwtable ssp {461; SKX-LABEL: extract_subvector512_v8f32_store_lo_align_16:462; SKX:       ## %bb.0: ## %entry463; SKX-NEXT:    vmovups %ymm0, (%rdi)464; SKX-NEXT:    vzeroupper465; SKX-NEXT:    retq466entry:467  %0 = shufflevector <16 x float> %a, <16 x float> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>468  store <8 x float> %0, ptr %addr, align 16469  ret void470}471 472define void @extract_subvector512_v8f32_store_lo_align_32(ptr nocapture %addr, <16 x float> %a) nounwind uwtable ssp {473; SKX-LABEL: extract_subvector512_v8f32_store_lo_align_32:474; SKX:       ## %bb.0: ## %entry475; SKX-NEXT:    vmovaps %ymm0, (%rdi)476; SKX-NEXT:    vzeroupper477; SKX-NEXT:    retq478entry:479  %0 = shufflevector <16 x float> %a, <16 x float> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>480  store <8 x float> %0, ptr %addr, align 32481  ret void482}483 484define void @extract_subvector512_v4i64_store_lo(ptr nocapture %addr, <8 x i64> %a) nounwind uwtable ssp {485; SKX-LABEL: extract_subvector512_v4i64_store_lo:486; SKX:       ## %bb.0: ## %entry487; SKX-NEXT:    vmovups %ymm0, (%rdi)488; SKX-NEXT:    vzeroupper489; SKX-NEXT:    retq490entry:491  %0 = shufflevector <8 x i64> %a, <8 x i64> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>492  store <4 x i64> %0, ptr %addr, align 1493  ret void494}495 496define void @extract_subvector512_v4i64_store_lo_align_16(ptr nocapture %addr, <8 x i64> %a) nounwind uwtable ssp {497; SKX-LABEL: extract_subvector512_v4i64_store_lo_align_16:498; SKX:       ## %bb.0: ## %entry499; SKX-NEXT:    vmovups %ymm0, (%rdi)500; SKX-NEXT:    vzeroupper501; SKX-NEXT:    retq502entry:503  %0 = shufflevector <8 x i64> %a, <8 x i64> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>504  store <4 x i64> %0, ptr %addr, align 16505  ret void506}507 508define void @extract_subvector512_v4i64_store_lo_align_32(ptr nocapture %addr, <8 x i64> %a) nounwind uwtable ssp {509; SKX-LABEL: extract_subvector512_v4i64_store_lo_align_32:510; SKX:       ## %bb.0: ## %entry511; SKX-NEXT:    vmovaps %ymm0, (%rdi)512; SKX-NEXT:    vzeroupper513; SKX-NEXT:    retq514entry:515  %0 = shufflevector <8 x i64> %a, <8 x i64> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>516  store <4 x i64> %0, ptr %addr, align 32517  ret void518}519 520define void @extract_subvector512_v8i32_store_lo(ptr nocapture %addr, <16 x i32> %a) nounwind uwtable ssp {521; SKX-LABEL: extract_subvector512_v8i32_store_lo:522; SKX:       ## %bb.0: ## %entry523; SKX-NEXT:    vmovups %ymm0, (%rdi)524; SKX-NEXT:    vzeroupper525; SKX-NEXT:    retq526entry:527  %0 = shufflevector <16 x i32> %a, <16 x i32> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>528  store <8 x i32> %0, ptr %addr, align 1529  ret void530}531 532define void @extract_subvector512_v8i32_store_lo_align_16(ptr nocapture %addr, <16 x i32> %a) nounwind uwtable ssp {533; SKX-LABEL: extract_subvector512_v8i32_store_lo_align_16:534; SKX:       ## %bb.0: ## %entry535; SKX-NEXT:    vmovups %ymm0, (%rdi)536; SKX-NEXT:    vzeroupper537; SKX-NEXT:    retq538entry:539  %0 = shufflevector <16 x i32> %a, <16 x i32> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>540  store <8 x i32> %0, ptr %addr, align 16541  ret void542}543 544define void @extract_subvector512_v8i32_store_lo_align_32(ptr nocapture %addr, <16 x i32> %a) nounwind uwtable ssp {545; SKX-LABEL: extract_subvector512_v8i32_store_lo_align_32:546; SKX:       ## %bb.0: ## %entry547; SKX-NEXT:    vmovaps %ymm0, (%rdi)548; SKX-NEXT:    vzeroupper549; SKX-NEXT:    retq550entry:551  %0 = shufflevector <16 x i32> %a, <16 x i32> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>552  store <8 x i32> %0, ptr %addr, align 32553  ret void554}555 556define void @extract_subvector512_v16i16_store_lo(ptr nocapture %addr, <32 x i16> %a) nounwind uwtable ssp {557; SKX-LABEL: extract_subvector512_v16i16_store_lo:558; SKX:       ## %bb.0: ## %entry559; SKX-NEXT:    vmovups %ymm0, (%rdi)560; SKX-NEXT:    vzeroupper561; SKX-NEXT:    retq562entry:563  %0 = shufflevector <32 x i16> %a, <32 x i16> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>564  store <16 x i16> %0, ptr %addr, align 1565  ret void566}567 568define void @extract_subvector512_v16i16_store_lo_align_16(ptr nocapture %addr, <32 x i16> %a) nounwind uwtable ssp {569; SKX-LABEL: extract_subvector512_v16i16_store_lo_align_16:570; SKX:       ## %bb.0: ## %entry571; SKX-NEXT:    vmovups %ymm0, (%rdi)572; SKX-NEXT:    vzeroupper573; SKX-NEXT:    retq574entry:575  %0 = shufflevector <32 x i16> %a, <32 x i16> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>576  store <16 x i16> %0, ptr %addr, align 16577  ret void578}579 580define void @extract_subvector512_v16i16_store_lo_align_32(ptr nocapture %addr, <32 x i16> %a) nounwind uwtable ssp {581; SKX-LABEL: extract_subvector512_v16i16_store_lo_align_32:582; SKX:       ## %bb.0: ## %entry583; SKX-NEXT:    vmovaps %ymm0, (%rdi)584; SKX-NEXT:    vzeroupper585; SKX-NEXT:    retq586entry:587  %0 = shufflevector <32 x i16> %a, <32 x i16> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>588  store <16 x i16> %0, ptr %addr, align 32589  ret void590}591 592define void @extract_subvector512_v32i8_store_lo(ptr nocapture %addr, <64 x i8> %a) nounwind uwtable ssp {593; SKX-LABEL: extract_subvector512_v32i8_store_lo:594; SKX:       ## %bb.0: ## %entry595; SKX-NEXT:    vmovups %ymm0, (%rdi)596; SKX-NEXT:    vzeroupper597; SKX-NEXT:    retq598entry:599  %0 = shufflevector <64 x i8> %a, <64 x i8> undef, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>600  store <32 x i8> %0, ptr %addr, align 1601  ret void602}603 604define void @extract_subvector512_v32i8_store_lo_align_16(ptr nocapture %addr, <64 x i8> %a) nounwind uwtable ssp {605; SKX-LABEL: extract_subvector512_v32i8_store_lo_align_16:606; SKX:       ## %bb.0: ## %entry607; SKX-NEXT:    vmovups %ymm0, (%rdi)608; SKX-NEXT:    vzeroupper609; SKX-NEXT:    retq610entry:611  %0 = shufflevector <64 x i8> %a, <64 x i8> undef, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>612  store <32 x i8> %0, ptr %addr, align 16613  ret void614}615 616define void @extract_subvector512_v32i8_store_lo_align_32(ptr nocapture %addr, <64 x i8> %a) nounwind uwtable ssp {617; SKX-LABEL: extract_subvector512_v32i8_store_lo_align_32:618; SKX:       ## %bb.0: ## %entry619; SKX-NEXT:    vmovaps %ymm0, (%rdi)620; SKX-NEXT:    vzeroupper621; SKX-NEXT:    retq622entry:623  %0 = shufflevector <64 x i8> %a, <64 x i8> undef, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>624  store <32 x i8> %0, ptr %addr, align 32625  ret void626}627 628define <4 x double> @test_mm512_mask_extractf64x4_pd(<4 x double> %__W, i8 %__U, <8 x double> %__A) {629; SKX-LABEL: test_mm512_mask_extractf64x4_pd:630; SKX:       ## %bb.0: ## %entry631; SKX-NEXT:    kmovd %edi, %k1632; SKX-NEXT:    vextractf64x4 $1, %zmm1, %ymm0 {%k1}633; SKX-NEXT:    retq634entry:635  %shuffle = shufflevector <8 x double> %__A, <8 x double> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>636  %0 = bitcast i8 %__U to <8 x i1>637  %extract = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>638  %1 = select <4 x i1> %extract, <4 x double> %shuffle, <4 x double> %__W639  ret <4 x double> %1640}641 642define <4 x double> @test_mm512_maskz_extractf64x4_pd(i8 %__U, <8 x double> %__A) {643; SKX-LABEL: test_mm512_maskz_extractf64x4_pd:644; SKX:       ## %bb.0: ## %entry645; SKX-NEXT:    kmovd %edi, %k1646; SKX-NEXT:    vextractf64x4 $1, %zmm0, %ymm0 {%k1} {z}647; SKX-NEXT:    retq648entry:649  %shuffle = shufflevector <8 x double> %__A, <8 x double> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>650  %0 = bitcast i8 %__U to <8 x i1>651  %extract = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>652  %1 = select <4 x i1> %extract, <4 x double> %shuffle, <4 x double> zeroinitializer653  ret <4 x double> %1654}655 656define <4 x float> @test_mm512_mask_extractf32x4_ps(<4 x float> %__W, i8 %__U, <8 x double> %__A) {657; SKX-LABEL: test_mm512_mask_extractf32x4_ps:658; SKX:       ## %bb.0: ## %entry659; SKX-NEXT:    kmovd %edi, %k1660; SKX-NEXT:    vextractf32x4 $1, %zmm1, %xmm0 {%k1}661; SKX-NEXT:    vzeroupper662; SKX-NEXT:    retq663entry:664  %0 = bitcast <8 x double> %__A to <16 x float>665  %shuffle = shufflevector <16 x float> %0, <16 x float> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>666  %1 = bitcast i8 %__U to <8 x i1>667  %extract = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>668  %2 = select <4 x i1> %extract, <4 x float> %shuffle, <4 x float> %__W669  ret <4 x float> %2670}671 672define <4 x float> @test_mm512_maskz_extractf32x4_ps(i8 %__U, <8 x double> %__A) {673; SKX-LABEL: test_mm512_maskz_extractf32x4_ps:674; SKX:       ## %bb.0: ## %entry675; SKX-NEXT:    kmovd %edi, %k1676; SKX-NEXT:    vextractf32x4 $1, %zmm0, %xmm0 {%k1} {z}677; SKX-NEXT:    vzeroupper678; SKX-NEXT:    retq679entry:680  %0 = bitcast <8 x double> %__A to <16 x float>681  %shuffle = shufflevector <16 x float> %0, <16 x float> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>682  %1 = bitcast i8 %__U to <8 x i1>683  %extract = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>684  %2 = select <4 x i1> %extract, <4 x float> %shuffle, <4 x float> zeroinitializer685  ret <4 x float> %2686}687 688define <2 x double> @test_mm256_mask_extractf64x2_pd(<2 x double> %__W, i8 %__U, <4 x double> %__A) {689; SKX-LABEL: test_mm256_mask_extractf64x2_pd:690; SKX:       ## %bb.0: ## %entry691; SKX-NEXT:    kmovd %edi, %k1692; SKX-NEXT:    vextractf64x2 $1, %ymm1, %xmm0 {%k1}693; SKX-NEXT:    vzeroupper694; SKX-NEXT:    retq695entry:696  %shuffle = shufflevector <4 x double> %__A, <4 x double> undef, <2 x i32> <i32 2, i32 3>697  %0 = bitcast i8 %__U to <8 x i1>698  %extract = shufflevector <8 x i1> %0, <8 x i1> undef, <2 x i32> <i32 0, i32 1>699  %1 = select <2 x i1> %extract, <2 x double> %shuffle, <2 x double> %__W700  ret <2 x double> %1701}702 703define <2 x double> @test_mm256_maskz_extractf64x2_pd(i8 %__U, <4 x double> %__A) {704; SKX-LABEL: test_mm256_maskz_extractf64x2_pd:705; SKX:       ## %bb.0: ## %entry706; SKX-NEXT:    kmovd %edi, %k1707; SKX-NEXT:    vextractf64x2 $1, %ymm0, %xmm0 {%k1} {z}708; SKX-NEXT:    vzeroupper709; SKX-NEXT:    retq710entry:711  %shuffle = shufflevector <4 x double> %__A, <4 x double> undef, <2 x i32> <i32 2, i32 3>712  %0 = bitcast i8 %__U to <8 x i1>713  %extract = shufflevector <8 x i1> %0, <8 x i1> undef, <2 x i32> <i32 0, i32 1>714  %1 = select <2 x i1> %extract, <2 x double> %shuffle, <2 x double> zeroinitializer715  ret <2 x double> %1716}717 718define <2 x i64> @test_mm256_mask_extracti64x2_epi64(<2 x i64> %__W, i8 %__U, <4 x i64> %__A) {719; SKX-LABEL: test_mm256_mask_extracti64x2_epi64:720; SKX:       ## %bb.0: ## %entry721; SKX-NEXT:    kmovd %edi, %k1722; SKX-NEXT:    vextracti64x2 $1, %ymm1, %xmm0 {%k1}723; SKX-NEXT:    vzeroupper724; SKX-NEXT:    retq725entry:726  %shuffle = shufflevector <4 x i64> %__A, <4 x i64> undef, <2 x i32> <i32 2, i32 3>727  %0 = bitcast i8 %__U to <8 x i1>728  %extract = shufflevector <8 x i1> %0, <8 x i1> undef, <2 x i32> <i32 0, i32 1>729  %1 = select <2 x i1> %extract, <2 x i64> %shuffle, <2 x i64> %__W730  ret <2 x i64> %1731}732 733define <2 x i64> @test_mm256_maskz_extracti64x2_epi64(i8 %__U, <4 x i64> %__A) {734; SKX-LABEL: test_mm256_maskz_extracti64x2_epi64:735; SKX:       ## %bb.0: ## %entry736; SKX-NEXT:    kmovd %edi, %k1737; SKX-NEXT:    vextracti64x2 $1, %ymm0, %xmm0 {%k1} {z}738; SKX-NEXT:    vzeroupper739; SKX-NEXT:    retq740entry:741  %shuffle = shufflevector <4 x i64> %__A, <4 x i64> undef, <2 x i32> <i32 2, i32 3>742  %0 = bitcast i8 %__U to <8 x i1>743  %extract = shufflevector <8 x i1> %0, <8 x i1> undef, <2 x i32> <i32 0, i32 1>744  %1 = select <2 x i1> %extract, <2 x i64> %shuffle, <2 x i64> zeroinitializer745  ret <2 x i64> %1746}747 748define <4 x float> @test_mm256_mask_extractf32x4_ps(<4 x float> %__W, i8 %__U, <8 x float> %__A) {749; SKX-LABEL: test_mm256_mask_extractf32x4_ps:750; SKX:       ## %bb.0: ## %entry751; SKX-NEXT:    kmovd %edi, %k1752; SKX-NEXT:    vextractf32x4 $1, %ymm1, %xmm0 {%k1}753; SKX-NEXT:    vzeroupper754; SKX-NEXT:    retq755entry:756  %shuffle = shufflevector <8 x float> %__A, <8 x float> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>757  %0 = bitcast i8 %__U to <8 x i1>758  %extract = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>759  %1 = select <4 x i1> %extract, <4 x float> %shuffle, <4 x float> %__W760  ret <4 x float> %1761}762 763define <4 x float> @test_mm256_maskz_extractf32x4_ps(i8 %__U, <8 x float> %__A) {764; SKX-LABEL: test_mm256_maskz_extractf32x4_ps:765; SKX:       ## %bb.0: ## %entry766; SKX-NEXT:    kmovd %edi, %k1767; SKX-NEXT:    vextractf32x4 $1, %ymm0, %xmm0 {%k1} {z}768; SKX-NEXT:    vzeroupper769; SKX-NEXT:    retq770entry:771  %shuffle = shufflevector <8 x float> %__A, <8 x float> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>772  %0 = bitcast i8 %__U to <8 x i1>773  %extract = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>774  %1 = select <4 x i1> %extract, <4 x float> %shuffle, <4 x float> zeroinitializer775  ret <4 x float> %1776}777 778define <2 x i64> @test_mm256_mask_extracti32x4_epi32(<2 x i64> %__W, i8 %__U, <4 x i64> %__A) {779; SKX-LABEL: test_mm256_mask_extracti32x4_epi32:780; SKX:       ## %bb.0: ## %entry781; SKX-NEXT:    kmovd %edi, %k1782; SKX-NEXT:    vextracti32x4 $1, %ymm1, %xmm0 {%k1}783; SKX-NEXT:    vzeroupper784; SKX-NEXT:    retq785entry:786  %0 = bitcast <4 x i64> %__A to <8 x i32>787  %shuffle = shufflevector <8 x i32> %0, <8 x i32> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>788  %1 = bitcast <2 x i64> %__W to <4 x i32>789  %2 = bitcast i8 %__U to <8 x i1>790  %extract = shufflevector <8 x i1> %2, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>791  %3 = select <4 x i1> %extract, <4 x i32> %shuffle, <4 x i32> %1792  %4 = bitcast <4 x i32> %3 to <2 x i64>793  ret <2 x i64> %4794}795 796define <2 x i64> @test_mm256_maskz_extracti32x4_epi32(i8 %__U, <4 x i64> %__A) {797; SKX-LABEL: test_mm256_maskz_extracti32x4_epi32:798; SKX:       ## %bb.0: ## %entry799; SKX-NEXT:    kmovd %edi, %k1800; SKX-NEXT:    vextracti32x4 $1, %ymm0, %xmm0 {%k1} {z}801; SKX-NEXT:    vzeroupper802; SKX-NEXT:    retq803entry:804  %0 = bitcast <4 x i64> %__A to <8 x i32>805  %shuffle = shufflevector <8 x i32> %0, <8 x i32> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>806  %1 = bitcast i8 %__U to <8 x i1>807  %extract = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>808  %2 = select <4 x i1> %extract, <4 x i32> %shuffle, <4 x i32> zeroinitializer809  %3 = bitcast <4 x i32> %2 to <2 x i64>810  ret <2 x i64> %3811}812 813define <8 x float> @test_mm512_mask_extractf32x8_ps(<8 x float> %__W, i8 %__U, <16 x float> %__A) {814; SKX-LABEL: test_mm512_mask_extractf32x8_ps:815; SKX:       ## %bb.0: ## %entry816; SKX-NEXT:    kmovd %edi, %k1817; SKX-NEXT:    vextractf32x8 $1, %zmm1, %ymm0 {%k1}818; SKX-NEXT:    retq819entry:820  %shuffle = shufflevector <16 x float> %__A, <16 x float> undef, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>821  %0 = bitcast i8 %__U to <8 x i1>822  %1 = select <8 x i1> %0, <8 x float> %shuffle, <8 x float> %__W823  ret <8 x float> %1824}825 826define <8 x float> @test_mm512_maskz_extractf32x8_ps(i8 %__U, <16 x float> %__A) {827; SKX-LABEL: test_mm512_maskz_extractf32x8_ps:828; SKX:       ## %bb.0: ## %entry829; SKX-NEXT:    kmovd %edi, %k1830; SKX-NEXT:    vextractf32x8 $1, %zmm0, %ymm0 {%k1} {z}831; SKX-NEXT:    retq832entry:833  %shuffle = shufflevector <16 x float> %__A, <16 x float> undef, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>834  %0 = bitcast i8 %__U to <8 x i1>835  %1 = select <8 x i1> %0, <8 x float> %shuffle, <8 x float> zeroinitializer836  ret <8 x float> %1837}838 839define <2 x double> @test_mm512_mask_extractf64x2_pd(<2 x double> %__W, i8 %__U, <8 x double> %__A) {840; SKX-LABEL: test_mm512_mask_extractf64x2_pd:841; SKX:       ## %bb.0: ## %entry842; SKX-NEXT:    kmovd %edi, %k1843; SKX-NEXT:    vextractf64x2 $3, %zmm1, %xmm0 {%k1}844; SKX-NEXT:    vzeroupper845; SKX-NEXT:    retq846entry:847  %shuffle = shufflevector <8 x double> %__A, <8 x double> undef, <2 x i32> <i32 6, i32 7>848  %0 = bitcast i8 %__U to <8 x i1>849  %extract = shufflevector <8 x i1> %0, <8 x i1> undef, <2 x i32> <i32 0, i32 1>850  %1 = select <2 x i1> %extract, <2 x double> %shuffle, <2 x double> %__W851  ret <2 x double> %1852}853 854define <2 x double> @test_mm512_maskz_extractf64x2_pd(i8 %__U, <8 x double> %__A) {855; SKX-LABEL: test_mm512_maskz_extractf64x2_pd:856; SKX:       ## %bb.0: ## %entry857; SKX-NEXT:    kmovd %edi, %k1858; SKX-NEXT:    vextractf64x2 $3, %zmm0, %xmm0 {%k1} {z}859; SKX-NEXT:    vzeroupper860; SKX-NEXT:    retq861entry:862  %shuffle = shufflevector <8 x double> %__A, <8 x double> undef, <2 x i32> <i32 6, i32 7>863  %0 = bitcast i8 %__U to <8 x i1>864  %extract = shufflevector <8 x i1> %0, <8 x i1> undef, <2 x i32> <i32 0, i32 1>865  %1 = select <2 x i1> %extract, <2 x double> %shuffle, <2 x double> zeroinitializer866  ret <2 x double> %1867}868