brintos

brintos / llvm-project-archived public Read only

0
0
Text · 409.4 KiB · e826306 Raw
7350 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -O3 -disable-peephole -mtriple=x86_64-unknown-unknown -mattr=+avx512f,+avx512bw,+avx512dq,+avx512vbmi,+avx512cd,+avx512vpopcntdq,+avx512vnni < %s | FileCheck %s3 4target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"5target triple = "x86_64-unknown-unknown"6 7; Stack reload folding tests.8;9; By including a nop call with sideeffects we can force a partial register spill of the10; relevant registers and check that the reload is correctly folded into the instruction.11 12define <16 x i32> @stack_fold_valignd(<16 x i32> %a, <16 x i32> %b) {13; CHECK-LABEL: stack_fold_valignd:14; CHECK:       # %bb.0:15; CHECK-NEXT:    pushq %rax16; CHECK-NEXT:    .cfi_def_cfa_offset 1617; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill18; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill19; CHECK-NEXT:    #APP20; CHECK-NEXT:    nop21; CHECK-NEXT:    #NO_APP22; CHECK-NEXT:    vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload23; CHECK-NEXT:    valignd $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload24; CHECK-NEXT:    # zmm0 = mem[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],zmm0[0]25; CHECK-NEXT:    popq %rax26; CHECK-NEXT:    .cfi_def_cfa_offset 827; CHECK-NEXT:    retq28  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()29  %2 = shufflevector <16 x i32> %a, <16 x i32> %b, <16 x i32><i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16>30  ret <16 x i32> %231}32 33define <16 x i32> @stack_fold_valignd_mask(<16 x i32> %a, <16 x i32> %b, ptr %passthru, i16 %mask) {34; CHECK-LABEL: stack_fold_valignd_mask:35; CHECK:       # %bb.0:36; CHECK-NEXT:    pushq %rax37; CHECK-NEXT:    .cfi_def_cfa_offset 1638; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill39; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill40; CHECK-NEXT:    #APP41; CHECK-NEXT:    nop42; CHECK-NEXT:    #NO_APP43; CHECK-NEXT:    kmovd %esi, %k144; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm145; CHECK-NEXT:    vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload46; CHECK-NEXT:    valignd $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm1 {%k1} # 64-byte Folded Reload47; CHECK-NEXT:    # zmm1 {%k1} = mem[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],zmm0[0]48; CHECK-NEXT:    vmovdqa64 %zmm1, %zmm049; CHECK-NEXT:    popq %rax50; CHECK-NEXT:    .cfi_def_cfa_offset 851; CHECK-NEXT:    retq52  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()53  %2 = shufflevector <16 x i32> %a, <16 x i32> %b, <16 x i32> <i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16>54  %3 = bitcast i16 %mask to <16 x i1>55  %4 = load <16 x i32>, ptr %passthru56  %5 = select <16 x i1> %3, <16 x i32> %2, <16 x i32> %457  ret <16 x i32> %558}59 60define <16 x i32> @stack_fold_valignd_maskz(<16 x i32> %a, <16 x i32> %b, i16 %mask) {61; CHECK-LABEL: stack_fold_valignd_maskz:62; CHECK:       # %bb.0:63; CHECK-NEXT:    pushq %rax64; CHECK-NEXT:    .cfi_def_cfa_offset 1665; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill66; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill67; CHECK-NEXT:    #APP68; CHECK-NEXT:    nop69; CHECK-NEXT:    #NO_APP70; CHECK-NEXT:    kmovd %edi, %k171; CHECK-NEXT:    vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload72; CHECK-NEXT:    valignd $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload73; CHECK-NEXT:    # zmm0 {%k1} {z} = mem[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],zmm0[0]74; CHECK-NEXT:    popq %rax75; CHECK-NEXT:    .cfi_def_cfa_offset 876; CHECK-NEXT:    retq77  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()78  %2 = shufflevector <16 x i32> %a, <16 x i32> %b, <16 x i32> <i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16>79  %3 = bitcast i16 %mask to <16 x i1>80  %4 = select <16 x i1> %3, <16 x i32> %2, <16 x i32> zeroinitializer81  ret <16 x i32> %482}83 84define <8 x i64> @stack_fold_valignq(<8 x i64> %a, <8 x i64> %b) {85; CHECK-LABEL: stack_fold_valignq:86; CHECK:       # %bb.0:87; CHECK-NEXT:    pushq %rax88; CHECK-NEXT:    .cfi_def_cfa_offset 1689; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill90; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill91; CHECK-NEXT:    #APP92; CHECK-NEXT:    nop93; CHECK-NEXT:    #NO_APP94; CHECK-NEXT:    vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload95; CHECK-NEXT:    valignq $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload96; CHECK-NEXT:    # zmm0 = mem[1,2,3,4,5,6,7],zmm0[0]97; CHECK-NEXT:    popq %rax98; CHECK-NEXT:    .cfi_def_cfa_offset 899; CHECK-NEXT:    retq100  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()101  %2 = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8>102  ret <8 x i64> %2103}104 105define <8 x i64> @stack_fold_valignq_mask(<8 x i64> %a, <8 x i64> %b, ptr %passthru, i8 %mask) {106; CHECK-LABEL: stack_fold_valignq_mask:107; CHECK:       # %bb.0:108; CHECK-NEXT:    pushq %rax109; CHECK-NEXT:    .cfi_def_cfa_offset 16110; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill111; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill112; CHECK-NEXT:    #APP113; CHECK-NEXT:    nop114; CHECK-NEXT:    #NO_APP115; CHECK-NEXT:    kmovd %esi, %k1116; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm1117; CHECK-NEXT:    vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload118; CHECK-NEXT:    valignq $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm1 {%k1} # 64-byte Folded Reload119; CHECK-NEXT:    # zmm1 {%k1} = mem[1,2,3,4,5,6,7],zmm0[0]120; CHECK-NEXT:    vmovdqa64 %zmm1, %zmm0121; CHECK-NEXT:    popq %rax122; CHECK-NEXT:    .cfi_def_cfa_offset 8123; CHECK-NEXT:    retq124  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()125  %2 = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8>126  %3 = bitcast i8 %mask to <8 x i1>127  %4 = load <8 x i64>, ptr %passthru128  %5 = select <8 x i1> %3, <8 x i64> %2, <8 x i64> %4129  ret <8 x i64> %5130}131 132define <8 x i64> @stack_fold_valignq_maskz(<8 x i64> %a, <8 x i64> %b, i8 %mask) {133; CHECK-LABEL: stack_fold_valignq_maskz:134; CHECK:       # %bb.0:135; CHECK-NEXT:    pushq %rax136; CHECK-NEXT:    .cfi_def_cfa_offset 16137; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill138; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill139; CHECK-NEXT:    #APP140; CHECK-NEXT:    nop141; CHECK-NEXT:    #NO_APP142; CHECK-NEXT:    kmovd %edi, %k1143; CHECK-NEXT:    vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload144; CHECK-NEXT:    valignq $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload145; CHECK-NEXT:    # zmm0 {%k1} {z} = mem[1,2,3,4,5,6,7],zmm0[0]146; CHECK-NEXT:    popq %rax147; CHECK-NEXT:    .cfi_def_cfa_offset 8148; CHECK-NEXT:    retq149  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()150  %2 = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8>151  %3 = bitcast i8 %mask to <8 x i1>152  %4 = select <8 x i1> %3, <8 x i64> %2, <8 x i64> zeroinitializer153  ret <8 x i64> %4154}155 156define <64 x i8> @stack_fold_pavgb(<64 x i8> %a0, <64 x i8> %a1) {157; CHECK-LABEL: stack_fold_pavgb:158; CHECK:       # %bb.0:159; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill160; CHECK-NEXT:    #APP161; CHECK-NEXT:    nop162; CHECK-NEXT:    #NO_APP163; CHECK-NEXT:    vpavgb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload164; CHECK-NEXT:    retq165  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()166  %2 = call <64 x i8> @llvm.x86.avx512.pavg.b.512(<64 x i8> %a0, <64 x i8> %a1)167  ret <64 x i8> %2168}169declare <64 x i8> @llvm.x86.avx512.pavg.b.512(<64 x i8>, <64 x i8>)170 171define <64 x i8> @stack_fold_pavgb_commuted(<64 x i8> %a0, <64 x i8> %a1) {172; CHECK-LABEL: stack_fold_pavgb_commuted:173; CHECK:       # %bb.0:174; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill175; CHECK-NEXT:    #APP176; CHECK-NEXT:    nop177; CHECK-NEXT:    #NO_APP178; CHECK-NEXT:    vpavgb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload179; CHECK-NEXT:    retq180  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()181  %2 = call <64 x i8> @llvm.x86.avx512.pavg.b.512(<64 x i8> %a1, <64 x i8> %a0)182  ret <64 x i8> %2183}184 185define <64 x i8> @stack_fold_pavgb_mask(<64 x i8> %a0, <64 x i8> %a1, ptr %a2, i64 %mask) {186; CHECK-LABEL: stack_fold_pavgb_mask:187; CHECK:       # %bb.0:188; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill189; CHECK-NEXT:    vmovdqa64 %zmm0, %zmm1190; CHECK-NEXT:    #APP191; CHECK-NEXT:    nop192; CHECK-NEXT:    #NO_APP193; CHECK-NEXT:    kmovq %rsi, %k1194; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm0195; CHECK-NEXT:    vpavgb {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload196; CHECK-NEXT:    retq197  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()198  %2 = call <64 x i8> @llvm.x86.avx512.pavg.b.512(<64 x i8> %a0, <64 x i8> %a1)199  %3 = bitcast i64 %mask to <64 x i1>200  ; load needed to keep the operation from being scheduled about the asm block201  %4 = load <64 x i8>, ptr %a2202  %5 = select <64 x i1> %3, <64 x i8> %2, <64 x i8> %4203  ret <64 x i8> %5204}205 206define <64 x i8> @stack_fold_pavgb_mask_commuted(<64 x i8> %a0, <64 x i8> %a1, ptr %a2, i64 %mask) {207; CHECK-LABEL: stack_fold_pavgb_mask_commuted:208; CHECK:       # %bb.0:209; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill210; CHECK-NEXT:    vmovdqa64 %zmm0, %zmm1211; CHECK-NEXT:    #APP212; CHECK-NEXT:    nop213; CHECK-NEXT:    #NO_APP214; CHECK-NEXT:    kmovq %rsi, %k1215; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm0216; CHECK-NEXT:    vpavgb {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload217; CHECK-NEXT:    retq218  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()219  %2 = call <64 x i8> @llvm.x86.avx512.pavg.b.512(<64 x i8> %a1, <64 x i8> %a0)220  %3 = bitcast i64 %mask to <64 x i1>221  ; load needed to keep the operation from being scheduled about the asm block222  %4 = load <64 x i8>, ptr %a2223  %5 = select <64 x i1> %3, <64 x i8> %2, <64 x i8> %4224  ret <64 x i8> %5225}226 227define <64 x i8> @stack_fold_pavgb_maskz(<64 x i8> %a0, <64 x i8> %a1, i64 %mask) {228; CHECK-LABEL: stack_fold_pavgb_maskz:229; CHECK:       # %bb.0:230; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill231; CHECK-NEXT:    #APP232; CHECK-NEXT:    nop233; CHECK-NEXT:    #NO_APP234; CHECK-NEXT:    kmovq %rdi, %k1235; CHECK-NEXT:    vpavgb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload236; CHECK-NEXT:    retq237  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()238  %2 = call <64 x i8> @llvm.x86.avx512.pavg.b.512(<64 x i8> %a0, <64 x i8> %a1)239  %3 = bitcast i64 %mask to <64 x i1>240  %4 = select <64 x i1> %3, <64 x i8> %2, <64 x i8> zeroinitializer241  ret <64 x i8> %4242}243 244define <64 x i8> @stack_fold_pavgb_maskz_commuted(<64 x i8> %a0, <64 x i8> %a1, i64 %mask) {245; CHECK-LABEL: stack_fold_pavgb_maskz_commuted:246; CHECK:       # %bb.0:247; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill248; CHECK-NEXT:    #APP249; CHECK-NEXT:    nop250; CHECK-NEXT:    #NO_APP251; CHECK-NEXT:    kmovq %rdi, %k1252; CHECK-NEXT:    vpavgb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload253; CHECK-NEXT:    retq254  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()255  %2 = call <64 x i8> @llvm.x86.avx512.pavg.b.512(<64 x i8> %a1, <64 x i8> %a0)256  %3 = bitcast i64 %mask to <64 x i1>257  %4 = select <64 x i1> %3, <64 x i8> %2, <64 x i8> zeroinitializer258  ret <64 x i8> %4259}260 261define <32 x i16> @stack_fold_pavgw(<32 x i16> %a0, <32 x i16> %a1) {262; CHECK-LABEL: stack_fold_pavgw:263; CHECK:       # %bb.0:264; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill265; CHECK-NEXT:    #APP266; CHECK-NEXT:    nop267; CHECK-NEXT:    #NO_APP268; CHECK-NEXT:    vpavgw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload269; CHECK-NEXT:    retq270  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()271  %2 = call <32 x i16> @llvm.x86.avx512.pavg.w.512(<32 x i16> %a0, <32 x i16> %a1)272  ret <32 x i16> %2273}274declare <32 x i16> @llvm.x86.avx512.pavg.w.512(<32 x i16>, <32 x i16>)275 276define <32 x i16> @stack_fold_pavgw_commuted(<32 x i16> %a0, <32 x i16> %a1) {277; CHECK-LABEL: stack_fold_pavgw_commuted:278; CHECK:       # %bb.0:279; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill280; CHECK-NEXT:    #APP281; CHECK-NEXT:    nop282; CHECK-NEXT:    #NO_APP283; CHECK-NEXT:    vpavgw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload284; CHECK-NEXT:    retq285  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()286  %2 = call <32 x i16> @llvm.x86.avx512.pavg.w.512(<32 x i16> %a1, <32 x i16> %a0)287  ret <32 x i16> %2288}289 290define <32 x i16> @stack_fold_pavgw_mask(<32 x i16> %a0, <32 x i16> %a1, ptr %a2, i32 %mask) {291; CHECK-LABEL: stack_fold_pavgw_mask:292; CHECK:       # %bb.0:293; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill294; CHECK-NEXT:    vmovdqa64 %zmm0, %zmm1295; CHECK-NEXT:    #APP296; CHECK-NEXT:    nop297; CHECK-NEXT:    #NO_APP298; CHECK-NEXT:    kmovd %esi, %k1299; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm0300; CHECK-NEXT:    vpavgw {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload301; CHECK-NEXT:    retq302  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()303  %2 = call <32 x i16> @llvm.x86.avx512.pavg.w.512(<32 x i16> %a0, <32 x i16> %a1)304  %3 = bitcast i32 %mask to <32 x i1>305  ; load needed to keep the operation from being scheduled about the asm block306  %4 = load <32 x i16>, ptr %a2307  %5 = select <32 x i1> %3, <32 x i16> %2, <32 x i16> %4308  ret <32 x i16> %5309}310 311define <32 x i16> @stack_fold_pavgw_mask_commuted(<32 x i16> %a0, <32 x i16> %a1, ptr %a2, i32 %mask) {312; CHECK-LABEL: stack_fold_pavgw_mask_commuted:313; CHECK:       # %bb.0:314; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill315; CHECK-NEXT:    vmovdqa64 %zmm0, %zmm1316; CHECK-NEXT:    #APP317; CHECK-NEXT:    nop318; CHECK-NEXT:    #NO_APP319; CHECK-NEXT:    kmovd %esi, %k1320; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm0321; CHECK-NEXT:    vpavgw {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload322; CHECK-NEXT:    retq323  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()324  %2 = call <32 x i16> @llvm.x86.avx512.pavg.w.512(<32 x i16> %a1, <32 x i16> %a0)325  %3 = bitcast i32 %mask to <32 x i1>326  ; load needed to keep the operation from being scheduled about the asm block327  %4 = load <32 x i16>, ptr %a2328  %5 = select <32 x i1> %3, <32 x i16> %2, <32 x i16> %4329  ret <32 x i16> %5330}331 332define <32 x i16> @stack_fold_pavgw_maskz(<32 x i16> %a0, <32 x i16> %a1, i32 %mask) {333; CHECK-LABEL: stack_fold_pavgw_maskz:334; CHECK:       # %bb.0:335; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill336; CHECK-NEXT:    #APP337; CHECK-NEXT:    nop338; CHECK-NEXT:    #NO_APP339; CHECK-NEXT:    kmovd %edi, %k1340; CHECK-NEXT:    vpavgw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload341; CHECK-NEXT:    retq342  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()343  %2 = call <32 x i16> @llvm.x86.avx512.pavg.w.512(<32 x i16> %a0, <32 x i16> %a1)344  %3 = bitcast i32 %mask to <32 x i1>345  %4 = select <32 x i1> %3, <32 x i16> %2, <32 x i16> zeroinitializer346  ret <32 x i16> %4347}348 349define <32 x i16> @stack_fold_pavgw_maskz_commuted(<32 x i16> %a0, <32 x i16> %a1, i32 %mask) {350; CHECK-LABEL: stack_fold_pavgw_maskz_commuted:351; CHECK:       # %bb.0:352; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill353; CHECK-NEXT:    #APP354; CHECK-NEXT:    nop355; CHECK-NEXT:    #NO_APP356; CHECK-NEXT:    kmovd %edi, %k1357; CHECK-NEXT:    vpavgw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload358; CHECK-NEXT:    retq359  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()360  %2 = call <32 x i16> @llvm.x86.avx512.pavg.w.512(<32 x i16> %a1, <32 x i16> %a0)361  %3 = bitcast i32 %mask to <32 x i1>362  %4 = select <32 x i1> %3, <32 x i16> %2, <32 x i16> zeroinitializer363  ret <32 x i16> %4364}365 366define <4 x i32> @stack_fold_extracti32x4(<16 x i16> %a0, <16 x i32> %a1) {367; CHECK-LABEL: stack_fold_extracti32x4:368; CHECK:       # %bb.0:369; CHECK-NEXT:    vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero370; CHECK-NEXT:    vextracti32x4 $3, %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Folded Spill371; CHECK-NEXT:    #APP372; CHECK-NEXT:    nop373; CHECK-NEXT:    #NO_APP374; CHECK-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload375; CHECK-NEXT:    vzeroupper376; CHECK-NEXT:    retq377  ; zext forces execution domain378  %1 = zext <16 x i16> %a0 to <16 x i32>379  %2 = shufflevector <16 x i32> %1, <16 x i32> %a1, <4 x i32> <i32 12, i32 13, i32 14, i32 15>380  %3 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()381  ret <4 x i32> %2382}383 384define <2 x i64> @stack_fold_extracti64x2(<8 x i32> %a0, <8 x i64> %a1) {385; CHECK-LABEL: stack_fold_extracti64x2:386; CHECK:       # %bb.0:387; CHECK-NEXT:    vpmovzxdq {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero388; CHECK-NEXT:    vextracti32x4 $3, %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Folded Spill389; CHECK-NEXT:    #APP390; CHECK-NEXT:    nop391; CHECK-NEXT:    #NO_APP392; CHECK-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload393; CHECK-NEXT:    vzeroupper394; CHECK-NEXT:    retq395  ; zext forces execution domain396  %1 = zext <8 x i32> %a0 to <8 x i64>397  %2 = shufflevector <8 x i64> %1, <8 x i64> %a1, <2 x i32> <i32 6, i32 7>398  %3 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()399  ret <2 x i64> %2400}401 402define <8 x i32> @stack_fold_extracti32x8(<16 x i16> %a0, <16 x i32> %a1) {403; CHECK-LABEL: stack_fold_extracti32x8:404; CHECK:       # %bb.0:405; CHECK-NEXT:    vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero406; CHECK-NEXT:    vextracti64x4 $1, %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Folded Spill407; CHECK-NEXT:    #APP408; CHECK-NEXT:    nop409; CHECK-NEXT:    #NO_APP410; CHECK-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload411; CHECK-NEXT:    retq412  ; zext forces execution domain413  %1 = zext <16 x i16> %a0 to <16 x i32>414  %2 = shufflevector <16 x i32> %1, <16 x i32> %a1, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>415  %3 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()416  ret <8 x i32> %2417}418 419define <4 x i64> @stack_fold_extracti64x4(<8 x i32> %a0, <8 x i64> %a1) {420; CHECK-LABEL: stack_fold_extracti64x4:421; CHECK:       # %bb.0:422; CHECK-NEXT:    vpmovzxdq {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero423; CHECK-NEXT:    vextracti64x4 $1, %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Folded Spill424; CHECK-NEXT:    #APP425; CHECK-NEXT:    nop426; CHECK-NEXT:    #NO_APP427; CHECK-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload428; CHECK-NEXT:    retq429  ; zext forces execution domain430  %1 = zext <8 x i32> %a0 to <8 x i64>431  %2 = shufflevector <8 x i64> %1, <8 x i64> %a1, <4 x i32> <i32 4, i32 5, i32 6, i32 7>432  %3 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()433  ret <4 x i64> %2434}435 436define <16 x i32> @stack_fold_inserti32x8(<8 x i32> %a0, <8 x i32> %a1) {437; CHECK-LABEL: stack_fold_inserti32x8:438; CHECK:       # %bb.0:439; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill440; CHECK-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0441; CHECK-NEXT:    #APP442; CHECK-NEXT:    nop443; CHECK-NEXT:    #NO_APP444; CHECK-NEXT:    vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 32-byte Folded Reload445; CHECK-NEXT:    vpternlogd {{.*#+}} zmm1 = -1446; CHECK-NEXT:    vpsubd %zmm1, %zmm0, %zmm0447; CHECK-NEXT:    retq448  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()449  %2 = shufflevector <8 x i32> %a0, <8 x i32> %a1, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>450  ; add forces execution domain451  %3 = add <16 x i32> %2, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>452  ret <16 x i32> %3453}454 455define <8 x i64> @stack_fold_inserti64x4(<4 x i64> %a0, <4 x i64> %a1) {456; CHECK-LABEL: stack_fold_inserti64x4:457; CHECK:       # %bb.0:458; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill459; CHECK-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0460; CHECK-NEXT:    #APP461; CHECK-NEXT:    nop462; CHECK-NEXT:    #NO_APP463; CHECK-NEXT:    vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 32-byte Folded Reload464; CHECK-NEXT:    vpternlogd {{.*#+}} zmm1 = -1465; CHECK-NEXT:    vpsubq %zmm1, %zmm0, %zmm0466; CHECK-NEXT:    retq467  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()468  %2 = shufflevector <4 x i64> %a0, <4 x i64> %a1, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>469  ; add forces execution domain470  %3 = add <8 x i64> %2, <i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1>471  ret <8 x i64> %3472}473 474define <64 x i8> @stack_fold_pabsb(<64 x i8> %a0) {475; CHECK-LABEL: stack_fold_pabsb:476; CHECK:       # %bb.0:477; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill478; CHECK-NEXT:    #APP479; CHECK-NEXT:    nop480; CHECK-NEXT:    #NO_APP481; CHECK-NEXT:    vpabsb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Folded Reload482; CHECK-NEXT:    retq483  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()484  %2 = icmp sgt <64 x i8> %a0, zeroinitializer485  %3 = sub <64 x i8> zeroinitializer, %a0486  %4 = select <64 x i1> %2, <64 x i8> %a0, <64 x i8> %3487  ret <64 x i8> %4488}489 490define <64 x i8> @stack_fold_pabsb_mask(<64 x i8> %passthru, <64 x i8> %a0, i64 %mask) {491; CHECK-LABEL: stack_fold_pabsb_mask:492; CHECK:       # %bb.0:493; CHECK-NEXT:    pushq %rax494; CHECK-NEXT:    .cfi_def_cfa_offset 16495; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill496; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill497; CHECK-NEXT:    #APP498; CHECK-NEXT:    nop499; CHECK-NEXT:    #NO_APP500; CHECK-NEXT:    kmovq %rdi, %k1501; CHECK-NEXT:    vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload502; CHECK-NEXT:    vpabsb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 {%k1} # 64-byte Folded Reload503; CHECK-NEXT:    popq %rax504; CHECK-NEXT:    .cfi_def_cfa_offset 8505; CHECK-NEXT:    retq506  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()507  %2 = icmp sgt <64 x i8> %a0, zeroinitializer508  %3 = sub <64 x i8> zeroinitializer, %a0509  %4 = select <64 x i1> %2, <64 x i8> %a0, <64 x i8> %3510  %5 = bitcast i64 %mask to <64 x i1>511  %6 = select <64 x i1> %5, <64 x i8> %4, <64 x i8> %passthru512  ret <64 x i8> %6513}514 515define <64 x i8> @stack_fold_pabsb_maskz(<64 x i8> %a0, i64 %mask) {516; CHECK-LABEL: stack_fold_pabsb_maskz:517; CHECK:       # %bb.0:518; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill519; CHECK-NEXT:    #APP520; CHECK-NEXT:    nop521; CHECK-NEXT:    #NO_APP522; CHECK-NEXT:    kmovq %rdi, %k1523; CHECK-NEXT:    vpabsb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 {%k1} {z} # 64-byte Folded Reload524; CHECK-NEXT:    retq525  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()526  %2 = icmp sgt <64 x i8> %a0, zeroinitializer527  %3 = sub <64 x i8> zeroinitializer, %a0528  %4 = select <64 x i1> %2, <64 x i8> %a0, <64 x i8> %3529  %5 = bitcast i64 %mask to <64 x i1>530  %6 = select <64 x i1> %5, <64 x i8> %4, <64 x i8> zeroinitializer531  ret <64 x i8> %6532}533 534define <16 x i32> @stack_fold_pabsd(<16 x i32> %a0) {535; CHECK-LABEL: stack_fold_pabsd:536; CHECK:       # %bb.0:537; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill538; CHECK-NEXT:    #APP539; CHECK-NEXT:    nop540; CHECK-NEXT:    #NO_APP541; CHECK-NEXT:    vpabsd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Folded Reload542; CHECK-NEXT:    retq543  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()544  %2 = icmp sgt <16 x i32> %a0, zeroinitializer545  %3 = sub <16 x i32> zeroinitializer, %a0546  %4 = select <16 x i1> %2, <16 x i32> %a0, <16 x i32> %3547  ret <16 x i32> %4548}549 550define <16 x i32> @stack_fold_pabsd_mask(<16 x i32> %passthru, <16 x i32> %a0, i16 %mask) {551; CHECK-LABEL: stack_fold_pabsd_mask:552; CHECK:       # %bb.0:553; CHECK-NEXT:    pushq %rax554; CHECK-NEXT:    .cfi_def_cfa_offset 16555; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill556; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill557; CHECK-NEXT:    #APP558; CHECK-NEXT:    nop559; CHECK-NEXT:    #NO_APP560; CHECK-NEXT:    kmovd %edi, %k1561; CHECK-NEXT:    vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload562; CHECK-NEXT:    vpabsd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 {%k1} # 64-byte Folded Reload563; CHECK-NEXT:    popq %rax564; CHECK-NEXT:    .cfi_def_cfa_offset 8565; CHECK-NEXT:    retq566  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()567  %2 = icmp sgt <16 x i32> %a0, zeroinitializer568  %3 = sub <16 x i32> zeroinitializer, %a0569  %4 = select <16 x i1> %2, <16 x i32> %a0, <16 x i32> %3570  %5 = bitcast i16 %mask to <16 x i1>571  %6 = select <16 x i1> %5, <16 x i32> %4, <16 x i32> %passthru572  ret <16 x i32> %6573}574 575define <16 x i32> @stack_fold_pabsd_maskz(<16 x i32> %a0, i16 %mask) {576; CHECK-LABEL: stack_fold_pabsd_maskz:577; CHECK:       # %bb.0:578; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill579; CHECK-NEXT:    #APP580; CHECK-NEXT:    nop581; CHECK-NEXT:    #NO_APP582; CHECK-NEXT:    kmovd %edi, %k1583; CHECK-NEXT:    vpabsd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 {%k1} {z} # 64-byte Folded Reload584; CHECK-NEXT:    retq585  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()586  %2 = icmp sgt <16 x i32> %a0, zeroinitializer587  %3 = sub <16 x i32> zeroinitializer, %a0588  %4 = select <16 x i1> %2, <16 x i32> %a0, <16 x i32> %3589  %5 = bitcast i16 %mask to <16 x i1>590  %6 = select <16 x i1> %5, <16 x i32> %4, <16 x i32> zeroinitializer591  ret <16 x i32> %6592}593 594define <8 x i64> @stack_fold_pabsq(<8 x i64> %a0) {595; CHECK-LABEL: stack_fold_pabsq:596; CHECK:       # %bb.0:597; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill598; CHECK-NEXT:    #APP599; CHECK-NEXT:    nop600; CHECK-NEXT:    #NO_APP601; CHECK-NEXT:    vpabsq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Folded Reload602; CHECK-NEXT:    retq603  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()604  %2 = icmp sgt <8 x i64> %a0, zeroinitializer605  %3 = sub <8 x i64> zeroinitializer, %a0606  %4 = select <8 x i1> %2, <8 x i64> %a0, <8 x i64> %3607  ret <8 x i64> %4608}609 610define <8 x i64> @stack_fold_pabsq_mask(<8 x i64> %passthru, <8 x i64> %a0, i8 %mask) {611; CHECK-LABEL: stack_fold_pabsq_mask:612; CHECK:       # %bb.0:613; CHECK-NEXT:    pushq %rax614; CHECK-NEXT:    .cfi_def_cfa_offset 16615; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill616; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill617; CHECK-NEXT:    #APP618; CHECK-NEXT:    nop619; CHECK-NEXT:    #NO_APP620; CHECK-NEXT:    kmovd %edi, %k1621; CHECK-NEXT:    vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload622; CHECK-NEXT:    vpabsq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 {%k1} # 64-byte Folded Reload623; CHECK-NEXT:    popq %rax624; CHECK-NEXT:    .cfi_def_cfa_offset 8625; CHECK-NEXT:    retq626  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()627  %2 = icmp sgt <8 x i64> %a0, zeroinitializer628  %3 = sub <8 x i64> zeroinitializer, %a0629  %4 = select <8 x i1> %2, <8 x i64> %a0, <8 x i64> %3630  %5 = bitcast i8 %mask to <8 x i1>631  %6 = select <8 x i1> %5, <8 x i64> %4, <8 x i64> %passthru632  ret <8 x i64> %6633}634 635define <8 x i64> @stack_fold_pabsq_maskz(<8 x i64> %a0, i8 %mask) {636; CHECK-LABEL: stack_fold_pabsq_maskz:637; CHECK:       # %bb.0:638; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill639; CHECK-NEXT:    #APP640; CHECK-NEXT:    nop641; CHECK-NEXT:    #NO_APP642; CHECK-NEXT:    kmovd %edi, %k1643; CHECK-NEXT:    vpabsq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 {%k1} {z} # 64-byte Folded Reload644; CHECK-NEXT:    retq645  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()646  %2 = icmp sgt <8 x i64> %a0, zeroinitializer647  %3 = sub <8 x i64> zeroinitializer, %a0648  %4 = select <8 x i1> %2, <8 x i64> %a0, <8 x i64> %3649  %5 = bitcast i8 %mask to <8 x i1>650  %6 = select <8 x i1> %5, <8 x i64> %4, <8 x i64> zeroinitializer651  ret <8 x i64> %6652}653 654define <32 x i16> @stack_fold_pabsw(<32 x i16> %a0) {655; CHECK-LABEL: stack_fold_pabsw:656; CHECK:       # %bb.0:657; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill658; CHECK-NEXT:    #APP659; CHECK-NEXT:    nop660; CHECK-NEXT:    #NO_APP661; CHECK-NEXT:    vpabsw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Folded Reload662; CHECK-NEXT:    retq663  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()664  %2 = icmp sgt <32 x i16> %a0, zeroinitializer665  %3 = sub <32 x i16> zeroinitializer, %a0666  %4 = select <32 x i1> %2, <32 x i16> %a0, <32 x i16> %3667  ret <32 x i16> %4668}669 670define <32 x i16> @stack_fold_pabsw_mask(<32 x i16> %passthru, <32 x i16> %a0, i32 %mask) {671; CHECK-LABEL: stack_fold_pabsw_mask:672; CHECK:       # %bb.0:673; CHECK-NEXT:    pushq %rax674; CHECK-NEXT:    .cfi_def_cfa_offset 16675; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill676; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill677; CHECK-NEXT:    #APP678; CHECK-NEXT:    nop679; CHECK-NEXT:    #NO_APP680; CHECK-NEXT:    kmovd %edi, %k1681; CHECK-NEXT:    vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload682; CHECK-NEXT:    vpabsw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 {%k1} # 64-byte Folded Reload683; CHECK-NEXT:    popq %rax684; CHECK-NEXT:    .cfi_def_cfa_offset 8685; CHECK-NEXT:    retq686  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()687  %2 = icmp sgt <32 x i16> %a0, zeroinitializer688  %3 = sub <32 x i16> zeroinitializer, %a0689  %4 = select <32 x i1> %2, <32 x i16> %a0, <32 x i16> %3690  %5 = bitcast i32 %mask to <32 x i1>691  %6 = select <32 x i1> %5, <32 x i16> %4, <32 x i16> %passthru692  ret <32 x i16> %6693}694 695define <32 x i16> @stack_fold_pabsw_maskz(<32 x i16> %a0, i32 %mask) {696; CHECK-LABEL: stack_fold_pabsw_maskz:697; CHECK:       # %bb.0:698; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill699; CHECK-NEXT:    #APP700; CHECK-NEXT:    nop701; CHECK-NEXT:    #NO_APP702; CHECK-NEXT:    kmovd %edi, %k1703; CHECK-NEXT:    vpabsw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 {%k1} {z} # 64-byte Folded Reload704; CHECK-NEXT:    retq705  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()706  %2 = icmp sgt <32 x i16> %a0, zeroinitializer707  %3 = sub <32 x i16> zeroinitializer, %a0708  %4 = select <32 x i1> %2, <32 x i16> %a0, <32 x i16> %3709  %5 = bitcast i32 %mask to <32 x i1>710  %6 = select <32 x i1> %5, <32 x i16> %4, <32 x i16> zeroinitializer711  ret <32 x i16> %6712}713 714define <32 x i16> @stack_fold_packssdw(<16 x i32> %a0, <16 x i32> %a1) {715; CHECK-LABEL: stack_fold_packssdw:716; CHECK:       # %bb.0:717; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill718; CHECK-NEXT:    #APP719; CHECK-NEXT:    nop720; CHECK-NEXT:    #NO_APP721; CHECK-NEXT:    vpackssdw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload722; CHECK-NEXT:    retq723  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()724  %2 = call <32 x i16> @llvm.x86.avx512.packssdw.512(<16 x i32> %a0, <16 x i32> %a1)725  ret <32 x i16> %2726}727declare <32 x i16> @llvm.x86.avx512.packssdw.512(<16 x i32>, <16 x i32>) nounwind readnone728 729define <64 x i8> @stack_fold_packsswb(<32 x i16> %a0, <32 x i16> %a1) {730; CHECK-LABEL: stack_fold_packsswb:731; CHECK:       # %bb.0:732; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill733; CHECK-NEXT:    #APP734; CHECK-NEXT:    nop735; CHECK-NEXT:    #NO_APP736; CHECK-NEXT:    vpacksswb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload737; CHECK-NEXT:    retq738  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()739  %2 = call <64 x i8> @llvm.x86.avx512.packsswb.512(<32 x i16> %a0, <32 x i16> %a1)740  ret <64 x i8> %2741}742declare <64 x i8> @llvm.x86.avx512.packsswb.512(<32 x i16>, <32 x i16>) nounwind readnone743 744define <32 x i16> @stack_fold_packusdw(<16 x i32> %a0, <16 x i32> %a1) {745; CHECK-LABEL: stack_fold_packusdw:746; CHECK:       # %bb.0:747; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill748; CHECK-NEXT:    #APP749; CHECK-NEXT:    nop750; CHECK-NEXT:    #NO_APP751; CHECK-NEXT:    vpackusdw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload752; CHECK-NEXT:    retq753  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()754  %2 = call <32 x i16> @llvm.x86.avx512.packusdw.512(<16 x i32> %a0, <16 x i32> %a1)755  ret <32 x i16> %2756}757declare <32 x i16> @llvm.x86.avx512.packusdw.512(<16 x i32>, <16 x i32>) nounwind readnone758 759define <32 x i16> @stack_fold_packusdw_mask(ptr %passthru, <16 x i32> %a0, <16 x i32> %a1, i32 %mask) {760; CHECK-LABEL: stack_fold_packusdw_mask:761; CHECK:       # %bb.0:762; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill763; CHECK-NEXT:    #APP764; CHECK-NEXT:    nop765; CHECK-NEXT:    #NO_APP766; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm2767; CHECK-NEXT:    kmovd %esi, %k1768; CHECK-NEXT:    vpackusdw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload769; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm0770; CHECK-NEXT:    retq771  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()772  %2 = load <32 x i16>, ptr %passthru773  %3 = call <32 x i16> @llvm.x86.avx512.packusdw.512(<16 x i32> %a0, <16 x i32> %a1)774  %4 = bitcast i32 %mask to <32 x i1>775  %5 = select <32 x i1> %4, <32 x i16> %3, <32 x i16> %2776  ret <32 x i16> %5777}778 779define <32 x i16> @stack_fold_packusdw_maskz(<16 x i32> %a0, <16 x i32> %a1, i32 %mask) {780; CHECK-LABEL: stack_fold_packusdw_maskz:781; CHECK:       # %bb.0:782; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill783; CHECK-NEXT:    #APP784; CHECK-NEXT:    nop785; CHECK-NEXT:    #NO_APP786; CHECK-NEXT:    kmovd %edi, %k1787; CHECK-NEXT:    vpackusdw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload788; CHECK-NEXT:    retq789  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()790  %2 = call <32 x i16> @llvm.x86.avx512.packusdw.512(<16 x i32> %a0, <16 x i32> %a1)791  %3 = bitcast i32 %mask to <32 x i1>792  %4 = select <32 x i1> %3, <32 x i16> %2, <32 x i16> zeroinitializer793  ret <32 x i16> %4794}795 796define <64 x i8> @stack_fold_packuswb(<32 x i16> %a0, <32 x i16> %a1) {797; CHECK-LABEL: stack_fold_packuswb:798; CHECK:       # %bb.0:799; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill800; CHECK-NEXT:    #APP801; CHECK-NEXT:    nop802; CHECK-NEXT:    #NO_APP803; CHECK-NEXT:    vpackuswb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload804; CHECK-NEXT:    retq805  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()806  %2 = call <64 x i8> @llvm.x86.avx512.packuswb.512(<32 x i16> %a0, <32 x i16> %a1)807  ret <64 x i8> %2808}809declare <64 x i8> @llvm.x86.avx512.packuswb.512(<32 x i16>, <32 x i16>) nounwind readnone810 811define <64 x i8> @stack_fold_paddb(<64 x i8> %a0, <64 x i8> %a1) {812; CHECK-LABEL: stack_fold_paddb:813; CHECK:       # %bb.0:814; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill815; CHECK-NEXT:    #APP816; CHECK-NEXT:    nop817; CHECK-NEXT:    #NO_APP818; CHECK-NEXT:    vpaddb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload819; CHECK-NEXT:    retq820  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()821  %2 = add <64 x i8> %a0, %a1822  ret <64 x i8> %2823}824 825define <64 x i8> @stack_fold_paddb_commuted(<64 x i8> %a0, <64 x i8> %a1) {826; CHECK-LABEL: stack_fold_paddb_commuted:827; CHECK:       # %bb.0:828; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill829; CHECK-NEXT:    #APP830; CHECK-NEXT:    nop831; CHECK-NEXT:    #NO_APP832; CHECK-NEXT:    vpaddb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload833; CHECK-NEXT:    retq834  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()835  %2 = add <64 x i8> %a1, %a0836  ret <64 x i8> %2837}838 839define <64 x i8> @stack_fold_paddb_mask(<64 x i8> %a0, <64 x i8> %a1, ptr %a2, i64 %mask) {840; CHECK-LABEL: stack_fold_paddb_mask:841; CHECK:       # %bb.0:842; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill843; CHECK-NEXT:    vmovdqa64 %zmm0, %zmm1844; CHECK-NEXT:    #APP845; CHECK-NEXT:    nop846; CHECK-NEXT:    #NO_APP847; CHECK-NEXT:    kmovq %rsi, %k1848; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm0849; CHECK-NEXT:    vpaddb {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload850; CHECK-NEXT:    retq851  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()852  %2 = add <64 x i8> %a0, %a1853  %3 = bitcast i64 %mask to <64 x i1>854  ; load needed to keep the operation from being scheduled about the asm block855  %4 = load <64 x i8>, ptr %a2856  %5 = select <64 x i1> %3, <64 x i8> %2, <64 x i8> %4857  ret <64 x i8> %5858}859 860define <64 x i8> @stack_fold_paddb_mask_commuted(<64 x i8> %a0, <64 x i8> %a1, ptr %a2, i64 %mask) {861; CHECK-LABEL: stack_fold_paddb_mask_commuted:862; CHECK:       # %bb.0:863; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill864; CHECK-NEXT:    vmovdqa64 %zmm0, %zmm1865; CHECK-NEXT:    #APP866; CHECK-NEXT:    nop867; CHECK-NEXT:    #NO_APP868; CHECK-NEXT:    kmovq %rsi, %k1869; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm0870; CHECK-NEXT:    vpaddb {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload871; CHECK-NEXT:    retq872  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()873  %2 = add <64 x i8> %a1, %a0874  %3 = bitcast i64 %mask to <64 x i1>875  ; load needed to keep the operation from being scheduled about the asm block876  %4 = load <64 x i8>, ptr %a2877  %5 = select <64 x i1> %3, <64 x i8> %2, <64 x i8> %4878  ret <64 x i8> %5879}880 881define <64 x i8> @stack_fold_paddb_maskz(<64 x i8> %a0, <64 x i8> %a1, i64 %mask) {882; CHECK-LABEL: stack_fold_paddb_maskz:883; CHECK:       # %bb.0:884; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill885; CHECK-NEXT:    #APP886; CHECK-NEXT:    nop887; CHECK-NEXT:    #NO_APP888; CHECK-NEXT:    kmovq %rdi, %k1889; CHECK-NEXT:    vpaddb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload890; CHECK-NEXT:    retq891  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()892  %2 = add <64 x i8> %a0, %a1893  %3 = bitcast i64 %mask to <64 x i1>894  %4 = select <64 x i1> %3, <64 x i8> %2, <64 x i8> zeroinitializer895  ret <64 x i8> %4896}897 898define <64 x i8> @stack_fold_paddb_maskz_commuted(<64 x i8> %a0, <64 x i8> %a1, i64 %mask) {899; CHECK-LABEL: stack_fold_paddb_maskz_commuted:900; CHECK:       # %bb.0:901; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill902; CHECK-NEXT:    #APP903; CHECK-NEXT:    nop904; CHECK-NEXT:    #NO_APP905; CHECK-NEXT:    kmovq %rdi, %k1906; CHECK-NEXT:    vpaddb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload907; CHECK-NEXT:    retq908  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()909  %2 = add <64 x i8> %a1, %a0910  %3 = bitcast i64 %mask to <64 x i1>911  %4 = select <64 x i1> %3, <64 x i8> %2, <64 x i8> zeroinitializer912  ret <64 x i8> %4913}914 915define <16 x i32> @stack_fold_paddd(<16 x i32> %a0, <16 x i32> %a1) {916; CHECK-LABEL: stack_fold_paddd:917; CHECK:       # %bb.0:918; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill919; CHECK-NEXT:    #APP920; CHECK-NEXT:    nop921; CHECK-NEXT:    #NO_APP922; CHECK-NEXT:    vpaddd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload923; CHECK-NEXT:    retq924  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()925  %2 = add <16 x i32> %a0, %a1926  ret <16 x i32> %2927}928 929define <16 x i32> @stack_fold_paddd_commuted(<16 x i32> %a0, <16 x i32> %a1) {930; CHECK-LABEL: stack_fold_paddd_commuted:931; CHECK:       # %bb.0:932; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill933; CHECK-NEXT:    #APP934; CHECK-NEXT:    nop935; CHECK-NEXT:    #NO_APP936; CHECK-NEXT:    vpaddd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload937; CHECK-NEXT:    retq938  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()939  %2 = add <16 x i32> %a1, %a0940  ret <16 x i32> %2941}942 943define <16 x i32> @stack_fold_paddd_mask(<16 x i32> %a0, <16 x i32> %a1, ptr %a2, i16 %mask) {944; CHECK-LABEL: stack_fold_paddd_mask:945; CHECK:       # %bb.0:946; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill947; CHECK-NEXT:    vmovdqa64 %zmm0, %zmm1948; CHECK-NEXT:    #APP949; CHECK-NEXT:    nop950; CHECK-NEXT:    #NO_APP951; CHECK-NEXT:    kmovd %esi, %k1952; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm0953; CHECK-NEXT:    vpaddd {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload954; CHECK-NEXT:    retq955  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()956  %2 = add <16 x i32> %a0, %a1957  %3 = bitcast i16 %mask to <16 x i1>958  ; load needed to keep the operation from being scheduled about the asm block959  %4 = load <16 x i32>, ptr %a2960  %5 = select <16 x i1> %3, <16 x i32> %2, <16 x i32> %4961  ret <16 x i32> %5962}963 964define <16 x i32> @stack_fold_paddd_mask_commuted(<16 x i32> %a0, <16 x i32> %a1, ptr %a2, i16 %mask) {965; CHECK-LABEL: stack_fold_paddd_mask_commuted:966; CHECK:       # %bb.0:967; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill968; CHECK-NEXT:    vmovdqa64 %zmm0, %zmm1969; CHECK-NEXT:    #APP970; CHECK-NEXT:    nop971; CHECK-NEXT:    #NO_APP972; CHECK-NEXT:    kmovd %esi, %k1973; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm0974; CHECK-NEXT:    vpaddd {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload975; CHECK-NEXT:    retq976  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()977  %2 = add <16 x i32> %a1, %a0978  %3 = bitcast i16 %mask to <16 x i1>979  ; load needed to keep the operation from being scheduled about the asm block980  %4 = load <16 x i32>, ptr %a2981  %5 = select <16 x i1> %3, <16 x i32> %2, <16 x i32> %4982  ret <16 x i32> %5983}984 985define <16 x i32> @stack_fold_paddd_maskz(<16 x i32> %a0, <16 x i32> %a1, i16 %mask) {986; CHECK-LABEL: stack_fold_paddd_maskz:987; CHECK:       # %bb.0:988; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill989; CHECK-NEXT:    #APP990; CHECK-NEXT:    nop991; CHECK-NEXT:    #NO_APP992; CHECK-NEXT:    kmovd %edi, %k1993; CHECK-NEXT:    vpaddd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload994; CHECK-NEXT:    retq995  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()996  %2 = add <16 x i32> %a0, %a1997  %3 = bitcast i16 %mask to <16 x i1>998  %4 = select <16 x i1> %3, <16 x i32> %2, <16 x i32> zeroinitializer999  ret <16 x i32> %41000}1001 1002define <16 x i32> @stack_fold_paddd_maskz_commuted(<16 x i32> %a0, <16 x i32> %a1, i16 %mask) {1003; CHECK-LABEL: stack_fold_paddd_maskz_commuted:1004; CHECK:       # %bb.0:1005; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1006; CHECK-NEXT:    #APP1007; CHECK-NEXT:    nop1008; CHECK-NEXT:    #NO_APP1009; CHECK-NEXT:    kmovd %edi, %k11010; CHECK-NEXT:    vpaddd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload1011; CHECK-NEXT:    retq1012  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1013  %2 = add <16 x i32> %a1, %a01014  %3 = bitcast i16 %mask to <16 x i1>1015  %4 = select <16 x i1> %3, <16 x i32> %2, <16 x i32> zeroinitializer1016  ret <16 x i32> %41017}1018 1019define <8 x i64> @stack_fold_paddq(<8 x i64> %a0, <8 x i64> %a1) {1020; CHECK-LABEL: stack_fold_paddq:1021; CHECK:       # %bb.0:1022; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1023; CHECK-NEXT:    #APP1024; CHECK-NEXT:    nop1025; CHECK-NEXT:    #NO_APP1026; CHECK-NEXT:    vpaddq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload1027; CHECK-NEXT:    retq1028  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1029  %2 = add <8 x i64> %a0, %a11030  ret <8 x i64> %21031}1032 1033define <8 x i64> @stack_fold_paddq_commuted(<8 x i64> %a0, <8 x i64> %a1) {1034; CHECK-LABEL: stack_fold_paddq_commuted:1035; CHECK:       # %bb.0:1036; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1037; CHECK-NEXT:    #APP1038; CHECK-NEXT:    nop1039; CHECK-NEXT:    #NO_APP1040; CHECK-NEXT:    vpaddq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload1041; CHECK-NEXT:    retq1042  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1043  %2 = add <8 x i64> %a1, %a01044  ret <8 x i64> %21045}1046 1047define <8 x i64> @stack_fold_paddq_mask(<8 x i64> %a0, <8 x i64> %a1, ptr %a2, i8 %mask) {1048; CHECK-LABEL: stack_fold_paddq_mask:1049; CHECK:       # %bb.0:1050; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1051; CHECK-NEXT:    vmovdqa64 %zmm0, %zmm11052; CHECK-NEXT:    #APP1053; CHECK-NEXT:    nop1054; CHECK-NEXT:    #NO_APP1055; CHECK-NEXT:    kmovd %esi, %k11056; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm01057; CHECK-NEXT:    vpaddq {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload1058; CHECK-NEXT:    retq1059  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1060  %2 = add <8 x i64> %a0, %a11061  %3 = bitcast i8 %mask to <8 x i1>1062  ; load needed to keep the operation from being scheduled about the asm block1063  %4 = load <8 x i64>, ptr %a21064  %5 = select <8 x i1> %3, <8 x i64> %2, <8 x i64> %41065  ret <8 x i64> %51066}1067 1068define <8 x i64> @stack_fold_paddq_mask_commuted(<8 x i64> %a0, <8 x i64> %a1, ptr %a2, i8 %mask) {1069; CHECK-LABEL: stack_fold_paddq_mask_commuted:1070; CHECK:       # %bb.0:1071; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1072; CHECK-NEXT:    vmovdqa64 %zmm0, %zmm11073; CHECK-NEXT:    #APP1074; CHECK-NEXT:    nop1075; CHECK-NEXT:    #NO_APP1076; CHECK-NEXT:    kmovd %esi, %k11077; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm01078; CHECK-NEXT:    vpaddq {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload1079; CHECK-NEXT:    retq1080  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1081  %2 = add <8 x i64> %a1, %a01082  %3 = bitcast i8 %mask to <8 x i1>1083  ; load needed to keep the operation from being scheduled about the asm block1084  %4 = load <8 x i64>, ptr %a21085  %5 = select <8 x i1> %3, <8 x i64> %2, <8 x i64> %41086  ret <8 x i64> %51087}1088 1089define <8 x i64> @stack_fold_paddq_maskz(<8 x i64> %a0, <8 x i64> %a1, i8 %mask) {1090; CHECK-LABEL: stack_fold_paddq_maskz:1091; CHECK:       # %bb.0:1092; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1093; CHECK-NEXT:    #APP1094; CHECK-NEXT:    nop1095; CHECK-NEXT:    #NO_APP1096; CHECK-NEXT:    kmovd %edi, %k11097; CHECK-NEXT:    vpaddq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload1098; CHECK-NEXT:    retq1099  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1100  %2 = add <8 x i64> %a0, %a11101  %3 = bitcast i8 %mask to <8 x i1>1102  %4 = select <8 x i1> %3, <8 x i64> %2, <8 x i64> zeroinitializer1103  ret <8 x i64> %41104}1105 1106define <8 x i64> @stack_fold_paddq_maskz_commuted(<8 x i64> %a0, <8 x i64> %a1, i8 %mask) {1107; CHECK-LABEL: stack_fold_paddq_maskz_commuted:1108; CHECK:       # %bb.0:1109; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1110; CHECK-NEXT:    #APP1111; CHECK-NEXT:    nop1112; CHECK-NEXT:    #NO_APP1113; CHECK-NEXT:    kmovd %edi, %k11114; CHECK-NEXT:    vpaddq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload1115; CHECK-NEXT:    retq1116  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1117  %2 = add <8 x i64> %a1, %a01118  %3 = bitcast i8 %mask to <8 x i1>1119  %4 = select <8 x i1> %3, <8 x i64> %2, <8 x i64> zeroinitializer1120  ret <8 x i64> %41121}1122 1123define <64 x i8> @stack_fold_paddsb(<64 x i8> %a0, <64 x i8> %a1) {1124; CHECK-LABEL: stack_fold_paddsb:1125; CHECK:       # %bb.0:1126; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1127; CHECK-NEXT:    #APP1128; CHECK-NEXT:    nop1129; CHECK-NEXT:    #NO_APP1130; CHECK-NEXT:    vpaddsb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload1131; CHECK-NEXT:    retq1132  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1133  %2 = call <64 x i8> @llvm.sadd.sat.v64i8(<64 x i8> %a0, <64 x i8> %a1)1134  ret <64 x i8> %21135}1136 1137define <64 x i8> @stack_fold_paddsb_commuted(<64 x i8> %a0, <64 x i8> %a1) {1138; CHECK-LABEL: stack_fold_paddsb_commuted:1139; CHECK:       # %bb.0:1140; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1141; CHECK-NEXT:    #APP1142; CHECK-NEXT:    nop1143; CHECK-NEXT:    #NO_APP1144; CHECK-NEXT:    vpaddsb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload1145; CHECK-NEXT:    retq1146  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1147  %2 = call <64 x i8> @llvm.sadd.sat.v64i8(<64 x i8> %a1, <64 x i8> %a0)1148  ret <64 x i8> %21149}1150 1151define <64 x i8> @stack_fold_paddsb_mask(<64 x i8> %a0, <64 x i8> %a1, ptr %a2, i64 %mask) {1152; CHECK-LABEL: stack_fold_paddsb_mask:1153; CHECK:       # %bb.0:1154; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1155; CHECK-NEXT:    vmovdqa64 %zmm0, %zmm11156; CHECK-NEXT:    #APP1157; CHECK-NEXT:    nop1158; CHECK-NEXT:    #NO_APP1159; CHECK-NEXT:    kmovq %rsi, %k11160; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm01161; CHECK-NEXT:    vpaddsb {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload1162; CHECK-NEXT:    retq1163  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1164  %2 = call <64 x i8> @llvm.sadd.sat.v64i8(<64 x i8> %a0, <64 x i8> %a1)1165  %3 = bitcast i64 %mask to <64 x i1>1166  ; load needed to keep the operation from being scheduled about the asm block1167  %4 = load <64 x i8>, ptr %a21168  %5 = select <64 x i1> %3, <64 x i8> %2, <64 x i8> %41169  ret <64 x i8> %51170}1171 1172define <64 x i8> @stack_fold_paddsb_mask_commuted(<64 x i8> %a0, <64 x i8> %a1, ptr %a2, i64 %mask) {1173; CHECK-LABEL: stack_fold_paddsb_mask_commuted:1174; CHECK:       # %bb.0:1175; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1176; CHECK-NEXT:    vmovdqa64 %zmm0, %zmm11177; CHECK-NEXT:    #APP1178; CHECK-NEXT:    nop1179; CHECK-NEXT:    #NO_APP1180; CHECK-NEXT:    kmovq %rsi, %k11181; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm01182; CHECK-NEXT:    vpaddsb {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload1183; CHECK-NEXT:    retq1184  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1185  %2 = call <64 x i8> @llvm.sadd.sat.v64i8(<64 x i8> %a1, <64 x i8> %a0)1186  %3 = bitcast i64 %mask to <64 x i1>1187  ; load needed to keep the operation from being scheduled about the asm block1188  %4 = load <64 x i8>, ptr %a21189  %5 = select <64 x i1> %3, <64 x i8> %2, <64 x i8> %41190  ret <64 x i8> %51191}1192 1193define <64 x i8> @stack_fold_paddsb_maskz(<64 x i8> %a0, <64 x i8> %a1, i64 %mask) {1194; CHECK-LABEL: stack_fold_paddsb_maskz:1195; CHECK:       # %bb.0:1196; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1197; CHECK-NEXT:    #APP1198; CHECK-NEXT:    nop1199; CHECK-NEXT:    #NO_APP1200; CHECK-NEXT:    kmovq %rdi, %k11201; CHECK-NEXT:    vpaddsb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload1202; CHECK-NEXT:    retq1203  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1204  %2 = call <64 x i8> @llvm.sadd.sat.v64i8(<64 x i8> %a0, <64 x i8> %a1)1205  %3 = bitcast i64 %mask to <64 x i1>1206  %4 = select <64 x i1> %3, <64 x i8> %2, <64 x i8> zeroinitializer1207  ret <64 x i8> %41208}1209 1210define <64 x i8> @stack_fold_paddsb_maskz_commuted(<64 x i8> %a0, <64 x i8> %a1, i64 %mask) {1211; CHECK-LABEL: stack_fold_paddsb_maskz_commuted:1212; CHECK:       # %bb.0:1213; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1214; CHECK-NEXT:    #APP1215; CHECK-NEXT:    nop1216; CHECK-NEXT:    #NO_APP1217; CHECK-NEXT:    kmovq %rdi, %k11218; CHECK-NEXT:    vpaddsb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload1219; CHECK-NEXT:    retq1220  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1221  %2 = call <64 x i8> @llvm.sadd.sat.v64i8(<64 x i8> %a1, <64 x i8> %a0)1222  %3 = bitcast i64 %mask to <64 x i1>1223  %4 = select <64 x i1> %3, <64 x i8> %2, <64 x i8> zeroinitializer1224  ret <64 x i8> %41225}1226 1227define <32 x i16> @stack_fold_paddsw(<32 x i16> %a0, <32 x i16> %a1) {1228; CHECK-LABEL: stack_fold_paddsw:1229; CHECK:       # %bb.0:1230; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1231; CHECK-NEXT:    #APP1232; CHECK-NEXT:    nop1233; CHECK-NEXT:    #NO_APP1234; CHECK-NEXT:    vpaddsw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload1235; CHECK-NEXT:    retq1236  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1237  %2 = call <32 x i16> @llvm.sadd.sat.v32i16(<32 x i16> %a0, <32 x i16> %a1)1238  ret <32 x i16> %21239}1240 1241define <32 x i16> @stack_fold_paddsw_commuted(<32 x i16> %a0, <32 x i16> %a1) {1242; CHECK-LABEL: stack_fold_paddsw_commuted:1243; CHECK:       # %bb.0:1244; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1245; CHECK-NEXT:    #APP1246; CHECK-NEXT:    nop1247; CHECK-NEXT:    #NO_APP1248; CHECK-NEXT:    vpaddsw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload1249; CHECK-NEXT:    retq1250  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1251  %2 = call <32 x i16> @llvm.sadd.sat.v32i16(<32 x i16> %a1, <32 x i16> %a0)1252  ret <32 x i16> %21253}1254 1255define <32 x i16> @stack_fold_paddsw_mask(<32 x i16> %a0, <32 x i16> %a1, ptr %a2, i32 %mask) {1256; CHECK-LABEL: stack_fold_paddsw_mask:1257; CHECK:       # %bb.0:1258; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1259; CHECK-NEXT:    vmovdqa64 %zmm0, %zmm11260; CHECK-NEXT:    #APP1261; CHECK-NEXT:    nop1262; CHECK-NEXT:    #NO_APP1263; CHECK-NEXT:    kmovd %esi, %k11264; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm01265; CHECK-NEXT:    vpaddsw {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload1266; CHECK-NEXT:    retq1267  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1268  %2 = call <32 x i16> @llvm.sadd.sat.v32i16(<32 x i16> %a0, <32 x i16> %a1)1269  %3 = bitcast i32 %mask to <32 x i1>1270  ; load needed to keep the operation from being scheduled about the asm block1271  %4 = load <32 x i16>, ptr %a21272  %5 = select <32 x i1> %3, <32 x i16> %2, <32 x i16> %41273  ret <32 x i16> %51274}1275 1276define <32 x i16> @stack_fold_paddsw_mask_commuted(<32 x i16> %a0, <32 x i16> %a1, ptr %a2, i32 %mask) {1277; CHECK-LABEL: stack_fold_paddsw_mask_commuted:1278; CHECK:       # %bb.0:1279; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1280; CHECK-NEXT:    vmovdqa64 %zmm0, %zmm11281; CHECK-NEXT:    #APP1282; CHECK-NEXT:    nop1283; CHECK-NEXT:    #NO_APP1284; CHECK-NEXT:    kmovd %esi, %k11285; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm01286; CHECK-NEXT:    vpaddsw {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload1287; CHECK-NEXT:    retq1288  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1289  %2 = call <32 x i16> @llvm.sadd.sat.v32i16(<32 x i16> %a1, <32 x i16> %a0)1290  %3 = bitcast i32 %mask to <32 x i1>1291  ; load needed to keep the operation from being scheduled about the asm block1292  %4 = load <32 x i16>, ptr %a21293  %5 = select <32 x i1> %3, <32 x i16> %2, <32 x i16> %41294  ret <32 x i16> %51295}1296 1297define <32 x i16> @stack_fold_paddsw_maskz(<32 x i16> %a0, <32 x i16> %a1, i32 %mask) {1298; CHECK-LABEL: stack_fold_paddsw_maskz:1299; CHECK:       # %bb.0:1300; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1301; CHECK-NEXT:    #APP1302; CHECK-NEXT:    nop1303; CHECK-NEXT:    #NO_APP1304; CHECK-NEXT:    kmovd %edi, %k11305; CHECK-NEXT:    vpaddsw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload1306; CHECK-NEXT:    retq1307  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1308  %2 = call <32 x i16> @llvm.sadd.sat.v32i16(<32 x i16> %a0, <32 x i16> %a1)1309  %3 = bitcast i32 %mask to <32 x i1>1310  %4 = select <32 x i1> %3, <32 x i16> %2, <32 x i16> zeroinitializer1311  ret <32 x i16> %41312}1313 1314define <32 x i16> @stack_fold_paddsw_maskz_commuted(<32 x i16> %a0, <32 x i16> %a1, i32 %mask) {1315; CHECK-LABEL: stack_fold_paddsw_maskz_commuted:1316; CHECK:       # %bb.0:1317; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1318; CHECK-NEXT:    #APP1319; CHECK-NEXT:    nop1320; CHECK-NEXT:    #NO_APP1321; CHECK-NEXT:    kmovd %edi, %k11322; CHECK-NEXT:    vpaddsw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload1323; CHECK-NEXT:    retq1324  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1325  %2 = call <32 x i16> @llvm.sadd.sat.v32i16(<32 x i16> %a1, <32 x i16> %a0)1326  %3 = bitcast i32 %mask to <32 x i1>1327  %4 = select <32 x i1> %3, <32 x i16> %2, <32 x i16> zeroinitializer1328  ret <32 x i16> %41329}1330 1331define <64 x i8> @stack_fold_paddusb(<64 x i8> %a0, <64 x i8> %a1) {1332; CHECK-LABEL: stack_fold_paddusb:1333; CHECK:       # %bb.0:1334; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1335; CHECK-NEXT:    #APP1336; CHECK-NEXT:    nop1337; CHECK-NEXT:    #NO_APP1338; CHECK-NEXT:    vpaddusb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload1339; CHECK-NEXT:    retq1340  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1341  %2 = call <64 x i8> @llvm.uadd.sat.v64i8(<64 x i8> %a0, <64 x i8> %a1)1342  ret <64 x i8> %21343}1344 1345define <64 x i8> @stack_fold_paddusb_commuted(<64 x i8> %a0, <64 x i8> %a1) {1346; CHECK-LABEL: stack_fold_paddusb_commuted:1347; CHECK:       # %bb.0:1348; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1349; CHECK-NEXT:    #APP1350; CHECK-NEXT:    nop1351; CHECK-NEXT:    #NO_APP1352; CHECK-NEXT:    vpaddusb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload1353; CHECK-NEXT:    retq1354  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1355  %2 = call <64 x i8> @llvm.uadd.sat.v64i8(<64 x i8> %a1, <64 x i8> %a0)1356  ret <64 x i8> %21357}1358 1359define <64 x i8> @stack_fold_paddusb_mask(<64 x i8> %a0, <64 x i8> %a1, ptr %a2, i64 %mask) {1360; CHECK-LABEL: stack_fold_paddusb_mask:1361; CHECK:       # %bb.0:1362; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1363; CHECK-NEXT:    vmovdqa64 %zmm0, %zmm11364; CHECK-NEXT:    #APP1365; CHECK-NEXT:    nop1366; CHECK-NEXT:    #NO_APP1367; CHECK-NEXT:    kmovq %rsi, %k11368; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm01369; CHECK-NEXT:    vpaddusb {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload1370; CHECK-NEXT:    retq1371  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1372  %2 = call <64 x i8> @llvm.uadd.sat.v64i8(<64 x i8> %a0, <64 x i8> %a1)1373  %3 = bitcast i64 %mask to <64 x i1>1374  ; load needed to keep the operation from being scheduled about the asm block1375  %4 = load <64 x i8>, ptr %a21376  %5 = select <64 x i1> %3, <64 x i8> %2, <64 x i8> %41377  ret <64 x i8> %51378}1379 1380define <64 x i8> @stack_fold_paddusb_mask_commuted(<64 x i8> %a0, <64 x i8> %a1, ptr %a2, i64 %mask) {1381; CHECK-LABEL: stack_fold_paddusb_mask_commuted:1382; CHECK:       # %bb.0:1383; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1384; CHECK-NEXT:    vmovdqa64 %zmm0, %zmm11385; CHECK-NEXT:    #APP1386; CHECK-NEXT:    nop1387; CHECK-NEXT:    #NO_APP1388; CHECK-NEXT:    kmovq %rsi, %k11389; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm01390; CHECK-NEXT:    vpaddusb {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload1391; CHECK-NEXT:    retq1392  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1393  %2 = call <64 x i8> @llvm.uadd.sat.v64i8(<64 x i8> %a1, <64 x i8> %a0)1394  %3 = bitcast i64 %mask to <64 x i1>1395  ; load needed to keep the operation from being scheduled about the asm block1396  %4 = load <64 x i8>, ptr %a21397  %5 = select <64 x i1> %3, <64 x i8> %2, <64 x i8> %41398  ret <64 x i8> %51399}1400 1401define <64 x i8> @stack_fold_paddusb_maskz(<64 x i8> %a0, <64 x i8> %a1, i64 %mask) {1402; CHECK-LABEL: stack_fold_paddusb_maskz:1403; CHECK:       # %bb.0:1404; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1405; CHECK-NEXT:    #APP1406; CHECK-NEXT:    nop1407; CHECK-NEXT:    #NO_APP1408; CHECK-NEXT:    kmovq %rdi, %k11409; CHECK-NEXT:    vpaddusb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload1410; CHECK-NEXT:    retq1411  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1412  %2 = call <64 x i8> @llvm.uadd.sat.v64i8(<64 x i8> %a0, <64 x i8> %a1)1413  %3 = bitcast i64 %mask to <64 x i1>1414  %4 = select <64 x i1> %3, <64 x i8> %2, <64 x i8> zeroinitializer1415  ret <64 x i8> %41416}1417 1418define <64 x i8> @stack_fold_paddusb_maskz_commuted(<64 x i8> %a0, <64 x i8> %a1, i64 %mask) {1419; CHECK-LABEL: stack_fold_paddusb_maskz_commuted:1420; CHECK:       # %bb.0:1421; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1422; CHECK-NEXT:    #APP1423; CHECK-NEXT:    nop1424; CHECK-NEXT:    #NO_APP1425; CHECK-NEXT:    kmovq %rdi, %k11426; CHECK-NEXT:    vpaddusb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload1427; CHECK-NEXT:    retq1428  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1429  %2 = call <64 x i8> @llvm.uadd.sat.v64i8(<64 x i8> %a1, <64 x i8> %a0)1430  %3 = bitcast i64 %mask to <64 x i1>1431  %4 = select <64 x i1> %3, <64 x i8> %2, <64 x i8> zeroinitializer1432  ret <64 x i8> %41433}1434 1435define <32 x i16> @stack_fold_paddusw(<32 x i16> %a0, <32 x i16> %a1) {1436; CHECK-LABEL: stack_fold_paddusw:1437; CHECK:       # %bb.0:1438; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1439; CHECK-NEXT:    #APP1440; CHECK-NEXT:    nop1441; CHECK-NEXT:    #NO_APP1442; CHECK-NEXT:    vpaddusw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload1443; CHECK-NEXT:    retq1444  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1445  %2 = call <32 x i16> @llvm.uadd.sat.v32i16(<32 x i16> %a0, <32 x i16> %a1)1446  ret <32 x i16> %21447}1448 1449define <32 x i16> @stack_fold_paddusw_commuted(<32 x i16> %a0, <32 x i16> %a1) {1450; CHECK-LABEL: stack_fold_paddusw_commuted:1451; CHECK:       # %bb.0:1452; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1453; CHECK-NEXT:    #APP1454; CHECK-NEXT:    nop1455; CHECK-NEXT:    #NO_APP1456; CHECK-NEXT:    vpaddusw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload1457; CHECK-NEXT:    retq1458  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1459  %2 = call <32 x i16> @llvm.uadd.sat.v32i16(<32 x i16> %a1, <32 x i16> %a0)1460  ret <32 x i16> %21461}1462 1463define <32 x i16> @stack_fold_paddusw_mask(<32 x i16> %a0, <32 x i16> %a1, ptr %a2, i32 %mask) {1464; CHECK-LABEL: stack_fold_paddusw_mask:1465; CHECK:       # %bb.0:1466; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1467; CHECK-NEXT:    vmovdqa64 %zmm0, %zmm11468; CHECK-NEXT:    #APP1469; CHECK-NEXT:    nop1470; CHECK-NEXT:    #NO_APP1471; CHECK-NEXT:    kmovd %esi, %k11472; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm01473; CHECK-NEXT:    vpaddusw {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload1474; CHECK-NEXT:    retq1475  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1476  %2 = call <32 x i16> @llvm.uadd.sat.v32i16(<32 x i16> %a0, <32 x i16> %a1)1477  %3 = bitcast i32 %mask to <32 x i1>1478  ; load needed to keep the operation from being scheduled about the asm block1479  %4 = load <32 x i16>, ptr %a21480  %5 = select <32 x i1> %3, <32 x i16> %2, <32 x i16> %41481  ret <32 x i16> %51482}1483 1484define <32 x i16> @stack_fold_paddusw_mask_commuted(<32 x i16> %a0, <32 x i16> %a1, ptr %a2, i32 %mask) {1485; CHECK-LABEL: stack_fold_paddusw_mask_commuted:1486; CHECK:       # %bb.0:1487; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1488; CHECK-NEXT:    vmovdqa64 %zmm0, %zmm11489; CHECK-NEXT:    #APP1490; CHECK-NEXT:    nop1491; CHECK-NEXT:    #NO_APP1492; CHECK-NEXT:    kmovd %esi, %k11493; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm01494; CHECK-NEXT:    vpaddusw {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload1495; CHECK-NEXT:    retq1496  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1497  %2 = call <32 x i16> @llvm.uadd.sat.v32i16(<32 x i16> %a1, <32 x i16> %a0)1498  %3 = bitcast i32 %mask to <32 x i1>1499  ; load needed to keep the operation from being scheduled about the asm block1500  %4 = load <32 x i16>, ptr %a21501  %5 = select <32 x i1> %3, <32 x i16> %2, <32 x i16> %41502  ret <32 x i16> %51503}1504 1505define <32 x i16> @stack_fold_paddusw_maskz(<32 x i16> %a0, <32 x i16> %a1, i32 %mask) {1506; CHECK-LABEL: stack_fold_paddusw_maskz:1507; CHECK:       # %bb.0:1508; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1509; CHECK-NEXT:    #APP1510; CHECK-NEXT:    nop1511; CHECK-NEXT:    #NO_APP1512; CHECK-NEXT:    kmovd %edi, %k11513; CHECK-NEXT:    vpaddusw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload1514; CHECK-NEXT:    retq1515  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1516  %2 = call <32 x i16> @llvm.uadd.sat.v32i16(<32 x i16> %a0, <32 x i16> %a1)1517  %3 = bitcast i32 %mask to <32 x i1>1518  %4 = select <32 x i1> %3, <32 x i16> %2, <32 x i16> zeroinitializer1519  ret <32 x i16> %41520}1521 1522define <32 x i16> @stack_fold_paddusw_maskz_commuted(<32 x i16> %a0, <32 x i16> %a1, i32 %mask) {1523; CHECK-LABEL: stack_fold_paddusw_maskz_commuted:1524; CHECK:       # %bb.0:1525; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1526; CHECK-NEXT:    #APP1527; CHECK-NEXT:    nop1528; CHECK-NEXT:    #NO_APP1529; CHECK-NEXT:    kmovd %edi, %k11530; CHECK-NEXT:    vpaddusw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload1531; CHECK-NEXT:    retq1532  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1533  %2 = call <32 x i16> @llvm.uadd.sat.v32i16(<32 x i16> %a1, <32 x i16> %a0)1534  %3 = bitcast i32 %mask to <32 x i1>1535  %4 = select <32 x i1> %3, <32 x i16> %2, <32 x i16> zeroinitializer1536  ret <32 x i16> %41537}1538 1539define <32 x i16> @stack_fold_paddw(<32 x i16> %a0, <32 x i16> %a1) {1540; CHECK-LABEL: stack_fold_paddw:1541; CHECK:       # %bb.0:1542; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1543; CHECK-NEXT:    #APP1544; CHECK-NEXT:    nop1545; CHECK-NEXT:    #NO_APP1546; CHECK-NEXT:    vpaddw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload1547; CHECK-NEXT:    retq1548  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1549  %2 = add <32 x i16> %a0, %a11550  ret <32 x i16> %21551}1552 1553define <32 x i16> @stack_fold_paddw_commuted(<32 x i16> %a0, <32 x i16> %a1) {1554; CHECK-LABEL: stack_fold_paddw_commuted:1555; CHECK:       # %bb.0:1556; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1557; CHECK-NEXT:    #APP1558; CHECK-NEXT:    nop1559; CHECK-NEXT:    #NO_APP1560; CHECK-NEXT:    vpaddw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload1561; CHECK-NEXT:    retq1562  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1563  %2 = add <32 x i16> %a1, %a01564  ret <32 x i16> %21565}1566 1567define <32 x i16> @stack_fold_paddw_mask(<32 x i16> %a0, <32 x i16> %a1, ptr %a2, i32 %mask) {1568; CHECK-LABEL: stack_fold_paddw_mask:1569; CHECK:       # %bb.0:1570; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1571; CHECK-NEXT:    vmovdqa64 %zmm0, %zmm11572; CHECK-NEXT:    #APP1573; CHECK-NEXT:    nop1574; CHECK-NEXT:    #NO_APP1575; CHECK-NEXT:    kmovd %esi, %k11576; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm01577; CHECK-NEXT:    vpaddw {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload1578; CHECK-NEXT:    retq1579  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1580  %2 = add <32 x i16> %a0, %a11581  %3 = bitcast i32 %mask to <32 x i1>1582  ; load needed to keep the operation from being scheduled about the asm block1583  %4 = load <32 x i16>, ptr %a21584  %5 = select <32 x i1> %3, <32 x i16> %2, <32 x i16> %41585  ret <32 x i16> %51586}1587 1588define <32 x i16> @stack_fold_paddw_mask_commuted(<32 x i16> %a0, <32 x i16> %a1, ptr %a2, i32 %mask) {1589; CHECK-LABEL: stack_fold_paddw_mask_commuted:1590; CHECK:       # %bb.0:1591; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1592; CHECK-NEXT:    vmovdqa64 %zmm0, %zmm11593; CHECK-NEXT:    #APP1594; CHECK-NEXT:    nop1595; CHECK-NEXT:    #NO_APP1596; CHECK-NEXT:    kmovd %esi, %k11597; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm01598; CHECK-NEXT:    vpaddw {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload1599; CHECK-NEXT:    retq1600  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1601  %2 = add <32 x i16> %a1, %a01602  %3 = bitcast i32 %mask to <32 x i1>1603  ; load needed to keep the operation from being scheduled about the asm block1604  %4 = load <32 x i16>, ptr %a21605  %5 = select <32 x i1> %3, <32 x i16> %2, <32 x i16> %41606  ret <32 x i16> %51607}1608 1609define <32 x i16> @stack_fold_paddw_maskz(<32 x i16> %a0, <32 x i16> %a1, i32 %mask) {1610; CHECK-LABEL: stack_fold_paddw_maskz:1611; CHECK:       # %bb.0:1612; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1613; CHECK-NEXT:    #APP1614; CHECK-NEXT:    nop1615; CHECK-NEXT:    #NO_APP1616; CHECK-NEXT:    kmovd %edi, %k11617; CHECK-NEXT:    vpaddw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload1618; CHECK-NEXT:    retq1619  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1620  %2 = add <32 x i16> %a0, %a11621  %3 = bitcast i32 %mask to <32 x i1>1622  %4 = select <32 x i1> %3, <32 x i16> %2, <32 x i16> zeroinitializer1623  ret <32 x i16> %41624}1625 1626define <32 x i16> @stack_fold_paddw_maskz_commuted(<32 x i16> %a0, <32 x i16> %a1, i32 %mask) {1627; CHECK-LABEL: stack_fold_paddw_maskz_commuted:1628; CHECK:       # %bb.0:1629; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1630; CHECK-NEXT:    #APP1631; CHECK-NEXT:    nop1632; CHECK-NEXT:    #NO_APP1633; CHECK-NEXT:    kmovd %edi, %k11634; CHECK-NEXT:    vpaddw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload1635; CHECK-NEXT:    retq1636  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1637  %2 = add <32 x i16> %a1, %a01638  %3 = bitcast i32 %mask to <32 x i1>1639  %4 = select <32 x i1> %3, <32 x i16> %2, <32 x i16> zeroinitializer1640  ret <32 x i16> %41641}1642 1643define <64 x i8> @stack_fold_palignr(<64 x i8> %a0, <64 x i8> %a1) {1644; CHECK-LABEL: stack_fold_palignr:1645; CHECK:       # %bb.0:1646; CHECK-NEXT:    pushq %rax1647; CHECK-NEXT:    .cfi_def_cfa_offset 161648; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1649; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1650; CHECK-NEXT:    #APP1651; CHECK-NEXT:    nop1652; CHECK-NEXT:    #NO_APP1653; CHECK-NEXT:    vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload1654; CHECK-NEXT:    vpalignr $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload1655; CHECK-NEXT:    # zmm0 = mem[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],zmm0[0],mem[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],zmm0[16],mem[33,34,35,36,37,38,39,40,41,42,43,44,45,46,47],zmm0[32],mem[49,50,51,52,53,54,55,56,57,58,59,60,61,62,63],zmm0[48]1656; CHECK-NEXT:    popq %rax1657; CHECK-NEXT:    .cfi_def_cfa_offset 81658; CHECK-NEXT:    retq1659  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1660  %2 = shufflevector <64 x i8> %a1, <64 x i8> %a0, <64 x i32> <i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 64, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 80, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 96, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 112>1661  ret <64 x i8> %21662}1663 1664define <64 x i8> @stack_fold_palignr_mask(<64 x i8> %a0, <64 x i8> %a1, ptr %passthru, i64 %mask) {1665; CHECK-LABEL: stack_fold_palignr_mask:1666; CHECK:       # %bb.0:1667; CHECK-NEXT:    pushq %rax1668; CHECK-NEXT:    .cfi_def_cfa_offset 161669; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1670; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1671; CHECK-NEXT:    #APP1672; CHECK-NEXT:    nop1673; CHECK-NEXT:    #NO_APP1674; CHECK-NEXT:    kmovq %rsi, %k11675; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm11676; CHECK-NEXT:    vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload1677; CHECK-NEXT:    vpalignr $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm1 {%k1} # 64-byte Folded Reload1678; CHECK-NEXT:    # zmm1 {%k1} = mem[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],zmm0[0],mem[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],zmm0[16],mem[33,34,35,36,37,38,39,40,41,42,43,44,45,46,47],zmm0[32],mem[49,50,51,52,53,54,55,56,57,58,59,60,61,62,63],zmm0[48]1679; CHECK-NEXT:    vmovdqa64 %zmm1, %zmm01680; CHECK-NEXT:    popq %rax1681; CHECK-NEXT:    .cfi_def_cfa_offset 81682; CHECK-NEXT:    retq1683  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1684  %2 = shufflevector <64 x i8> %a1, <64 x i8> %a0, <64 x i32> <i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 64, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 80, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 96, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 112>1685  %3 = bitcast i64 %mask to <64 x i1>1686  %4 = load <64 x i8>, ptr %passthru1687  %5 = select <64 x i1> %3, <64 x i8> %2, <64 x i8> %41688  ret <64 x i8> %51689}1690 1691define <64 x i8> @stack_fold_palignr_maskz(<64 x i8> %a0, <64 x i8> %a1, i64 %mask) {1692; CHECK-LABEL: stack_fold_palignr_maskz:1693; CHECK:       # %bb.0:1694; CHECK-NEXT:    pushq %rax1695; CHECK-NEXT:    .cfi_def_cfa_offset 161696; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1697; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1698; CHECK-NEXT:    #APP1699; CHECK-NEXT:    nop1700; CHECK-NEXT:    #NO_APP1701; CHECK-NEXT:    kmovq %rdi, %k11702; CHECK-NEXT:    vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload1703; CHECK-NEXT:    vpalignr $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload1704; CHECK-NEXT:    # zmm0 {%k1} {z} = mem[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],zmm0[0],mem[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],zmm0[16],mem[33,34,35,36,37,38,39,40,41,42,43,44,45,46,47],zmm0[32],mem[49,50,51,52,53,54,55,56,57,58,59,60,61,62,63],zmm0[48]1705; CHECK-NEXT:    popq %rax1706; CHECK-NEXT:    .cfi_def_cfa_offset 81707; CHECK-NEXT:    retq1708  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1709  %2 = shufflevector <64 x i8> %a1, <64 x i8> %a0, <64 x i32> <i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 64, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 80, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 96, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 112>1710  %3 = bitcast i64 %mask to <64 x i1>1711  %4 = select <64 x i1> %3, <64 x i8> %2, <64 x i8> zeroinitializer1712  ret <64 x i8> %41713}1714 1715define <16 x i32> @stack_fold_pandd(<16 x i32> %a0, <16 x i32> %a1) {1716; CHECK-LABEL: stack_fold_pandd:1717; CHECK:       # %bb.0:1718; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1719; CHECK-NEXT:    #APP1720; CHECK-NEXT:    nop1721; CHECK-NEXT:    #NO_APP1722; CHECK-NEXT:    vandps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload1723; CHECK-NEXT:    retq1724  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1725  %2 = and <16 x i32> %a0, %a11726  ret <16 x i32> %21727}1728 1729define <16 x i32> @stack_fold_pandd_commuted(<16 x i32> %a0, <16 x i32> %a1) {1730; CHECK-LABEL: stack_fold_pandd_commuted:1731; CHECK:       # %bb.0:1732; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1733; CHECK-NEXT:    #APP1734; CHECK-NEXT:    nop1735; CHECK-NEXT:    #NO_APP1736; CHECK-NEXT:    vandps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload1737; CHECK-NEXT:    retq1738  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1739  %2 = and <16 x i32> %a1, %a01740  ret <16 x i32> %21741}1742 1743define <16 x i32> @stack_fold_pandd_mask(<16 x i32> %a0, <16 x i32> %a1, ptr %a2, i16 %mask) {1744; CHECK-LABEL: stack_fold_pandd_mask:1745; CHECK:       # %bb.0:1746; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1747; CHECK-NEXT:    vmovaps %zmm0, %zmm11748; CHECK-NEXT:    #APP1749; CHECK-NEXT:    nop1750; CHECK-NEXT:    #NO_APP1751; CHECK-NEXT:    kmovd %esi, %k11752; CHECK-NEXT:    vmovaps (%rdi), %zmm01753; CHECK-NEXT:    vandps {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload1754; CHECK-NEXT:    retq1755  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1756  %2 = and <16 x i32> %a0, %a11757  %3 = bitcast i16 %mask to <16 x i1>1758  ; load needed to keep the operation from being scheduled about the asm block1759  %4 = load <16 x i32>, ptr %a21760  %5 = select <16 x i1> %3, <16 x i32> %2, <16 x i32> %41761  ret <16 x i32> %51762}1763 1764define <16 x i32> @stack_fold_pandd_mask_commuted(<16 x i32> %a0, <16 x i32> %a1, ptr %a2, i16 %mask) {1765; CHECK-LABEL: stack_fold_pandd_mask_commuted:1766; CHECK:       # %bb.0:1767; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1768; CHECK-NEXT:    vmovaps %zmm0, %zmm11769; CHECK-NEXT:    #APP1770; CHECK-NEXT:    nop1771; CHECK-NEXT:    #NO_APP1772; CHECK-NEXT:    kmovd %esi, %k11773; CHECK-NEXT:    vmovaps (%rdi), %zmm01774; CHECK-NEXT:    vandps {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload1775; CHECK-NEXT:    retq1776  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1777  %2 = and <16 x i32> %a1, %a01778  %3 = bitcast i16 %mask to <16 x i1>1779  ; load needed to keep the operation from being scheduled about the asm block1780  %4 = load <16 x i32>, ptr %a21781  %5 = select <16 x i1> %3, <16 x i32> %2, <16 x i32> %41782  ret <16 x i32> %51783}1784 1785define <16 x i32> @stack_fold_pandd_maskz(<16 x i32> %a0, <16 x i32> %a1, i16 %mask) {1786; CHECK-LABEL: stack_fold_pandd_maskz:1787; CHECK:       # %bb.0:1788; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1789; CHECK-NEXT:    #APP1790; CHECK-NEXT:    nop1791; CHECK-NEXT:    #NO_APP1792; CHECK-NEXT:    kmovd %edi, %k11793; CHECK-NEXT:    vandps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload1794; CHECK-NEXT:    retq1795  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1796  %2 = and <16 x i32> %a0, %a11797  %3 = bitcast i16 %mask to <16 x i1>1798  %4 = select <16 x i1> %3, <16 x i32> %2, <16 x i32> zeroinitializer1799  ret <16 x i32> %41800}1801 1802define <16 x i32> @stack_fold_pandd_maskz_commuted(<16 x i32> %a0, <16 x i32> %a1, i16 %mask) {1803; CHECK-LABEL: stack_fold_pandd_maskz_commuted:1804; CHECK:       # %bb.0:1805; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1806; CHECK-NEXT:    #APP1807; CHECK-NEXT:    nop1808; CHECK-NEXT:    #NO_APP1809; CHECK-NEXT:    kmovd %edi, %k11810; CHECK-NEXT:    vandps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload1811; CHECK-NEXT:    retq1812  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1813  %2 = and <16 x i32> %a1, %a01814  %3 = bitcast i16 %mask to <16 x i1>1815  %4 = select <16 x i1> %3, <16 x i32> %2, <16 x i32> zeroinitializer1816  ret <16 x i32> %41817}1818 1819define <8 x i64> @stack_fold_pandq(<8 x i64> %a0, <8 x i64> %a1) {1820; CHECK-LABEL: stack_fold_pandq:1821; CHECK:       # %bb.0:1822; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1823; CHECK-NEXT:    #APP1824; CHECK-NEXT:    nop1825; CHECK-NEXT:    #NO_APP1826; CHECK-NEXT:    vandps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload1827; CHECK-NEXT:    retq1828  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1829  %2 = and <8 x i64> %a0, %a11830  ret <8 x i64> %21831}1832 1833define <8 x i64> @stack_fold_pandq_commuted(<8 x i64> %a0, <8 x i64> %a1) {1834; CHECK-LABEL: stack_fold_pandq_commuted:1835; CHECK:       # %bb.0:1836; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1837; CHECK-NEXT:    #APP1838; CHECK-NEXT:    nop1839; CHECK-NEXT:    #NO_APP1840; CHECK-NEXT:    vandps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload1841; CHECK-NEXT:    retq1842  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1843  %2 = and <8 x i64> %a1, %a01844  ret <8 x i64> %21845}1846 1847define <8 x i64> @stack_fold_pandq_mask(<8 x i64> %a0, <8 x i64> %a1, ptr %a2, i8 %mask) {1848; CHECK-LABEL: stack_fold_pandq_mask:1849; CHECK:       # %bb.0:1850; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1851; CHECK-NEXT:    vmovapd %zmm0, %zmm11852; CHECK-NEXT:    #APP1853; CHECK-NEXT:    nop1854; CHECK-NEXT:    #NO_APP1855; CHECK-NEXT:    kmovd %esi, %k11856; CHECK-NEXT:    vmovapd (%rdi), %zmm01857; CHECK-NEXT:    vandpd {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload1858; CHECK-NEXT:    retq1859  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1860  %2 = and <8 x i64> %a0, %a11861  %3 = bitcast i8 %mask to <8 x i1>1862  ; load needed to keep the operation from being scheduled about the asm block1863  %4 = load <8 x i64>, ptr %a21864  %5 = select <8 x i1> %3, <8 x i64> %2, <8 x i64> %41865  ret <8 x i64> %51866}1867 1868define <8 x i64> @stack_fold_pandq_mask_commuted(<8 x i64> %a0, <8 x i64> %a1, ptr %a2, i8 %mask) {1869; CHECK-LABEL: stack_fold_pandq_mask_commuted:1870; CHECK:       # %bb.0:1871; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1872; CHECK-NEXT:    vmovapd %zmm0, %zmm11873; CHECK-NEXT:    #APP1874; CHECK-NEXT:    nop1875; CHECK-NEXT:    #NO_APP1876; CHECK-NEXT:    kmovd %esi, %k11877; CHECK-NEXT:    vmovapd (%rdi), %zmm01878; CHECK-NEXT:    vandpd {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload1879; CHECK-NEXT:    retq1880  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1881  %2 = and <8 x i64> %a1, %a01882  %3 = bitcast i8 %mask to <8 x i1>1883  ; load needed to keep the operation from being scheduled about the asm block1884  %4 = load <8 x i64>, ptr %a21885  %5 = select <8 x i1> %3, <8 x i64> %2, <8 x i64> %41886  ret <8 x i64> %51887}1888 1889define <8 x i64> @stack_fold_pandq_maskz(<8 x i64> %a0, <8 x i64> %a1, i8 %mask) {1890; CHECK-LABEL: stack_fold_pandq_maskz:1891; CHECK:       # %bb.0:1892; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1893; CHECK-NEXT:    #APP1894; CHECK-NEXT:    nop1895; CHECK-NEXT:    #NO_APP1896; CHECK-NEXT:    kmovd %edi, %k11897; CHECK-NEXT:    vandpd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload1898; CHECK-NEXT:    retq1899  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1900  %2 = and <8 x i64> %a0, %a11901  %3 = bitcast i8 %mask to <8 x i1>1902  %4 = select <8 x i1> %3, <8 x i64> %2, <8 x i64> zeroinitializer1903  ret <8 x i64> %41904}1905 1906define <8 x i64> @stack_fold_pandq_maskz_commuted(<8 x i64> %a0, <8 x i64> %a1, i8 %mask) {1907; CHECK-LABEL: stack_fold_pandq_maskz_commuted:1908; CHECK:       # %bb.0:1909; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1910; CHECK-NEXT:    #APP1911; CHECK-NEXT:    nop1912; CHECK-NEXT:    #NO_APP1913; CHECK-NEXT:    kmovd %edi, %k11914; CHECK-NEXT:    vandpd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload1915; CHECK-NEXT:    retq1916  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1917  %2 = and <8 x i64> %a1, %a01918  %3 = bitcast i8 %mask to <8 x i1>1919  %4 = select <8 x i1> %3, <8 x i64> %2, <8 x i64> zeroinitializer1920  ret <8 x i64> %41921}1922 1923define <16 x i32> @stack_fold_vpconflictd(<16 x i32> %a0) {1924; CHECK-LABEL: stack_fold_vpconflictd:1925; CHECK:       # %bb.0:1926; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1927; CHECK-NEXT:    #APP1928; CHECK-NEXT:    nop1929; CHECK-NEXT:    #NO_APP1930; CHECK-NEXT:    vpconflictd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Folded Reload1931; CHECK-NEXT:    retq1932  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1933  %2 = call <16 x i32> @llvm.x86.avx512.conflict.d.512(<16 x i32> %a0)1934  ret <16 x i32> %21935}1936declare <16 x i32> @llvm.x86.avx512.mask.conflict.d.512(<16 x i32>, <16 x i32>, i16) nounwind readonly1937 1938define <8 x i64> @stack_fold_vpconflictq(<8 x i64> %a0) {1939; CHECK-LABEL: stack_fold_vpconflictq:1940; CHECK:       # %bb.0:1941; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1942; CHECK-NEXT:    #APP1943; CHECK-NEXT:    nop1944; CHECK-NEXT:    #NO_APP1945; CHECK-NEXT:    vpconflictq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Folded Reload1946; CHECK-NEXT:    retq1947  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1948  %2 = call <8 x i64> @llvm.x86.avx512.conflict.q.512(<8 x i64> %a0)1949  ret <8 x i64> %21950}1951declare <8 x i64> @llvm.x86.avx512.mask.conflict.q.512(<8 x i64>, <8 x i64>, i8) nounwind readnone1952 1953define i64 @stack_fold_pcmpeqb(<64 x i8> %a0, <64 x i8> %a1) {1954; CHECK-LABEL: stack_fold_pcmpeqb:1955; CHECK:       # %bb.0:1956; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1957; CHECK-NEXT:    #APP1958; CHECK-NEXT:    nop1959; CHECK-NEXT:    #NO_APP1960; CHECK-NEXT:    vpcmpeqb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %k0 # 64-byte Folded Reload1961; CHECK-NEXT:    kmovq %k0, %rax1962; CHECK-NEXT:    vzeroupper1963; CHECK-NEXT:    retq1964  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1965  %2 = icmp eq <64 x i8> %a0, %a11966  %3 = bitcast <64 x i1> %2 to i641967  ret i64 %31968}1969 1970define i16 @stack_fold_pcmpeqd(<16 x i32> %a0, <16 x i32> %a1) {1971; CHECK-LABEL: stack_fold_pcmpeqd:1972; CHECK:       # %bb.0:1973; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1974; CHECK-NEXT:    #APP1975; CHECK-NEXT:    nop1976; CHECK-NEXT:    #NO_APP1977; CHECK-NEXT:    vpcmpeqd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %k0 # 64-byte Folded Reload1978; CHECK-NEXT:    kmovd %k0, %eax1979; CHECK-NEXT:    # kill: def $ax killed $ax killed $eax1980; CHECK-NEXT:    vzeroupper1981; CHECK-NEXT:    retq1982  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1983  %2 = icmp eq <16 x i32> %a0, %a11984  %3 = bitcast <16 x i1> %2 to i161985  ret i16 %31986}1987 1988define i8 @stack_fold_pcmpeqq(<8 x i64> %a0, <8 x i64> %a1) {1989; CHECK-LABEL: stack_fold_pcmpeqq:1990; CHECK:       # %bb.0:1991; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1992; CHECK-NEXT:    #APP1993; CHECK-NEXT:    nop1994; CHECK-NEXT:    #NO_APP1995; CHECK-NEXT:    vpcmpeqq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %k0 # 64-byte Folded Reload1996; CHECK-NEXT:    kmovd %k0, %eax1997; CHECK-NEXT:    # kill: def $al killed $al killed $eax1998; CHECK-NEXT:    vzeroupper1999; CHECK-NEXT:    retq2000  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2001  %2 = icmp eq <8 x i64> %a0, %a12002  %3 = bitcast <8 x i1> %2 to i82003  ret i8 %32004}2005 2006define i32 @stack_fold_pcmpeqw(<32 x i16> %a0, <32 x i16> %a1) {2007; CHECK-LABEL: stack_fold_pcmpeqw:2008; CHECK:       # %bb.0:2009; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2010; CHECK-NEXT:    #APP2011; CHECK-NEXT:    nop2012; CHECK-NEXT:    #NO_APP2013; CHECK-NEXT:    vpcmpeqw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %k0 # 64-byte Folded Reload2014; CHECK-NEXT:    kmovd %k0, %eax2015; CHECK-NEXT:    vzeroupper2016; CHECK-NEXT:    retq2017  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2018  %2 = icmp eq <32 x i16> %a0, %a12019  %3 = bitcast <32 x i1> %2 to i322020  ret i32 %32021}2022 2023define <16 x i32> @stack_fold_pcmpeqd_mask(<16 x i32> %a0, <16 x i32> %a1, ptr %a2, i16 %mask, <16 x i32> %b0, <16 x i32> %b1) {2024; CHECK-LABEL: stack_fold_pcmpeqd_mask:2025; CHECK:       # %bb.0:2026; CHECK-NEXT:    subq $136, %rsp2027; CHECK-NEXT:    .cfi_def_cfa_offset 1442028; CHECK-NEXT:    vmovups %zmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2029; CHECK-NEXT:    vmovups %zmm2, (%rsp) # 64-byte Spill2030; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2031; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2032; CHECK-NEXT:    #APP2033; CHECK-NEXT:    nop2034; CHECK-NEXT:    #NO_APP2035; CHECK-NEXT:    vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload2036; CHECK-NEXT:    vpaddd (%rdi), %zmm0, %zmm02037; CHECK-NEXT:    kmovd %esi, %k12038; CHECK-NEXT:    vpcmpeqd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %k1 {%k1} # 64-byte Folded Reload2039; CHECK-NEXT:    vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload2040; CHECK-NEXT:    vmovdqu64 (%rsp), %zmm1 # 64-byte Reload2041; CHECK-NEXT:    vmovdqa32 %zmm1, %zmm0 {%k1}2042; CHECK-NEXT:    addq $136, %rsp2043; CHECK-NEXT:    .cfi_def_cfa_offset 82044; CHECK-NEXT:    retq2045  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2046  ; load and add are here to keep the operations below the side effecting block and to avoid folding the wrong load2047  %2 = load <16 x i32>, ptr %a22048  %3 = add <16 x i32> %a1, %22049  %4 = bitcast i16 %mask to <16 x i1>2050  %5 = icmp eq <16 x i32> %3, %a02051  %6 = and <16 x i1> %4, %52052  %7 = select <16 x i1> %6, <16 x i32> %b0, <16 x i32> %b12053  ret <16 x i32> %72054}2055 2056define <16 x i32> @stack_fold_pcmpeqd_mask_commuted(<16 x i32> %a0, <16 x i32> %a1, ptr %a2, i16 %mask, <16 x i32> %b0, <16 x i32> %b1) {2057; CHECK-LABEL: stack_fold_pcmpeqd_mask_commuted:2058; CHECK:       # %bb.0:2059; CHECK-NEXT:    subq $136, %rsp2060; CHECK-NEXT:    .cfi_def_cfa_offset 1442061; CHECK-NEXT:    vmovups %zmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2062; CHECK-NEXT:    vmovups %zmm2, (%rsp) # 64-byte Spill2063; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2064; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2065; CHECK-NEXT:    #APP2066; CHECK-NEXT:    nop2067; CHECK-NEXT:    #NO_APP2068; CHECK-NEXT:    vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload2069; CHECK-NEXT:    vpaddd (%rdi), %zmm0, %zmm02070; CHECK-NEXT:    kmovd %esi, %k12071; CHECK-NEXT:    vpcmpeqd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %k1 {%k1} # 64-byte Folded Reload2072; CHECK-NEXT:    vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload2073; CHECK-NEXT:    vmovdqu64 (%rsp), %zmm1 # 64-byte Reload2074; CHECK-NEXT:    vmovdqa32 %zmm1, %zmm0 {%k1}2075; CHECK-NEXT:    addq $136, %rsp2076; CHECK-NEXT:    .cfi_def_cfa_offset 82077; CHECK-NEXT:    retq2078  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2079  ; load and add are here to keep the operations below the side effecting block and to avoid folding the wrong load2080  %2 = load <16 x i32>, ptr %a22081  %3 = add <16 x i32> %a1, %22082  %4 = bitcast i16 %mask to <16 x i1>2083  %5 = icmp eq <16 x i32> %a0, %32084  %6 = and <16 x i1> %4, %52085  %7 = select <16 x i1> %6, <16 x i32> %b0, <16 x i32> %b12086  ret <16 x i32> %72087}2088 2089define <16 x i32> @stack_fold_pcmpled_mask(<16 x i32> %a0, <16 x i32> %a1, ptr %a2, i16 %mask, <16 x i32> %b0, <16 x i32> %b1) {2090; CHECK-LABEL: stack_fold_pcmpled_mask:2091; CHECK:       # %bb.0:2092; CHECK-NEXT:    subq $136, %rsp2093; CHECK-NEXT:    .cfi_def_cfa_offset 1442094; CHECK-NEXT:    vmovups %zmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2095; CHECK-NEXT:    vmovups %zmm2, (%rsp) # 64-byte Spill2096; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2097; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2098; CHECK-NEXT:    #APP2099; CHECK-NEXT:    nop2100; CHECK-NEXT:    #NO_APP2101; CHECK-NEXT:    vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload2102; CHECK-NEXT:    vpaddd (%rdi), %zmm0, %zmm02103; CHECK-NEXT:    kmovd %esi, %k12104; CHECK-NEXT:    vpcmpled {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %k1 {%k1} # 64-byte Folded Reload2105; CHECK-NEXT:    vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload2106; CHECK-NEXT:    vmovdqu64 (%rsp), %zmm1 # 64-byte Reload2107; CHECK-NEXT:    vmovdqa32 %zmm1, %zmm0 {%k1}2108; CHECK-NEXT:    addq $136, %rsp2109; CHECK-NEXT:    .cfi_def_cfa_offset 82110; CHECK-NEXT:    retq2111  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2112  ; load and add are here to keep the operations below the side effecting block and to avoid folding the wrong load2113  %2 = load <16 x i32>, ptr %a22114  %3 = add <16 x i32> %a1, %22115  %4 = bitcast i16 %mask to <16 x i1>2116  %5 = icmp sge <16 x i32> %a0, %32117  %6 = and <16 x i1> %4, %52118  %7 = select <16 x i1> %6, <16 x i32> %b0, <16 x i32> %b12119  ret <16 x i32> %72120}2121 2122define i16 @stack_fold_pcmpleud(<16 x i32> %a0, <16 x i32> %a1, ptr %a2, i16 %mask) {2123; CHECK-LABEL: stack_fold_pcmpleud:2124; CHECK:       # %bb.0:2125; CHECK-NEXT:    pushq %rax2126; CHECK-NEXT:    .cfi_def_cfa_offset 162127; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2128; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2129; CHECK-NEXT:    #APP2130; CHECK-NEXT:    nop2131; CHECK-NEXT:    #NO_APP2132; CHECK-NEXT:    vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload2133; CHECK-NEXT:    vpaddd (%rdi), %zmm0, %zmm02134; CHECK-NEXT:    vpcmpleud {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %k0 # 64-byte Folded Reload2135; CHECK-NEXT:    kmovd %k0, %eax2136; CHECK-NEXT:    andl %esi, %eax2137; CHECK-NEXT:    # kill: def $ax killed $ax killed $eax2138; CHECK-NEXT:    popq %rcx2139; CHECK-NEXT:    .cfi_def_cfa_offset 82140; CHECK-NEXT:    vzeroupper2141; CHECK-NEXT:    retq2142  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2143  %2 = load <16 x i32>, ptr %a22144  %3 = add <16 x i32> %a1, %22145  %4 = bitcast i16 %mask to <16 x i1>2146  %5 = icmp uge <16 x i32> %a0, %32147  %6 = and <16 x i1> %5, %42148  %7 = bitcast <16 x i1> %6 to i162149  ret i16 %72150}2151 2152define <64 x i8> @stack_fold_permbvar(<64 x i8> %a0, <64 x i8> %a1) {2153; CHECK-LABEL: stack_fold_permbvar:2154; CHECK:       # %bb.0:2155; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2156; CHECK-NEXT:    #APP2157; CHECK-NEXT:    nop2158; CHECK-NEXT:    #NO_APP2159; CHECK-NEXT:    vpermb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload2160; CHECK-NEXT:    retq2161  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2162  %2 = call <64 x i8> @llvm.x86.avx512.permvar.qi.512(<64 x i8> %a1, <64 x i8> %a0)2163  ret <64 x i8> %22164}2165declare <64 x i8> @llvm.x86.avx512.permvar.qi.512(<64 x i8>, <64 x i8>) nounwind readonly2166 2167define <64 x i8> @stack_fold_permbvar_mask(ptr %passthru, <64 x i8> %a0, <64 x i8> %a1, i64 %mask) {2168; CHECK-LABEL: stack_fold_permbvar_mask:2169; CHECK:       # %bb.0:2170; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2171; CHECK-NEXT:    #APP2172; CHECK-NEXT:    nop2173; CHECK-NEXT:    #NO_APP2174; CHECK-NEXT:    kmovq %rsi, %k12175; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm22176; CHECK-NEXT:    vpermb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload2177; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm02178; CHECK-NEXT:    retq2179  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2180  %2 = call <64 x i8> @llvm.x86.avx512.permvar.qi.512(<64 x i8> %a1, <64 x i8> %a0)2181  %3 = bitcast i64 %mask to <64 x i1>2182  ; load needed to keep the operation from being scheduled above the asm block2183  %4 = load <64 x i8>, ptr %passthru2184  %5 = select <64 x i1> %3, <64 x i8> %2, <64 x i8> %42185  ret <64 x i8> %52186}2187 2188define <64 x i8> @stack_fold_permbvar_maskz(<64 x i8> %a0, <64 x i8> %a1, i64 %mask) {2189; CHECK-LABEL: stack_fold_permbvar_maskz:2190; CHECK:       # %bb.0:2191; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2192; CHECK-NEXT:    #APP2193; CHECK-NEXT:    nop2194; CHECK-NEXT:    #NO_APP2195; CHECK-NEXT:    kmovq %rdi, %k12196; CHECK-NEXT:    vpermb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload2197; CHECK-NEXT:    retq2198  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2199  %2 = call <64 x i8> @llvm.x86.avx512.permvar.qi.512(<64 x i8> %a1, <64 x i8> %a0)2200  %3 = bitcast i64 %mask to <64 x i1>2201  %4 = select <64 x i1> %3, <64 x i8> %2, <64 x i8> zeroinitializer2202  ret <64 x i8> %42203}2204 2205define <16 x i32> @stack_fold_permd(<16 x i32> %a0, <16 x i32> %a1) {2206; CHECK-LABEL: stack_fold_permd:2207; CHECK:       # %bb.0:2208; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2209; CHECK-NEXT:    #APP2210; CHECK-NEXT:    nop2211; CHECK-NEXT:    #NO_APP2212; CHECK-NEXT:    vpermd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload2213; CHECK-NEXT:    vpternlogd {{.*#+}} zmm1 = -12214; CHECK-NEXT:    vpsubd %zmm1, %zmm0, %zmm02215; CHECK-NEXT:    retq2216  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2217  %2 = call <16 x i32> @llvm.x86.avx512.permvar.si.512(<16 x i32> %a1, <16 x i32> %a0)2218  ; add forces execution domain2219  %3 = add <16 x i32> %2, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>2220  ret <16 x i32> %32221}2222declare <16 x i32> @llvm.x86.avx512.permvar.si.512(<16 x i32>, <16 x i32>) nounwind readonly2223 2224define <64 x i8> @stack_fold_vpermi2b(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2) {2225; CHECK-LABEL: stack_fold_vpermi2b:2226; CHECK:       # %bb.0:2227; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2228; CHECK-NEXT:    #APP2229; CHECK-NEXT:    nop2230; CHECK-NEXT:    #NO_APP2231; CHECK-NEXT:    vpermi2b {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload2232; CHECK-NEXT:    retq2233  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2234  %2 = call <64 x i8> @llvm.x86.avx512.vpermi2var.qi.512(<64 x i8> %x1, <64 x i8> %x0, <64 x i8> %x2)2235  ret <64 x i8> %22236}2237 2238define <16 x i32> @stack_fold_vpermi2d(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2) {2239; CHECK-LABEL: stack_fold_vpermi2d:2240; CHECK:       # %bb.0:2241; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2242; CHECK-NEXT:    #APP2243; CHECK-NEXT:    nop2244; CHECK-NEXT:    #NO_APP2245; CHECK-NEXT:    vpermi2d {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload2246; CHECK-NEXT:    retq2247  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2248  %2 = call <16 x i32> @llvm.x86.avx512.vpermi2var.d.512(<16 x i32> %x1, <16 x i32> %x0, <16 x i32> %x2)2249  ret <16 x i32> %22250}2251 2252define <8 x i64> @stack_fold_vpermi2q(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2) {2253; CHECK-LABEL: stack_fold_vpermi2q:2254; CHECK:       # %bb.0:2255; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2256; CHECK-NEXT:    #APP2257; CHECK-NEXT:    nop2258; CHECK-NEXT:    #NO_APP2259; CHECK-NEXT:    vpermi2q {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload2260; CHECK-NEXT:    retq2261  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2262  %2 = call <8 x i64> @llvm.x86.avx512.vpermi2var.q.512(<8 x i64> %x1, <8 x i64> %x0, <8 x i64> %x2)2263  ret <8 x i64> %22264}2265 2266define <32 x i16> @stack_fold_vpermi2w(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2) {2267; CHECK-LABEL: stack_fold_vpermi2w:2268; CHECK:       # %bb.0:2269; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2270; CHECK-NEXT:    #APP2271; CHECK-NEXT:    nop2272; CHECK-NEXT:    #NO_APP2273; CHECK-NEXT:    vpermi2w {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload2274; CHECK-NEXT:    retq2275  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2276  %2 = call <32 x i16> @llvm.x86.avx512.vpermi2var.hi.512(<32 x i16> %x1, <32 x i16> %x0, <32 x i16> %x2)2277  ret <32 x i16> %22278}2279 2280define <8 x i64> @stack_fold_permq(<8 x i64> %a0) {2281; CHECK-LABEL: stack_fold_permq:2282; CHECK:       # %bb.0:2283; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2284; CHECK-NEXT:    #APP2285; CHECK-NEXT:    nop2286; CHECK-NEXT:    #NO_APP2287; CHECK-NEXT:    vpermq $235, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Folded Reload2288; CHECK-NEXT:    # zmm0 = mem[3,2,2,3,7,6,6,7]2289; CHECK-NEXT:    vpternlogd {{.*#+}} zmm1 = -12290; CHECK-NEXT:    vpsubq %zmm1, %zmm0, %zmm02291; CHECK-NEXT:    retq2292  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2293  %2 = shufflevector <8 x i64> %a0, <8 x i64> undef, <8 x i32> <i32 3, i32 2, i32 2, i32 3, i32 7, i32 6, i32 6, i32 7>2294  ; add forces execution domain2295  %3 = add <8 x i64> %2, <i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1>2296  ret <8 x i64> %32297}2298 2299define <8 x i64> @stack_fold_permq_mask(ptr %passthru, <8 x i64> %a0, i8 %mask) {2300; CHECK-LABEL: stack_fold_permq_mask:2301; CHECK:       # %bb.0:2302; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2303; CHECK-NEXT:    #APP2304; CHECK-NEXT:    nop2305; CHECK-NEXT:    #NO_APP2306; CHECK-NEXT:    kmovd %esi, %k12307; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm02308; CHECK-NEXT:    vpermq $235, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 {%k1} # 64-byte Folded Reload2309; CHECK-NEXT:    # zmm0 {%k1} = mem[3,2,2,3,7,6,6,7]2310; CHECK-NEXT:    vpternlogd {{.*#+}} zmm1 = -12311; CHECK-NEXT:    vpsubq %zmm1, %zmm0, %zmm02312; CHECK-NEXT:    retq2313  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2314  %2 = shufflevector <8 x i64> %a0, <8 x i64> undef, <8 x i32> <i32 3, i32 2, i32 2, i32 3, i32 7, i32 6, i32 6, i32 7>2315  %3 = bitcast i8 %mask to <8 x i1>2316  ; load needed to keep the operation from being scheduled above the asm block2317  %4 = load <8 x i64>, ptr %passthru2318  %5 = select <8 x i1> %3, <8 x i64> %2, <8 x i64> %42319  ; add forces execution domain2320  %6 = add <8 x i64> %5, <i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1>2321  ret <8 x i64> %62322}2323 2324define <8 x i64> @stack_fold_permq_maskz(ptr %passthru, <8 x i64> %a0, i8 %mask) {2325; CHECK-LABEL: stack_fold_permq_maskz:2326; CHECK:       # %bb.0:2327; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2328; CHECK-NEXT:    #APP2329; CHECK-NEXT:    nop2330; CHECK-NEXT:    #NO_APP2331; CHECK-NEXT:    kmovd %esi, %k12332; CHECK-NEXT:    vpermq $235, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 {%k1} {z} # 64-byte Folded Reload2333; CHECK-NEXT:    # zmm0 {%k1} {z} = mem[3,2,2,3,7,6,6,7]2334; CHECK-NEXT:    retq2335  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2336  %2 = shufflevector <8 x i64> %a0, <8 x i64> undef, <8 x i32> <i32 3, i32 2, i32 2, i32 3, i32 7, i32 6, i32 6, i32 7>2337  %3 = bitcast i8 %mask to <8 x i1>2338  %4 = select <8 x i1> %3, <8 x i64> %2, <8 x i64> zeroinitializer2339  ret <8 x i64> %42340}2341 2342define <8 x i64> @stack_fold_permqvar(<8 x i64> %a0, <8 x i64> %a1) {2343; CHECK-LABEL: stack_fold_permqvar:2344; CHECK:       # %bb.0:2345; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2346; CHECK-NEXT:    #APP2347; CHECK-NEXT:    nop2348; CHECK-NEXT:    #NO_APP2349; CHECK-NEXT:    vpermq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload2350; CHECK-NEXT:    vpternlogd {{.*#+}} zmm1 = -12351; CHECK-NEXT:    vpsubq %zmm1, %zmm0, %zmm02352; CHECK-NEXT:    retq2353  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2354  %2 = call <8 x i64> @llvm.x86.avx512.permvar.di.512(<8 x i64> %a1, <8 x i64> %a0)2355  ; add forces execution domain2356  %3 = add <8 x i64> %2, <i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1>2357  ret <8 x i64> %32358}2359declare <8 x i64> @llvm.x86.avx512.permvar.di.512(<8 x i64>, <8 x i64>) nounwind readonly2360 2361define <8 x i64> @stack_fold_permqvar_mask(ptr %passthru, <8 x i64> %a0, <8 x i64> %a1, i8 %mask) {2362; CHECK-LABEL: stack_fold_permqvar_mask:2363; CHECK:       # %bb.0:2364; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2365; CHECK-NEXT:    #APP2366; CHECK-NEXT:    nop2367; CHECK-NEXT:    #NO_APP2368; CHECK-NEXT:    kmovd %esi, %k12369; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm12370; CHECK-NEXT:    vpermq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm1 {%k1} # 64-byte Folded Reload2371; CHECK-NEXT:    vpternlogd {{.*#+}} zmm0 = -12372; CHECK-NEXT:    vpsubq %zmm0, %zmm1, %zmm02373; CHECK-NEXT:    retq2374  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2375  %2 = call <8 x i64> @llvm.x86.avx512.permvar.di.512(<8 x i64> %a1, <8 x i64> %a0)2376  %3 = bitcast i8 %mask to <8 x i1>2377  ; load needed to keep the operation from being scheduled above the asm block2378  %4 = load <8 x i64>, ptr %passthru2379  %5 = select <8 x i1> %3, <8 x i64> %2, <8 x i64> %42380  ; add forces execution domain2381  %6 = add <8 x i64> %5, <i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1>2382  ret <8 x i64> %62383}2384 2385define <64 x i8> @stack_fold_vpermt2b(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2) {2386; CHECK-LABEL: stack_fold_vpermt2b:2387; CHECK:       # %bb.0:2388; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2389; CHECK-NEXT:    #APP2390; CHECK-NEXT:    nop2391; CHECK-NEXT:    #NO_APP2392; CHECK-NEXT:    vpermt2b {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload2393; CHECK-NEXT:    retq2394  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2395  %2 = call <64 x i8> @llvm.x86.avx512.vpermi2var.qi.512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2)2396  ret <64 x i8> %22397}2398declare <64 x i8> @llvm.x86.avx512.vpermi2var.qi.512(<64 x i8>, <64 x i8>, <64 x i8>)2399 2400define <16 x i32> @stack_fold_vpermt2d(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2) {2401; CHECK-LABEL: stack_fold_vpermt2d:2402; CHECK:       # %bb.0:2403; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2404; CHECK-NEXT:    #APP2405; CHECK-NEXT:    nop2406; CHECK-NEXT:    #NO_APP2407; CHECK-NEXT:    vpermt2d {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload2408; CHECK-NEXT:    retq2409  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2410  %2 = call <16 x i32> @llvm.x86.avx512.vpermi2var.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2)2411  ret <16 x i32> %22412}2413declare <16 x i32> @llvm.x86.avx512.vpermi2var.d.512(<16 x i32>, <16 x i32>, <16 x i32>)2414 2415define <8 x i64> @stack_fold_vpermt2q(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2) {2416; CHECK-LABEL: stack_fold_vpermt2q:2417; CHECK:       # %bb.0:2418; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2419; CHECK-NEXT:    #APP2420; CHECK-NEXT:    nop2421; CHECK-NEXT:    #NO_APP2422; CHECK-NEXT:    vpermt2q {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload2423; CHECK-NEXT:    retq2424  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2425  %2 = call <8 x i64> @llvm.x86.avx512.vpermi2var.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2)2426  ret <8 x i64> %22427}2428declare <8 x i64> @llvm.x86.avx512.vpermi2var.q.512(<8 x i64>, <8 x i64>, <8 x i64>)2429 2430define <32 x i16> @stack_fold_vpermt2w(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2) {2431; CHECK-LABEL: stack_fold_vpermt2w:2432; CHECK:       # %bb.0:2433; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2434; CHECK-NEXT:    #APP2435; CHECK-NEXT:    nop2436; CHECK-NEXT:    #NO_APP2437; CHECK-NEXT:    vpermt2w {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload2438; CHECK-NEXT:    retq2439  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2440  %2 = call <32 x i16> @llvm.x86.avx512.vpermi2var.hi.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2)2441  ret <32 x i16> %22442}2443declare <32 x i16> @llvm.x86.avx512.vpermi2var.hi.512(<32 x i16>, <32 x i16>, <32 x i16>)2444 2445define <32 x i16> @stack_fold_permwvar(<32 x i16> %a0, <32 x i16> %a1) {2446; CHECK-LABEL: stack_fold_permwvar:2447; CHECK:       # %bb.0:2448; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2449; CHECK-NEXT:    #APP2450; CHECK-NEXT:    nop2451; CHECK-NEXT:    #NO_APP2452; CHECK-NEXT:    vpermw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload2453; CHECK-NEXT:    retq2454  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2455  %2 = call <32 x i16> @llvm.x86.avx512.permvar.hi.512(<32 x i16> %a1, <32 x i16> %a0)2456  ret <32 x i16> %22457}2458declare <32 x i16> @llvm.x86.avx512.permvar.hi.512(<32 x i16>, <32 x i16>) nounwind readonly2459 2460define <32 x i16> @stack_fold_permwvar_mask(ptr %passthru, <32 x i16> %a0, <32 x i16> %a1, i32 %mask) {2461; CHECK-LABEL: stack_fold_permwvar_mask:2462; CHECK:       # %bb.0:2463; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2464; CHECK-NEXT:    #APP2465; CHECK-NEXT:    nop2466; CHECK-NEXT:    #NO_APP2467; CHECK-NEXT:    kmovd %esi, %k12468; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm22469; CHECK-NEXT:    vpermw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload2470; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm02471; CHECK-NEXT:    retq2472  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2473  %2 = call <32 x i16> @llvm.x86.avx512.permvar.hi.512(<32 x i16> %a1, <32 x i16> %a0)2474  %3 = bitcast i32 %mask to <32 x i1>2475  ; load needed to keep the operation from being scheduled above the asm block2476  %4 = load <32 x i16>, ptr %passthru2477  %5 = select <32 x i1> %3, <32 x i16> %2, <32 x i16> %42478  ret <32 x i16> %52479}2480 2481define <32 x i16> @stack_fold_permwvar_maskz(<32 x i16> %a0, <32 x i16> %a1, i32 %mask) {2482; CHECK-LABEL: stack_fold_permwvar_maskz:2483; CHECK:       # %bb.0:2484; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2485; CHECK-NEXT:    #APP2486; CHECK-NEXT:    nop2487; CHECK-NEXT:    #NO_APP2488; CHECK-NEXT:    kmovd %edi, %k12489; CHECK-NEXT:    vpermw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload2490; CHECK-NEXT:    retq2491  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2492  %2 = call <32 x i16> @llvm.x86.avx512.permvar.hi.512(<32 x i16> %a1, <32 x i16> %a0)2493  %3 = bitcast i32 %mask to <32 x i1>2494  %4 = select <32 x i1> %3, <32 x i16> %2, <32 x i16> zeroinitializer2495  ret <32 x i16> %42496}2497 2498define i32 @stack_fold_pextrd(<4 x i32> %a0, <4 x i32> %a1) {2499; CHECK-LABEL: stack_fold_pextrd:2500; CHECK:       # %bb.0:2501; CHECK-NEXT:    pushq %rbp2502; CHECK-NEXT:    .cfi_def_cfa_offset 162503; CHECK-NEXT:    pushq %r152504; CHECK-NEXT:    .cfi_def_cfa_offset 242505; CHECK-NEXT:    pushq %r142506; CHECK-NEXT:    .cfi_def_cfa_offset 322507; CHECK-NEXT:    pushq %r132508; CHECK-NEXT:    .cfi_def_cfa_offset 402509; CHECK-NEXT:    pushq %r122510; CHECK-NEXT:    .cfi_def_cfa_offset 482511; CHECK-NEXT:    pushq %rbx2512; CHECK-NEXT:    .cfi_def_cfa_offset 562513; CHECK-NEXT:    .cfi_offset %rbx, -562514; CHECK-NEXT:    .cfi_offset %r12, -482515; CHECK-NEXT:    .cfi_offset %r13, -402516; CHECK-NEXT:    .cfi_offset %r14, -322517; CHECK-NEXT:    .cfi_offset %r15, -242518; CHECK-NEXT:    .cfi_offset %rbp, -162519; CHECK-NEXT:    vpaddd %xmm1, %xmm0, %xmm02520; CHECK-NEXT:    vpextrd $1, %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Folded Spill2521; CHECK-NEXT:    #APP2522; CHECK-NEXT:    nop2523; CHECK-NEXT:    #NO_APP2524; CHECK-NEXT:    movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload2525; CHECK-NEXT:    popq %rbx2526; CHECK-NEXT:    .cfi_def_cfa_offset 482527; CHECK-NEXT:    popq %r122528; CHECK-NEXT:    .cfi_def_cfa_offset 402529; CHECK-NEXT:    popq %r132530; CHECK-NEXT:    .cfi_def_cfa_offset 322531; CHECK-NEXT:    popq %r142532; CHECK-NEXT:    .cfi_def_cfa_offset 242533; CHECK-NEXT:    popq %r152534; CHECK-NEXT:    .cfi_def_cfa_offset 162535; CHECK-NEXT:    popq %rbp2536; CHECK-NEXT:    .cfi_def_cfa_offset 82537; CHECK-NEXT:    retq2538  ; add forces execution domain2539  %1 = add <4 x i32> %a0, %a12540  %2 = extractelement <4 x i32> %1, i32 12541  %3 = tail call <2 x i64> asm sideeffect "nop", "=x,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()2542  ret i32 %22543}2544 2545define i64 @stack_fold_pextrq(<2 x i64> %a0) {2546; CHECK-LABEL: stack_fold_pextrq:2547; CHECK:       # %bb.0:2548; CHECK-NEXT:    pushq %rbp2549; CHECK-NEXT:    .cfi_def_cfa_offset 162550; CHECK-NEXT:    pushq %r152551; CHECK-NEXT:    .cfi_def_cfa_offset 242552; CHECK-NEXT:    pushq %r142553; CHECK-NEXT:    .cfi_def_cfa_offset 322554; CHECK-NEXT:    pushq %r132555; CHECK-NEXT:    .cfi_def_cfa_offset 402556; CHECK-NEXT:    pushq %r122557; CHECK-NEXT:    .cfi_def_cfa_offset 482558; CHECK-NEXT:    pushq %rbx2559; CHECK-NEXT:    .cfi_def_cfa_offset 562560; CHECK-NEXT:    .cfi_offset %rbx, -562561; CHECK-NEXT:    .cfi_offset %r12, -482562; CHECK-NEXT:    .cfi_offset %r13, -402563; CHECK-NEXT:    .cfi_offset %r14, -322564; CHECK-NEXT:    .cfi_offset %r15, -242565; CHECK-NEXT:    .cfi_offset %rbp, -162566; CHECK-NEXT:    vpextrq $1, %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Folded Spill2567; CHECK-NEXT:    #APP2568; CHECK-NEXT:    nop2569; CHECK-NEXT:    #NO_APP2570; CHECK-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload2571; CHECK-NEXT:    popq %rbx2572; CHECK-NEXT:    .cfi_def_cfa_offset 482573; CHECK-NEXT:    popq %r122574; CHECK-NEXT:    .cfi_def_cfa_offset 402575; CHECK-NEXT:    popq %r132576; CHECK-NEXT:    .cfi_def_cfa_offset 322577; CHECK-NEXT:    popq %r142578; CHECK-NEXT:    .cfi_def_cfa_offset 242579; CHECK-NEXT:    popq %r152580; CHECK-NEXT:    .cfi_def_cfa_offset 162581; CHECK-NEXT:    popq %rbp2582; CHECK-NEXT:    .cfi_def_cfa_offset 82583; CHECK-NEXT:    retq2584  %1 = extractelement <2 x i64> %a0, i32 12585  %2 = tail call <2 x i64> asm sideeffect "nop", "=x,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()2586  ret i64 %12587}2588 2589define <16 x i8> @stack_fold_pinsrb(<16 x i8> %a0, i8 %a1) {2590; CHECK-LABEL: stack_fold_pinsrb:2591; CHECK:       # %bb.0:2592; CHECK-NEXT:    pushq %rbp2593; CHECK-NEXT:    .cfi_def_cfa_offset 162594; CHECK-NEXT:    pushq %r152595; CHECK-NEXT:    .cfi_def_cfa_offset 242596; CHECK-NEXT:    pushq %r142597; CHECK-NEXT:    .cfi_def_cfa_offset 322598; CHECK-NEXT:    pushq %r132599; CHECK-NEXT:    .cfi_def_cfa_offset 402600; CHECK-NEXT:    pushq %r122601; CHECK-NEXT:    .cfi_def_cfa_offset 482602; CHECK-NEXT:    pushq %rbx2603; CHECK-NEXT:    .cfi_def_cfa_offset 562604; CHECK-NEXT:    .cfi_offset %rbx, -562605; CHECK-NEXT:    .cfi_offset %r12, -482606; CHECK-NEXT:    .cfi_offset %r13, -402607; CHECK-NEXT:    .cfi_offset %r14, -322608; CHECK-NEXT:    .cfi_offset %r15, -242609; CHECK-NEXT:    .cfi_offset %rbp, -162610; CHECK-NEXT:    movl %edi, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill2611; CHECK-NEXT:    #APP2612; CHECK-NEXT:    nop2613; CHECK-NEXT:    #NO_APP2614; CHECK-NEXT:    vpinsrb $1, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 4-byte Folded Reload2615; CHECK-NEXT:    popq %rbx2616; CHECK-NEXT:    .cfi_def_cfa_offset 482617; CHECK-NEXT:    popq %r122618; CHECK-NEXT:    .cfi_def_cfa_offset 402619; CHECK-NEXT:    popq %r132620; CHECK-NEXT:    .cfi_def_cfa_offset 322621; CHECK-NEXT:    popq %r142622; CHECK-NEXT:    .cfi_def_cfa_offset 242623; CHECK-NEXT:    popq %r152624; CHECK-NEXT:    .cfi_def_cfa_offset 162625; CHECK-NEXT:    popq %rbp2626; CHECK-NEXT:    .cfi_def_cfa_offset 82627; CHECK-NEXT:    retq2628  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()2629  %2 = insertelement <16 x i8> %a0, i8 %a1, i32 12630  ret <16 x i8> %22631}2632 2633define <4 x i32> @stack_fold_pinsrd(<4 x i32> %a0, i32 %a1) {2634; CHECK-LABEL: stack_fold_pinsrd:2635; CHECK:       # %bb.0:2636; CHECK-NEXT:    pushq %rbp2637; CHECK-NEXT:    .cfi_def_cfa_offset 162638; CHECK-NEXT:    pushq %r152639; CHECK-NEXT:    .cfi_def_cfa_offset 242640; CHECK-NEXT:    pushq %r142641; CHECK-NEXT:    .cfi_def_cfa_offset 322642; CHECK-NEXT:    pushq %r132643; CHECK-NEXT:    .cfi_def_cfa_offset 402644; CHECK-NEXT:    pushq %r122645; CHECK-NEXT:    .cfi_def_cfa_offset 482646; CHECK-NEXT:    pushq %rbx2647; CHECK-NEXT:    .cfi_def_cfa_offset 562648; CHECK-NEXT:    .cfi_offset %rbx, -562649; CHECK-NEXT:    .cfi_offset %r12, -482650; CHECK-NEXT:    .cfi_offset %r13, -402651; CHECK-NEXT:    .cfi_offset %r14, -322652; CHECK-NEXT:    .cfi_offset %r15, -242653; CHECK-NEXT:    .cfi_offset %rbp, -162654; CHECK-NEXT:    movl %edi, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill2655; CHECK-NEXT:    #APP2656; CHECK-NEXT:    nop2657; CHECK-NEXT:    #NO_APP2658; CHECK-NEXT:    vpinsrd $1, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 4-byte Folded Reload2659; CHECK-NEXT:    popq %rbx2660; CHECK-NEXT:    .cfi_def_cfa_offset 482661; CHECK-NEXT:    popq %r122662; CHECK-NEXT:    .cfi_def_cfa_offset 402663; CHECK-NEXT:    popq %r132664; CHECK-NEXT:    .cfi_def_cfa_offset 322665; CHECK-NEXT:    popq %r142666; CHECK-NEXT:    .cfi_def_cfa_offset 242667; CHECK-NEXT:    popq %r152668; CHECK-NEXT:    .cfi_def_cfa_offset 162669; CHECK-NEXT:    popq %rbp2670; CHECK-NEXT:    .cfi_def_cfa_offset 82671; CHECK-NEXT:    retq2672  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()2673  %2 = insertelement <4 x i32> %a0, i32 %a1, i32 12674  ret <4 x i32> %22675}2676 2677define <2 x i64> @stack_fold_pinsrq(<2 x i64> %a0, i64 %a1) {2678; CHECK-LABEL: stack_fold_pinsrq:2679; CHECK:       # %bb.0:2680; CHECK-NEXT:    pushq %rbp2681; CHECK-NEXT:    .cfi_def_cfa_offset 162682; CHECK-NEXT:    pushq %r152683; CHECK-NEXT:    .cfi_def_cfa_offset 242684; CHECK-NEXT:    pushq %r142685; CHECK-NEXT:    .cfi_def_cfa_offset 322686; CHECK-NEXT:    pushq %r132687; CHECK-NEXT:    .cfi_def_cfa_offset 402688; CHECK-NEXT:    pushq %r122689; CHECK-NEXT:    .cfi_def_cfa_offset 482690; CHECK-NEXT:    pushq %rbx2691; CHECK-NEXT:    .cfi_def_cfa_offset 562692; CHECK-NEXT:    .cfi_offset %rbx, -562693; CHECK-NEXT:    .cfi_offset %r12, -482694; CHECK-NEXT:    .cfi_offset %r13, -402695; CHECK-NEXT:    .cfi_offset %r14, -322696; CHECK-NEXT:    .cfi_offset %r15, -242697; CHECK-NEXT:    .cfi_offset %rbp, -162698; CHECK-NEXT:    movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill2699; CHECK-NEXT:    #APP2700; CHECK-NEXT:    nop2701; CHECK-NEXT:    #NO_APP2702; CHECK-NEXT:    vpinsrq $1, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 8-byte Folded Reload2703; CHECK-NEXT:    popq %rbx2704; CHECK-NEXT:    .cfi_def_cfa_offset 482705; CHECK-NEXT:    popq %r122706; CHECK-NEXT:    .cfi_def_cfa_offset 402707; CHECK-NEXT:    popq %r132708; CHECK-NEXT:    .cfi_def_cfa_offset 322709; CHECK-NEXT:    popq %r142710; CHECK-NEXT:    .cfi_def_cfa_offset 242711; CHECK-NEXT:    popq %r152712; CHECK-NEXT:    .cfi_def_cfa_offset 162713; CHECK-NEXT:    popq %rbp2714; CHECK-NEXT:    .cfi_def_cfa_offset 82715; CHECK-NEXT:    retq2716  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()2717  %2 = insertelement <2 x i64> %a0, i64 %a1, i32 12718  ret <2 x i64> %22719}2720 2721define <8 x i16> @stack_fold_pinsrw(<8 x i16> %a0, i16 %a1) {2722; CHECK-LABEL: stack_fold_pinsrw:2723; CHECK:       # %bb.0:2724; CHECK-NEXT:    pushq %rbp2725; CHECK-NEXT:    .cfi_def_cfa_offset 162726; CHECK-NEXT:    pushq %r152727; CHECK-NEXT:    .cfi_def_cfa_offset 242728; CHECK-NEXT:    pushq %r142729; CHECK-NEXT:    .cfi_def_cfa_offset 322730; CHECK-NEXT:    pushq %r132731; CHECK-NEXT:    .cfi_def_cfa_offset 402732; CHECK-NEXT:    pushq %r122733; CHECK-NEXT:    .cfi_def_cfa_offset 482734; CHECK-NEXT:    pushq %rbx2735; CHECK-NEXT:    .cfi_def_cfa_offset 562736; CHECK-NEXT:    .cfi_offset %rbx, -562737; CHECK-NEXT:    .cfi_offset %r12, -482738; CHECK-NEXT:    .cfi_offset %r13, -402739; CHECK-NEXT:    .cfi_offset %r14, -322740; CHECK-NEXT:    .cfi_offset %r15, -242741; CHECK-NEXT:    .cfi_offset %rbp, -162742; CHECK-NEXT:    movl %edi, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill2743; CHECK-NEXT:    #APP2744; CHECK-NEXT:    nop2745; CHECK-NEXT:    #NO_APP2746; CHECK-NEXT:    vpinsrw $1, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 4-byte Folded Reload2747; CHECK-NEXT:    popq %rbx2748; CHECK-NEXT:    .cfi_def_cfa_offset 482749; CHECK-NEXT:    popq %r122750; CHECK-NEXT:    .cfi_def_cfa_offset 402751; CHECK-NEXT:    popq %r132752; CHECK-NEXT:    .cfi_def_cfa_offset 322753; CHECK-NEXT:    popq %r142754; CHECK-NEXT:    .cfi_def_cfa_offset 242755; CHECK-NEXT:    popq %r152756; CHECK-NEXT:    .cfi_def_cfa_offset 162757; CHECK-NEXT:    popq %rbp2758; CHECK-NEXT:    .cfi_def_cfa_offset 82759; CHECK-NEXT:    retq2760  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()2761  %2 = insertelement <8 x i16> %a0, i16 %a1, i32 12762  ret <8 x i16> %22763}2764 2765define <16 x i32> @stack_fold_vplzcntd(<16 x i32> %a0) {2766; CHECK-LABEL: stack_fold_vplzcntd:2767; CHECK:       # %bb.0:2768; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2769; CHECK-NEXT:    #APP2770; CHECK-NEXT:    nop2771; CHECK-NEXT:    #NO_APP2772; CHECK-NEXT:    vplzcntd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Folded Reload2773; CHECK-NEXT:    retq2774  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2775  %2 = call <16 x i32> @llvm.ctlz.v16i32(<16 x i32> %a0, i1 false)2776  ret <16 x i32> %22777}2778 2779define <8 x i64> @stack_fold_vplzcntq(<8 x i64> %a0) {2780; CHECK-LABEL: stack_fold_vplzcntq:2781; CHECK:       # %bb.0:2782; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2783; CHECK-NEXT:    #APP2784; CHECK-NEXT:    nop2785; CHECK-NEXT:    #NO_APP2786; CHECK-NEXT:    vplzcntq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Folded Reload2787; CHECK-NEXT:    retq2788  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2789  %2 = call <8 x i64> @llvm.ctlz.v8i64(<8 x i64> %a0, i1 false)2790  ret <8 x i64> %22791}2792 2793define <32 x i16> @stack_fold_pmaddubsw_zmm(<64 x i8> %a0, <64 x i8> %a1) {2794; CHECK-LABEL: stack_fold_pmaddubsw_zmm:2795; CHECK:       # %bb.0:2796; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2797; CHECK-NEXT:    #APP2798; CHECK-NEXT:    nop2799; CHECK-NEXT:    #NO_APP2800; CHECK-NEXT:    vpmaddubsw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload2801; CHECK-NEXT:    retq2802  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2803  %2 = call <32 x i16> @llvm.x86.avx512.pmaddubs.w.512(<64 x i8> %a0, <64 x i8> %a1)2804  ret <32 x i16> %22805}2806declare <32 x i16> @llvm.x86.avx512.pmaddubs.w.512(<64 x i8>, <64 x i8>) nounwind readnone2807 2808define <32 x i16> @stack_fold_pmaddubsw_zmm_mask(ptr %passthru, <64 x i8> %a0, <64 x i8> %a1, i32 %mask) {2809; CHECK-LABEL: stack_fold_pmaddubsw_zmm_mask:2810; CHECK:       # %bb.0:2811; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2812; CHECK-NEXT:    #APP2813; CHECK-NEXT:    nop2814; CHECK-NEXT:    #NO_APP2815; CHECK-NEXT:    kmovd %esi, %k12816; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm22817; CHECK-NEXT:    vpmaddubsw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload2818; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm02819; CHECK-NEXT:    retq2820  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2821  %2 = call <32 x i16> @llvm.x86.avx512.pmaddubs.w.512(<64 x i8> %a0, <64 x i8> %a1)2822  %3 = bitcast i32 %mask to <32 x i1>2823  ; load needed to keep the operation from being scheduled about the asm block2824  %4 = load <32 x i16>, ptr %passthru2825  %5 = select <32 x i1> %3, <32 x i16> %2, <32 x i16> %42826  ret <32 x i16> %52827}2828 2829define <32 x i16> @stack_fold_pmaddubsw_zmm_maskz(<64 x i8> %a0, <64 x i8> %a1, i32 %mask) {2830; CHECK-LABEL: stack_fold_pmaddubsw_zmm_maskz:2831; CHECK:       # %bb.0:2832; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2833; CHECK-NEXT:    #APP2834; CHECK-NEXT:    nop2835; CHECK-NEXT:    #NO_APP2836; CHECK-NEXT:    kmovd %edi, %k12837; CHECK-NEXT:    vpmaddubsw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload2838; CHECK-NEXT:    retq2839  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2840  %2 = call <32 x i16> @llvm.x86.avx512.pmaddubs.w.512(<64 x i8> %a0, <64 x i8> %a1)2841  %3 = bitcast i32 %mask to <32 x i1>2842  %4 = select <32 x i1> %3, <32 x i16> %2, <32 x i16> zeroinitializer2843  ret <32 x i16> %42844}2845 2846define <16 x i32> @stack_fold_pmaddwd_zmm(<32 x i16> %a0, <32 x i16> %a1) {2847; CHECK-LABEL: stack_fold_pmaddwd_zmm:2848; CHECK:       # %bb.0:2849; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2850; CHECK-NEXT:    #APP2851; CHECK-NEXT:    nop2852; CHECK-NEXT:    #NO_APP2853; CHECK-NEXT:    vpmaddwd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload2854; CHECK-NEXT:    retq2855  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2856  %2 = call <16 x i32> @llvm.x86.avx512.pmaddw.d.512(<32 x i16> %a0, <32 x i16> %a1)2857  ret <16 x i32> %22858}2859declare <16 x i32> @llvm.x86.avx512.pmaddw.d.512(<32 x i16>, <32 x i16>) nounwind readnone2860 2861define <16 x i32> @stack_fold_pmaddwd_zmm_commuted(<32 x i16> %a0, <32 x i16> %a1) {2862; CHECK-LABEL: stack_fold_pmaddwd_zmm_commuted:2863; CHECK:       # %bb.0:2864; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2865; CHECK-NEXT:    #APP2866; CHECK-NEXT:    nop2867; CHECK-NEXT:    #NO_APP2868; CHECK-NEXT:    vpmaddwd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload2869; CHECK-NEXT:    retq2870  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2871  %2 = call <16 x i32> @llvm.x86.avx512.pmaddw.d.512(<32 x i16> %a1, <32 x i16> %a0)2872  ret <16 x i32> %22873}2874 2875define <16 x i32> @stack_fold_pmaddwd_zmm_mask(ptr %passthru, <32 x i16> %a0, <32 x i16> %a1, i16 %mask) {2876; CHECK-LABEL: stack_fold_pmaddwd_zmm_mask:2877; CHECK:       # %bb.0:2878; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2879; CHECK-NEXT:    #APP2880; CHECK-NEXT:    nop2881; CHECK-NEXT:    #NO_APP2882; CHECK-NEXT:    kmovd %esi, %k12883; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm22884; CHECK-NEXT:    vpmaddwd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload2885; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm02886; CHECK-NEXT:    retq2887  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2888  %2 = call <16 x i32> @llvm.x86.avx512.pmaddw.d.512(<32 x i16> %a0, <32 x i16> %a1)2889  %3 = bitcast i16 %mask to <16 x i1>2890  ; load needed to keep the operation from being scheduled about the asm block2891  %4 = load <16 x i32>, ptr %passthru2892  %5 = select <16 x i1> %3, <16 x i32> %2, <16 x i32> %42893  ret <16 x i32> %52894}2895 2896define <16 x i32> @stack_fold_pmaddwd_zmm_mask_commuted(ptr %passthru, <32 x i16> %a0, <32 x i16> %a1, i16 %mask) {2897; CHECK-LABEL: stack_fold_pmaddwd_zmm_mask_commuted:2898; CHECK:       # %bb.0:2899; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2900; CHECK-NEXT:    #APP2901; CHECK-NEXT:    nop2902; CHECK-NEXT:    #NO_APP2903; CHECK-NEXT:    kmovd %esi, %k12904; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm22905; CHECK-NEXT:    vpmaddwd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload2906; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm02907; CHECK-NEXT:    retq2908  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2909  %2 = call <16 x i32> @llvm.x86.avx512.pmaddw.d.512(<32 x i16> %a1, <32 x i16> %a0)2910  %3 = bitcast i16 %mask to <16 x i1>2911  ; load needed to keep the operation from being scheduled about the asm block2912  %4 = load <16 x i32>, ptr %passthru2913  %5 = select <16 x i1> %3, <16 x i32> %2, <16 x i32> %42914  ret <16 x i32> %52915}2916 2917define <16 x i32> @stack_fold_pmaddwd_zmm_maskz(ptr %passthru, <32 x i16> %a0, <32 x i16> %a1, i16 %mask) {2918; CHECK-LABEL: stack_fold_pmaddwd_zmm_maskz:2919; CHECK:       # %bb.0:2920; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2921; CHECK-NEXT:    #APP2922; CHECK-NEXT:    nop2923; CHECK-NEXT:    #NO_APP2924; CHECK-NEXT:    kmovd %esi, %k12925; CHECK-NEXT:    vpmaddwd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload2926; CHECK-NEXT:    retq2927  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2928  %2 = call <16 x i32> @llvm.x86.avx512.pmaddw.d.512(<32 x i16> %a0, <32 x i16> %a1)2929  %3 = bitcast i16 %mask to <16 x i1>2930  %4 = select <16 x i1> %3, <16 x i32> %2, <16 x i32> zeroinitializer2931  ret <16 x i32> %42932}2933 2934define <16 x i32> @stack_fold_pmaddwd_zmm_maskz_commuted(ptr %passthru, <32 x i16> %a0, <32 x i16> %a1, i16 %mask) {2935; CHECK-LABEL: stack_fold_pmaddwd_zmm_maskz_commuted:2936; CHECK:       # %bb.0:2937; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2938; CHECK-NEXT:    #APP2939; CHECK-NEXT:    nop2940; CHECK-NEXT:    #NO_APP2941; CHECK-NEXT:    kmovd %esi, %k12942; CHECK-NEXT:    vpmaddwd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload2943; CHECK-NEXT:    retq2944  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2945  %2 = call <16 x i32> @llvm.x86.avx512.pmaddw.d.512(<32 x i16> %a1, <32 x i16> %a0)2946  %3 = bitcast i16 %mask to <16 x i1>2947  %4 = select <16 x i1> %3, <16 x i32> %2, <16 x i32> zeroinitializer2948  ret <16 x i32> %42949}2950 2951define <64 x i8> @stack_fold_pmaxsb(<64 x i8> %a0, <64 x i8> %a1) {2952; CHECK-LABEL: stack_fold_pmaxsb:2953; CHECK:       # %bb.0:2954; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2955; CHECK-NEXT:    #APP2956; CHECK-NEXT:    nop2957; CHECK-NEXT:    #NO_APP2958; CHECK-NEXT:    vpmaxsb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload2959; CHECK-NEXT:    retq2960  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2961  %2 = icmp sgt <64 x i8> %a0, %a12962  %3 = select <64 x i1> %2, <64 x i8> %a0, <64 x i8> %a12963  ret <64 x i8> %32964}2965 2966define <64 x i8> @stack_fold_pmaxsb_commuted(<64 x i8> %a0, <64 x i8> %a1) {2967; CHECK-LABEL: stack_fold_pmaxsb_commuted:2968; CHECK:       # %bb.0:2969; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2970; CHECK-NEXT:    #APP2971; CHECK-NEXT:    nop2972; CHECK-NEXT:    #NO_APP2973; CHECK-NEXT:    vpmaxsb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload2974; CHECK-NEXT:    retq2975  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2976  %2 = icmp sgt <64 x i8> %a1, %a02977  %3 = select <64 x i1> %2, <64 x i8> %a1, <64 x i8> %a02978  ret <64 x i8> %32979}2980 2981define <64 x i8> @stack_fold_pmaxsb_mask(<64 x i8> %a0, <64 x i8> %a1, i64 %mask, ptr %passthru) {2982; CHECK-LABEL: stack_fold_pmaxsb_mask:2983; CHECK:       # %bb.0:2984; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill2985; CHECK-NEXT:    #APP2986; CHECK-NEXT:    nop2987; CHECK-NEXT:    #NO_APP2988; CHECK-NEXT:    kmovq %rdi, %k12989; CHECK-NEXT:    vmovdqa64 (%rsi), %zmm22990; CHECK-NEXT:    vpmaxsb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload2991; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm02992; CHECK-NEXT:    retq2993  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2994  %2 = icmp sgt <64 x i8> %a0, %a12995  %3 = select <64 x i1> %2, <64 x i8> %a0, <64 x i8> %a12996  %4 = bitcast i64 %mask to <64 x i1>2997  ; load needed to keep the operation from being scheduled about the asm block2998  %5 = load <64 x i8>, ptr %passthru2999  %6 = select <64 x i1> %4, <64 x i8> %3, <64 x i8> %53000  ret <64 x i8> %63001}3002 3003define <64 x i8> @stack_fold_pmaxsb_mask_commuted(<64 x i8> %a0, <64 x i8> %a1, i64 %mask, ptr %passthru) {3004; CHECK-LABEL: stack_fold_pmaxsb_mask_commuted:3005; CHECK:       # %bb.0:3006; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3007; CHECK-NEXT:    #APP3008; CHECK-NEXT:    nop3009; CHECK-NEXT:    #NO_APP3010; CHECK-NEXT:    kmovq %rdi, %k13011; CHECK-NEXT:    vmovdqa64 (%rsi), %zmm23012; CHECK-NEXT:    vpmaxsb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload3013; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm03014; CHECK-NEXT:    retq3015  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3016  %2 = icmp sgt <64 x i8> %a1, %a03017  %3 = select <64 x i1> %2, <64 x i8> %a1, <64 x i8> %a03018  %4 = bitcast i64 %mask to <64 x i1>3019  ; load needed to keep the operation from being scheduled about the asm block3020  %5 = load <64 x i8>, ptr %passthru3021  %6 = select <64 x i1> %4, <64 x i8> %3, <64 x i8> %53022  ret <64 x i8> %63023}3024 3025define <64 x i8> @stack_fold_pmaxsb_maskz(<64 x i8> %a0, <64 x i8> %a1, i64 %mask) {3026; CHECK-LABEL: stack_fold_pmaxsb_maskz:3027; CHECK:       # %bb.0:3028; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3029; CHECK-NEXT:    #APP3030; CHECK-NEXT:    nop3031; CHECK-NEXT:    #NO_APP3032; CHECK-NEXT:    kmovq %rdi, %k13033; CHECK-NEXT:    vpmaxsb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload3034; CHECK-NEXT:    retq3035  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3036  %2 = icmp sgt <64 x i8> %a0, %a13037  %3 = select <64 x i1> %2, <64 x i8> %a0, <64 x i8> %a13038  %4 = bitcast i64 %mask to <64 x i1>3039  %5 = select <64 x i1> %4, <64 x i8> %3, <64 x i8> zeroinitializer3040  ret <64 x i8> %53041}3042 3043define <64 x i8> @stack_fold_pmaxsb_maskz_commuted(<64 x i8> %a0, <64 x i8> %a1, i64 %mask) {3044; CHECK-LABEL: stack_fold_pmaxsb_maskz_commuted:3045; CHECK:       # %bb.0:3046; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3047; CHECK-NEXT:    #APP3048; CHECK-NEXT:    nop3049; CHECK-NEXT:    #NO_APP3050; CHECK-NEXT:    kmovq %rdi, %k13051; CHECK-NEXT:    vpmaxsb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload3052; CHECK-NEXT:    retq3053  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3054  %2 = icmp sgt <64 x i8> %a1, %a03055  %3 = select <64 x i1> %2, <64 x i8> %a1, <64 x i8> %a03056  %4 = bitcast i64 %mask to <64 x i1>3057  %5 = select <64 x i1> %4, <64 x i8> %3, <64 x i8> zeroinitializer3058  ret <64 x i8> %53059}3060 3061define <16 x i32> @stack_fold_pmaxsd(<16 x i32> %a0, <16 x i32> %a1) {3062; CHECK-LABEL: stack_fold_pmaxsd:3063; CHECK:       # %bb.0:3064; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3065; CHECK-NEXT:    #APP3066; CHECK-NEXT:    nop3067; CHECK-NEXT:    #NO_APP3068; CHECK-NEXT:    vpmaxsd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload3069; CHECK-NEXT:    retq3070  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3071  %2 = icmp sgt <16 x i32> %a0, %a13072  %3 = select <16 x i1> %2, <16 x i32> %a0, <16 x i32> %a13073  ret <16 x i32> %33074}3075 3076define <16 x i32> @stack_fold_pmaxsd_commuted(<16 x i32> %a0, <16 x i32> %a1) {3077; CHECK-LABEL: stack_fold_pmaxsd_commuted:3078; CHECK:       # %bb.0:3079; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3080; CHECK-NEXT:    #APP3081; CHECK-NEXT:    nop3082; CHECK-NEXT:    #NO_APP3083; CHECK-NEXT:    vpmaxsd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload3084; CHECK-NEXT:    retq3085  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3086  %2 = icmp sgt <16 x i32> %a1, %a03087  %3 = select <16 x i1> %2, <16 x i32> %a1, <16 x i32> %a03088  ret <16 x i32> %33089}3090 3091define <16 x i32> @stack_fold_pmaxsd_mask(<16 x i32> %a0, <16 x i32> %a1, i16 %mask, ptr %passthru) {3092; CHECK-LABEL: stack_fold_pmaxsd_mask:3093; CHECK:       # %bb.0:3094; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3095; CHECK-NEXT:    #APP3096; CHECK-NEXT:    nop3097; CHECK-NEXT:    #NO_APP3098; CHECK-NEXT:    kmovd %edi, %k13099; CHECK-NEXT:    vmovdqa64 (%rsi), %zmm23100; CHECK-NEXT:    vpmaxsd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload3101; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm03102; CHECK-NEXT:    retq3103  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3104  %2 = icmp sgt <16 x i32> %a0, %a13105  %3 = select <16 x i1> %2, <16 x i32> %a0, <16 x i32> %a13106  %4 = bitcast i16 %mask to <16 x i1>3107  ; load needed to keep the operation from being scheduled about the asm block3108  %5 = load <16 x i32>, ptr %passthru3109  %6 = select <16 x i1> %4, <16 x i32> %3, <16 x i32> %53110  ret <16 x i32> %63111}3112 3113define <16 x i32> @stack_fold_pmaxsd_mask_commuted(<16 x i32> %a0, <16 x i32> %a1, i16 %mask, ptr %passthru) {3114; CHECK-LABEL: stack_fold_pmaxsd_mask_commuted:3115; CHECK:       # %bb.0:3116; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3117; CHECK-NEXT:    #APP3118; CHECK-NEXT:    nop3119; CHECK-NEXT:    #NO_APP3120; CHECK-NEXT:    kmovd %edi, %k13121; CHECK-NEXT:    vmovdqa64 (%rsi), %zmm23122; CHECK-NEXT:    vpmaxsd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload3123; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm03124; CHECK-NEXT:    retq3125  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3126  %2 = icmp sgt <16 x i32> %a1, %a03127  %3 = select <16 x i1> %2, <16 x i32> %a1, <16 x i32> %a03128  %4 = bitcast i16 %mask to <16 x i1>3129  ; load needed to keep the operation from being scheduled about the asm block3130  %5 = load <16 x i32>, ptr %passthru3131  %6 = select <16 x i1> %4, <16 x i32> %3, <16 x i32> %53132  ret <16 x i32> %63133}3134 3135define <16 x i32> @stack_fold_pmaxsd_maskz(<16 x i32> %a0, <16 x i32> %a1, i16 %mask) {3136; CHECK-LABEL: stack_fold_pmaxsd_maskz:3137; CHECK:       # %bb.0:3138; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3139; CHECK-NEXT:    #APP3140; CHECK-NEXT:    nop3141; CHECK-NEXT:    #NO_APP3142; CHECK-NEXT:    kmovd %edi, %k13143; CHECK-NEXT:    vpmaxsd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload3144; CHECK-NEXT:    retq3145  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3146  %2 = icmp sgt <16 x i32> %a0, %a13147  %3 = select <16 x i1> %2, <16 x i32> %a0, <16 x i32> %a13148  %4 = bitcast i16 %mask to <16 x i1>3149  %5 = select <16 x i1> %4, <16 x i32> %3, <16 x i32> zeroinitializer3150  ret <16 x i32> %53151}3152 3153define <16 x i32> @stack_fold_pmaxsd_maskz_commuted(<16 x i32> %a0, <16 x i32> %a1, i16 %mask) {3154; CHECK-LABEL: stack_fold_pmaxsd_maskz_commuted:3155; CHECK:       # %bb.0:3156; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3157; CHECK-NEXT:    #APP3158; CHECK-NEXT:    nop3159; CHECK-NEXT:    #NO_APP3160; CHECK-NEXT:    kmovd %edi, %k13161; CHECK-NEXT:    vpmaxsd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload3162; CHECK-NEXT:    retq3163  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3164  %2 = icmp sgt <16 x i32> %a1, %a03165  %3 = select <16 x i1> %2, <16 x i32> %a1, <16 x i32> %a03166  %4 = bitcast i16 %mask to <16 x i1>3167  %5 = select <16 x i1> %4, <16 x i32> %3, <16 x i32> zeroinitializer3168  ret <16 x i32> %53169}3170 3171define <8 x i64> @stack_fold_pmaxsq(<8 x i64> %a0, <8 x i64> %a1) {3172; CHECK-LABEL: stack_fold_pmaxsq:3173; CHECK:       # %bb.0:3174; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3175; CHECK-NEXT:    #APP3176; CHECK-NEXT:    nop3177; CHECK-NEXT:    #NO_APP3178; CHECK-NEXT:    vpmaxsq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload3179; CHECK-NEXT:    retq3180  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3181  %2 = icmp sgt <8 x i64> %a0, %a13182  %3 = select <8 x i1> %2, <8 x i64> %a0, <8 x i64> %a13183  ret <8 x i64> %33184}3185 3186define <8 x i64> @stack_fold_pmaxsq_commuted(<8 x i64> %a0, <8 x i64> %a1) {3187; CHECK-LABEL: stack_fold_pmaxsq_commuted:3188; CHECK:       # %bb.0:3189; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3190; CHECK-NEXT:    #APP3191; CHECK-NEXT:    nop3192; CHECK-NEXT:    #NO_APP3193; CHECK-NEXT:    vpmaxsq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload3194; CHECK-NEXT:    retq3195  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3196  %2 = icmp sgt <8 x i64> %a1, %a03197  %3 = select <8 x i1> %2, <8 x i64> %a1, <8 x i64> %a03198  ret <8 x i64> %33199}3200 3201define <8 x i64> @stack_fold_pmaxsq_mask(<8 x i64> %a0, <8 x i64> %a1, i8 %mask, ptr %passthru) {3202; CHECK-LABEL: stack_fold_pmaxsq_mask:3203; CHECK:       # %bb.0:3204; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3205; CHECK-NEXT:    #APP3206; CHECK-NEXT:    nop3207; CHECK-NEXT:    #NO_APP3208; CHECK-NEXT:    kmovd %edi, %k13209; CHECK-NEXT:    vmovdqa64 (%rsi), %zmm23210; CHECK-NEXT:    vpmaxsq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload3211; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm03212; CHECK-NEXT:    retq3213  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3214  %2 = icmp sgt <8 x i64> %a0, %a13215  %3 = select <8 x i1> %2, <8 x i64> %a0, <8 x i64> %a13216  %4 = bitcast i8 %mask to <8 x i1>3217  ; load needed to keep the operation from being scheduled about the asm block3218  %5 = load <8 x i64>, ptr %passthru3219  %6 = select <8 x i1> %4, <8 x i64> %3, <8 x i64> %53220  ret <8 x i64> %63221}3222 3223define <8 x i64> @stack_fold_pmaxsq_mask_commuted(<8 x i64> %a0, <8 x i64> %a1, i8 %mask, ptr %passthru) {3224; CHECK-LABEL: stack_fold_pmaxsq_mask_commuted:3225; CHECK:       # %bb.0:3226; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3227; CHECK-NEXT:    #APP3228; CHECK-NEXT:    nop3229; CHECK-NEXT:    #NO_APP3230; CHECK-NEXT:    kmovd %edi, %k13231; CHECK-NEXT:    vmovdqa64 (%rsi), %zmm23232; CHECK-NEXT:    vpmaxsq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload3233; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm03234; CHECK-NEXT:    retq3235  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3236  %2 = icmp sgt <8 x i64> %a1, %a03237  %3 = select <8 x i1> %2, <8 x i64> %a1, <8 x i64> %a03238  %4 = bitcast i8 %mask to <8 x i1>3239  ; load needed to keep the operation from being scheduled about the asm block3240  %5 = load <8 x i64>, ptr %passthru3241  %6 = select <8 x i1> %4, <8 x i64> %3, <8 x i64> %53242  ret <8 x i64> %63243}3244 3245define <8 x i64> @stack_fold_pmaxsq_maskz(<8 x i64> %a0, <8 x i64> %a1, i8 %mask) {3246; CHECK-LABEL: stack_fold_pmaxsq_maskz:3247; CHECK:       # %bb.0:3248; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3249; CHECK-NEXT:    #APP3250; CHECK-NEXT:    nop3251; CHECK-NEXT:    #NO_APP3252; CHECK-NEXT:    kmovd %edi, %k13253; CHECK-NEXT:    vpmaxsq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload3254; CHECK-NEXT:    retq3255  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3256  %2 = icmp sgt <8 x i64> %a0, %a13257  %3 = select <8 x i1> %2, <8 x i64> %a0, <8 x i64> %a13258  %4 = bitcast i8 %mask to <8 x i1>3259  %5 = select <8 x i1> %4, <8 x i64> %3, <8 x i64> zeroinitializer3260  ret <8 x i64> %53261}3262 3263define <8 x i64> @stack_fold_pmaxsq_maskz_commuted(<8 x i64> %a0, <8 x i64> %a1, i8 %mask) {3264; CHECK-LABEL: stack_fold_pmaxsq_maskz_commuted:3265; CHECK:       # %bb.0:3266; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3267; CHECK-NEXT:    #APP3268; CHECK-NEXT:    nop3269; CHECK-NEXT:    #NO_APP3270; CHECK-NEXT:    kmovd %edi, %k13271; CHECK-NEXT:    vpmaxsq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload3272; CHECK-NEXT:    retq3273  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3274  %2 = icmp sgt <8 x i64> %a1, %a03275  %3 = select <8 x i1> %2, <8 x i64> %a1, <8 x i64> %a03276  %4 = bitcast i8 %mask to <8 x i1>3277  %5 = select <8 x i1> %4, <8 x i64> %3, <8 x i64> zeroinitializer3278  ret <8 x i64> %53279}3280 3281define <32 x i16> @stack_fold_pmaxsw(<32 x i16> %a0, <32 x i16> %a1) {3282; CHECK-LABEL: stack_fold_pmaxsw:3283; CHECK:       # %bb.0:3284; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3285; CHECK-NEXT:    #APP3286; CHECK-NEXT:    nop3287; CHECK-NEXT:    #NO_APP3288; CHECK-NEXT:    vpmaxsw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload3289; CHECK-NEXT:    retq3290  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3291  %2 = icmp sgt <32 x i16> %a0, %a13292  %3 = select <32 x i1> %2, <32 x i16> %a0, <32 x i16> %a13293  ret <32 x i16> %33294}3295 3296define <32 x i16> @stack_fold_pmaxsw_commuted(<32 x i16> %a0, <32 x i16> %a1) {3297; CHECK-LABEL: stack_fold_pmaxsw_commuted:3298; CHECK:       # %bb.0:3299; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3300; CHECK-NEXT:    #APP3301; CHECK-NEXT:    nop3302; CHECK-NEXT:    #NO_APP3303; CHECK-NEXT:    vpmaxsw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload3304; CHECK-NEXT:    retq3305  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3306  %2 = icmp sgt <32 x i16> %a1, %a03307  %3 = select <32 x i1> %2, <32 x i16> %a1, <32 x i16> %a03308  ret <32 x i16> %33309}3310 3311define <32 x i16> @stack_fold_pmaxsw_mask(<32 x i16> %a0, <32 x i16> %a1, i32 %mask, ptr %passthru) {3312; CHECK-LABEL: stack_fold_pmaxsw_mask:3313; CHECK:       # %bb.0:3314; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3315; CHECK-NEXT:    #APP3316; CHECK-NEXT:    nop3317; CHECK-NEXT:    #NO_APP3318; CHECK-NEXT:    kmovd %edi, %k13319; CHECK-NEXT:    vmovdqa64 (%rsi), %zmm23320; CHECK-NEXT:    vpmaxsw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload3321; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm03322; CHECK-NEXT:    retq3323  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3324  %2 = icmp sgt <32 x i16> %a0, %a13325  %3 = select <32 x i1> %2, <32 x i16> %a0, <32 x i16> %a13326  %4 = bitcast i32 %mask to <32 x i1>3327  ; load needed to keep the operation from being scheduled about the asm block3328  %5 = load <32 x i16>, ptr %passthru3329  %6 = select <32 x i1> %4, <32 x i16> %3, <32 x i16> %53330  ret <32 x i16> %63331}3332 3333define <32 x i16> @stack_fold_pmaxsw_mask_commuted(<32 x i16> %a0, <32 x i16> %a1, i32 %mask, ptr %passthru) {3334; CHECK-LABEL: stack_fold_pmaxsw_mask_commuted:3335; CHECK:       # %bb.0:3336; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3337; CHECK-NEXT:    #APP3338; CHECK-NEXT:    nop3339; CHECK-NEXT:    #NO_APP3340; CHECK-NEXT:    kmovd %edi, %k13341; CHECK-NEXT:    vmovdqa64 (%rsi), %zmm23342; CHECK-NEXT:    vpmaxsw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload3343; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm03344; CHECK-NEXT:    retq3345  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3346  %2 = icmp sgt <32 x i16> %a1, %a03347  %3 = select <32 x i1> %2, <32 x i16> %a1, <32 x i16> %a03348  %4 = bitcast i32 %mask to <32 x i1>3349  ; load needed to keep the operation from being scheduled about the asm block3350  %5 = load <32 x i16>, ptr %passthru3351  %6 = select <32 x i1> %4, <32 x i16> %3, <32 x i16> %53352  ret <32 x i16> %63353}3354 3355define <32 x i16> @stack_fold_pmaxsw_maskz(<32 x i16> %a0, <32 x i16> %a1, i32 %mask) {3356; CHECK-LABEL: stack_fold_pmaxsw_maskz:3357; CHECK:       # %bb.0:3358; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3359; CHECK-NEXT:    #APP3360; CHECK-NEXT:    nop3361; CHECK-NEXT:    #NO_APP3362; CHECK-NEXT:    kmovd %edi, %k13363; CHECK-NEXT:    vpmaxsw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload3364; CHECK-NEXT:    retq3365  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3366  %2 = icmp sgt <32 x i16> %a0, %a13367  %3 = select <32 x i1> %2, <32 x i16> %a0, <32 x i16> %a13368  %4 = bitcast i32 %mask to <32 x i1>3369  %5 = select <32 x i1> %4, <32 x i16> %3, <32 x i16> zeroinitializer3370  ret <32 x i16> %53371}3372 3373define <32 x i16> @stack_fold_pmaxsw_maskz_commuted(<32 x i16> %a0, <32 x i16> %a1, i32 %mask) {3374; CHECK-LABEL: stack_fold_pmaxsw_maskz_commuted:3375; CHECK:       # %bb.0:3376; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3377; CHECK-NEXT:    #APP3378; CHECK-NEXT:    nop3379; CHECK-NEXT:    #NO_APP3380; CHECK-NEXT:    kmovd %edi, %k13381; CHECK-NEXT:    vpmaxsw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload3382; CHECK-NEXT:    retq3383  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3384  %2 = icmp sgt <32 x i16> %a1, %a03385  %3 = select <32 x i1> %2, <32 x i16> %a1, <32 x i16> %a03386  %4 = bitcast i32 %mask to <32 x i1>3387  %5 = select <32 x i1> %4, <32 x i16> %3, <32 x i16> zeroinitializer3388  ret <32 x i16> %53389}3390 3391define <64 x i8> @stack_fold_pmaxub(<64 x i8> %a0, <64 x i8> %a1) {3392; CHECK-LABEL: stack_fold_pmaxub:3393; CHECK:       # %bb.0:3394; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3395; CHECK-NEXT:    #APP3396; CHECK-NEXT:    nop3397; CHECK-NEXT:    #NO_APP3398; CHECK-NEXT:    vpmaxub {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload3399; CHECK-NEXT:    retq3400  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3401  %2 = icmp ugt <64 x i8> %a0, %a13402  %3 = select <64 x i1> %2, <64 x i8> %a0, <64 x i8> %a13403  ret <64 x i8> %33404}3405 3406define <64 x i8> @stack_fold_pmaxub_commuted(<64 x i8> %a0, <64 x i8> %a1) {3407; CHECK-LABEL: stack_fold_pmaxub_commuted:3408; CHECK:       # %bb.0:3409; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3410; CHECK-NEXT:    #APP3411; CHECK-NEXT:    nop3412; CHECK-NEXT:    #NO_APP3413; CHECK-NEXT:    vpmaxub {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload3414; CHECK-NEXT:    retq3415  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3416  %2 = icmp ugt <64 x i8> %a1, %a03417  %3 = select <64 x i1> %2, <64 x i8> %a1, <64 x i8> %a03418  ret <64 x i8> %33419}3420 3421define <64 x i8> @stack_fold_pmaxub_mask(<64 x i8> %a0, <64 x i8> %a1, i64 %mask, ptr %passthru) {3422; CHECK-LABEL: stack_fold_pmaxub_mask:3423; CHECK:       # %bb.0:3424; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3425; CHECK-NEXT:    #APP3426; CHECK-NEXT:    nop3427; CHECK-NEXT:    #NO_APP3428; CHECK-NEXT:    kmovq %rdi, %k13429; CHECK-NEXT:    vmovdqa64 (%rsi), %zmm23430; CHECK-NEXT:    vpmaxub {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload3431; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm03432; CHECK-NEXT:    retq3433  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3434  %2 = icmp ugt <64 x i8> %a0, %a13435  %3 = select <64 x i1> %2, <64 x i8> %a0, <64 x i8> %a13436  %4 = bitcast i64 %mask to <64 x i1>3437  ; load needed to keep the operation from being scheduled about the asm block3438  %5 = load <64 x i8>, ptr %passthru3439  %6 = select <64 x i1> %4, <64 x i8> %3, <64 x i8> %53440  ret <64 x i8> %63441}3442 3443define <64 x i8> @stack_fold_pmaxub_mask_commuted(<64 x i8> %a0, <64 x i8> %a1, i64 %mask, ptr %passthru) {3444; CHECK-LABEL: stack_fold_pmaxub_mask_commuted:3445; CHECK:       # %bb.0:3446; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3447; CHECK-NEXT:    #APP3448; CHECK-NEXT:    nop3449; CHECK-NEXT:    #NO_APP3450; CHECK-NEXT:    kmovq %rdi, %k13451; CHECK-NEXT:    vmovdqa64 (%rsi), %zmm23452; CHECK-NEXT:    vpmaxub {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload3453; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm03454; CHECK-NEXT:    retq3455  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3456  %2 = icmp ugt <64 x i8> %a1, %a03457  %3 = select <64 x i1> %2, <64 x i8> %a1, <64 x i8> %a03458  %4 = bitcast i64 %mask to <64 x i1>3459  ; load needed to keep the operation from being scheduled about the asm block3460  %5 = load <64 x i8>, ptr %passthru3461  %6 = select <64 x i1> %4, <64 x i8> %3, <64 x i8> %53462  ret <64 x i8> %63463}3464 3465define <64 x i8> @stack_fold_pmaxub_maskz(<64 x i8> %a0, <64 x i8> %a1, i64 %mask) {3466; CHECK-LABEL: stack_fold_pmaxub_maskz:3467; CHECK:       # %bb.0:3468; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3469; CHECK-NEXT:    #APP3470; CHECK-NEXT:    nop3471; CHECK-NEXT:    #NO_APP3472; CHECK-NEXT:    kmovq %rdi, %k13473; CHECK-NEXT:    vpmaxub {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload3474; CHECK-NEXT:    retq3475  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3476  %2 = icmp ugt <64 x i8> %a0, %a13477  %3 = select <64 x i1> %2, <64 x i8> %a0, <64 x i8> %a13478  %4 = bitcast i64 %mask to <64 x i1>3479  %5 = select <64 x i1> %4, <64 x i8> %3, <64 x i8> zeroinitializer3480  ret <64 x i8> %53481}3482 3483define <64 x i8> @stack_fold_pmaxub_maskz_commuted(<64 x i8> %a0, <64 x i8> %a1, i64 %mask) {3484; CHECK-LABEL: stack_fold_pmaxub_maskz_commuted:3485; CHECK:       # %bb.0:3486; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3487; CHECK-NEXT:    #APP3488; CHECK-NEXT:    nop3489; CHECK-NEXT:    #NO_APP3490; CHECK-NEXT:    kmovq %rdi, %k13491; CHECK-NEXT:    vpmaxub {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload3492; CHECK-NEXT:    retq3493  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3494  %2 = icmp ugt <64 x i8> %a1, %a03495  %3 = select <64 x i1> %2, <64 x i8> %a1, <64 x i8> %a03496  %4 = bitcast i64 %mask to <64 x i1>3497  %5 = select <64 x i1> %4, <64 x i8> %3, <64 x i8> zeroinitializer3498  ret <64 x i8> %53499}3500 3501define <16 x i32> @stack_fold_pmaxud(<16 x i32> %a0, <16 x i32> %a1) {3502; CHECK-LABEL: stack_fold_pmaxud:3503; CHECK:       # %bb.0:3504; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3505; CHECK-NEXT:    #APP3506; CHECK-NEXT:    nop3507; CHECK-NEXT:    #NO_APP3508; CHECK-NEXT:    vpmaxud {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload3509; CHECK-NEXT:    retq3510  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3511  %2 = icmp ugt <16 x i32> %a0, %a13512  %3 = select <16 x i1> %2, <16 x i32> %a0, <16 x i32> %a13513  ret <16 x i32> %33514}3515 3516define <16 x i32> @stack_fold_pmaxud_commuted(<16 x i32> %a0, <16 x i32> %a1) {3517; CHECK-LABEL: stack_fold_pmaxud_commuted:3518; CHECK:       # %bb.0:3519; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3520; CHECK-NEXT:    #APP3521; CHECK-NEXT:    nop3522; CHECK-NEXT:    #NO_APP3523; CHECK-NEXT:    vpmaxud {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload3524; CHECK-NEXT:    retq3525  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3526  %2 = icmp ugt <16 x i32> %a1, %a03527  %3 = select <16 x i1> %2, <16 x i32> %a1, <16 x i32> %a03528  ret <16 x i32> %33529}3530 3531define <16 x i32> @stack_fold_pmaxud_mask(<16 x i32> %a0, <16 x i32> %a1, i16 %mask, ptr %passthru) {3532; CHECK-LABEL: stack_fold_pmaxud_mask:3533; CHECK:       # %bb.0:3534; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3535; CHECK-NEXT:    #APP3536; CHECK-NEXT:    nop3537; CHECK-NEXT:    #NO_APP3538; CHECK-NEXT:    kmovd %edi, %k13539; CHECK-NEXT:    vmovdqa64 (%rsi), %zmm23540; CHECK-NEXT:    vpmaxud {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload3541; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm03542; CHECK-NEXT:    retq3543  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3544  %2 = icmp ugt <16 x i32> %a0, %a13545  %3 = select <16 x i1> %2, <16 x i32> %a0, <16 x i32> %a13546  %4 = bitcast i16 %mask to <16 x i1>3547  ; load needed to keep the operation from being scheduled about the asm block3548  %5 = load <16 x i32>, ptr %passthru3549  %6 = select <16 x i1> %4, <16 x i32> %3, <16 x i32> %53550  ret <16 x i32> %63551}3552 3553define <16 x i32> @stack_fold_pmaxud_mask_commuted(<16 x i32> %a0, <16 x i32> %a1, i16 %mask, ptr %passthru) {3554; CHECK-LABEL: stack_fold_pmaxud_mask_commuted:3555; CHECK:       # %bb.0:3556; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3557; CHECK-NEXT:    #APP3558; CHECK-NEXT:    nop3559; CHECK-NEXT:    #NO_APP3560; CHECK-NEXT:    kmovd %edi, %k13561; CHECK-NEXT:    vmovdqa64 (%rsi), %zmm23562; CHECK-NEXT:    vpmaxud {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload3563; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm03564; CHECK-NEXT:    retq3565  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3566  %2 = icmp ugt <16 x i32> %a1, %a03567  %3 = select <16 x i1> %2, <16 x i32> %a1, <16 x i32> %a03568  %4 = bitcast i16 %mask to <16 x i1>3569  ; load needed to keep the operation from being scheduled about the asm block3570  %5 = load <16 x i32>, ptr %passthru3571  %6 = select <16 x i1> %4, <16 x i32> %3, <16 x i32> %53572  ret <16 x i32> %63573}3574 3575define <16 x i32> @stack_fold_pmaxud_maskz(<16 x i32> %a0, <16 x i32> %a1, i16 %mask) {3576; CHECK-LABEL: stack_fold_pmaxud_maskz:3577; CHECK:       # %bb.0:3578; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3579; CHECK-NEXT:    #APP3580; CHECK-NEXT:    nop3581; CHECK-NEXT:    #NO_APP3582; CHECK-NEXT:    kmovd %edi, %k13583; CHECK-NEXT:    vpmaxud {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload3584; CHECK-NEXT:    retq3585  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3586  %2 = icmp ugt <16 x i32> %a0, %a13587  %3 = select <16 x i1> %2, <16 x i32> %a0, <16 x i32> %a13588  %4 = bitcast i16 %mask to <16 x i1>3589  %5 = select <16 x i1> %4, <16 x i32> %3, <16 x i32> zeroinitializer3590  ret <16 x i32> %53591}3592 3593define <16 x i32> @stack_fold_pmaxud_maskz_commuted(<16 x i32> %a0, <16 x i32> %a1, i16 %mask) {3594; CHECK-LABEL: stack_fold_pmaxud_maskz_commuted:3595; CHECK:       # %bb.0:3596; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3597; CHECK-NEXT:    #APP3598; CHECK-NEXT:    nop3599; CHECK-NEXT:    #NO_APP3600; CHECK-NEXT:    kmovd %edi, %k13601; CHECK-NEXT:    vpmaxud {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload3602; CHECK-NEXT:    retq3603  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3604  %2 = icmp ugt <16 x i32> %a1, %a03605  %3 = select <16 x i1> %2, <16 x i32> %a1, <16 x i32> %a03606  %4 = bitcast i16 %mask to <16 x i1>3607  %5 = select <16 x i1> %4, <16 x i32> %3, <16 x i32> zeroinitializer3608  ret <16 x i32> %53609}3610 3611define <8 x i64> @stack_fold_pmaxuq(<8 x i64> %a0, <8 x i64> %a1) {3612; CHECK-LABEL: stack_fold_pmaxuq:3613; CHECK:       # %bb.0:3614; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3615; CHECK-NEXT:    #APP3616; CHECK-NEXT:    nop3617; CHECK-NEXT:    #NO_APP3618; CHECK-NEXT:    vpmaxuq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload3619; CHECK-NEXT:    retq3620  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3621  %2 = icmp ugt <8 x i64> %a0, %a13622  %3 = select <8 x i1> %2, <8 x i64> %a0, <8 x i64> %a13623  ret <8 x i64> %33624}3625 3626define <8 x i64> @stack_fold_pmaxuq_commuted(<8 x i64> %a0, <8 x i64> %a1) {3627; CHECK-LABEL: stack_fold_pmaxuq_commuted:3628; CHECK:       # %bb.0:3629; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3630; CHECK-NEXT:    #APP3631; CHECK-NEXT:    nop3632; CHECK-NEXT:    #NO_APP3633; CHECK-NEXT:    vpmaxuq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload3634; CHECK-NEXT:    retq3635  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3636  %2 = icmp ugt <8 x i64> %a1, %a03637  %3 = select <8 x i1> %2, <8 x i64> %a1, <8 x i64> %a03638  ret <8 x i64> %33639}3640 3641define <8 x i64> @stack_fold_pmaxuq_mask(<8 x i64> %a0, <8 x i64> %a1, i8 %mask, ptr %passthru) {3642; CHECK-LABEL: stack_fold_pmaxuq_mask:3643; CHECK:       # %bb.0:3644; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3645; CHECK-NEXT:    #APP3646; CHECK-NEXT:    nop3647; CHECK-NEXT:    #NO_APP3648; CHECK-NEXT:    kmovd %edi, %k13649; CHECK-NEXT:    vmovdqa64 (%rsi), %zmm23650; CHECK-NEXT:    vpmaxuq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload3651; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm03652; CHECK-NEXT:    retq3653  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3654  %2 = icmp ugt <8 x i64> %a0, %a13655  %3 = select <8 x i1> %2, <8 x i64> %a0, <8 x i64> %a13656  %4 = bitcast i8 %mask to <8 x i1>3657  ; load needed to keep the operation from being scheduled about the asm block3658  %5 = load <8 x i64>, ptr %passthru3659  %6 = select <8 x i1> %4, <8 x i64> %3, <8 x i64> %53660  ret <8 x i64> %63661}3662 3663define <8 x i64> @stack_fold_pmaxuq_mask_commuted(<8 x i64> %a0, <8 x i64> %a1, i8 %mask, ptr %passthru) {3664; CHECK-LABEL: stack_fold_pmaxuq_mask_commuted:3665; CHECK:       # %bb.0:3666; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3667; CHECK-NEXT:    #APP3668; CHECK-NEXT:    nop3669; CHECK-NEXT:    #NO_APP3670; CHECK-NEXT:    kmovd %edi, %k13671; CHECK-NEXT:    vmovdqa64 (%rsi), %zmm23672; CHECK-NEXT:    vpmaxuq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload3673; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm03674; CHECK-NEXT:    retq3675  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3676  %2 = icmp ugt <8 x i64> %a1, %a03677  %3 = select <8 x i1> %2, <8 x i64> %a1, <8 x i64> %a03678  %4 = bitcast i8 %mask to <8 x i1>3679  ; load needed to keep the operation from being scheduled about the asm block3680  %5 = load <8 x i64>, ptr %passthru3681  %6 = select <8 x i1> %4, <8 x i64> %3, <8 x i64> %53682  ret <8 x i64> %63683}3684 3685define <8 x i64> @stack_fold_pmaxuq_maskz(<8 x i64> %a0, <8 x i64> %a1, i8 %mask) {3686; CHECK-LABEL: stack_fold_pmaxuq_maskz:3687; CHECK:       # %bb.0:3688; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3689; CHECK-NEXT:    #APP3690; CHECK-NEXT:    nop3691; CHECK-NEXT:    #NO_APP3692; CHECK-NEXT:    kmovd %edi, %k13693; CHECK-NEXT:    vpmaxuq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload3694; CHECK-NEXT:    retq3695  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3696  %2 = icmp ugt <8 x i64> %a0, %a13697  %3 = select <8 x i1> %2, <8 x i64> %a0, <8 x i64> %a13698  %4 = bitcast i8 %mask to <8 x i1>3699  %5 = select <8 x i1> %4, <8 x i64> %3, <8 x i64> zeroinitializer3700  ret <8 x i64> %53701}3702 3703define <8 x i64> @stack_fold_pmaxuq_maskz_commuted(<8 x i64> %a0, <8 x i64> %a1, i8 %mask) {3704; CHECK-LABEL: stack_fold_pmaxuq_maskz_commuted:3705; CHECK:       # %bb.0:3706; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3707; CHECK-NEXT:    #APP3708; CHECK-NEXT:    nop3709; CHECK-NEXT:    #NO_APP3710; CHECK-NEXT:    kmovd %edi, %k13711; CHECK-NEXT:    vpmaxuq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload3712; CHECK-NEXT:    retq3713  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3714  %2 = icmp ugt <8 x i64> %a1, %a03715  %3 = select <8 x i1> %2, <8 x i64> %a1, <8 x i64> %a03716  %4 = bitcast i8 %mask to <8 x i1>3717  %5 = select <8 x i1> %4, <8 x i64> %3, <8 x i64> zeroinitializer3718  ret <8 x i64> %53719}3720 3721define <32 x i16> @stack_fold_pmaxuw(<32 x i16> %a0, <32 x i16> %a1) {3722; CHECK-LABEL: stack_fold_pmaxuw:3723; CHECK:       # %bb.0:3724; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3725; CHECK-NEXT:    #APP3726; CHECK-NEXT:    nop3727; CHECK-NEXT:    #NO_APP3728; CHECK-NEXT:    vpmaxuw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload3729; CHECK-NEXT:    retq3730  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3731  %2 = icmp ugt <32 x i16> %a0, %a13732  %3 = select <32 x i1> %2, <32 x i16> %a0, <32 x i16> %a13733  ret <32 x i16> %33734}3735 3736define <32 x i16> @stack_fold_pmaxuw_commuted(<32 x i16> %a0, <32 x i16> %a1) {3737; CHECK-LABEL: stack_fold_pmaxuw_commuted:3738; CHECK:       # %bb.0:3739; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3740; CHECK-NEXT:    #APP3741; CHECK-NEXT:    nop3742; CHECK-NEXT:    #NO_APP3743; CHECK-NEXT:    vpmaxuw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload3744; CHECK-NEXT:    retq3745  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3746  %2 = icmp ugt <32 x i16> %a1, %a03747  %3 = select <32 x i1> %2, <32 x i16> %a1, <32 x i16> %a03748  ret <32 x i16> %33749}3750 3751define <32 x i16> @stack_fold_pmaxuw_mask(<32 x i16> %a0, <32 x i16> %a1, i32 %mask, ptr %passthru) {3752; CHECK-LABEL: stack_fold_pmaxuw_mask:3753; CHECK:       # %bb.0:3754; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3755; CHECK-NEXT:    #APP3756; CHECK-NEXT:    nop3757; CHECK-NEXT:    #NO_APP3758; CHECK-NEXT:    kmovd %edi, %k13759; CHECK-NEXT:    vmovdqa64 (%rsi), %zmm23760; CHECK-NEXT:    vpmaxuw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload3761; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm03762; CHECK-NEXT:    retq3763  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3764  %2 = icmp ugt <32 x i16> %a0, %a13765  %3 = select <32 x i1> %2, <32 x i16> %a0, <32 x i16> %a13766  %4 = bitcast i32 %mask to <32 x i1>3767  ; load needed to keep the operation from being scheduled about the asm block3768  %5 = load <32 x i16>, ptr %passthru3769  %6 = select <32 x i1> %4, <32 x i16> %3, <32 x i16> %53770  ret <32 x i16> %63771}3772 3773define <32 x i16> @stack_fold_pmaxuw_mask_commuted(<32 x i16> %a0, <32 x i16> %a1, i32 %mask, ptr %passthru) {3774; CHECK-LABEL: stack_fold_pmaxuw_mask_commuted:3775; CHECK:       # %bb.0:3776; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3777; CHECK-NEXT:    #APP3778; CHECK-NEXT:    nop3779; CHECK-NEXT:    #NO_APP3780; CHECK-NEXT:    kmovd %edi, %k13781; CHECK-NEXT:    vmovdqa64 (%rsi), %zmm23782; CHECK-NEXT:    vpmaxuw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload3783; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm03784; CHECK-NEXT:    retq3785  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3786  %2 = icmp ugt <32 x i16> %a1, %a03787  %3 = select <32 x i1> %2, <32 x i16> %a1, <32 x i16> %a03788  %4 = bitcast i32 %mask to <32 x i1>3789  ; load needed to keep the operation from being scheduled about the asm block3790  %5 = load <32 x i16>, ptr %passthru3791  %6 = select <32 x i1> %4, <32 x i16> %3, <32 x i16> %53792  ret <32 x i16> %63793}3794 3795define <32 x i16> @stack_fold_pmaxuw_maskz(<32 x i16> %a0, <32 x i16> %a1, i32 %mask) {3796; CHECK-LABEL: stack_fold_pmaxuw_maskz:3797; CHECK:       # %bb.0:3798; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3799; CHECK-NEXT:    #APP3800; CHECK-NEXT:    nop3801; CHECK-NEXT:    #NO_APP3802; CHECK-NEXT:    kmovd %edi, %k13803; CHECK-NEXT:    vpmaxuw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload3804; CHECK-NEXT:    retq3805  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3806  %2 = icmp ugt <32 x i16> %a0, %a13807  %3 = select <32 x i1> %2, <32 x i16> %a0, <32 x i16> %a13808  %4 = bitcast i32 %mask to <32 x i1>3809  %5 = select <32 x i1> %4, <32 x i16> %3, <32 x i16> zeroinitializer3810  ret <32 x i16> %53811}3812 3813define <32 x i16> @stack_fold_pmaxuw_maskz_commuted(<32 x i16> %a0, <32 x i16> %a1, i32 %mask) {3814; CHECK-LABEL: stack_fold_pmaxuw_maskz_commuted:3815; CHECK:       # %bb.0:3816; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3817; CHECK-NEXT:    #APP3818; CHECK-NEXT:    nop3819; CHECK-NEXT:    #NO_APP3820; CHECK-NEXT:    kmovd %edi, %k13821; CHECK-NEXT:    vpmaxuw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload3822; CHECK-NEXT:    retq3823  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3824  %2 = icmp ugt <32 x i16> %a1, %a03825  %3 = select <32 x i1> %2, <32 x i16> %a1, <32 x i16> %a03826  %4 = bitcast i32 %mask to <32 x i1>3827  %5 = select <32 x i1> %4, <32 x i16> %3, <32 x i16> zeroinitializer3828  ret <32 x i16> %53829}3830 3831define <64 x i8> @stack_fold_pminsb(<64 x i8> %a0, <64 x i8> %a1) {3832; CHECK-LABEL: stack_fold_pminsb:3833; CHECK:       # %bb.0:3834; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3835; CHECK-NEXT:    #APP3836; CHECK-NEXT:    nop3837; CHECK-NEXT:    #NO_APP3838; CHECK-NEXT:    vpminsb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload3839; CHECK-NEXT:    retq3840  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3841  %2 = icmp slt <64 x i8> %a0, %a13842  %3 = select <64 x i1> %2, <64 x i8> %a0, <64 x i8> %a13843  ret <64 x i8> %33844}3845 3846define <64 x i8> @stack_fold_pminsb_commuted(<64 x i8> %a0, <64 x i8> %a1) {3847; CHECK-LABEL: stack_fold_pminsb_commuted:3848; CHECK:       # %bb.0:3849; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3850; CHECK-NEXT:    #APP3851; CHECK-NEXT:    nop3852; CHECK-NEXT:    #NO_APP3853; CHECK-NEXT:    vpminsb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload3854; CHECK-NEXT:    retq3855  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3856  %2 = icmp slt <64 x i8> %a1, %a03857  %3 = select <64 x i1> %2, <64 x i8> %a1, <64 x i8> %a03858  ret <64 x i8> %33859}3860 3861define <64 x i8> @stack_fold_pminsb_mask(<64 x i8> %a0, <64 x i8> %a1, i64 %mask, ptr %passthru) {3862; CHECK-LABEL: stack_fold_pminsb_mask:3863; CHECK:       # %bb.0:3864; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3865; CHECK-NEXT:    #APP3866; CHECK-NEXT:    nop3867; CHECK-NEXT:    #NO_APP3868; CHECK-NEXT:    kmovq %rdi, %k13869; CHECK-NEXT:    vmovdqa64 (%rsi), %zmm23870; CHECK-NEXT:    vpminsb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload3871; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm03872; CHECK-NEXT:    retq3873  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3874  %2 = icmp slt <64 x i8> %a0, %a13875  %3 = select <64 x i1> %2, <64 x i8> %a0, <64 x i8> %a13876  %4 = bitcast i64 %mask to <64 x i1>3877  ; load needed to keep the operation from being scheduled about the asm block3878  %5 = load <64 x i8>, ptr %passthru3879  %6 = select <64 x i1> %4, <64 x i8> %3, <64 x i8> %53880  ret <64 x i8> %63881}3882 3883define <64 x i8> @stack_fold_pminsb_mask_commuted(<64 x i8> %a0, <64 x i8> %a1, i64 %mask, ptr %passthru) {3884; CHECK-LABEL: stack_fold_pminsb_mask_commuted:3885; CHECK:       # %bb.0:3886; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3887; CHECK-NEXT:    #APP3888; CHECK-NEXT:    nop3889; CHECK-NEXT:    #NO_APP3890; CHECK-NEXT:    kmovq %rdi, %k13891; CHECK-NEXT:    vmovdqa64 (%rsi), %zmm23892; CHECK-NEXT:    vpminsb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload3893; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm03894; CHECK-NEXT:    retq3895  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3896  %2 = icmp slt <64 x i8> %a1, %a03897  %3 = select <64 x i1> %2, <64 x i8> %a1, <64 x i8> %a03898  %4 = bitcast i64 %mask to <64 x i1>3899  ; load needed to keep the operation from being scheduled about the asm block3900  %5 = load <64 x i8>, ptr %passthru3901  %6 = select <64 x i1> %4, <64 x i8> %3, <64 x i8> %53902  ret <64 x i8> %63903}3904 3905define <64 x i8> @stack_fold_pminsb_maskz(<64 x i8> %a0, <64 x i8> %a1, i64 %mask) {3906; CHECK-LABEL: stack_fold_pminsb_maskz:3907; CHECK:       # %bb.0:3908; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3909; CHECK-NEXT:    #APP3910; CHECK-NEXT:    nop3911; CHECK-NEXT:    #NO_APP3912; CHECK-NEXT:    kmovq %rdi, %k13913; CHECK-NEXT:    vpminsb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload3914; CHECK-NEXT:    retq3915  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3916  %2 = icmp slt <64 x i8> %a0, %a13917  %3 = select <64 x i1> %2, <64 x i8> %a0, <64 x i8> %a13918  %4 = bitcast i64 %mask to <64 x i1>3919  %5 = select <64 x i1> %4, <64 x i8> %3, <64 x i8> zeroinitializer3920  ret <64 x i8> %53921}3922 3923define <64 x i8> @stack_fold_pminsb_maskz_commuted(<64 x i8> %a0, <64 x i8> %a1, i64 %mask) {3924; CHECK-LABEL: stack_fold_pminsb_maskz_commuted:3925; CHECK:       # %bb.0:3926; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3927; CHECK-NEXT:    #APP3928; CHECK-NEXT:    nop3929; CHECK-NEXT:    #NO_APP3930; CHECK-NEXT:    kmovq %rdi, %k13931; CHECK-NEXT:    vpminsb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload3932; CHECK-NEXT:    retq3933  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3934  %2 = icmp slt <64 x i8> %a1, %a03935  %3 = select <64 x i1> %2, <64 x i8> %a1, <64 x i8> %a03936  %4 = bitcast i64 %mask to <64 x i1>3937  %5 = select <64 x i1> %4, <64 x i8> %3, <64 x i8> zeroinitializer3938  ret <64 x i8> %53939}3940 3941define <16 x i32> @stack_fold_pminsd(<16 x i32> %a0, <16 x i32> %a1) {3942; CHECK-LABEL: stack_fold_pminsd:3943; CHECK:       # %bb.0:3944; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3945; CHECK-NEXT:    #APP3946; CHECK-NEXT:    nop3947; CHECK-NEXT:    #NO_APP3948; CHECK-NEXT:    vpminsd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload3949; CHECK-NEXT:    retq3950  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3951  %2 = icmp slt <16 x i32> %a0, %a13952  %3 = select <16 x i1> %2, <16 x i32> %a0, <16 x i32> %a13953  ret <16 x i32> %33954}3955 3956define <16 x i32> @stack_fold_pminsd_commuted(<16 x i32> %a0, <16 x i32> %a1) {3957; CHECK-LABEL: stack_fold_pminsd_commuted:3958; CHECK:       # %bb.0:3959; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3960; CHECK-NEXT:    #APP3961; CHECK-NEXT:    nop3962; CHECK-NEXT:    #NO_APP3963; CHECK-NEXT:    vpminsd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload3964; CHECK-NEXT:    retq3965  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3966  %2 = icmp slt <16 x i32> %a1, %a03967  %3 = select <16 x i1> %2, <16 x i32> %a1, <16 x i32> %a03968  ret <16 x i32> %33969}3970 3971define <16 x i32> @stack_fold_pminsd_mask(<16 x i32> %a0, <16 x i32> %a1, i16 %mask, ptr %passthru) {3972; CHECK-LABEL: stack_fold_pminsd_mask:3973; CHECK:       # %bb.0:3974; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3975; CHECK-NEXT:    #APP3976; CHECK-NEXT:    nop3977; CHECK-NEXT:    #NO_APP3978; CHECK-NEXT:    kmovd %edi, %k13979; CHECK-NEXT:    vmovdqa64 (%rsi), %zmm23980; CHECK-NEXT:    vpminsd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload3981; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm03982; CHECK-NEXT:    retq3983  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3984  %2 = icmp slt <16 x i32> %a0, %a13985  %3 = select <16 x i1> %2, <16 x i32> %a0, <16 x i32> %a13986  %4 = bitcast i16 %mask to <16 x i1>3987  ; load needed to keep the operation from being scheduled about the asm block3988  %5 = load <16 x i32>, ptr %passthru3989  %6 = select <16 x i1> %4, <16 x i32> %3, <16 x i32> %53990  ret <16 x i32> %63991}3992 3993define <16 x i32> @stack_fold_pminsd_mask_commuted(<16 x i32> %a0, <16 x i32> %a1, i16 %mask, ptr %passthru) {3994; CHECK-LABEL: stack_fold_pminsd_mask_commuted:3995; CHECK:       # %bb.0:3996; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3997; CHECK-NEXT:    #APP3998; CHECK-NEXT:    nop3999; CHECK-NEXT:    #NO_APP4000; CHECK-NEXT:    kmovd %edi, %k14001; CHECK-NEXT:    vmovdqa64 (%rsi), %zmm24002; CHECK-NEXT:    vpminsd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload4003; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm04004; CHECK-NEXT:    retq4005  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4006  %2 = icmp slt <16 x i32> %a1, %a04007  %3 = select <16 x i1> %2, <16 x i32> %a1, <16 x i32> %a04008  %4 = bitcast i16 %mask to <16 x i1>4009  ; load needed to keep the operation from being scheduled about the asm block4010  %5 = load <16 x i32>, ptr %passthru4011  %6 = select <16 x i1> %4, <16 x i32> %3, <16 x i32> %54012  ret <16 x i32> %64013}4014 4015define <16 x i32> @stack_fold_pminsd_maskz(<16 x i32> %a0, <16 x i32> %a1, i16 %mask) {4016; CHECK-LABEL: stack_fold_pminsd_maskz:4017; CHECK:       # %bb.0:4018; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4019; CHECK-NEXT:    #APP4020; CHECK-NEXT:    nop4021; CHECK-NEXT:    #NO_APP4022; CHECK-NEXT:    kmovd %edi, %k14023; CHECK-NEXT:    vpminsd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload4024; CHECK-NEXT:    retq4025  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4026  %2 = icmp slt <16 x i32> %a0, %a14027  %3 = select <16 x i1> %2, <16 x i32> %a0, <16 x i32> %a14028  %4 = bitcast i16 %mask to <16 x i1>4029  %5 = select <16 x i1> %4, <16 x i32> %3, <16 x i32> zeroinitializer4030  ret <16 x i32> %54031}4032 4033define <16 x i32> @stack_fold_pminsd_maskz_commuted(<16 x i32> %a0, <16 x i32> %a1, i16 %mask) {4034; CHECK-LABEL: stack_fold_pminsd_maskz_commuted:4035; CHECK:       # %bb.0:4036; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4037; CHECK-NEXT:    #APP4038; CHECK-NEXT:    nop4039; CHECK-NEXT:    #NO_APP4040; CHECK-NEXT:    kmovd %edi, %k14041; CHECK-NEXT:    vpminsd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload4042; CHECK-NEXT:    retq4043  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4044  %2 = icmp slt <16 x i32> %a1, %a04045  %3 = select <16 x i1> %2, <16 x i32> %a1, <16 x i32> %a04046  %4 = bitcast i16 %mask to <16 x i1>4047  %5 = select <16 x i1> %4, <16 x i32> %3, <16 x i32> zeroinitializer4048  ret <16 x i32> %54049}4050 4051define <8 x i64> @stack_fold_pminsq(<8 x i64> %a0, <8 x i64> %a1) {4052; CHECK-LABEL: stack_fold_pminsq:4053; CHECK:       # %bb.0:4054; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4055; CHECK-NEXT:    #APP4056; CHECK-NEXT:    nop4057; CHECK-NEXT:    #NO_APP4058; CHECK-NEXT:    vpminsq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload4059; CHECK-NEXT:    retq4060  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4061  %2 = icmp slt <8 x i64> %a0, %a14062  %3 = select <8 x i1> %2, <8 x i64> %a0, <8 x i64> %a14063  ret <8 x i64> %34064}4065 4066define <8 x i64> @stack_fold_pminsq_commuted(<8 x i64> %a0, <8 x i64> %a1) {4067; CHECK-LABEL: stack_fold_pminsq_commuted:4068; CHECK:       # %bb.0:4069; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4070; CHECK-NEXT:    #APP4071; CHECK-NEXT:    nop4072; CHECK-NEXT:    #NO_APP4073; CHECK-NEXT:    vpminsq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload4074; CHECK-NEXT:    retq4075  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4076  %2 = icmp slt <8 x i64> %a1, %a04077  %3 = select <8 x i1> %2, <8 x i64> %a1, <8 x i64> %a04078  ret <8 x i64> %34079}4080 4081define <8 x i64> @stack_fold_pminsq_mask(<8 x i64> %a0, <8 x i64> %a1, i8 %mask, ptr %passthru) {4082; CHECK-LABEL: stack_fold_pminsq_mask:4083; CHECK:       # %bb.0:4084; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4085; CHECK-NEXT:    #APP4086; CHECK-NEXT:    nop4087; CHECK-NEXT:    #NO_APP4088; CHECK-NEXT:    kmovd %edi, %k14089; CHECK-NEXT:    vmovdqa64 (%rsi), %zmm24090; CHECK-NEXT:    vpminsq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload4091; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm04092; CHECK-NEXT:    retq4093  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4094  %2 = icmp slt <8 x i64> %a0, %a14095  %3 = select <8 x i1> %2, <8 x i64> %a0, <8 x i64> %a14096  %4 = bitcast i8 %mask to <8 x i1>4097  ; load needed to keep the operation from being scheduled about the asm block4098  %5 = load <8 x i64>, ptr %passthru4099  %6 = select <8 x i1> %4, <8 x i64> %3, <8 x i64> %54100  ret <8 x i64> %64101}4102 4103define <8 x i64> @stack_fold_pminsq_mask_commuted(<8 x i64> %a0, <8 x i64> %a1, i8 %mask, ptr %passthru) {4104; CHECK-LABEL: stack_fold_pminsq_mask_commuted:4105; CHECK:       # %bb.0:4106; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4107; CHECK-NEXT:    #APP4108; CHECK-NEXT:    nop4109; CHECK-NEXT:    #NO_APP4110; CHECK-NEXT:    kmovd %edi, %k14111; CHECK-NEXT:    vmovdqa64 (%rsi), %zmm24112; CHECK-NEXT:    vpminsq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload4113; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm04114; CHECK-NEXT:    retq4115  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4116  %2 = icmp slt <8 x i64> %a1, %a04117  %3 = select <8 x i1> %2, <8 x i64> %a1, <8 x i64> %a04118  %4 = bitcast i8 %mask to <8 x i1>4119  ; load needed to keep the operation from being scheduled about the asm block4120  %5 = load <8 x i64>, ptr %passthru4121  %6 = select <8 x i1> %4, <8 x i64> %3, <8 x i64> %54122  ret <8 x i64> %64123}4124 4125define <8 x i64> @stack_fold_pminsq_maskz(<8 x i64> %a0, <8 x i64> %a1, i8 %mask) {4126; CHECK-LABEL: stack_fold_pminsq_maskz:4127; CHECK:       # %bb.0:4128; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4129; CHECK-NEXT:    #APP4130; CHECK-NEXT:    nop4131; CHECK-NEXT:    #NO_APP4132; CHECK-NEXT:    kmovd %edi, %k14133; CHECK-NEXT:    vpminsq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload4134; CHECK-NEXT:    retq4135  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4136  %2 = icmp slt <8 x i64> %a0, %a14137  %3 = select <8 x i1> %2, <8 x i64> %a0, <8 x i64> %a14138  %4 = bitcast i8 %mask to <8 x i1>4139  %5 = select <8 x i1> %4, <8 x i64> %3, <8 x i64> zeroinitializer4140  ret <8 x i64> %54141}4142 4143define <8 x i64> @stack_fold_pminsq_maskz_commuted(<8 x i64> %a0, <8 x i64> %a1, i8 %mask) {4144; CHECK-LABEL: stack_fold_pminsq_maskz_commuted:4145; CHECK:       # %bb.0:4146; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4147; CHECK-NEXT:    #APP4148; CHECK-NEXT:    nop4149; CHECK-NEXT:    #NO_APP4150; CHECK-NEXT:    kmovd %edi, %k14151; CHECK-NEXT:    vpminsq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload4152; CHECK-NEXT:    retq4153  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4154  %2 = icmp slt <8 x i64> %a1, %a04155  %3 = select <8 x i1> %2, <8 x i64> %a1, <8 x i64> %a04156  %4 = bitcast i8 %mask to <8 x i1>4157  %5 = select <8 x i1> %4, <8 x i64> %3, <8 x i64> zeroinitializer4158  ret <8 x i64> %54159}4160 4161define <32 x i16> @stack_fold_pminsw(<32 x i16> %a0, <32 x i16> %a1) {4162; CHECK-LABEL: stack_fold_pminsw:4163; CHECK:       # %bb.0:4164; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4165; CHECK-NEXT:    #APP4166; CHECK-NEXT:    nop4167; CHECK-NEXT:    #NO_APP4168; CHECK-NEXT:    vpminsw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload4169; CHECK-NEXT:    retq4170  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4171  %2 = icmp slt <32 x i16> %a0, %a14172  %3 = select <32 x i1> %2, <32 x i16> %a0, <32 x i16> %a14173  ret <32 x i16> %34174}4175 4176define <32 x i16> @stack_fold_pminsw_commuted(<32 x i16> %a0, <32 x i16> %a1) {4177; CHECK-LABEL: stack_fold_pminsw_commuted:4178; CHECK:       # %bb.0:4179; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4180; CHECK-NEXT:    #APP4181; CHECK-NEXT:    nop4182; CHECK-NEXT:    #NO_APP4183; CHECK-NEXT:    vpminsw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload4184; CHECK-NEXT:    retq4185  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4186  %2 = icmp slt <32 x i16> %a1, %a04187  %3 = select <32 x i1> %2, <32 x i16> %a1, <32 x i16> %a04188  ret <32 x i16> %34189}4190 4191define <32 x i16> @stack_fold_pminsw_mask(<32 x i16> %a0, <32 x i16> %a1, i32 %mask, ptr %passthru) {4192; CHECK-LABEL: stack_fold_pminsw_mask:4193; CHECK:       # %bb.0:4194; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4195; CHECK-NEXT:    #APP4196; CHECK-NEXT:    nop4197; CHECK-NEXT:    #NO_APP4198; CHECK-NEXT:    kmovd %edi, %k14199; CHECK-NEXT:    vmovdqa64 (%rsi), %zmm24200; CHECK-NEXT:    vpminsw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload4201; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm04202; CHECK-NEXT:    retq4203  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4204  %2 = icmp slt <32 x i16> %a0, %a14205  %3 = select <32 x i1> %2, <32 x i16> %a0, <32 x i16> %a14206  %4 = bitcast i32 %mask to <32 x i1>4207  ; load needed to keep the operation from being scheduled about the asm block4208  %5 = load <32 x i16>, ptr %passthru4209  %6 = select <32 x i1> %4, <32 x i16> %3, <32 x i16> %54210  ret <32 x i16> %64211}4212 4213define <32 x i16> @stack_fold_pminsw_mask_commuted(<32 x i16> %a0, <32 x i16> %a1, i32 %mask, ptr %passthru) {4214; CHECK-LABEL: stack_fold_pminsw_mask_commuted:4215; CHECK:       # %bb.0:4216; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4217; CHECK-NEXT:    #APP4218; CHECK-NEXT:    nop4219; CHECK-NEXT:    #NO_APP4220; CHECK-NEXT:    kmovd %edi, %k14221; CHECK-NEXT:    vmovdqa64 (%rsi), %zmm24222; CHECK-NEXT:    vpminsw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload4223; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm04224; CHECK-NEXT:    retq4225  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4226  %2 = icmp slt <32 x i16> %a1, %a04227  %3 = select <32 x i1> %2, <32 x i16> %a1, <32 x i16> %a04228  %4 = bitcast i32 %mask to <32 x i1>4229  ; load needed to keep the operation from being scheduled about the asm block4230  %5 = load <32 x i16>, ptr %passthru4231  %6 = select <32 x i1> %4, <32 x i16> %3, <32 x i16> %54232  ret <32 x i16> %64233}4234 4235define <32 x i16> @stack_fold_pminsw_maskz(<32 x i16> %a0, <32 x i16> %a1, i32 %mask) {4236; CHECK-LABEL: stack_fold_pminsw_maskz:4237; CHECK:       # %bb.0:4238; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4239; CHECK-NEXT:    #APP4240; CHECK-NEXT:    nop4241; CHECK-NEXT:    #NO_APP4242; CHECK-NEXT:    kmovd %edi, %k14243; CHECK-NEXT:    vpminsw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload4244; CHECK-NEXT:    retq4245  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4246  %2 = icmp slt <32 x i16> %a0, %a14247  %3 = select <32 x i1> %2, <32 x i16> %a0, <32 x i16> %a14248  %4 = bitcast i32 %mask to <32 x i1>4249  %5 = select <32 x i1> %4, <32 x i16> %3, <32 x i16> zeroinitializer4250  ret <32 x i16> %54251}4252 4253define <32 x i16> @stack_fold_pminsw_maskz_commuted(<32 x i16> %a0, <32 x i16> %a1, i32 %mask) {4254; CHECK-LABEL: stack_fold_pminsw_maskz_commuted:4255; CHECK:       # %bb.0:4256; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4257; CHECK-NEXT:    #APP4258; CHECK-NEXT:    nop4259; CHECK-NEXT:    #NO_APP4260; CHECK-NEXT:    kmovd %edi, %k14261; CHECK-NEXT:    vpminsw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload4262; CHECK-NEXT:    retq4263  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4264  %2 = icmp slt <32 x i16> %a1, %a04265  %3 = select <32 x i1> %2, <32 x i16> %a1, <32 x i16> %a04266  %4 = bitcast i32 %mask to <32 x i1>4267  %5 = select <32 x i1> %4, <32 x i16> %3, <32 x i16> zeroinitializer4268  ret <32 x i16> %54269}4270 4271define <64 x i8> @stack_fold_pminub(<64 x i8> %a0, <64 x i8> %a1) {4272; CHECK-LABEL: stack_fold_pminub:4273; CHECK:       # %bb.0:4274; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4275; CHECK-NEXT:    #APP4276; CHECK-NEXT:    nop4277; CHECK-NEXT:    #NO_APP4278; CHECK-NEXT:    vpminub {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload4279; CHECK-NEXT:    retq4280  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4281  %2 = icmp ult <64 x i8> %a0, %a14282  %3 = select <64 x i1> %2, <64 x i8> %a0, <64 x i8> %a14283  ret <64 x i8> %34284}4285 4286define <64 x i8> @stack_fold_pminub_commuted(<64 x i8> %a0, <64 x i8> %a1) {4287; CHECK-LABEL: stack_fold_pminub_commuted:4288; CHECK:       # %bb.0:4289; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4290; CHECK-NEXT:    #APP4291; CHECK-NEXT:    nop4292; CHECK-NEXT:    #NO_APP4293; CHECK-NEXT:    vpminub {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload4294; CHECK-NEXT:    retq4295  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4296  %2 = icmp ult <64 x i8> %a1, %a04297  %3 = select <64 x i1> %2, <64 x i8> %a1, <64 x i8> %a04298  ret <64 x i8> %34299}4300 4301define <64 x i8> @stack_fold_pminub_mask(<64 x i8> %a0, <64 x i8> %a1, i64 %mask, ptr %passthru) {4302; CHECK-LABEL: stack_fold_pminub_mask:4303; CHECK:       # %bb.0:4304; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4305; CHECK-NEXT:    #APP4306; CHECK-NEXT:    nop4307; CHECK-NEXT:    #NO_APP4308; CHECK-NEXT:    kmovq %rdi, %k14309; CHECK-NEXT:    vmovdqa64 (%rsi), %zmm24310; CHECK-NEXT:    vpminub {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload4311; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm04312; CHECK-NEXT:    retq4313  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4314  %2 = icmp ult <64 x i8> %a0, %a14315  %3 = select <64 x i1> %2, <64 x i8> %a0, <64 x i8> %a14316  %4 = bitcast i64 %mask to <64 x i1>4317  ; load needed to keep the operation from being scheduled about the asm block4318  %5 = load <64 x i8>, ptr %passthru4319  %6 = select <64 x i1> %4, <64 x i8> %3, <64 x i8> %54320  ret <64 x i8> %64321}4322 4323define <64 x i8> @stack_fold_pminub_mask_commuted(<64 x i8> %a0, <64 x i8> %a1, i64 %mask, ptr %passthru) {4324; CHECK-LABEL: stack_fold_pminub_mask_commuted:4325; CHECK:       # %bb.0:4326; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4327; CHECK-NEXT:    #APP4328; CHECK-NEXT:    nop4329; CHECK-NEXT:    #NO_APP4330; CHECK-NEXT:    kmovq %rdi, %k14331; CHECK-NEXT:    vmovdqa64 (%rsi), %zmm24332; CHECK-NEXT:    vpminub {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload4333; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm04334; CHECK-NEXT:    retq4335  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4336  %2 = icmp ult <64 x i8> %a1, %a04337  %3 = select <64 x i1> %2, <64 x i8> %a1, <64 x i8> %a04338  %4 = bitcast i64 %mask to <64 x i1>4339  ; load needed to keep the operation from being scheduled about the asm block4340  %5 = load <64 x i8>, ptr %passthru4341  %6 = select <64 x i1> %4, <64 x i8> %3, <64 x i8> %54342  ret <64 x i8> %64343}4344 4345define <64 x i8> @stack_fold_pminub_maskz(<64 x i8> %a0, <64 x i8> %a1, i64 %mask) {4346; CHECK-LABEL: stack_fold_pminub_maskz:4347; CHECK:       # %bb.0:4348; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4349; CHECK-NEXT:    #APP4350; CHECK-NEXT:    nop4351; CHECK-NEXT:    #NO_APP4352; CHECK-NEXT:    kmovq %rdi, %k14353; CHECK-NEXT:    vpminub {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload4354; CHECK-NEXT:    retq4355  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4356  %2 = icmp ult <64 x i8> %a0, %a14357  %3 = select <64 x i1> %2, <64 x i8> %a0, <64 x i8> %a14358  %4 = bitcast i64 %mask to <64 x i1>4359  %5 = select <64 x i1> %4, <64 x i8> %3, <64 x i8> zeroinitializer4360  ret <64 x i8> %54361}4362 4363define <64 x i8> @stack_fold_pminub_maskz_commuted(<64 x i8> %a0, <64 x i8> %a1, i64 %mask) {4364; CHECK-LABEL: stack_fold_pminub_maskz_commuted:4365; CHECK:       # %bb.0:4366; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4367; CHECK-NEXT:    #APP4368; CHECK-NEXT:    nop4369; CHECK-NEXT:    #NO_APP4370; CHECK-NEXT:    kmovq %rdi, %k14371; CHECK-NEXT:    vpminub {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload4372; CHECK-NEXT:    retq4373  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4374  %2 = icmp ult <64 x i8> %a1, %a04375  %3 = select <64 x i1> %2, <64 x i8> %a1, <64 x i8> %a04376  %4 = bitcast i64 %mask to <64 x i1>4377  %5 = select <64 x i1> %4, <64 x i8> %3, <64 x i8> zeroinitializer4378  ret <64 x i8> %54379}4380 4381define <16 x i32> @stack_fold_pminud(<16 x i32> %a0, <16 x i32> %a1) {4382; CHECK-LABEL: stack_fold_pminud:4383; CHECK:       # %bb.0:4384; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4385; CHECK-NEXT:    #APP4386; CHECK-NEXT:    nop4387; CHECK-NEXT:    #NO_APP4388; CHECK-NEXT:    vpminud {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload4389; CHECK-NEXT:    retq4390  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4391  %2 = icmp ult <16 x i32> %a0, %a14392  %3 = select <16 x i1> %2, <16 x i32> %a0, <16 x i32> %a14393  ret <16 x i32> %34394}4395 4396define <16 x i32> @stack_fold_pminud_commuted(<16 x i32> %a0, <16 x i32> %a1) {4397; CHECK-LABEL: stack_fold_pminud_commuted:4398; CHECK:       # %bb.0:4399; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4400; CHECK-NEXT:    #APP4401; CHECK-NEXT:    nop4402; CHECK-NEXT:    #NO_APP4403; CHECK-NEXT:    vpminud {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload4404; CHECK-NEXT:    retq4405  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4406  %2 = icmp ult <16 x i32> %a1, %a04407  %3 = select <16 x i1> %2, <16 x i32> %a1, <16 x i32> %a04408  ret <16 x i32> %34409}4410 4411define <16 x i32> @stack_fold_pminud_mask(<16 x i32> %a0, <16 x i32> %a1, i16 %mask, ptr %passthru) {4412; CHECK-LABEL: stack_fold_pminud_mask:4413; CHECK:       # %bb.0:4414; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4415; CHECK-NEXT:    #APP4416; CHECK-NEXT:    nop4417; CHECK-NEXT:    #NO_APP4418; CHECK-NEXT:    kmovd %edi, %k14419; CHECK-NEXT:    vmovdqa64 (%rsi), %zmm24420; CHECK-NEXT:    vpminud {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload4421; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm04422; CHECK-NEXT:    retq4423  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4424  %2 = icmp ult <16 x i32> %a0, %a14425  %3 = select <16 x i1> %2, <16 x i32> %a0, <16 x i32> %a14426  %4 = bitcast i16 %mask to <16 x i1>4427  ; load needed to keep the operation from being scheduled about the asm block4428  %5 = load <16 x i32>, ptr %passthru4429  %6 = select <16 x i1> %4, <16 x i32> %3, <16 x i32> %54430  ret <16 x i32> %64431}4432 4433define <16 x i32> @stack_fold_pminud_mask_commuted(<16 x i32> %a0, <16 x i32> %a1, i16 %mask, ptr %passthru) {4434; CHECK-LABEL: stack_fold_pminud_mask_commuted:4435; CHECK:       # %bb.0:4436; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4437; CHECK-NEXT:    #APP4438; CHECK-NEXT:    nop4439; CHECK-NEXT:    #NO_APP4440; CHECK-NEXT:    kmovd %edi, %k14441; CHECK-NEXT:    vmovdqa64 (%rsi), %zmm24442; CHECK-NEXT:    vpminud {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload4443; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm04444; CHECK-NEXT:    retq4445  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4446  %2 = icmp ult <16 x i32> %a1, %a04447  %3 = select <16 x i1> %2, <16 x i32> %a1, <16 x i32> %a04448  %4 = bitcast i16 %mask to <16 x i1>4449  ; load needed to keep the operation from being scheduled about the asm block4450  %5 = load <16 x i32>, ptr %passthru4451  %6 = select <16 x i1> %4, <16 x i32> %3, <16 x i32> %54452  ret <16 x i32> %64453}4454 4455define <16 x i32> @stack_fold_pminud_maskz(<16 x i32> %a0, <16 x i32> %a1, i16 %mask) {4456; CHECK-LABEL: stack_fold_pminud_maskz:4457; CHECK:       # %bb.0:4458; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4459; CHECK-NEXT:    #APP4460; CHECK-NEXT:    nop4461; CHECK-NEXT:    #NO_APP4462; CHECK-NEXT:    kmovd %edi, %k14463; CHECK-NEXT:    vpminud {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload4464; CHECK-NEXT:    retq4465  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4466  %2 = icmp ult <16 x i32> %a0, %a14467  %3 = select <16 x i1> %2, <16 x i32> %a0, <16 x i32> %a14468  %4 = bitcast i16 %mask to <16 x i1>4469  %5 = select <16 x i1> %4, <16 x i32> %3, <16 x i32> zeroinitializer4470  ret <16 x i32> %54471}4472 4473define <16 x i32> @stack_fold_pminud_maskz_commuted(<16 x i32> %a0, <16 x i32> %a1, i16 %mask) {4474; CHECK-LABEL: stack_fold_pminud_maskz_commuted:4475; CHECK:       # %bb.0:4476; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4477; CHECK-NEXT:    #APP4478; CHECK-NEXT:    nop4479; CHECK-NEXT:    #NO_APP4480; CHECK-NEXT:    kmovd %edi, %k14481; CHECK-NEXT:    vpminud {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload4482; CHECK-NEXT:    retq4483  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4484  %2 = icmp ult <16 x i32> %a1, %a04485  %3 = select <16 x i1> %2, <16 x i32> %a1, <16 x i32> %a04486  %4 = bitcast i16 %mask to <16 x i1>4487  %5 = select <16 x i1> %4, <16 x i32> %3, <16 x i32> zeroinitializer4488  ret <16 x i32> %54489}4490 4491define <8 x i64> @stack_fold_pminuq(<8 x i64> %a0, <8 x i64> %a1) {4492; CHECK-LABEL: stack_fold_pminuq:4493; CHECK:       # %bb.0:4494; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4495; CHECK-NEXT:    #APP4496; CHECK-NEXT:    nop4497; CHECK-NEXT:    #NO_APP4498; CHECK-NEXT:    vpminuq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload4499; CHECK-NEXT:    retq4500  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4501  %2 = icmp ult <8 x i64> %a0, %a14502  %3 = select <8 x i1> %2, <8 x i64> %a0, <8 x i64> %a14503  ret <8 x i64> %34504}4505 4506define <8 x i64> @stack_fold_pminuq_commuted(<8 x i64> %a0, <8 x i64> %a1) {4507; CHECK-LABEL: stack_fold_pminuq_commuted:4508; CHECK:       # %bb.0:4509; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4510; CHECK-NEXT:    #APP4511; CHECK-NEXT:    nop4512; CHECK-NEXT:    #NO_APP4513; CHECK-NEXT:    vpminuq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload4514; CHECK-NEXT:    retq4515  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4516  %2 = icmp ult <8 x i64> %a1, %a04517  %3 = select <8 x i1> %2, <8 x i64> %a1, <8 x i64> %a04518  ret <8 x i64> %34519}4520 4521define <8 x i64> @stack_fold_pminuq_mask(<8 x i64> %a0, <8 x i64> %a1, i8 %mask, ptr %passthru) {4522; CHECK-LABEL: stack_fold_pminuq_mask:4523; CHECK:       # %bb.0:4524; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4525; CHECK-NEXT:    #APP4526; CHECK-NEXT:    nop4527; CHECK-NEXT:    #NO_APP4528; CHECK-NEXT:    kmovd %edi, %k14529; CHECK-NEXT:    vmovdqa64 (%rsi), %zmm24530; CHECK-NEXT:    vpminuq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload4531; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm04532; CHECK-NEXT:    retq4533  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4534  %2 = icmp ult <8 x i64> %a0, %a14535  %3 = select <8 x i1> %2, <8 x i64> %a0, <8 x i64> %a14536  %4 = bitcast i8 %mask to <8 x i1>4537  ; load needed to keep the operation from being scheduled about the asm block4538  %5 = load <8 x i64>, ptr %passthru4539  %6 = select <8 x i1> %4, <8 x i64> %3, <8 x i64> %54540  ret <8 x i64> %64541}4542 4543define <8 x i64> @stack_fold_pminuq_mask_commuted(<8 x i64> %a0, <8 x i64> %a1, i8 %mask, ptr %passthru) {4544; CHECK-LABEL: stack_fold_pminuq_mask_commuted:4545; CHECK:       # %bb.0:4546; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4547; CHECK-NEXT:    #APP4548; CHECK-NEXT:    nop4549; CHECK-NEXT:    #NO_APP4550; CHECK-NEXT:    kmovd %edi, %k14551; CHECK-NEXT:    vmovdqa64 (%rsi), %zmm24552; CHECK-NEXT:    vpminuq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload4553; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm04554; CHECK-NEXT:    retq4555  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4556  %2 = icmp ult <8 x i64> %a1, %a04557  %3 = select <8 x i1> %2, <8 x i64> %a1, <8 x i64> %a04558  %4 = bitcast i8 %mask to <8 x i1>4559  ; load needed to keep the operation from being scheduled about the asm block4560  %5 = load <8 x i64>, ptr %passthru4561  %6 = select <8 x i1> %4, <8 x i64> %3, <8 x i64> %54562  ret <8 x i64> %64563}4564 4565define <8 x i64> @stack_fold_pminuq_maskz(<8 x i64> %a0, <8 x i64> %a1, i8 %mask) {4566; CHECK-LABEL: stack_fold_pminuq_maskz:4567; CHECK:       # %bb.0:4568; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4569; CHECK-NEXT:    #APP4570; CHECK-NEXT:    nop4571; CHECK-NEXT:    #NO_APP4572; CHECK-NEXT:    kmovd %edi, %k14573; CHECK-NEXT:    vpminuq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload4574; CHECK-NEXT:    retq4575  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4576  %2 = icmp ult <8 x i64> %a0, %a14577  %3 = select <8 x i1> %2, <8 x i64> %a0, <8 x i64> %a14578  %4 = bitcast i8 %mask to <8 x i1>4579  %5 = select <8 x i1> %4, <8 x i64> %3, <8 x i64> zeroinitializer4580  ret <8 x i64> %54581}4582 4583define <8 x i64> @stack_fold_pminuq_maskz_commuted(<8 x i64> %a0, <8 x i64> %a1, i8 %mask) {4584; CHECK-LABEL: stack_fold_pminuq_maskz_commuted:4585; CHECK:       # %bb.0:4586; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4587; CHECK-NEXT:    #APP4588; CHECK-NEXT:    nop4589; CHECK-NEXT:    #NO_APP4590; CHECK-NEXT:    kmovd %edi, %k14591; CHECK-NEXT:    vpminuq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload4592; CHECK-NEXT:    retq4593  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4594  %2 = icmp ult <8 x i64> %a1, %a04595  %3 = select <8 x i1> %2, <8 x i64> %a1, <8 x i64> %a04596  %4 = bitcast i8 %mask to <8 x i1>4597  %5 = select <8 x i1> %4, <8 x i64> %3, <8 x i64> zeroinitializer4598  ret <8 x i64> %54599}4600 4601define <32 x i16> @stack_fold_pminuw(<32 x i16> %a0, <32 x i16> %a1) {4602; CHECK-LABEL: stack_fold_pminuw:4603; CHECK:       # %bb.0:4604; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4605; CHECK-NEXT:    #APP4606; CHECK-NEXT:    nop4607; CHECK-NEXT:    #NO_APP4608; CHECK-NEXT:    vpminuw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload4609; CHECK-NEXT:    retq4610  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4611  %2 = icmp ult <32 x i16> %a0, %a14612  %3 = select <32 x i1> %2, <32 x i16> %a0, <32 x i16> %a14613  ret <32 x i16> %34614}4615 4616define <32 x i16> @stack_fold_pminuw_commuted(<32 x i16> %a0, <32 x i16> %a1) {4617; CHECK-LABEL: stack_fold_pminuw_commuted:4618; CHECK:       # %bb.0:4619; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4620; CHECK-NEXT:    #APP4621; CHECK-NEXT:    nop4622; CHECK-NEXT:    #NO_APP4623; CHECK-NEXT:    vpminuw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload4624; CHECK-NEXT:    retq4625  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4626  %2 = icmp ult <32 x i16> %a1, %a04627  %3 = select <32 x i1> %2, <32 x i16> %a1, <32 x i16> %a04628  ret <32 x i16> %34629}4630 4631define <32 x i16> @stack_fold_pminuw_mask(<32 x i16> %a0, <32 x i16> %a1, i32 %mask, ptr %passthru) {4632; CHECK-LABEL: stack_fold_pminuw_mask:4633; CHECK:       # %bb.0:4634; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4635; CHECK-NEXT:    #APP4636; CHECK-NEXT:    nop4637; CHECK-NEXT:    #NO_APP4638; CHECK-NEXT:    kmovd %edi, %k14639; CHECK-NEXT:    vmovdqa64 (%rsi), %zmm24640; CHECK-NEXT:    vpminuw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload4641; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm04642; CHECK-NEXT:    retq4643  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4644  %2 = icmp ult <32 x i16> %a0, %a14645  %3 = select <32 x i1> %2, <32 x i16> %a0, <32 x i16> %a14646  %4 = bitcast i32 %mask to <32 x i1>4647  ; load needed to keep the operation from being scheduled about the asm block4648  %5 = load <32 x i16>, ptr %passthru4649  %6 = select <32 x i1> %4, <32 x i16> %3, <32 x i16> %54650  ret <32 x i16> %64651}4652 4653define <32 x i16> @stack_fold_pminuw_mask_commuted(<32 x i16> %a0, <32 x i16> %a1, i32 %mask, ptr %passthru) {4654; CHECK-LABEL: stack_fold_pminuw_mask_commuted:4655; CHECK:       # %bb.0:4656; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4657; CHECK-NEXT:    #APP4658; CHECK-NEXT:    nop4659; CHECK-NEXT:    #NO_APP4660; CHECK-NEXT:    kmovd %edi, %k14661; CHECK-NEXT:    vmovdqa64 (%rsi), %zmm24662; CHECK-NEXT:    vpminuw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload4663; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm04664; CHECK-NEXT:    retq4665  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4666  %2 = icmp ult <32 x i16> %a1, %a04667  %3 = select <32 x i1> %2, <32 x i16> %a1, <32 x i16> %a04668  %4 = bitcast i32 %mask to <32 x i1>4669  ; load needed to keep the operation from being scheduled about the asm block4670  %5 = load <32 x i16>, ptr %passthru4671  %6 = select <32 x i1> %4, <32 x i16> %3, <32 x i16> %54672  ret <32 x i16> %64673}4674 4675define <32 x i16> @stack_fold_pminuw_maskz(<32 x i16> %a0, <32 x i16> %a1, i32 %mask) {4676; CHECK-LABEL: stack_fold_pminuw_maskz:4677; CHECK:       # %bb.0:4678; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4679; CHECK-NEXT:    #APP4680; CHECK-NEXT:    nop4681; CHECK-NEXT:    #NO_APP4682; CHECK-NEXT:    kmovd %edi, %k14683; CHECK-NEXT:    vpminuw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload4684; CHECK-NEXT:    retq4685  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4686  %2 = icmp ult <32 x i16> %a0, %a14687  %3 = select <32 x i1> %2, <32 x i16> %a0, <32 x i16> %a14688  %4 = bitcast i32 %mask to <32 x i1>4689  %5 = select <32 x i1> %4, <32 x i16> %3, <32 x i16> zeroinitializer4690  ret <32 x i16> %54691}4692 4693define <32 x i16> @stack_fold_pminuw_maskz_commuted(<32 x i16> %a0, <32 x i16> %a1, i32 %mask) {4694; CHECK-LABEL: stack_fold_pminuw_maskz_commuted:4695; CHECK:       # %bb.0:4696; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill4697; CHECK-NEXT:    #APP4698; CHECK-NEXT:    nop4699; CHECK-NEXT:    #NO_APP4700; CHECK-NEXT:    kmovd %edi, %k14701; CHECK-NEXT:    vpminuw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload4702; CHECK-NEXT:    retq4703  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4704  %2 = icmp ult <32 x i16> %a1, %a04705  %3 = select <32 x i1> %2, <32 x i16> %a1, <32 x i16> %a04706  %4 = bitcast i32 %mask to <32 x i1>4707  %5 = select <32 x i1> %4, <32 x i16> %3, <32 x i16> zeroinitializer4708  ret <32 x i16> %54709}4710 4711define <16 x i8> @stack_fold_vpmovdb(<16 x i32> %a0) {4712; CHECK-LABEL: stack_fold_vpmovdb:4713; CHECK:       # %bb.0:4714; CHECK-NEXT:    vpmovdb %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Folded Spill4715; CHECK-NEXT:    #APP4716; CHECK-NEXT:    nop4717; CHECK-NEXT:    #NO_APP4718; CHECK-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4719; CHECK-NEXT:    vzeroupper4720; CHECK-NEXT:    retq4721  %1 = call <16 x i8> @llvm.x86.avx512.mask.pmov.db.512(<16 x i32> %a0, <16 x i8> undef, i16 -1)4722  %2 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4723  ret <16 x i8> %14724}4725declare <16 x i8> @llvm.x86.avx512.mask.pmov.db.512(<16 x i32>, <16 x i8>, i16)4726 4727define <16 x i16> @stack_fold_vpmovdw(<16 x i32> %a0) {4728; CHECK-LABEL: stack_fold_vpmovdw:4729; CHECK:       # %bb.0:4730; CHECK-NEXT:    vpmovdw %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Folded Spill4731; CHECK-NEXT:    #APP4732; CHECK-NEXT:    nop4733; CHECK-NEXT:    #NO_APP4734; CHECK-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4735; CHECK-NEXT:    retq4736  %1 = call <16 x i16> @llvm.x86.avx512.mask.pmov.dw.512(<16 x i32> %a0, <16 x i16> undef, i16 -1)4737  %2 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4738  ret <16 x i16> %14739}4740declare <16 x i16> @llvm.x86.avx512.mask.pmov.dw.512(<16 x i32>, <16 x i16>, i16)4741 4742define <2 x i64> @stack_fold_movq_load(<2 x i64> %a0) {4743; CHECK-LABEL: stack_fold_movq_load:4744; CHECK:       # %bb.0:4745; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4746; CHECK-NEXT:    #APP4747; CHECK-NEXT:    nop4748; CHECK-NEXT:    #NO_APP4749; CHECK-NEXT:    vmovq {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload4750; CHECK-NEXT:    # xmm0 = mem[0],zero4751; CHECK-NEXT:    vpcmpeqd %xmm1, %xmm1, %xmm14752; CHECK-NEXT:    vpsubq %xmm1, %xmm0, %xmm04753; CHECK-NEXT:    retq4754  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4755  %2 = shufflevector <2 x i64> %a0, <2 x i64> zeroinitializer, <2 x i32> <i32 0, i32 2>4756  ; add forces execution domain4757  %3 = add <2 x i64> %2, <i64 1, i64 1>4758  ret <2 x i64> %34759}4760 4761define <8 x i32> @stack_fold_vpmovqd(<8 x i64> %a0) {4762; CHECK-LABEL: stack_fold_vpmovqd:4763; CHECK:       # %bb.0:4764; CHECK-NEXT:    vpmovqd %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Folded Spill4765; CHECK-NEXT:    #APP4766; CHECK-NEXT:    nop4767; CHECK-NEXT:    #NO_APP4768; CHECK-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4769; CHECK-NEXT:    retq4770  %1 = trunc <8 x i64> %a0 to <8 x i32>4771  %2 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4772  ret <8 x i32> %14773}4774declare <8 x i32> @llvm.x86.avx512.mask.pmov.qd.512(<8 x i64>, <8 x i32>, i8)4775 4776define <8 x i16> @stack_fold_vpmovqw(<8 x i64> %a0) {4777; CHECK-LABEL: stack_fold_vpmovqw:4778; CHECK:       # %bb.0:4779; CHECK-NEXT:    vpmovqw %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Folded Spill4780; CHECK-NEXT:    #APP4781; CHECK-NEXT:    nop4782; CHECK-NEXT:    #NO_APP4783; CHECK-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4784; CHECK-NEXT:    vzeroupper4785; CHECK-NEXT:    retq4786  %1 = call <8 x i16> @llvm.x86.avx512.mask.pmov.qw.512(<8 x i64> %a0, <8 x i16> undef, i8 -1)4787  %2 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4788  ret <8 x i16> %14789}4790declare <8 x i16> @llvm.x86.avx512.mask.pmov.qw.512(<8 x i64>, <8 x i16>, i8)4791 4792define <32 x i8> @stack_fold_vpmovwb(<32 x i16> %a0) {4793; CHECK-LABEL: stack_fold_vpmovwb:4794; CHECK:       # %bb.0:4795; CHECK-NEXT:    vpmovwb %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Folded Spill4796; CHECK-NEXT:    #APP4797; CHECK-NEXT:    nop4798; CHECK-NEXT:    #NO_APP4799; CHECK-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4800; CHECK-NEXT:    retq4801  %1 = trunc <32 x i16> %a0 to <32 x i8>4802  %2 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4803  ret <32 x i8> %14804}4805declare <32 x i8> @llvm.x86.avx512.mask.pmov.wb.512(<32 x i16>, <32 x i8>, i32)4806 4807define <16 x i8> @stack_fold_vpmovsdb(<16 x i32> %a0) {4808; CHECK-LABEL: stack_fold_vpmovsdb:4809; CHECK:       # %bb.0:4810; CHECK-NEXT:    vpmovsdb %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Folded Spill4811; CHECK-NEXT:    #APP4812; CHECK-NEXT:    nop4813; CHECK-NEXT:    #NO_APP4814; CHECK-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4815; CHECK-NEXT:    vzeroupper4816; CHECK-NEXT:    retq4817  %1 = call <16 x i8> @llvm.x86.avx512.mask.pmovs.db.512(<16 x i32> %a0, <16 x i8> undef, i16 -1)4818  %2 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4819  ret <16 x i8> %14820}4821declare <16 x i8> @llvm.x86.avx512.mask.pmovs.db.512(<16 x i32>, <16 x i8>, i16)4822 4823define <16 x i16> @stack_fold_vpmovsdw(<16 x i32> %a0) {4824; CHECK-LABEL: stack_fold_vpmovsdw:4825; CHECK:       # %bb.0:4826; CHECK-NEXT:    vpmovsdw %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Folded Spill4827; CHECK-NEXT:    #APP4828; CHECK-NEXT:    nop4829; CHECK-NEXT:    #NO_APP4830; CHECK-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4831; CHECK-NEXT:    retq4832  %1 = call <16 x i16> @llvm.x86.avx512.mask.pmovs.dw.512(<16 x i32> %a0, <16 x i16> undef, i16 -1)4833  %2 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4834  ret <16 x i16> %14835}4836declare <16 x i16> @llvm.x86.avx512.mask.pmovs.dw.512(<16 x i32>, <16 x i16>, i16)4837 4838define <8 x i32> @stack_fold_vpmovsqd(<8 x i64> %a0) {4839; CHECK-LABEL: stack_fold_vpmovsqd:4840; CHECK:       # %bb.0:4841; CHECK-NEXT:    vpmovsqd %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Folded Spill4842; CHECK-NEXT:    #APP4843; CHECK-NEXT:    nop4844; CHECK-NEXT:    #NO_APP4845; CHECK-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4846; CHECK-NEXT:    retq4847  %1 = call <8 x i32> @llvm.x86.avx512.mask.pmovs.qd.512(<8 x i64> %a0, <8 x i32> undef, i8 -1)4848  %2 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4849  ret <8 x i32> %14850}4851declare <8 x i32> @llvm.x86.avx512.mask.pmovs.qd.512(<8 x i64>, <8 x i32>, i8)4852 4853define <8 x i16> @stack_fold_vpmovsqw(<8 x i64> %a0) {4854; CHECK-LABEL: stack_fold_vpmovsqw:4855; CHECK:       # %bb.0:4856; CHECK-NEXT:    vpmovsqw %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Folded Spill4857; CHECK-NEXT:    #APP4858; CHECK-NEXT:    nop4859; CHECK-NEXT:    #NO_APP4860; CHECK-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload4861; CHECK-NEXT:    vzeroupper4862; CHECK-NEXT:    retq4863  %1 = call <8 x i16> @llvm.x86.avx512.mask.pmovs.qw.512(<8 x i64> %a0, <8 x i16> undef, i8 -1)4864  %2 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4865  ret <8 x i16> %14866}4867declare <8 x i16> @llvm.x86.avx512.mask.pmovs.qw.512(<8 x i64>, <8 x i16>, i8)4868 4869define <32 x i8> @stack_fold_vpmovswb(<32 x i16> %a0) {4870; CHECK-LABEL: stack_fold_vpmovswb:4871; CHECK:       # %bb.0:4872; CHECK-NEXT:    vpmovswb %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Folded Spill4873; CHECK-NEXT:    #APP4874; CHECK-NEXT:    nop4875; CHECK-NEXT:    #NO_APP4876; CHECK-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload4877; CHECK-NEXT:    retq4878  %1 = call <32 x i8> @llvm.x86.avx512.mask.pmovs.wb.512(<32 x i16> %a0, <32 x i8> undef, i32 -1)4879  %2 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4880  ret <32 x i8> %14881}4882declare <32 x i8> @llvm.x86.avx512.mask.pmovs.wb.512(<32 x i16>, <32 x i8>, i32)4883 4884define <16 x i32> @stack_fold_pmovsxbd_zmm(<16 x i8> %a0) {4885; CHECK-LABEL: stack_fold_pmovsxbd_zmm:4886; CHECK:       # %bb.0:4887; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4888; CHECK-NEXT:    #APP4889; CHECK-NEXT:    nop4890; CHECK-NEXT:    #NO_APP4891; CHECK-NEXT:    vpmovsxbd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 16-byte Folded Reload4892; CHECK-NEXT:    retq4893  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4894  %2 = sext <16 x i8> %a0 to <16 x i32>4895  ret <16 x i32> %24896}4897 4898define <8 x i64> @stack_fold_pmovsxbq_zmm(<16 x i8> %a0) {4899; CHECK-LABEL: stack_fold_pmovsxbq_zmm:4900; CHECK:       # %bb.0:4901; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4902; CHECK-NEXT:    #APP4903; CHECK-NEXT:    nop4904; CHECK-NEXT:    #NO_APP4905; CHECK-NEXT:    vpmovsxbq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 16-byte Folded Reload4906; CHECK-NEXT:    retq4907  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4908  %2 = shufflevector <16 x i8> %a0, <16 x i8> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>4909  %3 = sext <8 x i8> %2 to <8 x i64>4910  ret <8 x i64> %34911}4912 4913define <32 x i16> @stack_fold_pmovsxbw_zmm(<32 x i8> %a0) {4914; CHECK-LABEL: stack_fold_pmovsxbw_zmm:4915; CHECK:       # %bb.0:4916; CHECK-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4917; CHECK-NEXT:    #APP4918; CHECK-NEXT:    nop4919; CHECK-NEXT:    #NO_APP4920; CHECK-NEXT:    vpmovsxbw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 32-byte Folded Reload4921; CHECK-NEXT:    retq4922  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4923  %2 = sext <32 x i8> %a0 to <32 x i16>4924  ret <32 x i16> %24925}4926 4927define <8 x i64> @stack_fold_pmovsxdq_zmm(<8 x i32> %a0) {4928; CHECK-LABEL: stack_fold_pmovsxdq_zmm:4929; CHECK:       # %bb.0:4930; CHECK-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4931; CHECK-NEXT:    #APP4932; CHECK-NEXT:    nop4933; CHECK-NEXT:    #NO_APP4934; CHECK-NEXT:    vpmovsxdq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 32-byte Folded Reload4935; CHECK-NEXT:    retq4936  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4937  %2 = sext <8 x i32> %a0 to <8 x i64>4938  ret <8 x i64> %24939}4940 4941define <16 x i32> @stack_fold_pmovsxwd_zmm(<16 x i16> %a0) {4942; CHECK-LABEL: stack_fold_pmovsxwd_zmm:4943; CHECK:       # %bb.0:4944; CHECK-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill4945; CHECK-NEXT:    #APP4946; CHECK-NEXT:    nop4947; CHECK-NEXT:    #NO_APP4948; CHECK-NEXT:    vpmovsxwd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 32-byte Folded Reload4949; CHECK-NEXT:    retq4950  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4951  %2 = sext <16 x i16> %a0 to <16 x i32>4952  ret <16 x i32> %24953}4954 4955define <8 x i64> @stack_fold_pmovsxwq_zmm(<8 x i16> %a0) {4956; CHECK-LABEL: stack_fold_pmovsxwq_zmm:4957; CHECK:       # %bb.0:4958; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4959; CHECK-NEXT:    #APP4960; CHECK-NEXT:    nop4961; CHECK-NEXT:    #NO_APP4962; CHECK-NEXT:    vpmovsxwq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 16-byte Folded Reload4963; CHECK-NEXT:    retq4964  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4965  %2 = sext <8 x i16> %a0 to <8 x i64>4966  ret <8 x i64> %24967}4968 4969define <8 x i64> @stack_fold_pmovsxwq_mask_zmm(<8 x i64> %passthru, <8 x i16> %a0, i8 %mask) {4970; CHECK-LABEL: stack_fold_pmovsxwq_mask_zmm:4971; CHECK:       # %bb.0:4972; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4973; CHECK-NEXT:    #APP4974; CHECK-NEXT:    nop4975; CHECK-NEXT:    #NO_APP4976; CHECK-NEXT:    kmovd %edi, %k14977; CHECK-NEXT:    vpmovsxwq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 {%k1} # 16-byte Folded Reload4978; CHECK-NEXT:    retq4979  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4980  %2 = sext <8 x i16> %a0 to <8 x i64>4981  %3 = bitcast i8 %mask to <8 x i1>4982  %4 = select <8 x i1> %3, <8 x i64> %2, <8 x i64> %passthru4983  ret <8 x i64> %44984}4985 4986define <8 x i64> @stack_fold_pmovsxwq_maskz_zmm(<8 x i16> %a0, i8 %mask) {4987; CHECK-LABEL: stack_fold_pmovsxwq_maskz_zmm:4988; CHECK:       # %bb.0:4989; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4990; CHECK-NEXT:    #APP4991; CHECK-NEXT:    nop4992; CHECK-NEXT:    #NO_APP4993; CHECK-NEXT:    kmovd %edi, %k14994; CHECK-NEXT:    vpmovsxwq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 {%k1} {z} # 16-byte Folded Reload4995; CHECK-NEXT:    retq4996  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()4997  %2 = sext <8 x i16> %a0 to <8 x i64>4998  %3 = bitcast i8 %mask to <8 x i1>4999  %4 = select <8 x i1> %3, <8 x i64> %2, <8 x i64> zeroinitializer5000  ret <8 x i64> %45001}5002 5003define <16 x i8> @stack_fold_vpmovusdb(<16 x i32> %a0) {5004; CHECK-LABEL: stack_fold_vpmovusdb:5005; CHECK:       # %bb.0:5006; CHECK-NEXT:    vpmovusdb %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Folded Spill5007; CHECK-NEXT:    #APP5008; CHECK-NEXT:    nop5009; CHECK-NEXT:    #NO_APP5010; CHECK-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5011; CHECK-NEXT:    vzeroupper5012; CHECK-NEXT:    retq5013  %1 = call <16 x i8> @llvm.x86.avx512.mask.pmovus.db.512(<16 x i32> %a0, <16 x i8> undef, i16 -1)5014  %2 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5015  ret <16 x i8> %15016}5017declare <16 x i8> @llvm.x86.avx512.mask.pmovus.db.512(<16 x i32>, <16 x i8>, i16)5018 5019define <16 x i16> @stack_fold_vpmovusdw(<16 x i32> %a0) {5020; CHECK-LABEL: stack_fold_vpmovusdw:5021; CHECK:       # %bb.0:5022; CHECK-NEXT:    vpmovusdw %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Folded Spill5023; CHECK-NEXT:    #APP5024; CHECK-NEXT:    nop5025; CHECK-NEXT:    #NO_APP5026; CHECK-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload5027; CHECK-NEXT:    retq5028  %1 = call <16 x i16> @llvm.x86.avx512.mask.pmovus.dw.512(<16 x i32> %a0, <16 x i16> undef, i16 -1)5029  %2 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5030  ret <16 x i16> %15031}5032declare <16 x i16> @llvm.x86.avx512.mask.pmovus.dw.512(<16 x i32>, <16 x i16>, i16)5033 5034define <8 x i32> @stack_fold_vpmovusqd(<8 x i64> %a0) {5035; CHECK-LABEL: stack_fold_vpmovusqd:5036; CHECK:       # %bb.0:5037; CHECK-NEXT:    vpmovusqd %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Folded Spill5038; CHECK-NEXT:    #APP5039; CHECK-NEXT:    nop5040; CHECK-NEXT:    #NO_APP5041; CHECK-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload5042; CHECK-NEXT:    retq5043  %1 = call <8 x i32> @llvm.x86.avx512.mask.pmovus.qd.512(<8 x i64> %a0, <8 x i32> undef, i8 -1)5044  %2 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5045  ret <8 x i32> %15046}5047declare <8 x i32> @llvm.x86.avx512.mask.pmovus.qd.512(<8 x i64>, <8 x i32>, i8)5048 5049define <8 x i16> @stack_fold_vpmovusqw(<8 x i64> %a0) {5050; CHECK-LABEL: stack_fold_vpmovusqw:5051; CHECK:       # %bb.0:5052; CHECK-NEXT:    vpmovusqw %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Folded Spill5053; CHECK-NEXT:    #APP5054; CHECK-NEXT:    nop5055; CHECK-NEXT:    #NO_APP5056; CHECK-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload5057; CHECK-NEXT:    vzeroupper5058; CHECK-NEXT:    retq5059  %1 = call <8 x i16> @llvm.x86.avx512.mask.pmovus.qw.512(<8 x i64> %a0, <8 x i16> undef, i8 -1)5060  %2 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5061  ret <8 x i16> %15062}5063declare <8 x i16> @llvm.x86.avx512.mask.pmovus.qw.512(<8 x i64>, <8 x i16>, i8)5064 5065define <32 x i8> @stack_fold_vpmovuswb(<32 x i16> %a0) {5066; CHECK-LABEL: stack_fold_vpmovuswb:5067; CHECK:       # %bb.0:5068; CHECK-NEXT:    vpmovuswb %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Folded Spill5069; CHECK-NEXT:    #APP5070; CHECK-NEXT:    nop5071; CHECK-NEXT:    #NO_APP5072; CHECK-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload5073; CHECK-NEXT:    retq5074  %1 = call <32 x i8> @llvm.x86.avx512.mask.pmovus.wb.512(<32 x i16> %a0, <32 x i8> undef, i32 -1)5075  %2 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5076  ret <32 x i8> %15077}5078declare <32 x i8> @llvm.x86.avx512.mask.pmovus.wb.512(<32 x i16>, <32 x i8>, i32)5079 5080define <16 x i32> @stack_fold_pmovzxbd_zmm(<16 x i8> %a0) {5081; CHECK-LABEL: stack_fold_pmovzxbd_zmm:5082; CHECK:       # %bb.0:5083; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5084; CHECK-NEXT:    #APP5085; CHECK-NEXT:    nop5086; CHECK-NEXT:    #NO_APP5087; CHECK-NEXT:    vpmovzxbd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 16-byte Folded Reload5088; CHECK-NEXT:    # zmm0 = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero,mem[4],zero,zero,zero,mem[5],zero,zero,zero,mem[6],zero,zero,zero,mem[7],zero,zero,zero,mem[8],zero,zero,zero,mem[9],zero,zero,zero,mem[10],zero,zero,zero,mem[11],zero,zero,zero,mem[12],zero,zero,zero,mem[13],zero,zero,zero,mem[14],zero,zero,zero,mem[15],zero,zero,zero5089; CHECK-NEXT:    retq5090  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5091  %2 = zext <16 x i8> %a0 to <16 x i32>5092  ret <16 x i32> %25093}5094 5095define <8 x i64> @stack_fold_pmovzxbq_zmm(<16 x i8> %a0) {5096; CHECK-LABEL: stack_fold_pmovzxbq_zmm:5097; CHECK:       # %bb.0:5098; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5099; CHECK-NEXT:    #APP5100; CHECK-NEXT:    nop5101; CHECK-NEXT:    #NO_APP5102; CHECK-NEXT:    vpmovzxbq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 16-byte Folded Reload5103; CHECK-NEXT:    # zmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1],zero,zero,zero,zero,zero,zero,zero,mem[2],zero,zero,zero,zero,zero,zero,zero,mem[3],zero,zero,zero,zero,zero,zero,zero,mem[4],zero,zero,zero,zero,zero,zero,zero,mem[5],zero,zero,zero,zero,zero,zero,zero,mem[6],zero,zero,zero,zero,zero,zero,zero,mem[7],zero,zero,zero,zero,zero,zero,zero5104; CHECK-NEXT:    retq5105  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5106  %2 = shufflevector <16 x i8> %a0, <16 x i8> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>5107  %3 = zext <8 x i8> %2 to <8 x i64>5108  ret <8 x i64> %35109}5110 5111define <32 x i16> @stack_fold_pmovzxbw_zmm(<32 x i8> %a0) {5112; CHECK-LABEL: stack_fold_pmovzxbw_zmm:5113; CHECK:       # %bb.0:5114; CHECK-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5115; CHECK-NEXT:    #APP5116; CHECK-NEXT:    nop5117; CHECK-NEXT:    #NO_APP5118; CHECK-NEXT:    vpmovzxbw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 32-byte Folded Reload5119; CHECK-NEXT:    # zmm0 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero,mem[4],zero,mem[5],zero,mem[6],zero,mem[7],zero,mem[8],zero,mem[9],zero,mem[10],zero,mem[11],zero,mem[12],zero,mem[13],zero,mem[14],zero,mem[15],zero,mem[16],zero,mem[17],zero,mem[18],zero,mem[19],zero,mem[20],zero,mem[21],zero,mem[22],zero,mem[23],zero,mem[24],zero,mem[25],zero,mem[26],zero,mem[27],zero,mem[28],zero,mem[29],zero,mem[30],zero,mem[31],zero5120; CHECK-NEXT:    retq5121  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5122  %2 = zext <32 x i8> %a0 to <32 x i16>5123  ret <32 x i16> %25124}5125 5126define <8 x i64> @stack_fold_pmovzxdq_zmm(<8 x i32> %a0) {5127; CHECK-LABEL: stack_fold_pmovzxdq_zmm:5128; CHECK:       # %bb.0:5129; CHECK-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5130; CHECK-NEXT:    #APP5131; CHECK-NEXT:    nop5132; CHECK-NEXT:    #NO_APP5133; CHECK-NEXT:    vpmovzxdq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 32-byte Folded Reload5134; CHECK-NEXT:    # zmm0 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero,mem[4],zero,mem[5],zero,mem[6],zero,mem[7],zero5135; CHECK-NEXT:    retq5136  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5137  %2 = zext <8 x i32> %a0 to <8 x i64>5138  ret <8 x i64> %25139}5140 5141define <16 x i32> @stack_fold_pmovzxwd_zmm(<16 x i16> %a0) {5142; CHECK-LABEL: stack_fold_pmovzxwd_zmm:5143; CHECK:       # %bb.0:5144; CHECK-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill5145; CHECK-NEXT:    #APP5146; CHECK-NEXT:    nop5147; CHECK-NEXT:    #NO_APP5148; CHECK-NEXT:    vpmovzxwd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 32-byte Folded Reload5149; CHECK-NEXT:    # zmm0 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero,mem[4],zero,mem[5],zero,mem[6],zero,mem[7],zero,mem[8],zero,mem[9],zero,mem[10],zero,mem[11],zero,mem[12],zero,mem[13],zero,mem[14],zero,mem[15],zero5150; CHECK-NEXT:    retq5151  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5152  %2 = zext <16 x i16> %a0 to <16 x i32>5153  ret <16 x i32> %25154}5155 5156define <8 x i64> @stack_fold_pmovzxwq_zmm(<8 x i16> %a0) {5157; CHECK-LABEL: stack_fold_pmovzxwq_zmm:5158; CHECK:       # %bb.0:5159; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5160; CHECK-NEXT:    #APP5161; CHECK-NEXT:    nop5162; CHECK-NEXT:    #NO_APP5163; CHECK-NEXT:    vpmovzxwq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 16-byte Folded Reload5164; CHECK-NEXT:    # zmm0 = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero,mem[4],zero,zero,zero,mem[5],zero,zero,zero,mem[6],zero,zero,zero,mem[7],zero,zero,zero5165; CHECK-NEXT:    retq5166  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5167  %2 = zext <8 x i16> %a0 to <8 x i64>5168  ret <8 x i64> %25169}5170 5171define <8 x i64> @stack_fold_pmovzxwq_mask_zmm(<8 x i64> %passthru, <8 x i16> %a0, i8 %mask) {5172; CHECK-LABEL: stack_fold_pmovzxwq_mask_zmm:5173; CHECK:       # %bb.0:5174; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5175; CHECK-NEXT:    #APP5176; CHECK-NEXT:    nop5177; CHECK-NEXT:    #NO_APP5178; CHECK-NEXT:    kmovd %edi, %k15179; CHECK-NEXT:    vpmovzxwq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 {%k1} # 16-byte Folded Reload5180; CHECK-NEXT:    # zmm0 {%k1} = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero,mem[4],zero,zero,zero,mem[5],zero,zero,zero,mem[6],zero,zero,zero,mem[7],zero,zero,zero5181; CHECK-NEXT:    retq5182  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5183  %2 = zext <8 x i16> %a0 to <8 x i64>5184  %3 = bitcast i8 %mask to <8 x i1>5185  %4 = select <8 x i1> %3, <8 x i64> %2, <8 x i64> %passthru5186  ret <8 x i64> %45187}5188 5189define <8 x i64> @stack_fold_pmovzxwq_maskz_zmm(<8 x i16> %a0, i8 %mask) {5190; CHECK-LABEL: stack_fold_pmovzxwq_maskz_zmm:5191; CHECK:       # %bb.0:5192; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill5193; CHECK-NEXT:    #APP5194; CHECK-NEXT:    nop5195; CHECK-NEXT:    #NO_APP5196; CHECK-NEXT:    kmovd %edi, %k15197; CHECK-NEXT:    vpmovzxwq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 {%k1} {z} # 16-byte Folded Reload5198; CHECK-NEXT:    # zmm0 {%k1} {z} = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero,mem[4],zero,zero,zero,mem[5],zero,zero,zero,mem[6],zero,zero,zero,mem[7],zero,zero,zero5199; CHECK-NEXT:    retq5200  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5201  %2 = zext <8 x i16> %a0 to <8 x i64>5202  %3 = bitcast i8 %mask to <8 x i1>5203  %4 = select <8 x i1> %3, <8 x i64> %2, <8 x i64> zeroinitializer5204  ret <8 x i64> %45205}5206 5207define <16 x i32> @stack_fold_pmulld(<16 x i32> %a0, <16 x i32> %a1) {5208; CHECK-LABEL: stack_fold_pmulld:5209; CHECK:       # %bb.0:5210; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5211; CHECK-NEXT:    #APP5212; CHECK-NEXT:    nop5213; CHECK-NEXT:    #NO_APP5214; CHECK-NEXT:    vpmulld {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload5215; CHECK-NEXT:    retq5216  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5217  %2 = mul <16 x i32> %a0, %a15218  ret <16 x i32> %25219}5220 5221define <16 x i32> @stack_fold_pmulld_commuted(<16 x i32> %a0, <16 x i32> %a1) {5222; CHECK-LABEL: stack_fold_pmulld_commuted:5223; CHECK:       # %bb.0:5224; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5225; CHECK-NEXT:    #APP5226; CHECK-NEXT:    nop5227; CHECK-NEXT:    #NO_APP5228; CHECK-NEXT:    vpmulld {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload5229; CHECK-NEXT:    retq5230  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5231  %2 = mul <16 x i32> %a1, %a05232  ret <16 x i32> %25233}5234 5235define <16 x i32> @stack_fold_pmulld_mask(<16 x i32> %a0, <16 x i32> %a1, ptr %a2, i16 %mask) {5236; CHECK-LABEL: stack_fold_pmulld_mask:5237; CHECK:       # %bb.0:5238; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5239; CHECK-NEXT:    vmovdqa64 %zmm0, %zmm15240; CHECK-NEXT:    #APP5241; CHECK-NEXT:    nop5242; CHECK-NEXT:    #NO_APP5243; CHECK-NEXT:    kmovd %esi, %k15244; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm05245; CHECK-NEXT:    vpmulld {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload5246; CHECK-NEXT:    retq5247  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5248  %2 = mul <16 x i32> %a0, %a15249  %3 = bitcast i16 %mask to <16 x i1>5250  ; load needed to keep the operation from being scheduled about the asm block5251  %4 = load <16 x i32>, ptr %a25252  %5 = select <16 x i1> %3, <16 x i32> %2, <16 x i32> %45253  ret <16 x i32> %55254}5255 5256define <16 x i32> @stack_fold_pmulld_mask_commuted(<16 x i32> %a0, <16 x i32> %a1, ptr %a2, i16 %mask) {5257; CHECK-LABEL: stack_fold_pmulld_mask_commuted:5258; CHECK:       # %bb.0:5259; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5260; CHECK-NEXT:    vmovdqa64 %zmm0, %zmm15261; CHECK-NEXT:    #APP5262; CHECK-NEXT:    nop5263; CHECK-NEXT:    #NO_APP5264; CHECK-NEXT:    kmovd %esi, %k15265; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm05266; CHECK-NEXT:    vpmulld {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload5267; CHECK-NEXT:    retq5268  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5269  %2 = mul <16 x i32> %a1, %a05270  %3 = bitcast i16 %mask to <16 x i1>5271  ; load needed to keep the operation from being scheduled about the asm block5272  %4 = load <16 x i32>, ptr %a25273  %5 = select <16 x i1> %3, <16 x i32> %2, <16 x i32> %45274  ret <16 x i32> %55275}5276 5277define <16 x i32> @stack_fold_pmulld_maskz(<16 x i32> %a0, <16 x i32> %a1, i16 %mask) {5278; CHECK-LABEL: stack_fold_pmulld_maskz:5279; CHECK:       # %bb.0:5280; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5281; CHECK-NEXT:    #APP5282; CHECK-NEXT:    nop5283; CHECK-NEXT:    #NO_APP5284; CHECK-NEXT:    kmovd %edi, %k15285; CHECK-NEXT:    vpmulld {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload5286; CHECK-NEXT:    retq5287  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5288  %2 = mul <16 x i32> %a0, %a15289  %3 = bitcast i16 %mask to <16 x i1>5290  %4 = select <16 x i1> %3, <16 x i32> %2, <16 x i32> zeroinitializer5291  ret <16 x i32> %45292}5293 5294define <16 x i32> @stack_fold_pmulld_maskz_commuted(<16 x i32> %a0, <16 x i32> %a1, i16 %mask) {5295; CHECK-LABEL: stack_fold_pmulld_maskz_commuted:5296; CHECK:       # %bb.0:5297; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5298; CHECK-NEXT:    #APP5299; CHECK-NEXT:    nop5300; CHECK-NEXT:    #NO_APP5301; CHECK-NEXT:    kmovd %edi, %k15302; CHECK-NEXT:    vpmulld {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload5303; CHECK-NEXT:    retq5304  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5305  %2 = mul <16 x i32> %a1, %a05306  %3 = bitcast i16 %mask to <16 x i1>5307  %4 = select <16 x i1> %3, <16 x i32> %2, <16 x i32> zeroinitializer5308  ret <16 x i32> %45309}5310 5311define <8 x i64> @stack_fold_pmullq(<8 x i64> %a0, <8 x i64> %a1) {5312; CHECK-LABEL: stack_fold_pmullq:5313; CHECK:       # %bb.0:5314; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5315; CHECK-NEXT:    #APP5316; CHECK-NEXT:    nop5317; CHECK-NEXT:    #NO_APP5318; CHECK-NEXT:    vpmullq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload5319; CHECK-NEXT:    retq5320  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5321  %2 = mul <8 x i64> %a0, %a15322  ret <8 x i64> %25323}5324 5325define <8 x i64> @stack_fold_pmullq_commuted(<8 x i64> %a0, <8 x i64> %a1) {5326; CHECK-LABEL: stack_fold_pmullq_commuted:5327; CHECK:       # %bb.0:5328; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5329; CHECK-NEXT:    #APP5330; CHECK-NEXT:    nop5331; CHECK-NEXT:    #NO_APP5332; CHECK-NEXT:    vpmullq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload5333; CHECK-NEXT:    retq5334  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5335  %2 = mul <8 x i64> %a1, %a05336  ret <8 x i64> %25337}5338 5339define <8 x i64> @stack_fold_pmullq_mask(<8 x i64> %a0, <8 x i64> %a1, ptr %a2, i8 %mask) {5340; CHECK-LABEL: stack_fold_pmullq_mask:5341; CHECK:       # %bb.0:5342; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5343; CHECK-NEXT:    vmovdqa64 %zmm0, %zmm15344; CHECK-NEXT:    #APP5345; CHECK-NEXT:    nop5346; CHECK-NEXT:    #NO_APP5347; CHECK-NEXT:    kmovd %esi, %k15348; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm05349; CHECK-NEXT:    vpmullq {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload5350; CHECK-NEXT:    retq5351  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5352  %2 = mul <8 x i64> %a0, %a15353  %3 = bitcast i8 %mask to <8 x i1>5354  ; load needed to keep the operation from being scheduled about the asm block5355  %4 = load <8 x i64>, ptr %a25356  %5 = select <8 x i1> %3, <8 x i64> %2, <8 x i64> %45357  ret <8 x i64> %55358}5359 5360define <8 x i64> @stack_fold_pmullq_mask_commuted(<8 x i64> %a0, <8 x i64> %a1, ptr %a2, i8 %mask) {5361; CHECK-LABEL: stack_fold_pmullq_mask_commuted:5362; CHECK:       # %bb.0:5363; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5364; CHECK-NEXT:    vmovdqa64 %zmm0, %zmm15365; CHECK-NEXT:    #APP5366; CHECK-NEXT:    nop5367; CHECK-NEXT:    #NO_APP5368; CHECK-NEXT:    kmovd %esi, %k15369; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm05370; CHECK-NEXT:    vpmullq {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload5371; CHECK-NEXT:    retq5372  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5373  %2 = mul <8 x i64> %a1, %a05374  %3 = bitcast i8 %mask to <8 x i1>5375  ; load needed to keep the operation from being scheduled about the asm block5376  %4 = load <8 x i64>, ptr %a25377  %5 = select <8 x i1> %3, <8 x i64> %2, <8 x i64> %45378  ret <8 x i64> %55379}5380 5381define <8 x i64> @stack_fold_pmullq_maskz(<8 x i64> %a0, <8 x i64> %a1, i8 %mask) {5382; CHECK-LABEL: stack_fold_pmullq_maskz:5383; CHECK:       # %bb.0:5384; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5385; CHECK-NEXT:    #APP5386; CHECK-NEXT:    nop5387; CHECK-NEXT:    #NO_APP5388; CHECK-NEXT:    kmovd %edi, %k15389; CHECK-NEXT:    vpmullq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload5390; CHECK-NEXT:    retq5391  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5392  %2 = mul <8 x i64> %a0, %a15393  %3 = bitcast i8 %mask to <8 x i1>5394  %4 = select <8 x i1> %3, <8 x i64> %2, <8 x i64> zeroinitializer5395  ret <8 x i64> %45396}5397 5398define <8 x i64> @stack_fold_pmullq_maskz_commuted(<8 x i64> %a0, <8 x i64> %a1, i8 %mask) {5399; CHECK-LABEL: stack_fold_pmullq_maskz_commuted:5400; CHECK:       # %bb.0:5401; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5402; CHECK-NEXT:    #APP5403; CHECK-NEXT:    nop5404; CHECK-NEXT:    #NO_APP5405; CHECK-NEXT:    kmovd %edi, %k15406; CHECK-NEXT:    vpmullq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload5407; CHECK-NEXT:    retq5408  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5409  %2 = mul <8 x i64> %a1, %a05410  %3 = bitcast i8 %mask to <8 x i1>5411  %4 = select <8 x i1> %3, <8 x i64> %2, <8 x i64> zeroinitializer5412  ret <8 x i64> %45413}5414 5415define <32 x i16> @stack_fold_pmullw(<32 x i16> %a0, <32 x i16> %a1) {5416; CHECK-LABEL: stack_fold_pmullw:5417; CHECK:       # %bb.0:5418; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5419; CHECK-NEXT:    #APP5420; CHECK-NEXT:    nop5421; CHECK-NEXT:    #NO_APP5422; CHECK-NEXT:    vpmullw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload5423; CHECK-NEXT:    retq5424  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5425  %2 = mul <32 x i16> %a0, %a15426  ret <32 x i16> %25427}5428 5429define <32 x i16> @stack_fold_pmullw_commuted(<32 x i16> %a0, <32 x i16> %a1) {5430; CHECK-LABEL: stack_fold_pmullw_commuted:5431; CHECK:       # %bb.0:5432; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5433; CHECK-NEXT:    #APP5434; CHECK-NEXT:    nop5435; CHECK-NEXT:    #NO_APP5436; CHECK-NEXT:    vpmullw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload5437; CHECK-NEXT:    retq5438  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5439  %2 = mul <32 x i16> %a1, %a05440  ret <32 x i16> %25441}5442 5443define <32 x i16> @stack_fold_pmullw_mask(<32 x i16> %a0, <32 x i16> %a1, ptr %a2, i32 %mask) {5444; CHECK-LABEL: stack_fold_pmullw_mask:5445; CHECK:       # %bb.0:5446; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5447; CHECK-NEXT:    vmovdqa64 %zmm0, %zmm15448; CHECK-NEXT:    #APP5449; CHECK-NEXT:    nop5450; CHECK-NEXT:    #NO_APP5451; CHECK-NEXT:    kmovd %esi, %k15452; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm05453; CHECK-NEXT:    vpmullw {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload5454; CHECK-NEXT:    retq5455  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5456  %2 = mul <32 x i16> %a0, %a15457  %3 = bitcast i32 %mask to <32 x i1>5458  ; load needed to keep the operation from being scheduled about the asm block5459  %4 = load <32 x i16>, ptr %a25460  %5 = select <32 x i1> %3, <32 x i16> %2, <32 x i16> %45461  ret <32 x i16> %55462}5463 5464define <32 x i16> @stack_fold_pmullw_mask_commuted(<32 x i16> %a0, <32 x i16> %a1, ptr %a2, i32 %mask) {5465; CHECK-LABEL: stack_fold_pmullw_mask_commuted:5466; CHECK:       # %bb.0:5467; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5468; CHECK-NEXT:    vmovdqa64 %zmm0, %zmm15469; CHECK-NEXT:    #APP5470; CHECK-NEXT:    nop5471; CHECK-NEXT:    #NO_APP5472; CHECK-NEXT:    kmovd %esi, %k15473; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm05474; CHECK-NEXT:    vpmullw {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload5475; CHECK-NEXT:    retq5476  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5477  %2 = mul <32 x i16> %a1, %a05478  %3 = bitcast i32 %mask to <32 x i1>5479  ; load needed to keep the operation from being scheduled about the asm block5480  %4 = load <32 x i16>, ptr %a25481  %5 = select <32 x i1> %3, <32 x i16> %2, <32 x i16> %45482  ret <32 x i16> %55483}5484 5485define <32 x i16> @stack_fold_pmullw_maskz(<32 x i16> %a0, <32 x i16> %a1, i32 %mask) {5486; CHECK-LABEL: stack_fold_pmullw_maskz:5487; CHECK:       # %bb.0:5488; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5489; CHECK-NEXT:    #APP5490; CHECK-NEXT:    nop5491; CHECK-NEXT:    #NO_APP5492; CHECK-NEXT:    kmovd %edi, %k15493; CHECK-NEXT:    vpmullw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload5494; CHECK-NEXT:    retq5495  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5496  %2 = mul <32 x i16> %a0, %a15497  %3 = bitcast i32 %mask to <32 x i1>5498  %4 = select <32 x i1> %3, <32 x i16> %2, <32 x i16> zeroinitializer5499  ret <32 x i16> %45500}5501 5502define <32 x i16> @stack_fold_pmullw_maskz_commuted(<32 x i16> %a0, <32 x i16> %a1, i32 %mask) {5503; CHECK-LABEL: stack_fold_pmullw_maskz_commuted:5504; CHECK:       # %bb.0:5505; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5506; CHECK-NEXT:    #APP5507; CHECK-NEXT:    nop5508; CHECK-NEXT:    #NO_APP5509; CHECK-NEXT:    kmovd %edi, %k15510; CHECK-NEXT:    vpmullw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload5511; CHECK-NEXT:    retq5512  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5513  %2 = mul <32 x i16> %a1, %a05514  %3 = bitcast i32 %mask to <32 x i1>5515  %4 = select <32 x i1> %3, <32 x i16> %2, <32 x i16> zeroinitializer5516  ret <32 x i16> %45517}5518 5519define <8 x i64> @stack_fold_pmuldq(<8 x i64> %a0, <8 x i64> %a1) {5520; CHECK-LABEL: stack_fold_pmuldq:5521; CHECK:       # %bb.0:5522; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5523; CHECK-NEXT:    #APP5524; CHECK-NEXT:    nop5525; CHECK-NEXT:    #NO_APP5526; CHECK-NEXT:    vpmuldq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload5527; CHECK-NEXT:    retq5528  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5529  %2 = shl <8 x i64> %a0, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>5530  %3 = ashr <8 x i64> %2, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>5531  %4 = shl <8 x i64> %a1, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>5532  %5 = ashr <8 x i64> %4, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>5533  %6 = mul <8 x i64> %3, %55534  ret <8 x i64> %65535}5536 5537define <8 x i64> @stack_fold_pmuldq_commuted(<8 x i64> %a0, <8 x i64> %a1) {5538; CHECK-LABEL: stack_fold_pmuldq_commuted:5539; CHECK:       # %bb.0:5540; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5541; CHECK-NEXT:    #APP5542; CHECK-NEXT:    nop5543; CHECK-NEXT:    #NO_APP5544; CHECK-NEXT:    vpmuldq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload5545; CHECK-NEXT:    retq5546  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5547  %2 = shl <8 x i64> %a0, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>5548  %3 = ashr <8 x i64> %2, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>5549  %4 = shl <8 x i64> %a1, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>5550  %5 = ashr <8 x i64> %4, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>5551  %6 = mul <8 x i64> %5, %35552  ret <8 x i64> %65553}5554 5555define <8 x i64> @stack_fold_pmuldq_mask(<8 x i64> %a0, <8 x i64> %a1, ptr %a2, i8 %mask) {5556; CHECK-LABEL: stack_fold_pmuldq_mask:5557; CHECK:       # %bb.0:5558; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5559; CHECK-NEXT:    vmovdqa64 %zmm0, %zmm15560; CHECK-NEXT:    #APP5561; CHECK-NEXT:    nop5562; CHECK-NEXT:    #NO_APP5563; CHECK-NEXT:    kmovd %esi, %k15564; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm05565; CHECK-NEXT:    vpmuldq {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload5566; CHECK-NEXT:    retq5567  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5568  %2 = shl <8 x i64> %a0, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>5569  %3 = ashr <8 x i64> %2, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>5570  %4 = shl <8 x i64> %a1, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>5571  %5 = ashr <8 x i64> %4, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>5572  %6 = mul <8 x i64> %3, %55573  %7 = bitcast i8 %mask to <8 x i1>5574  ; load needed to keep the operation from being scheduled about the asm block5575  %8 = load <8 x i64>, ptr %a25576  %9 = select <8 x i1> %7, <8 x i64> %6, <8 x i64> %85577  ret <8 x i64> %95578}5579 5580define <8 x i64> @stack_fold_pmuldq_mask_commuted(<8 x i64> %a0, <8 x i64> %a1, ptr %a2, i8 %mask) {5581; CHECK-LABEL: stack_fold_pmuldq_mask_commuted:5582; CHECK:       # %bb.0:5583; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5584; CHECK-NEXT:    vmovdqa64 %zmm0, %zmm15585; CHECK-NEXT:    #APP5586; CHECK-NEXT:    nop5587; CHECK-NEXT:    #NO_APP5588; CHECK-NEXT:    kmovd %esi, %k15589; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm05590; CHECK-NEXT:    vpmuldq {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload5591; CHECK-NEXT:    retq5592  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5593  %2 = shl <8 x i64> %a0, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>5594  %3 = ashr <8 x i64> %2, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>5595  %4 = shl <8 x i64> %a1, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>5596  %5 = ashr <8 x i64> %4, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>5597  %6 = mul <8 x i64> %5, %35598  %7 = bitcast i8 %mask to <8 x i1>5599  ; load needed to keep the operation from being scheduled about the asm block5600  %8 = load <8 x i64>, ptr %a25601  %9 = select <8 x i1> %7, <8 x i64> %6, <8 x i64> %85602  ret <8 x i64> %95603}5604 5605define <8 x i64> @stack_fold_pmuldq_maskz(<8 x i64> %a0, <8 x i64> %a1, i8 %mask) {5606; CHECK-LABEL: stack_fold_pmuldq_maskz:5607; CHECK:       # %bb.0:5608; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5609; CHECK-NEXT:    #APP5610; CHECK-NEXT:    nop5611; CHECK-NEXT:    #NO_APP5612; CHECK-NEXT:    kmovd %edi, %k15613; CHECK-NEXT:    vpmuldq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload5614; CHECK-NEXT:    retq5615  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5616  %2 = shl <8 x i64> %a0, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>5617  %3 = ashr <8 x i64> %2, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>5618  %4 = shl <8 x i64> %a1, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>5619  %5 = ashr <8 x i64> %4, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>5620  %6 = mul <8 x i64> %3, %55621  %7 = bitcast i8 %mask to <8 x i1>5622  %8 = select <8 x i1> %7, <8 x i64> %6, <8 x i64> zeroinitializer5623  ret <8 x i64> %85624}5625 5626define <8 x i64> @stack_fold_pmuldq_maskz_commuted(<8 x i64> %a0, <8 x i64> %a1, i8 %mask) {5627; CHECK-LABEL: stack_fold_pmuldq_maskz_commuted:5628; CHECK:       # %bb.0:5629; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5630; CHECK-NEXT:    #APP5631; CHECK-NEXT:    nop5632; CHECK-NEXT:    #NO_APP5633; CHECK-NEXT:    kmovd %edi, %k15634; CHECK-NEXT:    vpmuldq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload5635; CHECK-NEXT:    retq5636  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5637  %2 = shl <8 x i64> %a0, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>5638  %3 = ashr <8 x i64> %2, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>5639  %4 = shl <8 x i64> %a1, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>5640  %5 = ashr <8 x i64> %4, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>5641  %6 = mul <8 x i64> %5, %35642  %7 = bitcast i8 %mask to <8 x i1>5643  %8 = select <8 x i1> %7, <8 x i64> %6, <8 x i64> zeroinitializer5644  ret <8 x i64> %85645}5646 5647 5648 5649 5650define <8 x i64> @stack_fold_pmuludq(<8 x i64> %a0, <8 x i64> %a1) {5651; CHECK-LABEL: stack_fold_pmuludq:5652; CHECK:       # %bb.0:5653; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5654; CHECK-NEXT:    #APP5655; CHECK-NEXT:    nop5656; CHECK-NEXT:    #NO_APP5657; CHECK-NEXT:    vpmuludq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload5658; CHECK-NEXT:    retq5659  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5660  %2 = and <8 x i64> %a0, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>5661  %3 = and <8 x i64> %a1, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>5662  %4 = mul <8 x i64> %2, %35663  ret <8 x i64> %45664}5665 5666define <8 x i64> @stack_fold_pmuludq_commuted(<8 x i64> %a0, <8 x i64> %a1) {5667; CHECK-LABEL: stack_fold_pmuludq_commuted:5668; CHECK:       # %bb.0:5669; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5670; CHECK-NEXT:    #APP5671; CHECK-NEXT:    nop5672; CHECK-NEXT:    #NO_APP5673; CHECK-NEXT:    vpmuludq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload5674; CHECK-NEXT:    retq5675  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5676  %2 = and <8 x i64> %a0, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>5677  %3 = and <8 x i64> %a1, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>5678  %4 = mul <8 x i64> %3, %25679  ret <8 x i64> %45680}5681 5682define <8 x i64> @stack_fold_pmuludq_mask(<8 x i64> %a0, <8 x i64> %a1, ptr %a2, i8 %mask) {5683; CHECK-LABEL: stack_fold_pmuludq_mask:5684; CHECK:       # %bb.0:5685; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5686; CHECK-NEXT:    vmovdqa64 %zmm0, %zmm15687; CHECK-NEXT:    #APP5688; CHECK-NEXT:    nop5689; CHECK-NEXT:    #NO_APP5690; CHECK-NEXT:    kmovd %esi, %k15691; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm05692; CHECK-NEXT:    vpmuludq {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload5693; CHECK-NEXT:    retq5694  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5695  %2 = and <8 x i64> %a0, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>5696  %3 = and <8 x i64> %a1, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>5697  %4 = mul <8 x i64> %2, %35698  %5 = bitcast i8 %mask to <8 x i1>5699  ; load needed to keep the operation from being scheduled about the asm block5700  %6 = load <8 x i64>, ptr %a25701  %7 = select <8 x i1> %5, <8 x i64> %4, <8 x i64> %65702  ret <8 x i64> %75703}5704 5705define <8 x i64> @stack_fold_pmuludq_mask_commuted(<8 x i64> %a0, <8 x i64> %a1, ptr %a2, i8 %mask) {5706; CHECK-LABEL: stack_fold_pmuludq_mask_commuted:5707; CHECK:       # %bb.0:5708; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5709; CHECK-NEXT:    vmovdqa64 %zmm0, %zmm15710; CHECK-NEXT:    #APP5711; CHECK-NEXT:    nop5712; CHECK-NEXT:    #NO_APP5713; CHECK-NEXT:    kmovd %esi, %k15714; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm05715; CHECK-NEXT:    vpmuludq {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload5716; CHECK-NEXT:    retq5717  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5718  %2 = and <8 x i64> %a0, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>5719  %3 = and <8 x i64> %a1, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>5720  %4 = mul <8 x i64> %3, %25721  %5 = bitcast i8 %mask to <8 x i1>5722  ; load needed to keep the operation from being scheduled about the asm block5723  %6 = load <8 x i64>, ptr %a25724  %7 = select <8 x i1> %5, <8 x i64> %4, <8 x i64> %65725  ret <8 x i64> %75726}5727 5728define <8 x i64> @stack_fold_pmuludq_maskz(<8 x i64> %a0, <8 x i64> %a1, i8 %mask) {5729; CHECK-LABEL: stack_fold_pmuludq_maskz:5730; CHECK:       # %bb.0:5731; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5732; CHECK-NEXT:    #APP5733; CHECK-NEXT:    nop5734; CHECK-NEXT:    #NO_APP5735; CHECK-NEXT:    kmovd %edi, %k15736; CHECK-NEXT:    vpmuludq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload5737; CHECK-NEXT:    retq5738  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5739  %2 = and <8 x i64> %a0, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>5740  %3 = and <8 x i64> %a1, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>5741  %4 = mul <8 x i64> %2, %35742  %5 = bitcast i8 %mask to <8 x i1>5743  %6 = select <8 x i1> %5, <8 x i64> %4, <8 x i64> zeroinitializer5744  ret <8 x i64> %65745}5746 5747define <8 x i64> @stack_fold_pmuludq_maskz_commuted(<8 x i64> %a0, <8 x i64> %a1, i8 %mask) {5748; CHECK-LABEL: stack_fold_pmuludq_maskz_commuted:5749; CHECK:       # %bb.0:5750; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5751; CHECK-NEXT:    #APP5752; CHECK-NEXT:    nop5753; CHECK-NEXT:    #NO_APP5754; CHECK-NEXT:    kmovd %edi, %k15755; CHECK-NEXT:    vpmuludq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload5756; CHECK-NEXT:    retq5757  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5758  %2 = and <8 x i64> %a0, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>5759  %3 = and <8 x i64> %a1, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>5760  %4 = mul <8 x i64> %3, %25761  %5 = bitcast i8 %mask to <8 x i1>5762  %6 = select <8 x i1> %5, <8 x i64> %4, <8 x i64> zeroinitializer5763  ret <8 x i64> %65764}5765 5766define <16 x i32> @stack_fold_vpopcntd(<16 x i32> %a0) {5767; CHECK-LABEL: stack_fold_vpopcntd:5768; CHECK:       # %bb.0:5769; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5770; CHECK-NEXT:    #APP5771; CHECK-NEXT:    nop5772; CHECK-NEXT:    #NO_APP5773; CHECK-NEXT:    vpopcntd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Folded Reload5774; CHECK-NEXT:    retq5775  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5776  %2 = call <16 x i32> @llvm.ctpop.v16i32(<16 x i32> %a0)5777  ret <16 x i32> %25778}5779declare <16 x i32> @llvm.ctpop.v16i32(<16 x i32>) nounwind readonly5780 5781define <8 x i64> @stack_fold_vpopcntq(<8 x i64> %a0) {5782; CHECK-LABEL: stack_fold_vpopcntq:5783; CHECK:       # %bb.0:5784; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5785; CHECK-NEXT:    #APP5786; CHECK-NEXT:    nop5787; CHECK-NEXT:    #NO_APP5788; CHECK-NEXT:    vpopcntq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Folded Reload5789; CHECK-NEXT:    retq5790  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5791  %2 = call <8 x i64> @llvm.ctpop.v8i64(<8 x i64> %a0)5792  ret <8 x i64> %25793}5794declare <8 x i64> @llvm.ctpop.v8i64(<8 x i64>) nounwind readnone5795 5796define <16 x i32> @stack_fold_pord(<16 x i32> %a0, <16 x i32> %a1) {5797; CHECK-LABEL: stack_fold_pord:5798; CHECK:       # %bb.0:5799; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5800; CHECK-NEXT:    #APP5801; CHECK-NEXT:    nop5802; CHECK-NEXT:    #NO_APP5803; CHECK-NEXT:    vorps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload5804; CHECK-NEXT:    retq5805  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5806  %2 = or <16 x i32> %a0, %a15807  ret <16 x i32> %25808}5809 5810define <16 x i32> @stack_fold_pord_commuted(<16 x i32> %a0, <16 x i32> %a1) {5811; CHECK-LABEL: stack_fold_pord_commuted:5812; CHECK:       # %bb.0:5813; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5814; CHECK-NEXT:    #APP5815; CHECK-NEXT:    nop5816; CHECK-NEXT:    #NO_APP5817; CHECK-NEXT:    vorps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload5818; CHECK-NEXT:    retq5819  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5820  %2 = or <16 x i32> %a1, %a05821  ret <16 x i32> %25822}5823 5824define <16 x i32> @stack_fold_pord_mask(<16 x i32> %a0, <16 x i32> %a1, ptr %a2, i16 %mask) {5825; CHECK-LABEL: stack_fold_pord_mask:5826; CHECK:       # %bb.0:5827; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5828; CHECK-NEXT:    vmovaps %zmm0, %zmm15829; CHECK-NEXT:    #APP5830; CHECK-NEXT:    nop5831; CHECK-NEXT:    #NO_APP5832; CHECK-NEXT:    kmovd %esi, %k15833; CHECK-NEXT:    vmovaps (%rdi), %zmm05834; CHECK-NEXT:    vorps {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload5835; CHECK-NEXT:    retq5836  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5837  %2 = or <16 x i32> %a0, %a15838  %3 = bitcast i16 %mask to <16 x i1>5839  ; load needed to keep the operation from being scheduled about the asm block5840  %4 = load <16 x i32>, ptr %a25841  %5 = select <16 x i1> %3, <16 x i32> %2, <16 x i32> %45842  ret <16 x i32> %55843}5844 5845define <16 x i32> @stack_fold_pord_mask_commuted(<16 x i32> %a0, <16 x i32> %a1, ptr %a2, i16 %mask) {5846; CHECK-LABEL: stack_fold_pord_mask_commuted:5847; CHECK:       # %bb.0:5848; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5849; CHECK-NEXT:    vmovaps %zmm0, %zmm15850; CHECK-NEXT:    #APP5851; CHECK-NEXT:    nop5852; CHECK-NEXT:    #NO_APP5853; CHECK-NEXT:    kmovd %esi, %k15854; CHECK-NEXT:    vmovaps (%rdi), %zmm05855; CHECK-NEXT:    vorps {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload5856; CHECK-NEXT:    retq5857  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5858  %2 = or <16 x i32> %a1, %a05859  %3 = bitcast i16 %mask to <16 x i1>5860  ; load needed to keep the operation from being scheduled about the asm block5861  %4 = load <16 x i32>, ptr %a25862  %5 = select <16 x i1> %3, <16 x i32> %2, <16 x i32> %45863  ret <16 x i32> %55864}5865 5866define <16 x i32> @stack_fold_pord_maskz(<16 x i32> %a0, <16 x i32> %a1, i16 %mask) {5867; CHECK-LABEL: stack_fold_pord_maskz:5868; CHECK:       # %bb.0:5869; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5870; CHECK-NEXT:    #APP5871; CHECK-NEXT:    nop5872; CHECK-NEXT:    #NO_APP5873; CHECK-NEXT:    kmovd %edi, %k15874; CHECK-NEXT:    vorps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload5875; CHECK-NEXT:    retq5876  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5877  %2 = or <16 x i32> %a0, %a15878  %3 = bitcast i16 %mask to <16 x i1>5879  %4 = select <16 x i1> %3, <16 x i32> %2, <16 x i32> zeroinitializer5880  ret <16 x i32> %45881}5882 5883define <16 x i32> @stack_fold_pord_maskz_commuted(<16 x i32> %a0, <16 x i32> %a1, i16 %mask) {5884; CHECK-LABEL: stack_fold_pord_maskz_commuted:5885; CHECK:       # %bb.0:5886; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5887; CHECK-NEXT:    #APP5888; CHECK-NEXT:    nop5889; CHECK-NEXT:    #NO_APP5890; CHECK-NEXT:    kmovd %edi, %k15891; CHECK-NEXT:    vorps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload5892; CHECK-NEXT:    retq5893  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5894  %2 = or <16 x i32> %a1, %a05895  %3 = bitcast i16 %mask to <16 x i1>5896  %4 = select <16 x i1> %3, <16 x i32> %2, <16 x i32> zeroinitializer5897  ret <16 x i32> %45898}5899 5900define <8 x i64> @stack_fold_porq(<8 x i64> %a0, <8 x i64> %a1) {5901; CHECK-LABEL: stack_fold_porq:5902; CHECK:       # %bb.0:5903; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5904; CHECK-NEXT:    #APP5905; CHECK-NEXT:    nop5906; CHECK-NEXT:    #NO_APP5907; CHECK-NEXT:    vorps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload5908; CHECK-NEXT:    retq5909  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5910  %2 = or <8 x i64> %a0, %a15911  ret <8 x i64> %25912}5913 5914define <8 x i64> @stack_fold_porq_commuted(<8 x i64> %a0, <8 x i64> %a1) {5915; CHECK-LABEL: stack_fold_porq_commuted:5916; CHECK:       # %bb.0:5917; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5918; CHECK-NEXT:    #APP5919; CHECK-NEXT:    nop5920; CHECK-NEXT:    #NO_APP5921; CHECK-NEXT:    vorps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload5922; CHECK-NEXT:    retq5923  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5924  %2 = or <8 x i64> %a1, %a05925  ret <8 x i64> %25926}5927 5928define <8 x i64> @stack_fold_porq_mask(<8 x i64> %a0, <8 x i64> %a1, ptr %a2, i8 %mask) {5929; CHECK-LABEL: stack_fold_porq_mask:5930; CHECK:       # %bb.0:5931; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5932; CHECK-NEXT:    vmovapd %zmm0, %zmm15933; CHECK-NEXT:    #APP5934; CHECK-NEXT:    nop5935; CHECK-NEXT:    #NO_APP5936; CHECK-NEXT:    kmovd %esi, %k15937; CHECK-NEXT:    vmovapd (%rdi), %zmm05938; CHECK-NEXT:    vorpd {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload5939; CHECK-NEXT:    retq5940  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5941  %2 = or <8 x i64> %a0, %a15942  %3 = bitcast i8 %mask to <8 x i1>5943  ; load needed to keep the operation from being scheduled about the asm block5944  %4 = load <8 x i64>, ptr %a25945  %5 = select <8 x i1> %3, <8 x i64> %2, <8 x i64> %45946  ret <8 x i64> %55947}5948 5949define <8 x i64> @stack_fold_porq_mask_commuted(<8 x i64> %a0, <8 x i64> %a1, ptr %a2, i8 %mask) {5950; CHECK-LABEL: stack_fold_porq_mask_commuted:5951; CHECK:       # %bb.0:5952; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5953; CHECK-NEXT:    vmovapd %zmm0, %zmm15954; CHECK-NEXT:    #APP5955; CHECK-NEXT:    nop5956; CHECK-NEXT:    #NO_APP5957; CHECK-NEXT:    kmovd %esi, %k15958; CHECK-NEXT:    vmovapd (%rdi), %zmm05959; CHECK-NEXT:    vorpd {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload5960; CHECK-NEXT:    retq5961  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5962  %2 = or <8 x i64> %a1, %a05963  %3 = bitcast i8 %mask to <8 x i1>5964  ; load needed to keep the operation from being scheduled about the asm block5965  %4 = load <8 x i64>, ptr %a25966  %5 = select <8 x i1> %3, <8 x i64> %2, <8 x i64> %45967  ret <8 x i64> %55968}5969 5970define <8 x i64> @stack_fold_porq_maskz(<8 x i64> %a0, <8 x i64> %a1, i8 %mask) {5971; CHECK-LABEL: stack_fold_porq_maskz:5972; CHECK:       # %bb.0:5973; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5974; CHECK-NEXT:    #APP5975; CHECK-NEXT:    nop5976; CHECK-NEXT:    #NO_APP5977; CHECK-NEXT:    kmovd %edi, %k15978; CHECK-NEXT:    vorpd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload5979; CHECK-NEXT:    retq5980  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5981  %2 = or <8 x i64> %a0, %a15982  %3 = bitcast i8 %mask to <8 x i1>5983  %4 = select <8 x i1> %3, <8 x i64> %2, <8 x i64> zeroinitializer5984  ret <8 x i64> %45985}5986 5987define <8 x i64> @stack_fold_porq_maskz_commuted(<8 x i64> %a0, <8 x i64> %a1, i8 %mask) {5988; CHECK-LABEL: stack_fold_porq_maskz_commuted:5989; CHECK:       # %bb.0:5990; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill5991; CHECK-NEXT:    #APP5992; CHECK-NEXT:    nop5993; CHECK-NEXT:    #NO_APP5994; CHECK-NEXT:    kmovd %edi, %k15995; CHECK-NEXT:    vorpd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload5996; CHECK-NEXT:    retq5997  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()5998  %2 = or <8 x i64> %a1, %a05999  %3 = bitcast i8 %mask to <8 x i1>6000  %4 = select <8 x i1> %3, <8 x i64> %2, <8 x i64> zeroinitializer6001  ret <8 x i64> %46002}6003 6004define <8 x i64> @stack_fold_psadbw(<64 x i8> %a0, <64 x i8> %a1) {6005; CHECK-LABEL: stack_fold_psadbw:6006; CHECK:       # %bb.0:6007; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6008; CHECK-NEXT:    #APP6009; CHECK-NEXT:    nop6010; CHECK-NEXT:    #NO_APP6011; CHECK-NEXT:    vpsadbw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload6012; CHECK-NEXT:    retq6013  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6014  %2 = call <8 x i64> @llvm.x86.avx512.psad.bw.512(<64 x i8> %a0, <64 x i8> %a1)6015  ret <8 x i64> %26016}6017declare <8 x i64> @llvm.x86.avx512.psad.bw.512(<64 x i8>, <64 x i8>) nounwind readnone6018 6019define <8 x i64> @stack_fold_psadbw_commute(<64 x i8> %a0, <64 x i8> %a1) {6020; CHECK-LABEL: stack_fold_psadbw_commute:6021; CHECK:       # %bb.0:6022; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6023; CHECK-NEXT:    #APP6024; CHECK-NEXT:    nop6025; CHECK-NEXT:    #NO_APP6026; CHECK-NEXT:    vpsadbw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload6027; CHECK-NEXT:    retq6028  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6029  %2 = call <8 x i64> @llvm.x86.avx512.psad.bw.512(<64 x i8> %a1, <64 x i8> %a0)6030  ret <8 x i64> %26031}6032 6033define <64 x i8> @stack_fold_pshufb_zmm(<64 x i8> %a0, <64 x i8> %a1) {6034; CHECK-LABEL: stack_fold_pshufb_zmm:6035; CHECK:       # %bb.0:6036; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6037; CHECK-NEXT:    #APP6038; CHECK-NEXT:    nop6039; CHECK-NEXT:    #NO_APP6040; CHECK-NEXT:    vpshufb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload6041; CHECK-NEXT:    retq6042  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6043  %2 = call <64 x i8> @llvm.x86.avx512.pshuf.b.512(<64 x i8> %a0, <64 x i8> %a1)6044  ret <64 x i8> %26045}6046declare <64 x i8> @llvm.x86.avx512.pshuf.b.512(<64 x i8>, <64 x i8>)6047 6048define <64 x i8> @stack_fold_pshufb_zmm_mask(ptr %passthru, <64 x i8> %a0, <64 x i8> %a1, i64 %mask) {6049; CHECK-LABEL: stack_fold_pshufb_zmm_mask:6050; CHECK:       # %bb.0:6051; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6052; CHECK-NEXT:    #APP6053; CHECK-NEXT:    nop6054; CHECK-NEXT:    #NO_APP6055; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm26056; CHECK-NEXT:    kmovq %rsi, %k16057; CHECK-NEXT:    vpshufb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload6058; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm06059; CHECK-NEXT:    retq6060  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6061  %2 = load <64 x i8>, ptr %passthru6062  %3 = call <64 x i8> @llvm.x86.avx512.pshuf.b.512(<64 x i8> %a0, <64 x i8> %a1)6063  %4 = bitcast i64 %mask to <64 x i1>6064  %5 = select <64 x i1> %4, <64 x i8> %3, <64 x i8> %26065  ret <64 x i8> %56066}6067 6068define <64 x i8> @stack_fold_pshufb_zmm_maskz(<64 x i8> %a0, <64 x i8> %a1, i64 %mask) {6069; CHECK-LABEL: stack_fold_pshufb_zmm_maskz:6070; CHECK:       # %bb.0:6071; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6072; CHECK-NEXT:    #APP6073; CHECK-NEXT:    nop6074; CHECK-NEXT:    #NO_APP6075; CHECK-NEXT:    kmovq %rdi, %k16076; CHECK-NEXT:    vpshufb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload6077; CHECK-NEXT:    retq6078  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6079  %2 = call <64 x i8> @llvm.x86.avx512.pshuf.b.512(<64 x i8> %a0, <64 x i8> %a1)6080  %3 = bitcast i64 %mask to <64 x i1>6081  %4 = select <64 x i1> %3, <64 x i8> %2, <64 x i8> zeroinitializer6082  ret <64 x i8> %46083}6084 6085define <16 x i32> @stack_fold_pshufd_zmm(<16 x i32> %a0) {6086; CHECK-LABEL: stack_fold_pshufd_zmm:6087; CHECK:       # %bb.0:6088; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6089; CHECK-NEXT:    #APP6090; CHECK-NEXT:    nop6091; CHECK-NEXT:    #NO_APP6092; CHECK-NEXT:    vpshufd $27, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Folded Reload6093; CHECK-NEXT:    # zmm0 = mem[3,2,1,0,7,6,5,4,11,10,9,8,15,14,13,12]6094; CHECK-NEXT:    vpternlogd {{.*#+}} zmm1 = -16095; CHECK-NEXT:    vpsubd %zmm1, %zmm0, %zmm06096; CHECK-NEXT:    retq6097  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6098  %2 = shufflevector <16 x i32> %a0, <16 x i32> undef, <16 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4, i32 11, i32 10, i32 9, i32 8, i32 15, i32 14, i32 13, i32 12>6099  %3 = add <16 x i32> %2, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>6100  ret <16 x i32> %36101}6102 6103define <16 x i32> @stack_fold_pshufd_zmm_mask(<16 x i32> %passthru, <16 x i32> %a0, i16 %mask) {6104; CHECK-LABEL: stack_fold_pshufd_zmm_mask:6105; CHECK:       # %bb.0:6106; CHECK-NEXT:    pushq %rax6107; CHECK-NEXT:    .cfi_def_cfa_offset 166108; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6109; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6110; CHECK-NEXT:    #APP6111; CHECK-NEXT:    nop6112; CHECK-NEXT:    #NO_APP6113; CHECK-NEXT:    kmovd %edi, %k16114; CHECK-NEXT:    vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload6115; CHECK-NEXT:    vpshufd $27, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 {%k1} # 64-byte Folded Reload6116; CHECK-NEXT:    # zmm0 {%k1} = mem[3,2,1,0,7,6,5,4,11,10,9,8,15,14,13,12]6117; CHECK-NEXT:    popq %rax6118; CHECK-NEXT:    .cfi_def_cfa_offset 86119; CHECK-NEXT:    retq6120  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6121  %2 = shufflevector <16 x i32> %a0, <16 x i32> undef, <16 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4, i32 11, i32 10, i32 9, i32 8, i32 15, i32 14, i32 13, i32 12>6122  %3 = bitcast i16 %mask to <16 x i1>6123  %4 = select <16 x i1> %3, <16 x i32> %2, <16 x i32> %passthru6124  ret <16 x i32> %46125}6126 6127define <16 x i32> @stack_fold_pshufd_zmm_maskz(<16 x i32> %a0, i16 %mask) {6128; CHECK-LABEL: stack_fold_pshufd_zmm_maskz:6129; CHECK:       # %bb.0:6130; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6131; CHECK-NEXT:    #APP6132; CHECK-NEXT:    nop6133; CHECK-NEXT:    #NO_APP6134; CHECK-NEXT:    kmovd %edi, %k16135; CHECK-NEXT:    vpshufd $27, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 {%k1} {z} # 64-byte Folded Reload6136; CHECK-NEXT:    # zmm0 {%k1} {z} = mem[3,2,1,0,7,6,5,4,11,10,9,8,15,14,13,12]6137; CHECK-NEXT:    retq6138  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6139  %2 = shufflevector <16 x i32> %a0, <16 x i32> undef, <16 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4, i32 11, i32 10, i32 9, i32 8, i32 15, i32 14, i32 13, i32 12>6140  %3 = bitcast i16 %mask to <16 x i1>6141  %4 = select <16 x i1> %3, <16 x i32> %2, <16 x i32> zeroinitializer6142  ret <16 x i32> %46143}6144 6145define <32 x i16> @stack_fold_pshufhw_zmm(<32 x i16> %a0) {6146; CHECK-LABEL: stack_fold_pshufhw_zmm:6147; CHECK:       # %bb.0:6148; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6149; CHECK-NEXT:    #APP6150; CHECK-NEXT:    nop6151; CHECK-NEXT:    #NO_APP6152; CHECK-NEXT:    vpshufhw $27, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Folded Reload6153; CHECK-NEXT:    # zmm0 = mem[0,1,2,3,7,6,5,4,8,9,10,11,15,14,13,12,16,17,18,19,23,22,21,20,24,25,26,27,31,30,29,28]6154; CHECK-NEXT:    retq6155  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6156  %2 = shufflevector <32 x i16> %a0, <32 x i16> undef, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 7, i32 6, i32 5, i32 4, i32 8, i32 9, i32 10, i32 11, i32 15, i32 14, i32 13, i32 12, i32 16, i32 17, i32 18, i32 19, i32 23, i32 22, i32 21, i32 20, i32 24, i32 25, i32 26, i32 27, i32 31, i32 30, i32 29, i32 28>6157  ret <32 x i16> %26158}6159 6160define <32 x i16> @stack_fold_pshufhw_zmm_mask(<32 x i16> %passthru, <32 x i16> %a0, i32 %mask) {6161; CHECK-LABEL: stack_fold_pshufhw_zmm_mask:6162; CHECK:       # %bb.0:6163; CHECK-NEXT:    pushq %rax6164; CHECK-NEXT:    .cfi_def_cfa_offset 166165; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6166; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6167; CHECK-NEXT:    #APP6168; CHECK-NEXT:    nop6169; CHECK-NEXT:    #NO_APP6170; CHECK-NEXT:    kmovd %edi, %k16171; CHECK-NEXT:    vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload6172; CHECK-NEXT:    vpshufhw $27, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 {%k1} # 64-byte Folded Reload6173; CHECK-NEXT:    # zmm0 {%k1} = mem[0,1,2,3,7,6,5,4,8,9,10,11,15,14,13,12,16,17,18,19,23,22,21,20,24,25,26,27,31,30,29,28]6174; CHECK-NEXT:    popq %rax6175; CHECK-NEXT:    .cfi_def_cfa_offset 86176; CHECK-NEXT:    retq6177  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6178  %2 = shufflevector <32 x i16> %a0, <32 x i16> undef, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 7, i32 6, i32 5, i32 4, i32 8, i32 9, i32 10, i32 11, i32 15, i32 14, i32 13, i32 12, i32 16, i32 17, i32 18, i32 19, i32 23, i32 22, i32 21, i32 20, i32 24, i32 25, i32 26, i32 27, i32 31, i32 30, i32 29, i32 28>6179  %3 = bitcast i32 %mask to <32 x i1>6180  %4 = select <32 x i1> %3, <32 x i16> %2, <32 x i16> %passthru6181  ret <32 x i16> %46182}6183 6184define <32 x i16> @stack_fold_pshufhw_zmm_maskz(<32 x i16> %a0, i32 %mask) {6185; CHECK-LABEL: stack_fold_pshufhw_zmm_maskz:6186; CHECK:       # %bb.0:6187; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6188; CHECK-NEXT:    #APP6189; CHECK-NEXT:    nop6190; CHECK-NEXT:    #NO_APP6191; CHECK-NEXT:    kmovd %edi, %k16192; CHECK-NEXT:    vpshufhw $27, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 {%k1} {z} # 64-byte Folded Reload6193; CHECK-NEXT:    # zmm0 {%k1} {z} = mem[0,1,2,3,7,6,5,4,8,9,10,11,15,14,13,12,16,17,18,19,23,22,21,20,24,25,26,27,31,30,29,28]6194; CHECK-NEXT:    retq6195  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6196  %2 = shufflevector <32 x i16> %a0, <32 x i16> undef, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 7, i32 6, i32 5, i32 4, i32 8, i32 9, i32 10, i32 11, i32 15, i32 14, i32 13, i32 12, i32 16, i32 17, i32 18, i32 19, i32 23, i32 22, i32 21, i32 20, i32 24, i32 25, i32 26, i32 27, i32 31, i32 30, i32 29, i32 28>6197  %3 = bitcast i32 %mask to <32 x i1>6198  %4 = select <32 x i1> %3, <32 x i16> %2, <32 x i16> zeroinitializer6199  ret <32 x i16> %46200}6201 6202define <32 x i16> @stack_fold_pshuflw_zmm(<32 x i16> %a0) {6203; CHECK-LABEL: stack_fold_pshuflw_zmm:6204; CHECK:       # %bb.0:6205; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6206; CHECK-NEXT:    #APP6207; CHECK-NEXT:    nop6208; CHECK-NEXT:    #NO_APP6209; CHECK-NEXT:    vpshuflw $27, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Folded Reload6210; CHECK-NEXT:    # zmm0 = mem[3,2,1,0,4,5,6,7,11,10,9,8,12,13,14,15,19,18,17,16,20,21,22,23,27,26,25,24,28,29,30,31]6211; CHECK-NEXT:    retq6212  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6213  %2 = shufflevector <32 x i16> %a0, <32 x i16> undef, <32 x i32> <i32 3, i32 2, i32 1, i32 0, i32 4, i32 5, i32 6, i32 7, i32 11, i32 10, i32 9, i32 8, i32 12, i32 13, i32 14, i32 15, i32 19, i32 18, i32 17, i32 16, i32 20, i32 21, i32 22, i32 23, i32 27, i32 26, i32 25, i32 24, i32 28, i32 29, i32 30, i32 31>6214  ret <32 x i16> %26215}6216 6217define <32 x i16> @stack_fold_pshuflw_zmm_mask(<32 x i16> %passthru, <32 x i16> %a0, i32 %mask) {6218; CHECK-LABEL: stack_fold_pshuflw_zmm_mask:6219; CHECK:       # %bb.0:6220; CHECK-NEXT:    pushq %rax6221; CHECK-NEXT:    .cfi_def_cfa_offset 166222; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6223; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6224; CHECK-NEXT:    #APP6225; CHECK-NEXT:    nop6226; CHECK-NEXT:    #NO_APP6227; CHECK-NEXT:    kmovd %edi, %k16228; CHECK-NEXT:    vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload6229; CHECK-NEXT:    vpshuflw $27, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 {%k1} # 64-byte Folded Reload6230; CHECK-NEXT:    # zmm0 {%k1} = mem[3,2,1,0,4,5,6,7,11,10,9,8,12,13,14,15,19,18,17,16,20,21,22,23,27,26,25,24,28,29,30,31]6231; CHECK-NEXT:    popq %rax6232; CHECK-NEXT:    .cfi_def_cfa_offset 86233; CHECK-NEXT:    retq6234  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6235  %2 = shufflevector <32 x i16> %a0, <32 x i16> undef, <32 x i32> <i32 3, i32 2, i32 1, i32 0, i32 4, i32 5, i32 6, i32 7, i32 11, i32 10, i32 9, i32 8, i32 12, i32 13, i32 14, i32 15, i32 19, i32 18, i32 17, i32 16, i32 20, i32 21, i32 22, i32 23, i32 27, i32 26, i32 25, i32 24, i32 28, i32 29, i32 30, i32 31>6236  %3 = bitcast i32 %mask to <32 x i1>6237  %4 = select <32 x i1> %3, <32 x i16> %2, <32 x i16> %passthru6238  ret <32 x i16> %46239}6240 6241define <32 x i16> @stack_fold_pshuflw_zmm_maskz(<32 x i16> %a0, i32 %mask) {6242; CHECK-LABEL: stack_fold_pshuflw_zmm_maskz:6243; CHECK:       # %bb.0:6244; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6245; CHECK-NEXT:    #APP6246; CHECK-NEXT:    nop6247; CHECK-NEXT:    #NO_APP6248; CHECK-NEXT:    kmovd %edi, %k16249; CHECK-NEXT:    vpshuflw $27, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 {%k1} {z} # 64-byte Folded Reload6250; CHECK-NEXT:    # zmm0 {%k1} {z} = mem[3,2,1,0,4,5,6,7,11,10,9,8,12,13,14,15,19,18,17,16,20,21,22,23,27,26,25,24,28,29,30,31]6251; CHECK-NEXT:    retq6252  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6253  %2 = shufflevector <32 x i16> %a0, <32 x i16> undef, <32 x i32> <i32 3, i32 2, i32 1, i32 0, i32 4, i32 5, i32 6, i32 7, i32 11, i32 10, i32 9, i32 8, i32 12, i32 13, i32 14, i32 15, i32 19, i32 18, i32 17, i32 16, i32 20, i32 21, i32 22, i32 23, i32 27, i32 26, i32 25, i32 24, i32 28, i32 29, i32 30, i32 31>6254  %3 = bitcast i32 %mask to <32 x i1>6255  %4 = select <32 x i1> %3, <32 x i16> %2, <32 x i16> zeroinitializer6256  ret <32 x i16> %46257}6258 6259define <16 x i32> @stack_fold_pslld(<16 x i32> %a0, <4 x i32> %a1) {6260; CHECK-LABEL: stack_fold_pslld:6261; CHECK:       # %bb.0:6262; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6263; CHECK-NEXT:    #APP6264; CHECK-NEXT:    nop6265; CHECK-NEXT:    #NO_APP6266; CHECK-NEXT:    vpslld {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 16-byte Folded Reload6267; CHECK-NEXT:    retq6268  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6269  %2 = call <16 x i32> @llvm.x86.avx512.psll.d.512(<16 x i32> %a0, <4 x i32> %a1)6270  ret <16 x i32> %26271}6272declare <16 x i32> @llvm.x86.avx512.psll.d.512(<16 x i32>, <4 x i32>) nounwind readnone6273 6274define <16 x i32> @stack_fold_pslld_mask(ptr %passthru, <16 x i32> %a0, <4 x i32> %a1, i16 %mask) {6275; CHECK-LABEL: stack_fold_pslld_mask:6276; CHECK:       # %bb.0:6277; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6278; CHECK-NEXT:    #APP6279; CHECK-NEXT:    nop6280; CHECK-NEXT:    #NO_APP6281; CHECK-NEXT:    kmovd %esi, %k16282; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm26283; CHECK-NEXT:    vpslld {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 16-byte Folded Reload6284; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm06285; CHECK-NEXT:    retq6286  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6287  %2 = call <16 x i32> @llvm.x86.avx512.psll.d.512(<16 x i32> %a0, <4 x i32> %a1)6288  %3 = bitcast i16 %mask to <16 x i1>6289  %4 = load <16 x i32>, ptr %passthru6290  %5 = select <16 x i1> %3, <16 x i32> %2, <16 x i32> %46291  ret <16 x i32> %56292}6293 6294define <16 x i32> @stack_fold_pslld_maskz(<16 x i32> %a0, <4 x i32> %a1, i16 %mask) {6295; CHECK-LABEL: stack_fold_pslld_maskz:6296; CHECK:       # %bb.0:6297; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6298; CHECK-NEXT:    #APP6299; CHECK-NEXT:    nop6300; CHECK-NEXT:    #NO_APP6301; CHECK-NEXT:    kmovd %edi, %k16302; CHECK-NEXT:    vpslld {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 16-byte Folded Reload6303; CHECK-NEXT:    retq6304  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6305  %2 = call <16 x i32> @llvm.x86.avx512.psll.d.512(<16 x i32> %a0, <4 x i32> %a1)6306  %3 = bitcast i16 %mask to <16 x i1>6307  %4 = select <16 x i1> %3, <16 x i32> %2, <16 x i32> zeroinitializer6308  ret <16 x i32> %46309}6310 6311define <16 x i32> @stack_fold_pslldi(<16 x i32> %a0) {6312; CHECK-LABEL: stack_fold_pslldi:6313; CHECK:       # %bb.0:6314; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6315; CHECK-NEXT:    #APP6316; CHECK-NEXT:    nop6317; CHECK-NEXT:    #NO_APP6318; CHECK-NEXT:    vpslld $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Folded Reload6319; CHECK-NEXT:    retq6320  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6321  %2 = call <16 x i32> @llvm.x86.avx512.pslli.d.512(<16 x i32> %a0, i32 1)6322  ret <16 x i32> %26323}6324declare <16 x i32> @llvm.x86.avx512.pslli.d.512(<16 x i32>, i32) nounwind readnone6325 6326define <16 x i32> @stack_fold_pslldi_mask(ptr %passthru, <16 x i32> %a0, i16 %mask) {6327; CHECK-LABEL: stack_fold_pslldi_mask:6328; CHECK:       # %bb.0:6329; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6330; CHECK-NEXT:    #APP6331; CHECK-NEXT:    nop6332; CHECK-NEXT:    #NO_APP6333; CHECK-NEXT:    kmovd %esi, %k16334; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm16335; CHECK-NEXT:    vpslld $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 {%k1} # 64-byte Folded Reload6336; CHECK-NEXT:    vmovdqa64 %zmm1, %zmm06337; CHECK-NEXT:    retq6338  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6339  %2 = call <16 x i32> @llvm.x86.avx512.pslli.d.512(<16 x i32> %a0, i32 1)6340  %3 = bitcast i16 %mask to <16 x i1>6341  %4 = load <16 x i32>, ptr %passthru6342  %5 = select <16 x i1> %3, <16 x i32> %2, <16 x i32> %46343  ret <16 x i32> %56344}6345 6346define <16 x i32> @stack_fold_pslldi_maskz(<16 x i32> %a0, i16 %mask) {6347; CHECK-LABEL: stack_fold_pslldi_maskz:6348; CHECK:       # %bb.0:6349; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6350; CHECK-NEXT:    #APP6351; CHECK-NEXT:    nop6352; CHECK-NEXT:    #NO_APP6353; CHECK-NEXT:    kmovd %edi, %k16354; CHECK-NEXT:    vpslld $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 {%k1} {z} # 64-byte Folded Reload6355; CHECK-NEXT:    retq6356  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6357  %2 = call <16 x i32> @llvm.x86.avx512.pslli.d.512(<16 x i32> %a0, i32 1)6358  %3 = bitcast i16 %mask to <16 x i1>6359  %4 = select <16 x i1> %3, <16 x i32> %2, <16 x i32> zeroinitializer6360  ret <16 x i32> %46361}6362 6363define <64 x i8> @stack_fold_pslldq(<64 x i8> %a, <64 x i8> %b) {6364; CHECK-LABEL: stack_fold_pslldq:6365; CHECK:       # %bb.0:6366; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6367; CHECK-NEXT:    #APP6368; CHECK-NEXT:    nop6369; CHECK-NEXT:    #NO_APP6370; CHECK-NEXT:    vpslldq $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Folded Reload6371; CHECK-NEXT:    # zmm0 = zero,mem[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],zero,mem[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30],zero,mem[32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],zero,mem[48,49,50,51,52,53,54,55,56,57,58,59,60,61,62]6372; CHECK-NEXT:    retq6373  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6374  %2 = shufflevector <64 x i8> %a, <64 x i8> zeroinitializer, <64 x i32> <i32 79, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 95, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 111, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 127, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62>6375  ret <64 x i8> %26376}6377 6378define <8 x i64> @stack_fold_psllq(<8 x i64> %a0, <2 x i64> %a1) {6379; CHECK-LABEL: stack_fold_psllq:6380; CHECK:       # %bb.0:6381; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6382; CHECK-NEXT:    #APP6383; CHECK-NEXT:    nop6384; CHECK-NEXT:    #NO_APP6385; CHECK-NEXT:    vpsllq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 16-byte Folded Reload6386; CHECK-NEXT:    retq6387  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6388  %2 = call <8 x i64> @llvm.x86.avx512.psll.q.512(<8 x i64> %a0, <2 x i64> %a1)6389  ret <8 x i64> %26390}6391declare <8 x i64> @llvm.x86.avx512.psll.q.512(<8 x i64>, <2 x i64>) nounwind readnone6392 6393define <8 x i64> @stack_fold_psllqi(<8 x i64> %a0) {6394; CHECK-LABEL: stack_fold_psllqi:6395; CHECK:       # %bb.0:6396; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6397; CHECK-NEXT:    #APP6398; CHECK-NEXT:    nop6399; CHECK-NEXT:    #NO_APP6400; CHECK-NEXT:    vpsllq $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Folded Reload6401; CHECK-NEXT:    retq6402  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6403  %2 = call <8 x i64> @llvm.x86.avx512.pslli.q.512(<8 x i64> %a0, i32 1)6404  ret <8 x i64> %26405}6406declare <8 x i64> @llvm.x86.avx512.pslli.q.512(<8 x i64>, i32) nounwind readnone6407 6408define <16 x i32> @stack_fold_psllvd(<16 x i32> %a0, <16 x i32> %a1) {6409; CHECK-LABEL: stack_fold_psllvd:6410; CHECK:       # %bb.0:6411; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6412; CHECK-NEXT:    #APP6413; CHECK-NEXT:    nop6414; CHECK-NEXT:    #NO_APP6415; CHECK-NEXT:    vpsllvd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload6416; CHECK-NEXT:    retq6417  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6418  %2 = call <16 x i32> @llvm.x86.avx512.psllv.d.512(<16 x i32> %a0, <16 x i32> %a1)6419  ret <16 x i32> %26420}6421declare <16 x i32> @llvm.x86.avx512.psllv.d.512(<16 x i32>, <16 x i32>) nounwind readnone6422 6423define <16 x i32> @stack_fold_psllvd_mask(ptr %passthru, <16 x i32> %a0, <16 x i32> %a1, i16 %mask) {6424; CHECK-LABEL: stack_fold_psllvd_mask:6425; CHECK:       # %bb.0:6426; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6427; CHECK-NEXT:    #APP6428; CHECK-NEXT:    nop6429; CHECK-NEXT:    #NO_APP6430; CHECK-NEXT:    kmovd %esi, %k16431; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm26432; CHECK-NEXT:    vpsllvd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload6433; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm06434; CHECK-NEXT:    retq6435  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6436  %2 = call <16 x i32> @llvm.x86.avx512.psllv.d.512(<16 x i32> %a0, <16 x i32> %a1)6437  %3 = bitcast i16 %mask to <16 x i1>6438  %4 = load <16 x i32>, ptr %passthru6439  %5 = select <16 x i1> %3, <16 x i32> %2, <16 x i32> %46440  ret <16 x i32> %56441}6442 6443define <16 x i32> @stack_fold_psllvd_maskz(<16 x i32> %a0, <16 x i32> %a1, i16 %mask) {6444; CHECK-LABEL: stack_fold_psllvd_maskz:6445; CHECK:       # %bb.0:6446; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6447; CHECK-NEXT:    #APP6448; CHECK-NEXT:    nop6449; CHECK-NEXT:    #NO_APP6450; CHECK-NEXT:    kmovd %edi, %k16451; CHECK-NEXT:    vpsllvd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload6452; CHECK-NEXT:    retq6453  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6454  %2 = call <16 x i32> @llvm.x86.avx512.psllv.d.512(<16 x i32> %a0, <16 x i32> %a1)6455  %3 = bitcast i16 %mask to <16 x i1>6456  %4 = select <16 x i1> %3, <16 x i32> %2, <16 x i32> zeroinitializer6457  ret <16 x i32> %46458}6459 6460define <8 x i64> @stack_fold_psllvq(<8 x i64> %a0, <8 x i64> %a1) {6461; CHECK-LABEL: stack_fold_psllvq:6462; CHECK:       # %bb.0:6463; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6464; CHECK-NEXT:    #APP6465; CHECK-NEXT:    nop6466; CHECK-NEXT:    #NO_APP6467; CHECK-NEXT:    vpsllvq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload6468; CHECK-NEXT:    retq6469  %1 = tail call <8 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6470  %2 = call <8 x i64> @llvm.x86.avx512.psllv.q.512(<8 x i64> %a0, <8 x i64> %a1)6471  ret <8 x i64> %26472}6473declare <8 x i64> @llvm.x86.avx512.psllv.q.512(<8 x i64>, <8 x i64>) nounwind readnone6474 6475define <32 x i16> @stack_fold_psllvw(<32 x i16> %a0, <32 x i16> %a1) {6476; CHECK-LABEL: stack_fold_psllvw:6477; CHECK:       # %bb.0:6478; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6479; CHECK-NEXT:    #APP6480; CHECK-NEXT:    nop6481; CHECK-NEXT:    #NO_APP6482; CHECK-NEXT:    vpsllvw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload6483; CHECK-NEXT:    retq6484  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6485  %2 = call <32 x i16> @llvm.x86.avx512.psllv.w.512(<32 x i16> %a0, <32 x i16> %a1)6486  ret <32 x i16> %26487}6488declare <32 x i16> @llvm.x86.avx512.psllv.w.512(<32 x i16>, <32 x i16>) nounwind readnone6489 6490define <32 x i16> @stack_fold_psllw(<32 x i16> %a0, <8 x i16> %a1) {6491; CHECK-LABEL: stack_fold_psllw:6492; CHECK:       # %bb.0:6493; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6494; CHECK-NEXT:    #APP6495; CHECK-NEXT:    nop6496; CHECK-NEXT:    #NO_APP6497; CHECK-NEXT:    vpsllw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 16-byte Folded Reload6498; CHECK-NEXT:    retq6499  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6500  %2 = call <32 x i16> @llvm.x86.avx512.psll.w.512(<32 x i16> %a0, <8 x i16> %a1)6501  ret <32 x i16> %26502}6503declare <32 x i16> @llvm.x86.avx512.psll.w.512(<32 x i16>, <8 x i16>) nounwind readnone6504 6505define <32 x i16> @stack_fold_psllwi(<32 x i16> %a0) {6506; CHECK-LABEL: stack_fold_psllwi:6507; CHECK:       # %bb.0:6508; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6509; CHECK-NEXT:    #APP6510; CHECK-NEXT:    nop6511; CHECK-NEXT:    #NO_APP6512; CHECK-NEXT:    vpsllw $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Folded Reload6513; CHECK-NEXT:    retq6514  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6515  %2 = call <32 x i16> @llvm.x86.avx512.pslli.w.512(<32 x i16> %a0, i32 1)6516  ret <32 x i16> %26517}6518declare <32 x i16> @llvm.x86.avx512.pslli.w.512(<32 x i16>, i32) nounwind readnone6519 6520define <16 x i32> @stack_fold_psrad(<16 x i32> %a0, <4 x i32> %a1) {6521; CHECK-LABEL: stack_fold_psrad:6522; CHECK:       # %bb.0:6523; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6524; CHECK-NEXT:    #APP6525; CHECK-NEXT:    nop6526; CHECK-NEXT:    #NO_APP6527; CHECK-NEXT:    vpsrad {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 16-byte Folded Reload6528; CHECK-NEXT:    retq6529  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6530  %2 = call <16 x i32> @llvm.x86.avx512.psra.d.512(<16 x i32> %a0, <4 x i32> %a1)6531  ret <16 x i32> %26532}6533declare <16 x i32> @llvm.x86.avx512.psra.d.512(<16 x i32>, <4 x i32>) nounwind readnone6534 6535define <16 x i32> @stack_fold_psradi(<16 x i32> %a0) {6536; CHECK-LABEL: stack_fold_psradi:6537; CHECK:       # %bb.0:6538; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6539; CHECK-NEXT:    #APP6540; CHECK-NEXT:    nop6541; CHECK-NEXT:    #NO_APP6542; CHECK-NEXT:    vpsrad $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Folded Reload6543; CHECK-NEXT:    retq6544  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6545  %2 = call <16 x i32> @llvm.x86.avx512.psrai.d.512(<16 x i32> %a0, i32 1)6546  ret <16 x i32> %26547}6548declare <16 x i32> @llvm.x86.avx512.psrai.d.512(<16 x i32>, i32) nounwind readnone6549 6550define <8 x i64> @stack_fold_psraq(<8 x i64> %a0, <2 x i64> %a1) {6551; CHECK-LABEL: stack_fold_psraq:6552; CHECK:       # %bb.0:6553; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6554; CHECK-NEXT:    #APP6555; CHECK-NEXT:    nop6556; CHECK-NEXT:    #NO_APP6557; CHECK-NEXT:    vpsraq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 16-byte Folded Reload6558; CHECK-NEXT:    retq6559  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6560  %2 = call <8 x i64> @llvm.x86.avx512.psra.q.512(<8 x i64> %a0, <2 x i64> %a1)6561  ret <8 x i64> %26562}6563declare <8 x i64> @llvm.x86.avx512.psra.q.512(<8 x i64>, <2 x i64>) nounwind readnone6564 6565define <8 x i64> @stack_fold_psraqi(<8 x i64> %a0) {6566; CHECK-LABEL: stack_fold_psraqi:6567; CHECK:       # %bb.0:6568; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6569; CHECK-NEXT:    #APP6570; CHECK-NEXT:    nop6571; CHECK-NEXT:    #NO_APP6572; CHECK-NEXT:    vpsraq $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Folded Reload6573; CHECK-NEXT:    retq6574  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6575  %2 = call <8 x i64> @llvm.x86.avx512.psrai.q.512(<8 x i64> %a0, i32 1)6576  ret <8 x i64> %26577}6578declare <8 x i64> @llvm.x86.avx512.psrai.q.512(<8 x i64>, i32) nounwind readnone6579 6580define <16 x i32> @stack_fold_psravd(<16 x i32> %a0, <16 x i32> %a1) {6581; CHECK-LABEL: stack_fold_psravd:6582; CHECK:       # %bb.0:6583; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6584; CHECK-NEXT:    #APP6585; CHECK-NEXT:    nop6586; CHECK-NEXT:    #NO_APP6587; CHECK-NEXT:    vpsravd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload6588; CHECK-NEXT:    retq6589  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6590  %2 = call <16 x i32> @llvm.x86.avx512.psrav.d.512(<16 x i32> %a0, <16 x i32> %a1)6591  ret <16 x i32> %26592}6593declare <16 x i32> @llvm.x86.avx512.psrav.d.512(<16 x i32>, <16 x i32>) nounwind readnone6594 6595define <8 x i64> @stack_fold_psravq(<8 x i64> %a0, <8 x i64> %a1) {6596; CHECK-LABEL: stack_fold_psravq:6597; CHECK:       # %bb.0:6598; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6599; CHECK-NEXT:    #APP6600; CHECK-NEXT:    nop6601; CHECK-NEXT:    #NO_APP6602; CHECK-NEXT:    vpsravq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload6603; CHECK-NEXT:    retq6604  %1 = tail call <8 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6605  %2 = call <8 x i64> @llvm.x86.avx512.psrav.q.512(<8 x i64> %a0, <8 x i64> %a1)6606  ret <8 x i64> %26607}6608declare <8 x i64> @llvm.x86.avx512.psrav.q.512(<8 x i64>, <8 x i64>) nounwind readnone6609 6610define <32 x i16> @stack_fold_psravw(<32 x i16> %a0, <32 x i16> %a1) {6611; CHECK-LABEL: stack_fold_psravw:6612; CHECK:       # %bb.0:6613; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6614; CHECK-NEXT:    #APP6615; CHECK-NEXT:    nop6616; CHECK-NEXT:    #NO_APP6617; CHECK-NEXT:    vpsravw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload6618; CHECK-NEXT:    retq6619  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6620  %2 = call <32 x i16> @llvm.x86.avx512.psrav.w.512(<32 x i16> %a0, <32 x i16> %a1)6621  ret <32 x i16> %26622}6623declare <32 x i16> @llvm.x86.avx512.psrav.w.512(<32 x i16>, <32 x i16>) nounwind readnone6624 6625define <32 x i16> @stack_fold_psraw(<32 x i16> %a0, <8 x i16> %a1) {6626; CHECK-LABEL: stack_fold_psraw:6627; CHECK:       # %bb.0:6628; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6629; CHECK-NEXT:    #APP6630; CHECK-NEXT:    nop6631; CHECK-NEXT:    #NO_APP6632; CHECK-NEXT:    vpsraw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 16-byte Folded Reload6633; CHECK-NEXT:    retq6634  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6635  %2 = call <32 x i16> @llvm.x86.avx512.psra.w.512(<32 x i16> %a0, <8 x i16> %a1)6636  ret <32 x i16> %26637}6638declare <32 x i16> @llvm.x86.avx512.psra.w.512(<32 x i16>, <8 x i16>) nounwind readnone6639 6640define <32 x i16> @stack_fold_psrawi(<32 x i16> %a0) {6641; CHECK-LABEL: stack_fold_psrawi:6642; CHECK:       # %bb.0:6643; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6644; CHECK-NEXT:    #APP6645; CHECK-NEXT:    nop6646; CHECK-NEXT:    #NO_APP6647; CHECK-NEXT:    vpsraw $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Folded Reload6648; CHECK-NEXT:    retq6649  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6650  %2 = call <32 x i16> @llvm.x86.avx512.psrai.w.512(<32 x i16> %a0, i32 1)6651  ret <32 x i16> %26652}6653declare <32 x i16> @llvm.x86.avx512.psrai.w.512(<32 x i16>, i32) nounwind readnone6654 6655define <16 x i32> @stack_fold_psrld(<16 x i32> %a0, <4 x i32> %a1) {6656; CHECK-LABEL: stack_fold_psrld:6657; CHECK:       # %bb.0:6658; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6659; CHECK-NEXT:    #APP6660; CHECK-NEXT:    nop6661; CHECK-NEXT:    #NO_APP6662; CHECK-NEXT:    vpsrld {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 16-byte Folded Reload6663; CHECK-NEXT:    retq6664  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6665  %2 = call <16 x i32> @llvm.x86.avx512.psrl.d.512(<16 x i32> %a0, <4 x i32> %a1)6666  ret <16 x i32> %26667}6668declare <16 x i32> @llvm.x86.avx512.psrl.d.512(<16 x i32>, <4 x i32>) nounwind readnone6669 6670define <16 x i32> @stack_fold_psrldi(<16 x i32> %a0) {6671; CHECK-LABEL: stack_fold_psrldi:6672; CHECK:       # %bb.0:6673; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6674; CHECK-NEXT:    #APP6675; CHECK-NEXT:    nop6676; CHECK-NEXT:    #NO_APP6677; CHECK-NEXT:    vpsrld $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Folded Reload6678; CHECK-NEXT:    retq6679  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6680  %2 = call <16 x i32> @llvm.x86.avx512.psrli.d.512(<16 x i32> %a0, i32 1)6681  ret <16 x i32> %26682}6683declare <16 x i32> @llvm.x86.avx512.psrli.d.512(<16 x i32>, i32) nounwind readnone6684 6685define <64 x i8> @stack_fold_psrldq(<64 x i8> %a, <64 x i8> %b) {6686; CHECK-LABEL: stack_fold_psrldq:6687; CHECK:       # %bb.0:6688; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6689; CHECK-NEXT:    #APP6690; CHECK-NEXT:    nop6691; CHECK-NEXT:    #NO_APP6692; CHECK-NEXT:    vpsrldq $2, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Folded Reload6693; CHECK-NEXT:    # zmm0 = mem[2,3,4,5,6,7,8,9,10,11,12,13,14,15],zero,zero,mem[18,19,20,21,22,23,24,25,26,27,28,29,30,31],zero,zero,mem[34,35,36,37,38,39,40,41,42,43,44,45,46,47],zero,zero,mem[50,51,52,53,54,55,56,57,58,59,60,61,62,63],zero,zero6694; CHECK-NEXT:    retq6695  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6696  %2 = shufflevector <64 x i8> %a, <64 x i8> zeroinitializer, <64 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 64, i32 64, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 64, i32 64, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 64, i32 64, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 64, i32 64>6697  ret <64 x i8> %26698}6699 6700define <8 x i64> @stack_fold_psrlq(<8 x i64> %a0, <2 x i64> %a1) {6701; CHECK-LABEL: stack_fold_psrlq:6702; CHECK:       # %bb.0:6703; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6704; CHECK-NEXT:    #APP6705; CHECK-NEXT:    nop6706; CHECK-NEXT:    #NO_APP6707; CHECK-NEXT:    vpsrlq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 16-byte Folded Reload6708; CHECK-NEXT:    retq6709  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6710  %2 = call <8 x i64> @llvm.x86.avx512.psrl.q.512(<8 x i64> %a0, <2 x i64> %a1)6711  ret <8 x i64> %26712}6713declare <8 x i64> @llvm.x86.avx512.psrl.q.512(<8 x i64>, <2 x i64>) nounwind readnone6714 6715define <8 x i64> @stack_fold_psrlqi(<8 x i64> %a0) {6716; CHECK-LABEL: stack_fold_psrlqi:6717; CHECK:       # %bb.0:6718; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6719; CHECK-NEXT:    #APP6720; CHECK-NEXT:    nop6721; CHECK-NEXT:    #NO_APP6722; CHECK-NEXT:    vpsrlq $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Folded Reload6723; CHECK-NEXT:    retq6724  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6725  %2 = call <8 x i64> @llvm.x86.avx512.psrli.q.512(<8 x i64> %a0, i32 1)6726  ret <8 x i64> %26727}6728declare <8 x i64> @llvm.x86.avx512.psrli.q.512(<8 x i64>, i32) nounwind readnone6729 6730define <16 x i32> @stack_fold_psrlvd(<16 x i32> %a0, <16 x i32> %a1) {6731; CHECK-LABEL: stack_fold_psrlvd:6732; CHECK:       # %bb.0:6733; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6734; CHECK-NEXT:    #APP6735; CHECK-NEXT:    nop6736; CHECK-NEXT:    #NO_APP6737; CHECK-NEXT:    vpsrlvd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload6738; CHECK-NEXT:    retq6739  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6740  %2 = call <16 x i32> @llvm.x86.avx512.psrlv.d.512(<16 x i32> %a0, <16 x i32> %a1)6741  ret <16 x i32> %26742}6743declare <16 x i32> @llvm.x86.avx512.psrlv.d.512(<16 x i32>, <16 x i32>) nounwind readnone6744 6745define <8 x i64> @stack_fold_psrlvq(<8 x i64> %a0, <8 x i64> %a1) {6746; CHECK-LABEL: stack_fold_psrlvq:6747; CHECK:       # %bb.0:6748; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6749; CHECK-NEXT:    #APP6750; CHECK-NEXT:    nop6751; CHECK-NEXT:    #NO_APP6752; CHECK-NEXT:    vpsrlvq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload6753; CHECK-NEXT:    retq6754  %1 = tail call <8 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6755  %2 = call <8 x i64> @llvm.x86.avx512.psrlv.q.512(<8 x i64> %a0, <8 x i64> %a1)6756  ret <8 x i64> %26757}6758declare <8 x i64> @llvm.x86.avx512.psrlv.q.512(<8 x i64>, <8 x i64>) nounwind readnone6759 6760define <32 x i16> @stack_fold_psrlvw(<32 x i16> %a0, <32 x i16> %a1) {6761; CHECK-LABEL: stack_fold_psrlvw:6762; CHECK:       # %bb.0:6763; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6764; CHECK-NEXT:    #APP6765; CHECK-NEXT:    nop6766; CHECK-NEXT:    #NO_APP6767; CHECK-NEXT:    vpsrlvw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload6768; CHECK-NEXT:    retq6769  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6770  %2 = call <32 x i16> @llvm.x86.avx512.psrlv.w.512(<32 x i16> %a0, <32 x i16> %a1)6771  ret <32 x i16> %26772}6773declare <32 x i16> @llvm.x86.avx512.psrlv.w.512(<32 x i16>, <32 x i16>) nounwind readnone6774 6775define <32 x i16> @stack_fold_psrlw(<32 x i16> %a0, <8 x i16> %a1) {6776; CHECK-LABEL: stack_fold_psrlw:6777; CHECK:       # %bb.0:6778; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill6779; CHECK-NEXT:    #APP6780; CHECK-NEXT:    nop6781; CHECK-NEXT:    #NO_APP6782; CHECK-NEXT:    vpsrlw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 16-byte Folded Reload6783; CHECK-NEXT:    retq6784  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6785  %2 = call <32 x i16> @llvm.x86.avx512.psrl.w.512(<32 x i16> %a0, <8 x i16> %a1)6786  ret <32 x i16> %26787}6788declare <32 x i16> @llvm.x86.avx512.psrl.w.512(<32 x i16>, <8 x i16>) nounwind readnone6789 6790define <32 x i16> @stack_fold_psrlwi(<32 x i16> %a0) {6791; CHECK-LABEL: stack_fold_psrlwi:6792; CHECK:       # %bb.0:6793; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6794; CHECK-NEXT:    #APP6795; CHECK-NEXT:    nop6796; CHECK-NEXT:    #NO_APP6797; CHECK-NEXT:    vpsrlw $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Folded Reload6798; CHECK-NEXT:    retq6799  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6800  %2 = call <32 x i16> @llvm.x86.avx512.psrli.w.512(<32 x i16> %a0, i32 1)6801  ret <32 x i16> %26802}6803declare <32 x i16> @llvm.x86.avx512.psrli.w.512(<32 x i16>, i32) nounwind readnone6804 6805define <64 x i8> @stack_fold_psubb(<64 x i8> %a0, <64 x i8> %a1) {6806; CHECK-LABEL: stack_fold_psubb:6807; CHECK:       # %bb.0:6808; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6809; CHECK-NEXT:    #APP6810; CHECK-NEXT:    nop6811; CHECK-NEXT:    #NO_APP6812; CHECK-NEXT:    vpsubb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload6813; CHECK-NEXT:    retq6814  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6815  %2 = sub <64 x i8> %a0, %a16816  ret <64 x i8> %26817}6818 6819define <16 x i32> @stack_fold_psubd(<16 x i32> %a0, <16 x i32> %a1) {6820; CHECK-LABEL: stack_fold_psubd:6821; CHECK:       # %bb.0:6822; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6823; CHECK-NEXT:    #APP6824; CHECK-NEXT:    nop6825; CHECK-NEXT:    #NO_APP6826; CHECK-NEXT:    vpsubd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload6827; CHECK-NEXT:    retq6828  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6829  %2 = sub <16 x i32> %a0, %a16830  ret <16 x i32> %26831}6832 6833define <8 x i64> @stack_fold_psubq(<8 x i64> %a0, <8 x i64> %a1) {6834; CHECK-LABEL: stack_fold_psubq:6835; CHECK:       # %bb.0:6836; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6837; CHECK-NEXT:    #APP6838; CHECK-NEXT:    nop6839; CHECK-NEXT:    #NO_APP6840; CHECK-NEXT:    vpsubq {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload6841; CHECK-NEXT:    retq6842  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6843  %2 = sub <8 x i64> %a0, %a16844  ret <8 x i64> %26845}6846 6847define <64 x i8> @stack_fold_psubsb(<64 x i8> %a0, <64 x i8> %a1) {6848; CHECK-LABEL: stack_fold_psubsb:6849; CHECK:       # %bb.0:6850; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6851; CHECK-NEXT:    #APP6852; CHECK-NEXT:    nop6853; CHECK-NEXT:    #NO_APP6854; CHECK-NEXT:    vpsubsb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload6855; CHECK-NEXT:    retq6856  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6857  %2 = call <64 x i8> @llvm.ssub.sat.v64i8(<64 x i8> %a0, <64 x i8> %a1)6858  ret <64 x i8> %26859}6860 6861define <32 x i16> @stack_fold_psubsw(<32 x i16> %a0, <32 x i16> %a1) {6862; CHECK-LABEL: stack_fold_psubsw:6863; CHECK:       # %bb.0:6864; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6865; CHECK-NEXT:    #APP6866; CHECK-NEXT:    nop6867; CHECK-NEXT:    #NO_APP6868; CHECK-NEXT:    vpsubsw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload6869; CHECK-NEXT:    retq6870  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6871  %2 = call <32 x i16> @llvm.ssub.sat.v32i16(<32 x i16> %a0, <32 x i16> %a1)6872  ret <32 x i16> %26873}6874 6875define <64 x i8> @stack_fold_psubusb(<64 x i8> %a0, <64 x i8> %a1) {6876; CHECK-LABEL: stack_fold_psubusb:6877; CHECK:       # %bb.0:6878; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6879; CHECK-NEXT:    #APP6880; CHECK-NEXT:    nop6881; CHECK-NEXT:    #NO_APP6882; CHECK-NEXT:    vpsubusb {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload6883; CHECK-NEXT:    retq6884  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6885  %2 = call <64 x i8> @llvm.usub.sat.v64i8(<64 x i8> %a0, <64 x i8> %a1)6886  ret <64 x i8> %26887}6888 6889define <32 x i16> @stack_fold_psubusw(<32 x i16> %a0, <32 x i16> %a1) {6890; CHECK-LABEL: stack_fold_psubusw:6891; CHECK:       # %bb.0:6892; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6893; CHECK-NEXT:    #APP6894; CHECK-NEXT:    nop6895; CHECK-NEXT:    #NO_APP6896; CHECK-NEXT:    vpsubusw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload6897; CHECK-NEXT:    retq6898  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6899  %2 = call <32 x i16> @llvm.usub.sat.v32i16(<32 x i16> %a0, <32 x i16> %a1)6900  ret <32 x i16> %26901}6902 6903define <32 x i16> @stack_fold_psubw(<32 x i16> %a0, <32 x i16> %a1) {6904; CHECK-LABEL: stack_fold_psubw:6905; CHECK:       # %bb.0:6906; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6907; CHECK-NEXT:    #APP6908; CHECK-NEXT:    nop6909; CHECK-NEXT:    #NO_APP6910; CHECK-NEXT:    vpsubw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload6911; CHECK-NEXT:    retq6912  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6913  %2 = sub <32 x i16> %a0, %a16914  ret <32 x i16> %26915}6916 6917define <8 x i64> @stack_fold_shufi64x2(<8 x i64> %a, <8 x i64> %b) {6918; CHECK-LABEL: stack_fold_shufi64x2:6919; CHECK:       # %bb.0:6920; CHECK-NEXT:    pushq %rax6921; CHECK-NEXT:    .cfi_def_cfa_offset 166922; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6923; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6924; CHECK-NEXT:    #APP6925; CHECK-NEXT:    nop6926; CHECK-NEXT:    #NO_APP6927; CHECK-NEXT:    vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload6928; CHECK-NEXT:    vshufi64x2 $24, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload6929; CHECK-NEXT:    # zmm0 = zmm0[0,1,4,5],mem[2,3,0,1]6930; CHECK-NEXT:    popq %rax6931; CHECK-NEXT:    .cfi_def_cfa_offset 86932; CHECK-NEXT:    retq6933  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6934  %2 = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 0, i32 1, i32 4, i32 5, i32 10, i32 11, i32 8, i32 9>6935  ret <8 x i64> %26936}6937 6938define <8 x i64> @stack_fold_shufi64x2_mask(<8 x i64> %a, <8 x i64> %b, i8 %mask, ptr %passthru) {6939; CHECK-LABEL: stack_fold_shufi64x2_mask:6940; CHECK:       # %bb.0:6941; CHECK-NEXT:    pushq %rax6942; CHECK-NEXT:    .cfi_def_cfa_offset 166943; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6944; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6945; CHECK-NEXT:    #APP6946; CHECK-NEXT:    nop6947; CHECK-NEXT:    #NO_APP6948; CHECK-NEXT:    kmovd %edi, %k16949; CHECK-NEXT:    vmovdqa64 (%rsi), %zmm16950; CHECK-NEXT:    vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload6951; CHECK-NEXT:    vshufi64x2 $24, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm1 {%k1} # 64-byte Folded Reload6952; CHECK-NEXT:    # zmm1 {%k1} = zmm0[0,1,4,5],mem[2,3,0,1]6953; CHECK-NEXT:    vmovdqa64 %zmm1, %zmm06954; CHECK-NEXT:    popq %rax6955; CHECK-NEXT:    .cfi_def_cfa_offset 86956; CHECK-NEXT:    retq6957  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6958  %2 = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 0, i32 1, i32 4, i32 5, i32 10, i32 11, i32 8, i32 9>6959  %3 = bitcast i8 %mask to <8 x i1>6960  ; load needed to keep the operation from being scheduled above the asm block6961  %4 = load <8 x i64>, ptr %passthru6962  %5 = select <8 x i1> %3, <8 x i64> %2, <8 x i64> %46963  ret <8 x i64> %56964}6965 6966define <8 x i64> @stack_fold_shufi64x2_maskz(<8 x i64> %a, <8 x i64> %b, i8 %mask, ptr %passthru) {6967; CHECK-LABEL: stack_fold_shufi64x2_maskz:6968; CHECK:       # %bb.0:6969; CHECK-NEXT:    pushq %rax6970; CHECK-NEXT:    .cfi_def_cfa_offset 166971; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6972; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6973; CHECK-NEXT:    #APP6974; CHECK-NEXT:    nop6975; CHECK-NEXT:    #NO_APP6976; CHECK-NEXT:    kmovd %edi, %k16977; CHECK-NEXT:    vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload6978; CHECK-NEXT:    vshufi64x2 $24, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload6979; CHECK-NEXT:    # zmm0 {%k1} {z} = zmm0[0,1,4,5],mem[2,3,0,1]6980; CHECK-NEXT:    popq %rax6981; CHECK-NEXT:    .cfi_def_cfa_offset 86982; CHECK-NEXT:    retq6983  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()6984  %2 = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 0, i32 1, i32 4, i32 5, i32 10, i32 11, i32 8, i32 9>6985  %3 = bitcast i8 %mask to <8 x i1>6986  %4 = select <8 x i1> %3, <8 x i64> %2, <8 x i64> zeroinitializer6987  ret <8 x i64> %46988}6989 6990define <16 x i32> @stack_fold_shufi32x4_mask(<16 x i32> %a, <16 x i32> %b, i16 %mask, ptr %passthru) {6991; CHECK-LABEL: stack_fold_shufi32x4_mask:6992; CHECK:       # %bb.0:6993; CHECK-NEXT:    pushq %rax6994; CHECK-NEXT:    .cfi_def_cfa_offset 166995; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6996; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill6997; CHECK-NEXT:    #APP6998; CHECK-NEXT:    nop6999; CHECK-NEXT:    #NO_APP7000; CHECK-NEXT:    kmovd %edi, %k17001; CHECK-NEXT:    vmovdqa64 (%rsi), %zmm17002; CHECK-NEXT:    vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload7003; CHECK-NEXT:    vshufi32x4 $20, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm1 {%k1} # 64-byte Folded Reload7004; CHECK-NEXT:    # zmm1 {%k1} = zmm0[0,1,2,3,4,5,6,7],mem[4,5,6,7,0,1,2,3]7005; CHECK-NEXT:    vmovdqa64 %zmm1, %zmm07006; CHECK-NEXT:    popq %rax7007; CHECK-NEXT:    .cfi_def_cfa_offset 87008; CHECK-NEXT:    retq7009  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()7010  %2 = shufflevector <16 x i32> %a, <16 x i32> %b, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 20, i32 21, i32 22, i32 23, i32 16, i32 17, i32 18, i32 19>7011  %3 = bitcast i16 %mask to <16 x i1>7012  ; load needed to keep the operation from being scheduled above the asm block7013  %4 = load <16 x i32>, ptr %passthru7014  %5 = select <16 x i1> %3, <16 x i32> %2, <16 x i32> %47015  ret <16 x i32> %57016}7017 7018define <16 x i32> @stack_fold_shufi32x4_maskz(<16 x i32> %a, <16 x i32> %b, i16 %mask) {7019; CHECK-LABEL: stack_fold_shufi32x4_maskz:7020; CHECK:       # %bb.0:7021; CHECK-NEXT:    pushq %rax7022; CHECK-NEXT:    .cfi_def_cfa_offset 167023; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill7024; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill7025; CHECK-NEXT:    #APP7026; CHECK-NEXT:    nop7027; CHECK-NEXT:    #NO_APP7028; CHECK-NEXT:    kmovd %edi, %k17029; CHECK-NEXT:    vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload7030; CHECK-NEXT:    vshufi32x4 $20, {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload7031; CHECK-NEXT:    # zmm0 {%k1} {z} = zmm0[0,1,2,3,4,5,6,7],mem[4,5,6,7,0,1,2,3]7032; CHECK-NEXT:    popq %rax7033; CHECK-NEXT:    .cfi_def_cfa_offset 87034; CHECK-NEXT:    retq7035  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()7036  %2 = shufflevector <16 x i32> %a, <16 x i32> %b, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 20, i32 21, i32 22, i32 23, i32 16, i32 17, i32 18, i32 19>7037  %3 = bitcast i16 %mask to <16 x i1>7038  %4 = select <16 x i1> %3, <16 x i32> %2, <16 x i32> zeroinitializer7039  ret <16 x i32> %47040}7041 7042define <16 x i32> @stack_fold_ternlogd(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2) {7043; CHECK-LABEL: stack_fold_ternlogd:7044; CHECK:       # %bb.0:7045; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill7046; CHECK-NEXT:    #APP7047; CHECK-NEXT:    nop7048; CHECK-NEXT:    #NO_APP7049; CHECK-NEXT:    vpternlogd $33, {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload7050; CHECK-NEXT:    # zmm0 = ~(zmm1 | (zmm0 ^ mem))7051; CHECK-NEXT:    retq7052  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()7053  %2 = call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i32 33)7054  ret <16 x i32> %27055}7056declare <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32>, <16 x i32>, <16 x i32>, i32)7057 7058define <8 x i64> @stack_fold_ternlogq(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2) {7059; CHECK-LABEL: stack_fold_ternlogq:7060; CHECK:       # %bb.0:7061; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill7062; CHECK-NEXT:    #APP7063; CHECK-NEXT:    nop7064; CHECK-NEXT:    #NO_APP7065; CHECK-NEXT:    vpternlogq $33, {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload7066; CHECK-NEXT:    # zmm0 = ~(zmm1 | (zmm0 ^ mem))7067; CHECK-NEXT:    retq7068  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()7069  %2 = call <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i32 33)7070  ret <8 x i64> %27071}7072 7073declare <8 x i64> @llvm.x86.avx512.pternlog.q.512(<8 x i64>, <8 x i64>, <8 x i64>, i32)7074 7075define <64 x i8> @stack_fold_punpckhbw_zmm(<64 x i8> %a0, <64 x i8> %a1) {7076; CHECK-LABEL: stack_fold_punpckhbw_zmm:7077; CHECK:       # %bb.0:7078; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill7079; CHECK-NEXT:    #APP7080; CHECK-NEXT:    nop7081; CHECK-NEXT:    #NO_APP7082; CHECK-NEXT:    vpunpckhbw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload7083; CHECK-NEXT:    # zmm0 = zmm0[8],mem[8],zmm0[9],mem[9],zmm0[10],mem[10],zmm0[11],mem[11],zmm0[12],mem[12],zmm0[13],mem[13],zmm0[14],mem[14],zmm0[15],mem[15],zmm0[24],mem[24],zmm0[25],mem[25],zmm0[26],mem[26],zmm0[27],mem[27],zmm0[28],mem[28],zmm0[29],mem[29],zmm0[30],mem[30],zmm0[31],mem[31],zmm0[40],mem[40],zmm0[41],mem[41],zmm0[42],mem[42],zmm0[43],mem[43],zmm0[44],mem[44],zmm0[45],mem[45],zmm0[46],mem[46],zmm0[47],mem[47],zmm0[56],mem[56],zmm0[57],mem[57],zmm0[58],mem[58],zmm0[59],mem[59],zmm0[60],mem[60],zmm0[61],mem[61],zmm0[62],mem[62],zmm0[63],mem[63]7084; CHECK-NEXT:    retq7085  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()7086  %2 = shufflevector <64 x i8> %a0, <64 x i8> %a1, <64 x i32> <i32 8, i32 72, i32 9, i32 73, i32 10, i32 74, i32 11, i32 75, i32 12, i32 76, i32 13, i32 77, i32 14, i32 78, i32 15, i32 79, i32 24, i32 88, i32 25, i32 89, i32 26, i32 90, i32 27, i32 91, i32 28, i32 92, i32 29, i32 93, i32 30, i32 94, i32 31, i32 95, i32 40, i32 104, i32 41, i32 105, i32 42, i32 106, i32 43, i32 107, i32 44, i32 108, i32 45, i32 109, i32 46, i32 110, i32 47, i32 111, i32 56, i32 120, i32 57, i32 121, i32 58, i32 122, i32 59, i32 123, i32 60, i32 124, i32 61, i32 125, i32 62, i32 126, i32 63, i32 127>7087  ret <64 x i8> %27088}7089 7090define <64 x i8> @stack_fold_punpckhbw_mask_zmm(ptr %passthru, <64 x i8> %a0, <64 x i8> %a1, i64 %mask) {7091; CHECK-LABEL: stack_fold_punpckhbw_mask_zmm:7092; CHECK:       # %bb.0:7093; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill7094; CHECK-NEXT:    #APP7095; CHECK-NEXT:    nop7096; CHECK-NEXT:    #NO_APP7097; CHECK-NEXT:    kmovq %rsi, %k17098; CHECK-NEXT:    vmovdqa64 (%rdi), %zmm27099; CHECK-NEXT:    vpunpckhbw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload7100; CHECK-NEXT:    # zmm2 {%k1} = zmm0[8],mem[8],zmm0[9],mem[9],zmm0[10],mem[10],zmm0[11],mem[11],zmm0[12],mem[12],zmm0[13],mem[13],zmm0[14],mem[14],zmm0[15],mem[15],zmm0[24],mem[24],zmm0[25],mem[25],zmm0[26],mem[26],zmm0[27],mem[27],zmm0[28],mem[28],zmm0[29],mem[29],zmm0[30],mem[30],zmm0[31],mem[31],zmm0[40],mem[40],zmm0[41],mem[41],zmm0[42],mem[42],zmm0[43],mem[43],zmm0[44],mem[44],zmm0[45],mem[45],zmm0[46],mem[46],zmm0[47],mem[47],zmm0[56],mem[56],zmm0[57],mem[57],zmm0[58],mem[58],zmm0[59],mem[59],zmm0[60],mem[60],zmm0[61],mem[61],zmm0[62],mem[62],zmm0[63],mem[63]7101; CHECK-NEXT:    vmovdqa64 %zmm2, %zmm07102; CHECK-NEXT:    retq7103  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()7104  %2 = shufflevector <64 x i8> %a0, <64 x i8> %a1, <64 x i32> <i32 8, i32 72, i32 9, i32 73, i32 10, i32 74, i32 11, i32 75, i32 12, i32 76, i32 13, i32 77, i32 14, i32 78, i32 15, i32 79, i32 24, i32 88, i32 25, i32 89, i32 26, i32 90, i32 27, i32 91, i32 28, i32 92, i32 29, i32 93, i32 30, i32 94, i32 31, i32 95, i32 40, i32 104, i32 41, i32 105, i32 42, i32 106, i32 43, i32 107, i32 44, i32 108, i32 45, i32 109, i32 46, i32 110, i32 47, i32 111, i32 56, i32 120, i32 57, i32 121, i32 58, i32 122, i32 59, i32 123, i32 60, i32 124, i32 61, i32 125, i32 62, i32 126, i32 63, i32 127>7105  %3 = bitcast i64 %mask to <64 x i1>7106  ; load needed to keep the operation from being scheduled about the asm block7107  %4 = load <64 x i8>, ptr %passthru7108  %5 = select <64 x i1> %3, <64 x i8> %2, <64 x i8> %47109  ret <64 x i8> %57110}7111 7112define <64 x i8> @stack_fold_punpckhbw_maskz_zmm(<64 x i8> %a0, <64 x i8> %a1, i64 %mask) {7113; CHECK-LABEL: stack_fold_punpckhbw_maskz_zmm:7114; CHECK:       # %bb.0:7115; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill7116; CHECK-NEXT:    #APP7117; CHECK-NEXT:    nop7118; CHECK-NEXT:    #NO_APP7119; CHECK-NEXT:    kmovq %rdi, %k17120; CHECK-NEXT:    vpunpckhbw {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload7121; CHECK-NEXT:    # zmm0 {%k1} {z} = zmm0[8],mem[8],zmm0[9],mem[9],zmm0[10],mem[10],zmm0[11],mem[11],zmm0[12],mem[12],zmm0[13],mem[13],zmm0[14],mem[14],zmm0[15],mem[15],zmm0[24],mem[24],zmm0[25],mem[25],zmm0[26],mem[26],zmm0[27],mem[27],zmm0[28],mem[28],zmm0[29],mem[29],zmm0[30],mem[30],zmm0[31],mem[31],zmm0[40],mem[40],zmm0[41],mem[41],zmm0[42],mem[42],zmm0[43],mem[43],zmm0[44],mem[44],zmm0[45],mem[45],zmm0[46],mem[46],zmm0[47],mem[47],zmm0[56],mem[56],zmm0[57],mem[57],zmm0[58],mem[58],zmm0[59],mem[59],zmm0[60],mem[60],zmm0[61],mem[61],zmm0[62],mem[62],zmm0[63],mem[63]7122; CHECK-NEXT:    retq7123  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()7124  %2 = shufflevector <64 x i8> %a0, <64 x i8> %a1, <64 x i32> <i32 8, i32 72, i32 9, i32 73, i32 10, i32 74, i32 11, i32 75, i32 12, i32 76, i32 13, i32 77, i32 14, i32 78, i32 15, i32 79, i32 24, i32 88, i32 25, i32 89, i32 26, i32 90, i32 27, i32 91, i32 28, i32 92, i32 29, i32 93, i32 30, i32 94, i32 31, i32 95, i32 40, i32 104, i32 41, i32 105, i32 42, i32 106, i32 43, i32 107, i32 44, i32 108, i32 45, i32 109, i32 46, i32 110, i32 47, i32 111, i32 56, i32 120, i32 57, i32 121, i32 58, i32 122, i32 59, i32 123, i32 60, i32 124, i32 61, i32 125, i32 62, i32 126, i32 63, i32 127>7125  %3 = bitcast i64 %mask to <64 x i1>7126  %4 = select <64 x i1> %3, <64 x i8> %2, <64 x i8> zeroinitializer7127  ret <64 x i8> %47128}7129 7130define <16 x i32> @stack_fold_pxord(<16 x i32> %a0, <16 x i32> %a1) {7131; CHECK-LABEL: stack_fold_pxord:7132; CHECK:       # %bb.0:7133; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill7134; CHECK-NEXT:    #APP7135; CHECK-NEXT:    nop7136; CHECK-NEXT:    #NO_APP7137; CHECK-NEXT:    vxorps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload7138; CHECK-NEXT:    retq7139  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()7140  %2 = xor <16 x i32> %a0, %a17141  ret <16 x i32> %27142}7143 7144define <16 x i32> @stack_fold_pxord_commuted(<16 x i32> %a0, <16 x i32> %a1) {7145; CHECK-LABEL: stack_fold_pxord_commuted:7146; CHECK:       # %bb.0:7147; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill7148; CHECK-NEXT:    #APP7149; CHECK-NEXT:    nop7150; CHECK-NEXT:    #NO_APP7151; CHECK-NEXT:    vxorps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload7152; CHECK-NEXT:    retq7153  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()7154  %2 = xor <16 x i32> %a1, %a07155  ret <16 x i32> %27156}7157 7158define <16 x i32> @stack_fold_pxord_mask(<16 x i32> %a0, <16 x i32> %a1, ptr %a2, i16 %mask) {7159; CHECK-LABEL: stack_fold_pxord_mask:7160; CHECK:       # %bb.0:7161; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill7162; CHECK-NEXT:    vmovaps %zmm0, %zmm17163; CHECK-NEXT:    #APP7164; CHECK-NEXT:    nop7165; CHECK-NEXT:    #NO_APP7166; CHECK-NEXT:    kmovd %esi, %k17167; CHECK-NEXT:    vmovaps (%rdi), %zmm07168; CHECK-NEXT:    vxorps {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload7169; CHECK-NEXT:    retq7170  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()7171  %2 = xor <16 x i32> %a0, %a17172  %3 = bitcast i16 %mask to <16 x i1>7173  ; load needed to keep the operation from being scheduled about the asm block7174  %4 = load <16 x i32>, ptr %a27175  %5 = select <16 x i1> %3, <16 x i32> %2, <16 x i32> %47176  ret <16 x i32> %57177}7178 7179define <16 x i32> @stack_fold_pxord_mask_commuted(<16 x i32> %a0, <16 x i32> %a1, ptr %a2, i16 %mask) {7180; CHECK-LABEL: stack_fold_pxord_mask_commuted:7181; CHECK:       # %bb.0:7182; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill7183; CHECK-NEXT:    vmovaps %zmm0, %zmm17184; CHECK-NEXT:    #APP7185; CHECK-NEXT:    nop7186; CHECK-NEXT:    #NO_APP7187; CHECK-NEXT:    kmovd %esi, %k17188; CHECK-NEXT:    vmovaps (%rdi), %zmm07189; CHECK-NEXT:    vxorps {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload7190; CHECK-NEXT:    retq7191  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()7192  %2 = xor <16 x i32> %a1, %a07193  %3 = bitcast i16 %mask to <16 x i1>7194  ; load needed to keep the operation from being scheduled about the asm block7195  %4 = load <16 x i32>, ptr %a27196  %5 = select <16 x i1> %3, <16 x i32> %2, <16 x i32> %47197  ret <16 x i32> %57198}7199 7200define <16 x i32> @stack_fold_pxord_maskz(<16 x i32> %a0, <16 x i32> %a1, i16 %mask) {7201; CHECK-LABEL: stack_fold_pxord_maskz:7202; CHECK:       # %bb.0:7203; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill7204; CHECK-NEXT:    #APP7205; CHECK-NEXT:    nop7206; CHECK-NEXT:    #NO_APP7207; CHECK-NEXT:    kmovd %edi, %k17208; CHECK-NEXT:    vxorps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload7209; CHECK-NEXT:    retq7210  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()7211  %2 = xor <16 x i32> %a0, %a17212  %3 = bitcast i16 %mask to <16 x i1>7213  %4 = select <16 x i1> %3, <16 x i32> %2, <16 x i32> zeroinitializer7214  ret <16 x i32> %47215}7216 7217define <16 x i32> @stack_fold_pxord_maskz_commuted(<16 x i32> %a0, <16 x i32> %a1, i16 %mask) {7218; CHECK-LABEL: stack_fold_pxord_maskz_commuted:7219; CHECK:       # %bb.0:7220; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill7221; CHECK-NEXT:    #APP7222; CHECK-NEXT:    nop7223; CHECK-NEXT:    #NO_APP7224; CHECK-NEXT:    kmovd %edi, %k17225; CHECK-NEXT:    vxorps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload7226; CHECK-NEXT:    retq7227  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()7228  %2 = xor <16 x i32> %a1, %a07229  %3 = bitcast i16 %mask to <16 x i1>7230  %4 = select <16 x i1> %3, <16 x i32> %2, <16 x i32> zeroinitializer7231  ret <16 x i32> %47232}7233 7234define <8 x i64> @stack_fold_pxorq(<8 x i64> %a0, <8 x i64> %a1) {7235; CHECK-LABEL: stack_fold_pxorq:7236; CHECK:       # %bb.0:7237; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill7238; CHECK-NEXT:    #APP7239; CHECK-NEXT:    nop7240; CHECK-NEXT:    #NO_APP7241; CHECK-NEXT:    vxorps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload7242; CHECK-NEXT:    retq7243  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()7244  %2 = xor <8 x i64> %a0, %a17245  ret <8 x i64> %27246}7247 7248define <8 x i64> @stack_fold_pxorq_commuted(<8 x i64> %a0, <8 x i64> %a1) {7249; CHECK-LABEL: stack_fold_pxorq_commuted:7250; CHECK:       # %bb.0:7251; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill7252; CHECK-NEXT:    #APP7253; CHECK-NEXT:    nop7254; CHECK-NEXT:    #NO_APP7255; CHECK-NEXT:    vxorps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload7256; CHECK-NEXT:    retq7257  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()7258  %2 = xor <8 x i64> %a1, %a07259  ret <8 x i64> %27260}7261 7262define <8 x i64> @stack_fold_pxorq_mask(<8 x i64> %a0, <8 x i64> %a1, ptr %a2, i8 %mask) {7263; CHECK-LABEL: stack_fold_pxorq_mask:7264; CHECK:       # %bb.0:7265; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill7266; CHECK-NEXT:    vmovapd %zmm0, %zmm17267; CHECK-NEXT:    #APP7268; CHECK-NEXT:    nop7269; CHECK-NEXT:    #NO_APP7270; CHECK-NEXT:    kmovd %esi, %k17271; CHECK-NEXT:    vmovapd (%rdi), %zmm07272; CHECK-NEXT:    vxorpd {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload7273; CHECK-NEXT:    retq7274  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()7275  %2 = xor <8 x i64> %a0, %a17276  %3 = bitcast i8 %mask to <8 x i1>7277  ; load needed to keep the operation from being scheduled about the asm block7278  %4 = load <8 x i64>, ptr %a27279  %5 = select <8 x i1> %3, <8 x i64> %2, <8 x i64> %47280  ret <8 x i64> %57281}7282 7283define <8 x i64> @stack_fold_pxorq_mask_commuted(<8 x i64> %a0, <8 x i64> %a1, ptr %a2, i8 %mask) {7284; CHECK-LABEL: stack_fold_pxorq_mask_commuted:7285; CHECK:       # %bb.0:7286; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill7287; CHECK-NEXT:    vmovapd %zmm0, %zmm17288; CHECK-NEXT:    #APP7289; CHECK-NEXT:    nop7290; CHECK-NEXT:    #NO_APP7291; CHECK-NEXT:    kmovd %esi, %k17292; CHECK-NEXT:    vmovapd (%rdi), %zmm07293; CHECK-NEXT:    vxorpd {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} # 64-byte Folded Reload7294; CHECK-NEXT:    retq7295  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm0},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()7296  %2 = xor <8 x i64> %a1, %a07297  %3 = bitcast i8 %mask to <8 x i1>7298  ; load needed to keep the operation from being scheduled about the asm block7299  %4 = load <8 x i64>, ptr %a27300  %5 = select <8 x i1> %3, <8 x i64> %2, <8 x i64> %47301  ret <8 x i64> %57302}7303 7304define <8 x i64> @stack_fold_pxorq_maskz(<8 x i64> %a0, <8 x i64> %a1, i8 %mask) {7305; CHECK-LABEL: stack_fold_pxorq_maskz:7306; CHECK:       # %bb.0:7307; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill7308; CHECK-NEXT:    #APP7309; CHECK-NEXT:    nop7310; CHECK-NEXT:    #NO_APP7311; CHECK-NEXT:    kmovd %edi, %k17312; CHECK-NEXT:    vxorpd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload7313; CHECK-NEXT:    retq7314  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()7315  %2 = xor <8 x i64> %a0, %a17316  %3 = bitcast i8 %mask to <8 x i1>7317  %4 = select <8 x i1> %3, <8 x i64> %2, <8 x i64> zeroinitializer7318  ret <8 x i64> %47319}7320 7321define <8 x i64> @stack_fold_pxorq_maskz_commuted(<8 x i64> %a0, <8 x i64> %a1, i8 %mask) {7322; CHECK-LABEL: stack_fold_pxorq_maskz_commuted:7323; CHECK:       # %bb.0:7324; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill7325; CHECK-NEXT:    #APP7326; CHECK-NEXT:    nop7327; CHECK-NEXT:    #NO_APP7328; CHECK-NEXT:    kmovd %edi, %k17329; CHECK-NEXT:    vxorpd {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload7330; CHECK-NEXT:    retq7331  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()7332  %2 = xor <8 x i64> %a1, %a07333  %3 = bitcast i8 %mask to <8 x i1>7334  %4 = select <8 x i1> %3, <8 x i64> %2, <8 x i64> zeroinitializer7335  ret <8 x i64> %47336}7337 7338declare <64 x i8> @llvm.sadd.sat.v64i8(<64 x i8>, <64 x i8>)7339declare <32 x i16> @llvm.sadd.sat.v32i16(<32 x i16>, <32 x i16>)7340declare <64 x i8> @llvm.uadd.sat.v64i8(<64 x i8>, <64 x i8>)7341declare <32 x i16> @llvm.uadd.sat.v32i16(<32 x i16>, <32 x i16>)7342declare <16 x i32> @llvm.x86.avx512.conflict.d.512(<16 x i32>)7343declare <8 x i64> @llvm.x86.avx512.conflict.q.512(<8 x i64>)7344declare <16 x i32> @llvm.ctlz.v16i32(<16 x i32>, i1)7345declare <8 x i64> @llvm.ctlz.v8i64(<8 x i64>, i1)7346declare <64 x i8> @llvm.ssub.sat.v64i8(<64 x i8>, <64 x i8>)7347declare <32 x i16> @llvm.ssub.sat.v32i16(<32 x i16>, <32 x i16>)7348declare <64 x i8> @llvm.usub.sat.v64i8(<64 x i8>, <64 x i8>)7349declare <32 x i16> @llvm.usub.sat.v32i16(<32 x i16>, <32 x i16>)7350