brintos

brintos / llvm-project-archived public Read only

0
0
Text · 14.0 KiB · 19a6962 Raw
364 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-- -mattr=+sse2             | FileCheck %s --check-prefixes=SSE23; RUN: llc < %s -mtriple=x86_64-- -mattr=+sse4.2           | FileCheck %s --check-prefixes=SSE424; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx2             | FileCheck %s --check-prefixes=AVX25; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512f          | FileCheck %s --check-prefixes=AVX512F6; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512f,avx512vl | FileCheck %s --check-prefixes=AVX512VL7 8define <2 x i64> @select_cast_cond_multiuse_v2i64(<2 x i64> %x, <2 x i64> %y, i2 %m, ptr %o) {9; SSE2-LABEL: select_cast_cond_multiuse_v2i64:10; SSE2:       # %bb.0:11; SSE2-NEXT:    movd %edi, %xmm212; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,1,0,1]13; SSE2-NEXT:    movdqa {{.*#+}} xmm3 = [1,2]14; SSE2-NEXT:    pand %xmm3, %xmm215; SSE2-NEXT:    pcmpeqd %xmm3, %xmm216; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm2[1,0,3,2]17; SSE2-NEXT:    pand %xmm2, %xmm318; SSE2-NEXT:    pand %xmm3, %xmm019; SSE2-NEXT:    movdqa %xmm3, (%rsi)20; SSE2-NEXT:    pandn %xmm1, %xmm321; SSE2-NEXT:    por %xmm3, %xmm022; SSE2-NEXT:    retq23;24; SSE42-LABEL: select_cast_cond_multiuse_v2i64:25; SSE42:       # %bb.0:26; SSE42-NEXT:    movapd %xmm0, %xmm227; SSE42-NEXT:    movd %edi, %xmm028; SSE42-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,0,1]29; SSE42-NEXT:    pmovsxbq {{.*#+}} xmm3 = [1,2]30; SSE42-NEXT:    pand %xmm3, %xmm031; SSE42-NEXT:    pcmpeqq %xmm3, %xmm032; SSE42-NEXT:    blendvpd %xmm0, %xmm2, %xmm133; SSE42-NEXT:    movdqa %xmm0, (%rsi)34; SSE42-NEXT:    movapd %xmm1, %xmm035; SSE42-NEXT:    retq36;37; AVX2-LABEL: select_cast_cond_multiuse_v2i64:38; AVX2:       # %bb.0:39; AVX2-NEXT:    vmovd %edi, %xmm240; AVX2-NEXT:    vpbroadcastd %xmm2, %xmm241; AVX2-NEXT:    vpmovsxbq {{.*#+}} xmm3 = [1,2]42; AVX2-NEXT:    vpand %xmm3, %xmm2, %xmm243; AVX2-NEXT:    vpcmpeqq %xmm3, %xmm2, %xmm244; AVX2-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm045; AVX2-NEXT:    vmovdqa %xmm2, (%rsi)46; AVX2-NEXT:    retq47;48; AVX512F-LABEL: select_cast_cond_multiuse_v2i64:49; AVX512F:       # %bb.0:50; AVX512F-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm151; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm052; AVX512F-NEXT:    kmovw %edi, %k153; AVX512F-NEXT:    vpternlogq {{.*#+}} zmm2 {%k1} {z} = -154; AVX512F-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}55; AVX512F-NEXT:    vmovdqa %xmm2, (%rsi)56; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm057; AVX512F-NEXT:    vzeroupper58; AVX512F-NEXT:    retq59;60; AVX512VL-LABEL: select_cast_cond_multiuse_v2i64:61; AVX512VL:       # %bb.0:62; AVX512VL-NEXT:    kmovw %edi, %k163; AVX512VL-NEXT:    vpcmpeqd %xmm2, %xmm2, %xmm264; AVX512VL-NEXT:    vmovdqa64 %xmm2, %xmm2 {%k1} {z}65; AVX512VL-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}66; AVX512VL-NEXT:    vmovdqa %xmm2, (%rsi)67; AVX512VL-NEXT:    retq68  %z = bitcast i2 %m to <2 x i1>69  %s = sext <2 x i1> %z to <2 x i64>70  %v = select <2 x i1> %z, <2 x i64> %x, <2 x i64> %y71  store <2 x i64> %s, ptr %o72  ret <2 x i64> %v73}74 75define <4 x i32> @select_cast_cond_multiuse_v4i32(<4 x i32> %x, <4 x i32> %y, i4 %m, ptr %o) {76; SSE2-LABEL: select_cast_cond_multiuse_v4i32:77; SSE2:       # %bb.0:78; SSE2-NEXT:    movd %edi, %xmm279; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,0,0,0]80; SSE2-NEXT:    movdqa {{.*#+}} xmm3 = [1,2,4,8]81; SSE2-NEXT:    pand %xmm3, %xmm282; SSE2-NEXT:    pcmpeqd %xmm3, %xmm283; SSE2-NEXT:    pand %xmm2, %xmm084; SSE2-NEXT:    movdqa %xmm2, (%rsi)85; SSE2-NEXT:    pandn %xmm1, %xmm286; SSE2-NEXT:    por %xmm2, %xmm087; SSE2-NEXT:    retq88;89; SSE42-LABEL: select_cast_cond_multiuse_v4i32:90; SSE42:       # %bb.0:91; SSE42-NEXT:    movaps %xmm0, %xmm292; SSE42-NEXT:    movd %edi, %xmm093; SSE42-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]94; SSE42-NEXT:    pmovsxbd {{.*#+}} xmm3 = [1,2,4,8]95; SSE42-NEXT:    pand %xmm3, %xmm096; SSE42-NEXT:    pcmpeqd %xmm3, %xmm097; SSE42-NEXT:    blendvps %xmm0, %xmm2, %xmm198; SSE42-NEXT:    movdqa %xmm0, (%rsi)99; SSE42-NEXT:    movaps %xmm1, %xmm0100; SSE42-NEXT:    retq101;102; AVX2-LABEL: select_cast_cond_multiuse_v4i32:103; AVX2:       # %bb.0:104; AVX2-NEXT:    vmovd %edi, %xmm2105; AVX2-NEXT:    vpbroadcastd %xmm2, %xmm2106; AVX2-NEXT:    vpmovsxbd {{.*#+}} xmm3 = [1,2,4,8]107; AVX2-NEXT:    vpand %xmm3, %xmm2, %xmm2108; AVX2-NEXT:    vpcmpeqd %xmm3, %xmm2, %xmm2109; AVX2-NEXT:    vblendvps %xmm2, %xmm0, %xmm1, %xmm0110; AVX2-NEXT:    vmovdqa %xmm2, (%rsi)111; AVX2-NEXT:    retq112;113; AVX512F-LABEL: select_cast_cond_multiuse_v4i32:114; AVX512F:       # %bb.0:115; AVX512F-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1116; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0117; AVX512F-NEXT:    kmovw %edi, %k1118; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm2 {%k1} {z} = -1119; AVX512F-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}120; AVX512F-NEXT:    vmovdqa %xmm2, (%rsi)121; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0122; AVX512F-NEXT:    vzeroupper123; AVX512F-NEXT:    retq124;125; AVX512VL-LABEL: select_cast_cond_multiuse_v4i32:126; AVX512VL:       # %bb.0:127; AVX512VL-NEXT:    kmovw %edi, %k1128; AVX512VL-NEXT:    vpcmpeqd %xmm2, %xmm2, %xmm2129; AVX512VL-NEXT:    vmovdqa32 %xmm2, %xmm2 {%k1} {z}130; AVX512VL-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}131; AVX512VL-NEXT:    vmovdqa %xmm2, (%rsi)132; AVX512VL-NEXT:    retq133  %z = bitcast i4 %m to <4 x i1>134  %s = sext <4 x i1> %z to <4 x i32>135  %v = select <4 x i1> %z, <4 x i32> %x, <4 x i32> %y136  store <4 x i32> %s, ptr %o137  ret <4 x i32> %v138}139 140define <8 x i16> @select_cast_cond_multiuse_v8i16(<8 x i16> %x, <8 x i16> %y, i8 %m, ptr %o) {141; SSE2-LABEL: select_cast_cond_multiuse_v8i16:142; SSE2:       # %bb.0:143; SSE2-NEXT:    movd %edi, %xmm2144; SSE2-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,0,0,0,4,5,6,7]145; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,1,0,1]146; SSE2-NEXT:    movdqa {{.*#+}} xmm3 = [1,2,4,8,16,32,64,128]147; SSE2-NEXT:    pand %xmm3, %xmm2148; SSE2-NEXT:    pcmpeqw %xmm3, %xmm2149; SSE2-NEXT:    pand %xmm2, %xmm0150; SSE2-NEXT:    movdqa %xmm2, (%rsi)151; SSE2-NEXT:    pandn %xmm1, %xmm2152; SSE2-NEXT:    por %xmm2, %xmm0153; SSE2-NEXT:    retq154;155; SSE42-LABEL: select_cast_cond_multiuse_v8i16:156; SSE42:       # %bb.0:157; SSE42-NEXT:    movdqa %xmm0, %xmm2158; SSE42-NEXT:    movd %edi, %xmm0159; SSE42-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]160; SSE42-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,0,1]161; SSE42-NEXT:    pmovzxbw {{.*#+}} xmm3 = [1,2,4,8,16,32,64,128]162; SSE42-NEXT:    pand %xmm3, %xmm0163; SSE42-NEXT:    pcmpeqw %xmm3, %xmm0164; SSE42-NEXT:    pblendvb %xmm0, %xmm2, %xmm1165; SSE42-NEXT:    movdqa %xmm0, (%rsi)166; SSE42-NEXT:    movdqa %xmm1, %xmm0167; SSE42-NEXT:    retq168;169; AVX2-LABEL: select_cast_cond_multiuse_v8i16:170; AVX2:       # %bb.0:171; AVX2-NEXT:    vmovd %edi, %xmm2172; AVX2-NEXT:    vpbroadcastb %xmm2, %xmm2173; AVX2-NEXT:    vpmovzxbw {{.*#+}} xmm3 = [1,2,4,8,16,32,64,128]174; AVX2-NEXT:    vpand %xmm3, %xmm2, %xmm2175; AVX2-NEXT:    vpcmpeqw %xmm3, %xmm2, %xmm2176; AVX2-NEXT:    vpblendvb %xmm2, %xmm0, %xmm1, %xmm0177; AVX2-NEXT:    vmovdqa %xmm2, (%rsi)178; AVX2-NEXT:    retq179;180; AVX512F-LABEL: select_cast_cond_multiuse_v8i16:181; AVX512F:       # %bb.0:182; AVX512F-NEXT:    kmovw %edi, %k1183; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm2 {%k1} {z} = -1184; AVX512F-NEXT:    vpmovdw %zmm2, %ymm2185; AVX512F-NEXT:    vpblendvb %xmm2, %xmm0, %xmm1, %xmm0186; AVX512F-NEXT:    vmovdqa %xmm2, (%rsi)187; AVX512F-NEXT:    vzeroupper188; AVX512F-NEXT:    retq189;190; AVX512VL-LABEL: select_cast_cond_multiuse_v8i16:191; AVX512VL:       # %bb.0:192; AVX512VL-NEXT:    kmovw %edi, %k1193; AVX512VL-NEXT:    vpcmpeqd %ymm2, %ymm2, %ymm2194; AVX512VL-NEXT:    vmovdqa32 %ymm2, %ymm2 {%k1} {z}195; AVX512VL-NEXT:    vpmovdw %ymm2, %xmm2196; AVX512VL-NEXT:    vpternlogq {{.*#+}} xmm0 = xmm1 ^ (xmm2 & (xmm0 ^ xmm1))197; AVX512VL-NEXT:    vmovdqa %xmm2, (%rsi)198; AVX512VL-NEXT:    vzeroupper199; AVX512VL-NEXT:    retq200  %z = bitcast i8 %m to <8 x i1>201  %s = sext <8 x i1> %z to <8 x i16>202  %v = select <8 x i1> %z, <8 x i16> %x, <8 x i16> %y203  store <8 x i16> %s, ptr %o204  ret <8 x i16> %v205}206 207define <16 x i8> @select_cast_cond_multiuse_v16i8(<16 x i8> %x, <16 x i8> %y, i16 %m, ptr %o) {208; SSE2-LABEL: select_cast_cond_multiuse_v16i8:209; SSE2:       # %bb.0:210; SSE2-NEXT:    movd %edi, %xmm2211; SSE2-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]212; SSE2-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,0,1,1,4,5,6,7]213; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,0,1,1]214; SSE2-NEXT:    movdqa {{.*#+}} xmm3 = [1,2,4,8,16,32,64,128,1,2,4,8,16,32,64,128]215; SSE2-NEXT:    pand %xmm3, %xmm2216; SSE2-NEXT:    pcmpeqb %xmm3, %xmm2217; SSE2-NEXT:    pand %xmm2, %xmm0218; SSE2-NEXT:    movdqa %xmm2, (%rsi)219; SSE2-NEXT:    pandn %xmm1, %xmm2220; SSE2-NEXT:    por %xmm2, %xmm0221; SSE2-NEXT:    retq222;223; SSE42-LABEL: select_cast_cond_multiuse_v16i8:224; SSE42:       # %bb.0:225; SSE42-NEXT:    movdqa %xmm0, %xmm2226; SSE42-NEXT:    movd %edi, %xmm0227; SSE42-NEXT:    pshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1]228; SSE42-NEXT:    movdqa {{.*#+}} xmm3 = [1,2,4,8,16,32,64,128,1,2,4,8,16,32,64,128]229; SSE42-NEXT:    pand %xmm3, %xmm0230; SSE42-NEXT:    pcmpeqb %xmm3, %xmm0231; SSE42-NEXT:    pblendvb %xmm0, %xmm2, %xmm1232; SSE42-NEXT:    movdqa %xmm0, (%rsi)233; SSE42-NEXT:    movdqa %xmm1, %xmm0234; SSE42-NEXT:    retq235;236; AVX2-LABEL: select_cast_cond_multiuse_v16i8:237; AVX2:       # %bb.0:238; AVX2-NEXT:    vmovd %edi, %xmm2239; AVX2-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1]240; AVX2-NEXT:    vpbroadcastq {{.*#+}} xmm3 = [1,2,4,8,16,32,64,128,1,2,4,8,16,32,64,128]241; AVX2-NEXT:    vpand %xmm3, %xmm2, %xmm2242; AVX2-NEXT:    vpcmpeqb %xmm3, %xmm2, %xmm2243; AVX2-NEXT:    vpblendvb %xmm2, %xmm0, %xmm1, %xmm0244; AVX2-NEXT:    vmovdqa %xmm2, (%rsi)245; AVX2-NEXT:    retq246;247; AVX512F-LABEL: select_cast_cond_multiuse_v16i8:248; AVX512F:       # %bb.0:249; AVX512F-NEXT:    kmovw %edi, %k1250; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm2 {%k1} {z} = -1251; AVX512F-NEXT:    vpmovdb %zmm2, %xmm2252; AVX512F-NEXT:    vpblendvb %xmm2, %xmm0, %xmm1, %xmm0253; AVX512F-NEXT:    vmovdqa %xmm2, (%rsi)254; AVX512F-NEXT:    vzeroupper255; AVX512F-NEXT:    retq256;257; AVX512VL-LABEL: select_cast_cond_multiuse_v16i8:258; AVX512VL:       # %bb.0:259; AVX512VL-NEXT:    kmovw %edi, %k1260; AVX512VL-NEXT:    vpternlogd {{.*#+}} zmm2 {%k1} {z} = -1261; AVX512VL-NEXT:    vpmovdb %zmm2, %xmm2262; AVX512VL-NEXT:    vpternlogq {{.*#+}} xmm0 = xmm1 ^ (xmm2 & (xmm0 ^ xmm1))263; AVX512VL-NEXT:    vmovdqa %xmm2, (%rsi)264; AVX512VL-NEXT:    vzeroupper265; AVX512VL-NEXT:    retq266  %z = bitcast i16 %m to <16 x i1>267  %s = sext <16 x i1> %z to <16 x i8>268  %v = select <16 x i1> %z, <16 x i8> %x, <16 x i8> %y269  store <16 x i8> %s, ptr %o270  ret <16 x i8> %v271}272 273define <8 x float> @select_cast_cond_multiuse_v8i16_v8f32(<8 x float> %x, <8 x float> %y, i8 %m, ptr %o) {274; SSE2-LABEL: select_cast_cond_multiuse_v8i16_v8f32:275; SSE2:       # %bb.0:276; SSE2-NEXT:    movd %edi, %xmm4277; SSE2-NEXT:    pshuflw {{.*#+}} xmm5 = xmm4[0,0,0,0,4,5,6,7]278; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,1,0,1]279; SSE2-NEXT:    movdqa {{.*#+}} xmm6 = [1,2,4,8,16,32,64,128]280; SSE2-NEXT:    pand %xmm6, %xmm5281; SSE2-NEXT:    pcmpeqw %xmm6, %xmm5282; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[0,0,0,0]283; SSE2-NEXT:    movdqa {{.*#+}} xmm6 = [1,2,4,8]284; SSE2-NEXT:    movdqa %xmm4, %xmm7285; SSE2-NEXT:    pand %xmm6, %xmm7286; SSE2-NEXT:    pcmpeqd %xmm6, %xmm7287; SSE2-NEXT:    pand %xmm7, %xmm0288; SSE2-NEXT:    pandn %xmm2, %xmm7289; SSE2-NEXT:    por %xmm7, %xmm0290; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [16,32,64,128]291; SSE2-NEXT:    pand %xmm2, %xmm4292; SSE2-NEXT:    pcmpeqd %xmm2, %xmm4293; SSE2-NEXT:    pand %xmm4, %xmm1294; SSE2-NEXT:    pandn %xmm3, %xmm4295; SSE2-NEXT:    por %xmm4, %xmm1296; SSE2-NEXT:    movdqa %xmm5, (%rsi)297; SSE2-NEXT:    retq298;299; SSE42-LABEL: select_cast_cond_multiuse_v8i16_v8f32:300; SSE42:       # %bb.0:301; SSE42-NEXT:    movaps %xmm0, %xmm4302; SSE42-NEXT:    movd %edi, %xmm0303; SSE42-NEXT:    pshuflw {{.*#+}} xmm5 = xmm0[0,0,0,0,4,5,6,7]304; SSE42-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,1,0,1]305; SSE42-NEXT:    pmovzxbw {{.*#+}} xmm5 = [1,2,4,8,16,32,64,128]306; SSE42-NEXT:    pand %xmm5, %xmm6307; SSE42-NEXT:    pcmpeqw %xmm5, %xmm6308; SSE42-NEXT:    pshufd {{.*#+}} xmm5 = xmm0[0,0,0,0]309; SSE42-NEXT:    pmovsxbd {{.*#+}} xmm7 = [1,2,4,8]310; SSE42-NEXT:    movdqa %xmm5, %xmm0311; SSE42-NEXT:    pand %xmm7, %xmm0312; SSE42-NEXT:    pcmpeqd %xmm7, %xmm0313; SSE42-NEXT:    blendvps %xmm0, %xmm4, %xmm2314; SSE42-NEXT:    pmovzxbd {{.*#+}} xmm0 = [16,32,64,128]315; SSE42-NEXT:    pand %xmm0, %xmm5316; SSE42-NEXT:    pcmpeqd %xmm0, %xmm5317; SSE42-NEXT:    movdqa %xmm5, %xmm0318; SSE42-NEXT:    blendvps %xmm0, %xmm1, %xmm3319; SSE42-NEXT:    movdqa %xmm6, (%rsi)320; SSE42-NEXT:    movaps %xmm2, %xmm0321; SSE42-NEXT:    movaps %xmm3, %xmm1322; SSE42-NEXT:    retq323;324; AVX2-LABEL: select_cast_cond_multiuse_v8i16_v8f32:325; AVX2:       # %bb.0:326; AVX2-NEXT:    vmovd %edi, %xmm2327; AVX2-NEXT:    vpbroadcastb %xmm2, %ymm2328; AVX2-NEXT:    vpmovzxbw {{.*#+}} xmm3 = [1,2,4,8,16,32,64,128]329; AVX2-NEXT:    vpand %xmm3, %xmm2, %xmm4330; AVX2-NEXT:    vpcmpeqw %xmm3, %xmm4, %xmm3331; AVX2-NEXT:    vpmovzxbd {{.*#+}} ymm4 = [1,2,4,8,16,32,64,128]332; AVX2-NEXT:    vpand %ymm4, %ymm2, %ymm2333; AVX2-NEXT:    vpcmpeqd %ymm4, %ymm2, %ymm2334; AVX2-NEXT:    vblendvps %ymm2, %ymm0, %ymm1, %ymm0335; AVX2-NEXT:    vmovdqa %xmm3, (%rsi)336; AVX2-NEXT:    retq337;338; AVX512F-LABEL: select_cast_cond_multiuse_v8i16_v8f32:339; AVX512F:       # %bb.0:340; AVX512F-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1341; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0342; AVX512F-NEXT:    kmovw %edi, %k1343; AVX512F-NEXT:    vpternlogd {{.*#+}} zmm2 {%k1} {z} = -1344; AVX512F-NEXT:    vpmovdw %zmm2, %ymm2345; AVX512F-NEXT:    vblendmps %zmm0, %zmm1, %zmm0 {%k1}346; AVX512F-NEXT:    vmovdqa %xmm2, (%rsi)347; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0348; AVX512F-NEXT:    retq349;350; AVX512VL-LABEL: select_cast_cond_multiuse_v8i16_v8f32:351; AVX512VL:       # %bb.0:352; AVX512VL-NEXT:    kmovw %edi, %k1353; AVX512VL-NEXT:    vpcmpeqd %ymm2, %ymm2, %ymm2354; AVX512VL-NEXT:    vmovdqa32 %ymm2, %ymm2 {%k1} {z}355; AVX512VL-NEXT:    vblendmps %ymm0, %ymm1, %ymm0 {%k1}356; AVX512VL-NEXT:    vpmovdw %ymm2, (%rsi)357; AVX512VL-NEXT:    retq358  %z = bitcast i8 %m to <8 x i1>359  %s = sext <8 x i1> %z to <8 x i16>360  %v = select <8 x i1> %z, <8 x float> %x, <8 x float> %y361  store <8 x i16> %s, ptr %o362  ret <8 x float> %v363}364