brintos

brintos / llvm-project-archived public Read only

0
0
Text · 61.6 KiB · b5b1581 Raw
1242 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=+avx,+xop < %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 <2 x double> @stack_fold_vfrczpd(<2 x double> %a0) {13; CHECK-LABEL: stack_fold_vfrczpd:14; CHECK:       # %bb.0:15; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill16; CHECK-NEXT:    #APP17; CHECK-NEXT:    nop18; CHECK-NEXT:    #NO_APP19; CHECK-NEXT:    vfrczpd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload20; CHECK-NEXT:    retq21  %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},~{flags}"()22  %2 = call <2 x double> @llvm.x86.xop.vfrcz.pd(<2 x double> %a0)23  ret <2 x double> %224}25declare <2 x double> @llvm.x86.xop.vfrcz.pd(<2 x double>) nounwind readnone26 27define <4 x double> @stack_fold_vfrczpd_ymm(<4 x double> %a0) {28; CHECK-LABEL: stack_fold_vfrczpd_ymm:29; CHECK:       # %bb.0:30; CHECK-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill31; CHECK-NEXT:    #APP32; CHECK-NEXT:    nop33; CHECK-NEXT:    #NO_APP34; CHECK-NEXT:    vfrczpd {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload35; CHECK-NEXT:    retq36  %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},~{flags}"()37  %2 = call <4 x double> @llvm.x86.xop.vfrcz.pd.256(<4 x double> %a0)38  ret <4 x double> %239}40declare <4 x double> @llvm.x86.xop.vfrcz.pd.256(<4 x double>) nounwind readnone41 42define <4 x float> @stack_fold_vfrczps(<4 x float> %a0) {43; CHECK-LABEL: stack_fold_vfrczps:44; CHECK:       # %bb.0:45; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill46; CHECK-NEXT:    #APP47; CHECK-NEXT:    nop48; CHECK-NEXT:    #NO_APP49; CHECK-NEXT:    vfrczps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload50; CHECK-NEXT:    retq51  %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},~{flags}"()52  %2 = call <4 x float> @llvm.x86.xop.vfrcz.ps(<4 x float> %a0)53  ret <4 x float> %254}55declare <4 x float> @llvm.x86.xop.vfrcz.ps(<4 x float>) nounwind readnone56 57define <8 x float> @stack_fold_vfrczps_ymm(<8 x float> %a0) {58; CHECK-LABEL: stack_fold_vfrczps_ymm:59; CHECK:       # %bb.0:60; CHECK-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill61; CHECK-NEXT:    #APP62; CHECK-NEXT:    nop63; CHECK-NEXT:    #NO_APP64; CHECK-NEXT:    vfrczps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload65; CHECK-NEXT:    retq66  %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},~{flags}"()67  %2 = call <8 x float> @llvm.x86.xop.vfrcz.ps.256(<8 x float> %a0)68  ret <8 x float> %269}70declare <8 x float> @llvm.x86.xop.vfrcz.ps.256(<8 x float>) nounwind readnone71 72define <2 x double> @stack_fold_vfrczsd(<2 x double> %a0) {73; CHECK-LABEL: stack_fold_vfrczsd:74; CHECK:       # %bb.0:75; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill76; CHECK-NEXT:    #APP77; CHECK-NEXT:    nop78; CHECK-NEXT:    #NO_APP79; CHECK-NEXT:    vfrczsd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload80; CHECK-NEXT:    retq81  %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},~{flags}"()82  %2 = call <2 x double> @llvm.x86.xop.vfrcz.sd(<2 x double> %a0)83  ret <2 x double> %284}85declare <2 x double> @llvm.x86.xop.vfrcz.sd(<2 x double>) nounwind readnone86 87define <4 x float> @stack_fold_vfrczss(<4 x float> %a0) {88; CHECK-LABEL: stack_fold_vfrczss:89; CHECK:       # %bb.0:90; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill91; CHECK-NEXT:    #APP92; CHECK-NEXT:    nop93; CHECK-NEXT:    #NO_APP94; CHECK-NEXT:    vfrczss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload95; CHECK-NEXT:    retq96  %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},~{flags}"()97  %2 = call <4 x float> @llvm.x86.xop.vfrcz.ss(<4 x float> %a0)98  ret <4 x float> %299}100declare <4 x float> @llvm.x86.xop.vfrcz.ss(<4 x float>) nounwind readnone101 102define <2 x i64> @stack_fold_vpcmov_rm(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2) {103; CHECK-LABEL: stack_fold_vpcmov_rm:104; CHECK:       # %bb.0:105; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill106; CHECK-NEXT:    #APP107; CHECK-NEXT:    nop108; CHECK-NEXT:    #NO_APP109; CHECK-NEXT:    vpcmov {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0, %xmm0 # 16-byte Folded Reload110; CHECK-NEXT:    retq111  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()112  %2 = call <2 x i64> @llvm.x86.xop.vpcmov(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2)113  ret <2 x i64> %2114}115define <2 x i64> @stack_fold_vpcmov_mr(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2) {116; CHECK-LABEL: stack_fold_vpcmov_mr:117; CHECK:       # %bb.0:118; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill119; CHECK-NEXT:    #APP120; CHECK-NEXT:    nop121; CHECK-NEXT:    #NO_APP122; CHECK-NEXT:    vpcmov %xmm1, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload123; CHECK-NEXT:    retq124  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()125  %2 = call <2 x i64> @llvm.x86.xop.vpcmov(<2 x i64> %a0, <2 x i64> %a2, <2 x i64> %a1)126  ret <2 x i64> %2127}128declare <2 x i64> @llvm.x86.xop.vpcmov(<2 x i64>, <2 x i64>, <2 x i64>) nounwind readnone129 130define <4 x i64> @stack_fold_vpcmov_rm_ymm(<4 x i64> %a0, <4 x i64> %a1, <4 x i64> %a2) {131; CHECK-LABEL: stack_fold_vpcmov_rm_ymm:132; CHECK:       # %bb.0:133; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill134; CHECK-NEXT:    #APP135; CHECK-NEXT:    nop136; CHECK-NEXT:    #NO_APP137; CHECK-NEXT:    vpcmov {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0, %ymm0 # 32-byte Folded Reload138; CHECK-NEXT:    retq139  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()140  %2 = call <4 x i64> @llvm.x86.xop.vpcmov.256(<4 x i64> %a0, <4 x i64> %a1, <4 x i64> %a2)141  ret <4 x i64> %2142}143define <4 x i64> @stack_fold_vpcmov_mr_ymm(<4 x i64> %a0, <4 x i64> %a1, <4 x i64> %a2) {144; CHECK-LABEL: stack_fold_vpcmov_mr_ymm:145; CHECK:       # %bb.0:146; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill147; CHECK-NEXT:    #APP148; CHECK-NEXT:    nop149; CHECK-NEXT:    #NO_APP150; CHECK-NEXT:    vpcmov %ymm1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload151; CHECK-NEXT:    retq152  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()153  %2 = call <4 x i64> @llvm.x86.xop.vpcmov.256(<4 x i64> %a0, <4 x i64> %a2, <4 x i64> %a1)154  ret <4 x i64> %2155}156declare <4 x i64> @llvm.x86.xop.vpcmov.256(<4 x i64>, <4 x i64>, <4 x i64>) nounwind readnone157 158define <16 x i8> @stack_fold_vpcomb(<16 x i8> %a0, <16 x i8> %a1) {159; CHECK-LABEL: stack_fold_vpcomb:160; CHECK:       # %bb.0:161; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill162; CHECK-NEXT:    #APP163; CHECK-NEXT:    nop164; CHECK-NEXT:    #NO_APP165; CHECK-NEXT:    vpcomltb {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload166; CHECK-NEXT:    retq167  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()168  %2 = call <16 x i8> @llvm.x86.xop.vpcomb(<16 x i8> %a0, <16 x i8> %a1, i8 0)169  ret <16 x i8> %2170}171declare <16 x i8> @llvm.x86.xop.vpcomb(<16 x i8>, <16 x i8>, i8) nounwind readnone172 173define <4 x i32> @stack_fold_vpcomd(<4 x i32> %a0, <4 x i32> %a1) {174; CHECK-LABEL: stack_fold_vpcomd:175; CHECK:       # %bb.0:176; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill177; CHECK-NEXT:    #APP178; CHECK-NEXT:    nop179; CHECK-NEXT:    #NO_APP180; CHECK-NEXT:    vpcomltd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload181; CHECK-NEXT:    retq182  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()183  %2 = call <4 x i32> @llvm.x86.xop.vpcomd(<4 x i32> %a0, <4 x i32> %a1, i8 0)184  ret <4 x i32> %2185}186declare <4 x i32> @llvm.x86.xop.vpcomd(<4 x i32>, <4 x i32>, i8) nounwind readnone187 188define <2 x i64> @stack_fold_vpcomq(<2 x i64> %a0, <2 x i64> %a1) {189; CHECK-LABEL: stack_fold_vpcomq:190; CHECK:       # %bb.0:191; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill192; CHECK-NEXT:    #APP193; CHECK-NEXT:    nop194; CHECK-NEXT:    #NO_APP195; CHECK-NEXT:    vpcomltq {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload196; CHECK-NEXT:    retq197  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()198  %2 = call <2 x i64> @llvm.x86.xop.vpcomq(<2 x i64> %a0, <2 x i64> %a1, i8 0)199  ret <2 x i64> %2200}201declare <2 x i64> @llvm.x86.xop.vpcomq(<2 x i64>, <2 x i64>, i8) nounwind readnone202 203define <16 x i8> @stack_fold_vpcomub(<16 x i8> %a0, <16 x i8> %a1) {204; CHECK-LABEL: stack_fold_vpcomub:205; CHECK:       # %bb.0:206; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill207; CHECK-NEXT:    #APP208; CHECK-NEXT:    nop209; CHECK-NEXT:    #NO_APP210; CHECK-NEXT:    vpcomltub {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload211; CHECK-NEXT:    retq212  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()213  %2 = call <16 x i8> @llvm.x86.xop.vpcomub(<16 x i8> %a0, <16 x i8> %a1, i8 0)214  ret <16 x i8> %2215}216declare <16 x i8> @llvm.x86.xop.vpcomub(<16 x i8>, <16 x i8>, i8) nounwind readnone217 218define <4 x i32> @stack_fold_vpcomud(<4 x i32> %a0, <4 x i32> %a1) {219; CHECK-LABEL: stack_fold_vpcomud:220; CHECK:       # %bb.0:221; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill222; CHECK-NEXT:    #APP223; CHECK-NEXT:    nop224; CHECK-NEXT:    #NO_APP225; CHECK-NEXT:    vpcomltud {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload226; CHECK-NEXT:    retq227  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()228  %2 = call <4 x i32> @llvm.x86.xop.vpcomud(<4 x i32> %a0, <4 x i32> %a1, i8 0)229  ret <4 x i32> %2230}231declare <4 x i32> @llvm.x86.xop.vpcomud(<4 x i32>, <4 x i32>, i8) nounwind readnone232 233define <2 x i64> @stack_fold_vpcomuq(<2 x i64> %a0, <2 x i64> %a1) {234; CHECK-LABEL: stack_fold_vpcomuq:235; CHECK:       # %bb.0:236; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill237; CHECK-NEXT:    #APP238; CHECK-NEXT:    nop239; CHECK-NEXT:    #NO_APP240; CHECK-NEXT:    vpcomltuq {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload241; CHECK-NEXT:    retq242  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()243  %2 = call <2 x i64> @llvm.x86.xop.vpcomuq(<2 x i64> %a0, <2 x i64> %a1, i8 0)244  ret <2 x i64> %2245}246declare <2 x i64> @llvm.x86.xop.vpcomuq(<2 x i64>, <2 x i64>, i8) nounwind readnone247 248define <8 x i16> @stack_fold_vpcomuw(<8 x i16> %a0, <8 x i16> %a1) {249; CHECK-LABEL: stack_fold_vpcomuw:250; CHECK:       # %bb.0:251; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill252; CHECK-NEXT:    #APP253; CHECK-NEXT:    nop254; CHECK-NEXT:    #NO_APP255; CHECK-NEXT:    vpcomltuw {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload256; CHECK-NEXT:    retq257  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()258  %2 = call <8 x i16> @llvm.x86.xop.vpcomuw(<8 x i16> %a0, <8 x i16> %a1, i8 0)259  ret <8 x i16> %2260}261declare <8 x i16> @llvm.x86.xop.vpcomuw(<8 x i16>, <8 x i16>, i8) nounwind readnone262 263define <8 x i16> @stack_fold_vpcomw(<8 x i16> %a0, <8 x i16> %a1) {264; CHECK-LABEL: stack_fold_vpcomw:265; CHECK:       # %bb.0:266; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill267; CHECK-NEXT:    #APP268; CHECK-NEXT:    nop269; CHECK-NEXT:    #NO_APP270; CHECK-NEXT:    vpcomltw {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload271; CHECK-NEXT:    retq272  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()273  %2 = call <8 x i16> @llvm.x86.xop.vpcomw(<8 x i16> %a0, <8 x i16> %a1, i8 0)274  ret <8 x i16> %2275}276declare <8 x i16> @llvm.x86.xop.vpcomw(<8 x i16>, <8 x i16>, i8) nounwind readnone277 278define <2 x double> @stack_fold_vpermil2pd_rm(<2 x double> %a0, <2 x double> %a1, <2 x i64> %a2) {279; CHECK-LABEL: stack_fold_vpermil2pd_rm:280; CHECK:       # %bb.0:281; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill282; CHECK-NEXT:    #APP283; CHECK-NEXT:    nop284; CHECK-NEXT:    #NO_APP285; CHECK-NEXT:    vpermil2pd $0, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0, %xmm0 # 16-byte Folded Reload286; CHECK-NEXT:    retq287  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()288  %2 = call <2 x double> @llvm.x86.xop.vpermil2pd(<2 x double> %a0, <2 x double> %a1, <2 x i64> %a2, i8 0)289  ret <2 x double> %2290}291define <2 x double> @stack_fold_vpermil2pd_mr(<2 x double> %a0, <2 x i64> %a1, <2 x double> %a2) {292; CHECK-LABEL: stack_fold_vpermil2pd_mr:293; CHECK:       # %bb.0:294; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill295; CHECK-NEXT:    #APP296; CHECK-NEXT:    nop297; CHECK-NEXT:    #NO_APP298; CHECK-NEXT:    vpermil2pd $0, %xmm1, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload299; CHECK-NEXT:    retq300  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()301  %2 = call <2 x double> @llvm.x86.xop.vpermil2pd(<2 x double> %a0, <2 x double> %a2, <2 x i64> %a1, i8 0)302  ret <2 x double> %2303}304declare <2 x double> @llvm.x86.xop.vpermil2pd(<2 x double>, <2 x double>, <2 x i64>, i8) nounwind readnone305 306define <4 x double> @stack_fold_vpermil2pd_rm_ymm(<4 x double> %a0, <4 x double> %a1, <4 x i64> %a2) {307; CHECK-LABEL: stack_fold_vpermil2pd_rm_ymm:308; CHECK:       # %bb.0:309; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill310; CHECK-NEXT:    #APP311; CHECK-NEXT:    nop312; CHECK-NEXT:    #NO_APP313; CHECK-NEXT:    vpermil2pd $0, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0, %ymm0 # 32-byte Folded Reload314; CHECK-NEXT:    retq315  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()316  %2 = call <4 x double> @llvm.x86.xop.vpermil2pd.256(<4 x double> %a0, <4 x double> %a1, <4 x i64> %a2, i8 0)317  ret <4 x double> %2318}319define <4 x double> @stack_fold_vpermil2pd_mr_ymm(<4 x double> %a0, <4 x i64> %a1, <4 x double> %a2) {320; CHECK-LABEL: stack_fold_vpermil2pd_mr_ymm:321; CHECK:       # %bb.0:322; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill323; CHECK-NEXT:    #APP324; CHECK-NEXT:    nop325; CHECK-NEXT:    #NO_APP326; CHECK-NEXT:    vpermil2pd $0, %ymm1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload327; CHECK-NEXT:    retq328  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()329  %2 = call <4 x double> @llvm.x86.xop.vpermil2pd.256(<4 x double> %a0, <4 x double> %a2, <4 x i64> %a1, i8 0)330  ret <4 x double> %2331}332declare <4 x double> @llvm.x86.xop.vpermil2pd.256(<4 x double>, <4 x double>, <4 x i64>, i8) nounwind readnone333 334define <4 x float> @stack_fold_vpermil2ps_rm(<4 x float> %a0, <4 x float> %a1, <4 x i32> %a2) {335; CHECK-LABEL: stack_fold_vpermil2ps_rm:336; CHECK:       # %bb.0:337; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill338; CHECK-NEXT:    #APP339; CHECK-NEXT:    nop340; CHECK-NEXT:    #NO_APP341; CHECK-NEXT:    vpermil2ps $0, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0, %xmm0 # 16-byte Folded Reload342; CHECK-NEXT:    retq343  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()344  %2 = call <4 x float> @llvm.x86.xop.vpermil2ps(<4 x float> %a0, <4 x float> %a1, <4 x i32> %a2, i8 0)345  ret <4 x float> %2346}347define <4 x float> @stack_fold_vpermil2ps_mr(<4 x float> %a0, <4 x i32> %a1, <4 x float> %a2) {348; CHECK-LABEL: stack_fold_vpermil2ps_mr:349; CHECK:       # %bb.0:350; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill351; CHECK-NEXT:    #APP352; CHECK-NEXT:    nop353; CHECK-NEXT:    #NO_APP354; CHECK-NEXT:    vpermil2ps $0, %xmm1, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload355; CHECK-NEXT:    retq356  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()357  %2 = call <4 x float> @llvm.x86.xop.vpermil2ps(<4 x float> %a0, <4 x float> %a2, <4 x i32> %a1, i8 0)358  ret <4 x float> %2359}360declare <4 x float> @llvm.x86.xop.vpermil2ps(<4 x float>, <4 x float>, <4 x i32>, i8) nounwind readnone361 362define <8 x float> @stack_fold_vpermil2ps_rm_ymm(<8 x float> %a0, <8 x float> %a1, <8 x i32> %a2) {363; CHECK-LABEL: stack_fold_vpermil2ps_rm_ymm:364; CHECK:       # %bb.0:365; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill366; CHECK-NEXT:    #APP367; CHECK-NEXT:    nop368; CHECK-NEXT:    #NO_APP369; CHECK-NEXT:    vpermil2ps $0, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0, %ymm0 # 32-byte Folded Reload370; CHECK-NEXT:    retq371  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()372  %2 = call <8 x float> @llvm.x86.xop.vpermil2ps.256(<8 x float> %a0, <8 x float> %a1, <8 x i32> %a2, i8 0)373  ret <8 x float> %2374}375define <8 x float> @stack_fold_vpermil2ps_mr_ymm(<8 x float> %a0, <8 x i32> %a1, <8 x float> %a2) {376; CHECK-LABEL: stack_fold_vpermil2ps_mr_ymm:377; CHECK:       # %bb.0:378; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill379; CHECK-NEXT:    #APP380; CHECK-NEXT:    nop381; CHECK-NEXT:    #NO_APP382; CHECK-NEXT:    vpermil2ps $0, %ymm1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload383; CHECK-NEXT:    retq384  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()385  %2 = call <8 x float> @llvm.x86.xop.vpermil2ps.256(<8 x float> %a0, <8 x float> %a2, <8 x i32> %a1, i8 0)386  ret <8 x float> %2387}388declare <8 x float> @llvm.x86.xop.vpermil2ps.256(<8 x float>, <8 x float>, <8 x i32>, i8) nounwind readnone389 390define <4 x i32> @stack_fold_vphaddbd(<16 x i8> %a0) {391; CHECK-LABEL: stack_fold_vphaddbd:392; CHECK:       # %bb.0:393; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill394; CHECK-NEXT:    #APP395; CHECK-NEXT:    nop396; CHECK-NEXT:    #NO_APP397; CHECK-NEXT:    vphaddbd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload398; CHECK-NEXT:    retq399  %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},~{flags}"()400  %2 = call <4 x i32> @llvm.x86.xop.vphaddbd(<16 x i8> %a0)401  ret <4 x i32> %2402}403declare <4 x i32> @llvm.x86.xop.vphaddbd(<16 x i8>) nounwind readnone404 405define <2 x i64> @stack_fold_vphaddbq(<16 x i8> %a0) {406; CHECK-LABEL: stack_fold_vphaddbq:407; CHECK:       # %bb.0:408; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill409; CHECK-NEXT:    #APP410; CHECK-NEXT:    nop411; CHECK-NEXT:    #NO_APP412; CHECK-NEXT:    vphaddbq {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload413; CHECK-NEXT:    retq414  %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},~{flags}"()415  %2 = call <2 x i64> @llvm.x86.xop.vphaddbq(<16 x i8> %a0)416  ret <2 x i64> %2417}418declare <2 x i64> @llvm.x86.xop.vphaddbq(<16 x i8>) nounwind readnone419 420define <8 x i16> @stack_fold_vphaddbw(<16 x i8> %a0) {421; CHECK-LABEL: stack_fold_vphaddbw:422; CHECK:       # %bb.0:423; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill424; CHECK-NEXT:    #APP425; CHECK-NEXT:    nop426; CHECK-NEXT:    #NO_APP427; CHECK-NEXT:    vphaddbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload428; CHECK-NEXT:    retq429  %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},~{flags}"()430  %2 = call <8 x i16> @llvm.x86.xop.vphaddbw(<16 x i8> %a0)431  ret <8 x i16> %2432}433declare <8 x i16> @llvm.x86.xop.vphaddbw(<16 x i8>) nounwind readnone434 435define <2 x i64> @stack_fold_vphadddq(<4 x i32> %a0) {436; CHECK-LABEL: stack_fold_vphadddq:437; CHECK:       # %bb.0:438; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill439; CHECK-NEXT:    #APP440; CHECK-NEXT:    nop441; CHECK-NEXT:    #NO_APP442; CHECK-NEXT:    vphadddq {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload443; CHECK-NEXT:    retq444  %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},~{flags}"()445  %2 = call <2 x i64> @llvm.x86.xop.vphadddq(<4 x i32> %a0)446  ret <2 x i64> %2447}448declare <2 x i64> @llvm.x86.xop.vphadddq(<4 x i32>) nounwind readnone449 450define <4 x i32> @stack_fold_vphaddubd(<16 x i8> %a0) {451; CHECK-LABEL: stack_fold_vphaddubd:452; CHECK:       # %bb.0:453; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill454; CHECK-NEXT:    #APP455; CHECK-NEXT:    nop456; CHECK-NEXT:    #NO_APP457; CHECK-NEXT:    vphaddubd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload458; CHECK-NEXT:    retq459  %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},~{flags}"()460  %2 = call <4 x i32> @llvm.x86.xop.vphaddubd(<16 x i8> %a0)461  ret <4 x i32> %2462}463declare <4 x i32> @llvm.x86.xop.vphaddubd(<16 x i8>) nounwind readnone464 465define <2 x i64> @stack_fold_vphaddubq(<16 x i8> %a0) {466; CHECK-LABEL: stack_fold_vphaddubq:467; CHECK:       # %bb.0:468; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill469; CHECK-NEXT:    #APP470; CHECK-NEXT:    nop471; CHECK-NEXT:    #NO_APP472; CHECK-NEXT:    vphaddubq {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload473; CHECK-NEXT:    retq474  %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},~{flags}"()475  %2 = call <2 x i64> @llvm.x86.xop.vphaddubq(<16 x i8> %a0)476  ret <2 x i64> %2477}478declare <2 x i64> @llvm.x86.xop.vphaddubq(<16 x i8>) nounwind readnone479 480define <8 x i16> @stack_fold_vphaddubw(<16 x i8> %a0) {481; CHECK-LABEL: stack_fold_vphaddubw:482; CHECK:       # %bb.0:483; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill484; CHECK-NEXT:    #APP485; CHECK-NEXT:    nop486; CHECK-NEXT:    #NO_APP487; CHECK-NEXT:    vphaddubw {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload488; CHECK-NEXT:    retq489  %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},~{flags}"()490  %2 = call <8 x i16> @llvm.x86.xop.vphaddubw(<16 x i8> %a0)491  ret <8 x i16> %2492}493declare <8 x i16> @llvm.x86.xop.vphaddubw(<16 x i8>) nounwind readnone494 495define <2 x i64> @stack_fold_vphaddudq(<4 x i32> %a0) {496; CHECK-LABEL: stack_fold_vphaddudq:497; CHECK:       # %bb.0:498; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill499; CHECK-NEXT:    #APP500; CHECK-NEXT:    nop501; CHECK-NEXT:    #NO_APP502; CHECK-NEXT:    vphaddudq {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload503; CHECK-NEXT:    retq504  %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},~{flags}"()505  %2 = call <2 x i64> @llvm.x86.xop.vphaddudq(<4 x i32> %a0)506  ret <2 x i64> %2507}508declare <2 x i64> @llvm.x86.xop.vphaddudq(<4 x i32>) nounwind readnone509 510define <4 x i32> @stack_fold_vphadduwd(<8 x i16> %a0) {511; CHECK-LABEL: stack_fold_vphadduwd:512; CHECK:       # %bb.0:513; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill514; CHECK-NEXT:    #APP515; CHECK-NEXT:    nop516; CHECK-NEXT:    #NO_APP517; CHECK-NEXT:    vphadduwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload518; CHECK-NEXT:    retq519  %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},~{flags}"()520  %2 = call <4 x i32> @llvm.x86.xop.vphadduwd(<8 x i16> %a0)521  ret <4 x i32> %2522}523declare <4 x i32> @llvm.x86.xop.vphadduwd(<8 x i16>) nounwind readnone524 525define <2 x i64> @stack_fold_vphadduwq(<8 x i16> %a0) {526; CHECK-LABEL: stack_fold_vphadduwq:527; CHECK:       # %bb.0:528; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill529; CHECK-NEXT:    #APP530; CHECK-NEXT:    nop531; CHECK-NEXT:    #NO_APP532; CHECK-NEXT:    vphadduwq {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload533; CHECK-NEXT:    retq534  %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},~{flags}"()535  %2 = call <2 x i64> @llvm.x86.xop.vphadduwq(<8 x i16> %a0)536  ret <2 x i64> %2537}538declare <2 x i64> @llvm.x86.xop.vphadduwq(<8 x i16>) nounwind readnone539 540define <4 x i32> @stack_fold_vphaddwd(<8 x i16> %a0) {541; CHECK-LABEL: stack_fold_vphaddwd:542; CHECK:       # %bb.0:543; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill544; CHECK-NEXT:    #APP545; CHECK-NEXT:    nop546; CHECK-NEXT:    #NO_APP547; CHECK-NEXT:    vphaddwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload548; CHECK-NEXT:    retq549  %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},~{flags}"()550  %2 = call <4 x i32> @llvm.x86.xop.vphaddwd(<8 x i16> %a0)551  ret <4 x i32> %2552}553declare <4 x i32> @llvm.x86.xop.vphaddwd(<8 x i16>) nounwind readnone554 555define <2 x i64> @stack_fold_vphaddwq(<8 x i16> %a0) {556; CHECK-LABEL: stack_fold_vphaddwq:557; CHECK:       # %bb.0:558; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill559; CHECK-NEXT:    #APP560; CHECK-NEXT:    nop561; CHECK-NEXT:    #NO_APP562; CHECK-NEXT:    vphaddwq {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload563; CHECK-NEXT:    retq564  %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},~{flags}"()565  %2 = call <2 x i64> @llvm.x86.xop.vphaddwq(<8 x i16> %a0)566  ret <2 x i64> %2567}568declare <2 x i64> @llvm.x86.xop.vphaddwq(<8 x i16>) nounwind readnone569 570define <8 x i16> @stack_fold_vphsubbw(<16 x i8> %a0) {571; CHECK-LABEL: stack_fold_vphsubbw:572; CHECK:       # %bb.0:573; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill574; CHECK-NEXT:    #APP575; CHECK-NEXT:    nop576; CHECK-NEXT:    #NO_APP577; CHECK-NEXT:    vphsubbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload578; CHECK-NEXT:    retq579  %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},~{flags}"()580  %2 = call <8 x i16> @llvm.x86.xop.vphsubbw(<16 x i8> %a0)581  ret <8 x i16> %2582}583declare <8 x i16> @llvm.x86.xop.vphsubbw(<16 x i8>) nounwind readnone584 585define <2 x i64> @stack_fold_vphsubdq(<4 x i32> %a0) {586; CHECK-LABEL: stack_fold_vphsubdq:587; CHECK:       # %bb.0:588; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill589; CHECK-NEXT:    #APP590; CHECK-NEXT:    nop591; CHECK-NEXT:    #NO_APP592; CHECK-NEXT:    vphsubdq {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload593; CHECK-NEXT:    retq594  %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},~{flags}"()595  %2 = call <2 x i64> @llvm.x86.xop.vphsubdq(<4 x i32> %a0)596  ret <2 x i64> %2597}598declare <2 x i64> @llvm.x86.xop.vphsubdq(<4 x i32>) nounwind readnone599 600define <4 x i32> @stack_fold_vphsubwd(<8 x i16> %a0) {601; CHECK-LABEL: stack_fold_vphsubwd:602; CHECK:       # %bb.0:603; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill604; CHECK-NEXT:    #APP605; CHECK-NEXT:    nop606; CHECK-NEXT:    #NO_APP607; CHECK-NEXT:    vphsubwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload608; CHECK-NEXT:    retq609  %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},~{flags}"()610  %2 = call <4 x i32> @llvm.x86.xop.vphsubwd(<8 x i16> %a0)611  ret <4 x i32> %2612}613declare <4 x i32> @llvm.x86.xop.vphsubwd(<8 x i16>) nounwind readnone614 615define <4 x i32> @stack_fold_vpmacsdd(<4 x i32> %a0, <4 x i32> %a1, <4 x i32> %a2) {616; CHECK-LABEL: stack_fold_vpmacsdd:617; CHECK:       # %bb.0:618; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill619; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill620; CHECK-NEXT:    #APP621; CHECK-NEXT:    nop622; CHECK-NEXT:    #NO_APP623; CHECK-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload624; CHECK-NEXT:    vpmacsdd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload625; CHECK-NEXT:    retq626  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()627  %2 = call <4 x i32> @llvm.x86.xop.vpmacsdd(<4 x i32> %a0, <4 x i32> %a1, <4 x i32> %a2)628  ret <4 x i32> %2629}630declare <4 x i32> @llvm.x86.xop.vpmacsdd(<4 x i32>, <4 x i32>, <4 x i32>) nounwind readnone631 632define <2 x i64> @stack_fold_vpmacsdqh(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2) {633; CHECK-LABEL: stack_fold_vpmacsdqh:634; CHECK:       # %bb.0:635; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill636; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill637; CHECK-NEXT:    #APP638; CHECK-NEXT:    nop639; CHECK-NEXT:    #NO_APP640; CHECK-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload641; CHECK-NEXT:    vpmacsdqh %xmm1, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload642; CHECK-NEXT:    retq643  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()644  %2 = call <2 x i64> @llvm.x86.xop.vpmacsdqh(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2)645  ret <2 x i64> %2646}647declare <2 x i64> @llvm.x86.xop.vpmacsdqh(<4 x i32>, <4 x i32>, <2 x i64>) nounwind readnone648 649define <2 x i64> @stack_fold_vpmacsdql(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2) {650; CHECK-LABEL: stack_fold_vpmacsdql:651; CHECK:       # %bb.0:652; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill653; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill654; CHECK-NEXT:    #APP655; CHECK-NEXT:    nop656; CHECK-NEXT:    #NO_APP657; CHECK-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload658; CHECK-NEXT:    vpmacsdql %xmm1, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload659; CHECK-NEXT:    retq660  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()661  %2 = call <2 x i64> @llvm.x86.xop.vpmacsdql(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2)662  ret <2 x i64> %2663}664declare <2 x i64> @llvm.x86.xop.vpmacsdql(<4 x i32>, <4 x i32>, <2 x i64>) nounwind readnone665 666define <4 x i32> @stack_fold_vpmacssdd(<4 x i32> %a0, <4 x i32> %a1, <4 x i32> %a2) {667; CHECK-LABEL: stack_fold_vpmacssdd:668; CHECK:       # %bb.0:669; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill670; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill671; CHECK-NEXT:    #APP672; CHECK-NEXT:    nop673; CHECK-NEXT:    #NO_APP674; CHECK-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload675; CHECK-NEXT:    vpmacssdd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload676; CHECK-NEXT:    retq677  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()678  %2 = call <4 x i32> @llvm.x86.xop.vpmacssdd(<4 x i32> %a0, <4 x i32> %a1, <4 x i32> %a2)679  ret <4 x i32> %2680}681declare <4 x i32> @llvm.x86.xop.vpmacssdd(<4 x i32>, <4 x i32>, <4 x i32>) nounwind readnone682 683define <2 x i64> @stack_fold_vpmacssdqh(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2) {684; CHECK-LABEL: stack_fold_vpmacssdqh:685; CHECK:       # %bb.0:686; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill687; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill688; CHECK-NEXT:    #APP689; CHECK-NEXT:    nop690; CHECK-NEXT:    #NO_APP691; CHECK-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload692; CHECK-NEXT:    vpmacssdqh %xmm1, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload693; CHECK-NEXT:    retq694  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()695  %2 = call <2 x i64> @llvm.x86.xop.vpmacssdqh(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2)696  ret <2 x i64> %2697}698declare <2 x i64> @llvm.x86.xop.vpmacssdqh(<4 x i32>, <4 x i32>, <2 x i64>) nounwind readnone699 700define <2 x i64> @stack_fold_vpmacssdql(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2) {701; CHECK-LABEL: stack_fold_vpmacssdql:702; CHECK:       # %bb.0:703; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill704; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill705; CHECK-NEXT:    #APP706; CHECK-NEXT:    nop707; CHECK-NEXT:    #NO_APP708; CHECK-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload709; CHECK-NEXT:    vpmacssdql %xmm1, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload710; CHECK-NEXT:    retq711  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()712  %2 = call <2 x i64> @llvm.x86.xop.vpmacssdql(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2)713  ret <2 x i64> %2714}715declare <2 x i64> @llvm.x86.xop.vpmacssdql(<4 x i32>, <4 x i32>, <2 x i64>) nounwind readnone716 717define <4 x i32> @stack_fold_vpmacsswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2) {718; CHECK-LABEL: stack_fold_vpmacsswd:719; CHECK:       # %bb.0:720; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill721; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill722; CHECK-NEXT:    #APP723; CHECK-NEXT:    nop724; CHECK-NEXT:    #NO_APP725; CHECK-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload726; CHECK-NEXT:    vpmacsswd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload727; CHECK-NEXT:    retq728  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()729  %2 = call <4 x i32> @llvm.x86.xop.vpmacsswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2)730  ret <4 x i32> %2731}732declare <4 x i32> @llvm.x86.xop.vpmacsswd(<8 x i16>, <8 x i16>, <4 x i32>) nounwind readnone733 734define <8 x i16> @stack_fold_vpmacssww(<8 x i16> %a0, <8 x i16> %a1, <8 x i16> %a2) {735; CHECK-LABEL: stack_fold_vpmacssww:736; CHECK:       # %bb.0:737; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill738; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill739; CHECK-NEXT:    #APP740; CHECK-NEXT:    nop741; CHECK-NEXT:    #NO_APP742; CHECK-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload743; CHECK-NEXT:    vpmacssww %xmm1, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload744; CHECK-NEXT:    retq745  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()746  %2 = call <8 x i16> @llvm.x86.xop.vpmacssww(<8 x i16> %a0, <8 x i16> %a1, <8 x i16> %a2)747  ret <8 x i16> %2748}749declare <8 x i16> @llvm.x86.xop.vpmacssww(<8 x i16>, <8 x i16>, <8 x i16>) nounwind readnone750 751define <4 x i32> @stack_fold_vpmacswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2) {752; CHECK-LABEL: stack_fold_vpmacswd:753; CHECK:       # %bb.0:754; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill755; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill756; CHECK-NEXT:    #APP757; CHECK-NEXT:    nop758; CHECK-NEXT:    #NO_APP759; CHECK-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload760; CHECK-NEXT:    vpmacswd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload761; CHECK-NEXT:    retq762  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()763  %2 = call <4 x i32> @llvm.x86.xop.vpmacswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2)764  ret <4 x i32> %2765}766declare <4 x i32> @llvm.x86.xop.vpmacswd(<8 x i16>, <8 x i16>, <4 x i32>) nounwind readnone767 768define <8 x i16> @stack_fold_vpmacsww(<8 x i16> %a0, <8 x i16> %a1, <8 x i16> %a2) {769; CHECK-LABEL: stack_fold_vpmacsww:770; CHECK:       # %bb.0:771; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill772; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill773; CHECK-NEXT:    #APP774; CHECK-NEXT:    nop775; CHECK-NEXT:    #NO_APP776; CHECK-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload777; CHECK-NEXT:    vpmacsww %xmm1, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload778; CHECK-NEXT:    retq779  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()780  %2 = call <8 x i16> @llvm.x86.xop.vpmacsww(<8 x i16> %a0, <8 x i16> %a1, <8 x i16> %a2)781  ret <8 x i16> %2782}783declare <8 x i16> @llvm.x86.xop.vpmacsww(<8 x i16>, <8 x i16>, <8 x i16>) nounwind readnone784 785define <4 x i32> @stack_fold_vpmadcsswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2) {786; CHECK-LABEL: stack_fold_vpmadcsswd:787; CHECK:       # %bb.0:788; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill789; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill790; CHECK-NEXT:    #APP791; CHECK-NEXT:    nop792; CHECK-NEXT:    #NO_APP793; CHECK-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload794; CHECK-NEXT:    vpmadcsswd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload795; CHECK-NEXT:    retq796  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()797  %2 = call <4 x i32> @llvm.x86.xop.vpmadcsswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2)798  ret <4 x i32> %2799}800declare <4 x i32> @llvm.x86.xop.vpmadcsswd(<8 x i16>, <8 x i16>, <4 x i32>) nounwind readnone801 802define <4 x i32> @stack_fold_vpmadcswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2) {803; CHECK-LABEL: stack_fold_vpmadcswd:804; CHECK:       # %bb.0:805; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill806; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill807; CHECK-NEXT:    #APP808; CHECK-NEXT:    nop809; CHECK-NEXT:    #NO_APP810; CHECK-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload811; CHECK-NEXT:    vpmadcswd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload812; CHECK-NEXT:    retq813  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()814  %2 = call <4 x i32> @llvm.x86.xop.vpmadcswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2)815  ret <4 x i32> %2816}817declare <4 x i32> @llvm.x86.xop.vpmadcswd(<8 x i16>, <8 x i16>, <4 x i32>) nounwind readnone818 819define <16 x i8> @stack_fold_vpperm_rm(<16 x i8> %a0, <16 x i8> %a1, <16 x i8> %a2) {820; CHECK-LABEL: stack_fold_vpperm_rm:821; CHECK:       # %bb.0:822; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill823; CHECK-NEXT:    #APP824; CHECK-NEXT:    nop825; CHECK-NEXT:    #NO_APP826; CHECK-NEXT:    vpperm {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0, %xmm0 # 16-byte Folded Reload827; CHECK-NEXT:    retq828  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()829  %2 = call <16 x i8> @llvm.x86.xop.vpperm(<16 x i8> %a0, <16 x i8> %a1, <16 x i8> %a2)830  ret <16 x i8> %2831}832define <16 x i8> @stack_fold_vpperm_mr(<16 x i8> %a0, <16 x i8> %a1, <16 x i8> %a2) {833; CHECK-LABEL: stack_fold_vpperm_mr:834; CHECK:       # %bb.0:835; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill836; CHECK-NEXT:    #APP837; CHECK-NEXT:    nop838; CHECK-NEXT:    #NO_APP839; CHECK-NEXT:    vpperm %xmm1, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload840; CHECK-NEXT:    retq841  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()842  %2 = call <16 x i8> @llvm.x86.xop.vpperm(<16 x i8> %a0, <16 x i8> %a2, <16 x i8> %a1)843  ret <16 x i8> %2844}845declare <16 x i8> @llvm.x86.xop.vpperm(<16 x i8>, <16 x i8>, <16 x i8>) nounwind readnone846 847define <16 x i8> @stack_fold_vprotb(<16 x i8> %a0) {848; CHECK-LABEL: stack_fold_vprotb:849; CHECK:       # %bb.0:850; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill851; CHECK-NEXT:    #APP852; CHECK-NEXT:    nop853; CHECK-NEXT:    #NO_APP854; CHECK-NEXT:    vprotb $7, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload855; CHECK-NEXT:    retq856  %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},~{flags}"()857  %2 = call <16 x i8> @llvm.x86.xop.vprotbi(<16 x i8> %a0, i8 7)858  ret <16 x i8> %2859}860declare <16 x i8> @llvm.x86.xop.vprotbi(<16 x i8>, i8) nounwind readnone861 862define <16 x i8> @stack_fold_vprotb_rm(<16 x i8> %a0, <16 x i8> %a1) {863; CHECK-LABEL: stack_fold_vprotb_rm:864; CHECK:       # %bb.0:865; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill866; CHECK-NEXT:    #APP867; CHECK-NEXT:    nop868; CHECK-NEXT:    #NO_APP869; CHECK-NEXT:    vprotb {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload870; CHECK-NEXT:    retq871  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()872  %2 = call <16 x i8> @llvm.x86.xop.vprotb(<16 x i8> %a0, <16 x i8> %a1)873  ret <16 x i8> %2874}875define <16 x i8> @stack_fold_vprotb_mr(<16 x i8> %a0, <16 x i8> %a1) {876; CHECK-LABEL: stack_fold_vprotb_mr:877; CHECK:       # %bb.0:878; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill879; CHECK-NEXT:    #APP880; CHECK-NEXT:    nop881; CHECK-NEXT:    #NO_APP882; CHECK-NEXT:    vprotb %xmm0, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload883; CHECK-NEXT:    retq884  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()885  %2 = call <16 x i8> @llvm.x86.xop.vprotb(<16 x i8> %a1, <16 x i8> %a0)886  ret <16 x i8> %2887}888declare <16 x i8> @llvm.x86.xop.vprotb(<16 x i8>, <16 x i8>) nounwind readnone889 890define <4 x i32> @stack_fold_vprotd(<4 x i32> %a0) {891; CHECK-LABEL: stack_fold_vprotd:892; CHECK:       # %bb.0:893; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill894; CHECK-NEXT:    #APP895; CHECK-NEXT:    nop896; CHECK-NEXT:    #NO_APP897; CHECK-NEXT:    vprotd $7, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload898; CHECK-NEXT:    retq899  %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},~{flags}"()900  %2 = call <4 x i32> @llvm.x86.xop.vprotdi(<4 x i32> %a0, i8 7)901  ret <4 x i32> %2902}903declare <4 x i32> @llvm.x86.xop.vprotdi(<4 x i32>, i8) nounwind readnone904 905define <4 x i32> @stack_fold_vprotd_rm(<4 x i32> %a0, <4 x i32> %a1) {906; CHECK-LABEL: stack_fold_vprotd_rm:907; CHECK:       # %bb.0:908; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill909; CHECK-NEXT:    #APP910; CHECK-NEXT:    nop911; CHECK-NEXT:    #NO_APP912; CHECK-NEXT:    vprotd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload913; CHECK-NEXT:    retq914  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()915  %2 = call <4 x i32> @llvm.x86.xop.vprotd(<4 x i32> %a0, <4 x i32> %a1)916  ret <4 x i32> %2917}918define <4 x i32> @stack_fold_vprotd_mr(<4 x i32> %a0, <4 x i32> %a1) {919; CHECK-LABEL: stack_fold_vprotd_mr:920; CHECK:       # %bb.0:921; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill922; CHECK-NEXT:    #APP923; CHECK-NEXT:    nop924; CHECK-NEXT:    #NO_APP925; CHECK-NEXT:    vprotd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload926; CHECK-NEXT:    retq927  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()928  %2 = call <4 x i32> @llvm.x86.xop.vprotd(<4 x i32> %a1, <4 x i32> %a0)929  ret <4 x i32> %2930}931declare <4 x i32> @llvm.x86.xop.vprotd(<4 x i32>, <4 x i32>) nounwind readnone932 933define <2 x i64> @stack_fold_vprotq(<2 x i64> %a0) {934; CHECK-LABEL: stack_fold_vprotq:935; CHECK:       # %bb.0:936; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill937; CHECK-NEXT:    #APP938; CHECK-NEXT:    nop939; CHECK-NEXT:    #NO_APP940; CHECK-NEXT:    vprotq $7, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload941; CHECK-NEXT:    retq942  %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},~{flags}"()943  %2 = call <2 x i64> @llvm.x86.xop.vprotqi(<2 x i64> %a0, i8 7)944  ret <2 x i64> %2945}946declare <2 x i64> @llvm.x86.xop.vprotqi(<2 x i64>, i8) nounwind readnone947 948define <2 x i64> @stack_fold_vprotq_rm(<2 x i64> %a0, <2 x i64> %a1) {949; CHECK-LABEL: stack_fold_vprotq_rm:950; CHECK:       # %bb.0:951; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill952; CHECK-NEXT:    #APP953; CHECK-NEXT:    nop954; CHECK-NEXT:    #NO_APP955; CHECK-NEXT:    vprotq {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload956; CHECK-NEXT:    retq957  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()958  %2 = call <2 x i64> @llvm.x86.xop.vprotq(<2 x i64> %a0, <2 x i64> %a1)959  ret <2 x i64> %2960}961define <2 x i64> @stack_fold_vprotq_mr(<2 x i64> %a0, <2 x i64> %a1) {962; CHECK-LABEL: stack_fold_vprotq_mr:963; CHECK:       # %bb.0:964; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill965; CHECK-NEXT:    #APP966; CHECK-NEXT:    nop967; CHECK-NEXT:    #NO_APP968; CHECK-NEXT:    vprotq %xmm0, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload969; CHECK-NEXT:    retq970  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()971  %2 = call <2 x i64> @llvm.x86.xop.vprotq(<2 x i64> %a1, <2 x i64> %a0)972  ret <2 x i64> %2973}974declare <2 x i64> @llvm.x86.xop.vprotq(<2 x i64>, <2 x i64>) nounwind readnone975 976define <8 x i16> @stack_fold_vprotw(<8 x i16> %a0) {977; CHECK-LABEL: stack_fold_vprotw:978; CHECK:       # %bb.0:979; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill980; CHECK-NEXT:    #APP981; CHECK-NEXT:    nop982; CHECK-NEXT:    #NO_APP983; CHECK-NEXT:    vprotw $7, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload984; CHECK-NEXT:    retq985  %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},~{flags}"()986  %2 = call <8 x i16> @llvm.x86.xop.vprotwi(<8 x i16> %a0, i8 7)987  ret <8 x i16> %2988}989declare <8 x i16> @llvm.x86.xop.vprotwi(<8 x i16>, i8) nounwind readnone990 991define <8 x i16> @stack_fold_vprotw_rm(<8 x i16> %a0, <8 x i16> %a1) {992; CHECK-LABEL: stack_fold_vprotw_rm:993; CHECK:       # %bb.0:994; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill995; CHECK-NEXT:    #APP996; CHECK-NEXT:    nop997; CHECK-NEXT:    #NO_APP998; CHECK-NEXT:    vprotw {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload999; CHECK-NEXT:    retq1000  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()1001  %2 = call <8 x i16> @llvm.x86.xop.vprotw(<8 x i16> %a0, <8 x i16> %a1)1002  ret <8 x i16> %21003}1004define <8 x i16> @stack_fold_vprotw_mr(<8 x i16> %a0, <8 x i16> %a1) {1005; CHECK-LABEL: stack_fold_vprotw_mr:1006; CHECK:       # %bb.0:1007; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1008; CHECK-NEXT:    #APP1009; CHECK-NEXT:    nop1010; CHECK-NEXT:    #NO_APP1011; CHECK-NEXT:    vprotw %xmm0, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload1012; CHECK-NEXT:    retq1013  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()1014  %2 = call <8 x i16> @llvm.x86.xop.vprotw(<8 x i16> %a1, <8 x i16> %a0)1015  ret <8 x i16> %21016}1017declare <8 x i16> @llvm.x86.xop.vprotw(<8 x i16>, <8 x i16>) nounwind readnone1018 1019define <16 x i8> @stack_fold_vpshab_rm(<16 x i8> %a0, <16 x i8> %a1) {1020; CHECK-LABEL: stack_fold_vpshab_rm:1021; CHECK:       # %bb.0:1022; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1023; CHECK-NEXT:    #APP1024; CHECK-NEXT:    nop1025; CHECK-NEXT:    #NO_APP1026; CHECK-NEXT:    vpshab {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-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},~{flags}"()1029  %2 = call <16 x i8> @llvm.x86.xop.vpshab(<16 x i8> %a0, <16 x i8> %a1)1030  ret <16 x i8> %21031}1032define <16 x i8> @stack_fold_vpshab_mr(<16 x i8> %a0, <16 x i8> %a1) {1033; CHECK-LABEL: stack_fold_vpshab_mr:1034; CHECK:       # %bb.0:1035; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1036; CHECK-NEXT:    #APP1037; CHECK-NEXT:    nop1038; CHECK-NEXT:    #NO_APP1039; CHECK-NEXT:    vpshab %xmm0, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload1040; CHECK-NEXT:    retq1041  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()1042  %2 = call <16 x i8> @llvm.x86.xop.vpshab(<16 x i8> %a1, <16 x i8> %a0)1043  ret <16 x i8> %21044}1045declare <16 x i8> @llvm.x86.xop.vpshab(<16 x i8>, <16 x i8>) nounwind readnone1046 1047define <4 x i32> @stack_fold_vpshad_rm(<4 x i32> %a0, <4 x i32> %a1) {1048; CHECK-LABEL: stack_fold_vpshad_rm:1049; CHECK:       # %bb.0:1050; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1051; CHECK-NEXT:    #APP1052; CHECK-NEXT:    nop1053; CHECK-NEXT:    #NO_APP1054; CHECK-NEXT:    vpshad {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload1055; CHECK-NEXT:    retq1056  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()1057  %2 = call <4 x i32> @llvm.x86.xop.vpshad(<4 x i32> %a0, <4 x i32> %a1)1058  ret <4 x i32> %21059}1060define <4 x i32> @stack_fold_vpshad_mr(<4 x i32> %a0, <4 x i32> %a1) {1061; CHECK-LABEL: stack_fold_vpshad_mr:1062; CHECK:       # %bb.0:1063; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1064; CHECK-NEXT:    #APP1065; CHECK-NEXT:    nop1066; CHECK-NEXT:    #NO_APP1067; CHECK-NEXT:    vpshad %xmm0, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload1068; CHECK-NEXT:    retq1069  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()1070  %2 = call <4 x i32> @llvm.x86.xop.vpshad(<4 x i32> %a1, <4 x i32> %a0)1071  ret <4 x i32> %21072}1073declare <4 x i32> @llvm.x86.xop.vpshad(<4 x i32>, <4 x i32>) nounwind readnone1074 1075define <2 x i64> @stack_fold_vpshaq_rm(<2 x i64> %a0, <2 x i64> %a1) {1076; CHECK-LABEL: stack_fold_vpshaq_rm:1077; CHECK:       # %bb.0:1078; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1079; CHECK-NEXT:    #APP1080; CHECK-NEXT:    nop1081; CHECK-NEXT:    #NO_APP1082; CHECK-NEXT:    vpshaq {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload1083; CHECK-NEXT:    retq1084  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()1085  %2 = call <2 x i64> @llvm.x86.xop.vpshaq(<2 x i64> %a0, <2 x i64> %a1)1086  ret <2 x i64> %21087}1088define <2 x i64> @stack_fold_vpshaq_mr(<2 x i64> %a0, <2 x i64> %a1) {1089; CHECK-LABEL: stack_fold_vpshaq_mr:1090; CHECK:       # %bb.0:1091; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1092; CHECK-NEXT:    #APP1093; CHECK-NEXT:    nop1094; CHECK-NEXT:    #NO_APP1095; CHECK-NEXT:    vpshaq %xmm0, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload1096; CHECK-NEXT:    retq1097  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()1098  %2 = call <2 x i64> @llvm.x86.xop.vpshaq(<2 x i64> %a1, <2 x i64> %a0)1099  ret <2 x i64> %21100}1101declare <2 x i64> @llvm.x86.xop.vpshaq(<2 x i64>, <2 x i64>) nounwind readnone1102 1103define <8 x i16> @stack_fold_vpshaw_rm(<8 x i16> %a0, <8 x i16> %a1) {1104; CHECK-LABEL: stack_fold_vpshaw_rm:1105; CHECK:       # %bb.0:1106; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1107; CHECK-NEXT:    #APP1108; CHECK-NEXT:    nop1109; CHECK-NEXT:    #NO_APP1110; CHECK-NEXT:    vpshaw {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload1111; CHECK-NEXT:    retq1112  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()1113  %2 = call <8 x i16> @llvm.x86.xop.vpshaw(<8 x i16> %a0, <8 x i16> %a1)1114  ret <8 x i16> %21115}1116define <8 x i16> @stack_fold_vpshaw_mr(<8 x i16> %a0, <8 x i16> %a1) {1117; CHECK-LABEL: stack_fold_vpshaw_mr:1118; CHECK:       # %bb.0:1119; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1120; CHECK-NEXT:    #APP1121; CHECK-NEXT:    nop1122; CHECK-NEXT:    #NO_APP1123; CHECK-NEXT:    vpshaw %xmm0, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload1124; CHECK-NEXT:    retq1125  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()1126  %2 = call <8 x i16> @llvm.x86.xop.vpshaw(<8 x i16> %a1, <8 x i16> %a0)1127  ret <8 x i16> %21128}1129declare <8 x i16> @llvm.x86.xop.vpshaw(<8 x i16>, <8 x i16>) nounwind readnone1130 1131define <16 x i8> @stack_fold_vpshlb_rm(<16 x i8> %a0, <16 x i8> %a1) {1132; CHECK-LABEL: stack_fold_vpshlb_rm:1133; CHECK:       # %bb.0:1134; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1135; CHECK-NEXT:    #APP1136; CHECK-NEXT:    nop1137; CHECK-NEXT:    #NO_APP1138; CHECK-NEXT:    vpshlb {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload1139; CHECK-NEXT:    retq1140  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()1141  %2 = call <16 x i8> @llvm.x86.xop.vpshlb(<16 x i8> %a0, <16 x i8> %a1)1142  ret <16 x i8> %21143}1144define <16 x i8> @stack_fold_vpshlb_mr(<16 x i8> %a0, <16 x i8> %a1) {1145; CHECK-LABEL: stack_fold_vpshlb_mr:1146; CHECK:       # %bb.0:1147; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1148; CHECK-NEXT:    #APP1149; CHECK-NEXT:    nop1150; CHECK-NEXT:    #NO_APP1151; CHECK-NEXT:    vpshlb %xmm0, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload1152; CHECK-NEXT:    retq1153  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()1154  %2 = call <16 x i8> @llvm.x86.xop.vpshlb(<16 x i8> %a1, <16 x i8> %a0)1155  ret <16 x i8> %21156}1157declare <16 x i8> @llvm.x86.xop.vpshlb(<16 x i8>, <16 x i8>) nounwind readnone1158 1159define <4 x i32> @stack_fold_vpshld_rm(<4 x i32> %a0, <4 x i32> %a1) {1160; CHECK-LABEL: stack_fold_vpshld_rm:1161; CHECK:       # %bb.0:1162; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1163; CHECK-NEXT:    #APP1164; CHECK-NEXT:    nop1165; CHECK-NEXT:    #NO_APP1166; CHECK-NEXT:    vpshld {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload1167; CHECK-NEXT:    retq1168  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()1169  %2 = call <4 x i32> @llvm.x86.xop.vpshld(<4 x i32> %a0, <4 x i32> %a1)1170  ret <4 x i32> %21171}1172define <4 x i32> @stack_fold_vpshld_mr(<4 x i32> %a0, <4 x i32> %a1) {1173; CHECK-LABEL: stack_fold_vpshld_mr:1174; CHECK:       # %bb.0:1175; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1176; CHECK-NEXT:    #APP1177; CHECK-NEXT:    nop1178; CHECK-NEXT:    #NO_APP1179; CHECK-NEXT:    vpshld %xmm0, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload1180; CHECK-NEXT:    retq1181  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()1182  %2 = call <4 x i32> @llvm.x86.xop.vpshld(<4 x i32> %a1, <4 x i32> %a0)1183  ret <4 x i32> %21184}1185declare <4 x i32> @llvm.x86.xop.vpshld(<4 x i32>, <4 x i32>) nounwind readnone1186 1187define <2 x i64> @stack_fold_vpshlq_rm(<2 x i64> %a0, <2 x i64> %a1) {1188; CHECK-LABEL: stack_fold_vpshlq_rm:1189; CHECK:       # %bb.0:1190; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1191; CHECK-NEXT:    #APP1192; CHECK-NEXT:    nop1193; CHECK-NEXT:    #NO_APP1194; CHECK-NEXT:    vpshlq {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload1195; CHECK-NEXT:    retq1196  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()1197  %2 = call <2 x i64> @llvm.x86.xop.vpshlq(<2 x i64> %a0, <2 x i64> %a1)1198  ret <2 x i64> %21199}1200define <2 x i64> @stack_fold_vpshlq_mr(<2 x i64> %a0, <2 x i64> %a1) {1201; CHECK-LABEL: stack_fold_vpshlq_mr:1202; CHECK:       # %bb.0:1203; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1204; CHECK-NEXT:    #APP1205; CHECK-NEXT:    nop1206; CHECK-NEXT:    #NO_APP1207; CHECK-NEXT:    vpshlq %xmm0, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload1208; CHECK-NEXT:    retq1209  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()1210  %2 = call <2 x i64> @llvm.x86.xop.vpshlq(<2 x i64> %a1, <2 x i64> %a0)1211  ret <2 x i64> %21212}1213declare <2 x i64> @llvm.x86.xop.vpshlq(<2 x i64>, <2 x i64>) nounwind readnone1214 1215define <8 x i16> @stack_fold_vpshlw_rm(<8 x i16> %a0, <8 x i16> %a1) {1216; CHECK-LABEL: stack_fold_vpshlw_rm:1217; CHECK:       # %bb.0:1218; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1219; CHECK-NEXT:    #APP1220; CHECK-NEXT:    nop1221; CHECK-NEXT:    #NO_APP1222; CHECK-NEXT:    vpshlw {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload1223; CHECK-NEXT:    retq1224  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()1225  %2 = call <8 x i16> @llvm.x86.xop.vpshlw(<8 x i16> %a0, <8 x i16> %a1)1226  ret <8 x i16> %21227}1228define <8 x i16> @stack_fold_vpshlw_mr(<8 x i16> %a0, <8 x i16> %a1) {1229; CHECK-LABEL: stack_fold_vpshlw_mr:1230; CHECK:       # %bb.0:1231; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1232; CHECK-NEXT:    #APP1233; CHECK-NEXT:    nop1234; CHECK-NEXT:    #NO_APP1235; CHECK-NEXT:    vpshlw %xmm0, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload1236; CHECK-NEXT:    retq1237  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()1238  %2 = call <8 x i16> @llvm.x86.xop.vpshlw(<8 x i16> %a1, <8 x i16> %a0)1239  ret <8 x i16> %21240}1241declare <8 x i16> @llvm.x86.xop.vpshlw(<8 x i16>, <8 x i16>) nounwind readnone1242