brintos

brintos / llvm-project-archived public Read only

0
0
Text · 160.7 KiB · e81a983 Raw
4120 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --no_x86_scrub_mem_shuffle2; RUN: llc < %s -disable-peephole -mtriple=x86_64-apple-darwin -mattr=sse2    | FileCheck %s --check-prefixes=SSE,SSE23; RUN: llc < %s -disable-peephole -mtriple=x86_64-apple-darwin -mattr=sse4.2  | FileCheck %s --check-prefixes=SSE,SSE424; RUN: llc < %s -disable-peephole -mtriple=x86_64-apple-darwin -mattr=avx     | FileCheck %s --check-prefixes=AVX1OR2,AVX15; RUN: llc < %s -disable-peephole -mtriple=x86_64-apple-darwin -mattr=avx2    | FileCheck %s --check-prefixes=AVX1OR2,AVX26; RUN: llc < %s -disable-peephole -mtriple=x86_64-apple-darwin -mattr=avx512f | FileCheck %s --check-prefixes=AVX512,AVX512F7; RUN: llc < %s -disable-peephole -mtriple=x86_64-apple-darwin -mattr=avx512f,avx512dq,avx512vl | FileCheck %s --check-prefixes=AVX512,AVX512VL,AVX512VLDQ8; RUN: llc < %s -disable-peephole -mtriple=x86_64-apple-darwin -mattr=avx512f,avx512bw,avx512vl | FileCheck %s --check-prefixes=AVX512,AVX512VL,AVX512VLBW9 10;11; vXf6412;13 14define <2 x double> @expandload_v2f64_v2i64(ptr %base, <2 x double> %src0, <2 x i64> %trigger) {15; SSE2-LABEL: expandload_v2f64_v2i64:16; SSE2:       ## %bb.0:17; SSE2-NEXT:    pxor %xmm2, %xmm218; SSE2-NEXT:    pcmpeqd %xmm1, %xmm219; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm2[1,0,3,2]20; SSE2-NEXT:    pand %xmm2, %xmm121; SSE2-NEXT:    movmskpd %xmm1, %eax22; SSE2-NEXT:    testb $1, %al23; SSE2-NEXT:    jne LBB0_124; SSE2-NEXT:  ## %bb.2: ## %else25; SSE2-NEXT:    testb $2, %al26; SSE2-NEXT:    jne LBB0_327; SSE2-NEXT:  LBB0_4: ## %else228; SSE2-NEXT:    retq29; SSE2-NEXT:  LBB0_1: ## %cond.load30; SSE2-NEXT:    movlps (%rdi), %xmm0 ## xmm0 = mem[0,1],xmm0[2,3]31; SSE2-NEXT:    addq $8, %rdi32; SSE2-NEXT:    testb $2, %al33; SSE2-NEXT:    je LBB0_434; SSE2-NEXT:  LBB0_3: ## %cond.load135; SSE2-NEXT:    movhps (%rdi), %xmm0 ## xmm0 = xmm0[0,1],mem[0,1]36; SSE2-NEXT:    retq37;38; SSE42-LABEL: expandload_v2f64_v2i64:39; SSE42:       ## %bb.0:40; SSE42-NEXT:    pxor %xmm2, %xmm241; SSE42-NEXT:    pcmpeqq %xmm1, %xmm242; SSE42-NEXT:    movmskpd %xmm2, %eax43; SSE42-NEXT:    testb $1, %al44; SSE42-NEXT:    jne LBB0_145; SSE42-NEXT:  ## %bb.2: ## %else46; SSE42-NEXT:    testb $2, %al47; SSE42-NEXT:    jne LBB0_348; SSE42-NEXT:  LBB0_4: ## %else249; SSE42-NEXT:    retq50; SSE42-NEXT:  LBB0_1: ## %cond.load51; SSE42-NEXT:    movlps (%rdi), %xmm0 ## xmm0 = mem[0,1],xmm0[2,3]52; SSE42-NEXT:    addq $8, %rdi53; SSE42-NEXT:    testb $2, %al54; SSE42-NEXT:    je LBB0_455; SSE42-NEXT:  LBB0_3: ## %cond.load156; SSE42-NEXT:    movhps (%rdi), %xmm0 ## xmm0 = xmm0[0,1],mem[0,1]57; SSE42-NEXT:    retq58;59; AVX1OR2-LABEL: expandload_v2f64_v2i64:60; AVX1OR2:       ## %bb.0:61; AVX1OR2-NEXT:    vpxor %xmm2, %xmm2, %xmm262; AVX1OR2-NEXT:    vpcmpeqq %xmm2, %xmm1, %xmm163; AVX1OR2-NEXT:    vmovmskpd %xmm1, %eax64; AVX1OR2-NEXT:    testb $1, %al65; AVX1OR2-NEXT:    jne LBB0_166; AVX1OR2-NEXT:  ## %bb.2: ## %else67; AVX1OR2-NEXT:    testb $2, %al68; AVX1OR2-NEXT:    jne LBB0_369; AVX1OR2-NEXT:  LBB0_4: ## %else270; AVX1OR2-NEXT:    retq71; AVX1OR2-NEXT:  LBB0_1: ## %cond.load72; AVX1OR2-NEXT:    vmovlps (%rdi), %xmm0, %xmm0 ## xmm0 = mem[0,1],xmm0[2,3]73; AVX1OR2-NEXT:    addq $8, %rdi74; AVX1OR2-NEXT:    testb $2, %al75; AVX1OR2-NEXT:    je LBB0_476; AVX1OR2-NEXT:  LBB0_3: ## %cond.load177; AVX1OR2-NEXT:    vmovhps (%rdi), %xmm0, %xmm0 ## xmm0 = xmm0[0,1],mem[0,1]78; AVX1OR2-NEXT:    retq79;80; AVX512F-LABEL: expandload_v2f64_v2i64:81; AVX512F:       ## %bb.0:82; AVX512F-NEXT:    ## kill: def $xmm1 killed $xmm1 def $zmm183; AVX512F-NEXT:    ## kill: def $xmm0 killed $xmm0 def $zmm084; AVX512F-NEXT:    vptestnmq %zmm1, %zmm1, %k085; AVX512F-NEXT:    kshiftlw $14, %k0, %k086; AVX512F-NEXT:    kshiftrw $14, %k0, %k187; AVX512F-NEXT:    vexpandpd (%rdi), %zmm0 {%k1}88; AVX512F-NEXT:    ## kill: def $xmm0 killed $xmm0 killed $zmm089; AVX512F-NEXT:    vzeroupper90; AVX512F-NEXT:    retq91;92; AVX512VL-LABEL: expandload_v2f64_v2i64:93; AVX512VL:       ## %bb.0:94; AVX512VL-NEXT:    vptestnmq %xmm1, %xmm1, %k195; AVX512VL-NEXT:    vexpandpd (%rdi), %xmm0 {%k1}96; AVX512VL-NEXT:    retq97  %mask = icmp eq <2 x i64> %trigger, zeroinitializer98  %res = call <2 x double> @llvm.masked.expandload.v2f64(ptr %base, <2 x i1> %mask, <2 x double> %src0)99  ret <2 x double>%res100}101 102define <4 x double> @expandload_v4f64_v4i64(ptr %base, <4 x double> %src0, <4 x i64> %trigger) {103; SSE2-LABEL: expandload_v4f64_v4i64:104; SSE2:       ## %bb.0:105; SSE2-NEXT:    pxor %xmm4, %xmm4106; SSE2-NEXT:    pcmpeqd %xmm4, %xmm3107; SSE2-NEXT:    pcmpeqd %xmm4, %xmm2108; SSE2-NEXT:    movdqa %xmm2, %xmm4109; SSE2-NEXT:    shufps {{.*#+}} xmm4 = xmm4[1,3],xmm3[1,3]110; SSE2-NEXT:    shufps {{.*#+}} xmm2 = xmm2[0,2],xmm3[0,2]111; SSE2-NEXT:    andps %xmm4, %xmm2112; SSE2-NEXT:    movmskps %xmm2, %eax113; SSE2-NEXT:    testb $1, %al114; SSE2-NEXT:    jne LBB1_1115; SSE2-NEXT:  ## %bb.2: ## %else116; SSE2-NEXT:    testb $2, %al117; SSE2-NEXT:    jne LBB1_3118; SSE2-NEXT:  LBB1_4: ## %else2119; SSE2-NEXT:    testb $4, %al120; SSE2-NEXT:    jne LBB1_5121; SSE2-NEXT:  LBB1_6: ## %else6122; SSE2-NEXT:    testb $8, %al123; SSE2-NEXT:    jne LBB1_7124; SSE2-NEXT:  LBB1_8: ## %else10125; SSE2-NEXT:    retq126; SSE2-NEXT:  LBB1_1: ## %cond.load127; SSE2-NEXT:    movlps (%rdi), %xmm0 ## xmm0 = mem[0,1],xmm0[2,3]128; SSE2-NEXT:    addq $8, %rdi129; SSE2-NEXT:    testb $2, %al130; SSE2-NEXT:    je LBB1_4131; SSE2-NEXT:  LBB1_3: ## %cond.load1132; SSE2-NEXT:    movhps (%rdi), %xmm0 ## xmm0 = xmm0[0,1],mem[0,1]133; SSE2-NEXT:    addq $8, %rdi134; SSE2-NEXT:    testb $4, %al135; SSE2-NEXT:    je LBB1_6136; SSE2-NEXT:  LBB1_5: ## %cond.load5137; SSE2-NEXT:    movlps (%rdi), %xmm1 ## xmm1 = mem[0,1],xmm1[2,3]138; SSE2-NEXT:    addq $8, %rdi139; SSE2-NEXT:    testb $8, %al140; SSE2-NEXT:    je LBB1_8141; SSE2-NEXT:  LBB1_7: ## %cond.load9142; SSE2-NEXT:    movhps (%rdi), %xmm1 ## xmm1 = xmm1[0,1],mem[0,1]143; SSE2-NEXT:    retq144;145; SSE42-LABEL: expandload_v4f64_v4i64:146; SSE42:       ## %bb.0:147; SSE42-NEXT:    pxor %xmm4, %xmm4148; SSE42-NEXT:    pcmpeqq %xmm4, %xmm3149; SSE42-NEXT:    pcmpeqq %xmm4, %xmm2150; SSE42-NEXT:    packssdw %xmm3, %xmm2151; SSE42-NEXT:    movmskps %xmm2, %eax152; SSE42-NEXT:    testb $1, %al153; SSE42-NEXT:    jne LBB1_1154; SSE42-NEXT:  ## %bb.2: ## %else155; SSE42-NEXT:    testb $2, %al156; SSE42-NEXT:    jne LBB1_3157; SSE42-NEXT:  LBB1_4: ## %else2158; SSE42-NEXT:    testb $4, %al159; SSE42-NEXT:    jne LBB1_5160; SSE42-NEXT:  LBB1_6: ## %else6161; SSE42-NEXT:    testb $8, %al162; SSE42-NEXT:    jne LBB1_7163; SSE42-NEXT:  LBB1_8: ## %else10164; SSE42-NEXT:    retq165; SSE42-NEXT:  LBB1_1: ## %cond.load166; SSE42-NEXT:    movlps (%rdi), %xmm0 ## xmm0 = mem[0,1],xmm0[2,3]167; SSE42-NEXT:    addq $8, %rdi168; SSE42-NEXT:    testb $2, %al169; SSE42-NEXT:    je LBB1_4170; SSE42-NEXT:  LBB1_3: ## %cond.load1171; SSE42-NEXT:    movhps (%rdi), %xmm0 ## xmm0 = xmm0[0,1],mem[0,1]172; SSE42-NEXT:    addq $8, %rdi173; SSE42-NEXT:    testb $4, %al174; SSE42-NEXT:    je LBB1_6175; SSE42-NEXT:  LBB1_5: ## %cond.load5176; SSE42-NEXT:    movlps (%rdi), %xmm1 ## xmm1 = mem[0,1],xmm1[2,3]177; SSE42-NEXT:    addq $8, %rdi178; SSE42-NEXT:    testb $8, %al179; SSE42-NEXT:    je LBB1_8180; SSE42-NEXT:  LBB1_7: ## %cond.load9181; SSE42-NEXT:    movhps (%rdi), %xmm1 ## xmm1 = xmm1[0,1],mem[0,1]182; SSE42-NEXT:    retq183;184; AVX1-LABEL: expandload_v4f64_v4i64:185; AVX1:       ## %bb.0:186; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2187; AVX1-NEXT:    vpxor %xmm3, %xmm3, %xmm3188; AVX1-NEXT:    vpcmpeqq %xmm3, %xmm2, %xmm2189; AVX1-NEXT:    vpcmpeqq %xmm3, %xmm1, %xmm1190; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm1191; AVX1-NEXT:    vmovmskpd %ymm1, %eax192; AVX1-NEXT:    testb $1, %al193; AVX1-NEXT:    jne LBB1_1194; AVX1-NEXT:  ## %bb.2: ## %else195; AVX1-NEXT:    testb $2, %al196; AVX1-NEXT:    jne LBB1_3197; AVX1-NEXT:  LBB1_4: ## %else2198; AVX1-NEXT:    testb $4, %al199; AVX1-NEXT:    jne LBB1_5200; AVX1-NEXT:  LBB1_6: ## %else6201; AVX1-NEXT:    testb $8, %al202; AVX1-NEXT:    jne LBB1_7203; AVX1-NEXT:  LBB1_8: ## %else10204; AVX1-NEXT:    retq205; AVX1-NEXT:  LBB1_1: ## %cond.load206; AVX1-NEXT:    vmovsd (%rdi), %xmm1 ## xmm1 = mem[0],zero207; AVX1-NEXT:    vblendpd {{.*#+}} ymm0 = ymm1[0],ymm0[1,2,3]208; AVX1-NEXT:    addq $8, %rdi209; AVX1-NEXT:    testb $2, %al210; AVX1-NEXT:    je LBB1_4211; AVX1-NEXT:  LBB1_3: ## %cond.load1212; AVX1-NEXT:    vmovhpd (%rdi), %xmm0, %xmm1 ## xmm1 = xmm0[0],mem[0]213; AVX1-NEXT:    vblendpd {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3]214; AVX1-NEXT:    addq $8, %rdi215; AVX1-NEXT:    testb $4, %al216; AVX1-NEXT:    je LBB1_6217; AVX1-NEXT:  LBB1_5: ## %cond.load5218; AVX1-NEXT:    vbroadcastsd (%rdi), %ymm1219; AVX1-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2],ymm0[3]220; AVX1-NEXT:    addq $8, %rdi221; AVX1-NEXT:    testb $8, %al222; AVX1-NEXT:    je LBB1_8223; AVX1-NEXT:  LBB1_7: ## %cond.load9224; AVX1-NEXT:    vbroadcastsd (%rdi), %ymm1225; AVX1-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0,1,2],ymm1[3]226; AVX1-NEXT:    retq227;228; AVX2-LABEL: expandload_v4f64_v4i64:229; AVX2:       ## %bb.0:230; AVX2-NEXT:    vpxor %xmm2, %xmm2, %xmm2231; AVX2-NEXT:    vpcmpeqq %ymm2, %ymm1, %ymm1232; AVX2-NEXT:    vmovmskpd %ymm1, %eax233; AVX2-NEXT:    testb $1, %al234; AVX2-NEXT:    jne LBB1_1235; AVX2-NEXT:  ## %bb.2: ## %else236; AVX2-NEXT:    testb $2, %al237; AVX2-NEXT:    jne LBB1_3238; AVX2-NEXT:  LBB1_4: ## %else2239; AVX2-NEXT:    testb $4, %al240; AVX2-NEXT:    jne LBB1_5241; AVX2-NEXT:  LBB1_6: ## %else6242; AVX2-NEXT:    testb $8, %al243; AVX2-NEXT:    jne LBB1_7244; AVX2-NEXT:  LBB1_8: ## %else10245; AVX2-NEXT:    retq246; AVX2-NEXT:  LBB1_1: ## %cond.load247; AVX2-NEXT:    vmovsd (%rdi), %xmm1 ## xmm1 = mem[0],zero248; AVX2-NEXT:    vblendpd {{.*#+}} ymm0 = ymm1[0],ymm0[1,2,3]249; AVX2-NEXT:    addq $8, %rdi250; AVX2-NEXT:    testb $2, %al251; AVX2-NEXT:    je LBB1_4252; AVX2-NEXT:  LBB1_3: ## %cond.load1253; AVX2-NEXT:    vmovhpd (%rdi), %xmm0, %xmm1 ## xmm1 = xmm0[0],mem[0]254; AVX2-NEXT:    vblendpd {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3]255; AVX2-NEXT:    addq $8, %rdi256; AVX2-NEXT:    testb $4, %al257; AVX2-NEXT:    je LBB1_6258; AVX2-NEXT:  LBB1_5: ## %cond.load5259; AVX2-NEXT:    vbroadcastsd (%rdi), %ymm1260; AVX2-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2],ymm0[3]261; AVX2-NEXT:    addq $8, %rdi262; AVX2-NEXT:    testb $8, %al263; AVX2-NEXT:    je LBB1_8264; AVX2-NEXT:  LBB1_7: ## %cond.load9265; AVX2-NEXT:    vbroadcastsd (%rdi), %ymm1266; AVX2-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0,1,2],ymm1[3]267; AVX2-NEXT:    retq268;269; AVX512F-LABEL: expandload_v4f64_v4i64:270; AVX512F:       ## %bb.0:271; AVX512F-NEXT:    ## kill: def $ymm1 killed $ymm1 def $zmm1272; AVX512F-NEXT:    ## kill: def $ymm0 killed $ymm0 def $zmm0273; AVX512F-NEXT:    vptestnmq %zmm1, %zmm1, %k0274; AVX512F-NEXT:    kshiftlw $12, %k0, %k0275; AVX512F-NEXT:    kshiftrw $12, %k0, %k1276; AVX512F-NEXT:    vexpandpd (%rdi), %zmm0 {%k1}277; AVX512F-NEXT:    ## kill: def $ymm0 killed $ymm0 killed $zmm0278; AVX512F-NEXT:    retq279;280; AVX512VL-LABEL: expandload_v4f64_v4i64:281; AVX512VL:       ## %bb.0:282; AVX512VL-NEXT:    vptestnmq %ymm1, %ymm1, %k1283; AVX512VL-NEXT:    vexpandpd (%rdi), %ymm0 {%k1}284; AVX512VL-NEXT:    retq285  %mask = icmp eq <4 x i64> %trigger, zeroinitializer286  %res = call <4 x double> @llvm.masked.expandload.v4f64(ptr %base, <4 x i1> %mask, <4 x double> %src0)287  ret <4 x double>%res288}289 290define <8 x double> @expandload_v8f64_v8i1(ptr %base, <8 x double> %src0, <8 x i1> %mask) {291; SSE-LABEL: expandload_v8f64_v8i1:292; SSE:       ## %bb.0:293; SSE-NEXT:    psllw $15, %xmm4294; SSE-NEXT:    packsswb %xmm4, %xmm4295; SSE-NEXT:    pmovmskb %xmm4, %eax296; SSE-NEXT:    testb $1, %al297; SSE-NEXT:    jne LBB2_1298; SSE-NEXT:  ## %bb.2: ## %else299; SSE-NEXT:    testb $2, %al300; SSE-NEXT:    jne LBB2_3301; SSE-NEXT:  LBB2_4: ## %else2302; SSE-NEXT:    testb $4, %al303; SSE-NEXT:    jne LBB2_5304; SSE-NEXT:  LBB2_6: ## %else6305; SSE-NEXT:    testb $8, %al306; SSE-NEXT:    jne LBB2_7307; SSE-NEXT:  LBB2_8: ## %else10308; SSE-NEXT:    testb $16, %al309; SSE-NEXT:    jne LBB2_9310; SSE-NEXT:  LBB2_10: ## %else14311; SSE-NEXT:    testb $32, %al312; SSE-NEXT:    jne LBB2_11313; SSE-NEXT:  LBB2_12: ## %else18314; SSE-NEXT:    testb $64, %al315; SSE-NEXT:    jne LBB2_13316; SSE-NEXT:  LBB2_14: ## %else22317; SSE-NEXT:    testb $-128, %al318; SSE-NEXT:    jne LBB2_15319; SSE-NEXT:  LBB2_16: ## %else26320; SSE-NEXT:    retq321; SSE-NEXT:  LBB2_1: ## %cond.load322; SSE-NEXT:    movlps (%rdi), %xmm0 ## xmm0 = mem[0,1],xmm0[2,3]323; SSE-NEXT:    addq $8, %rdi324; SSE-NEXT:    testb $2, %al325; SSE-NEXT:    je LBB2_4326; SSE-NEXT:  LBB2_3: ## %cond.load1327; SSE-NEXT:    movhps (%rdi), %xmm0 ## xmm0 = xmm0[0,1],mem[0,1]328; SSE-NEXT:    addq $8, %rdi329; SSE-NEXT:    testb $4, %al330; SSE-NEXT:    je LBB2_6331; SSE-NEXT:  LBB2_5: ## %cond.load5332; SSE-NEXT:    movlps (%rdi), %xmm1 ## xmm1 = mem[0,1],xmm1[2,3]333; SSE-NEXT:    addq $8, %rdi334; SSE-NEXT:    testb $8, %al335; SSE-NEXT:    je LBB2_8336; SSE-NEXT:  LBB2_7: ## %cond.load9337; SSE-NEXT:    movhps (%rdi), %xmm1 ## xmm1 = xmm1[0,1],mem[0,1]338; SSE-NEXT:    addq $8, %rdi339; SSE-NEXT:    testb $16, %al340; SSE-NEXT:    je LBB2_10341; SSE-NEXT:  LBB2_9: ## %cond.load13342; SSE-NEXT:    movlps (%rdi), %xmm2 ## xmm2 = mem[0,1],xmm2[2,3]343; SSE-NEXT:    addq $8, %rdi344; SSE-NEXT:    testb $32, %al345; SSE-NEXT:    je LBB2_12346; SSE-NEXT:  LBB2_11: ## %cond.load17347; SSE-NEXT:    movhps (%rdi), %xmm2 ## xmm2 = xmm2[0,1],mem[0,1]348; SSE-NEXT:    addq $8, %rdi349; SSE-NEXT:    testb $64, %al350; SSE-NEXT:    je LBB2_14351; SSE-NEXT:  LBB2_13: ## %cond.load21352; SSE-NEXT:    movlps (%rdi), %xmm3 ## xmm3 = mem[0,1],xmm3[2,3]353; SSE-NEXT:    addq $8, %rdi354; SSE-NEXT:    testb $-128, %al355; SSE-NEXT:    je LBB2_16356; SSE-NEXT:  LBB2_15: ## %cond.load25357; SSE-NEXT:    movhps (%rdi), %xmm3 ## xmm3 = xmm3[0,1],mem[0,1]358; SSE-NEXT:    retq359;360; AVX1-LABEL: expandload_v8f64_v8i1:361; AVX1:       ## %bb.0:362; AVX1-NEXT:    vpsllw $15, %xmm2, %xmm2363; AVX1-NEXT:    vpacksswb %xmm2, %xmm2, %xmm2364; AVX1-NEXT:    vpmovmskb %xmm2, %eax365; AVX1-NEXT:    testb $1, %al366; AVX1-NEXT:    jne LBB2_1367; AVX1-NEXT:  ## %bb.2: ## %else368; AVX1-NEXT:    testb $2, %al369; AVX1-NEXT:    jne LBB2_3370; AVX1-NEXT:  LBB2_4: ## %else2371; AVX1-NEXT:    testb $4, %al372; AVX1-NEXT:    jne LBB2_5373; AVX1-NEXT:  LBB2_6: ## %else6374; AVX1-NEXT:    testb $8, %al375; AVX1-NEXT:    jne LBB2_7376; AVX1-NEXT:  LBB2_8: ## %else10377; AVX1-NEXT:    testb $16, %al378; AVX1-NEXT:    jne LBB2_9379; AVX1-NEXT:  LBB2_10: ## %else14380; AVX1-NEXT:    testb $32, %al381; AVX1-NEXT:    jne LBB2_11382; AVX1-NEXT:  LBB2_12: ## %else18383; AVX1-NEXT:    testb $64, %al384; AVX1-NEXT:    jne LBB2_13385; AVX1-NEXT:  LBB2_14: ## %else22386; AVX1-NEXT:    testb $-128, %al387; AVX1-NEXT:    jne LBB2_15388; AVX1-NEXT:  LBB2_16: ## %else26389; AVX1-NEXT:    retq390; AVX1-NEXT:  LBB2_1: ## %cond.load391; AVX1-NEXT:    vmovsd (%rdi), %xmm2 ## xmm2 = mem[0],zero392; AVX1-NEXT:    vblendps {{.*#+}} ymm0 = ymm2[0,1],ymm0[2,3,4,5,6,7]393; AVX1-NEXT:    addq $8, %rdi394; AVX1-NEXT:    testb $2, %al395; AVX1-NEXT:    je LBB2_4396; AVX1-NEXT:  LBB2_3: ## %cond.load1397; AVX1-NEXT:    vmovhps (%rdi), %xmm0, %xmm2 ## xmm2 = xmm0[0,1],mem[0,1]398; AVX1-NEXT:    vblendps {{.*#+}} ymm0 = ymm2[0,1,2,3],ymm0[4,5,6,7]399; AVX1-NEXT:    addq $8, %rdi400; AVX1-NEXT:    testb $4, %al401; AVX1-NEXT:    je LBB2_6402; AVX1-NEXT:  LBB2_5: ## %cond.load5403; AVX1-NEXT:    vbroadcastsd (%rdi), %ymm2404; AVX1-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm2[4,5],ymm0[6,7]405; AVX1-NEXT:    addq $8, %rdi406; AVX1-NEXT:    testb $8, %al407; AVX1-NEXT:    je LBB2_8408; AVX1-NEXT:  LBB2_7: ## %cond.load9409; AVX1-NEXT:    vbroadcastsd (%rdi), %ymm2410; AVX1-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5],ymm2[6,7]411; AVX1-NEXT:    addq $8, %rdi412; AVX1-NEXT:    testb $16, %al413; AVX1-NEXT:    je LBB2_10414; AVX1-NEXT:  LBB2_9: ## %cond.load13415; AVX1-NEXT:    vmovsd (%rdi), %xmm2 ## xmm2 = mem[0],zero416; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1],ymm1[2,3,4,5,6,7]417; AVX1-NEXT:    addq $8, %rdi418; AVX1-NEXT:    testb $32, %al419; AVX1-NEXT:    je LBB2_12420; AVX1-NEXT:  LBB2_11: ## %cond.load17421; AVX1-NEXT:    vmovhps (%rdi), %xmm1, %xmm2 ## xmm2 = xmm1[0,1],mem[0,1]422; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]423; AVX1-NEXT:    addq $8, %rdi424; AVX1-NEXT:    testb $64, %al425; AVX1-NEXT:    je LBB2_14426; AVX1-NEXT:  LBB2_13: ## %cond.load21427; AVX1-NEXT:    vbroadcastsd (%rdi), %ymm2428; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm2[4,5],ymm1[6,7]429; AVX1-NEXT:    addq $8, %rdi430; AVX1-NEXT:    testb $-128, %al431; AVX1-NEXT:    je LBB2_16432; AVX1-NEXT:  LBB2_15: ## %cond.load25433; AVX1-NEXT:    vbroadcastsd (%rdi), %ymm2434; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3,4,5],ymm2[6,7]435; AVX1-NEXT:    retq436;437; AVX2-LABEL: expandload_v8f64_v8i1:438; AVX2:       ## %bb.0:439; AVX2-NEXT:    vpsllw $15, %xmm2, %xmm2440; AVX2-NEXT:    vpacksswb %xmm2, %xmm2, %xmm2441; AVX2-NEXT:    vpmovmskb %xmm2, %eax442; AVX2-NEXT:    testb $1, %al443; AVX2-NEXT:    jne LBB2_1444; AVX2-NEXT:  ## %bb.2: ## %else445; AVX2-NEXT:    testb $2, %al446; AVX2-NEXT:    jne LBB2_3447; AVX2-NEXT:  LBB2_4: ## %else2448; AVX2-NEXT:    testb $4, %al449; AVX2-NEXT:    jne LBB2_5450; AVX2-NEXT:  LBB2_6: ## %else6451; AVX2-NEXT:    testb $8, %al452; AVX2-NEXT:    jne LBB2_7453; AVX2-NEXT:  LBB2_8: ## %else10454; AVX2-NEXT:    testb $16, %al455; AVX2-NEXT:    jne LBB2_9456; AVX2-NEXT:  LBB2_10: ## %else14457; AVX2-NEXT:    testb $32, %al458; AVX2-NEXT:    jne LBB2_11459; AVX2-NEXT:  LBB2_12: ## %else18460; AVX2-NEXT:    testb $64, %al461; AVX2-NEXT:    jne LBB2_13462; AVX2-NEXT:  LBB2_14: ## %else22463; AVX2-NEXT:    testb $-128, %al464; AVX2-NEXT:    jne LBB2_15465; AVX2-NEXT:  LBB2_16: ## %else26466; AVX2-NEXT:    retq467; AVX2-NEXT:  LBB2_1: ## %cond.load468; AVX2-NEXT:    vmovq (%rdi), %xmm2 ## xmm2 = mem[0],zero469; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm2[0,1],ymm0[2,3,4,5,6,7]470; AVX2-NEXT:    addq $8, %rdi471; AVX2-NEXT:    testb $2, %al472; AVX2-NEXT:    je LBB2_4473; AVX2-NEXT:  LBB2_3: ## %cond.load1474; AVX2-NEXT:    vmovhps (%rdi), %xmm0, %xmm2 ## xmm2 = xmm0[0,1],mem[0,1]475; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm2[0,1,2,3],ymm0[4,5,6,7]476; AVX2-NEXT:    addq $8, %rdi477; AVX2-NEXT:    testb $4, %al478; AVX2-NEXT:    je LBB2_6479; AVX2-NEXT:  LBB2_5: ## %cond.load5480; AVX2-NEXT:    vpbroadcastq (%rdi), %ymm2481; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm2[4,5],ymm0[6,7]482; AVX2-NEXT:    addq $8, %rdi483; AVX2-NEXT:    testb $8, %al484; AVX2-NEXT:    je LBB2_8485; AVX2-NEXT:  LBB2_7: ## %cond.load9486; AVX2-NEXT:    vpbroadcastq (%rdi), %ymm2487; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5],ymm2[6,7]488; AVX2-NEXT:    addq $8, %rdi489; AVX2-NEXT:    testb $16, %al490; AVX2-NEXT:    je LBB2_10491; AVX2-NEXT:  LBB2_9: ## %cond.load13492; AVX2-NEXT:    vmovq (%rdi), %xmm2 ## xmm2 = mem[0],zero493; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1],ymm1[2,3,4,5,6,7]494; AVX2-NEXT:    addq $8, %rdi495; AVX2-NEXT:    testb $32, %al496; AVX2-NEXT:    je LBB2_12497; AVX2-NEXT:  LBB2_11: ## %cond.load17498; AVX2-NEXT:    vmovhps (%rdi), %xmm1, %xmm2 ## xmm2 = xmm1[0,1],mem[0,1]499; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]500; AVX2-NEXT:    addq $8, %rdi501; AVX2-NEXT:    testb $64, %al502; AVX2-NEXT:    je LBB2_14503; AVX2-NEXT:  LBB2_13: ## %cond.load21504; AVX2-NEXT:    vpbroadcastq (%rdi), %ymm2505; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm2[4,5],ymm1[6,7]506; AVX2-NEXT:    addq $8, %rdi507; AVX2-NEXT:    testb $-128, %al508; AVX2-NEXT:    je LBB2_16509; AVX2-NEXT:  LBB2_15: ## %cond.load25510; AVX2-NEXT:    vpbroadcastq (%rdi), %ymm2511; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3,4,5],ymm2[6,7]512; AVX2-NEXT:    retq513;514; AVX512F-LABEL: expandload_v8f64_v8i1:515; AVX512F:       ## %bb.0:516; AVX512F-NEXT:    vpmovsxwq %xmm1, %zmm1517; AVX512F-NEXT:    vpsllq $63, %zmm1, %zmm1518; AVX512F-NEXT:    vptestmq %zmm1, %zmm1, %k1519; AVX512F-NEXT:    vexpandpd (%rdi), %zmm0 {%k1}520; AVX512F-NEXT:    retq521;522; AVX512VLDQ-LABEL: expandload_v8f64_v8i1:523; AVX512VLDQ:       ## %bb.0:524; AVX512VLDQ-NEXT:    vpmovsxwd %xmm1, %ymm1525; AVX512VLDQ-NEXT:    vpslld $31, %ymm1, %ymm1526; AVX512VLDQ-NEXT:    vpmovd2m %ymm1, %k1527; AVX512VLDQ-NEXT:    vexpandpd (%rdi), %zmm0 {%k1}528; AVX512VLDQ-NEXT:    retq529;530; AVX512VLBW-LABEL: expandload_v8f64_v8i1:531; AVX512VLBW:       ## %bb.0:532; AVX512VLBW-NEXT:    vpsllw $15, %xmm1, %xmm1533; AVX512VLBW-NEXT:    vpmovw2m %xmm1, %k1534; AVX512VLBW-NEXT:    vexpandpd (%rdi), %zmm0 {%k1}535; AVX512VLBW-NEXT:    retq536  %res = call <8 x double> @llvm.masked.expandload.v8f64(ptr %base, <8 x i1> %mask, <8 x double> %src0)537  ret <8 x double>%res538}539 540define <16 x double> @expandload_v16f64_v16i32(ptr %base, <16 x double> %src0, <16 x i32> %trigger) {541; SSE-LABEL: expandload_v16f64_v16i32:542; SSE:       ## %bb.0:543; SSE-NEXT:    movq %rdi, %rax544; SSE-NEXT:    pxor %xmm8, %xmm8545; SSE-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm9546; SSE-NEXT:    pcmpeqd %xmm8, %xmm9547; SSE-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm10548; SSE-NEXT:    pcmpeqd %xmm8, %xmm10549; SSE-NEXT:    packssdw %xmm9, %xmm10550; SSE-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm9551; SSE-NEXT:    pcmpeqd %xmm8, %xmm9552; SSE-NEXT:    pcmpeqd {{[0-9]+}}(%rsp), %xmm8553; SSE-NEXT:    packssdw %xmm9, %xmm8554; SSE-NEXT:    packsswb %xmm10, %xmm8555; SSE-NEXT:    pmovmskb %xmm8, %ecx556; SSE-NEXT:    testb $1, %cl557; SSE-NEXT:    jne LBB3_1558; SSE-NEXT:  ## %bb.2: ## %else559; SSE-NEXT:    testb $2, %cl560; SSE-NEXT:    jne LBB3_3561; SSE-NEXT:  LBB3_4: ## %else2562; SSE-NEXT:    testb $4, %cl563; SSE-NEXT:    jne LBB3_5564; SSE-NEXT:  LBB3_6: ## %else6565; SSE-NEXT:    testb $8, %cl566; SSE-NEXT:    jne LBB3_7567; SSE-NEXT:  LBB3_8: ## %else10568; SSE-NEXT:    testb $16, %cl569; SSE-NEXT:    jne LBB3_9570; SSE-NEXT:  LBB3_10: ## %else14571; SSE-NEXT:    testb $32, %cl572; SSE-NEXT:    jne LBB3_11573; SSE-NEXT:  LBB3_12: ## %else18574; SSE-NEXT:    testb $64, %cl575; SSE-NEXT:    jne LBB3_13576; SSE-NEXT:  LBB3_14: ## %else22577; SSE-NEXT:    testb %cl, %cl578; SSE-NEXT:    js LBB3_15579; SSE-NEXT:  LBB3_16: ## %else26580; SSE-NEXT:    testl $256, %ecx ## imm = 0x100581; SSE-NEXT:    jne LBB3_17582; SSE-NEXT:  LBB3_18: ## %else30583; SSE-NEXT:    testl $512, %ecx ## imm = 0x200584; SSE-NEXT:    jne LBB3_19585; SSE-NEXT:  LBB3_20: ## %else34586; SSE-NEXT:    testl $1024, %ecx ## imm = 0x400587; SSE-NEXT:    jne LBB3_21588; SSE-NEXT:  LBB3_22: ## %else38589; SSE-NEXT:    testl $2048, %ecx ## imm = 0x800590; SSE-NEXT:    jne LBB3_23591; SSE-NEXT:  LBB3_24: ## %else42592; SSE-NEXT:    testl $4096, %ecx ## imm = 0x1000593; SSE-NEXT:    jne LBB3_25594; SSE-NEXT:  LBB3_26: ## %else46595; SSE-NEXT:    testl $8192, %ecx ## imm = 0x2000596; SSE-NEXT:    jne LBB3_27597; SSE-NEXT:  LBB3_28: ## %else50598; SSE-NEXT:    testl $16384, %ecx ## imm = 0x4000599; SSE-NEXT:    jne LBB3_29600; SSE-NEXT:  LBB3_30: ## %else54601; SSE-NEXT:    testl $32768, %ecx ## imm = 0x8000602; SSE-NEXT:    je LBB3_32603; SSE-NEXT:  LBB3_31: ## %cond.load57604; SSE-NEXT:    movhps (%rsi), %xmm7 ## xmm7 = xmm7[0,1],mem[0,1]605; SSE-NEXT:  LBB3_32: ## %else58606; SSE-NEXT:    movaps %xmm0, (%rax)607; SSE-NEXT:    movaps %xmm1, 16(%rax)608; SSE-NEXT:    movaps %xmm2, 32(%rax)609; SSE-NEXT:    movaps %xmm3, 48(%rax)610; SSE-NEXT:    movaps %xmm4, 64(%rax)611; SSE-NEXT:    movaps %xmm5, 80(%rax)612; SSE-NEXT:    movaps %xmm6, 96(%rax)613; SSE-NEXT:    movaps %xmm7, 112(%rax)614; SSE-NEXT:    retq615; SSE-NEXT:  LBB3_1: ## %cond.load616; SSE-NEXT:    movlps (%rsi), %xmm0 ## xmm0 = mem[0,1],xmm0[2,3]617; SSE-NEXT:    addq $8, %rsi618; SSE-NEXT:    testb $2, %cl619; SSE-NEXT:    je LBB3_4620; SSE-NEXT:  LBB3_3: ## %cond.load1621; SSE-NEXT:    movhps (%rsi), %xmm0 ## xmm0 = xmm0[0,1],mem[0,1]622; SSE-NEXT:    addq $8, %rsi623; SSE-NEXT:    testb $4, %cl624; SSE-NEXT:    je LBB3_6625; SSE-NEXT:  LBB3_5: ## %cond.load5626; SSE-NEXT:    movlps (%rsi), %xmm1 ## xmm1 = mem[0,1],xmm1[2,3]627; SSE-NEXT:    addq $8, %rsi628; SSE-NEXT:    testb $8, %cl629; SSE-NEXT:    je LBB3_8630; SSE-NEXT:  LBB3_7: ## %cond.load9631; SSE-NEXT:    movhps (%rsi), %xmm1 ## xmm1 = xmm1[0,1],mem[0,1]632; SSE-NEXT:    addq $8, %rsi633; SSE-NEXT:    testb $16, %cl634; SSE-NEXT:    je LBB3_10635; SSE-NEXT:  LBB3_9: ## %cond.load13636; SSE-NEXT:    movlps (%rsi), %xmm2 ## xmm2 = mem[0,1],xmm2[2,3]637; SSE-NEXT:    addq $8, %rsi638; SSE-NEXT:    testb $32, %cl639; SSE-NEXT:    je LBB3_12640; SSE-NEXT:  LBB3_11: ## %cond.load17641; SSE-NEXT:    movhps (%rsi), %xmm2 ## xmm2 = xmm2[0,1],mem[0,1]642; SSE-NEXT:    addq $8, %rsi643; SSE-NEXT:    testb $64, %cl644; SSE-NEXT:    je LBB3_14645; SSE-NEXT:  LBB3_13: ## %cond.load21646; SSE-NEXT:    movlps (%rsi), %xmm3 ## xmm3 = mem[0,1],xmm3[2,3]647; SSE-NEXT:    addq $8, %rsi648; SSE-NEXT:    testb %cl, %cl649; SSE-NEXT:    jns LBB3_16650; SSE-NEXT:  LBB3_15: ## %cond.load25651; SSE-NEXT:    movhps (%rsi), %xmm3 ## xmm3 = xmm3[0,1],mem[0,1]652; SSE-NEXT:    addq $8, %rsi653; SSE-NEXT:    testl $256, %ecx ## imm = 0x100654; SSE-NEXT:    je LBB3_18655; SSE-NEXT:  LBB3_17: ## %cond.load29656; SSE-NEXT:    movlps (%rsi), %xmm4 ## xmm4 = mem[0,1],xmm4[2,3]657; SSE-NEXT:    addq $8, %rsi658; SSE-NEXT:    testl $512, %ecx ## imm = 0x200659; SSE-NEXT:    je LBB3_20660; SSE-NEXT:  LBB3_19: ## %cond.load33661; SSE-NEXT:    movhps (%rsi), %xmm4 ## xmm4 = xmm4[0,1],mem[0,1]662; SSE-NEXT:    addq $8, %rsi663; SSE-NEXT:    testl $1024, %ecx ## imm = 0x400664; SSE-NEXT:    je LBB3_22665; SSE-NEXT:  LBB3_21: ## %cond.load37666; SSE-NEXT:    movlps (%rsi), %xmm5 ## xmm5 = mem[0,1],xmm5[2,3]667; SSE-NEXT:    addq $8, %rsi668; SSE-NEXT:    testl $2048, %ecx ## imm = 0x800669; SSE-NEXT:    je LBB3_24670; SSE-NEXT:  LBB3_23: ## %cond.load41671; SSE-NEXT:    movhps (%rsi), %xmm5 ## xmm5 = xmm5[0,1],mem[0,1]672; SSE-NEXT:    addq $8, %rsi673; SSE-NEXT:    testl $4096, %ecx ## imm = 0x1000674; SSE-NEXT:    je LBB3_26675; SSE-NEXT:  LBB3_25: ## %cond.load45676; SSE-NEXT:    movlps (%rsi), %xmm6 ## xmm6 = mem[0,1],xmm6[2,3]677; SSE-NEXT:    addq $8, %rsi678; SSE-NEXT:    testl $8192, %ecx ## imm = 0x2000679; SSE-NEXT:    je LBB3_28680; SSE-NEXT:  LBB3_27: ## %cond.load49681; SSE-NEXT:    movhps (%rsi), %xmm6 ## xmm6 = xmm6[0,1],mem[0,1]682; SSE-NEXT:    addq $8, %rsi683; SSE-NEXT:    testl $16384, %ecx ## imm = 0x4000684; SSE-NEXT:    je LBB3_30685; SSE-NEXT:  LBB3_29: ## %cond.load53686; SSE-NEXT:    movlps (%rsi), %xmm7 ## xmm7 = mem[0,1],xmm7[2,3]687; SSE-NEXT:    addq $8, %rsi688; SSE-NEXT:    testl $32768, %ecx ## imm = 0x8000689; SSE-NEXT:    jne LBB3_31690; SSE-NEXT:    jmp LBB3_32691;692; AVX1-LABEL: expandload_v16f64_v16i32:693; AVX1:       ## %bb.0:694; AVX1-NEXT:    vextractf128 $1, %ymm5, %xmm6695; AVX1-NEXT:    vpxor %xmm7, %xmm7, %xmm7696; AVX1-NEXT:    vpcmpeqd %xmm7, %xmm6, %xmm6697; AVX1-NEXT:    vpcmpeqd %xmm7, %xmm5, %xmm5698; AVX1-NEXT:    vpackssdw %xmm6, %xmm5, %xmm5699; AVX1-NEXT:    vextractf128 $1, %ymm4, %xmm6700; AVX1-NEXT:    vpcmpeqd %xmm7, %xmm6, %xmm6701; AVX1-NEXT:    vpcmpeqd %xmm7, %xmm4, %xmm4702; AVX1-NEXT:    vpackssdw %xmm6, %xmm4, %xmm4703; AVX1-NEXT:    vpacksswb %xmm5, %xmm4, %xmm4704; AVX1-NEXT:    vpmovmskb %xmm4, %eax705; AVX1-NEXT:    testb $1, %al706; AVX1-NEXT:    jne LBB3_1707; AVX1-NEXT:  ## %bb.2: ## %else708; AVX1-NEXT:    testb $2, %al709; AVX1-NEXT:    jne LBB3_3710; AVX1-NEXT:  LBB3_4: ## %else2711; AVX1-NEXT:    testb $4, %al712; AVX1-NEXT:    jne LBB3_5713; AVX1-NEXT:  LBB3_6: ## %else6714; AVX1-NEXT:    testb $8, %al715; AVX1-NEXT:    jne LBB3_7716; AVX1-NEXT:  LBB3_8: ## %else10717; AVX1-NEXT:    testb $16, %al718; AVX1-NEXT:    jne LBB3_9719; AVX1-NEXT:  LBB3_10: ## %else14720; AVX1-NEXT:    testb $32, %al721; AVX1-NEXT:    jne LBB3_11722; AVX1-NEXT:  LBB3_12: ## %else18723; AVX1-NEXT:    testb $64, %al724; AVX1-NEXT:    jne LBB3_13725; AVX1-NEXT:  LBB3_14: ## %else22726; AVX1-NEXT:    testb %al, %al727; AVX1-NEXT:    js LBB3_15728; AVX1-NEXT:  LBB3_16: ## %else26729; AVX1-NEXT:    testl $256, %eax ## imm = 0x100730; AVX1-NEXT:    jne LBB3_17731; AVX1-NEXT:  LBB3_18: ## %else30732; AVX1-NEXT:    testl $512, %eax ## imm = 0x200733; AVX1-NEXT:    jne LBB3_19734; AVX1-NEXT:  LBB3_20: ## %else34735; AVX1-NEXT:    testl $1024, %eax ## imm = 0x400736; AVX1-NEXT:    jne LBB3_21737; AVX1-NEXT:  LBB3_22: ## %else38738; AVX1-NEXT:    testl $2048, %eax ## imm = 0x800739; AVX1-NEXT:    jne LBB3_23740; AVX1-NEXT:  LBB3_24: ## %else42741; AVX1-NEXT:    testl $4096, %eax ## imm = 0x1000742; AVX1-NEXT:    jne LBB3_25743; AVX1-NEXT:  LBB3_26: ## %else46744; AVX1-NEXT:    testl $8192, %eax ## imm = 0x2000745; AVX1-NEXT:    jne LBB3_27746; AVX1-NEXT:  LBB3_28: ## %else50747; AVX1-NEXT:    testl $16384, %eax ## imm = 0x4000748; AVX1-NEXT:    jne LBB3_29749; AVX1-NEXT:  LBB3_30: ## %else54750; AVX1-NEXT:    testl $32768, %eax ## imm = 0x8000751; AVX1-NEXT:    jne LBB3_31752; AVX1-NEXT:  LBB3_32: ## %else58753; AVX1-NEXT:    retq754; AVX1-NEXT:  LBB3_1: ## %cond.load755; AVX1-NEXT:    vmovsd (%rdi), %xmm4 ## xmm4 = mem[0],zero756; AVX1-NEXT:    vblendps {{.*#+}} ymm0 = ymm4[0,1],ymm0[2,3,4,5,6,7]757; AVX1-NEXT:    addq $8, %rdi758; AVX1-NEXT:    testb $2, %al759; AVX1-NEXT:    je LBB3_4760; AVX1-NEXT:  LBB3_3: ## %cond.load1761; AVX1-NEXT:    vmovhps (%rdi), %xmm0, %xmm4 ## xmm4 = xmm0[0,1],mem[0,1]762; AVX1-NEXT:    vblendps {{.*#+}} ymm0 = ymm4[0,1,2,3],ymm0[4,5,6,7]763; AVX1-NEXT:    addq $8, %rdi764; AVX1-NEXT:    testb $4, %al765; AVX1-NEXT:    je LBB3_6766; AVX1-NEXT:  LBB3_5: ## %cond.load5767; AVX1-NEXT:    vbroadcastsd (%rdi), %ymm4768; AVX1-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm4[4,5],ymm0[6,7]769; AVX1-NEXT:    addq $8, %rdi770; AVX1-NEXT:    testb $8, %al771; AVX1-NEXT:    je LBB3_8772; AVX1-NEXT:  LBB3_7: ## %cond.load9773; AVX1-NEXT:    vbroadcastsd (%rdi), %ymm4774; AVX1-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5],ymm4[6,7]775; AVX1-NEXT:    addq $8, %rdi776; AVX1-NEXT:    testb $16, %al777; AVX1-NEXT:    je LBB3_10778; AVX1-NEXT:  LBB3_9: ## %cond.load13779; AVX1-NEXT:    vmovsd (%rdi), %xmm4 ## xmm4 = mem[0],zero780; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm4[0,1],ymm1[2,3,4,5,6,7]781; AVX1-NEXT:    addq $8, %rdi782; AVX1-NEXT:    testb $32, %al783; AVX1-NEXT:    je LBB3_12784; AVX1-NEXT:  LBB3_11: ## %cond.load17785; AVX1-NEXT:    vmovhps (%rdi), %xmm1, %xmm4 ## xmm4 = xmm1[0,1],mem[0,1]786; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm4[0,1,2,3],ymm1[4,5,6,7]787; AVX1-NEXT:    addq $8, %rdi788; AVX1-NEXT:    testb $64, %al789; AVX1-NEXT:    je LBB3_14790; AVX1-NEXT:  LBB3_13: ## %cond.load21791; AVX1-NEXT:    vbroadcastsd (%rdi), %ymm4792; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm4[4,5],ymm1[6,7]793; AVX1-NEXT:    addq $8, %rdi794; AVX1-NEXT:    testb %al, %al795; AVX1-NEXT:    jns LBB3_16796; AVX1-NEXT:  LBB3_15: ## %cond.load25797; AVX1-NEXT:    vbroadcastsd (%rdi), %ymm4798; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3,4,5],ymm4[6,7]799; AVX1-NEXT:    addq $8, %rdi800; AVX1-NEXT:    testl $256, %eax ## imm = 0x100801; AVX1-NEXT:    je LBB3_18802; AVX1-NEXT:  LBB3_17: ## %cond.load29803; AVX1-NEXT:    vmovsd (%rdi), %xmm4 ## xmm4 = mem[0],zero804; AVX1-NEXT:    vblendps {{.*#+}} ymm2 = ymm4[0,1],ymm2[2,3,4,5,6,7]805; AVX1-NEXT:    addq $8, %rdi806; AVX1-NEXT:    testl $512, %eax ## imm = 0x200807; AVX1-NEXT:    je LBB3_20808; AVX1-NEXT:  LBB3_19: ## %cond.load33809; AVX1-NEXT:    vmovhps (%rdi), %xmm2, %xmm4 ## xmm4 = xmm2[0,1],mem[0,1]810; AVX1-NEXT:    vblendps {{.*#+}} ymm2 = ymm4[0,1,2,3],ymm2[4,5,6,7]811; AVX1-NEXT:    addq $8, %rdi812; AVX1-NEXT:    testl $1024, %eax ## imm = 0x400813; AVX1-NEXT:    je LBB3_22814; AVX1-NEXT:  LBB3_21: ## %cond.load37815; AVX1-NEXT:    vbroadcastsd (%rdi), %ymm4816; AVX1-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm4[4,5],ymm2[6,7]817; AVX1-NEXT:    addq $8, %rdi818; AVX1-NEXT:    testl $2048, %eax ## imm = 0x800819; AVX1-NEXT:    je LBB3_24820; AVX1-NEXT:  LBB3_23: ## %cond.load41821; AVX1-NEXT:    vbroadcastsd (%rdi), %ymm4822; AVX1-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3,4,5],ymm4[6,7]823; AVX1-NEXT:    addq $8, %rdi824; AVX1-NEXT:    testl $4096, %eax ## imm = 0x1000825; AVX1-NEXT:    je LBB3_26826; AVX1-NEXT:  LBB3_25: ## %cond.load45827; AVX1-NEXT:    vmovsd (%rdi), %xmm4 ## xmm4 = mem[0],zero828; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1],ymm3[2,3,4,5,6,7]829; AVX1-NEXT:    addq $8, %rdi830; AVX1-NEXT:    testl $8192, %eax ## imm = 0x2000831; AVX1-NEXT:    je LBB3_28832; AVX1-NEXT:  LBB3_27: ## %cond.load49833; AVX1-NEXT:    vmovhps (%rdi), %xmm3, %xmm4 ## xmm4 = xmm3[0,1],mem[0,1]834; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]835; AVX1-NEXT:    addq $8, %rdi836; AVX1-NEXT:    testl $16384, %eax ## imm = 0x4000837; AVX1-NEXT:    je LBB3_30838; AVX1-NEXT:  LBB3_29: ## %cond.load53839; AVX1-NEXT:    vbroadcastsd (%rdi), %ymm4840; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm4[4,5],ymm3[6,7]841; AVX1-NEXT:    addq $8, %rdi842; AVX1-NEXT:    testl $32768, %eax ## imm = 0x8000843; AVX1-NEXT:    je LBB3_32844; AVX1-NEXT:  LBB3_31: ## %cond.load57845; AVX1-NEXT:    vbroadcastsd (%rdi), %ymm4846; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm3[0,1,2,3,4,5],ymm4[6,7]847; AVX1-NEXT:    retq848;849; AVX2-LABEL: expandload_v16f64_v16i32:850; AVX2:       ## %bb.0:851; AVX2-NEXT:    vpxor %xmm6, %xmm6, %xmm6852; AVX2-NEXT:    vpcmpeqd %ymm6, %ymm5, %ymm5853; AVX2-NEXT:    vpcmpeqd %ymm6, %ymm4, %ymm4854; AVX2-NEXT:    vpackssdw %ymm5, %ymm4, %ymm4855; AVX2-NEXT:    vextracti128 $1, %ymm4, %xmm5856; AVX2-NEXT:    vpacksswb %xmm5, %xmm4, %xmm4857; AVX2-NEXT:    vpshufd {{.*#+}} xmm4 = xmm4[0,2,1,3]858; AVX2-NEXT:    vpmovmskb %xmm4, %eax859; AVX2-NEXT:    testb $1, %al860; AVX2-NEXT:    jne LBB3_1861; AVX2-NEXT:  ## %bb.2: ## %else862; AVX2-NEXT:    testb $2, %al863; AVX2-NEXT:    jne LBB3_3864; AVX2-NEXT:  LBB3_4: ## %else2865; AVX2-NEXT:    testb $4, %al866; AVX2-NEXT:    jne LBB3_5867; AVX2-NEXT:  LBB3_6: ## %else6868; AVX2-NEXT:    testb $8, %al869; AVX2-NEXT:    jne LBB3_7870; AVX2-NEXT:  LBB3_8: ## %else10871; AVX2-NEXT:    testb $16, %al872; AVX2-NEXT:    jne LBB3_9873; AVX2-NEXT:  LBB3_10: ## %else14874; AVX2-NEXT:    testb $32, %al875; AVX2-NEXT:    jne LBB3_11876; AVX2-NEXT:  LBB3_12: ## %else18877; AVX2-NEXT:    testb $64, %al878; AVX2-NEXT:    jne LBB3_13879; AVX2-NEXT:  LBB3_14: ## %else22880; AVX2-NEXT:    testb %al, %al881; AVX2-NEXT:    js LBB3_15882; AVX2-NEXT:  LBB3_16: ## %else26883; AVX2-NEXT:    testl $256, %eax ## imm = 0x100884; AVX2-NEXT:    jne LBB3_17885; AVX2-NEXT:  LBB3_18: ## %else30886; AVX2-NEXT:    testl $512, %eax ## imm = 0x200887; AVX2-NEXT:    jne LBB3_19888; AVX2-NEXT:  LBB3_20: ## %else34889; AVX2-NEXT:    testl $1024, %eax ## imm = 0x400890; AVX2-NEXT:    jne LBB3_21891; AVX2-NEXT:  LBB3_22: ## %else38892; AVX2-NEXT:    testl $2048, %eax ## imm = 0x800893; AVX2-NEXT:    jne LBB3_23894; AVX2-NEXT:  LBB3_24: ## %else42895; AVX2-NEXT:    testl $4096, %eax ## imm = 0x1000896; AVX2-NEXT:    jne LBB3_25897; AVX2-NEXT:  LBB3_26: ## %else46898; AVX2-NEXT:    testl $8192, %eax ## imm = 0x2000899; AVX2-NEXT:    jne LBB3_27900; AVX2-NEXT:  LBB3_28: ## %else50901; AVX2-NEXT:    testl $16384, %eax ## imm = 0x4000902; AVX2-NEXT:    jne LBB3_29903; AVX2-NEXT:  LBB3_30: ## %else54904; AVX2-NEXT:    testl $32768, %eax ## imm = 0x8000905; AVX2-NEXT:    jne LBB3_31906; AVX2-NEXT:  LBB3_32: ## %else58907; AVX2-NEXT:    retq908; AVX2-NEXT:  LBB3_1: ## %cond.load909; AVX2-NEXT:    vmovq (%rdi), %xmm4 ## xmm4 = mem[0],zero910; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm4[0,1],ymm0[2,3,4,5,6,7]911; AVX2-NEXT:    addq $8, %rdi912; AVX2-NEXT:    testb $2, %al913; AVX2-NEXT:    je LBB3_4914; AVX2-NEXT:  LBB3_3: ## %cond.load1915; AVX2-NEXT:    vmovhps (%rdi), %xmm0, %xmm4 ## xmm4 = xmm0[0,1],mem[0,1]916; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm4[0,1,2,3],ymm0[4,5,6,7]917; AVX2-NEXT:    addq $8, %rdi918; AVX2-NEXT:    testb $4, %al919; AVX2-NEXT:    je LBB3_6920; AVX2-NEXT:  LBB3_5: ## %cond.load5921; AVX2-NEXT:    vpbroadcastq (%rdi), %ymm4922; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm4[4,5],ymm0[6,7]923; AVX2-NEXT:    addq $8, %rdi924; AVX2-NEXT:    testb $8, %al925; AVX2-NEXT:    je LBB3_8926; AVX2-NEXT:  LBB3_7: ## %cond.load9927; AVX2-NEXT:    vpbroadcastq (%rdi), %ymm4928; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5],ymm4[6,7]929; AVX2-NEXT:    addq $8, %rdi930; AVX2-NEXT:    testb $16, %al931; AVX2-NEXT:    je LBB3_10932; AVX2-NEXT:  LBB3_9: ## %cond.load13933; AVX2-NEXT:    vmovq (%rdi), %xmm4 ## xmm4 = mem[0],zero934; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm4[0,1],ymm1[2,3,4,5,6,7]935; AVX2-NEXT:    addq $8, %rdi936; AVX2-NEXT:    testb $32, %al937; AVX2-NEXT:    je LBB3_12938; AVX2-NEXT:  LBB3_11: ## %cond.load17939; AVX2-NEXT:    vmovhps (%rdi), %xmm1, %xmm4 ## xmm4 = xmm1[0,1],mem[0,1]940; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm4[0,1,2,3],ymm1[4,5,6,7]941; AVX2-NEXT:    addq $8, %rdi942; AVX2-NEXT:    testb $64, %al943; AVX2-NEXT:    je LBB3_14944; AVX2-NEXT:  LBB3_13: ## %cond.load21945; AVX2-NEXT:    vpbroadcastq (%rdi), %ymm4946; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm4[4,5],ymm1[6,7]947; AVX2-NEXT:    addq $8, %rdi948; AVX2-NEXT:    testb %al, %al949; AVX2-NEXT:    jns LBB3_16950; AVX2-NEXT:  LBB3_15: ## %cond.load25951; AVX2-NEXT:    vpbroadcastq (%rdi), %ymm4952; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3,4,5],ymm4[6,7]953; AVX2-NEXT:    addq $8, %rdi954; AVX2-NEXT:    testl $256, %eax ## imm = 0x100955; AVX2-NEXT:    je LBB3_18956; AVX2-NEXT:  LBB3_17: ## %cond.load29957; AVX2-NEXT:    vmovq (%rdi), %xmm4 ## xmm4 = mem[0],zero958; AVX2-NEXT:    vpblendd {{.*#+}} ymm2 = ymm4[0,1],ymm2[2,3,4,5,6,7]959; AVX2-NEXT:    addq $8, %rdi960; AVX2-NEXT:    testl $512, %eax ## imm = 0x200961; AVX2-NEXT:    je LBB3_20962; AVX2-NEXT:  LBB3_19: ## %cond.load33963; AVX2-NEXT:    vmovhps (%rdi), %xmm2, %xmm4 ## xmm4 = xmm2[0,1],mem[0,1]964; AVX2-NEXT:    vpblendd {{.*#+}} ymm2 = ymm4[0,1,2,3],ymm2[4,5,6,7]965; AVX2-NEXT:    addq $8, %rdi966; AVX2-NEXT:    testl $1024, %eax ## imm = 0x400967; AVX2-NEXT:    je LBB3_22968; AVX2-NEXT:  LBB3_21: ## %cond.load37969; AVX2-NEXT:    vpbroadcastq (%rdi), %ymm4970; AVX2-NEXT:    vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm4[4,5],ymm2[6,7]971; AVX2-NEXT:    addq $8, %rdi972; AVX2-NEXT:    testl $2048, %eax ## imm = 0x800973; AVX2-NEXT:    je LBB3_24974; AVX2-NEXT:  LBB3_23: ## %cond.load41975; AVX2-NEXT:    vpbroadcastq (%rdi), %ymm4976; AVX2-NEXT:    vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3,4,5],ymm4[6,7]977; AVX2-NEXT:    addq $8, %rdi978; AVX2-NEXT:    testl $4096, %eax ## imm = 0x1000979; AVX2-NEXT:    je LBB3_26980; AVX2-NEXT:  LBB3_25: ## %cond.load45981; AVX2-NEXT:    vmovq (%rdi), %xmm4 ## xmm4 = mem[0],zero982; AVX2-NEXT:    vpblendd {{.*#+}} ymm3 = ymm4[0,1],ymm3[2,3,4,5,6,7]983; AVX2-NEXT:    addq $8, %rdi984; AVX2-NEXT:    testl $8192, %eax ## imm = 0x2000985; AVX2-NEXT:    je LBB3_28986; AVX2-NEXT:  LBB3_27: ## %cond.load49987; AVX2-NEXT:    vmovhps (%rdi), %xmm3, %xmm4 ## xmm4 = xmm3[0,1],mem[0,1]988; AVX2-NEXT:    vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]989; AVX2-NEXT:    addq $8, %rdi990; AVX2-NEXT:    testl $16384, %eax ## imm = 0x4000991; AVX2-NEXT:    je LBB3_30992; AVX2-NEXT:  LBB3_29: ## %cond.load53993; AVX2-NEXT:    vpbroadcastq (%rdi), %ymm4994; AVX2-NEXT:    vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm4[4,5],ymm3[6,7]995; AVX2-NEXT:    addq $8, %rdi996; AVX2-NEXT:    testl $32768, %eax ## imm = 0x8000997; AVX2-NEXT:    je LBB3_32998; AVX2-NEXT:  LBB3_31: ## %cond.load57999; AVX2-NEXT:    vpbroadcastq (%rdi), %ymm41000; AVX2-NEXT:    vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3,4,5],ymm4[6,7]1001; AVX2-NEXT:    retq1002;1003; AVX512F-LABEL: expandload_v16f64_v16i32:1004; AVX512F:       ## %bb.0:1005; AVX512F-NEXT:    vextracti64x4 $1, %zmm2, %ymm31006; AVX512F-NEXT:    vptestnmd %zmm3, %zmm3, %k11007; AVX512F-NEXT:    vptestnmd %zmm2, %zmm2, %k21008; AVX512F-NEXT:    vexpandpd (%rdi), %zmm0 {%k2}1009; AVX512F-NEXT:    kmovw %k2, %eax1010; AVX512F-NEXT:    movzbl %al, %eax1011; AVX512F-NEXT:    imull $134480385, %eax, %eax ## imm = 0x80402011012; AVX512F-NEXT:    shrl $3, %eax1013; AVX512F-NEXT:    andl $286331153, %eax ## imm = 0x111111111014; AVX512F-NEXT:    imull $286331153, %eax, %eax ## imm = 0x111111111015; AVX512F-NEXT:    shrl $28, %eax1016; AVX512F-NEXT:    vexpandpd (%rdi,%rax,8), %zmm1 {%k1}1017; AVX512F-NEXT:    retq1018;1019; AVX512VLDQ-LABEL: expandload_v16f64_v16i32:1020; AVX512VLDQ:       ## %bb.0:1021; AVX512VLDQ-NEXT:    vextracti64x4 $1, %zmm2, %ymm31022; AVX512VLDQ-NEXT:    vptestnmd %ymm3, %ymm3, %k11023; AVX512VLDQ-NEXT:    vptestnmd %ymm2, %ymm2, %k21024; AVX512VLDQ-NEXT:    kmovb %k2, %eax1025; AVX512VLDQ-NEXT:    imull $134480385, %eax, %eax ## imm = 0x80402011026; AVX512VLDQ-NEXT:    shrl $3, %eax1027; AVX512VLDQ-NEXT:    andl $286331153, %eax ## imm = 0x111111111028; AVX512VLDQ-NEXT:    imull $286331153, %eax, %eax ## imm = 0x111111111029; AVX512VLDQ-NEXT:    shrl $28, %eax1030; AVX512VLDQ-NEXT:    vexpandpd (%rdi,%rax,8), %zmm1 {%k1}1031; AVX512VLDQ-NEXT:    vexpandpd (%rdi), %zmm0 {%k2}1032; AVX512VLDQ-NEXT:    retq1033;1034; AVX512VLBW-LABEL: expandload_v16f64_v16i32:1035; AVX512VLBW:       ## %bb.0:1036; AVX512VLBW-NEXT:    vextracti64x4 $1, %zmm2, %ymm31037; AVX512VLBW-NEXT:    vptestnmd %ymm3, %ymm3, %k11038; AVX512VLBW-NEXT:    vptestnmd %ymm2, %ymm2, %k21039; AVX512VLBW-NEXT:    vexpandpd (%rdi), %zmm0 {%k2}1040; AVX512VLBW-NEXT:    kmovd %k2, %eax1041; AVX512VLBW-NEXT:    movzbl %al, %eax1042; AVX512VLBW-NEXT:    imull $134480385, %eax, %eax ## imm = 0x80402011043; AVX512VLBW-NEXT:    shrl $3, %eax1044; AVX512VLBW-NEXT:    andl $286331153, %eax ## imm = 0x111111111045; AVX512VLBW-NEXT:    imull $286331153, %eax, %eax ## imm = 0x111111111046; AVX512VLBW-NEXT:    shrl $28, %eax1047; AVX512VLBW-NEXT:    vexpandpd (%rdi,%rax,8), %zmm1 {%k1}1048; AVX512VLBW-NEXT:    retq1049  %mask = icmp eq <16 x i32> %trigger, zeroinitializer1050  %res = call <16 x double> @llvm.masked.expandload.v16f64(ptr %base, <16 x i1> %mask, <16 x double> %src0)1051  ret <16 x double> %res1052}1053 1054;1055; vXf321056;1057 1058define <2 x float> @expandload_v2f32_v2i1(ptr %base, <2 x float> %src0, <2 x i32> %trigger) {1059; SSE2-LABEL: expandload_v2f32_v2i1:1060; SSE2:       ## %bb.0:1061; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,0,1,1]1062; SSE2-NEXT:    pxor %xmm2, %xmm21063; SSE2-NEXT:    pcmpeqd %xmm1, %xmm21064; SSE2-NEXT:    movmskpd %xmm2, %eax1065; SSE2-NEXT:    testb $1, %al1066; SSE2-NEXT:    jne LBB4_11067; SSE2-NEXT:  ## %bb.2: ## %else1068; SSE2-NEXT:    testb $2, %al1069; SSE2-NEXT:    jne LBB4_31070; SSE2-NEXT:  LBB4_4: ## %else21071; SSE2-NEXT:    retq1072; SSE2-NEXT:  LBB4_1: ## %cond.load1073; SSE2-NEXT:    movss (%rdi), %xmm1 ## xmm1 = mem[0],zero,zero,zero1074; SSE2-NEXT:    movss {{.*#+}} xmm0 = xmm1[0],xmm0[1,2,3]1075; SSE2-NEXT:    addq $4, %rdi1076; SSE2-NEXT:    testb $2, %al1077; SSE2-NEXT:    je LBB4_41078; SSE2-NEXT:  LBB4_3: ## %cond.load11079; SSE2-NEXT:    movss (%rdi), %xmm1 ## xmm1 = mem[0],zero,zero,zero1080; SSE2-NEXT:    movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]1081; SSE2-NEXT:    shufps {{.*#+}} xmm1 = xmm1[2,0],xmm0[2,3]1082; SSE2-NEXT:    movaps %xmm1, %xmm01083; SSE2-NEXT:    retq1084;1085; SSE42-LABEL: expandload_v2f32_v2i1:1086; SSE42:       ## %bb.0:1087; SSE42-NEXT:    pxor %xmm2, %xmm21088; SSE42-NEXT:    pcmpeqd %xmm1, %xmm21089; SSE42-NEXT:    pmovsxdq %xmm2, %xmm11090; SSE42-NEXT:    movmskpd %xmm1, %eax1091; SSE42-NEXT:    testb $1, %al1092; SSE42-NEXT:    jne LBB4_11093; SSE42-NEXT:  ## %bb.2: ## %else1094; SSE42-NEXT:    testb $2, %al1095; SSE42-NEXT:    jne LBB4_31096; SSE42-NEXT:  LBB4_4: ## %else21097; SSE42-NEXT:    retq1098; SSE42-NEXT:  LBB4_1: ## %cond.load1099; SSE42-NEXT:    movss (%rdi), %xmm1 ## xmm1 = mem[0],zero,zero,zero1100; SSE42-NEXT:    movss {{.*#+}} xmm0 = xmm1[0],xmm0[1,2,3]1101; SSE42-NEXT:    addq $4, %rdi1102; SSE42-NEXT:    testb $2, %al1103; SSE42-NEXT:    je LBB4_41104; SSE42-NEXT:  LBB4_3: ## %cond.load11105; SSE42-NEXT:    insertps $16, (%rdi), %xmm0 ## xmm0 = xmm0[0],mem[0],xmm0[2,3]1106; SSE42-NEXT:    retq1107;1108; AVX1OR2-LABEL: expandload_v2f32_v2i1:1109; AVX1OR2:       ## %bb.0:1110; AVX1OR2-NEXT:    vpxor %xmm2, %xmm2, %xmm21111; AVX1OR2-NEXT:    vpcmpeqd %xmm2, %xmm1, %xmm11112; AVX1OR2-NEXT:    vpmovsxdq %xmm1, %xmm11113; AVX1OR2-NEXT:    vmovmskpd %xmm1, %eax1114; AVX1OR2-NEXT:    testb $1, %al1115; AVX1OR2-NEXT:    jne LBB4_11116; AVX1OR2-NEXT:  ## %bb.2: ## %else1117; AVX1OR2-NEXT:    testb $2, %al1118; AVX1OR2-NEXT:    jne LBB4_31119; AVX1OR2-NEXT:  LBB4_4: ## %else21120; AVX1OR2-NEXT:    retq1121; AVX1OR2-NEXT:  LBB4_1: ## %cond.load1122; AVX1OR2-NEXT:    vmovss (%rdi), %xmm1 ## xmm1 = mem[0],zero,zero,zero1123; AVX1OR2-NEXT:    vmovss {{.*#+}} xmm0 = xmm1[0],xmm0[1,2,3]1124; AVX1OR2-NEXT:    addq $4, %rdi1125; AVX1OR2-NEXT:    testb $2, %al1126; AVX1OR2-NEXT:    je LBB4_41127; AVX1OR2-NEXT:  LBB4_3: ## %cond.load11128; AVX1OR2-NEXT:    vinsertps $16, (%rdi), %xmm0, %xmm0 ## xmm0 = xmm0[0],mem[0],xmm0[2,3]1129; AVX1OR2-NEXT:    retq1130;1131; AVX512F-LABEL: expandload_v2f32_v2i1:1132; AVX512F:       ## %bb.0:1133; AVX512F-NEXT:    ## kill: def $xmm1 killed $xmm1 def $zmm11134; AVX512F-NEXT:    ## kill: def $xmm0 killed $xmm0 def $zmm01135; AVX512F-NEXT:    vptestnmd %zmm1, %zmm1, %k01136; AVX512F-NEXT:    kshiftlw $14, %k0, %k01137; AVX512F-NEXT:    kshiftrw $14, %k0, %k11138; AVX512F-NEXT:    vexpandps (%rdi), %zmm0 {%k1}1139; AVX512F-NEXT:    ## kill: def $xmm0 killed $xmm0 killed $zmm01140; AVX512F-NEXT:    vzeroupper1141; AVX512F-NEXT:    retq1142;1143; AVX512VLDQ-LABEL: expandload_v2f32_v2i1:1144; AVX512VLDQ:       ## %bb.0:1145; AVX512VLDQ-NEXT:    vptestnmd %xmm1, %xmm1, %k01146; AVX512VLDQ-NEXT:    kshiftlb $6, %k0, %k01147; AVX512VLDQ-NEXT:    kshiftrb $6, %k0, %k11148; AVX512VLDQ-NEXT:    vexpandps (%rdi), %xmm0 {%k1}1149; AVX512VLDQ-NEXT:    retq1150;1151; AVX512VLBW-LABEL: expandload_v2f32_v2i1:1152; AVX512VLBW:       ## %bb.0:1153; AVX512VLBW-NEXT:    vptestnmd %xmm1, %xmm1, %k01154; AVX512VLBW-NEXT:    kshiftlw $14, %k0, %k01155; AVX512VLBW-NEXT:    kshiftrw $14, %k0, %k11156; AVX512VLBW-NEXT:    vexpandps (%rdi), %xmm0 {%k1}1157; AVX512VLBW-NEXT:    retq1158  %mask = icmp eq <2 x i32> %trigger, zeroinitializer1159  %res = call <2 x float> @llvm.masked.expandload.v2f32(ptr %base, <2 x i1> %mask, <2 x float> %src0)1160  ret <2 x float> %res1161}1162 1163define <4 x float> @expandload_v4f32_const(ptr %base, <4 x float> %src0) {1164; SSE2-LABEL: expandload_v4f32_const:1165; SSE2:       ## %bb.0:1166; SSE2-NEXT:    movsd (%rdi), %xmm1 ## xmm1 = mem[0],zero1167; SSE2-NEXT:    movss 8(%rdi), %xmm2 ## xmm2 = mem[0],zero,zero,zero1168; SSE2-NEXT:    shufps {{.*#+}} xmm0 = xmm0[3,1],xmm2[0,3]1169; SSE2-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,1],xmm0[2,0]1170; SSE2-NEXT:    movaps %xmm1, %xmm01171; SSE2-NEXT:    retq1172;1173; SSE42-LABEL: expandload_v4f32_const:1174; SSE42:       ## %bb.0:1175; SSE42-NEXT:    movsd (%rdi), %xmm1 ## xmm1 = mem[0],zero1176; SSE42-NEXT:    insertps $32, 8(%rdi), %xmm1 ## xmm1 = xmm1[0,1],mem[0],xmm1[3]1177; SSE42-NEXT:    blendps {{.*#+}} xmm0 = xmm1[0,1,2],xmm0[3]1178; SSE42-NEXT:    retq1179;1180; AVX1OR2-LABEL: expandload_v4f32_const:1181; AVX1OR2:       ## %bb.0:1182; AVX1OR2-NEXT:    vmovsd (%rdi), %xmm1 ## xmm1 = mem[0],zero1183; AVX1OR2-NEXT:    vinsertps $32, 8(%rdi), %xmm1, %xmm1 ## xmm1 = xmm1[0,1],mem[0],xmm1[3]1184; AVX1OR2-NEXT:    vblendps {{.*#+}} xmm0 = xmm1[0,1,2],xmm0[3]1185; AVX1OR2-NEXT:    retq1186;1187; AVX512F-LABEL: expandload_v4f32_const:1188; AVX512F:       ## %bb.0:1189; AVX512F-NEXT:    ## kill: def $xmm0 killed $xmm0 def $zmm01190; AVX512F-NEXT:    movw $7, %ax1191; AVX512F-NEXT:    kmovw %eax, %k11192; AVX512F-NEXT:    vexpandps (%rdi), %zmm0 {%k1}1193; AVX512F-NEXT:    ## kill: def $xmm0 killed $xmm0 killed $zmm01194; AVX512F-NEXT:    vzeroupper1195; AVX512F-NEXT:    retq1196;1197; AVX512VLDQ-LABEL: expandload_v4f32_const:1198; AVX512VLDQ:       ## %bb.0:1199; AVX512VLDQ-NEXT:    movb $7, %al1200; AVX512VLDQ-NEXT:    kmovw %eax, %k11201; AVX512VLDQ-NEXT:    vexpandps (%rdi), %xmm0 {%k1}1202; AVX512VLDQ-NEXT:    retq1203;1204; AVX512VLBW-LABEL: expandload_v4f32_const:1205; AVX512VLBW:       ## %bb.0:1206; AVX512VLBW-NEXT:    movb $7, %al1207; AVX512VLBW-NEXT:    kmovd %eax, %k11208; AVX512VLBW-NEXT:    vexpandps (%rdi), %xmm0 {%k1}1209; AVX512VLBW-NEXT:    retq1210  %res = call <4 x float> @llvm.masked.expandload.v4f32(ptr %base, <4 x i1> <i1 true, i1 true, i1 true, i1 false>, <4 x float> %src0)1211  ret <4 x float>%res1212}1213 1214define <16 x float> @expandload_v16f32_const(ptr %base, <16 x float> %src0) {1215; SSE2-LABEL: expandload_v16f32_const:1216; SSE2:       ## %bb.0:1217; SSE2-NEXT:    movups (%rdi), %xmm01218; SSE2-NEXT:    movups 16(%rdi), %xmm11219; SSE2-NEXT:    movsd 44(%rdi), %xmm4 ## xmm4 = mem[0],zero1220; SSE2-NEXT:    movss 52(%rdi), %xmm6 ## xmm6 = mem[0],zero,zero,zero1221; SSE2-NEXT:    movsd 32(%rdi), %xmm5 ## xmm5 = mem[0],zero1222; SSE2-NEXT:    movss 40(%rdi), %xmm7 ## xmm7 = mem[0],zero,zero,zero1223; SSE2-NEXT:    shufps {{.*#+}} xmm2 = xmm2[3,1],xmm7[0,3]1224; SSE2-NEXT:    shufps {{.*#+}} xmm5 = xmm5[0,1],xmm2[2,0]1225; SSE2-NEXT:    shufps {{.*#+}} xmm3 = xmm3[3,1],xmm6[0,3]1226; SSE2-NEXT:    shufps {{.*#+}} xmm4 = xmm4[0,1],xmm3[2,0]1227; SSE2-NEXT:    movaps %xmm5, %xmm21228; SSE2-NEXT:    movaps %xmm4, %xmm31229; SSE2-NEXT:    retq1230;1231; SSE42-LABEL: expandload_v16f32_const:1232; SSE42:       ## %bb.0:1233; SSE42-NEXT:    movsd 44(%rdi), %xmm4 ## xmm4 = mem[0],zero1234; SSE42-NEXT:    insertps $32, 52(%rdi), %xmm4 ## xmm4 = xmm4[0,1],mem[0],xmm4[3]1235; SSE42-NEXT:    movsd 32(%rdi), %xmm5 ## xmm5 = mem[0],zero1236; SSE42-NEXT:    insertps $32, 40(%rdi), %xmm5 ## xmm5 = xmm5[0,1],mem[0],xmm5[3]1237; SSE42-NEXT:    movups (%rdi), %xmm01238; SSE42-NEXT:    movups 16(%rdi), %xmm11239; SSE42-NEXT:    blendps {{.*#+}} xmm2 = xmm5[0,1,2],xmm2[3]1240; SSE42-NEXT:    blendps {{.*#+}} xmm3 = xmm4[0,1,2],xmm3[3]1241; SSE42-NEXT:    retq1242;1243; AVX1OR2-LABEL: expandload_v16f32_const:1244; AVX1OR2:       ## %bb.0:1245; AVX1OR2-NEXT:    vmovsd 44(%rdi), %xmm0 ## xmm0 = mem[0],zero1246; AVX1OR2-NEXT:    vinsertps $32, 52(%rdi), %xmm0, %xmm0 ## xmm0 = xmm0[0,1],mem[0],xmm0[3]1247; AVX1OR2-NEXT:    vmovsd 32(%rdi), %xmm2 ## xmm2 = mem[0],zero1248; AVX1OR2-NEXT:    vinsertps $32, 40(%rdi), %xmm2, %xmm2 ## xmm2 = xmm2[0,1],mem[0],xmm2[3]1249; AVX1OR2-NEXT:    vinsertf128 $1, %xmm0, %ymm2, %ymm21250; AVX1OR2-NEXT:    vmovups (%rdi), %ymm01251; AVX1OR2-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1,2],ymm1[3],ymm2[4,5,6],ymm1[7]1252; AVX1OR2-NEXT:    retq1253;1254; AVX512F-LABEL: expandload_v16f32_const:1255; AVX512F:       ## %bb.0:1256; AVX512F-NEXT:    movw $30719, %ax ## imm = 0x77FF1257; AVX512F-NEXT:    kmovw %eax, %k11258; AVX512F-NEXT:    vexpandps (%rdi), %zmm0 {%k1}1259; AVX512F-NEXT:    retq1260;1261; AVX512VLDQ-LABEL: expandload_v16f32_const:1262; AVX512VLDQ:       ## %bb.0:1263; AVX512VLDQ-NEXT:    movw $30719, %ax ## imm = 0x77FF1264; AVX512VLDQ-NEXT:    kmovw %eax, %k11265; AVX512VLDQ-NEXT:    vexpandps (%rdi), %zmm0 {%k1}1266; AVX512VLDQ-NEXT:    retq1267;1268; AVX512VLBW-LABEL: expandload_v16f32_const:1269; AVX512VLBW:       ## %bb.0:1270; AVX512VLBW-NEXT:    movw $30719, %ax ## imm = 0x77FF1271; AVX512VLBW-NEXT:    kmovd %eax, %k11272; AVX512VLBW-NEXT:    vexpandps (%rdi), %zmm0 {%k1}1273; AVX512VLBW-NEXT:    retq1274  %res = call <16 x float> @llvm.masked.expandload.v16f32(ptr %base, <16 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false>, <16 x float> %src0)1275  ret <16 x float>%res1276}1277 1278define <16 x float> @expandload_v16f32_const_undef(ptr %base) {1279; SSE2-LABEL: expandload_v16f32_const_undef:1280; SSE2:       ## %bb.0:1281; SSE2-NEXT:    movss 40(%rdi), %xmm0 ## xmm0 = mem[0],zero,zero,zero1282; SSE2-NEXT:    movsd 32(%rdi), %xmm2 ## xmm2 = mem[0],zero1283; SSE2-NEXT:    movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]1284; SSE2-NEXT:    movups (%rdi), %xmm01285; SSE2-NEXT:    movups 16(%rdi), %xmm11286; SSE2-NEXT:    movups 44(%rdi), %xmm31287; SSE2-NEXT:    retq1288;1289; SSE42-LABEL: expandload_v16f32_const_undef:1290; SSE42:       ## %bb.0:1291; SSE42-NEXT:    movsd 32(%rdi), %xmm2 ## xmm2 = mem[0],zero1292; SSE42-NEXT:    insertps $32, 40(%rdi), %xmm2 ## xmm2 = xmm2[0,1],mem[0],xmm2[3]1293; SSE42-NEXT:    movups (%rdi), %xmm01294; SSE42-NEXT:    movups 16(%rdi), %xmm11295; SSE42-NEXT:    movups 44(%rdi), %xmm31296; SSE42-NEXT:    retq1297;1298; AVX1OR2-LABEL: expandload_v16f32_const_undef:1299; AVX1OR2:       ## %bb.0:1300; AVX1OR2-NEXT:    vmovsd 32(%rdi), %xmm0 ## xmm0 = mem[0],zero1301; AVX1OR2-NEXT:    vinsertps $32, 40(%rdi), %xmm0, %xmm0 ## xmm0 = xmm0[0,1],mem[0],xmm0[3]1302; AVX1OR2-NEXT:    vinsertf128 $1, 44(%rdi), %ymm0, %ymm11303; AVX1OR2-NEXT:    vmovups (%rdi), %ymm01304; AVX1OR2-NEXT:    retq1305;1306; AVX512F-LABEL: expandload_v16f32_const_undef:1307; AVX512F:       ## %bb.0:1308; AVX512F-NEXT:    movw $-2049, %ax ## imm = 0xF7FF1309; AVX512F-NEXT:    kmovw %eax, %k11310; AVX512F-NEXT:    vexpandps (%rdi), %zmm0 {%k1} {z}1311; AVX512F-NEXT:    retq1312;1313; AVX512VLDQ-LABEL: expandload_v16f32_const_undef:1314; AVX512VLDQ:       ## %bb.0:1315; AVX512VLDQ-NEXT:    movw $-2049, %ax ## imm = 0xF7FF1316; AVX512VLDQ-NEXT:    kmovw %eax, %k11317; AVX512VLDQ-NEXT:    vexpandps (%rdi), %zmm0 {%k1} {z}1318; AVX512VLDQ-NEXT:    retq1319;1320; AVX512VLBW-LABEL: expandload_v16f32_const_undef:1321; AVX512VLBW:       ## %bb.0:1322; AVX512VLBW-NEXT:    movw $-2049, %ax ## imm = 0xF7FF1323; AVX512VLBW-NEXT:    kmovd %eax, %k11324; AVX512VLBW-NEXT:    vexpandps (%rdi), %zmm0 {%k1} {z}1325; AVX512VLBW-NEXT:    retq1326  %res = call <16 x float> @llvm.masked.expandload.v16f32(ptr %base, <16 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 true>, <16 x float> undef)1327  ret <16 x float>%res1328}1329 1330 1331define <32 x float> @expandload_v32f32_v32i32(ptr %base, <32 x float> %src0, <32 x i32> %trigger) {1332; SSE2-LABEL: expandload_v32f32_v32i32:1333; SSE2:       ## %bb.0:1334; SSE2-NEXT:    movq %rdi, %rax1335; SSE2-NEXT:    pxor %xmm8, %xmm81336; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm91337; SSE2-NEXT:    pcmpeqd %xmm8, %xmm91338; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm101339; SSE2-NEXT:    pcmpeqd %xmm8, %xmm101340; SSE2-NEXT:    packssdw %xmm9, %xmm101341; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm91342; SSE2-NEXT:    pcmpeqd %xmm8, %xmm91343; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm111344; SSE2-NEXT:    pcmpeqd %xmm8, %xmm111345; SSE2-NEXT:    packssdw %xmm9, %xmm111346; SSE2-NEXT:    packsswb %xmm10, %xmm111347; SSE2-NEXT:    pmovmskb %xmm11, %edx1348; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm91349; SSE2-NEXT:    pcmpeqd %xmm8, %xmm91350; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm101351; SSE2-NEXT:    pcmpeqd %xmm8, %xmm101352; SSE2-NEXT:    packssdw %xmm9, %xmm101353; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm91354; SSE2-NEXT:    pcmpeqd %xmm8, %xmm91355; SSE2-NEXT:    pcmpeqd {{[0-9]+}}(%rsp), %xmm81356; SSE2-NEXT:    packssdw %xmm9, %xmm81357; SSE2-NEXT:    packsswb %xmm10, %xmm81358; SSE2-NEXT:    pmovmskb %xmm8, %ecx1359; SSE2-NEXT:    shll $16, %ecx1360; SSE2-NEXT:    orl %edx, %ecx1361; SSE2-NEXT:    testb $1, %cl1362; SSE2-NEXT:    jne LBB8_11363; SSE2-NEXT:  ## %bb.2: ## %else1364; SSE2-NEXT:    testb $2, %cl1365; SSE2-NEXT:    jne LBB8_31366; SSE2-NEXT:  LBB8_4: ## %else21367; SSE2-NEXT:    testb $4, %cl1368; SSE2-NEXT:    jne LBB8_51369; SSE2-NEXT:  LBB8_6: ## %else61370; SSE2-NEXT:    testb $8, %cl1371; SSE2-NEXT:    jne LBB8_71372; SSE2-NEXT:  LBB8_8: ## %else101373; SSE2-NEXT:    testb $16, %cl1374; SSE2-NEXT:    jne LBB8_91375; SSE2-NEXT:  LBB8_10: ## %else141376; SSE2-NEXT:    testb $32, %cl1377; SSE2-NEXT:    jne LBB8_111378; SSE2-NEXT:  LBB8_12: ## %else181379; SSE2-NEXT:    testb $64, %cl1380; SSE2-NEXT:    jne LBB8_131381; SSE2-NEXT:  LBB8_14: ## %else221382; SSE2-NEXT:    testb %cl, %cl1383; SSE2-NEXT:    js LBB8_151384; SSE2-NEXT:  LBB8_16: ## %else261385; SSE2-NEXT:    testl $256, %ecx ## imm = 0x1001386; SSE2-NEXT:    jne LBB8_171387; SSE2-NEXT:  LBB8_18: ## %else301388; SSE2-NEXT:    testl $512, %ecx ## imm = 0x2001389; SSE2-NEXT:    jne LBB8_191390; SSE2-NEXT:  LBB8_20: ## %else341391; SSE2-NEXT:    testl $1024, %ecx ## imm = 0x4001392; SSE2-NEXT:    jne LBB8_211393; SSE2-NEXT:  LBB8_22: ## %else381394; SSE2-NEXT:    testl $2048, %ecx ## imm = 0x8001395; SSE2-NEXT:    jne LBB8_231396; SSE2-NEXT:  LBB8_24: ## %else421397; SSE2-NEXT:    testl $4096, %ecx ## imm = 0x10001398; SSE2-NEXT:    jne LBB8_251399; SSE2-NEXT:  LBB8_26: ## %else461400; SSE2-NEXT:    testl $8192, %ecx ## imm = 0x20001401; SSE2-NEXT:    jne LBB8_271402; SSE2-NEXT:  LBB8_28: ## %else501403; SSE2-NEXT:    testl $16384, %ecx ## imm = 0x40001404; SSE2-NEXT:    jne LBB8_291405; SSE2-NEXT:  LBB8_30: ## %else541406; SSE2-NEXT:    testw %cx, %cx1407; SSE2-NEXT:    js LBB8_311408; SSE2-NEXT:  LBB8_32: ## %else581409; SSE2-NEXT:    testl $65536, %ecx ## imm = 0x100001410; SSE2-NEXT:    jne LBB8_331411; SSE2-NEXT:  LBB8_34: ## %else621412; SSE2-NEXT:    testl $131072, %ecx ## imm = 0x200001413; SSE2-NEXT:    jne LBB8_351414; SSE2-NEXT:  LBB8_36: ## %else661415; SSE2-NEXT:    testl $262144, %ecx ## imm = 0x400001416; SSE2-NEXT:    jne LBB8_371417; SSE2-NEXT:  LBB8_38: ## %else701418; SSE2-NEXT:    testl $524288, %ecx ## imm = 0x800001419; SSE2-NEXT:    jne LBB8_391420; SSE2-NEXT:  LBB8_40: ## %else741421; SSE2-NEXT:    testl $1048576, %ecx ## imm = 0x1000001422; SSE2-NEXT:    jne LBB8_411423; SSE2-NEXT:  LBB8_42: ## %else781424; SSE2-NEXT:    testl $2097152, %ecx ## imm = 0x2000001425; SSE2-NEXT:    jne LBB8_431426; SSE2-NEXT:  LBB8_44: ## %else821427; SSE2-NEXT:    testl $4194304, %ecx ## imm = 0x4000001428; SSE2-NEXT:    jne LBB8_451429; SSE2-NEXT:  LBB8_46: ## %else861430; SSE2-NEXT:    testl $8388608, %ecx ## imm = 0x8000001431; SSE2-NEXT:    jne LBB8_471432; SSE2-NEXT:  LBB8_48: ## %else901433; SSE2-NEXT:    testl $16777216, %ecx ## imm = 0x10000001434; SSE2-NEXT:    jne LBB8_491435; SSE2-NEXT:  LBB8_50: ## %else941436; SSE2-NEXT:    testl $33554432, %ecx ## imm = 0x20000001437; SSE2-NEXT:    jne LBB8_511438; SSE2-NEXT:  LBB8_52: ## %else981439; SSE2-NEXT:    testl $67108864, %ecx ## imm = 0x40000001440; SSE2-NEXT:    jne LBB8_531441; SSE2-NEXT:  LBB8_54: ## %else1021442; SSE2-NEXT:    testl $134217728, %ecx ## imm = 0x80000001443; SSE2-NEXT:    jne LBB8_551444; SSE2-NEXT:  LBB8_56: ## %else1061445; SSE2-NEXT:    testl $268435456, %ecx ## imm = 0x100000001446; SSE2-NEXT:    jne LBB8_571447; SSE2-NEXT:  LBB8_58: ## %else1101448; SSE2-NEXT:    testl $536870912, %ecx ## imm = 0x200000001449; SSE2-NEXT:    jne LBB8_591450; SSE2-NEXT:  LBB8_60: ## %else1141451; SSE2-NEXT:    testl $1073741824, %ecx ## imm = 0x400000001452; SSE2-NEXT:    jne LBB8_611453; SSE2-NEXT:  LBB8_62: ## %else1181454; SSE2-NEXT:    testl $-2147483648, %ecx ## imm = 0x800000001455; SSE2-NEXT:    je LBB8_641456; SSE2-NEXT:  LBB8_63: ## %cond.load1211457; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1458; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[0,1],xmm7[2,3]1459; SSE2-NEXT:    shufps {{.*#+}} xmm7 = xmm7[0,1],xmm8[2,0]1460; SSE2-NEXT:  LBB8_64: ## %else1221461; SSE2-NEXT:    movaps %xmm0, (%rax)1462; SSE2-NEXT:    movaps %xmm1, 16(%rax)1463; SSE2-NEXT:    movaps %xmm2, 32(%rax)1464; SSE2-NEXT:    movaps %xmm3, 48(%rax)1465; SSE2-NEXT:    movaps %xmm4, 64(%rax)1466; SSE2-NEXT:    movaps %xmm5, 80(%rax)1467; SSE2-NEXT:    movaps %xmm6, 96(%rax)1468; SSE2-NEXT:    movaps %xmm7, 112(%rax)1469; SSE2-NEXT:    retq1470; SSE2-NEXT:  LBB8_1: ## %cond.load1471; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1472; SSE2-NEXT:    movss {{.*#+}} xmm0 = xmm8[0],xmm0[1,2,3]1473; SSE2-NEXT:    addq $4, %rsi1474; SSE2-NEXT:    testb $2, %cl1475; SSE2-NEXT:    je LBB8_41476; SSE2-NEXT:  LBB8_3: ## %cond.load11477; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1478; SSE2-NEXT:    movlhps {{.*#+}} xmm8 = xmm8[0],xmm0[0]1479; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[2,0],xmm0[2,3]1480; SSE2-NEXT:    addq $4, %rsi1481; SSE2-NEXT:    movaps %xmm8, %xmm01482; SSE2-NEXT:    testb $4, %cl1483; SSE2-NEXT:    je LBB8_61484; SSE2-NEXT:  LBB8_5: ## %cond.load51485; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1486; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[0,0],xmm0[3,0]1487; SSE2-NEXT:    shufps {{.*#+}} xmm0 = xmm0[0,1],xmm8[0,2]1488; SSE2-NEXT:    addq $4, %rsi1489; SSE2-NEXT:    testb $8, %cl1490; SSE2-NEXT:    je LBB8_81491; SSE2-NEXT:  LBB8_7: ## %cond.load91492; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1493; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[0,1],xmm0[2,3]1494; SSE2-NEXT:    shufps {{.*#+}} xmm0 = xmm0[0,1],xmm8[2,0]1495; SSE2-NEXT:    addq $4, %rsi1496; SSE2-NEXT:    testb $16, %cl1497; SSE2-NEXT:    je LBB8_101498; SSE2-NEXT:  LBB8_9: ## %cond.load131499; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1500; SSE2-NEXT:    movss {{.*#+}} xmm1 = xmm8[0],xmm1[1,2,3]1501; SSE2-NEXT:    addq $4, %rsi1502; SSE2-NEXT:    testb $32, %cl1503; SSE2-NEXT:    je LBB8_121504; SSE2-NEXT:  LBB8_11: ## %cond.load171505; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1506; SSE2-NEXT:    movlhps {{.*#+}} xmm8 = xmm8[0],xmm1[0]1507; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[2,0],xmm1[2,3]1508; SSE2-NEXT:    addq $4, %rsi1509; SSE2-NEXT:    movaps %xmm8, %xmm11510; SSE2-NEXT:    testb $64, %cl1511; SSE2-NEXT:    je LBB8_141512; SSE2-NEXT:  LBB8_13: ## %cond.load211513; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1514; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[0,0],xmm1[3,0]1515; SSE2-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,1],xmm8[0,2]1516; SSE2-NEXT:    addq $4, %rsi1517; SSE2-NEXT:    testb %cl, %cl1518; SSE2-NEXT:    jns LBB8_161519; SSE2-NEXT:  LBB8_15: ## %cond.load251520; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1521; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[0,1],xmm1[2,3]1522; SSE2-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,1],xmm8[2,0]1523; SSE2-NEXT:    addq $4, %rsi1524; SSE2-NEXT:    testl $256, %ecx ## imm = 0x1001525; SSE2-NEXT:    je LBB8_181526; SSE2-NEXT:  LBB8_17: ## %cond.load291527; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1528; SSE2-NEXT:    movss {{.*#+}} xmm2 = xmm8[0],xmm2[1,2,3]1529; SSE2-NEXT:    addq $4, %rsi1530; SSE2-NEXT:    testl $512, %ecx ## imm = 0x2001531; SSE2-NEXT:    je LBB8_201532; SSE2-NEXT:  LBB8_19: ## %cond.load331533; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1534; SSE2-NEXT:    movlhps {{.*#+}} xmm8 = xmm8[0],xmm2[0]1535; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[2,0],xmm2[2,3]1536; SSE2-NEXT:    addq $4, %rsi1537; SSE2-NEXT:    movaps %xmm8, %xmm21538; SSE2-NEXT:    testl $1024, %ecx ## imm = 0x4001539; SSE2-NEXT:    je LBB8_221540; SSE2-NEXT:  LBB8_21: ## %cond.load371541; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1542; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[0,0],xmm2[3,0]1543; SSE2-NEXT:    shufps {{.*#+}} xmm2 = xmm2[0,1],xmm8[0,2]1544; SSE2-NEXT:    addq $4, %rsi1545; SSE2-NEXT:    testl $2048, %ecx ## imm = 0x8001546; SSE2-NEXT:    je LBB8_241547; SSE2-NEXT:  LBB8_23: ## %cond.load411548; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1549; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[0,1],xmm2[2,3]1550; SSE2-NEXT:    shufps {{.*#+}} xmm2 = xmm2[0,1],xmm8[2,0]1551; SSE2-NEXT:    addq $4, %rsi1552; SSE2-NEXT:    testl $4096, %ecx ## imm = 0x10001553; SSE2-NEXT:    je LBB8_261554; SSE2-NEXT:  LBB8_25: ## %cond.load451555; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1556; SSE2-NEXT:    movss {{.*#+}} xmm3 = xmm8[0],xmm3[1,2,3]1557; SSE2-NEXT:    addq $4, %rsi1558; SSE2-NEXT:    testl $8192, %ecx ## imm = 0x20001559; SSE2-NEXT:    je LBB8_281560; SSE2-NEXT:  LBB8_27: ## %cond.load491561; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1562; SSE2-NEXT:    movlhps {{.*#+}} xmm8 = xmm8[0],xmm3[0]1563; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[2,0],xmm3[2,3]1564; SSE2-NEXT:    addq $4, %rsi1565; SSE2-NEXT:    movaps %xmm8, %xmm31566; SSE2-NEXT:    testl $16384, %ecx ## imm = 0x40001567; SSE2-NEXT:    je LBB8_301568; SSE2-NEXT:  LBB8_29: ## %cond.load531569; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1570; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[0,0],xmm3[3,0]1571; SSE2-NEXT:    shufps {{.*#+}} xmm3 = xmm3[0,1],xmm8[0,2]1572; SSE2-NEXT:    addq $4, %rsi1573; SSE2-NEXT:    testw %cx, %cx1574; SSE2-NEXT:    jns LBB8_321575; SSE2-NEXT:  LBB8_31: ## %cond.load571576; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1577; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[0,1],xmm3[2,3]1578; SSE2-NEXT:    shufps {{.*#+}} xmm3 = xmm3[0,1],xmm8[2,0]1579; SSE2-NEXT:    addq $4, %rsi1580; SSE2-NEXT:    testl $65536, %ecx ## imm = 0x100001581; SSE2-NEXT:    je LBB8_341582; SSE2-NEXT:  LBB8_33: ## %cond.load611583; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1584; SSE2-NEXT:    movss {{.*#+}} xmm4 = xmm8[0],xmm4[1,2,3]1585; SSE2-NEXT:    addq $4, %rsi1586; SSE2-NEXT:    testl $131072, %ecx ## imm = 0x200001587; SSE2-NEXT:    je LBB8_361588; SSE2-NEXT:  LBB8_35: ## %cond.load651589; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1590; SSE2-NEXT:    movlhps {{.*#+}} xmm8 = xmm8[0],xmm4[0]1591; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[2,0],xmm4[2,3]1592; SSE2-NEXT:    addq $4, %rsi1593; SSE2-NEXT:    movaps %xmm8, %xmm41594; SSE2-NEXT:    testl $262144, %ecx ## imm = 0x400001595; SSE2-NEXT:    je LBB8_381596; SSE2-NEXT:  LBB8_37: ## %cond.load691597; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1598; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[0,0],xmm4[3,0]1599; SSE2-NEXT:    shufps {{.*#+}} xmm4 = xmm4[0,1],xmm8[0,2]1600; SSE2-NEXT:    addq $4, %rsi1601; SSE2-NEXT:    testl $524288, %ecx ## imm = 0x800001602; SSE2-NEXT:    je LBB8_401603; SSE2-NEXT:  LBB8_39: ## %cond.load731604; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1605; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[0,1],xmm4[2,3]1606; SSE2-NEXT:    shufps {{.*#+}} xmm4 = xmm4[0,1],xmm8[2,0]1607; SSE2-NEXT:    addq $4, %rsi1608; SSE2-NEXT:    testl $1048576, %ecx ## imm = 0x1000001609; SSE2-NEXT:    je LBB8_421610; SSE2-NEXT:  LBB8_41: ## %cond.load771611; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1612; SSE2-NEXT:    movss {{.*#+}} xmm5 = xmm8[0],xmm5[1,2,3]1613; SSE2-NEXT:    addq $4, %rsi1614; SSE2-NEXT:    testl $2097152, %ecx ## imm = 0x2000001615; SSE2-NEXT:    je LBB8_441616; SSE2-NEXT:  LBB8_43: ## %cond.load811617; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1618; SSE2-NEXT:    movlhps {{.*#+}} xmm8 = xmm8[0],xmm5[0]1619; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[2,0],xmm5[2,3]1620; SSE2-NEXT:    addq $4, %rsi1621; SSE2-NEXT:    movaps %xmm8, %xmm51622; SSE2-NEXT:    testl $4194304, %ecx ## imm = 0x4000001623; SSE2-NEXT:    je LBB8_461624; SSE2-NEXT:  LBB8_45: ## %cond.load851625; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1626; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[0,0],xmm5[3,0]1627; SSE2-NEXT:    shufps {{.*#+}} xmm5 = xmm5[0,1],xmm8[0,2]1628; SSE2-NEXT:    addq $4, %rsi1629; SSE2-NEXT:    testl $8388608, %ecx ## imm = 0x8000001630; SSE2-NEXT:    je LBB8_481631; SSE2-NEXT:  LBB8_47: ## %cond.load891632; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1633; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[0,1],xmm5[2,3]1634; SSE2-NEXT:    shufps {{.*#+}} xmm5 = xmm5[0,1],xmm8[2,0]1635; SSE2-NEXT:    addq $4, %rsi1636; SSE2-NEXT:    testl $16777216, %ecx ## imm = 0x10000001637; SSE2-NEXT:    je LBB8_501638; SSE2-NEXT:  LBB8_49: ## %cond.load931639; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1640; SSE2-NEXT:    movss {{.*#+}} xmm6 = xmm8[0],xmm6[1,2,3]1641; SSE2-NEXT:    addq $4, %rsi1642; SSE2-NEXT:    testl $33554432, %ecx ## imm = 0x20000001643; SSE2-NEXT:    je LBB8_521644; SSE2-NEXT:  LBB8_51: ## %cond.load971645; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1646; SSE2-NEXT:    movlhps {{.*#+}} xmm8 = xmm8[0],xmm6[0]1647; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[2,0],xmm6[2,3]1648; SSE2-NEXT:    addq $4, %rsi1649; SSE2-NEXT:    movaps %xmm8, %xmm61650; SSE2-NEXT:    testl $67108864, %ecx ## imm = 0x40000001651; SSE2-NEXT:    je LBB8_541652; SSE2-NEXT:  LBB8_53: ## %cond.load1011653; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1654; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[0,0],xmm6[3,0]1655; SSE2-NEXT:    shufps {{.*#+}} xmm6 = xmm6[0,1],xmm8[0,2]1656; SSE2-NEXT:    addq $4, %rsi1657; SSE2-NEXT:    testl $134217728, %ecx ## imm = 0x80000001658; SSE2-NEXT:    je LBB8_561659; SSE2-NEXT:  LBB8_55: ## %cond.load1051660; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1661; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[0,1],xmm6[2,3]1662; SSE2-NEXT:    shufps {{.*#+}} xmm6 = xmm6[0,1],xmm8[2,0]1663; SSE2-NEXT:    addq $4, %rsi1664; SSE2-NEXT:    testl $268435456, %ecx ## imm = 0x100000001665; SSE2-NEXT:    je LBB8_581666; SSE2-NEXT:  LBB8_57: ## %cond.load1091667; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1668; SSE2-NEXT:    movss {{.*#+}} xmm7 = xmm8[0],xmm7[1,2,3]1669; SSE2-NEXT:    addq $4, %rsi1670; SSE2-NEXT:    testl $536870912, %ecx ## imm = 0x200000001671; SSE2-NEXT:    je LBB8_601672; SSE2-NEXT:  LBB8_59: ## %cond.load1131673; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1674; SSE2-NEXT:    movlhps {{.*#+}} xmm8 = xmm8[0],xmm7[0]1675; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[2,0],xmm7[2,3]1676; SSE2-NEXT:    addq $4, %rsi1677; SSE2-NEXT:    movaps %xmm8, %xmm71678; SSE2-NEXT:    testl $1073741824, %ecx ## imm = 0x400000001679; SSE2-NEXT:    je LBB8_621680; SSE2-NEXT:  LBB8_61: ## %cond.load1171681; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1682; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[0,0],xmm7[3,0]1683; SSE2-NEXT:    shufps {{.*#+}} xmm7 = xmm7[0,1],xmm8[0,2]1684; SSE2-NEXT:    addq $4, %rsi1685; SSE2-NEXT:    testl $-2147483648, %ecx ## imm = 0x800000001686; SSE2-NEXT:    jne LBB8_631687; SSE2-NEXT:    jmp LBB8_641688;1689; SSE42-LABEL: expandload_v32f32_v32i32:1690; SSE42:       ## %bb.0:1691; SSE42-NEXT:    movq %rdi, %rax1692; SSE42-NEXT:    pxor %xmm8, %xmm81693; SSE42-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm91694; SSE42-NEXT:    pcmpeqd %xmm8, %xmm91695; SSE42-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm101696; SSE42-NEXT:    pcmpeqd %xmm8, %xmm101697; SSE42-NEXT:    packssdw %xmm9, %xmm101698; SSE42-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm91699; SSE42-NEXT:    pcmpeqd %xmm8, %xmm91700; SSE42-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm111701; SSE42-NEXT:    pcmpeqd %xmm8, %xmm111702; SSE42-NEXT:    packssdw %xmm9, %xmm111703; SSE42-NEXT:    packsswb %xmm10, %xmm111704; SSE42-NEXT:    pmovmskb %xmm11, %edx1705; SSE42-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm91706; SSE42-NEXT:    pcmpeqd %xmm8, %xmm91707; SSE42-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm101708; SSE42-NEXT:    pcmpeqd %xmm8, %xmm101709; SSE42-NEXT:    packssdw %xmm9, %xmm101710; SSE42-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm91711; SSE42-NEXT:    pcmpeqd %xmm8, %xmm91712; SSE42-NEXT:    pcmpeqd {{[0-9]+}}(%rsp), %xmm81713; SSE42-NEXT:    packssdw %xmm9, %xmm81714; SSE42-NEXT:    packsswb %xmm10, %xmm81715; SSE42-NEXT:    pmovmskb %xmm8, %ecx1716; SSE42-NEXT:    shll $16, %ecx1717; SSE42-NEXT:    orl %edx, %ecx1718; SSE42-NEXT:    testb $1, %cl1719; SSE42-NEXT:    jne LBB8_11720; SSE42-NEXT:  ## %bb.2: ## %else1721; SSE42-NEXT:    testb $2, %cl1722; SSE42-NEXT:    jne LBB8_31723; SSE42-NEXT:  LBB8_4: ## %else21724; SSE42-NEXT:    testb $4, %cl1725; SSE42-NEXT:    jne LBB8_51726; SSE42-NEXT:  LBB8_6: ## %else61727; SSE42-NEXT:    testb $8, %cl1728; SSE42-NEXT:    jne LBB8_71729; SSE42-NEXT:  LBB8_8: ## %else101730; SSE42-NEXT:    testb $16, %cl1731; SSE42-NEXT:    jne LBB8_91732; SSE42-NEXT:  LBB8_10: ## %else141733; SSE42-NEXT:    testb $32, %cl1734; SSE42-NEXT:    jne LBB8_111735; SSE42-NEXT:  LBB8_12: ## %else181736; SSE42-NEXT:    testb $64, %cl1737; SSE42-NEXT:    jne LBB8_131738; SSE42-NEXT:  LBB8_14: ## %else221739; SSE42-NEXT:    testb %cl, %cl1740; SSE42-NEXT:    js LBB8_151741; SSE42-NEXT:  LBB8_16: ## %else261742; SSE42-NEXT:    testl $256, %ecx ## imm = 0x1001743; SSE42-NEXT:    jne LBB8_171744; SSE42-NEXT:  LBB8_18: ## %else301745; SSE42-NEXT:    testl $512, %ecx ## imm = 0x2001746; SSE42-NEXT:    jne LBB8_191747; SSE42-NEXT:  LBB8_20: ## %else341748; SSE42-NEXT:    testl $1024, %ecx ## imm = 0x4001749; SSE42-NEXT:    jne LBB8_211750; SSE42-NEXT:  LBB8_22: ## %else381751; SSE42-NEXT:    testl $2048, %ecx ## imm = 0x8001752; SSE42-NEXT:    jne LBB8_231753; SSE42-NEXT:  LBB8_24: ## %else421754; SSE42-NEXT:    testl $4096, %ecx ## imm = 0x10001755; SSE42-NEXT:    jne LBB8_251756; SSE42-NEXT:  LBB8_26: ## %else461757; SSE42-NEXT:    testl $8192, %ecx ## imm = 0x20001758; SSE42-NEXT:    jne LBB8_271759; SSE42-NEXT:  LBB8_28: ## %else501760; SSE42-NEXT:    testl $16384, %ecx ## imm = 0x40001761; SSE42-NEXT:    jne LBB8_291762; SSE42-NEXT:  LBB8_30: ## %else541763; SSE42-NEXT:    testw %cx, %cx1764; SSE42-NEXT:    js LBB8_311765; SSE42-NEXT:  LBB8_32: ## %else581766; SSE42-NEXT:    testl $65536, %ecx ## imm = 0x100001767; SSE42-NEXT:    jne LBB8_331768; SSE42-NEXT:  LBB8_34: ## %else621769; SSE42-NEXT:    testl $131072, %ecx ## imm = 0x200001770; SSE42-NEXT:    jne LBB8_351771; SSE42-NEXT:  LBB8_36: ## %else661772; SSE42-NEXT:    testl $262144, %ecx ## imm = 0x400001773; SSE42-NEXT:    jne LBB8_371774; SSE42-NEXT:  LBB8_38: ## %else701775; SSE42-NEXT:    testl $524288, %ecx ## imm = 0x800001776; SSE42-NEXT:    jne LBB8_391777; SSE42-NEXT:  LBB8_40: ## %else741778; SSE42-NEXT:    testl $1048576, %ecx ## imm = 0x1000001779; SSE42-NEXT:    jne LBB8_411780; SSE42-NEXT:  LBB8_42: ## %else781781; SSE42-NEXT:    testl $2097152, %ecx ## imm = 0x2000001782; SSE42-NEXT:    jne LBB8_431783; SSE42-NEXT:  LBB8_44: ## %else821784; SSE42-NEXT:    testl $4194304, %ecx ## imm = 0x4000001785; SSE42-NEXT:    jne LBB8_451786; SSE42-NEXT:  LBB8_46: ## %else861787; SSE42-NEXT:    testl $8388608, %ecx ## imm = 0x8000001788; SSE42-NEXT:    jne LBB8_471789; SSE42-NEXT:  LBB8_48: ## %else901790; SSE42-NEXT:    testl $16777216, %ecx ## imm = 0x10000001791; SSE42-NEXT:    jne LBB8_491792; SSE42-NEXT:  LBB8_50: ## %else941793; SSE42-NEXT:    testl $33554432, %ecx ## imm = 0x20000001794; SSE42-NEXT:    jne LBB8_511795; SSE42-NEXT:  LBB8_52: ## %else981796; SSE42-NEXT:    testl $67108864, %ecx ## imm = 0x40000001797; SSE42-NEXT:    jne LBB8_531798; SSE42-NEXT:  LBB8_54: ## %else1021799; SSE42-NEXT:    testl $134217728, %ecx ## imm = 0x80000001800; SSE42-NEXT:    jne LBB8_551801; SSE42-NEXT:  LBB8_56: ## %else1061802; SSE42-NEXT:    testl $268435456, %ecx ## imm = 0x100000001803; SSE42-NEXT:    jne LBB8_571804; SSE42-NEXT:  LBB8_58: ## %else1101805; SSE42-NEXT:    testl $536870912, %ecx ## imm = 0x200000001806; SSE42-NEXT:    jne LBB8_591807; SSE42-NEXT:  LBB8_60: ## %else1141808; SSE42-NEXT:    testl $1073741824, %ecx ## imm = 0x400000001809; SSE42-NEXT:    jne LBB8_611810; SSE42-NEXT:  LBB8_62: ## %else1181811; SSE42-NEXT:    testl $-2147483648, %ecx ## imm = 0x800000001812; SSE42-NEXT:    je LBB8_641813; SSE42-NEXT:  LBB8_63: ## %cond.load1211814; SSE42-NEXT:    insertps $48, (%rsi), %xmm7 ## xmm7 = xmm7[0,1,2],mem[0]1815; SSE42-NEXT:  LBB8_64: ## %else1221816; SSE42-NEXT:    movaps %xmm0, (%rax)1817; SSE42-NEXT:    movaps %xmm1, 16(%rax)1818; SSE42-NEXT:    movaps %xmm2, 32(%rax)1819; SSE42-NEXT:    movaps %xmm3, 48(%rax)1820; SSE42-NEXT:    movaps %xmm4, 64(%rax)1821; SSE42-NEXT:    movaps %xmm5, 80(%rax)1822; SSE42-NEXT:    movaps %xmm6, 96(%rax)1823; SSE42-NEXT:    movaps %xmm7, 112(%rax)1824; SSE42-NEXT:    retq1825; SSE42-NEXT:  LBB8_1: ## %cond.load1826; SSE42-NEXT:    movd (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1827; SSE42-NEXT:    pblendw {{.*#+}} xmm0 = xmm8[0,1],xmm0[2,3,4,5,6,7]1828; SSE42-NEXT:    addq $4, %rsi1829; SSE42-NEXT:    testb $2, %cl1830; SSE42-NEXT:    je LBB8_41831; SSE42-NEXT:  LBB8_3: ## %cond.load11832; SSE42-NEXT:    insertps $16, (%rsi), %xmm0 ## xmm0 = xmm0[0],mem[0],xmm0[2,3]1833; SSE42-NEXT:    addq $4, %rsi1834; SSE42-NEXT:    testb $4, %cl1835; SSE42-NEXT:    je LBB8_61836; SSE42-NEXT:  LBB8_5: ## %cond.load51837; SSE42-NEXT:    insertps $32, (%rsi), %xmm0 ## xmm0 = xmm0[0,1],mem[0],xmm0[3]1838; SSE42-NEXT:    addq $4, %rsi1839; SSE42-NEXT:    testb $8, %cl1840; SSE42-NEXT:    je LBB8_81841; SSE42-NEXT:  LBB8_7: ## %cond.load91842; SSE42-NEXT:    insertps $48, (%rsi), %xmm0 ## xmm0 = xmm0[0,1,2],mem[0]1843; SSE42-NEXT:    addq $4, %rsi1844; SSE42-NEXT:    testb $16, %cl1845; SSE42-NEXT:    je LBB8_101846; SSE42-NEXT:  LBB8_9: ## %cond.load131847; SSE42-NEXT:    movd (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1848; SSE42-NEXT:    pblendw {{.*#+}} xmm1 = xmm8[0,1],xmm1[2,3,4,5,6,7]1849; SSE42-NEXT:    addq $4, %rsi1850; SSE42-NEXT:    testb $32, %cl1851; SSE42-NEXT:    je LBB8_121852; SSE42-NEXT:  LBB8_11: ## %cond.load171853; SSE42-NEXT:    insertps $16, (%rsi), %xmm1 ## xmm1 = xmm1[0],mem[0],xmm1[2,3]1854; SSE42-NEXT:    addq $4, %rsi1855; SSE42-NEXT:    testb $64, %cl1856; SSE42-NEXT:    je LBB8_141857; SSE42-NEXT:  LBB8_13: ## %cond.load211858; SSE42-NEXT:    insertps $32, (%rsi), %xmm1 ## xmm1 = xmm1[0,1],mem[0],xmm1[3]1859; SSE42-NEXT:    addq $4, %rsi1860; SSE42-NEXT:    testb %cl, %cl1861; SSE42-NEXT:    jns LBB8_161862; SSE42-NEXT:  LBB8_15: ## %cond.load251863; SSE42-NEXT:    insertps $48, (%rsi), %xmm1 ## xmm1 = xmm1[0,1,2],mem[0]1864; SSE42-NEXT:    addq $4, %rsi1865; SSE42-NEXT:    testl $256, %ecx ## imm = 0x1001866; SSE42-NEXT:    je LBB8_181867; SSE42-NEXT:  LBB8_17: ## %cond.load291868; SSE42-NEXT:    movd (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1869; SSE42-NEXT:    pblendw {{.*#+}} xmm2 = xmm8[0,1],xmm2[2,3,4,5,6,7]1870; SSE42-NEXT:    addq $4, %rsi1871; SSE42-NEXT:    testl $512, %ecx ## imm = 0x2001872; SSE42-NEXT:    je LBB8_201873; SSE42-NEXT:  LBB8_19: ## %cond.load331874; SSE42-NEXT:    insertps $16, (%rsi), %xmm2 ## xmm2 = xmm2[0],mem[0],xmm2[2,3]1875; SSE42-NEXT:    addq $4, %rsi1876; SSE42-NEXT:    testl $1024, %ecx ## imm = 0x4001877; SSE42-NEXT:    je LBB8_221878; SSE42-NEXT:  LBB8_21: ## %cond.load371879; SSE42-NEXT:    insertps $32, (%rsi), %xmm2 ## xmm2 = xmm2[0,1],mem[0],xmm2[3]1880; SSE42-NEXT:    addq $4, %rsi1881; SSE42-NEXT:    testl $2048, %ecx ## imm = 0x8001882; SSE42-NEXT:    je LBB8_241883; SSE42-NEXT:  LBB8_23: ## %cond.load411884; SSE42-NEXT:    insertps $48, (%rsi), %xmm2 ## xmm2 = xmm2[0,1,2],mem[0]1885; SSE42-NEXT:    addq $4, %rsi1886; SSE42-NEXT:    testl $4096, %ecx ## imm = 0x10001887; SSE42-NEXT:    je LBB8_261888; SSE42-NEXT:  LBB8_25: ## %cond.load451889; SSE42-NEXT:    movd (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1890; SSE42-NEXT:    pblendw {{.*#+}} xmm3 = xmm8[0,1],xmm3[2,3,4,5,6,7]1891; SSE42-NEXT:    addq $4, %rsi1892; SSE42-NEXT:    testl $8192, %ecx ## imm = 0x20001893; SSE42-NEXT:    je LBB8_281894; SSE42-NEXT:  LBB8_27: ## %cond.load491895; SSE42-NEXT:    insertps $16, (%rsi), %xmm3 ## xmm3 = xmm3[0],mem[0],xmm3[2,3]1896; SSE42-NEXT:    addq $4, %rsi1897; SSE42-NEXT:    testl $16384, %ecx ## imm = 0x40001898; SSE42-NEXT:    je LBB8_301899; SSE42-NEXT:  LBB8_29: ## %cond.load531900; SSE42-NEXT:    insertps $32, (%rsi), %xmm3 ## xmm3 = xmm3[0,1],mem[0],xmm3[3]1901; SSE42-NEXT:    addq $4, %rsi1902; SSE42-NEXT:    testw %cx, %cx1903; SSE42-NEXT:    jns LBB8_321904; SSE42-NEXT:  LBB8_31: ## %cond.load571905; SSE42-NEXT:    insertps $48, (%rsi), %xmm3 ## xmm3 = xmm3[0,1,2],mem[0]1906; SSE42-NEXT:    addq $4, %rsi1907; SSE42-NEXT:    testl $65536, %ecx ## imm = 0x100001908; SSE42-NEXT:    je LBB8_341909; SSE42-NEXT:  LBB8_33: ## %cond.load611910; SSE42-NEXT:    movd (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1911; SSE42-NEXT:    pblendw {{.*#+}} xmm4 = xmm8[0,1],xmm4[2,3,4,5,6,7]1912; SSE42-NEXT:    addq $4, %rsi1913; SSE42-NEXT:    testl $131072, %ecx ## imm = 0x200001914; SSE42-NEXT:    je LBB8_361915; SSE42-NEXT:  LBB8_35: ## %cond.load651916; SSE42-NEXT:    insertps $16, (%rsi), %xmm4 ## xmm4 = xmm4[0],mem[0],xmm4[2,3]1917; SSE42-NEXT:    addq $4, %rsi1918; SSE42-NEXT:    testl $262144, %ecx ## imm = 0x400001919; SSE42-NEXT:    je LBB8_381920; SSE42-NEXT:  LBB8_37: ## %cond.load691921; SSE42-NEXT:    insertps $32, (%rsi), %xmm4 ## xmm4 = xmm4[0,1],mem[0],xmm4[3]1922; SSE42-NEXT:    addq $4, %rsi1923; SSE42-NEXT:    testl $524288, %ecx ## imm = 0x800001924; SSE42-NEXT:    je LBB8_401925; SSE42-NEXT:  LBB8_39: ## %cond.load731926; SSE42-NEXT:    insertps $48, (%rsi), %xmm4 ## xmm4 = xmm4[0,1,2],mem[0]1927; SSE42-NEXT:    addq $4, %rsi1928; SSE42-NEXT:    testl $1048576, %ecx ## imm = 0x1000001929; SSE42-NEXT:    je LBB8_421930; SSE42-NEXT:  LBB8_41: ## %cond.load771931; SSE42-NEXT:    movd (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1932; SSE42-NEXT:    pblendw {{.*#+}} xmm5 = xmm8[0,1],xmm5[2,3,4,5,6,7]1933; SSE42-NEXT:    addq $4, %rsi1934; SSE42-NEXT:    testl $2097152, %ecx ## imm = 0x2000001935; SSE42-NEXT:    je LBB8_441936; SSE42-NEXT:  LBB8_43: ## %cond.load811937; SSE42-NEXT:    insertps $16, (%rsi), %xmm5 ## xmm5 = xmm5[0],mem[0],xmm5[2,3]1938; SSE42-NEXT:    addq $4, %rsi1939; SSE42-NEXT:    testl $4194304, %ecx ## imm = 0x4000001940; SSE42-NEXT:    je LBB8_461941; SSE42-NEXT:  LBB8_45: ## %cond.load851942; SSE42-NEXT:    insertps $32, (%rsi), %xmm5 ## xmm5 = xmm5[0,1],mem[0],xmm5[3]1943; SSE42-NEXT:    addq $4, %rsi1944; SSE42-NEXT:    testl $8388608, %ecx ## imm = 0x8000001945; SSE42-NEXT:    je LBB8_481946; SSE42-NEXT:  LBB8_47: ## %cond.load891947; SSE42-NEXT:    insertps $48, (%rsi), %xmm5 ## xmm5 = xmm5[0,1,2],mem[0]1948; SSE42-NEXT:    addq $4, %rsi1949; SSE42-NEXT:    testl $16777216, %ecx ## imm = 0x10000001950; SSE42-NEXT:    je LBB8_501951; SSE42-NEXT:  LBB8_49: ## %cond.load931952; SSE42-NEXT:    movd (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1953; SSE42-NEXT:    pblendw {{.*#+}} xmm6 = xmm8[0,1],xmm6[2,3,4,5,6,7]1954; SSE42-NEXT:    addq $4, %rsi1955; SSE42-NEXT:    testl $33554432, %ecx ## imm = 0x20000001956; SSE42-NEXT:    je LBB8_521957; SSE42-NEXT:  LBB8_51: ## %cond.load971958; SSE42-NEXT:    insertps $16, (%rsi), %xmm6 ## xmm6 = xmm6[0],mem[0],xmm6[2,3]1959; SSE42-NEXT:    addq $4, %rsi1960; SSE42-NEXT:    testl $67108864, %ecx ## imm = 0x40000001961; SSE42-NEXT:    je LBB8_541962; SSE42-NEXT:  LBB8_53: ## %cond.load1011963; SSE42-NEXT:    insertps $32, (%rsi), %xmm6 ## xmm6 = xmm6[0,1],mem[0],xmm6[3]1964; SSE42-NEXT:    addq $4, %rsi1965; SSE42-NEXT:    testl $134217728, %ecx ## imm = 0x80000001966; SSE42-NEXT:    je LBB8_561967; SSE42-NEXT:  LBB8_55: ## %cond.load1051968; SSE42-NEXT:    insertps $48, (%rsi), %xmm6 ## xmm6 = xmm6[0,1,2],mem[0]1969; SSE42-NEXT:    addq $4, %rsi1970; SSE42-NEXT:    testl $268435456, %ecx ## imm = 0x100000001971; SSE42-NEXT:    je LBB8_581972; SSE42-NEXT:  LBB8_57: ## %cond.load1091973; SSE42-NEXT:    movd (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero1974; SSE42-NEXT:    pblendw {{.*#+}} xmm7 = xmm8[0,1],xmm7[2,3,4,5,6,7]1975; SSE42-NEXT:    addq $4, %rsi1976; SSE42-NEXT:    testl $536870912, %ecx ## imm = 0x200000001977; SSE42-NEXT:    je LBB8_601978; SSE42-NEXT:  LBB8_59: ## %cond.load1131979; SSE42-NEXT:    insertps $16, (%rsi), %xmm7 ## xmm7 = xmm7[0],mem[0],xmm7[2,3]1980; SSE42-NEXT:    addq $4, %rsi1981; SSE42-NEXT:    testl $1073741824, %ecx ## imm = 0x400000001982; SSE42-NEXT:    je LBB8_621983; SSE42-NEXT:  LBB8_61: ## %cond.load1171984; SSE42-NEXT:    insertps $32, (%rsi), %xmm7 ## xmm7 = xmm7[0,1],mem[0],xmm7[3]1985; SSE42-NEXT:    addq $4, %rsi1986; SSE42-NEXT:    testl $-2147483648, %ecx ## imm = 0x800000001987; SSE42-NEXT:    jne LBB8_631988; SSE42-NEXT:    jmp LBB8_641989;1990; AVX1-LABEL: expandload_v32f32_v32i32:1991; AVX1:       ## %bb.0:1992; AVX1-NEXT:    vextractf128 $1, %ymm5, %xmm81993; AVX1-NEXT:    vpxor %xmm9, %xmm9, %xmm91994; AVX1-NEXT:    vpcmpeqd %xmm9, %xmm8, %xmm81995; AVX1-NEXT:    vpcmpeqd %xmm5, %xmm9, %xmm51996; AVX1-NEXT:    vpackssdw %xmm8, %xmm5, %xmm51997; AVX1-NEXT:    vextractf128 $1, %ymm4, %xmm81998; AVX1-NEXT:    vpcmpeqd %xmm9, %xmm8, %xmm81999; AVX1-NEXT:    vpcmpeqd %xmm4, %xmm9, %xmm42000; AVX1-NEXT:    vpackssdw %xmm8, %xmm4, %xmm42001; AVX1-NEXT:    vpacksswb %xmm5, %xmm4, %xmm42002; AVX1-NEXT:    vpmovmskb %xmm4, %ecx2003; AVX1-NEXT:    vextractf128 $1, %ymm7, %xmm42004; AVX1-NEXT:    vpcmpeqd %xmm4, %xmm9, %xmm42005; AVX1-NEXT:    vpcmpeqd %xmm7, %xmm9, %xmm52006; AVX1-NEXT:    vpackssdw %xmm4, %xmm5, %xmm42007; AVX1-NEXT:    vextractf128 $1, %ymm6, %xmm52008; AVX1-NEXT:    vpcmpeqd %xmm5, %xmm9, %xmm52009; AVX1-NEXT:    vpcmpeqd %xmm6, %xmm9, %xmm62010; AVX1-NEXT:    vpackssdw %xmm5, %xmm6, %xmm52011; AVX1-NEXT:    vpacksswb %xmm4, %xmm5, %xmm42012; AVX1-NEXT:    vpmovmskb %xmm4, %eax2013; AVX1-NEXT:    shll $16, %eax2014; AVX1-NEXT:    orl %ecx, %eax2015; AVX1-NEXT:    testb $1, %al2016; AVX1-NEXT:    jne LBB8_12017; AVX1-NEXT:  ## %bb.2: ## %else2018; AVX1-NEXT:    testb $2, %al2019; AVX1-NEXT:    jne LBB8_32020; AVX1-NEXT:  LBB8_4: ## %else22021; AVX1-NEXT:    testb $4, %al2022; AVX1-NEXT:    jne LBB8_52023; AVX1-NEXT:  LBB8_6: ## %else62024; AVX1-NEXT:    testb $8, %al2025; AVX1-NEXT:    jne LBB8_72026; AVX1-NEXT:  LBB8_8: ## %else102027; AVX1-NEXT:    testb $16, %al2028; AVX1-NEXT:    jne LBB8_92029; AVX1-NEXT:  LBB8_10: ## %else142030; AVX1-NEXT:    testb $32, %al2031; AVX1-NEXT:    jne LBB8_112032; AVX1-NEXT:  LBB8_12: ## %else182033; AVX1-NEXT:    testb $64, %al2034; AVX1-NEXT:    jne LBB8_132035; AVX1-NEXT:  LBB8_14: ## %else222036; AVX1-NEXT:    testb %al, %al2037; AVX1-NEXT:    js LBB8_152038; AVX1-NEXT:  LBB8_16: ## %else262039; AVX1-NEXT:    testl $256, %eax ## imm = 0x1002040; AVX1-NEXT:    jne LBB8_172041; AVX1-NEXT:  LBB8_18: ## %else302042; AVX1-NEXT:    testl $512, %eax ## imm = 0x2002043; AVX1-NEXT:    jne LBB8_192044; AVX1-NEXT:  LBB8_20: ## %else342045; AVX1-NEXT:    testl $1024, %eax ## imm = 0x4002046; AVX1-NEXT:    jne LBB8_212047; AVX1-NEXT:  LBB8_22: ## %else382048; AVX1-NEXT:    testl $2048, %eax ## imm = 0x8002049; AVX1-NEXT:    jne LBB8_232050; AVX1-NEXT:  LBB8_24: ## %else422051; AVX1-NEXT:    testl $4096, %eax ## imm = 0x10002052; AVX1-NEXT:    jne LBB8_252053; AVX1-NEXT:  LBB8_26: ## %else462054; AVX1-NEXT:    testl $8192, %eax ## imm = 0x20002055; AVX1-NEXT:    jne LBB8_272056; AVX1-NEXT:  LBB8_28: ## %else502057; AVX1-NEXT:    testl $16384, %eax ## imm = 0x40002058; AVX1-NEXT:    jne LBB8_292059; AVX1-NEXT:  LBB8_30: ## %else542060; AVX1-NEXT:    testw %ax, %ax2061; AVX1-NEXT:    js LBB8_312062; AVX1-NEXT:  LBB8_32: ## %else582063; AVX1-NEXT:    testl $65536, %eax ## imm = 0x100002064; AVX1-NEXT:    jne LBB8_332065; AVX1-NEXT:  LBB8_34: ## %else622066; AVX1-NEXT:    testl $131072, %eax ## imm = 0x200002067; AVX1-NEXT:    jne LBB8_352068; AVX1-NEXT:  LBB8_36: ## %else662069; AVX1-NEXT:    testl $262144, %eax ## imm = 0x400002070; AVX1-NEXT:    jne LBB8_372071; AVX1-NEXT:  LBB8_38: ## %else702072; AVX1-NEXT:    testl $524288, %eax ## imm = 0x800002073; AVX1-NEXT:    jne LBB8_392074; AVX1-NEXT:  LBB8_40: ## %else742075; AVX1-NEXT:    testl $1048576, %eax ## imm = 0x1000002076; AVX1-NEXT:    jne LBB8_412077; AVX1-NEXT:  LBB8_42: ## %else782078; AVX1-NEXT:    testl $2097152, %eax ## imm = 0x2000002079; AVX1-NEXT:    jne LBB8_432080; AVX1-NEXT:  LBB8_44: ## %else822081; AVX1-NEXT:    testl $4194304, %eax ## imm = 0x4000002082; AVX1-NEXT:    jne LBB8_452083; AVX1-NEXT:  LBB8_46: ## %else862084; AVX1-NEXT:    testl $8388608, %eax ## imm = 0x8000002085; AVX1-NEXT:    jne LBB8_472086; AVX1-NEXT:  LBB8_48: ## %else902087; AVX1-NEXT:    testl $16777216, %eax ## imm = 0x10000002088; AVX1-NEXT:    jne LBB8_492089; AVX1-NEXT:  LBB8_50: ## %else942090; AVX1-NEXT:    testl $33554432, %eax ## imm = 0x20000002091; AVX1-NEXT:    jne LBB8_512092; AVX1-NEXT:  LBB8_52: ## %else982093; AVX1-NEXT:    testl $67108864, %eax ## imm = 0x40000002094; AVX1-NEXT:    jne LBB8_532095; AVX1-NEXT:  LBB8_54: ## %else1022096; AVX1-NEXT:    testl $134217728, %eax ## imm = 0x80000002097; AVX1-NEXT:    jne LBB8_552098; AVX1-NEXT:  LBB8_56: ## %else1062099; AVX1-NEXT:    testl $268435456, %eax ## imm = 0x100000002100; AVX1-NEXT:    jne LBB8_572101; AVX1-NEXT:  LBB8_58: ## %else1102102; AVX1-NEXT:    testl $536870912, %eax ## imm = 0x200000002103; AVX1-NEXT:    jne LBB8_592104; AVX1-NEXT:  LBB8_60: ## %else1142105; AVX1-NEXT:    testl $1073741824, %eax ## imm = 0x400000002106; AVX1-NEXT:    jne LBB8_612107; AVX1-NEXT:  LBB8_62: ## %else1182108; AVX1-NEXT:    testl $-2147483648, %eax ## imm = 0x800000002109; AVX1-NEXT:    jne LBB8_632110; AVX1-NEXT:  LBB8_64: ## %else1222111; AVX1-NEXT:    retq2112; AVX1-NEXT:  LBB8_1: ## %cond.load2113; AVX1-NEXT:    vmovss (%rdi), %xmm4 ## xmm4 = mem[0],zero,zero,zero2114; AVX1-NEXT:    vblendps {{.*#+}} ymm0 = ymm4[0],ymm0[1,2,3,4,5,6,7]2115; AVX1-NEXT:    addq $4, %rdi2116; AVX1-NEXT:    testb $2, %al2117; AVX1-NEXT:    je LBB8_42118; AVX1-NEXT:  LBB8_3: ## %cond.load12119; AVX1-NEXT:    vinsertps $16, (%rdi), %xmm0, %xmm4 ## xmm4 = xmm0[0],mem[0],xmm0[2,3]2120; AVX1-NEXT:    vblendps {{.*#+}} ymm0 = ymm4[0,1,2,3],ymm0[4,5,6,7]2121; AVX1-NEXT:    addq $4, %rdi2122; AVX1-NEXT:    testb $4, %al2123; AVX1-NEXT:    je LBB8_62124; AVX1-NEXT:  LBB8_5: ## %cond.load52125; AVX1-NEXT:    vinsertps $32, (%rdi), %xmm0, %xmm4 ## xmm4 = xmm0[0,1],mem[0],xmm0[3]2126; AVX1-NEXT:    vblendps {{.*#+}} ymm0 = ymm4[0,1,2,3],ymm0[4,5,6,7]2127; AVX1-NEXT:    addq $4, %rdi2128; AVX1-NEXT:    testb $8, %al2129; AVX1-NEXT:    je LBB8_82130; AVX1-NEXT:  LBB8_7: ## %cond.load92131; AVX1-NEXT:    vinsertps $48, (%rdi), %xmm0, %xmm4 ## xmm4 = xmm0[0,1,2],mem[0]2132; AVX1-NEXT:    vblendps {{.*#+}} ymm0 = ymm4[0,1,2,3],ymm0[4,5,6,7]2133; AVX1-NEXT:    addq $4, %rdi2134; AVX1-NEXT:    testb $16, %al2135; AVX1-NEXT:    je LBB8_102136; AVX1-NEXT:  LBB8_9: ## %cond.load132137; AVX1-NEXT:    vbroadcastss (%rdi), %ymm42138; AVX1-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm4[4],ymm0[5,6,7]2139; AVX1-NEXT:    addq $4, %rdi2140; AVX1-NEXT:    testb $32, %al2141; AVX1-NEXT:    je LBB8_122142; AVX1-NEXT:  LBB8_11: ## %cond.load172143; AVX1-NEXT:    vbroadcastss (%rdi), %ymm42144; AVX1-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3,4],ymm4[5],ymm0[6,7]2145; AVX1-NEXT:    addq $4, %rdi2146; AVX1-NEXT:    testb $64, %al2147; AVX1-NEXT:    je LBB8_142148; AVX1-NEXT:  LBB8_13: ## %cond.load212149; AVX1-NEXT:    vbroadcastss (%rdi), %ymm42150; AVX1-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5],ymm4[6],ymm0[7]2151; AVX1-NEXT:    addq $4, %rdi2152; AVX1-NEXT:    testb %al, %al2153; AVX1-NEXT:    jns LBB8_162154; AVX1-NEXT:  LBB8_15: ## %cond.load252155; AVX1-NEXT:    vbroadcastss (%rdi), %ymm42156; AVX1-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5,6],ymm4[7]2157; AVX1-NEXT:    addq $4, %rdi2158; AVX1-NEXT:    testl $256, %eax ## imm = 0x1002159; AVX1-NEXT:    je LBB8_182160; AVX1-NEXT:  LBB8_17: ## %cond.load292161; AVX1-NEXT:    vmovss (%rdi), %xmm4 ## xmm4 = mem[0],zero,zero,zero2162; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm4[0],ymm1[1,2,3,4,5,6,7]2163; AVX1-NEXT:    addq $4, %rdi2164; AVX1-NEXT:    testl $512, %eax ## imm = 0x2002165; AVX1-NEXT:    je LBB8_202166; AVX1-NEXT:  LBB8_19: ## %cond.load332167; AVX1-NEXT:    vinsertps $16, (%rdi), %xmm1, %xmm4 ## xmm4 = xmm1[0],mem[0],xmm1[2,3]2168; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm4[0,1,2,3],ymm1[4,5,6,7]2169; AVX1-NEXT:    addq $4, %rdi2170; AVX1-NEXT:    testl $1024, %eax ## imm = 0x4002171; AVX1-NEXT:    je LBB8_222172; AVX1-NEXT:  LBB8_21: ## %cond.load372173; AVX1-NEXT:    vinsertps $32, (%rdi), %xmm1, %xmm4 ## xmm4 = xmm1[0,1],mem[0],xmm1[3]2174; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm4[0,1,2,3],ymm1[4,5,6,7]2175; AVX1-NEXT:    addq $4, %rdi2176; AVX1-NEXT:    testl $2048, %eax ## imm = 0x8002177; AVX1-NEXT:    je LBB8_242178; AVX1-NEXT:  LBB8_23: ## %cond.load412179; AVX1-NEXT:    vinsertps $48, (%rdi), %xmm1, %xmm4 ## xmm4 = xmm1[0,1,2],mem[0]2180; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm4[0,1,2,3],ymm1[4,5,6,7]2181; AVX1-NEXT:    addq $4, %rdi2182; AVX1-NEXT:    testl $4096, %eax ## imm = 0x10002183; AVX1-NEXT:    je LBB8_262184; AVX1-NEXT:  LBB8_25: ## %cond.load452185; AVX1-NEXT:    vbroadcastss (%rdi), %ymm42186; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm4[4],ymm1[5,6,7]2187; AVX1-NEXT:    addq $4, %rdi2188; AVX1-NEXT:    testl $8192, %eax ## imm = 0x20002189; AVX1-NEXT:    je LBB8_282190; AVX1-NEXT:  LBB8_27: ## %cond.load492191; AVX1-NEXT:    vbroadcastss (%rdi), %ymm42192; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3,4],ymm4[5],ymm1[6,7]2193; AVX1-NEXT:    addq $4, %rdi2194; AVX1-NEXT:    testl $16384, %eax ## imm = 0x40002195; AVX1-NEXT:    je LBB8_302196; AVX1-NEXT:  LBB8_29: ## %cond.load532197; AVX1-NEXT:    vbroadcastss (%rdi), %ymm42198; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3,4,5],ymm4[6],ymm1[7]2199; AVX1-NEXT:    addq $4, %rdi2200; AVX1-NEXT:    testw %ax, %ax2201; AVX1-NEXT:    jns LBB8_322202; AVX1-NEXT:  LBB8_31: ## %cond.load572203; AVX1-NEXT:    vbroadcastss (%rdi), %ymm42204; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3,4,5,6],ymm4[7]2205; AVX1-NEXT:    addq $4, %rdi2206; AVX1-NEXT:    testl $65536, %eax ## imm = 0x100002207; AVX1-NEXT:    je LBB8_342208; AVX1-NEXT:  LBB8_33: ## %cond.load612209; AVX1-NEXT:    vmovss (%rdi), %xmm4 ## xmm4 = mem[0],zero,zero,zero2210; AVX1-NEXT:    vblendps {{.*#+}} ymm2 = ymm4[0],ymm2[1,2,3,4,5,6,7]2211; AVX1-NEXT:    addq $4, %rdi2212; AVX1-NEXT:    testl $131072, %eax ## imm = 0x200002213; AVX1-NEXT:    je LBB8_362214; AVX1-NEXT:  LBB8_35: ## %cond.load652215; AVX1-NEXT:    vinsertps $16, (%rdi), %xmm2, %xmm4 ## xmm4 = xmm2[0],mem[0],xmm2[2,3]2216; AVX1-NEXT:    vblendps {{.*#+}} ymm2 = ymm4[0,1,2,3],ymm2[4,5,6,7]2217; AVX1-NEXT:    addq $4, %rdi2218; AVX1-NEXT:    testl $262144, %eax ## imm = 0x400002219; AVX1-NEXT:    je LBB8_382220; AVX1-NEXT:  LBB8_37: ## %cond.load692221; AVX1-NEXT:    vinsertps $32, (%rdi), %xmm2, %xmm4 ## xmm4 = xmm2[0,1],mem[0],xmm2[3]2222; AVX1-NEXT:    vblendps {{.*#+}} ymm2 = ymm4[0,1,2,3],ymm2[4,5,6,7]2223; AVX1-NEXT:    addq $4, %rdi2224; AVX1-NEXT:    testl $524288, %eax ## imm = 0x800002225; AVX1-NEXT:    je LBB8_402226; AVX1-NEXT:  LBB8_39: ## %cond.load732227; AVX1-NEXT:    vinsertps $48, (%rdi), %xmm2, %xmm4 ## xmm4 = xmm2[0,1,2],mem[0]2228; AVX1-NEXT:    vblendps {{.*#+}} ymm2 = ymm4[0,1,2,3],ymm2[4,5,6,7]2229; AVX1-NEXT:    addq $4, %rdi2230; AVX1-NEXT:    testl $1048576, %eax ## imm = 0x1000002231; AVX1-NEXT:    je LBB8_422232; AVX1-NEXT:  LBB8_41: ## %cond.load772233; AVX1-NEXT:    vbroadcastss (%rdi), %ymm42234; AVX1-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm4[4],ymm2[5,6,7]2235; AVX1-NEXT:    addq $4, %rdi2236; AVX1-NEXT:    testl $2097152, %eax ## imm = 0x2000002237; AVX1-NEXT:    je LBB8_442238; AVX1-NEXT:  LBB8_43: ## %cond.load812239; AVX1-NEXT:    vbroadcastss (%rdi), %ymm42240; AVX1-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3,4],ymm4[5],ymm2[6,7]2241; AVX1-NEXT:    addq $4, %rdi2242; AVX1-NEXT:    testl $4194304, %eax ## imm = 0x4000002243; AVX1-NEXT:    je LBB8_462244; AVX1-NEXT:  LBB8_45: ## %cond.load852245; AVX1-NEXT:    vbroadcastss (%rdi), %ymm42246; AVX1-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3,4,5],ymm4[6],ymm2[7]2247; AVX1-NEXT:    addq $4, %rdi2248; AVX1-NEXT:    testl $8388608, %eax ## imm = 0x8000002249; AVX1-NEXT:    je LBB8_482250; AVX1-NEXT:  LBB8_47: ## %cond.load892251; AVX1-NEXT:    vbroadcastss (%rdi), %ymm42252; AVX1-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3,4,5,6],ymm4[7]2253; AVX1-NEXT:    addq $4, %rdi2254; AVX1-NEXT:    testl $16777216, %eax ## imm = 0x10000002255; AVX1-NEXT:    je LBB8_502256; AVX1-NEXT:  LBB8_49: ## %cond.load932257; AVX1-NEXT:    vmovss (%rdi), %xmm4 ## xmm4 = mem[0],zero,zero,zero2258; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0],ymm3[1,2,3,4,5,6,7]2259; AVX1-NEXT:    addq $4, %rdi2260; AVX1-NEXT:    testl $33554432, %eax ## imm = 0x20000002261; AVX1-NEXT:    je LBB8_522262; AVX1-NEXT:  LBB8_51: ## %cond.load972263; AVX1-NEXT:    vinsertps $16, (%rdi), %xmm3, %xmm4 ## xmm4 = xmm3[0],mem[0],xmm3[2,3]2264; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]2265; AVX1-NEXT:    addq $4, %rdi2266; AVX1-NEXT:    testl $67108864, %eax ## imm = 0x40000002267; AVX1-NEXT:    je LBB8_542268; AVX1-NEXT:  LBB8_53: ## %cond.load1012269; AVX1-NEXT:    vinsertps $32, (%rdi), %xmm3, %xmm4 ## xmm4 = xmm3[0,1],mem[0],xmm3[3]2270; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]2271; AVX1-NEXT:    addq $4, %rdi2272; AVX1-NEXT:    testl $134217728, %eax ## imm = 0x80000002273; AVX1-NEXT:    je LBB8_562274; AVX1-NEXT:  LBB8_55: ## %cond.load1052275; AVX1-NEXT:    vinsertps $48, (%rdi), %xmm3, %xmm4 ## xmm4 = xmm3[0,1,2],mem[0]2276; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]2277; AVX1-NEXT:    addq $4, %rdi2278; AVX1-NEXT:    testl $268435456, %eax ## imm = 0x100000002279; AVX1-NEXT:    je LBB8_582280; AVX1-NEXT:  LBB8_57: ## %cond.load1092281; AVX1-NEXT:    vbroadcastss (%rdi), %ymm42282; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm4[4],ymm3[5,6,7]2283; AVX1-NEXT:    addq $4, %rdi2284; AVX1-NEXT:    testl $536870912, %eax ## imm = 0x200000002285; AVX1-NEXT:    je LBB8_602286; AVX1-NEXT:  LBB8_59: ## %cond.load1132287; AVX1-NEXT:    vbroadcastss (%rdi), %ymm42288; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm3[0,1,2,3,4],ymm4[5],ymm3[6,7]2289; AVX1-NEXT:    addq $4, %rdi2290; AVX1-NEXT:    testl $1073741824, %eax ## imm = 0x400000002291; AVX1-NEXT:    je LBB8_622292; AVX1-NEXT:  LBB8_61: ## %cond.load1172293; AVX1-NEXT:    vbroadcastss (%rdi), %ymm42294; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm3[0,1,2,3,4,5],ymm4[6],ymm3[7]2295; AVX1-NEXT:    addq $4, %rdi2296; AVX1-NEXT:    testl $-2147483648, %eax ## imm = 0x800000002297; AVX1-NEXT:    je LBB8_642298; AVX1-NEXT:  LBB8_63: ## %cond.load1212299; AVX1-NEXT:    vbroadcastss (%rdi), %ymm42300; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm3[0,1,2,3,4,5,6],ymm4[7]2301; AVX1-NEXT:    retq2302;2303; AVX2-LABEL: expandload_v32f32_v32i32:2304; AVX2:       ## %bb.0:2305; AVX2-NEXT:    vpxor %xmm8, %xmm8, %xmm82306; AVX2-NEXT:    vpcmpeqd %ymm7, %ymm8, %ymm72307; AVX2-NEXT:    vpcmpeqd %ymm6, %ymm8, %ymm62308; AVX2-NEXT:    vpackssdw %ymm7, %ymm6, %ymm62309; AVX2-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,2,1,3]2310; AVX2-NEXT:    vpcmpeqd %ymm5, %ymm8, %ymm52311; AVX2-NEXT:    vpcmpeqd %ymm4, %ymm8, %ymm42312; AVX2-NEXT:    vpackssdw %ymm5, %ymm4, %ymm42313; AVX2-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,2,1,3]2314; AVX2-NEXT:    vpacksswb %ymm6, %ymm4, %ymm42315; AVX2-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,2,1,3]2316; AVX2-NEXT:    vpmovmskb %ymm4, %eax2317; AVX2-NEXT:    testb $1, %al2318; AVX2-NEXT:    jne LBB8_12319; AVX2-NEXT:  ## %bb.2: ## %else2320; AVX2-NEXT:    testb $2, %al2321; AVX2-NEXT:    jne LBB8_32322; AVX2-NEXT:  LBB8_4: ## %else22323; AVX2-NEXT:    testb $4, %al2324; AVX2-NEXT:    jne LBB8_52325; AVX2-NEXT:  LBB8_6: ## %else62326; AVX2-NEXT:    testb $8, %al2327; AVX2-NEXT:    jne LBB8_72328; AVX2-NEXT:  LBB8_8: ## %else102329; AVX2-NEXT:    testb $16, %al2330; AVX2-NEXT:    jne LBB8_92331; AVX2-NEXT:  LBB8_10: ## %else142332; AVX2-NEXT:    testb $32, %al2333; AVX2-NEXT:    jne LBB8_112334; AVX2-NEXT:  LBB8_12: ## %else182335; AVX2-NEXT:    testb $64, %al2336; AVX2-NEXT:    jne LBB8_132337; AVX2-NEXT:  LBB8_14: ## %else222338; AVX2-NEXT:    testb %al, %al2339; AVX2-NEXT:    js LBB8_152340; AVX2-NEXT:  LBB8_16: ## %else262341; AVX2-NEXT:    testl $256, %eax ## imm = 0x1002342; AVX2-NEXT:    jne LBB8_172343; AVX2-NEXT:  LBB8_18: ## %else302344; AVX2-NEXT:    testl $512, %eax ## imm = 0x2002345; AVX2-NEXT:    jne LBB8_192346; AVX2-NEXT:  LBB8_20: ## %else342347; AVX2-NEXT:    testl $1024, %eax ## imm = 0x4002348; AVX2-NEXT:    jne LBB8_212349; AVX2-NEXT:  LBB8_22: ## %else382350; AVX2-NEXT:    testl $2048, %eax ## imm = 0x8002351; AVX2-NEXT:    jne LBB8_232352; AVX2-NEXT:  LBB8_24: ## %else422353; AVX2-NEXT:    testl $4096, %eax ## imm = 0x10002354; AVX2-NEXT:    jne LBB8_252355; AVX2-NEXT:  LBB8_26: ## %else462356; AVX2-NEXT:    testl $8192, %eax ## imm = 0x20002357; AVX2-NEXT:    jne LBB8_272358; AVX2-NEXT:  LBB8_28: ## %else502359; AVX2-NEXT:    testl $16384, %eax ## imm = 0x40002360; AVX2-NEXT:    jne LBB8_292361; AVX2-NEXT:  LBB8_30: ## %else542362; AVX2-NEXT:    testw %ax, %ax2363; AVX2-NEXT:    js LBB8_312364; AVX2-NEXT:  LBB8_32: ## %else582365; AVX2-NEXT:    testl $65536, %eax ## imm = 0x100002366; AVX2-NEXT:    jne LBB8_332367; AVX2-NEXT:  LBB8_34: ## %else622368; AVX2-NEXT:    testl $131072, %eax ## imm = 0x200002369; AVX2-NEXT:    jne LBB8_352370; AVX2-NEXT:  LBB8_36: ## %else662371; AVX2-NEXT:    testl $262144, %eax ## imm = 0x400002372; AVX2-NEXT:    jne LBB8_372373; AVX2-NEXT:  LBB8_38: ## %else702374; AVX2-NEXT:    testl $524288, %eax ## imm = 0x800002375; AVX2-NEXT:    jne LBB8_392376; AVX2-NEXT:  LBB8_40: ## %else742377; AVX2-NEXT:    testl $1048576, %eax ## imm = 0x1000002378; AVX2-NEXT:    jne LBB8_412379; AVX2-NEXT:  LBB8_42: ## %else782380; AVX2-NEXT:    testl $2097152, %eax ## imm = 0x2000002381; AVX2-NEXT:    jne LBB8_432382; AVX2-NEXT:  LBB8_44: ## %else822383; AVX2-NEXT:    testl $4194304, %eax ## imm = 0x4000002384; AVX2-NEXT:    jne LBB8_452385; AVX2-NEXT:  LBB8_46: ## %else862386; AVX2-NEXT:    testl $8388608, %eax ## imm = 0x8000002387; AVX2-NEXT:    jne LBB8_472388; AVX2-NEXT:  LBB8_48: ## %else902389; AVX2-NEXT:    testl $16777216, %eax ## imm = 0x10000002390; AVX2-NEXT:    jne LBB8_492391; AVX2-NEXT:  LBB8_50: ## %else942392; AVX2-NEXT:    testl $33554432, %eax ## imm = 0x20000002393; AVX2-NEXT:    jne LBB8_512394; AVX2-NEXT:  LBB8_52: ## %else982395; AVX2-NEXT:    testl $67108864, %eax ## imm = 0x40000002396; AVX2-NEXT:    jne LBB8_532397; AVX2-NEXT:  LBB8_54: ## %else1022398; AVX2-NEXT:    testl $134217728, %eax ## imm = 0x80000002399; AVX2-NEXT:    jne LBB8_552400; AVX2-NEXT:  LBB8_56: ## %else1062401; AVX2-NEXT:    testl $268435456, %eax ## imm = 0x100000002402; AVX2-NEXT:    jne LBB8_572403; AVX2-NEXT:  LBB8_58: ## %else1102404; AVX2-NEXT:    testl $536870912, %eax ## imm = 0x200000002405; AVX2-NEXT:    jne LBB8_592406; AVX2-NEXT:  LBB8_60: ## %else1142407; AVX2-NEXT:    testl $1073741824, %eax ## imm = 0x400000002408; AVX2-NEXT:    jne LBB8_612409; AVX2-NEXT:  LBB8_62: ## %else1182410; AVX2-NEXT:    testl $-2147483648, %eax ## imm = 0x800000002411; AVX2-NEXT:    jne LBB8_632412; AVX2-NEXT:  LBB8_64: ## %else1222413; AVX2-NEXT:    retq2414; AVX2-NEXT:  LBB8_1: ## %cond.load2415; AVX2-NEXT:    vmovd (%rdi), %xmm4 ## xmm4 = mem[0],zero,zero,zero2416; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm4[0],ymm0[1,2,3,4,5,6,7]2417; AVX2-NEXT:    addq $4, %rdi2418; AVX2-NEXT:    testb $2, %al2419; AVX2-NEXT:    je LBB8_42420; AVX2-NEXT:  LBB8_3: ## %cond.load12421; AVX2-NEXT:    vinsertps $16, (%rdi), %xmm0, %xmm4 ## xmm4 = xmm0[0],mem[0],xmm0[2,3]2422; AVX2-NEXT:    vblendps {{.*#+}} ymm0 = ymm4[0,1,2,3],ymm0[4,5,6,7]2423; AVX2-NEXT:    addq $4, %rdi2424; AVX2-NEXT:    testb $4, %al2425; AVX2-NEXT:    je LBB8_62426; AVX2-NEXT:  LBB8_5: ## %cond.load52427; AVX2-NEXT:    vinsertps $32, (%rdi), %xmm0, %xmm4 ## xmm4 = xmm0[0,1],mem[0],xmm0[3]2428; AVX2-NEXT:    vblendps {{.*#+}} ymm0 = ymm4[0,1,2,3],ymm0[4,5,6,7]2429; AVX2-NEXT:    addq $4, %rdi2430; AVX2-NEXT:    testb $8, %al2431; AVX2-NEXT:    je LBB8_82432; AVX2-NEXT:  LBB8_7: ## %cond.load92433; AVX2-NEXT:    vinsertps $48, (%rdi), %xmm0, %xmm4 ## xmm4 = xmm0[0,1,2],mem[0]2434; AVX2-NEXT:    vblendps {{.*#+}} ymm0 = ymm4[0,1,2,3],ymm0[4,5,6,7]2435; AVX2-NEXT:    addq $4, %rdi2436; AVX2-NEXT:    testb $16, %al2437; AVX2-NEXT:    je LBB8_102438; AVX2-NEXT:  LBB8_9: ## %cond.load132439; AVX2-NEXT:    vbroadcastss (%rdi), %ymm42440; AVX2-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm4[4],ymm0[5,6,7]2441; AVX2-NEXT:    addq $4, %rdi2442; AVX2-NEXT:    testb $32, %al2443; AVX2-NEXT:    je LBB8_122444; AVX2-NEXT:  LBB8_11: ## %cond.load172445; AVX2-NEXT:    vbroadcastss (%rdi), %ymm42446; AVX2-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3,4],ymm4[5],ymm0[6,7]2447; AVX2-NEXT:    addq $4, %rdi2448; AVX2-NEXT:    testb $64, %al2449; AVX2-NEXT:    je LBB8_142450; AVX2-NEXT:  LBB8_13: ## %cond.load212451; AVX2-NEXT:    vbroadcastss (%rdi), %ymm42452; AVX2-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5],ymm4[6],ymm0[7]2453; AVX2-NEXT:    addq $4, %rdi2454; AVX2-NEXT:    testb %al, %al2455; AVX2-NEXT:    jns LBB8_162456; AVX2-NEXT:  LBB8_15: ## %cond.load252457; AVX2-NEXT:    vbroadcastss (%rdi), %ymm42458; AVX2-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5,6],ymm4[7]2459; AVX2-NEXT:    addq $4, %rdi2460; AVX2-NEXT:    testl $256, %eax ## imm = 0x1002461; AVX2-NEXT:    je LBB8_182462; AVX2-NEXT:  LBB8_17: ## %cond.load292463; AVX2-NEXT:    vmovd (%rdi), %xmm4 ## xmm4 = mem[0],zero,zero,zero2464; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm4[0],ymm1[1,2,3,4,5,6,7]2465; AVX2-NEXT:    addq $4, %rdi2466; AVX2-NEXT:    testl $512, %eax ## imm = 0x2002467; AVX2-NEXT:    je LBB8_202468; AVX2-NEXT:  LBB8_19: ## %cond.load332469; AVX2-NEXT:    vinsertps $16, (%rdi), %xmm1, %xmm4 ## xmm4 = xmm1[0],mem[0],xmm1[2,3]2470; AVX2-NEXT:    vblendps {{.*#+}} ymm1 = ymm4[0,1,2,3],ymm1[4,5,6,7]2471; AVX2-NEXT:    addq $4, %rdi2472; AVX2-NEXT:    testl $1024, %eax ## imm = 0x4002473; AVX2-NEXT:    je LBB8_222474; AVX2-NEXT:  LBB8_21: ## %cond.load372475; AVX2-NEXT:    vinsertps $32, (%rdi), %xmm1, %xmm4 ## xmm4 = xmm1[0,1],mem[0],xmm1[3]2476; AVX2-NEXT:    vblendps {{.*#+}} ymm1 = ymm4[0,1,2,3],ymm1[4,5,6,7]2477; AVX2-NEXT:    addq $4, %rdi2478; AVX2-NEXT:    testl $2048, %eax ## imm = 0x8002479; AVX2-NEXT:    je LBB8_242480; AVX2-NEXT:  LBB8_23: ## %cond.load412481; AVX2-NEXT:    vinsertps $48, (%rdi), %xmm1, %xmm4 ## xmm4 = xmm1[0,1,2],mem[0]2482; AVX2-NEXT:    vblendps {{.*#+}} ymm1 = ymm4[0,1,2,3],ymm1[4,5,6,7]2483; AVX2-NEXT:    addq $4, %rdi2484; AVX2-NEXT:    testl $4096, %eax ## imm = 0x10002485; AVX2-NEXT:    je LBB8_262486; AVX2-NEXT:  LBB8_25: ## %cond.load452487; AVX2-NEXT:    vbroadcastss (%rdi), %ymm42488; AVX2-NEXT:    vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm4[4],ymm1[5,6,7]2489; AVX2-NEXT:    addq $4, %rdi2490; AVX2-NEXT:    testl $8192, %eax ## imm = 0x20002491; AVX2-NEXT:    je LBB8_282492; AVX2-NEXT:  LBB8_27: ## %cond.load492493; AVX2-NEXT:    vbroadcastss (%rdi), %ymm42494; AVX2-NEXT:    vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3,4],ymm4[5],ymm1[6,7]2495; AVX2-NEXT:    addq $4, %rdi2496; AVX2-NEXT:    testl $16384, %eax ## imm = 0x40002497; AVX2-NEXT:    je LBB8_302498; AVX2-NEXT:  LBB8_29: ## %cond.load532499; AVX2-NEXT:    vbroadcastss (%rdi), %ymm42500; AVX2-NEXT:    vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3,4,5],ymm4[6],ymm1[7]2501; AVX2-NEXT:    addq $4, %rdi2502; AVX2-NEXT:    testw %ax, %ax2503; AVX2-NEXT:    jns LBB8_322504; AVX2-NEXT:  LBB8_31: ## %cond.load572505; AVX2-NEXT:    vbroadcastss (%rdi), %ymm42506; AVX2-NEXT:    vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3,4,5,6],ymm4[7]2507; AVX2-NEXT:    addq $4, %rdi2508; AVX2-NEXT:    testl $65536, %eax ## imm = 0x100002509; AVX2-NEXT:    je LBB8_342510; AVX2-NEXT:  LBB8_33: ## %cond.load612511; AVX2-NEXT:    vmovd (%rdi), %xmm4 ## xmm4 = mem[0],zero,zero,zero2512; AVX2-NEXT:    vpblendd {{.*#+}} ymm2 = ymm4[0],ymm2[1,2,3,4,5,6,7]2513; AVX2-NEXT:    addq $4, %rdi2514; AVX2-NEXT:    testl $131072, %eax ## imm = 0x200002515; AVX2-NEXT:    je LBB8_362516; AVX2-NEXT:  LBB8_35: ## %cond.load652517; AVX2-NEXT:    vinsertps $16, (%rdi), %xmm2, %xmm4 ## xmm4 = xmm2[0],mem[0],xmm2[2,3]2518; AVX2-NEXT:    vblendps {{.*#+}} ymm2 = ymm4[0,1,2,3],ymm2[4,5,6,7]2519; AVX2-NEXT:    addq $4, %rdi2520; AVX2-NEXT:    testl $262144, %eax ## imm = 0x400002521; AVX2-NEXT:    je LBB8_382522; AVX2-NEXT:  LBB8_37: ## %cond.load692523; AVX2-NEXT:    vinsertps $32, (%rdi), %xmm2, %xmm4 ## xmm4 = xmm2[0,1],mem[0],xmm2[3]2524; AVX2-NEXT:    vblendps {{.*#+}} ymm2 = ymm4[0,1,2,3],ymm2[4,5,6,7]2525; AVX2-NEXT:    addq $4, %rdi2526; AVX2-NEXT:    testl $524288, %eax ## imm = 0x800002527; AVX2-NEXT:    je LBB8_402528; AVX2-NEXT:  LBB8_39: ## %cond.load732529; AVX2-NEXT:    vinsertps $48, (%rdi), %xmm2, %xmm4 ## xmm4 = xmm2[0,1,2],mem[0]2530; AVX2-NEXT:    vblendps {{.*#+}} ymm2 = ymm4[0,1,2,3],ymm2[4,5,6,7]2531; AVX2-NEXT:    addq $4, %rdi2532; AVX2-NEXT:    testl $1048576, %eax ## imm = 0x1000002533; AVX2-NEXT:    je LBB8_422534; AVX2-NEXT:  LBB8_41: ## %cond.load772535; AVX2-NEXT:    vbroadcastss (%rdi), %ymm42536; AVX2-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm4[4],ymm2[5,6,7]2537; AVX2-NEXT:    addq $4, %rdi2538; AVX2-NEXT:    testl $2097152, %eax ## imm = 0x2000002539; AVX2-NEXT:    je LBB8_442540; AVX2-NEXT:  LBB8_43: ## %cond.load812541; AVX2-NEXT:    vbroadcastss (%rdi), %ymm42542; AVX2-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3,4],ymm4[5],ymm2[6,7]2543; AVX2-NEXT:    addq $4, %rdi2544; AVX2-NEXT:    testl $4194304, %eax ## imm = 0x4000002545; AVX2-NEXT:    je LBB8_462546; AVX2-NEXT:  LBB8_45: ## %cond.load852547; AVX2-NEXT:    vbroadcastss (%rdi), %ymm42548; AVX2-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3,4,5],ymm4[6],ymm2[7]2549; AVX2-NEXT:    addq $4, %rdi2550; AVX2-NEXT:    testl $8388608, %eax ## imm = 0x8000002551; AVX2-NEXT:    je LBB8_482552; AVX2-NEXT:  LBB8_47: ## %cond.load892553; AVX2-NEXT:    vbroadcastss (%rdi), %ymm42554; AVX2-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3,4,5,6],ymm4[7]2555; AVX2-NEXT:    addq $4, %rdi2556; AVX2-NEXT:    testl $16777216, %eax ## imm = 0x10000002557; AVX2-NEXT:    je LBB8_502558; AVX2-NEXT:  LBB8_49: ## %cond.load932559; AVX2-NEXT:    vmovd (%rdi), %xmm4 ## xmm4 = mem[0],zero,zero,zero2560; AVX2-NEXT:    vpblendd {{.*#+}} ymm3 = ymm4[0],ymm3[1,2,3,4,5,6,7]2561; AVX2-NEXT:    addq $4, %rdi2562; AVX2-NEXT:    testl $33554432, %eax ## imm = 0x20000002563; AVX2-NEXT:    je LBB8_522564; AVX2-NEXT:  LBB8_51: ## %cond.load972565; AVX2-NEXT:    vinsertps $16, (%rdi), %xmm3, %xmm4 ## xmm4 = xmm3[0],mem[0],xmm3[2,3]2566; AVX2-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]2567; AVX2-NEXT:    addq $4, %rdi2568; AVX2-NEXT:    testl $67108864, %eax ## imm = 0x40000002569; AVX2-NEXT:    je LBB8_542570; AVX2-NEXT:  LBB8_53: ## %cond.load1012571; AVX2-NEXT:    vinsertps $32, (%rdi), %xmm3, %xmm4 ## xmm4 = xmm3[0,1],mem[0],xmm3[3]2572; AVX2-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]2573; AVX2-NEXT:    addq $4, %rdi2574; AVX2-NEXT:    testl $134217728, %eax ## imm = 0x80000002575; AVX2-NEXT:    je LBB8_562576; AVX2-NEXT:  LBB8_55: ## %cond.load1052577; AVX2-NEXT:    vinsertps $48, (%rdi), %xmm3, %xmm4 ## xmm4 = xmm3[0,1,2],mem[0]2578; AVX2-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]2579; AVX2-NEXT:    addq $4, %rdi2580; AVX2-NEXT:    testl $268435456, %eax ## imm = 0x100000002581; AVX2-NEXT:    je LBB8_582582; AVX2-NEXT:  LBB8_57: ## %cond.load1092583; AVX2-NEXT:    vbroadcastss (%rdi), %ymm42584; AVX2-NEXT:    vblendps {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm4[4],ymm3[5,6,7]2585; AVX2-NEXT:    addq $4, %rdi2586; AVX2-NEXT:    testl $536870912, %eax ## imm = 0x200000002587; AVX2-NEXT:    je LBB8_602588; AVX2-NEXT:  LBB8_59: ## %cond.load1132589; AVX2-NEXT:    vbroadcastss (%rdi), %ymm42590; AVX2-NEXT:    vblendps {{.*#+}} ymm3 = ymm3[0,1,2,3,4],ymm4[5],ymm3[6,7]2591; AVX2-NEXT:    addq $4, %rdi2592; AVX2-NEXT:    testl $1073741824, %eax ## imm = 0x400000002593; AVX2-NEXT:    je LBB8_622594; AVX2-NEXT:  LBB8_61: ## %cond.load1172595; AVX2-NEXT:    vbroadcastss (%rdi), %ymm42596; AVX2-NEXT:    vblendps {{.*#+}} ymm3 = ymm3[0,1,2,3,4,5],ymm4[6],ymm3[7]2597; AVX2-NEXT:    addq $4, %rdi2598; AVX2-NEXT:    testl $-2147483648, %eax ## imm = 0x800000002599; AVX2-NEXT:    je LBB8_642600; AVX2-NEXT:  LBB8_63: ## %cond.load1212601; AVX2-NEXT:    vbroadcastss (%rdi), %ymm42602; AVX2-NEXT:    vblendps {{.*#+}} ymm3 = ymm3[0,1,2,3,4,5,6],ymm4[7]2603; AVX2-NEXT:    retq2604;2605; AVX512-LABEL: expandload_v32f32_v32i32:2606; AVX512:       ## %bb.0:2607; AVX512-NEXT:    vptestnmd %zmm3, %zmm3, %k22608; AVX512-NEXT:    vptestnmd %zmm2, %zmm2, %k12609; AVX512-NEXT:    kmovw %k1, %eax2610; AVX512-NEXT:    movl %eax, %ecx2611; AVX512-NEXT:    shrl %ecx2612; AVX512-NEXT:    andl $21845, %ecx ## imm = 0x55552613; AVX512-NEXT:    subl %ecx, %eax2614; AVX512-NEXT:    movl %eax, %ecx2615; AVX512-NEXT:    andl $858993459, %ecx ## imm = 0x333333332616; AVX512-NEXT:    shrl $2, %eax2617; AVX512-NEXT:    andl $858993459, %eax ## imm = 0x333333332618; AVX512-NEXT:    addl %ecx, %eax2619; AVX512-NEXT:    movl %eax, %ecx2620; AVX512-NEXT:    shrl $4, %ecx2621; AVX512-NEXT:    addl %eax, %ecx2622; AVX512-NEXT:    andl $252645135, %ecx ## imm = 0xF0F0F0F2623; AVX512-NEXT:    imull $16843009, %ecx, %eax ## imm = 0x10101012624; AVX512-NEXT:    shrl $24, %eax2625; AVX512-NEXT:    vexpandps (%rdi,%rax,4), %zmm1 {%k2}2626; AVX512-NEXT:    vexpandps (%rdi), %zmm0 {%k1}2627; AVX512-NEXT:    retq2628  %mask = icmp eq <32 x i32> %trigger, zeroinitializer2629  %res = call <32 x float> @llvm.masked.expandload.v32f32(ptr %base, <32 x i1> %mask, <32 x float> %src0)2630  ret <32 x float> %res2631}2632 2633;2634; vXi642635;2636 2637define <2 x i64> @expandload_v2i64_const(ptr %base, <2 x i64> %src0) {2638; SSE2-LABEL: expandload_v2i64_const:2639; SSE2:       ## %bb.0:2640; SSE2-NEXT:    movsd (%rdi), %xmm1 ## xmm1 = mem[0],zero2641; SSE2-NEXT:    movlhps {{.*#+}} xmm0 = xmm0[0],xmm1[0]2642; SSE2-NEXT:    retq2643;2644; SSE42-LABEL: expandload_v2i64_const:2645; SSE42:       ## %bb.0:2646; SSE42-NEXT:    pinsrq $1, (%rdi), %xmm02647; SSE42-NEXT:    retq2648;2649; AVX1OR2-LABEL: expandload_v2i64_const:2650; AVX1OR2:       ## %bb.0:2651; AVX1OR2-NEXT:    vpinsrq $1, (%rdi), %xmm0, %xmm02652; AVX1OR2-NEXT:    retq2653;2654; AVX512F-LABEL: expandload_v2i64_const:2655; AVX512F:       ## %bb.0:2656; AVX512F-NEXT:    ## kill: def $xmm0 killed $xmm0 def $zmm02657; AVX512F-NEXT:    movb $2, %al2658; AVX512F-NEXT:    kmovw %eax, %k12659; AVX512F-NEXT:    vpexpandq (%rdi), %zmm0 {%k1}2660; AVX512F-NEXT:    ## kill: def $xmm0 killed $xmm0 killed $zmm02661; AVX512F-NEXT:    vzeroupper2662; AVX512F-NEXT:    retq2663;2664; AVX512VLDQ-LABEL: expandload_v2i64_const:2665; AVX512VLDQ:       ## %bb.0:2666; AVX512VLDQ-NEXT:    movb $2, %al2667; AVX512VLDQ-NEXT:    kmovw %eax, %k12668; AVX512VLDQ-NEXT:    vpexpandq (%rdi), %xmm0 {%k1}2669; AVX512VLDQ-NEXT:    retq2670;2671; AVX512VLBW-LABEL: expandload_v2i64_const:2672; AVX512VLBW:       ## %bb.0:2673; AVX512VLBW-NEXT:    movb $2, %al2674; AVX512VLBW-NEXT:    kmovd %eax, %k12675; AVX512VLBW-NEXT:    vpexpandq (%rdi), %xmm0 {%k1}2676; AVX512VLBW-NEXT:    retq2677  %res = call <2 x i64> @llvm.masked.expandload.v2i64(ptr %base, <2 x i1> <i1 false, i1 true>, <2 x i64> %src0)2678  ret <2 x i64>%res2679}2680 2681;2682; vXi322683;2684 2685define <4 x i32> @expandload_v4i32_v4i32(ptr %base, <4 x i32> %src0, <4 x i32> %trigger) {2686; SSE2-LABEL: expandload_v4i32_v4i32:2687; SSE2:       ## %bb.0:2688; SSE2-NEXT:    pxor %xmm2, %xmm22689; SSE2-NEXT:    pcmpeqd %xmm1, %xmm22690; SSE2-NEXT:    movmskps %xmm2, %eax2691; SSE2-NEXT:    testb $1, %al2692; SSE2-NEXT:    jne LBB10_12693; SSE2-NEXT:  ## %bb.2: ## %else2694; SSE2-NEXT:    testb $2, %al2695; SSE2-NEXT:    jne LBB10_32696; SSE2-NEXT:  LBB10_4: ## %else22697; SSE2-NEXT:    testb $4, %al2698; SSE2-NEXT:    jne LBB10_52699; SSE2-NEXT:  LBB10_6: ## %else62700; SSE2-NEXT:    testb $8, %al2701; SSE2-NEXT:    jne LBB10_72702; SSE2-NEXT:  LBB10_8: ## %else102703; SSE2-NEXT:    retq2704; SSE2-NEXT:  LBB10_1: ## %cond.load2705; SSE2-NEXT:    movss (%rdi), %xmm1 ## xmm1 = mem[0],zero,zero,zero2706; SSE2-NEXT:    movss {{.*#+}} xmm0 = xmm1[0],xmm0[1,2,3]2707; SSE2-NEXT:    addq $4, %rdi2708; SSE2-NEXT:    testb $2, %al2709; SSE2-NEXT:    je LBB10_42710; SSE2-NEXT:  LBB10_3: ## %cond.load12711; SSE2-NEXT:    movss (%rdi), %xmm1 ## xmm1 = mem[0],zero,zero,zero2712; SSE2-NEXT:    movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]2713; SSE2-NEXT:    shufps {{.*#+}} xmm1 = xmm1[2,0],xmm0[2,3]2714; SSE2-NEXT:    addq $4, %rdi2715; SSE2-NEXT:    movaps %xmm1, %xmm02716; SSE2-NEXT:    testb $4, %al2717; SSE2-NEXT:    je LBB10_62718; SSE2-NEXT:  LBB10_5: ## %cond.load52719; SSE2-NEXT:    movss (%rdi), %xmm1 ## xmm1 = mem[0],zero,zero,zero2720; SSE2-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,0],xmm0[3,0]2721; SSE2-NEXT:    shufps {{.*#+}} xmm0 = xmm0[0,1],xmm1[0,2]2722; SSE2-NEXT:    addq $4, %rdi2723; SSE2-NEXT:    testb $8, %al2724; SSE2-NEXT:    je LBB10_82725; SSE2-NEXT:  LBB10_7: ## %cond.load92726; SSE2-NEXT:    movss (%rdi), %xmm1 ## xmm1 = mem[0],zero,zero,zero2727; SSE2-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,1],xmm0[2,3]2728; SSE2-NEXT:    shufps {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,0]2729; SSE2-NEXT:    retq2730;2731; SSE42-LABEL: expandload_v4i32_v4i32:2732; SSE42:       ## %bb.0:2733; SSE42-NEXT:    pxor %xmm2, %xmm22734; SSE42-NEXT:    pcmpeqd %xmm1, %xmm22735; SSE42-NEXT:    movmskps %xmm2, %eax2736; SSE42-NEXT:    testb $1, %al2737; SSE42-NEXT:    jne LBB10_12738; SSE42-NEXT:  ## %bb.2: ## %else2739; SSE42-NEXT:    testb $2, %al2740; SSE42-NEXT:    jne LBB10_32741; SSE42-NEXT:  LBB10_4: ## %else22742; SSE42-NEXT:    testb $4, %al2743; SSE42-NEXT:    jne LBB10_52744; SSE42-NEXT:  LBB10_6: ## %else62745; SSE42-NEXT:    testb $8, %al2746; SSE42-NEXT:    jne LBB10_72747; SSE42-NEXT:  LBB10_8: ## %else102748; SSE42-NEXT:    retq2749; SSE42-NEXT:  LBB10_1: ## %cond.load2750; SSE42-NEXT:    pinsrd $0, (%rdi), %xmm02751; SSE42-NEXT:    addq $4, %rdi2752; SSE42-NEXT:    testb $2, %al2753; SSE42-NEXT:    je LBB10_42754; SSE42-NEXT:  LBB10_3: ## %cond.load12755; SSE42-NEXT:    pinsrd $1, (%rdi), %xmm02756; SSE42-NEXT:    addq $4, %rdi2757; SSE42-NEXT:    testb $4, %al2758; SSE42-NEXT:    je LBB10_62759; SSE42-NEXT:  LBB10_5: ## %cond.load52760; SSE42-NEXT:    pinsrd $2, (%rdi), %xmm02761; SSE42-NEXT:    addq $4, %rdi2762; SSE42-NEXT:    testb $8, %al2763; SSE42-NEXT:    je LBB10_82764; SSE42-NEXT:  LBB10_7: ## %cond.load92765; SSE42-NEXT:    pinsrd $3, (%rdi), %xmm02766; SSE42-NEXT:    retq2767;2768; AVX1OR2-LABEL: expandload_v4i32_v4i32:2769; AVX1OR2:       ## %bb.0:2770; AVX1OR2-NEXT:    vpxor %xmm2, %xmm2, %xmm22771; AVX1OR2-NEXT:    vpcmpeqd %xmm2, %xmm1, %xmm12772; AVX1OR2-NEXT:    vmovmskps %xmm1, %eax2773; AVX1OR2-NEXT:    testb $1, %al2774; AVX1OR2-NEXT:    jne LBB10_12775; AVX1OR2-NEXT:  ## %bb.2: ## %else2776; AVX1OR2-NEXT:    testb $2, %al2777; AVX1OR2-NEXT:    jne LBB10_32778; AVX1OR2-NEXT:  LBB10_4: ## %else22779; AVX1OR2-NEXT:    testb $4, %al2780; AVX1OR2-NEXT:    jne LBB10_52781; AVX1OR2-NEXT:  LBB10_6: ## %else62782; AVX1OR2-NEXT:    testb $8, %al2783; AVX1OR2-NEXT:    jne LBB10_72784; AVX1OR2-NEXT:  LBB10_8: ## %else102785; AVX1OR2-NEXT:    retq2786; AVX1OR2-NEXT:  LBB10_1: ## %cond.load2787; AVX1OR2-NEXT:    vpinsrd $0, (%rdi), %xmm0, %xmm02788; AVX1OR2-NEXT:    addq $4, %rdi2789; AVX1OR2-NEXT:    testb $2, %al2790; AVX1OR2-NEXT:    je LBB10_42791; AVX1OR2-NEXT:  LBB10_3: ## %cond.load12792; AVX1OR2-NEXT:    vpinsrd $1, (%rdi), %xmm0, %xmm02793; AVX1OR2-NEXT:    addq $4, %rdi2794; AVX1OR2-NEXT:    testb $4, %al2795; AVX1OR2-NEXT:    je LBB10_62796; AVX1OR2-NEXT:  LBB10_5: ## %cond.load52797; AVX1OR2-NEXT:    vpinsrd $2, (%rdi), %xmm0, %xmm02798; AVX1OR2-NEXT:    addq $4, %rdi2799; AVX1OR2-NEXT:    testb $8, %al2800; AVX1OR2-NEXT:    je LBB10_82801; AVX1OR2-NEXT:  LBB10_7: ## %cond.load92802; AVX1OR2-NEXT:    vpinsrd $3, (%rdi), %xmm0, %xmm02803; AVX1OR2-NEXT:    retq2804;2805; AVX512F-LABEL: expandload_v4i32_v4i32:2806; AVX512F:       ## %bb.0:2807; AVX512F-NEXT:    ## kill: def $xmm1 killed $xmm1 def $zmm12808; AVX512F-NEXT:    ## kill: def $xmm0 killed $xmm0 def $zmm02809; AVX512F-NEXT:    vptestnmd %zmm1, %zmm1, %k02810; AVX512F-NEXT:    kshiftlw $12, %k0, %k02811; AVX512F-NEXT:    kshiftrw $12, %k0, %k12812; AVX512F-NEXT:    vpexpandd (%rdi), %zmm0 {%k1}2813; AVX512F-NEXT:    ## kill: def $xmm0 killed $xmm0 killed $zmm02814; AVX512F-NEXT:    vzeroupper2815; AVX512F-NEXT:    retq2816;2817; AVX512VL-LABEL: expandload_v4i32_v4i32:2818; AVX512VL:       ## %bb.0:2819; AVX512VL-NEXT:    vptestnmd %xmm1, %xmm1, %k12820; AVX512VL-NEXT:    vpexpandd (%rdi), %xmm0 {%k1}2821; AVX512VL-NEXT:    retq2822  %mask = icmp eq <4 x i32> %trigger, zeroinitializer2823  %res = call <4 x i32> @llvm.masked.expandload.v4i32(ptr %base, <4 x i1> %mask, <4 x i32> %src0)2824  ret <4 x i32>%res2825}2826 2827;2828; vXi162829;2830 2831define <8 x i16> @expandload_v8i16_v8i16(ptr %base, <8 x i16> %src0, <8 x i16> %trigger) {2832; SSE-LABEL: expandload_v8i16_v8i16:2833; SSE:       ## %bb.0:2834; SSE-NEXT:    pxor %xmm2, %xmm22835; SSE-NEXT:    pcmpeqw %xmm1, %xmm22836; SSE-NEXT:    packsswb %xmm2, %xmm22837; SSE-NEXT:    pmovmskb %xmm2, %eax2838; SSE-NEXT:    testb $1, %al2839; SSE-NEXT:    jne LBB11_12840; SSE-NEXT:  ## %bb.2: ## %else2841; SSE-NEXT:    testb $2, %al2842; SSE-NEXT:    jne LBB11_32843; SSE-NEXT:  LBB11_4: ## %else22844; SSE-NEXT:    testb $4, %al2845; SSE-NEXT:    jne LBB11_52846; SSE-NEXT:  LBB11_6: ## %else62847; SSE-NEXT:    testb $8, %al2848; SSE-NEXT:    jne LBB11_72849; SSE-NEXT:  LBB11_8: ## %else102850; SSE-NEXT:    testb $16, %al2851; SSE-NEXT:    jne LBB11_92852; SSE-NEXT:  LBB11_10: ## %else142853; SSE-NEXT:    testb $32, %al2854; SSE-NEXT:    jne LBB11_112855; SSE-NEXT:  LBB11_12: ## %else182856; SSE-NEXT:    testb $64, %al2857; SSE-NEXT:    jne LBB11_132858; SSE-NEXT:  LBB11_14: ## %else222859; SSE-NEXT:    testb $-128, %al2860; SSE-NEXT:    jne LBB11_152861; SSE-NEXT:  LBB11_16: ## %else262862; SSE-NEXT:    retq2863; SSE-NEXT:  LBB11_1: ## %cond.load2864; SSE-NEXT:    pinsrw $0, (%rdi), %xmm02865; SSE-NEXT:    addq $2, %rdi2866; SSE-NEXT:    testb $2, %al2867; SSE-NEXT:    je LBB11_42868; SSE-NEXT:  LBB11_3: ## %cond.load12869; SSE-NEXT:    pinsrw $1, (%rdi), %xmm02870; SSE-NEXT:    addq $2, %rdi2871; SSE-NEXT:    testb $4, %al2872; SSE-NEXT:    je LBB11_62873; SSE-NEXT:  LBB11_5: ## %cond.load52874; SSE-NEXT:    pinsrw $2, (%rdi), %xmm02875; SSE-NEXT:    addq $2, %rdi2876; SSE-NEXT:    testb $8, %al2877; SSE-NEXT:    je LBB11_82878; SSE-NEXT:  LBB11_7: ## %cond.load92879; SSE-NEXT:    pinsrw $3, (%rdi), %xmm02880; SSE-NEXT:    addq $2, %rdi2881; SSE-NEXT:    testb $16, %al2882; SSE-NEXT:    je LBB11_102883; SSE-NEXT:  LBB11_9: ## %cond.load132884; SSE-NEXT:    pinsrw $4, (%rdi), %xmm02885; SSE-NEXT:    addq $2, %rdi2886; SSE-NEXT:    testb $32, %al2887; SSE-NEXT:    je LBB11_122888; SSE-NEXT:  LBB11_11: ## %cond.load172889; SSE-NEXT:    pinsrw $5, (%rdi), %xmm02890; SSE-NEXT:    addq $2, %rdi2891; SSE-NEXT:    testb $64, %al2892; SSE-NEXT:    je LBB11_142893; SSE-NEXT:  LBB11_13: ## %cond.load212894; SSE-NEXT:    pinsrw $6, (%rdi), %xmm02895; SSE-NEXT:    addq $2, %rdi2896; SSE-NEXT:    testb $-128, %al2897; SSE-NEXT:    je LBB11_162898; SSE-NEXT:  LBB11_15: ## %cond.load252899; SSE-NEXT:    pinsrw $7, (%rdi), %xmm02900; SSE-NEXT:    retq2901;2902; AVX1OR2-LABEL: expandload_v8i16_v8i16:2903; AVX1OR2:       ## %bb.0:2904; AVX1OR2-NEXT:    vpxor %xmm2, %xmm2, %xmm22905; AVX1OR2-NEXT:    vpcmpeqw %xmm2, %xmm1, %xmm12906; AVX1OR2-NEXT:    vpacksswb %xmm1, %xmm1, %xmm12907; AVX1OR2-NEXT:    vpmovmskb %xmm1, %eax2908; AVX1OR2-NEXT:    testb $1, %al2909; AVX1OR2-NEXT:    jne LBB11_12910; AVX1OR2-NEXT:  ## %bb.2: ## %else2911; AVX1OR2-NEXT:    testb $2, %al2912; AVX1OR2-NEXT:    jne LBB11_32913; AVX1OR2-NEXT:  LBB11_4: ## %else22914; AVX1OR2-NEXT:    testb $4, %al2915; AVX1OR2-NEXT:    jne LBB11_52916; AVX1OR2-NEXT:  LBB11_6: ## %else62917; AVX1OR2-NEXT:    testb $8, %al2918; AVX1OR2-NEXT:    jne LBB11_72919; AVX1OR2-NEXT:  LBB11_8: ## %else102920; AVX1OR2-NEXT:    testb $16, %al2921; AVX1OR2-NEXT:    jne LBB11_92922; AVX1OR2-NEXT:  LBB11_10: ## %else142923; AVX1OR2-NEXT:    testb $32, %al2924; AVX1OR2-NEXT:    jne LBB11_112925; AVX1OR2-NEXT:  LBB11_12: ## %else182926; AVX1OR2-NEXT:    testb $64, %al2927; AVX1OR2-NEXT:    jne LBB11_132928; AVX1OR2-NEXT:  LBB11_14: ## %else222929; AVX1OR2-NEXT:    testb $-128, %al2930; AVX1OR2-NEXT:    jne LBB11_152931; AVX1OR2-NEXT:  LBB11_16: ## %else262932; AVX1OR2-NEXT:    retq2933; AVX1OR2-NEXT:  LBB11_1: ## %cond.load2934; AVX1OR2-NEXT:    vpinsrw $0, (%rdi), %xmm0, %xmm02935; AVX1OR2-NEXT:    addq $2, %rdi2936; AVX1OR2-NEXT:    testb $2, %al2937; AVX1OR2-NEXT:    je LBB11_42938; AVX1OR2-NEXT:  LBB11_3: ## %cond.load12939; AVX1OR2-NEXT:    vpinsrw $1, (%rdi), %xmm0, %xmm02940; AVX1OR2-NEXT:    addq $2, %rdi2941; AVX1OR2-NEXT:    testb $4, %al2942; AVX1OR2-NEXT:    je LBB11_62943; AVX1OR2-NEXT:  LBB11_5: ## %cond.load52944; AVX1OR2-NEXT:    vpinsrw $2, (%rdi), %xmm0, %xmm02945; AVX1OR2-NEXT:    addq $2, %rdi2946; AVX1OR2-NEXT:    testb $8, %al2947; AVX1OR2-NEXT:    je LBB11_82948; AVX1OR2-NEXT:  LBB11_7: ## %cond.load92949; AVX1OR2-NEXT:    vpinsrw $3, (%rdi), %xmm0, %xmm02950; AVX1OR2-NEXT:    addq $2, %rdi2951; AVX1OR2-NEXT:    testb $16, %al2952; AVX1OR2-NEXT:    je LBB11_102953; AVX1OR2-NEXT:  LBB11_9: ## %cond.load132954; AVX1OR2-NEXT:    vpinsrw $4, (%rdi), %xmm0, %xmm02955; AVX1OR2-NEXT:    addq $2, %rdi2956; AVX1OR2-NEXT:    testb $32, %al2957; AVX1OR2-NEXT:    je LBB11_122958; AVX1OR2-NEXT:  LBB11_11: ## %cond.load172959; AVX1OR2-NEXT:    vpinsrw $5, (%rdi), %xmm0, %xmm02960; AVX1OR2-NEXT:    addq $2, %rdi2961; AVX1OR2-NEXT:    testb $64, %al2962; AVX1OR2-NEXT:    je LBB11_142963; AVX1OR2-NEXT:  LBB11_13: ## %cond.load212964; AVX1OR2-NEXT:    vpinsrw $6, (%rdi), %xmm0, %xmm02965; AVX1OR2-NEXT:    addq $2, %rdi2966; AVX1OR2-NEXT:    testb $-128, %al2967; AVX1OR2-NEXT:    je LBB11_162968; AVX1OR2-NEXT:  LBB11_15: ## %cond.load252969; AVX1OR2-NEXT:    vpinsrw $7, (%rdi), %xmm0, %xmm02970; AVX1OR2-NEXT:    retq2971;2972; AVX512F-LABEL: expandload_v8i16_v8i16:2973; AVX512F:       ## %bb.0:2974; AVX512F-NEXT:    vpxor %xmm2, %xmm2, %xmm22975; AVX512F-NEXT:    vpcmpeqw %xmm2, %xmm1, %xmm12976; AVX512F-NEXT:    vpmovsxwq %xmm1, %zmm12977; AVX512F-NEXT:    vptestmq %zmm1, %zmm1, %k02978; AVX512F-NEXT:    kmovw %k0, %eax2979; AVX512F-NEXT:    testb $1, %al2980; AVX512F-NEXT:    jne LBB11_12981; AVX512F-NEXT:  ## %bb.2: ## %else2982; AVX512F-NEXT:    testb $2, %al2983; AVX512F-NEXT:    jne LBB11_32984; AVX512F-NEXT:  LBB11_4: ## %else22985; AVX512F-NEXT:    testb $4, %al2986; AVX512F-NEXT:    jne LBB11_52987; AVX512F-NEXT:  LBB11_6: ## %else62988; AVX512F-NEXT:    testb $8, %al2989; AVX512F-NEXT:    jne LBB11_72990; AVX512F-NEXT:  LBB11_8: ## %else102991; AVX512F-NEXT:    testb $16, %al2992; AVX512F-NEXT:    jne LBB11_92993; AVX512F-NEXT:  LBB11_10: ## %else142994; AVX512F-NEXT:    testb $32, %al2995; AVX512F-NEXT:    jne LBB11_112996; AVX512F-NEXT:  LBB11_12: ## %else182997; AVX512F-NEXT:    testb $64, %al2998; AVX512F-NEXT:    jne LBB11_132999; AVX512F-NEXT:  LBB11_14: ## %else223000; AVX512F-NEXT:    testb $-128, %al3001; AVX512F-NEXT:    jne LBB11_153002; AVX512F-NEXT:  LBB11_16: ## %else263003; AVX512F-NEXT:    vzeroupper3004; AVX512F-NEXT:    retq3005; AVX512F-NEXT:  LBB11_1: ## %cond.load3006; AVX512F-NEXT:    vpinsrw $0, (%rdi), %xmm0, %xmm03007; AVX512F-NEXT:    addq $2, %rdi3008; AVX512F-NEXT:    testb $2, %al3009; AVX512F-NEXT:    je LBB11_43010; AVX512F-NEXT:  LBB11_3: ## %cond.load13011; AVX512F-NEXT:    vpinsrw $1, (%rdi), %xmm0, %xmm03012; AVX512F-NEXT:    addq $2, %rdi3013; AVX512F-NEXT:    testb $4, %al3014; AVX512F-NEXT:    je LBB11_63015; AVX512F-NEXT:  LBB11_5: ## %cond.load53016; AVX512F-NEXT:    vpinsrw $2, (%rdi), %xmm0, %xmm03017; AVX512F-NEXT:    addq $2, %rdi3018; AVX512F-NEXT:    testb $8, %al3019; AVX512F-NEXT:    je LBB11_83020; AVX512F-NEXT:  LBB11_7: ## %cond.load93021; AVX512F-NEXT:    vpinsrw $3, (%rdi), %xmm0, %xmm03022; AVX512F-NEXT:    addq $2, %rdi3023; AVX512F-NEXT:    testb $16, %al3024; AVX512F-NEXT:    je LBB11_103025; AVX512F-NEXT:  LBB11_9: ## %cond.load133026; AVX512F-NEXT:    vpinsrw $4, (%rdi), %xmm0, %xmm03027; AVX512F-NEXT:    addq $2, %rdi3028; AVX512F-NEXT:    testb $32, %al3029; AVX512F-NEXT:    je LBB11_123030; AVX512F-NEXT:  LBB11_11: ## %cond.load173031; AVX512F-NEXT:    vpinsrw $5, (%rdi), %xmm0, %xmm03032; AVX512F-NEXT:    addq $2, %rdi3033; AVX512F-NEXT:    testb $64, %al3034; AVX512F-NEXT:    je LBB11_143035; AVX512F-NEXT:  LBB11_13: ## %cond.load213036; AVX512F-NEXT:    vpinsrw $6, (%rdi), %xmm0, %xmm03037; AVX512F-NEXT:    addq $2, %rdi3038; AVX512F-NEXT:    testb $-128, %al3039; AVX512F-NEXT:    je LBB11_163040; AVX512F-NEXT:  LBB11_15: ## %cond.load253041; AVX512F-NEXT:    vpinsrw $7, (%rdi), %xmm0, %xmm03042; AVX512F-NEXT:    vzeroupper3043; AVX512F-NEXT:    retq3044;3045; AVX512VLDQ-LABEL: expandload_v8i16_v8i16:3046; AVX512VLDQ:       ## %bb.0:3047; AVX512VLDQ-NEXT:    vpxor %xmm2, %xmm2, %xmm23048; AVX512VLDQ-NEXT:    vpcmpeqw %xmm2, %xmm1, %xmm13049; AVX512VLDQ-NEXT:    vpmovsxwd %xmm1, %ymm13050; AVX512VLDQ-NEXT:    vpmovd2m %ymm1, %k03051; AVX512VLDQ-NEXT:    kmovw %k0, %eax3052; AVX512VLDQ-NEXT:    testb $1, %al3053; AVX512VLDQ-NEXT:    jne LBB11_13054; AVX512VLDQ-NEXT:  ## %bb.2: ## %else3055; AVX512VLDQ-NEXT:    testb $2, %al3056; AVX512VLDQ-NEXT:    jne LBB11_33057; AVX512VLDQ-NEXT:  LBB11_4: ## %else23058; AVX512VLDQ-NEXT:    testb $4, %al3059; AVX512VLDQ-NEXT:    jne LBB11_53060; AVX512VLDQ-NEXT:  LBB11_6: ## %else63061; AVX512VLDQ-NEXT:    testb $8, %al3062; AVX512VLDQ-NEXT:    jne LBB11_73063; AVX512VLDQ-NEXT:  LBB11_8: ## %else103064; AVX512VLDQ-NEXT:    testb $16, %al3065; AVX512VLDQ-NEXT:    jne LBB11_93066; AVX512VLDQ-NEXT:  LBB11_10: ## %else143067; AVX512VLDQ-NEXT:    testb $32, %al3068; AVX512VLDQ-NEXT:    jne LBB11_113069; AVX512VLDQ-NEXT:  LBB11_12: ## %else183070; AVX512VLDQ-NEXT:    testb $64, %al3071; AVX512VLDQ-NEXT:    jne LBB11_133072; AVX512VLDQ-NEXT:  LBB11_14: ## %else223073; AVX512VLDQ-NEXT:    testb $-128, %al3074; AVX512VLDQ-NEXT:    jne LBB11_153075; AVX512VLDQ-NEXT:  LBB11_16: ## %else263076; AVX512VLDQ-NEXT:    vzeroupper3077; AVX512VLDQ-NEXT:    retq3078; AVX512VLDQ-NEXT:  LBB11_1: ## %cond.load3079; AVX512VLDQ-NEXT:    vpinsrw $0, (%rdi), %xmm0, %xmm03080; AVX512VLDQ-NEXT:    addq $2, %rdi3081; AVX512VLDQ-NEXT:    testb $2, %al3082; AVX512VLDQ-NEXT:    je LBB11_43083; AVX512VLDQ-NEXT:  LBB11_3: ## %cond.load13084; AVX512VLDQ-NEXT:    vpinsrw $1, (%rdi), %xmm0, %xmm03085; AVX512VLDQ-NEXT:    addq $2, %rdi3086; AVX512VLDQ-NEXT:    testb $4, %al3087; AVX512VLDQ-NEXT:    je LBB11_63088; AVX512VLDQ-NEXT:  LBB11_5: ## %cond.load53089; AVX512VLDQ-NEXT:    vpinsrw $2, (%rdi), %xmm0, %xmm03090; AVX512VLDQ-NEXT:    addq $2, %rdi3091; AVX512VLDQ-NEXT:    testb $8, %al3092; AVX512VLDQ-NEXT:    je LBB11_83093; AVX512VLDQ-NEXT:  LBB11_7: ## %cond.load93094; AVX512VLDQ-NEXT:    vpinsrw $3, (%rdi), %xmm0, %xmm03095; AVX512VLDQ-NEXT:    addq $2, %rdi3096; AVX512VLDQ-NEXT:    testb $16, %al3097; AVX512VLDQ-NEXT:    je LBB11_103098; AVX512VLDQ-NEXT:  LBB11_9: ## %cond.load133099; AVX512VLDQ-NEXT:    vpinsrw $4, (%rdi), %xmm0, %xmm03100; AVX512VLDQ-NEXT:    addq $2, %rdi3101; AVX512VLDQ-NEXT:    testb $32, %al3102; AVX512VLDQ-NEXT:    je LBB11_123103; AVX512VLDQ-NEXT:  LBB11_11: ## %cond.load173104; AVX512VLDQ-NEXT:    vpinsrw $5, (%rdi), %xmm0, %xmm03105; AVX512VLDQ-NEXT:    addq $2, %rdi3106; AVX512VLDQ-NEXT:    testb $64, %al3107; AVX512VLDQ-NEXT:    je LBB11_143108; AVX512VLDQ-NEXT:  LBB11_13: ## %cond.load213109; AVX512VLDQ-NEXT:    vpinsrw $6, (%rdi), %xmm0, %xmm03110; AVX512VLDQ-NEXT:    addq $2, %rdi3111; AVX512VLDQ-NEXT:    testb $-128, %al3112; AVX512VLDQ-NEXT:    je LBB11_163113; AVX512VLDQ-NEXT:  LBB11_15: ## %cond.load253114; AVX512VLDQ-NEXT:    vpinsrw $7, (%rdi), %xmm0, %xmm03115; AVX512VLDQ-NEXT:    vzeroupper3116; AVX512VLDQ-NEXT:    retq3117;3118; AVX512VLBW-LABEL: expandload_v8i16_v8i16:3119; AVX512VLBW:       ## %bb.0:3120; AVX512VLBW-NEXT:    vptestnmw %xmm1, %xmm1, %k03121; AVX512VLBW-NEXT:    kmovd %k0, %eax3122; AVX512VLBW-NEXT:    testb $1, %al3123; AVX512VLBW-NEXT:    jne LBB11_13124; AVX512VLBW-NEXT:  ## %bb.2: ## %else3125; AVX512VLBW-NEXT:    testb $2, %al3126; AVX512VLBW-NEXT:    jne LBB11_33127; AVX512VLBW-NEXT:  LBB11_4: ## %else23128; AVX512VLBW-NEXT:    testb $4, %al3129; AVX512VLBW-NEXT:    jne LBB11_53130; AVX512VLBW-NEXT:  LBB11_6: ## %else63131; AVX512VLBW-NEXT:    testb $8, %al3132; AVX512VLBW-NEXT:    jne LBB11_73133; AVX512VLBW-NEXT:  LBB11_8: ## %else103134; AVX512VLBW-NEXT:    testb $16, %al3135; AVX512VLBW-NEXT:    jne LBB11_93136; AVX512VLBW-NEXT:  LBB11_10: ## %else143137; AVX512VLBW-NEXT:    testb $32, %al3138; AVX512VLBW-NEXT:    jne LBB11_113139; AVX512VLBW-NEXT:  LBB11_12: ## %else183140; AVX512VLBW-NEXT:    testb $64, %al3141; AVX512VLBW-NEXT:    jne LBB11_133142; AVX512VLBW-NEXT:  LBB11_14: ## %else223143; AVX512VLBW-NEXT:    testb $-128, %al3144; AVX512VLBW-NEXT:    jne LBB11_153145; AVX512VLBW-NEXT:  LBB11_16: ## %else263146; AVX512VLBW-NEXT:    retq3147; AVX512VLBW-NEXT:  LBB11_1: ## %cond.load3148; AVX512VLBW-NEXT:    vpinsrw $0, (%rdi), %xmm0, %xmm03149; AVX512VLBW-NEXT:    addq $2, %rdi3150; AVX512VLBW-NEXT:    testb $2, %al3151; AVX512VLBW-NEXT:    je LBB11_43152; AVX512VLBW-NEXT:  LBB11_3: ## %cond.load13153; AVX512VLBW-NEXT:    vpinsrw $1, (%rdi), %xmm0, %xmm03154; AVX512VLBW-NEXT:    addq $2, %rdi3155; AVX512VLBW-NEXT:    testb $4, %al3156; AVX512VLBW-NEXT:    je LBB11_63157; AVX512VLBW-NEXT:  LBB11_5: ## %cond.load53158; AVX512VLBW-NEXT:    vpinsrw $2, (%rdi), %xmm0, %xmm03159; AVX512VLBW-NEXT:    addq $2, %rdi3160; AVX512VLBW-NEXT:    testb $8, %al3161; AVX512VLBW-NEXT:    je LBB11_83162; AVX512VLBW-NEXT:  LBB11_7: ## %cond.load93163; AVX512VLBW-NEXT:    vpinsrw $3, (%rdi), %xmm0, %xmm03164; AVX512VLBW-NEXT:    addq $2, %rdi3165; AVX512VLBW-NEXT:    testb $16, %al3166; AVX512VLBW-NEXT:    je LBB11_103167; AVX512VLBW-NEXT:  LBB11_9: ## %cond.load133168; AVX512VLBW-NEXT:    vpinsrw $4, (%rdi), %xmm0, %xmm03169; AVX512VLBW-NEXT:    addq $2, %rdi3170; AVX512VLBW-NEXT:    testb $32, %al3171; AVX512VLBW-NEXT:    je LBB11_123172; AVX512VLBW-NEXT:  LBB11_11: ## %cond.load173173; AVX512VLBW-NEXT:    vpinsrw $5, (%rdi), %xmm0, %xmm03174; AVX512VLBW-NEXT:    addq $2, %rdi3175; AVX512VLBW-NEXT:    testb $64, %al3176; AVX512VLBW-NEXT:    je LBB11_143177; AVX512VLBW-NEXT:  LBB11_13: ## %cond.load213178; AVX512VLBW-NEXT:    vpinsrw $6, (%rdi), %xmm0, %xmm03179; AVX512VLBW-NEXT:    addq $2, %rdi3180; AVX512VLBW-NEXT:    testb $-128, %al3181; AVX512VLBW-NEXT:    je LBB11_163182; AVX512VLBW-NEXT:  LBB11_15: ## %cond.load253183; AVX512VLBW-NEXT:    vpinsrw $7, (%rdi), %xmm0, %xmm03184; AVX512VLBW-NEXT:    retq3185  %mask = icmp eq <8 x i16> %trigger, zeroinitializer3186  %res = call <8 x i16> @llvm.masked.expandload.v8i16(ptr %base, <8 x i1> %mask, <8 x i16> %src0)3187  ret <8 x i16>%res3188}3189 3190;3191; vXi83192;3193 3194define <16 x i8> @expandload_v16i8_v16i8(ptr %base, <16 x i8> %src0, <16 x i8> %trigger) {3195; SSE2-LABEL: expandload_v16i8_v16i8:3196; SSE2:       ## %bb.0:3197; SSE2-NEXT:    pxor %xmm2, %xmm23198; SSE2-NEXT:    pcmpeqb %xmm1, %xmm23199; SSE2-NEXT:    pmovmskb %xmm2, %eax3200; SSE2-NEXT:    testb $1, %al3201; SSE2-NEXT:    jne LBB12_13202; SSE2-NEXT:  ## %bb.2: ## %else3203; SSE2-NEXT:    testb $2, %al3204; SSE2-NEXT:    jne LBB12_33205; SSE2-NEXT:  LBB12_4: ## %else23206; SSE2-NEXT:    testb $4, %al3207; SSE2-NEXT:    jne LBB12_53208; SSE2-NEXT:  LBB12_6: ## %else63209; SSE2-NEXT:    testb $8, %al3210; SSE2-NEXT:    jne LBB12_73211; SSE2-NEXT:  LBB12_8: ## %else103212; SSE2-NEXT:    testb $16, %al3213; SSE2-NEXT:    jne LBB12_93214; SSE2-NEXT:  LBB12_10: ## %else143215; SSE2-NEXT:    testb $32, %al3216; SSE2-NEXT:    jne LBB12_113217; SSE2-NEXT:  LBB12_12: ## %else183218; SSE2-NEXT:    testb $64, %al3219; SSE2-NEXT:    jne LBB12_133220; SSE2-NEXT:  LBB12_14: ## %else223221; SSE2-NEXT:    testb %al, %al3222; SSE2-NEXT:    js LBB12_153223; SSE2-NEXT:  LBB12_16: ## %else263224; SSE2-NEXT:    testl $256, %eax ## imm = 0x1003225; SSE2-NEXT:    jne LBB12_173226; SSE2-NEXT:  LBB12_18: ## %else303227; SSE2-NEXT:    testl $512, %eax ## imm = 0x2003228; SSE2-NEXT:    jne LBB12_193229; SSE2-NEXT:  LBB12_20: ## %else343230; SSE2-NEXT:    testl $1024, %eax ## imm = 0x4003231; SSE2-NEXT:    jne LBB12_213232; SSE2-NEXT:  LBB12_22: ## %else383233; SSE2-NEXT:    testl $2048, %eax ## imm = 0x8003234; SSE2-NEXT:    jne LBB12_233235; SSE2-NEXT:  LBB12_24: ## %else423236; SSE2-NEXT:    testl $4096, %eax ## imm = 0x10003237; SSE2-NEXT:    jne LBB12_253238; SSE2-NEXT:  LBB12_26: ## %else463239; SSE2-NEXT:    testl $8192, %eax ## imm = 0x20003240; SSE2-NEXT:    jne LBB12_273241; SSE2-NEXT:  LBB12_28: ## %else503242; SSE2-NEXT:    testl $16384, %eax ## imm = 0x40003243; SSE2-NEXT:    jne LBB12_293244; SSE2-NEXT:  LBB12_30: ## %else543245; SSE2-NEXT:    testl $32768, %eax ## imm = 0x80003246; SSE2-NEXT:    jne LBB12_313247; SSE2-NEXT:  LBB12_32: ## %else583248; SSE2-NEXT:    retq3249; SSE2-NEXT:  LBB12_1: ## %cond.load3250; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255]3251; SSE2-NEXT:    pand %xmm1, %xmm03252; SSE2-NEXT:    movzbl (%rdi), %ecx3253; SSE2-NEXT:    movd %ecx, %xmm23254; SSE2-NEXT:    pandn %xmm2, %xmm13255; SSE2-NEXT:    por %xmm1, %xmm03256; SSE2-NEXT:    incq %rdi3257; SSE2-NEXT:    testb $2, %al3258; SSE2-NEXT:    je LBB12_43259; SSE2-NEXT:  LBB12_3: ## %cond.load13260; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [255,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255]3261; SSE2-NEXT:    pand %xmm1, %xmm03262; SSE2-NEXT:    movzbl (%rdi), %ecx3263; SSE2-NEXT:    movd %ecx, %xmm23264; SSE2-NEXT:    psllw $8, %xmm23265; SSE2-NEXT:    pandn %xmm2, %xmm13266; SSE2-NEXT:    por %xmm1, %xmm03267; SSE2-NEXT:    incq %rdi3268; SSE2-NEXT:    testb $4, %al3269; SSE2-NEXT:    je LBB12_63270; SSE2-NEXT:  LBB12_5: ## %cond.load53271; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,0,255,255,255,255,255,255,255,255,255,255,255,255,255]3272; SSE2-NEXT:    pand %xmm1, %xmm03273; SSE2-NEXT:    movzbl (%rdi), %ecx3274; SSE2-NEXT:    movd %ecx, %xmm23275; SSE2-NEXT:    pslld $16, %xmm23276; SSE2-NEXT:    pandn %xmm2, %xmm13277; SSE2-NEXT:    por %xmm1, %xmm03278; SSE2-NEXT:    incq %rdi3279; SSE2-NEXT:    testb $8, %al3280; SSE2-NEXT:    je LBB12_83281; SSE2-NEXT:  LBB12_7: ## %cond.load93282; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,255,0,255,255,255,255,255,255,255,255,255,255,255,255]3283; SSE2-NEXT:    pand %xmm1, %xmm03284; SSE2-NEXT:    movzbl (%rdi), %ecx3285; SSE2-NEXT:    movd %ecx, %xmm23286; SSE2-NEXT:    pslld $24, %xmm23287; SSE2-NEXT:    pandn %xmm2, %xmm13288; SSE2-NEXT:    por %xmm1, %xmm03289; SSE2-NEXT:    incq %rdi3290; SSE2-NEXT:    testb $16, %al3291; SSE2-NEXT:    je LBB12_103292; SSE2-NEXT:  LBB12_9: ## %cond.load133293; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,255,255,0,255,255,255,255,255,255,255,255,255,255,255]3294; SSE2-NEXT:    pand %xmm1, %xmm03295; SSE2-NEXT:    movzbl (%rdi), %ecx3296; SSE2-NEXT:    movd %ecx, %xmm23297; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,0,1,1]3298; SSE2-NEXT:    pandn %xmm2, %xmm13299; SSE2-NEXT:    por %xmm1, %xmm03300; SSE2-NEXT:    incq %rdi3301; SSE2-NEXT:    testb $32, %al3302; SSE2-NEXT:    je LBB12_123303; SSE2-NEXT:  LBB12_11: ## %cond.load173304; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,255,255,255,0,255,255,255,255,255,255,255,255,255,255]3305; SSE2-NEXT:    pand %xmm1, %xmm03306; SSE2-NEXT:    movzbl (%rdi), %ecx3307; SSE2-NEXT:    movd %ecx, %xmm23308; SSE2-NEXT:    psllq $40, %xmm23309; SSE2-NEXT:    pandn %xmm2, %xmm13310; SSE2-NEXT:    por %xmm1, %xmm03311; SSE2-NEXT:    incq %rdi3312; SSE2-NEXT:    testb $64, %al3313; SSE2-NEXT:    je LBB12_143314; SSE2-NEXT:  LBB12_13: ## %cond.load213315; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,255]3316; SSE2-NEXT:    pand %xmm1, %xmm03317; SSE2-NEXT:    movzbl (%rdi), %ecx3318; SSE2-NEXT:    movd %ecx, %xmm23319; SSE2-NEXT:    psllq $48, %xmm23320; SSE2-NEXT:    pandn %xmm2, %xmm13321; SSE2-NEXT:    por %xmm1, %xmm03322; SSE2-NEXT:    incq %rdi3323; SSE2-NEXT:    testb %al, %al3324; SSE2-NEXT:    jns LBB12_163325; SSE2-NEXT:  LBB12_15: ## %cond.load253326; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255]3327; SSE2-NEXT:    pand %xmm1, %xmm03328; SSE2-NEXT:    movzbl (%rdi), %ecx3329; SSE2-NEXT:    movd %ecx, %xmm23330; SSE2-NEXT:    psllq $56, %xmm23331; SSE2-NEXT:    pandn %xmm2, %xmm13332; SSE2-NEXT:    por %xmm1, %xmm03333; SSE2-NEXT:    incq %rdi3334; SSE2-NEXT:    testl $256, %eax ## imm = 0x1003335; SSE2-NEXT:    je LBB12_183336; SSE2-NEXT:  LBB12_17: ## %cond.load293337; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255]3338; SSE2-NEXT:    pand %xmm1, %xmm03339; SSE2-NEXT:    movzbl (%rdi), %ecx3340; SSE2-NEXT:    movd %ecx, %xmm23341; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,1,0,1]3342; SSE2-NEXT:    pandn %xmm2, %xmm13343; SSE2-NEXT:    por %xmm1, %xmm03344; SSE2-NEXT:    incq %rdi3345; SSE2-NEXT:    testl $512, %eax ## imm = 0x2003346; SSE2-NEXT:    je LBB12_203347; SSE2-NEXT:  LBB12_19: ## %cond.load333348; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255]3349; SSE2-NEXT:    pand %xmm1, %xmm03350; SSE2-NEXT:    movzbl (%rdi), %ecx3351; SSE2-NEXT:    movd %ecx, %xmm23352; SSE2-NEXT:    pslldq {{.*#+}} xmm2 = zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm2[0,1,2,3,4,5,6]3353; SSE2-NEXT:    pandn %xmm2, %xmm13354; SSE2-NEXT:    por %xmm1, %xmm03355; SSE2-NEXT:    incq %rdi3356; SSE2-NEXT:    testl $1024, %eax ## imm = 0x4003357; SSE2-NEXT:    je LBB12_223358; SSE2-NEXT:  LBB12_21: ## %cond.load373359; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,255,255,255,255,255,255,255,255,0,255,255,255,255,255]3360; SSE2-NEXT:    pand %xmm1, %xmm03361; SSE2-NEXT:    movzbl (%rdi), %ecx3362; SSE2-NEXT:    movd %ecx, %xmm23363; SSE2-NEXT:    pslldq {{.*#+}} xmm2 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm2[0,1,2,3,4,5]3364; SSE2-NEXT:    pandn %xmm2, %xmm13365; SSE2-NEXT:    por %xmm1, %xmm03366; SSE2-NEXT:    incq %rdi3367; SSE2-NEXT:    testl $2048, %eax ## imm = 0x8003368; SSE2-NEXT:    je LBB12_243369; SSE2-NEXT:  LBB12_23: ## %cond.load413370; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,255,255,255,255,255,255,255,255,255,0,255,255,255,255]3371; SSE2-NEXT:    pand %xmm1, %xmm03372; SSE2-NEXT:    movzbl (%rdi), %ecx3373; SSE2-NEXT:    movd %ecx, %xmm23374; SSE2-NEXT:    pslldq {{.*#+}} xmm2 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm2[0,1,2,3,4]3375; SSE2-NEXT:    pandn %xmm2, %xmm13376; SSE2-NEXT:    por %xmm1, %xmm03377; SSE2-NEXT:    incq %rdi3378; SSE2-NEXT:    testl $4096, %eax ## imm = 0x10003379; SSE2-NEXT:    je LBB12_263380; SSE2-NEXT:  LBB12_25: ## %cond.load453381; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,255,255,255,255,255,255,255,255,255,255,0,255,255,255]3382; SSE2-NEXT:    pand %xmm1, %xmm03383; SSE2-NEXT:    movzbl (%rdi), %ecx3384; SSE2-NEXT:    movd %ecx, %xmm23385; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,0,0,0]3386; SSE2-NEXT:    pandn %xmm2, %xmm13387; SSE2-NEXT:    por %xmm1, %xmm03388; SSE2-NEXT:    incq %rdi3389; SSE2-NEXT:    testl $8192, %eax ## imm = 0x20003390; SSE2-NEXT:    je LBB12_283391; SSE2-NEXT:  LBB12_27: ## %cond.load493392; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,255,255,255,255,255,255,255,255,255,255,255,0,255,255]3393; SSE2-NEXT:    pand %xmm1, %xmm03394; SSE2-NEXT:    movzbl (%rdi), %ecx3395; SSE2-NEXT:    movd %ecx, %xmm23396; SSE2-NEXT:    pslldq {{.*#+}} xmm2 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm2[0,1,2]3397; SSE2-NEXT:    pandn %xmm2, %xmm13398; SSE2-NEXT:    por %xmm1, %xmm03399; SSE2-NEXT:    incq %rdi3400; SSE2-NEXT:    testl $16384, %eax ## imm = 0x40003401; SSE2-NEXT:    je LBB12_303402; SSE2-NEXT:  LBB12_29: ## %cond.load533403; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,255]3404; SSE2-NEXT:    pand %xmm1, %xmm03405; SSE2-NEXT:    movzbl (%rdi), %ecx3406; SSE2-NEXT:    movd %ecx, %xmm23407; SSE2-NEXT:    pslldq {{.*#+}} xmm2 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm2[0,1]3408; SSE2-NEXT:    pandn %xmm2, %xmm13409; SSE2-NEXT:    por %xmm1, %xmm03410; SSE2-NEXT:    incq %rdi3411; SSE2-NEXT:    testl $32768, %eax ## imm = 0x80003412; SSE2-NEXT:    je LBB12_323413; SSE2-NEXT:  LBB12_31: ## %cond.load573414; SSE2-NEXT:    pand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm03415; SSE2-NEXT:    movzbl (%rdi), %eax3416; SSE2-NEXT:    movd %eax, %xmm13417; SSE2-NEXT:    pslldq {{.*#+}} xmm1 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm1[0]3418; SSE2-NEXT:    por %xmm1, %xmm03419; SSE2-NEXT:    retq3420;3421; SSE42-LABEL: expandload_v16i8_v16i8:3422; SSE42:       ## %bb.0:3423; SSE42-NEXT:    pxor %xmm2, %xmm23424; SSE42-NEXT:    pcmpeqb %xmm1, %xmm23425; SSE42-NEXT:    pmovmskb %xmm2, %eax3426; SSE42-NEXT:    testb $1, %al3427; SSE42-NEXT:    jne LBB12_13428; SSE42-NEXT:  ## %bb.2: ## %else3429; SSE42-NEXT:    testb $2, %al3430; SSE42-NEXT:    jne LBB12_33431; SSE42-NEXT:  LBB12_4: ## %else23432; SSE42-NEXT:    testb $4, %al3433; SSE42-NEXT:    jne LBB12_53434; SSE42-NEXT:  LBB12_6: ## %else63435; SSE42-NEXT:    testb $8, %al3436; SSE42-NEXT:    jne LBB12_73437; SSE42-NEXT:  LBB12_8: ## %else103438; SSE42-NEXT:    testb $16, %al3439; SSE42-NEXT:    jne LBB12_93440; SSE42-NEXT:  LBB12_10: ## %else143441; SSE42-NEXT:    testb $32, %al3442; SSE42-NEXT:    jne LBB12_113443; SSE42-NEXT:  LBB12_12: ## %else183444; SSE42-NEXT:    testb $64, %al3445; SSE42-NEXT:    jne LBB12_133446; SSE42-NEXT:  LBB12_14: ## %else223447; SSE42-NEXT:    testb %al, %al3448; SSE42-NEXT:    js LBB12_153449; SSE42-NEXT:  LBB12_16: ## %else263450; SSE42-NEXT:    testl $256, %eax ## imm = 0x1003451; SSE42-NEXT:    jne LBB12_173452; SSE42-NEXT:  LBB12_18: ## %else303453; SSE42-NEXT:    testl $512, %eax ## imm = 0x2003454; SSE42-NEXT:    jne LBB12_193455; SSE42-NEXT:  LBB12_20: ## %else343456; SSE42-NEXT:    testl $1024, %eax ## imm = 0x4003457; SSE42-NEXT:    jne LBB12_213458; SSE42-NEXT:  LBB12_22: ## %else383459; SSE42-NEXT:    testl $2048, %eax ## imm = 0x8003460; SSE42-NEXT:    jne LBB12_233461; SSE42-NEXT:  LBB12_24: ## %else423462; SSE42-NEXT:    testl $4096, %eax ## imm = 0x10003463; SSE42-NEXT:    jne LBB12_253464; SSE42-NEXT:  LBB12_26: ## %else463465; SSE42-NEXT:    testl $8192, %eax ## imm = 0x20003466; SSE42-NEXT:    jne LBB12_273467; SSE42-NEXT:  LBB12_28: ## %else503468; SSE42-NEXT:    testl $16384, %eax ## imm = 0x40003469; SSE42-NEXT:    jne LBB12_293470; SSE42-NEXT:  LBB12_30: ## %else543471; SSE42-NEXT:    testl $32768, %eax ## imm = 0x80003472; SSE42-NEXT:    jne LBB12_313473; SSE42-NEXT:  LBB12_32: ## %else583474; SSE42-NEXT:    retq3475; SSE42-NEXT:  LBB12_1: ## %cond.load3476; SSE42-NEXT:    pinsrb $0, (%rdi), %xmm03477; SSE42-NEXT:    incq %rdi3478; SSE42-NEXT:    testb $2, %al3479; SSE42-NEXT:    je LBB12_43480; SSE42-NEXT:  LBB12_3: ## %cond.load13481; SSE42-NEXT:    pinsrb $1, (%rdi), %xmm03482; SSE42-NEXT:    incq %rdi3483; SSE42-NEXT:    testb $4, %al3484; SSE42-NEXT:    je LBB12_63485; SSE42-NEXT:  LBB12_5: ## %cond.load53486; SSE42-NEXT:    pinsrb $2, (%rdi), %xmm03487; SSE42-NEXT:    incq %rdi3488; SSE42-NEXT:    testb $8, %al3489; SSE42-NEXT:    je LBB12_83490; SSE42-NEXT:  LBB12_7: ## %cond.load93491; SSE42-NEXT:    pinsrb $3, (%rdi), %xmm03492; SSE42-NEXT:    incq %rdi3493; SSE42-NEXT:    testb $16, %al3494; SSE42-NEXT:    je LBB12_103495; SSE42-NEXT:  LBB12_9: ## %cond.load133496; SSE42-NEXT:    pinsrb $4, (%rdi), %xmm03497; SSE42-NEXT:    incq %rdi3498; SSE42-NEXT:    testb $32, %al3499; SSE42-NEXT:    je LBB12_123500; SSE42-NEXT:  LBB12_11: ## %cond.load173501; SSE42-NEXT:    pinsrb $5, (%rdi), %xmm03502; SSE42-NEXT:    incq %rdi3503; SSE42-NEXT:    testb $64, %al3504; SSE42-NEXT:    je LBB12_143505; SSE42-NEXT:  LBB12_13: ## %cond.load213506; SSE42-NEXT:    pinsrb $6, (%rdi), %xmm03507; SSE42-NEXT:    incq %rdi3508; SSE42-NEXT:    testb %al, %al3509; SSE42-NEXT:    jns LBB12_163510; SSE42-NEXT:  LBB12_15: ## %cond.load253511; SSE42-NEXT:    pinsrb $7, (%rdi), %xmm03512; SSE42-NEXT:    incq %rdi3513; SSE42-NEXT:    testl $256, %eax ## imm = 0x1003514; SSE42-NEXT:    je LBB12_183515; SSE42-NEXT:  LBB12_17: ## %cond.load293516; SSE42-NEXT:    pinsrb $8, (%rdi), %xmm03517; SSE42-NEXT:    incq %rdi3518; SSE42-NEXT:    testl $512, %eax ## imm = 0x2003519; SSE42-NEXT:    je LBB12_203520; SSE42-NEXT:  LBB12_19: ## %cond.load333521; SSE42-NEXT:    pinsrb $9, (%rdi), %xmm03522; SSE42-NEXT:    incq %rdi3523; SSE42-NEXT:    testl $1024, %eax ## imm = 0x4003524; SSE42-NEXT:    je LBB12_223525; SSE42-NEXT:  LBB12_21: ## %cond.load373526; SSE42-NEXT:    pinsrb $10, (%rdi), %xmm03527; SSE42-NEXT:    incq %rdi3528; SSE42-NEXT:    testl $2048, %eax ## imm = 0x8003529; SSE42-NEXT:    je LBB12_243530; SSE42-NEXT:  LBB12_23: ## %cond.load413531; SSE42-NEXT:    pinsrb $11, (%rdi), %xmm03532; SSE42-NEXT:    incq %rdi3533; SSE42-NEXT:    testl $4096, %eax ## imm = 0x10003534; SSE42-NEXT:    je LBB12_263535; SSE42-NEXT:  LBB12_25: ## %cond.load453536; SSE42-NEXT:    pinsrb $12, (%rdi), %xmm03537; SSE42-NEXT:    incq %rdi3538; SSE42-NEXT:    testl $8192, %eax ## imm = 0x20003539; SSE42-NEXT:    je LBB12_283540; SSE42-NEXT:  LBB12_27: ## %cond.load493541; SSE42-NEXT:    pinsrb $13, (%rdi), %xmm03542; SSE42-NEXT:    incq %rdi3543; SSE42-NEXT:    testl $16384, %eax ## imm = 0x40003544; SSE42-NEXT:    je LBB12_303545; SSE42-NEXT:  LBB12_29: ## %cond.load533546; SSE42-NEXT:    pinsrb $14, (%rdi), %xmm03547; SSE42-NEXT:    incq %rdi3548; SSE42-NEXT:    testl $32768, %eax ## imm = 0x80003549; SSE42-NEXT:    je LBB12_323550; SSE42-NEXT:  LBB12_31: ## %cond.load573551; SSE42-NEXT:    pinsrb $15, (%rdi), %xmm03552; SSE42-NEXT:    retq3553;3554; AVX1OR2-LABEL: expandload_v16i8_v16i8:3555; AVX1OR2:       ## %bb.0:3556; AVX1OR2-NEXT:    vpxor %xmm2, %xmm2, %xmm23557; AVX1OR2-NEXT:    vpcmpeqb %xmm2, %xmm1, %xmm13558; AVX1OR2-NEXT:    vpmovmskb %xmm1, %eax3559; AVX1OR2-NEXT:    testb $1, %al3560; AVX1OR2-NEXT:    jne LBB12_13561; AVX1OR2-NEXT:  ## %bb.2: ## %else3562; AVX1OR2-NEXT:    testb $2, %al3563; AVX1OR2-NEXT:    jne LBB12_33564; AVX1OR2-NEXT:  LBB12_4: ## %else23565; AVX1OR2-NEXT:    testb $4, %al3566; AVX1OR2-NEXT:    jne LBB12_53567; AVX1OR2-NEXT:  LBB12_6: ## %else63568; AVX1OR2-NEXT:    testb $8, %al3569; AVX1OR2-NEXT:    jne LBB12_73570; AVX1OR2-NEXT:  LBB12_8: ## %else103571; AVX1OR2-NEXT:    testb $16, %al3572; AVX1OR2-NEXT:    jne LBB12_93573; AVX1OR2-NEXT:  LBB12_10: ## %else143574; AVX1OR2-NEXT:    testb $32, %al3575; AVX1OR2-NEXT:    jne LBB12_113576; AVX1OR2-NEXT:  LBB12_12: ## %else183577; AVX1OR2-NEXT:    testb $64, %al3578; AVX1OR2-NEXT:    jne LBB12_133579; AVX1OR2-NEXT:  LBB12_14: ## %else223580; AVX1OR2-NEXT:    testb %al, %al3581; AVX1OR2-NEXT:    js LBB12_153582; AVX1OR2-NEXT:  LBB12_16: ## %else263583; AVX1OR2-NEXT:    testl $256, %eax ## imm = 0x1003584; AVX1OR2-NEXT:    jne LBB12_173585; AVX1OR2-NEXT:  LBB12_18: ## %else303586; AVX1OR2-NEXT:    testl $512, %eax ## imm = 0x2003587; AVX1OR2-NEXT:    jne LBB12_193588; AVX1OR2-NEXT:  LBB12_20: ## %else343589; AVX1OR2-NEXT:    testl $1024, %eax ## imm = 0x4003590; AVX1OR2-NEXT:    jne LBB12_213591; AVX1OR2-NEXT:  LBB12_22: ## %else383592; AVX1OR2-NEXT:    testl $2048, %eax ## imm = 0x8003593; AVX1OR2-NEXT:    jne LBB12_233594; AVX1OR2-NEXT:  LBB12_24: ## %else423595; AVX1OR2-NEXT:    testl $4096, %eax ## imm = 0x10003596; AVX1OR2-NEXT:    jne LBB12_253597; AVX1OR2-NEXT:  LBB12_26: ## %else463598; AVX1OR2-NEXT:    testl $8192, %eax ## imm = 0x20003599; AVX1OR2-NEXT:    jne LBB12_273600; AVX1OR2-NEXT:  LBB12_28: ## %else503601; AVX1OR2-NEXT:    testl $16384, %eax ## imm = 0x40003602; AVX1OR2-NEXT:    jne LBB12_293603; AVX1OR2-NEXT:  LBB12_30: ## %else543604; AVX1OR2-NEXT:    testl $32768, %eax ## imm = 0x80003605; AVX1OR2-NEXT:    jne LBB12_313606; AVX1OR2-NEXT:  LBB12_32: ## %else583607; AVX1OR2-NEXT:    retq3608; AVX1OR2-NEXT:  LBB12_1: ## %cond.load3609; AVX1OR2-NEXT:    vpinsrb $0, (%rdi), %xmm0, %xmm03610; AVX1OR2-NEXT:    incq %rdi3611; AVX1OR2-NEXT:    testb $2, %al3612; AVX1OR2-NEXT:    je LBB12_43613; AVX1OR2-NEXT:  LBB12_3: ## %cond.load13614; AVX1OR2-NEXT:    vpinsrb $1, (%rdi), %xmm0, %xmm03615; AVX1OR2-NEXT:    incq %rdi3616; AVX1OR2-NEXT:    testb $4, %al3617; AVX1OR2-NEXT:    je LBB12_63618; AVX1OR2-NEXT:  LBB12_5: ## %cond.load53619; AVX1OR2-NEXT:    vpinsrb $2, (%rdi), %xmm0, %xmm03620; AVX1OR2-NEXT:    incq %rdi3621; AVX1OR2-NEXT:    testb $8, %al3622; AVX1OR2-NEXT:    je LBB12_83623; AVX1OR2-NEXT:  LBB12_7: ## %cond.load93624; AVX1OR2-NEXT:    vpinsrb $3, (%rdi), %xmm0, %xmm03625; AVX1OR2-NEXT:    incq %rdi3626; AVX1OR2-NEXT:    testb $16, %al3627; AVX1OR2-NEXT:    je LBB12_103628; AVX1OR2-NEXT:  LBB12_9: ## %cond.load133629; AVX1OR2-NEXT:    vpinsrb $4, (%rdi), %xmm0, %xmm03630; AVX1OR2-NEXT:    incq %rdi3631; AVX1OR2-NEXT:    testb $32, %al3632; AVX1OR2-NEXT:    je LBB12_123633; AVX1OR2-NEXT:  LBB12_11: ## %cond.load173634; AVX1OR2-NEXT:    vpinsrb $5, (%rdi), %xmm0, %xmm03635; AVX1OR2-NEXT:    incq %rdi3636; AVX1OR2-NEXT:    testb $64, %al3637; AVX1OR2-NEXT:    je LBB12_143638; AVX1OR2-NEXT:  LBB12_13: ## %cond.load213639; AVX1OR2-NEXT:    vpinsrb $6, (%rdi), %xmm0, %xmm03640; AVX1OR2-NEXT:    incq %rdi3641; AVX1OR2-NEXT:    testb %al, %al3642; AVX1OR2-NEXT:    jns LBB12_163643; AVX1OR2-NEXT:  LBB12_15: ## %cond.load253644; AVX1OR2-NEXT:    vpinsrb $7, (%rdi), %xmm0, %xmm03645; AVX1OR2-NEXT:    incq %rdi3646; AVX1OR2-NEXT:    testl $256, %eax ## imm = 0x1003647; AVX1OR2-NEXT:    je LBB12_183648; AVX1OR2-NEXT:  LBB12_17: ## %cond.load293649; AVX1OR2-NEXT:    vpinsrb $8, (%rdi), %xmm0, %xmm03650; AVX1OR2-NEXT:    incq %rdi3651; AVX1OR2-NEXT:    testl $512, %eax ## imm = 0x2003652; AVX1OR2-NEXT:    je LBB12_203653; AVX1OR2-NEXT:  LBB12_19: ## %cond.load333654; AVX1OR2-NEXT:    vpinsrb $9, (%rdi), %xmm0, %xmm03655; AVX1OR2-NEXT:    incq %rdi3656; AVX1OR2-NEXT:    testl $1024, %eax ## imm = 0x4003657; AVX1OR2-NEXT:    je LBB12_223658; AVX1OR2-NEXT:  LBB12_21: ## %cond.load373659; AVX1OR2-NEXT:    vpinsrb $10, (%rdi), %xmm0, %xmm03660; AVX1OR2-NEXT:    incq %rdi3661; AVX1OR2-NEXT:    testl $2048, %eax ## imm = 0x8003662; AVX1OR2-NEXT:    je LBB12_243663; AVX1OR2-NEXT:  LBB12_23: ## %cond.load413664; AVX1OR2-NEXT:    vpinsrb $11, (%rdi), %xmm0, %xmm03665; AVX1OR2-NEXT:    incq %rdi3666; AVX1OR2-NEXT:    testl $4096, %eax ## imm = 0x10003667; AVX1OR2-NEXT:    je LBB12_263668; AVX1OR2-NEXT:  LBB12_25: ## %cond.load453669; AVX1OR2-NEXT:    vpinsrb $12, (%rdi), %xmm0, %xmm03670; AVX1OR2-NEXT:    incq %rdi3671; AVX1OR2-NEXT:    testl $8192, %eax ## imm = 0x20003672; AVX1OR2-NEXT:    je LBB12_283673; AVX1OR2-NEXT:  LBB12_27: ## %cond.load493674; AVX1OR2-NEXT:    vpinsrb $13, (%rdi), %xmm0, %xmm03675; AVX1OR2-NEXT:    incq %rdi3676; AVX1OR2-NEXT:    testl $16384, %eax ## imm = 0x40003677; AVX1OR2-NEXT:    je LBB12_303678; AVX1OR2-NEXT:  LBB12_29: ## %cond.load533679; AVX1OR2-NEXT:    vpinsrb $14, (%rdi), %xmm0, %xmm03680; AVX1OR2-NEXT:    incq %rdi3681; AVX1OR2-NEXT:    testl $32768, %eax ## imm = 0x80003682; AVX1OR2-NEXT:    je LBB12_323683; AVX1OR2-NEXT:  LBB12_31: ## %cond.load573684; AVX1OR2-NEXT:    vpinsrb $15, (%rdi), %xmm0, %xmm03685; AVX1OR2-NEXT:    retq3686;3687; AVX512F-LABEL: expandload_v16i8_v16i8:3688; AVX512F:       ## %bb.0:3689; AVX512F-NEXT:    vpxor %xmm2, %xmm2, %xmm23690; AVX512F-NEXT:    vpcmpeqb %xmm2, %xmm1, %xmm13691; AVX512F-NEXT:    vpmovmskb %xmm1, %eax3692; AVX512F-NEXT:    testb $1, %al3693; AVX512F-NEXT:    jne LBB12_13694; AVX512F-NEXT:  ## %bb.2: ## %else3695; AVX512F-NEXT:    testb $2, %al3696; AVX512F-NEXT:    jne LBB12_33697; AVX512F-NEXT:  LBB12_4: ## %else23698; AVX512F-NEXT:    testb $4, %al3699; AVX512F-NEXT:    jne LBB12_53700; AVX512F-NEXT:  LBB12_6: ## %else63701; AVX512F-NEXT:    testb $8, %al3702; AVX512F-NEXT:    jne LBB12_73703; AVX512F-NEXT:  LBB12_8: ## %else103704; AVX512F-NEXT:    testb $16, %al3705; AVX512F-NEXT:    jne LBB12_93706; AVX512F-NEXT:  LBB12_10: ## %else143707; AVX512F-NEXT:    testb $32, %al3708; AVX512F-NEXT:    jne LBB12_113709; AVX512F-NEXT:  LBB12_12: ## %else183710; AVX512F-NEXT:    testb $64, %al3711; AVX512F-NEXT:    jne LBB12_133712; AVX512F-NEXT:  LBB12_14: ## %else223713; AVX512F-NEXT:    testb %al, %al3714; AVX512F-NEXT:    js LBB12_153715; AVX512F-NEXT:  LBB12_16: ## %else263716; AVX512F-NEXT:    testl $256, %eax ## imm = 0x1003717; AVX512F-NEXT:    jne LBB12_173718; AVX512F-NEXT:  LBB12_18: ## %else303719; AVX512F-NEXT:    testl $512, %eax ## imm = 0x2003720; AVX512F-NEXT:    jne LBB12_193721; AVX512F-NEXT:  LBB12_20: ## %else343722; AVX512F-NEXT:    testl $1024, %eax ## imm = 0x4003723; AVX512F-NEXT:    jne LBB12_213724; AVX512F-NEXT:  LBB12_22: ## %else383725; AVX512F-NEXT:    testl $2048, %eax ## imm = 0x8003726; AVX512F-NEXT:    jne LBB12_233727; AVX512F-NEXT:  LBB12_24: ## %else423728; AVX512F-NEXT:    testl $4096, %eax ## imm = 0x10003729; AVX512F-NEXT:    jne LBB12_253730; AVX512F-NEXT:  LBB12_26: ## %else463731; AVX512F-NEXT:    testl $8192, %eax ## imm = 0x20003732; AVX512F-NEXT:    jne LBB12_273733; AVX512F-NEXT:  LBB12_28: ## %else503734; AVX512F-NEXT:    testl $16384, %eax ## imm = 0x40003735; AVX512F-NEXT:    jne LBB12_293736; AVX512F-NEXT:  LBB12_30: ## %else543737; AVX512F-NEXT:    testl $32768, %eax ## imm = 0x80003738; AVX512F-NEXT:    jne LBB12_313739; AVX512F-NEXT:  LBB12_32: ## %else583740; AVX512F-NEXT:    retq3741; AVX512F-NEXT:  LBB12_1: ## %cond.load3742; AVX512F-NEXT:    vpinsrb $0, (%rdi), %xmm0, %xmm03743; AVX512F-NEXT:    incq %rdi3744; AVX512F-NEXT:    testb $2, %al3745; AVX512F-NEXT:    je LBB12_43746; AVX512F-NEXT:  LBB12_3: ## %cond.load13747; AVX512F-NEXT:    vpinsrb $1, (%rdi), %xmm0, %xmm03748; AVX512F-NEXT:    incq %rdi3749; AVX512F-NEXT:    testb $4, %al3750; AVX512F-NEXT:    je LBB12_63751; AVX512F-NEXT:  LBB12_5: ## %cond.load53752; AVX512F-NEXT:    vpinsrb $2, (%rdi), %xmm0, %xmm03753; AVX512F-NEXT:    incq %rdi3754; AVX512F-NEXT:    testb $8, %al3755; AVX512F-NEXT:    je LBB12_83756; AVX512F-NEXT:  LBB12_7: ## %cond.load93757; AVX512F-NEXT:    vpinsrb $3, (%rdi), %xmm0, %xmm03758; AVX512F-NEXT:    incq %rdi3759; AVX512F-NEXT:    testb $16, %al3760; AVX512F-NEXT:    je LBB12_103761; AVX512F-NEXT:  LBB12_9: ## %cond.load133762; AVX512F-NEXT:    vpinsrb $4, (%rdi), %xmm0, %xmm03763; AVX512F-NEXT:    incq %rdi3764; AVX512F-NEXT:    testb $32, %al3765; AVX512F-NEXT:    je LBB12_123766; AVX512F-NEXT:  LBB12_11: ## %cond.load173767; AVX512F-NEXT:    vpinsrb $5, (%rdi), %xmm0, %xmm03768; AVX512F-NEXT:    incq %rdi3769; AVX512F-NEXT:    testb $64, %al3770; AVX512F-NEXT:    je LBB12_143771; AVX512F-NEXT:  LBB12_13: ## %cond.load213772; AVX512F-NEXT:    vpinsrb $6, (%rdi), %xmm0, %xmm03773; AVX512F-NEXT:    incq %rdi3774; AVX512F-NEXT:    testb %al, %al3775; AVX512F-NEXT:    jns LBB12_163776; AVX512F-NEXT:  LBB12_15: ## %cond.load253777; AVX512F-NEXT:    vpinsrb $7, (%rdi), %xmm0, %xmm03778; AVX512F-NEXT:    incq %rdi3779; AVX512F-NEXT:    testl $256, %eax ## imm = 0x1003780; AVX512F-NEXT:    je LBB12_183781; AVX512F-NEXT:  LBB12_17: ## %cond.load293782; AVX512F-NEXT:    vpinsrb $8, (%rdi), %xmm0, %xmm03783; AVX512F-NEXT:    incq %rdi3784; AVX512F-NEXT:    testl $512, %eax ## imm = 0x2003785; AVX512F-NEXT:    je LBB12_203786; AVX512F-NEXT:  LBB12_19: ## %cond.load333787; AVX512F-NEXT:    vpinsrb $9, (%rdi), %xmm0, %xmm03788; AVX512F-NEXT:    incq %rdi3789; AVX512F-NEXT:    testl $1024, %eax ## imm = 0x4003790; AVX512F-NEXT:    je LBB12_223791; AVX512F-NEXT:  LBB12_21: ## %cond.load373792; AVX512F-NEXT:    vpinsrb $10, (%rdi), %xmm0, %xmm03793; AVX512F-NEXT:    incq %rdi3794; AVX512F-NEXT:    testl $2048, %eax ## imm = 0x8003795; AVX512F-NEXT:    je LBB12_243796; AVX512F-NEXT:  LBB12_23: ## %cond.load413797; AVX512F-NEXT:    vpinsrb $11, (%rdi), %xmm0, %xmm03798; AVX512F-NEXT:    incq %rdi3799; AVX512F-NEXT:    testl $4096, %eax ## imm = 0x10003800; AVX512F-NEXT:    je LBB12_263801; AVX512F-NEXT:  LBB12_25: ## %cond.load453802; AVX512F-NEXT:    vpinsrb $12, (%rdi), %xmm0, %xmm03803; AVX512F-NEXT:    incq %rdi3804; AVX512F-NEXT:    testl $8192, %eax ## imm = 0x20003805; AVX512F-NEXT:    je LBB12_283806; AVX512F-NEXT:  LBB12_27: ## %cond.load493807; AVX512F-NEXT:    vpinsrb $13, (%rdi), %xmm0, %xmm03808; AVX512F-NEXT:    incq %rdi3809; AVX512F-NEXT:    testl $16384, %eax ## imm = 0x40003810; AVX512F-NEXT:    je LBB12_303811; AVX512F-NEXT:  LBB12_29: ## %cond.load533812; AVX512F-NEXT:    vpinsrb $14, (%rdi), %xmm0, %xmm03813; AVX512F-NEXT:    incq %rdi3814; AVX512F-NEXT:    testl $32768, %eax ## imm = 0x80003815; AVX512F-NEXT:    je LBB12_323816; AVX512F-NEXT:  LBB12_31: ## %cond.load573817; AVX512F-NEXT:    vpinsrb $15, (%rdi), %xmm0, %xmm03818; AVX512F-NEXT:    retq3819;3820; AVX512VLDQ-LABEL: expandload_v16i8_v16i8:3821; AVX512VLDQ:       ## %bb.0:3822; AVX512VLDQ-NEXT:    vpxor %xmm2, %xmm2, %xmm23823; AVX512VLDQ-NEXT:    vpcmpeqb %xmm2, %xmm1, %xmm13824; AVX512VLDQ-NEXT:    vpmovmskb %xmm1, %eax3825; AVX512VLDQ-NEXT:    testb $1, %al3826; AVX512VLDQ-NEXT:    jne LBB12_13827; AVX512VLDQ-NEXT:  ## %bb.2: ## %else3828; AVX512VLDQ-NEXT:    testb $2, %al3829; AVX512VLDQ-NEXT:    jne LBB12_33830; AVX512VLDQ-NEXT:  LBB12_4: ## %else23831; AVX512VLDQ-NEXT:    testb $4, %al3832; AVX512VLDQ-NEXT:    jne LBB12_53833; AVX512VLDQ-NEXT:  LBB12_6: ## %else63834; AVX512VLDQ-NEXT:    testb $8, %al3835; AVX512VLDQ-NEXT:    jne LBB12_73836; AVX512VLDQ-NEXT:  LBB12_8: ## %else103837; AVX512VLDQ-NEXT:    testb $16, %al3838; AVX512VLDQ-NEXT:    jne LBB12_93839; AVX512VLDQ-NEXT:  LBB12_10: ## %else143840; AVX512VLDQ-NEXT:    testb $32, %al3841; AVX512VLDQ-NEXT:    jne LBB12_113842; AVX512VLDQ-NEXT:  LBB12_12: ## %else183843; AVX512VLDQ-NEXT:    testb $64, %al3844; AVX512VLDQ-NEXT:    jne LBB12_133845; AVX512VLDQ-NEXT:  LBB12_14: ## %else223846; AVX512VLDQ-NEXT:    testb %al, %al3847; AVX512VLDQ-NEXT:    js LBB12_153848; AVX512VLDQ-NEXT:  LBB12_16: ## %else263849; AVX512VLDQ-NEXT:    testl $256, %eax ## imm = 0x1003850; AVX512VLDQ-NEXT:    jne LBB12_173851; AVX512VLDQ-NEXT:  LBB12_18: ## %else303852; AVX512VLDQ-NEXT:    testl $512, %eax ## imm = 0x2003853; AVX512VLDQ-NEXT:    jne LBB12_193854; AVX512VLDQ-NEXT:  LBB12_20: ## %else343855; AVX512VLDQ-NEXT:    testl $1024, %eax ## imm = 0x4003856; AVX512VLDQ-NEXT:    jne LBB12_213857; AVX512VLDQ-NEXT:  LBB12_22: ## %else383858; AVX512VLDQ-NEXT:    testl $2048, %eax ## imm = 0x8003859; AVX512VLDQ-NEXT:    jne LBB12_233860; AVX512VLDQ-NEXT:  LBB12_24: ## %else423861; AVX512VLDQ-NEXT:    testl $4096, %eax ## imm = 0x10003862; AVX512VLDQ-NEXT:    jne LBB12_253863; AVX512VLDQ-NEXT:  LBB12_26: ## %else463864; AVX512VLDQ-NEXT:    testl $8192, %eax ## imm = 0x20003865; AVX512VLDQ-NEXT:    jne LBB12_273866; AVX512VLDQ-NEXT:  LBB12_28: ## %else503867; AVX512VLDQ-NEXT:    testl $16384, %eax ## imm = 0x40003868; AVX512VLDQ-NEXT:    jne LBB12_293869; AVX512VLDQ-NEXT:  LBB12_30: ## %else543870; AVX512VLDQ-NEXT:    testl $32768, %eax ## imm = 0x80003871; AVX512VLDQ-NEXT:    jne LBB12_313872; AVX512VLDQ-NEXT:  LBB12_32: ## %else583873; AVX512VLDQ-NEXT:    retq3874; AVX512VLDQ-NEXT:  LBB12_1: ## %cond.load3875; AVX512VLDQ-NEXT:    vpinsrb $0, (%rdi), %xmm0, %xmm03876; AVX512VLDQ-NEXT:    incq %rdi3877; AVX512VLDQ-NEXT:    testb $2, %al3878; AVX512VLDQ-NEXT:    je LBB12_43879; AVX512VLDQ-NEXT:  LBB12_3: ## %cond.load13880; AVX512VLDQ-NEXT:    vpinsrb $1, (%rdi), %xmm0, %xmm03881; AVX512VLDQ-NEXT:    incq %rdi3882; AVX512VLDQ-NEXT:    testb $4, %al3883; AVX512VLDQ-NEXT:    je LBB12_63884; AVX512VLDQ-NEXT:  LBB12_5: ## %cond.load53885; AVX512VLDQ-NEXT:    vpinsrb $2, (%rdi), %xmm0, %xmm03886; AVX512VLDQ-NEXT:    incq %rdi3887; AVX512VLDQ-NEXT:    testb $8, %al3888; AVX512VLDQ-NEXT:    je LBB12_83889; AVX512VLDQ-NEXT:  LBB12_7: ## %cond.load93890; AVX512VLDQ-NEXT:    vpinsrb $3, (%rdi), %xmm0, %xmm03891; AVX512VLDQ-NEXT:    incq %rdi3892; AVX512VLDQ-NEXT:    testb $16, %al3893; AVX512VLDQ-NEXT:    je LBB12_103894; AVX512VLDQ-NEXT:  LBB12_9: ## %cond.load133895; AVX512VLDQ-NEXT:    vpinsrb $4, (%rdi), %xmm0, %xmm03896; AVX512VLDQ-NEXT:    incq %rdi3897; AVX512VLDQ-NEXT:    testb $32, %al3898; AVX512VLDQ-NEXT:    je LBB12_123899; AVX512VLDQ-NEXT:  LBB12_11: ## %cond.load173900; AVX512VLDQ-NEXT:    vpinsrb $5, (%rdi), %xmm0, %xmm03901; AVX512VLDQ-NEXT:    incq %rdi3902; AVX512VLDQ-NEXT:    testb $64, %al3903; AVX512VLDQ-NEXT:    je LBB12_143904; AVX512VLDQ-NEXT:  LBB12_13: ## %cond.load213905; AVX512VLDQ-NEXT:    vpinsrb $6, (%rdi), %xmm0, %xmm03906; AVX512VLDQ-NEXT:    incq %rdi3907; AVX512VLDQ-NEXT:    testb %al, %al3908; AVX512VLDQ-NEXT:    jns LBB12_163909; AVX512VLDQ-NEXT:  LBB12_15: ## %cond.load253910; AVX512VLDQ-NEXT:    vpinsrb $7, (%rdi), %xmm0, %xmm03911; AVX512VLDQ-NEXT:    incq %rdi3912; AVX512VLDQ-NEXT:    testl $256, %eax ## imm = 0x1003913; AVX512VLDQ-NEXT:    je LBB12_183914; AVX512VLDQ-NEXT:  LBB12_17: ## %cond.load293915; AVX512VLDQ-NEXT:    vpinsrb $8, (%rdi), %xmm0, %xmm03916; AVX512VLDQ-NEXT:    incq %rdi3917; AVX512VLDQ-NEXT:    testl $512, %eax ## imm = 0x2003918; AVX512VLDQ-NEXT:    je LBB12_203919; AVX512VLDQ-NEXT:  LBB12_19: ## %cond.load333920; AVX512VLDQ-NEXT:    vpinsrb $9, (%rdi), %xmm0, %xmm03921; AVX512VLDQ-NEXT:    incq %rdi3922; AVX512VLDQ-NEXT:    testl $1024, %eax ## imm = 0x4003923; AVX512VLDQ-NEXT:    je LBB12_223924; AVX512VLDQ-NEXT:  LBB12_21: ## %cond.load373925; AVX512VLDQ-NEXT:    vpinsrb $10, (%rdi), %xmm0, %xmm03926; AVX512VLDQ-NEXT:    incq %rdi3927; AVX512VLDQ-NEXT:    testl $2048, %eax ## imm = 0x8003928; AVX512VLDQ-NEXT:    je LBB12_243929; AVX512VLDQ-NEXT:  LBB12_23: ## %cond.load413930; AVX512VLDQ-NEXT:    vpinsrb $11, (%rdi), %xmm0, %xmm03931; AVX512VLDQ-NEXT:    incq %rdi3932; AVX512VLDQ-NEXT:    testl $4096, %eax ## imm = 0x10003933; AVX512VLDQ-NEXT:    je LBB12_263934; AVX512VLDQ-NEXT:  LBB12_25: ## %cond.load453935; AVX512VLDQ-NEXT:    vpinsrb $12, (%rdi), %xmm0, %xmm03936; AVX512VLDQ-NEXT:    incq %rdi3937; AVX512VLDQ-NEXT:    testl $8192, %eax ## imm = 0x20003938; AVX512VLDQ-NEXT:    je LBB12_283939; AVX512VLDQ-NEXT:  LBB12_27: ## %cond.load493940; AVX512VLDQ-NEXT:    vpinsrb $13, (%rdi), %xmm0, %xmm03941; AVX512VLDQ-NEXT:    incq %rdi3942; AVX512VLDQ-NEXT:    testl $16384, %eax ## imm = 0x40003943; AVX512VLDQ-NEXT:    je LBB12_303944; AVX512VLDQ-NEXT:  LBB12_29: ## %cond.load533945; AVX512VLDQ-NEXT:    vpinsrb $14, (%rdi), %xmm0, %xmm03946; AVX512VLDQ-NEXT:    incq %rdi3947; AVX512VLDQ-NEXT:    testl $32768, %eax ## imm = 0x80003948; AVX512VLDQ-NEXT:    je LBB12_323949; AVX512VLDQ-NEXT:  LBB12_31: ## %cond.load573950; AVX512VLDQ-NEXT:    vpinsrb $15, (%rdi), %xmm0, %xmm03951; AVX512VLDQ-NEXT:    retq3952;3953; AVX512VLBW-LABEL: expandload_v16i8_v16i8:3954; AVX512VLBW:       ## %bb.0:3955; AVX512VLBW-NEXT:    vptestnmb %xmm1, %xmm1, %k03956; AVX512VLBW-NEXT:    kmovd %k0, %eax3957; AVX512VLBW-NEXT:    testb $1, %al3958; AVX512VLBW-NEXT:    jne LBB12_13959; AVX512VLBW-NEXT:  ## %bb.2: ## %else3960; AVX512VLBW-NEXT:    testb $2, %al3961; AVX512VLBW-NEXT:    jne LBB12_33962; AVX512VLBW-NEXT:  LBB12_4: ## %else23963; AVX512VLBW-NEXT:    testb $4, %al3964; AVX512VLBW-NEXT:    jne LBB12_53965; AVX512VLBW-NEXT:  LBB12_6: ## %else63966; AVX512VLBW-NEXT:    testb $8, %al3967; AVX512VLBW-NEXT:    jne LBB12_73968; AVX512VLBW-NEXT:  LBB12_8: ## %else103969; AVX512VLBW-NEXT:    testb $16, %al3970; AVX512VLBW-NEXT:    jne LBB12_93971; AVX512VLBW-NEXT:  LBB12_10: ## %else143972; AVX512VLBW-NEXT:    testb $32, %al3973; AVX512VLBW-NEXT:    jne LBB12_113974; AVX512VLBW-NEXT:  LBB12_12: ## %else183975; AVX512VLBW-NEXT:    testb $64, %al3976; AVX512VLBW-NEXT:    jne LBB12_133977; AVX512VLBW-NEXT:  LBB12_14: ## %else223978; AVX512VLBW-NEXT:    testb %al, %al3979; AVX512VLBW-NEXT:    js LBB12_153980; AVX512VLBW-NEXT:  LBB12_16: ## %else263981; AVX512VLBW-NEXT:    testl $256, %eax ## imm = 0x1003982; AVX512VLBW-NEXT:    jne LBB12_173983; AVX512VLBW-NEXT:  LBB12_18: ## %else303984; AVX512VLBW-NEXT:    testl $512, %eax ## imm = 0x2003985; AVX512VLBW-NEXT:    jne LBB12_193986; AVX512VLBW-NEXT:  LBB12_20: ## %else343987; AVX512VLBW-NEXT:    testl $1024, %eax ## imm = 0x4003988; AVX512VLBW-NEXT:    jne LBB12_213989; AVX512VLBW-NEXT:  LBB12_22: ## %else383990; AVX512VLBW-NEXT:    testl $2048, %eax ## imm = 0x8003991; AVX512VLBW-NEXT:    jne LBB12_233992; AVX512VLBW-NEXT:  LBB12_24: ## %else423993; AVX512VLBW-NEXT:    testl $4096, %eax ## imm = 0x10003994; AVX512VLBW-NEXT:    jne LBB12_253995; AVX512VLBW-NEXT:  LBB12_26: ## %else463996; AVX512VLBW-NEXT:    testl $8192, %eax ## imm = 0x20003997; AVX512VLBW-NEXT:    jne LBB12_273998; AVX512VLBW-NEXT:  LBB12_28: ## %else503999; AVX512VLBW-NEXT:    testl $16384, %eax ## imm = 0x40004000; AVX512VLBW-NEXT:    jne LBB12_294001; AVX512VLBW-NEXT:  LBB12_30: ## %else544002; AVX512VLBW-NEXT:    testl $32768, %eax ## imm = 0x80004003; AVX512VLBW-NEXT:    jne LBB12_314004; AVX512VLBW-NEXT:  LBB12_32: ## %else584005; AVX512VLBW-NEXT:    retq4006; AVX512VLBW-NEXT:  LBB12_1: ## %cond.load4007; AVX512VLBW-NEXT:    vpinsrb $0, (%rdi), %xmm0, %xmm04008; AVX512VLBW-NEXT:    incq %rdi4009; AVX512VLBW-NEXT:    testb $2, %al4010; AVX512VLBW-NEXT:    je LBB12_44011; AVX512VLBW-NEXT:  LBB12_3: ## %cond.load14012; AVX512VLBW-NEXT:    vpinsrb $1, (%rdi), %xmm0, %xmm04013; AVX512VLBW-NEXT:    incq %rdi4014; AVX512VLBW-NEXT:    testb $4, %al4015; AVX512VLBW-NEXT:    je LBB12_64016; AVX512VLBW-NEXT:  LBB12_5: ## %cond.load54017; AVX512VLBW-NEXT:    vpinsrb $2, (%rdi), %xmm0, %xmm04018; AVX512VLBW-NEXT:    incq %rdi4019; AVX512VLBW-NEXT:    testb $8, %al4020; AVX512VLBW-NEXT:    je LBB12_84021; AVX512VLBW-NEXT:  LBB12_7: ## %cond.load94022; AVX512VLBW-NEXT:    vpinsrb $3, (%rdi), %xmm0, %xmm04023; AVX512VLBW-NEXT:    incq %rdi4024; AVX512VLBW-NEXT:    testb $16, %al4025; AVX512VLBW-NEXT:    je LBB12_104026; AVX512VLBW-NEXT:  LBB12_9: ## %cond.load134027; AVX512VLBW-NEXT:    vpinsrb $4, (%rdi), %xmm0, %xmm04028; AVX512VLBW-NEXT:    incq %rdi4029; AVX512VLBW-NEXT:    testb $32, %al4030; AVX512VLBW-NEXT:    je LBB12_124031; AVX512VLBW-NEXT:  LBB12_11: ## %cond.load174032; AVX512VLBW-NEXT:    vpinsrb $5, (%rdi), %xmm0, %xmm04033; AVX512VLBW-NEXT:    incq %rdi4034; AVX512VLBW-NEXT:    testb $64, %al4035; AVX512VLBW-NEXT:    je LBB12_144036; AVX512VLBW-NEXT:  LBB12_13: ## %cond.load214037; AVX512VLBW-NEXT:    vpinsrb $6, (%rdi), %xmm0, %xmm04038; AVX512VLBW-NEXT:    incq %rdi4039; AVX512VLBW-NEXT:    testb %al, %al4040; AVX512VLBW-NEXT:    jns LBB12_164041; AVX512VLBW-NEXT:  LBB12_15: ## %cond.load254042; AVX512VLBW-NEXT:    vpinsrb $7, (%rdi), %xmm0, %xmm04043; AVX512VLBW-NEXT:    incq %rdi4044; AVX512VLBW-NEXT:    testl $256, %eax ## imm = 0x1004045; AVX512VLBW-NEXT:    je LBB12_184046; AVX512VLBW-NEXT:  LBB12_17: ## %cond.load294047; AVX512VLBW-NEXT:    vpinsrb $8, (%rdi), %xmm0, %xmm04048; AVX512VLBW-NEXT:    incq %rdi4049; AVX512VLBW-NEXT:    testl $512, %eax ## imm = 0x2004050; AVX512VLBW-NEXT:    je LBB12_204051; AVX512VLBW-NEXT:  LBB12_19: ## %cond.load334052; AVX512VLBW-NEXT:    vpinsrb $9, (%rdi), %xmm0, %xmm04053; AVX512VLBW-NEXT:    incq %rdi4054; AVX512VLBW-NEXT:    testl $1024, %eax ## imm = 0x4004055; AVX512VLBW-NEXT:    je LBB12_224056; AVX512VLBW-NEXT:  LBB12_21: ## %cond.load374057; AVX512VLBW-NEXT:    vpinsrb $10, (%rdi), %xmm0, %xmm04058; AVX512VLBW-NEXT:    incq %rdi4059; AVX512VLBW-NEXT:    testl $2048, %eax ## imm = 0x8004060; AVX512VLBW-NEXT:    je LBB12_244061; AVX512VLBW-NEXT:  LBB12_23: ## %cond.load414062; AVX512VLBW-NEXT:    vpinsrb $11, (%rdi), %xmm0, %xmm04063; AVX512VLBW-NEXT:    incq %rdi4064; AVX512VLBW-NEXT:    testl $4096, %eax ## imm = 0x10004065; AVX512VLBW-NEXT:    je LBB12_264066; AVX512VLBW-NEXT:  LBB12_25: ## %cond.load454067; AVX512VLBW-NEXT:    vpinsrb $12, (%rdi), %xmm0, %xmm04068; AVX512VLBW-NEXT:    incq %rdi4069; AVX512VLBW-NEXT:    testl $8192, %eax ## imm = 0x20004070; AVX512VLBW-NEXT:    je LBB12_284071; AVX512VLBW-NEXT:  LBB12_27: ## %cond.load494072; AVX512VLBW-NEXT:    vpinsrb $13, (%rdi), %xmm0, %xmm04073; AVX512VLBW-NEXT:    incq %rdi4074; AVX512VLBW-NEXT:    testl $16384, %eax ## imm = 0x40004075; AVX512VLBW-NEXT:    je LBB12_304076; AVX512VLBW-NEXT:  LBB12_29: ## %cond.load534077; AVX512VLBW-NEXT:    vpinsrb $14, (%rdi), %xmm0, %xmm04078; AVX512VLBW-NEXT:    incq %rdi4079; AVX512VLBW-NEXT:    testl $32768, %eax ## imm = 0x80004080; AVX512VLBW-NEXT:    je LBB12_324081; AVX512VLBW-NEXT:  LBB12_31: ## %cond.load574082; AVX512VLBW-NEXT:    vpinsrb $15, (%rdi), %xmm0, %xmm04083; AVX512VLBW-NEXT:    retq4084  %mask = icmp eq <16 x i8> %trigger, zeroinitializer4085  %res = call <16 x i8> @llvm.masked.expandload.v16i8(ptr %base, <16 x i1> %mask, <16 x i8> %src0)4086  ret <16 x i8>%res4087}4088 4089declare <16 x double> @llvm.masked.expandload.v16f64(ptr, <16 x i1>, <16 x double>)4090declare <8 x double> @llvm.masked.expandload.v8f64(ptr, <8 x i1>, <8 x double>)4091declare <4 x double> @llvm.masked.expandload.v4f64(ptr, <4 x i1>, <4 x double>)4092declare <2 x double> @llvm.masked.expandload.v2f64(ptr, <2 x i1>, <2 x double>)4093declare <1 x double> @llvm.masked.expandload.v1f64(ptr, <1 x i1>, <1 x double>)4094 4095declare <32 x float> @llvm.masked.expandload.v32f32(ptr, <32 x i1>, <32 x float>)4096declare <16 x float> @llvm.masked.expandload.v16f32(ptr, <16 x i1>, <16 x float>)4097declare <8 x float> @llvm.masked.expandload.v8f32(ptr, <8 x i1>, <8 x float>)4098declare <4 x float> @llvm.masked.expandload.v4f32(ptr, <4 x i1>, <4 x float>)4099declare <2 x float> @llvm.masked.expandload.v2f32(ptr, <2 x i1>, <2 x float>)4100 4101declare <8 x i64> @llvm.masked.expandload.v8i64(ptr, <8 x i1>, <8 x i64>)4102declare <4 x i64> @llvm.masked.expandload.v4i64(ptr, <4 x i1>, <4 x i64>)4103declare <2 x i64> @llvm.masked.expandload.v2i64(ptr, <2 x i1>, <2 x i64>)4104declare <1 x i64> @llvm.masked.expandload.v1i64(ptr, <1 x i1>, <1 x i64>)4105 4106declare <16 x i32> @llvm.masked.expandload.v16i32(ptr, <16 x i1>, <16 x i32>)4107declare <8 x i32> @llvm.masked.expandload.v8i32(ptr, <8 x i1>, <8 x i32>)4108declare <4 x i32> @llvm.masked.expandload.v4i32(ptr, <4 x i1>, <4 x i32>)4109declare <2 x i32> @llvm.masked.expandload.v2i32(ptr, <2 x i1>, <2 x i32>)4110 4111declare <32 x i16> @llvm.masked.expandload.v32i16(ptr, <32 x i1>, <32 x i16>)4112declare <16 x i16> @llvm.masked.expandload.v16i16(ptr, <16 x i1>, <16 x i16>)4113declare <8 x i16> @llvm.masked.expandload.v8i16(ptr, <8 x i1>, <8 x i16>)4114declare <4 x i16> @llvm.masked.expandload.v4i16(ptr, <4 x i1>, <4 x i16>)4115 4116declare <64 x i8> @llvm.masked.expandload.v64i8(ptr, <64 x i1>, <64 x i8>)4117declare <32 x i8> @llvm.masked.expandload.v32i8(ptr, <32 x i1>, <32 x i8>)4118declare <16 x i8> @llvm.masked.expandload.v16i8(ptr, <16 x i1>, <16 x i8>)4119declare <8 x i8> @llvm.masked.expandload.v8i8(ptr, <8 x i1>, <8 x i8>)4120