brintos

brintos / llvm-project-archived public Read only

0
0
Text · 146.5 KiB · 77aa875 Raw
2677 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=+avx512fp16,+avx512vl < %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 <8 x half> @stack_fold_fmadd123ph(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2) {13; CHECK-LABEL: stack_fold_fmadd123ph:14; CHECK:       # %bb.0:15; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill16; CHECK-NEXT:    #APP17; CHECK-NEXT:    nop18; CHECK-NEXT:    #NO_APP19; CHECK-NEXT:    vfmadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload20; CHECK-NEXT:    retq21  %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}"()22  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2)23  ret <8 x half> %224}25declare <8 x half> @llvm.fma.v8f16(<8 x half>, <8 x half>, <8 x half>)26 27define <8 x half> @stack_fold_fmadd213ph(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2) {28; CHECK-LABEL: stack_fold_fmadd213ph:29; CHECK:       # %bb.0:30; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill31; CHECK-NEXT:    #APP32; CHECK-NEXT:    nop33; CHECK-NEXT:    #NO_APP34; CHECK-NEXT:    vfmadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload35; CHECK-NEXT:    retq36  %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}"()37  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %a1, <8 x half> %a0, <8 x half> %a2)38  ret <8 x half> %239}40 41define <8 x half> @stack_fold_fmadd231ph(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2) {42; CHECK-LABEL: stack_fold_fmadd231ph:43; CHECK:       # %bb.0:44; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill45; CHECK-NEXT:    #APP46; CHECK-NEXT:    nop47; CHECK-NEXT:    #NO_APP48; CHECK-NEXT:    vfmadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload49; CHECK-NEXT:    retq50  %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}"()51  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %a1, <8 x half> %a2, <8 x half> %a0)52  ret <8 x half> %253}54 55define <8 x half> @stack_fold_fmadd321ph(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2) {56; CHECK-LABEL: stack_fold_fmadd321ph:57; CHECK:       # %bb.0:58; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill59; CHECK-NEXT:    #APP60; CHECK-NEXT:    nop61; CHECK-NEXT:    #NO_APP62; CHECK-NEXT:    vfmadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload63; CHECK-NEXT:    retq64  %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}"()65  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %a2, <8 x half> %a1, <8 x half> %a0)66  ret <8 x half> %267}68 69define <8 x half> @stack_fold_fmadd132ph(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2) {70; CHECK-LABEL: stack_fold_fmadd132ph:71; CHECK:       # %bb.0:72; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill73; CHECK-NEXT:    #APP74; CHECK-NEXT:    nop75; CHECK-NEXT:    #NO_APP76; CHECK-NEXT:    vfmadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload77; CHECK-NEXT:    retq78  %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}"()79  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %a0, <8 x half> %a2, <8 x half> %a1)80  ret <8 x half> %281}82 83define <8 x half> @stack_fold_fmadd312ph(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2) {84; CHECK-LABEL: stack_fold_fmadd312ph:85; CHECK:       # %bb.0:86; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill87; CHECK-NEXT:    #APP88; CHECK-NEXT:    nop89; CHECK-NEXT:    #NO_APP90; CHECK-NEXT:    vfmadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload91; CHECK-NEXT:    retq92  %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}"()93  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %a2, <8 x half> %a0, <8 x half> %a1)94  ret <8 x half> %295}96 97define <8 x half> @stack_fold_fmadd123ph_mask(ptr %p, <8 x half> %a1, <8 x half> %a2, i8 %mask) {98; CHECK-LABEL: stack_fold_fmadd123ph_mask:99; CHECK:       # %bb.0:100; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill101; CHECK-NEXT:    #APP102; CHECK-NEXT:    nop103; CHECK-NEXT:    #NO_APP104; CHECK-NEXT:    vmovaps (%rdi), %xmm2105; CHECK-NEXT:    kmovd %esi, %k1106; CHECK-NEXT:    vfmadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm2 {%k1} # 16-byte Folded Reload107; CHECK-NEXT:    vmovaps %xmm2, %xmm0108; CHECK-NEXT:    retq109  %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}"()110  %a0 = load <8 x half>, ptr %p111  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2)112  %3 = bitcast i8 %mask to <8 x i1>113  %4 = select <8 x i1> %3, <8 x half> %2, <8 x half> %a0114  ret <8 x half> %4115}116 117define <8 x half> @stack_fold_fmadd213ph_mask(ptr %p, <8 x half> %a1, <8 x half> %a2, i8 %mask) {118; CHECK-LABEL: stack_fold_fmadd213ph_mask:119; CHECK:       # %bb.0:120; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill121; CHECK-NEXT:    #APP122; CHECK-NEXT:    nop123; CHECK-NEXT:    #NO_APP124; CHECK-NEXT:    vmovaps (%rdi), %xmm2125; CHECK-NEXT:    kmovd %esi, %k1126; CHECK-NEXT:    vfmadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm2 {%k1} # 16-byte Folded Reload127; CHECK-NEXT:    vmovaps %xmm2, %xmm0128; CHECK-NEXT:    retq129  %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}"()130  %a0 = load <8 x half>, ptr %p131  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %a1, <8 x half> %a0, <8 x half> %a2)132  %3 = bitcast i8 %mask to <8 x i1>133  %4 = select <8 x i1> %3, <8 x half> %2, <8 x half> %a0134  ret <8 x half> %4135}136 137define <8 x half> @stack_fold_fmadd231ph_mask(ptr %p, <8 x half> %a1, <8 x half> %a2, i8 %mask) {138; CHECK-LABEL: stack_fold_fmadd231ph_mask:139; CHECK:       # %bb.0:140; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill141; CHECK-NEXT:    #APP142; CHECK-NEXT:    nop143; CHECK-NEXT:    #NO_APP144; CHECK-NEXT:    vmovaps (%rdi), %xmm2145; CHECK-NEXT:    kmovd %esi, %k1146; CHECK-NEXT:    vfmadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm2 {%k1} # 16-byte Folded Reload147; CHECK-NEXT:    vmovaps %xmm2, %xmm0148; CHECK-NEXT:    retq149  %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}"()150  %a0 = load <8 x half>, ptr %p151  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %a1, <8 x half> %a2, <8 x half> %a0)152  %3 = bitcast i8 %mask to <8 x i1>153  %4 = select <8 x i1> %3, <8 x half> %2, <8 x half> %a0154  ret <8 x half> %4155}156 157define <8 x half> @stack_fold_fmadd321ph_mask(ptr %p, <8 x half> %a1, <8 x half> %a2, i8 %mask) {158; CHECK-LABEL: stack_fold_fmadd321ph_mask:159; CHECK:       # %bb.0:160; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill161; CHECK-NEXT:    #APP162; CHECK-NEXT:    nop163; CHECK-NEXT:    #NO_APP164; CHECK-NEXT:    vmovaps (%rdi), %xmm2165; CHECK-NEXT:    kmovd %esi, %k1166; CHECK-NEXT:    vfmadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm2 {%k1} # 16-byte Folded Reload167; CHECK-NEXT:    vmovaps %xmm2, %xmm0168; CHECK-NEXT:    retq169  %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}"()170  %a0 = load <8 x half>, ptr %p171  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %a2, <8 x half> %a1, <8 x half> %a0)172  %3 = bitcast i8 %mask to <8 x i1>173  %4 = select <8 x i1> %3, <8 x half> %2, <8 x half> %a0174  ret <8 x half> %4175}176 177define <8 x half> @stack_fold_fmadd132ph_mask(ptr %p, <8 x half> %a1, <8 x half> %a2, i8 %mask) {178; CHECK-LABEL: stack_fold_fmadd132ph_mask:179; CHECK:       # %bb.0:180; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill181; CHECK-NEXT:    #APP182; CHECK-NEXT:    nop183; CHECK-NEXT:    #NO_APP184; CHECK-NEXT:    vmovaps (%rdi), %xmm2185; CHECK-NEXT:    kmovd %esi, %k1186; CHECK-NEXT:    vfmadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm2 {%k1} # 16-byte Folded Reload187; CHECK-NEXT:    vmovaps %xmm2, %xmm0188; CHECK-NEXT:    retq189  %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}"()190  %a0 = load <8 x half>, ptr %p191  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %a0, <8 x half> %a2, <8 x half> %a1)192  %3 = bitcast i8 %mask to <8 x i1>193  %4 = select <8 x i1> %3, <8 x half> %2, <8 x half> %a0194  ret <8 x half> %4195}196 197define <8 x half> @stack_fold_fmadd312ph_mask(ptr %p, <8 x half> %a1, <8 x half> %a2, i8 %mask) {198; CHECK-LABEL: stack_fold_fmadd312ph_mask:199; CHECK:       # %bb.0:200; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill201; CHECK-NEXT:    #APP202; CHECK-NEXT:    nop203; CHECK-NEXT:    #NO_APP204; CHECK-NEXT:    vmovaps (%rdi), %xmm2205; CHECK-NEXT:    kmovd %esi, %k1206; CHECK-NEXT:    vfmadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm2 {%k1} # 16-byte Folded Reload207; CHECK-NEXT:    vmovaps %xmm2, %xmm0208; CHECK-NEXT:    retq209  %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}"()210  %a0 = load <8 x half>, ptr %p211  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %a2, <8 x half> %a0, <8 x half> %a1)212  %3 = bitcast i8 %mask to <8 x i1>213  %4 = select <8 x i1> %3, <8 x half> %2, <8 x half> %a0214  ret <8 x half> %4215}216 217define <8 x half> @stack_fold_fmadd123ph_maskz(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2, ptr %mask) {218; CHECK-LABEL: stack_fold_fmadd123ph_maskz:219; CHECK:       # %bb.0:220; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill221; CHECK-NEXT:    #APP222; CHECK-NEXT:    nop223; CHECK-NEXT:    #NO_APP224; CHECK-NEXT:    movzbl (%rdi), %eax225; CHECK-NEXT:    kmovd %eax, %k1226; CHECK-NEXT:    vfmadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload227; CHECK-NEXT:    retq228  %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}"()229  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2)230  %3 = load i8, ptr %mask231  %4 = bitcast i8 %3 to <8 x i1>232  %5 = select <8 x i1> %4, <8 x half> %2, <8 x half> zeroinitializer233  ret <8 x half> %5234}235 236define <8 x half> @stack_fold_fmadd213ph_maskz(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2, ptr %mask) {237; CHECK-LABEL: stack_fold_fmadd213ph_maskz:238; CHECK:       # %bb.0:239; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill240; CHECK-NEXT:    #APP241; CHECK-NEXT:    nop242; CHECK-NEXT:    #NO_APP243; CHECK-NEXT:    movzbl (%rdi), %eax244; CHECK-NEXT:    kmovd %eax, %k1245; CHECK-NEXT:    vfmadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload246; CHECK-NEXT:    retq247  %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}"()248  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %a1, <8 x half> %a0, <8 x half> %a2)249  %3 = load i8, ptr %mask250  %4 = bitcast i8 %3 to <8 x i1>251  %5 = select <8 x i1> %4, <8 x half> %2, <8 x half> zeroinitializer252  ret <8 x half> %5253}254 255define <8 x half> @stack_fold_fmadd231ph_maskz(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2, ptr %mask) {256; CHECK-LABEL: stack_fold_fmadd231ph_maskz:257; CHECK:       # %bb.0:258; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill259; CHECK-NEXT:    #APP260; CHECK-NEXT:    nop261; CHECK-NEXT:    #NO_APP262; CHECK-NEXT:    movzbl (%rdi), %eax263; CHECK-NEXT:    kmovd %eax, %k1264; CHECK-NEXT:    vfmadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload265; CHECK-NEXT:    retq266  %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}"()267  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %a1, <8 x half> %a2, <8 x half> %a0)268  %3 = load i8, ptr %mask269  %4 = bitcast i8 %3 to <8 x i1>270  %5 = select <8 x i1> %4, <8 x half> %2, <8 x half> zeroinitializer271  ret <8 x half> %5272}273 274define <8 x half> @stack_fold_fmadd321ph_maskz(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2, ptr %mask) {275; CHECK-LABEL: stack_fold_fmadd321ph_maskz:276; CHECK:       # %bb.0:277; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill278; CHECK-NEXT:    #APP279; CHECK-NEXT:    nop280; CHECK-NEXT:    #NO_APP281; CHECK-NEXT:    movzbl (%rdi), %eax282; CHECK-NEXT:    kmovd %eax, %k1283; CHECK-NEXT:    vfmadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload284; CHECK-NEXT:    retq285  %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}"()286  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %a2, <8 x half> %a1, <8 x half> %a0)287  %3 = load i8, ptr %mask288  %4 = bitcast i8 %3 to <8 x i1>289  %5 = select <8 x i1> %4, <8 x half> %2, <8 x half> zeroinitializer290  ret <8 x half> %5291}292 293define <8 x half> @stack_fold_fmadd132ph_maskz(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2, ptr %mask) {294; CHECK-LABEL: stack_fold_fmadd132ph_maskz:295; CHECK:       # %bb.0:296; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill297; CHECK-NEXT:    #APP298; CHECK-NEXT:    nop299; CHECK-NEXT:    #NO_APP300; CHECK-NEXT:    movzbl (%rdi), %eax301; CHECK-NEXT:    kmovd %eax, %k1302; CHECK-NEXT:    vfmadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload303; CHECK-NEXT:    retq304  %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}"()305  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %a0, <8 x half> %a2, <8 x half> %a1)306  %3 = load i8, ptr %mask307  %4 = bitcast i8 %3 to <8 x i1>308  %5 = select <8 x i1> %4, <8 x half> %2, <8 x half> zeroinitializer309  ret <8 x half> %5310}311 312define <8 x half> @stack_fold_fmadd312ph_maskz(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2, ptr %mask) {313; CHECK-LABEL: stack_fold_fmadd312ph_maskz:314; CHECK:       # %bb.0:315; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill316; CHECK-NEXT:    #APP317; CHECK-NEXT:    nop318; CHECK-NEXT:    #NO_APP319; CHECK-NEXT:    movzbl (%rdi), %eax320; CHECK-NEXT:    kmovd %eax, %k1321; CHECK-NEXT:    vfmadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload322; CHECK-NEXT:    retq323  %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}"()324  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %a2, <8 x half> %a0, <8 x half> %a1)325  %3 = load i8, ptr %mask326  %4 = bitcast i8 %3 to <8 x i1>327  %5 = select <8 x i1> %4, <8 x half> %2, <8 x half> zeroinitializer328  ret <8 x half> %5329}330 331define <8 x half> @stack_fold_fmsub123ph(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2) {332; CHECK-LABEL: stack_fold_fmsub123ph:333; CHECK:       # %bb.0:334; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill335; CHECK-NEXT:    #APP336; CHECK-NEXT:    nop337; CHECK-NEXT:    #NO_APP338; CHECK-NEXT:    vfmsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload339; CHECK-NEXT:    retq340  %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}"()341  %2 = fneg <8 x half> %a2342  %3 = call <8 x half> @llvm.fma.v8f16(<8 x half> %a0, <8 x half> %a1, <8 x half> %2)343  ret <8 x half> %3344}345 346define <8 x half> @stack_fold_fmsub213ph(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2) {347; CHECK-LABEL: stack_fold_fmsub213ph:348; CHECK:       # %bb.0:349; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill350; CHECK-NEXT:    #APP351; CHECK-NEXT:    nop352; CHECK-NEXT:    #NO_APP353; CHECK-NEXT:    vfmsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload354; CHECK-NEXT:    retq355  %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}"()356  %2 = fneg <8 x half> %a2357  %3 = call <8 x half> @llvm.fma.v8f16(<8 x half> %a1, <8 x half> %a0, <8 x half> %2)358  ret <8 x half> %3359}360 361define <8 x half> @stack_fold_fmsub231ph(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2) {362; CHECK-LABEL: stack_fold_fmsub231ph:363; CHECK:       # %bb.0:364; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill365; CHECK-NEXT:    #APP366; CHECK-NEXT:    nop367; CHECK-NEXT:    #NO_APP368; CHECK-NEXT:    vfmsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload369; CHECK-NEXT:    retq370  %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}"()371  %2 = fneg <8 x half> %a0372  %3 = call <8 x half> @llvm.fma.v8f16(<8 x half> %a1, <8 x half> %a2, <8 x half> %2)373  ret <8 x half> %3374}375 376define <8 x half> @stack_fold_fmsub321ph(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2) {377; CHECK-LABEL: stack_fold_fmsub321ph:378; CHECK:       # %bb.0:379; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill380; CHECK-NEXT:    #APP381; CHECK-NEXT:    nop382; CHECK-NEXT:    #NO_APP383; CHECK-NEXT:    vfmsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload384; CHECK-NEXT:    retq385  %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}"()386  %2 = fneg <8 x half> %a0387  %3 = call <8 x half> @llvm.fma.v8f16(<8 x half> %a2, <8 x half> %a1, <8 x half> %2)388  ret <8 x half> %3389}390 391define <8 x half> @stack_fold_fmsub132ph(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2) {392; CHECK-LABEL: stack_fold_fmsub132ph:393; CHECK:       # %bb.0:394; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill395; CHECK-NEXT:    #APP396; CHECK-NEXT:    nop397; CHECK-NEXT:    #NO_APP398; CHECK-NEXT:    vfmsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload399; CHECK-NEXT:    retq400  %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}"()401  %2 = fneg <8 x half> %a1402  %3 = call <8 x half> @llvm.fma.v8f16(<8 x half> %a0, <8 x half> %a2, <8 x half> %2)403  ret <8 x half> %3404}405 406define <8 x half> @stack_fold_fmsub312ph(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2) {407; CHECK-LABEL: stack_fold_fmsub312ph:408; CHECK:       # %bb.0:409; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill410; CHECK-NEXT:    #APP411; CHECK-NEXT:    nop412; CHECK-NEXT:    #NO_APP413; CHECK-NEXT:    vfmsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload414; CHECK-NEXT:    retq415  %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}"()416  %2 = fneg <8 x half> %a1417  %3 = call <8 x half> @llvm.fma.v8f16(<8 x half> %a2, <8 x half> %a0, <8 x half> %2)418  ret <8 x half> %3419}420 421define <8 x half> @stack_fold_fmsub123ph_mask(ptr %p, <8 x half> %a1, <8 x half> %a2, i8 %mask) {422; CHECK-LABEL: stack_fold_fmsub123ph_mask:423; CHECK:       # %bb.0:424; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill425; CHECK-NEXT:    #APP426; CHECK-NEXT:    nop427; CHECK-NEXT:    #NO_APP428; CHECK-NEXT:    vmovaps (%rdi), %xmm2429; CHECK-NEXT:    kmovd %esi, %k1430; CHECK-NEXT:    vfmsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm2 {%k1} # 16-byte Folded Reload431; CHECK-NEXT:    vmovaps %xmm2, %xmm0432; CHECK-NEXT:    retq433  %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}"()434  %a0 = load <8 x half>, ptr %p435  %neg = fneg <8 x half> %a2436  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %a0, <8 x half> %a1, <8 x half> %neg)437  %3 = bitcast i8 %mask to <8 x i1>438  %4 = select <8 x i1> %3, <8 x half> %2, <8 x half> %a0439  ret <8 x half> %4440}441 442define <8 x half> @stack_fold_fmsub213ph_mask(ptr %p, <8 x half> %a1, <8 x half> %a2, i8 %mask) {443; CHECK-LABEL: stack_fold_fmsub213ph_mask:444; CHECK:       # %bb.0:445; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill446; CHECK-NEXT:    #APP447; CHECK-NEXT:    nop448; CHECK-NEXT:    #NO_APP449; CHECK-NEXT:    vmovaps (%rdi), %xmm2450; CHECK-NEXT:    kmovd %esi, %k1451; CHECK-NEXT:    vfmsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm2 {%k1} # 16-byte Folded Reload452; CHECK-NEXT:    vmovaps %xmm2, %xmm0453; CHECK-NEXT:    retq454  %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}"()455  %a0 = load <8 x half>, ptr %p456  %neg = fneg <8 x half> %a2457  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %a1, <8 x half> %a0, <8 x half> %neg)458  %3 = bitcast i8 %mask to <8 x i1>459  %4 = select <8 x i1> %3, <8 x half> %2, <8 x half> %a0460  ret <8 x half> %4461}462 463define <8 x half> @stack_fold_fmsub231ph_mask(ptr %p, <8 x half> %a1, <8 x half> %a2, i8 %mask) {464; CHECK-LABEL: stack_fold_fmsub231ph_mask:465; CHECK:       # %bb.0:466; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill467; CHECK-NEXT:    #APP468; CHECK-NEXT:    nop469; CHECK-NEXT:    #NO_APP470; CHECK-NEXT:    vmovaps (%rdi), %xmm2471; CHECK-NEXT:    kmovd %esi, %k1472; CHECK-NEXT:    vfmsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm2 {%k1} # 16-byte Folded Reload473; CHECK-NEXT:    vmovaps %xmm2, %xmm0474; CHECK-NEXT:    retq475  %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}"()476  %a0 = load <8 x half>, ptr %p477  %neg = fneg <8 x half> %a0478  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %a1, <8 x half> %a2, <8 x half> %neg)479  %3 = bitcast i8 %mask to <8 x i1>480  %4 = select <8 x i1> %3, <8 x half> %2, <8 x half> %a0481  ret <8 x half> %4482}483 484define <8 x half> @stack_fold_fmsub321ph_mask(ptr %p, <8 x half> %a1, <8 x half> %a2, i8 %mask) {485; CHECK-LABEL: stack_fold_fmsub321ph_mask:486; CHECK:       # %bb.0:487; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill488; CHECK-NEXT:    #APP489; CHECK-NEXT:    nop490; CHECK-NEXT:    #NO_APP491; CHECK-NEXT:    vmovaps (%rdi), %xmm2492; CHECK-NEXT:    kmovd %esi, %k1493; CHECK-NEXT:    vfmsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm2 {%k1} # 16-byte Folded Reload494; CHECK-NEXT:    vmovaps %xmm2, %xmm0495; CHECK-NEXT:    retq496  %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}"()497  %a0 = load <8 x half>, ptr %p498  %neg = fneg <8 x half> %a0499  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %a2, <8 x half> %a1, <8 x half> %neg)500  %3 = bitcast i8 %mask to <8 x i1>501  %4 = select <8 x i1> %3, <8 x half> %2, <8 x half> %a0502  ret <8 x half> %4503}504 505define <8 x half> @stack_fold_fmsub132ph_mask(ptr %p, <8 x half> %a1, <8 x half> %a2, i8 %mask) {506; CHECK-LABEL: stack_fold_fmsub132ph_mask:507; CHECK:       # %bb.0:508; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill509; CHECK-NEXT:    #APP510; CHECK-NEXT:    nop511; CHECK-NEXT:    #NO_APP512; CHECK-NEXT:    vmovaps (%rdi), %xmm2513; CHECK-NEXT:    kmovd %esi, %k1514; CHECK-NEXT:    vfmsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm2 {%k1} # 16-byte Folded Reload515; CHECK-NEXT:    vmovaps %xmm2, %xmm0516; CHECK-NEXT:    retq517  %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}"()518  %a0 = load <8 x half>, ptr %p519  %neg = fneg <8 x half> %a1520  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %a0, <8 x half> %a2, <8 x half> %neg)521  %3 = bitcast i8 %mask to <8 x i1>522  %4 = select <8 x i1> %3, <8 x half> %2, <8 x half> %a0523  ret <8 x half> %4524}525 526define <8 x half> @stack_fold_fmsub312ph_mask(ptr %p, <8 x half> %a1, <8 x half> %a2, i8 %mask) {527; CHECK-LABEL: stack_fold_fmsub312ph_mask:528; CHECK:       # %bb.0:529; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill530; CHECK-NEXT:    #APP531; CHECK-NEXT:    nop532; CHECK-NEXT:    #NO_APP533; CHECK-NEXT:    vmovaps (%rdi), %xmm2534; CHECK-NEXT:    kmovd %esi, %k1535; CHECK-NEXT:    vfmsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm2 {%k1} # 16-byte Folded Reload536; CHECK-NEXT:    vmovaps %xmm2, %xmm0537; CHECK-NEXT:    retq538  %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}"()539  %a0 = load <8 x half>, ptr %p540  %neg = fneg <8 x half> %a1541  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %a2, <8 x half> %a0, <8 x half> %neg)542  %3 = bitcast i8 %mask to <8 x i1>543  %4 = select <8 x i1> %3, <8 x half> %2, <8 x half> %a0544  ret <8 x half> %4545}546 547define <8 x half> @stack_fold_fmsub123ph_maskz(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2, ptr %mask) {548; CHECK-LABEL: stack_fold_fmsub123ph_maskz:549; CHECK:       # %bb.0:550; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill551; CHECK-NEXT:    #APP552; CHECK-NEXT:    nop553; CHECK-NEXT:    #NO_APP554; CHECK-NEXT:    movzbl (%rdi), %eax555; CHECK-NEXT:    kmovd %eax, %k1556; CHECK-NEXT:    vfmsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload557; CHECK-NEXT:    retq558  %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}"()559  %neg = fneg <8 x half> %a2560  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %a0, <8 x half> %a1, <8 x half> %neg)561  %3 = load i8, ptr %mask562  %4 = bitcast i8 %3 to <8 x i1>563  %5 = select <8 x i1> %4, <8 x half> %2, <8 x half> zeroinitializer564  ret <8 x half> %5565}566 567define <8 x half> @stack_fold_fmsub213ph_maskz(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2, ptr %mask) {568; CHECK-LABEL: stack_fold_fmsub213ph_maskz:569; CHECK:       # %bb.0:570; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill571; CHECK-NEXT:    #APP572; CHECK-NEXT:    nop573; CHECK-NEXT:    #NO_APP574; CHECK-NEXT:    movzbl (%rdi), %eax575; CHECK-NEXT:    kmovd %eax, %k1576; CHECK-NEXT:    vfmsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload577; CHECK-NEXT:    retq578  %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}"()579  %neg = fneg <8 x half> %a2580  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %a1, <8 x half> %a0, <8 x half> %neg)581  %3 = load i8, ptr %mask582  %4 = bitcast i8 %3 to <8 x i1>583  %5 = select <8 x i1> %4, <8 x half> %2, <8 x half> zeroinitializer584  ret <8 x half> %5585}586 587define <8 x half> @stack_fold_fmsub231ph_maskz(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2, ptr %mask) {588; CHECK-LABEL: stack_fold_fmsub231ph_maskz:589; CHECK:       # %bb.0:590; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill591; CHECK-NEXT:    #APP592; CHECK-NEXT:    nop593; CHECK-NEXT:    #NO_APP594; CHECK-NEXT:    movzbl (%rdi), %eax595; CHECK-NEXT:    kmovd %eax, %k1596; CHECK-NEXT:    vfmsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload597; CHECK-NEXT:    retq598  %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}"()599  %neg = fneg <8 x half> %a0600  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %a1, <8 x half> %a2, <8 x half> %neg)601  %3 = load i8, ptr %mask602  %4 = bitcast i8 %3 to <8 x i1>603  %5 = select <8 x i1> %4, <8 x half> %2, <8 x half> zeroinitializer604  ret <8 x half> %5605}606 607define <8 x half> @stack_fold_fmsub321ph_maskz(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2, ptr %mask) {608; CHECK-LABEL: stack_fold_fmsub321ph_maskz:609; CHECK:       # %bb.0:610; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill611; CHECK-NEXT:    #APP612; CHECK-NEXT:    nop613; CHECK-NEXT:    #NO_APP614; CHECK-NEXT:    movzbl (%rdi), %eax615; CHECK-NEXT:    kmovd %eax, %k1616; CHECK-NEXT:    vfmsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload617; CHECK-NEXT:    retq618  %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}"()619  %neg = fneg <8 x half> %a0620  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %a2, <8 x half> %a1, <8 x half> %neg)621  %3 = load i8, ptr %mask622  %4 = bitcast i8 %3 to <8 x i1>623  %5 = select <8 x i1> %4, <8 x half> %2, <8 x half> zeroinitializer624  ret <8 x half> %5625}626 627define <8 x half> @stack_fold_fmsub132ph_maskz(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2, ptr %mask) {628; CHECK-LABEL: stack_fold_fmsub132ph_maskz:629; CHECK:       # %bb.0:630; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill631; CHECK-NEXT:    #APP632; CHECK-NEXT:    nop633; CHECK-NEXT:    #NO_APP634; CHECK-NEXT:    movzbl (%rdi), %eax635; CHECK-NEXT:    kmovd %eax, %k1636; CHECK-NEXT:    vfmsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload637; CHECK-NEXT:    retq638  %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}"()639  %neg = fneg <8 x half> %a1640  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %a0, <8 x half> %a2, <8 x half> %neg)641  %3 = load i8, ptr %mask642  %4 = bitcast i8 %3 to <8 x i1>643  %5 = select <8 x i1> %4, <8 x half> %2, <8 x half> zeroinitializer644  ret <8 x half> %5645}646 647define <8 x half> @stack_fold_fmsub312ph_maskz(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2, ptr %mask) {648; CHECK-LABEL: stack_fold_fmsub312ph_maskz:649; CHECK:       # %bb.0:650; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill651; CHECK-NEXT:    #APP652; CHECK-NEXT:    nop653; CHECK-NEXT:    #NO_APP654; CHECK-NEXT:    movzbl (%rdi), %eax655; CHECK-NEXT:    kmovd %eax, %k1656; CHECK-NEXT:    vfmsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload657; CHECK-NEXT:    retq658  %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}"()659  %neg = fneg <8 x half> %a1660  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %a2, <8 x half> %a0, <8 x half> %neg)661  %3 = load i8, ptr %mask662  %4 = bitcast i8 %3 to <8 x i1>663  %5 = select <8 x i1> %4, <8 x half> %2, <8 x half> zeroinitializer664  ret <8 x half> %5665}666 667define <8 x half> @stack_fold_fnmadd123ph(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2) {668; CHECK-LABEL: stack_fold_fnmadd123ph:669; CHECK:       # %bb.0:670; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill671; CHECK-NEXT:    #APP672; CHECK-NEXT:    nop673; CHECK-NEXT:    #NO_APP674; CHECK-NEXT:    vfnmadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload675; CHECK-NEXT:    retq676  %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}"()677  %2 = fneg <8 x half> %a0678  %3 = call <8 x half> @llvm.fma.v8f16(<8 x half> %2, <8 x half> %a1, <8 x half> %a2)679  ret <8 x half> %3680}681 682define <8 x half> @stack_fold_fnmadd213ph(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2) {683; CHECK-LABEL: stack_fold_fnmadd213ph:684; CHECK:       # %bb.0:685; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill686; CHECK-NEXT:    #APP687; CHECK-NEXT:    nop688; CHECK-NEXT:    #NO_APP689; CHECK-NEXT:    vfnmadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload690; CHECK-NEXT:    retq691  %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}"()692  %2 = fneg <8 x half> %a1693  %3 = call <8 x half> @llvm.fma.v8f16(<8 x half> %2, <8 x half> %a0, <8 x half> %a2)694  ret <8 x half> %3695}696 697define <8 x half> @stack_fold_fnmadd231ph(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2) {698; CHECK-LABEL: stack_fold_fnmadd231ph:699; CHECK:       # %bb.0:700; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill701; CHECK-NEXT:    #APP702; CHECK-NEXT:    nop703; CHECK-NEXT:    #NO_APP704; CHECK-NEXT:    vfnmadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload705; CHECK-NEXT:    retq706  %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}"()707  %2 = fneg <8 x half> %a1708  %3 = call <8 x half> @llvm.fma.v8f16(<8 x half> %2, <8 x half> %a2, <8 x half> %a0)709  ret <8 x half> %3710}711 712define <8 x half> @stack_fold_fnmadd321ph(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2) {713; CHECK-LABEL: stack_fold_fnmadd321ph:714; CHECK:       # %bb.0:715; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill716; CHECK-NEXT:    #APP717; CHECK-NEXT:    nop718; CHECK-NEXT:    #NO_APP719; CHECK-NEXT:    vfnmadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload720; CHECK-NEXT:    retq721  %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}"()722  %2 = fneg <8 x half> %a2723  %3 = call <8 x half> @llvm.fma.v8f16(<8 x half> %2, <8 x half> %a1, <8 x half> %a0)724  ret <8 x half> %3725}726 727define <8 x half> @stack_fold_fnmadd132ph(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2) {728; CHECK-LABEL: stack_fold_fnmadd132ph:729; CHECK:       # %bb.0:730; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill731; CHECK-NEXT:    #APP732; CHECK-NEXT:    nop733; CHECK-NEXT:    #NO_APP734; CHECK-NEXT:    vfnmadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload735; CHECK-NEXT:    retq736  %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}"()737  %2 = fneg <8 x half> %a0738  %3 = call <8 x half> @llvm.fma.v8f16(<8 x half> %2, <8 x half> %a2, <8 x half> %a1)739  ret <8 x half> %3740}741 742define <8 x half> @stack_fold_fnmadd312ph(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2) {743; CHECK-LABEL: stack_fold_fnmadd312ph:744; CHECK:       # %bb.0:745; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill746; CHECK-NEXT:    #APP747; CHECK-NEXT:    nop748; CHECK-NEXT:    #NO_APP749; CHECK-NEXT:    vfnmadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload750; CHECK-NEXT:    retq751  %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}"()752  %2 = fneg <8 x half> %a2753  %3 = call <8 x half> @llvm.fma.v8f16(<8 x half> %2, <8 x half> %a0, <8 x half> %a1)754  ret <8 x half> %3755}756 757define <8 x half> @stack_fold_fnmadd123ph_mask(ptr %p, <8 x half> %a1, <8 x half> %a2, i8 %mask) {758; CHECK-LABEL: stack_fold_fnmadd123ph_mask:759; CHECK:       # %bb.0:760; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill761; CHECK-NEXT:    #APP762; CHECK-NEXT:    nop763; CHECK-NEXT:    #NO_APP764; CHECK-NEXT:    vmovaps (%rdi), %xmm2765; CHECK-NEXT:    kmovd %esi, %k1766; CHECK-NEXT:    vfnmadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm2 {%k1} # 16-byte Folded Reload767; CHECK-NEXT:    vmovaps %xmm2, %xmm0768; CHECK-NEXT:    retq769  %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}"()770  %a0 = load <8 x half>, ptr %p771  %neg = fneg <8 x half> %a0772  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %neg, <8 x half> %a1, <8 x half> %a2)773  %3 = bitcast i8 %mask to <8 x i1>774  %4 = select <8 x i1> %3, <8 x half> %2, <8 x half> %a0775  ret <8 x half> %4776}777 778define <8 x half> @stack_fold_fnmadd213ph_mask(ptr %p, <8 x half> %a1, <8 x half> %a2, i8 %mask) {779; CHECK-LABEL: stack_fold_fnmadd213ph_mask:780; CHECK:       # %bb.0:781; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill782; CHECK-NEXT:    #APP783; CHECK-NEXT:    nop784; CHECK-NEXT:    #NO_APP785; CHECK-NEXT:    vmovaps (%rdi), %xmm2786; CHECK-NEXT:    kmovd %esi, %k1787; CHECK-NEXT:    vfnmadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm2 {%k1} # 16-byte Folded Reload788; CHECK-NEXT:    vmovaps %xmm2, %xmm0789; CHECK-NEXT:    retq790  %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}"()791  %a0 = load <8 x half>, ptr %p792  %neg = fneg <8 x half> %a1793  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %neg, <8 x half> %a0, <8 x half> %a2)794  %3 = bitcast i8 %mask to <8 x i1>795  %4 = select <8 x i1> %3, <8 x half> %2, <8 x half> %a0796  ret <8 x half> %4797}798 799define <8 x half> @stack_fold_fnmadd231ph_mask(ptr %p, <8 x half> %a1, <8 x half> %a2, i8 %mask) {800; CHECK-LABEL: stack_fold_fnmadd231ph_mask:801; CHECK:       # %bb.0:802; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill803; CHECK-NEXT:    #APP804; CHECK-NEXT:    nop805; CHECK-NEXT:    #NO_APP806; CHECK-NEXT:    vmovaps (%rdi), %xmm2807; CHECK-NEXT:    kmovd %esi, %k1808; CHECK-NEXT:    vfnmadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm2 {%k1} # 16-byte Folded Reload809; CHECK-NEXT:    vmovaps %xmm2, %xmm0810; CHECK-NEXT:    retq811  %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}"()812  %a0 = load <8 x half>, ptr %p813  %neg = fneg <8 x half> %a1814  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %neg, <8 x half> %a2, <8 x half> %a0)815  %3 = bitcast i8 %mask to <8 x i1>816  %4 = select <8 x i1> %3, <8 x half> %2, <8 x half> %a0817  ret <8 x half> %4818}819 820define <8 x half> @stack_fold_fnmadd321ph_mask(ptr %p, <8 x half> %a1, <8 x half> %a2, i8 %mask) {821; CHECK-LABEL: stack_fold_fnmadd321ph_mask:822; CHECK:       # %bb.0:823; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill824; CHECK-NEXT:    #APP825; CHECK-NEXT:    nop826; CHECK-NEXT:    #NO_APP827; CHECK-NEXT:    vmovaps (%rdi), %xmm2828; CHECK-NEXT:    kmovd %esi, %k1829; CHECK-NEXT:    vfnmadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm2 {%k1} # 16-byte Folded Reload830; CHECK-NEXT:    vmovaps %xmm2, %xmm0831; CHECK-NEXT:    retq832  %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}"()833  %a0 = load <8 x half>, ptr %p834  %neg = fneg <8 x half> %a2835  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %neg, <8 x half> %a1, <8 x half> %a0)836  %3 = bitcast i8 %mask to <8 x i1>837  %4 = select <8 x i1> %3, <8 x half> %2, <8 x half> %a0838  ret <8 x half> %4839}840 841define <8 x half> @stack_fold_fnmadd132ph_mask(ptr %p, <8 x half> %a1, <8 x half> %a2, i8 %mask) {842; CHECK-LABEL: stack_fold_fnmadd132ph_mask:843; CHECK:       # %bb.0:844; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill845; CHECK-NEXT:    #APP846; CHECK-NEXT:    nop847; CHECK-NEXT:    #NO_APP848; CHECK-NEXT:    vmovaps (%rdi), %xmm2849; CHECK-NEXT:    kmovd %esi, %k1850; CHECK-NEXT:    vfnmadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm2 {%k1} # 16-byte Folded Reload851; CHECK-NEXT:    vmovaps %xmm2, %xmm0852; CHECK-NEXT:    retq853  %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}"()854  %a0 = load <8 x half>, ptr %p855  %neg = fneg <8 x half> %a0856  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %neg, <8 x half> %a2, <8 x half> %a1)857  %3 = bitcast i8 %mask to <8 x i1>858  %4 = select <8 x i1> %3, <8 x half> %2, <8 x half> %a0859  ret <8 x half> %4860}861 862define <8 x half> @stack_fold_fnmadd312ph_mask(ptr %p, <8 x half> %a1, <8 x half> %a2, i8 %mask) {863; CHECK-LABEL: stack_fold_fnmadd312ph_mask: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:    vmovaps (%rdi), %xmm2870; CHECK-NEXT:    kmovd %esi, %k1871; CHECK-NEXT:    vfnmadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm2 {%k1} # 16-byte Folded Reload872; CHECK-NEXT:    vmovaps %xmm2, %xmm0873; CHECK-NEXT:    retq874  %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}"()875  %a0 = load <8 x half>, ptr %p876  %neg = fneg <8 x half> %a2877  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %neg, <8 x half> %a0, <8 x half> %a1)878  %3 = bitcast i8 %mask to <8 x i1>879  %4 = select <8 x i1> %3, <8 x half> %2, <8 x half> %a0880  ret <8 x half> %4881}882 883define <8 x half> @stack_fold_fnmadd123ph_maskz(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2, ptr %mask) {884; CHECK-LABEL: stack_fold_fnmadd123ph_maskz:885; CHECK:       # %bb.0:886; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill887; CHECK-NEXT:    #APP888; CHECK-NEXT:    nop889; CHECK-NEXT:    #NO_APP890; CHECK-NEXT:    movzbl (%rdi), %eax891; CHECK-NEXT:    kmovd %eax, %k1892; CHECK-NEXT:    vfnmadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload893; CHECK-NEXT:    retq894  %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}"()895  %neg = fneg <8 x half> %a0896  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %neg, <8 x half> %a1, <8 x half> %a2)897  %3 = load i8, ptr %mask898  %4 = bitcast i8 %3 to <8 x i1>899  %5 = select <8 x i1> %4, <8 x half> %2, <8 x half> zeroinitializer900  ret <8 x half> %5901}902 903define <8 x half> @stack_fold_fnmadd213ph_maskz(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2, ptr %mask) {904; CHECK-LABEL: stack_fold_fnmadd213ph_maskz:905; CHECK:       # %bb.0:906; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill907; CHECK-NEXT:    #APP908; CHECK-NEXT:    nop909; CHECK-NEXT:    #NO_APP910; CHECK-NEXT:    movzbl (%rdi), %eax911; CHECK-NEXT:    kmovd %eax, %k1912; CHECK-NEXT:    vfnmadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload913; CHECK-NEXT:    retq914  %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}"()915  %neg = fneg <8 x half> %a1916  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %neg, <8 x half> %a0, <8 x half> %a2)917  %3 = load i8, ptr %mask918  %4 = bitcast i8 %3 to <8 x i1>919  %5 = select <8 x i1> %4, <8 x half> %2, <8 x half> zeroinitializer920  ret <8 x half> %5921}922 923define <8 x half> @stack_fold_fnmadd231ph_maskz(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2, ptr %mask) {924; CHECK-LABEL: stack_fold_fnmadd231ph_maskz:925; CHECK:       # %bb.0:926; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill927; CHECK-NEXT:    #APP928; CHECK-NEXT:    nop929; CHECK-NEXT:    #NO_APP930; CHECK-NEXT:    movzbl (%rdi), %eax931; CHECK-NEXT:    kmovd %eax, %k1932; CHECK-NEXT:    vfnmadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload933; CHECK-NEXT:    retq934  %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}"()935  %neg = fneg <8 x half> %a1936  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %neg, <8 x half> %a2, <8 x half> %a0)937  %3 = load i8, ptr %mask938  %4 = bitcast i8 %3 to <8 x i1>939  %5 = select <8 x i1> %4, <8 x half> %2, <8 x half> zeroinitializer940  ret <8 x half> %5941}942 943define <8 x half> @stack_fold_fnmadd321ph_maskz(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2, ptr %mask) {944; CHECK-LABEL: stack_fold_fnmadd321ph_maskz:945; CHECK:       # %bb.0:946; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill947; CHECK-NEXT:    #APP948; CHECK-NEXT:    nop949; CHECK-NEXT:    #NO_APP950; CHECK-NEXT:    movzbl (%rdi), %eax951; CHECK-NEXT:    kmovd %eax, %k1952; CHECK-NEXT:    vfnmadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload953; CHECK-NEXT:    retq954  %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}"()955  %neg = fneg <8 x half> %a2956  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %neg, <8 x half> %a1, <8 x half> %a0)957  %3 = load i8, ptr %mask958  %4 = bitcast i8 %3 to <8 x i1>959  %5 = select <8 x i1> %4, <8 x half> %2, <8 x half> zeroinitializer960  ret <8 x half> %5961}962 963define <8 x half> @stack_fold_fnmadd132ph_maskz(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2, ptr %mask) {964; CHECK-LABEL: stack_fold_fnmadd132ph_maskz:965; CHECK:       # %bb.0:966; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill967; CHECK-NEXT:    #APP968; CHECK-NEXT:    nop969; CHECK-NEXT:    #NO_APP970; CHECK-NEXT:    movzbl (%rdi), %eax971; CHECK-NEXT:    kmovd %eax, %k1972; CHECK-NEXT:    vfnmadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload973; CHECK-NEXT:    retq974  %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}"()975  %neg = fneg <8 x half> %a0976  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %neg, <8 x half> %a2, <8 x half> %a1)977  %3 = load i8, ptr %mask978  %4 = bitcast i8 %3 to <8 x i1>979  %5 = select <8 x i1> %4, <8 x half> %2, <8 x half> zeroinitializer980  ret <8 x half> %5981}982 983define <8 x half> @stack_fold_fnmadd312ph_maskz(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2, ptr %mask) {984; CHECK-LABEL: stack_fold_fnmadd312ph_maskz:985; CHECK:       # %bb.0:986; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill987; CHECK-NEXT:    #APP988; CHECK-NEXT:    nop989; CHECK-NEXT:    #NO_APP990; CHECK-NEXT:    movzbl (%rdi), %eax991; CHECK-NEXT:    kmovd %eax, %k1992; CHECK-NEXT:    vfnmadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload993; CHECK-NEXT:    retq994  %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}"()995  %neg = fneg <8 x half> %a2996  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %neg, <8 x half> %a0, <8 x half> %a1)997  %3 = load i8, ptr %mask998  %4 = bitcast i8 %3 to <8 x i1>999  %5 = select <8 x i1> %4, <8 x half> %2, <8 x half> zeroinitializer1000  ret <8 x half> %51001}1002 1003define <8 x half> @stack_fold_fnmsub123ph(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2) {1004; CHECK-LABEL: stack_fold_fnmsub123ph:1005; CHECK:       # %bb.0:1006; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1007; CHECK-NEXT:    #APP1008; CHECK-NEXT:    nop1009; CHECK-NEXT:    #NO_APP1010; CHECK-NEXT:    vfnmsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload1011; CHECK-NEXT:    retq1012  %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}"()1013  %2 = fneg <8 x half> %a01014  %3 = fneg <8 x half> %a21015  %4 = call <8 x half> @llvm.fma.v8f16(<8 x half> %2, <8 x half> %a1, <8 x half> %3)1016  ret <8 x half> %41017}1018 1019define <8 x half> @stack_fold_fnmsub213ph(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2) {1020; CHECK-LABEL: stack_fold_fnmsub213ph:1021; CHECK:       # %bb.0:1022; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1023; CHECK-NEXT:    #APP1024; CHECK-NEXT:    nop1025; CHECK-NEXT:    #NO_APP1026; CHECK-NEXT:    vfnmsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload1027; CHECK-NEXT:    retq1028  %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}"()1029  %2 = fneg <8 x half> %a11030  %3 = fneg <8 x half> %a21031  %4 = call <8 x half> @llvm.fma.v8f16(<8 x half> %2, <8 x half> %a0, <8 x half> %3)1032  ret <8 x half> %41033}1034 1035define <8 x half> @stack_fold_fnmsub231ph(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2) {1036; CHECK-LABEL: stack_fold_fnmsub231ph:1037; CHECK:       # %bb.0:1038; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1039; CHECK-NEXT:    #APP1040; CHECK-NEXT:    nop1041; CHECK-NEXT:    #NO_APP1042; CHECK-NEXT:    vfnmsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload1043; CHECK-NEXT:    retq1044  %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}"()1045  %2 = fneg <8 x half> %a11046  %3 = fneg <8 x half> %a01047  %4 = call <8 x half> @llvm.fma.v8f16(<8 x half> %2, <8 x half> %a2, <8 x half> %3)1048  ret <8 x half> %41049}1050 1051define <8 x half> @stack_fold_fnmsub321ph(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2) {1052; CHECK-LABEL: stack_fold_fnmsub321ph:1053; CHECK:       # %bb.0:1054; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1055; CHECK-NEXT:    #APP1056; CHECK-NEXT:    nop1057; CHECK-NEXT:    #NO_APP1058; CHECK-NEXT:    vfnmsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload1059; CHECK-NEXT:    retq1060  %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}"()1061  %2 = fneg <8 x half> %a21062  %3 = fneg <8 x half> %a01063  %4 = call <8 x half> @llvm.fma.v8f16(<8 x half> %2, <8 x half> %a1, <8 x half> %3)1064  ret <8 x half> %41065}1066 1067define <8 x half> @stack_fold_fnmsub132ph(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2) {1068; CHECK-LABEL: stack_fold_fnmsub132ph:1069; CHECK:       # %bb.0:1070; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1071; CHECK-NEXT:    #APP1072; CHECK-NEXT:    nop1073; CHECK-NEXT:    #NO_APP1074; CHECK-NEXT:    vfnmsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload1075; CHECK-NEXT:    retq1076  %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}"()1077  %2 = fneg <8 x half> %a01078  %3 = fneg <8 x half> %a11079  %4 = call <8 x half> @llvm.fma.v8f16(<8 x half> %2, <8 x half> %a2, <8 x half> %3)1080  ret <8 x half> %41081}1082 1083define <8 x half> @stack_fold_fnmsub312ph(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2) {1084; CHECK-LABEL: stack_fold_fnmsub312ph:1085; CHECK:       # %bb.0:1086; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1087; CHECK-NEXT:    #APP1088; CHECK-NEXT:    nop1089; CHECK-NEXT:    #NO_APP1090; CHECK-NEXT:    vfnmsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload1091; CHECK-NEXT:    retq1092  %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}"()1093  %2 = fneg <8 x half> %a21094  %3 = fneg <8 x half> %a11095  %4 = call <8 x half> @llvm.fma.v8f16(<8 x half> %2, <8 x half> %a0, <8 x half> %3)1096  ret <8 x half> %41097}1098 1099define <8 x half> @stack_fold_fnmsub123ph_mask(ptr %p, <8 x half> %a1, <8 x half> %a2, i8 %mask) {1100; CHECK-LABEL: stack_fold_fnmsub123ph_mask:1101; CHECK:       # %bb.0:1102; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1103; CHECK-NEXT:    #APP1104; CHECK-NEXT:    nop1105; CHECK-NEXT:    #NO_APP1106; CHECK-NEXT:    vmovaps (%rdi), %xmm21107; CHECK-NEXT:    kmovd %esi, %k11108; CHECK-NEXT:    vfnmsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm2 {%k1} # 16-byte Folded Reload1109; CHECK-NEXT:    vmovaps %xmm2, %xmm01110; CHECK-NEXT:    retq1111  %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}"()1112  %a0 = load <8 x half>, ptr %p1113  %neg = fneg <8 x half> %a21114  %neg1 = fneg <8 x half> %a01115  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %neg1, <8 x half> %a1, <8 x half> %neg)1116  %3 = bitcast i8 %mask to <8 x i1>1117  %4 = select <8 x i1> %3, <8 x half> %2, <8 x half> %a01118  ret <8 x half> %41119}1120 1121define <8 x half> @stack_fold_fnmsub213ph_mask(ptr %p, <8 x half> %a1, <8 x half> %a2, i8 %mask) {1122; CHECK-LABEL: stack_fold_fnmsub213ph_mask:1123; CHECK:       # %bb.0:1124; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1125; CHECK-NEXT:    #APP1126; CHECK-NEXT:    nop1127; CHECK-NEXT:    #NO_APP1128; CHECK-NEXT:    vmovaps (%rdi), %xmm21129; CHECK-NEXT:    kmovd %esi, %k11130; CHECK-NEXT:    vfnmsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm2 {%k1} # 16-byte Folded Reload1131; CHECK-NEXT:    vmovaps %xmm2, %xmm01132; CHECK-NEXT:    retq1133  %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}"()1134  %a0 = load <8 x half>, ptr %p1135  %neg = fneg <8 x half> %a21136  %neg1 = fneg <8 x half> %a11137  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %neg1, <8 x half> %a0, <8 x half> %neg)1138  %3 = bitcast i8 %mask to <8 x i1>1139  %4 = select <8 x i1> %3, <8 x half> %2, <8 x half> %a01140  ret <8 x half> %41141}1142 1143define <8 x half> @stack_fold_fnmsub231ph_mask(ptr %p, <8 x half> %a1, <8 x half> %a2, i8 %mask) {1144; CHECK-LABEL: stack_fold_fnmsub231ph_mask:1145; CHECK:       # %bb.0:1146; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1147; CHECK-NEXT:    #APP1148; CHECK-NEXT:    nop1149; CHECK-NEXT:    #NO_APP1150; CHECK-NEXT:    vmovaps (%rdi), %xmm21151; CHECK-NEXT:    kmovd %esi, %k11152; CHECK-NEXT:    vfnmsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm2 {%k1} # 16-byte Folded Reload1153; CHECK-NEXT:    vmovaps %xmm2, %xmm01154; CHECK-NEXT:    retq1155  %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}"()1156  %a0 = load <8 x half>, ptr %p1157  %neg = fneg <8 x half> %a01158  %neg1 = fneg <8 x half> %a11159  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %neg1, <8 x half> %a2, <8 x half> %neg)1160  %3 = bitcast i8 %mask to <8 x i1>1161  %4 = select <8 x i1> %3, <8 x half> %2, <8 x half> %a01162  ret <8 x half> %41163}1164 1165define <8 x half> @stack_fold_fnmsub321ph_mask(ptr %p, <8 x half> %a1, <8 x half> %a2, i8 %mask) {1166; CHECK-LABEL: stack_fold_fnmsub321ph_mask:1167; CHECK:       # %bb.0:1168; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1169; CHECK-NEXT:    #APP1170; CHECK-NEXT:    nop1171; CHECK-NEXT:    #NO_APP1172; CHECK-NEXT:    vmovaps (%rdi), %xmm21173; CHECK-NEXT:    kmovd %esi, %k11174; CHECK-NEXT:    vfnmsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm2 {%k1} # 16-byte Folded Reload1175; CHECK-NEXT:    vmovaps %xmm2, %xmm01176; CHECK-NEXT:    retq1177  %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}"()1178  %a0 = load <8 x half>, ptr %p1179  %neg = fneg <8 x half> %a01180  %neg1 = fneg <8 x half> %a21181  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %neg1, <8 x half> %a1, <8 x half> %neg)1182  %3 = bitcast i8 %mask to <8 x i1>1183  %4 = select <8 x i1> %3, <8 x half> %2, <8 x half> %a01184  ret <8 x half> %41185}1186 1187define <8 x half> @stack_fold_fnmsub132ph_mask(ptr %p, <8 x half> %a1, <8 x half> %a2, i8 %mask) {1188; CHECK-LABEL: stack_fold_fnmsub132ph_mask: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:    vmovaps (%rdi), %xmm21195; CHECK-NEXT:    kmovd %esi, %k11196; CHECK-NEXT:    vfnmsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm2 {%k1} # 16-byte Folded Reload1197; CHECK-NEXT:    vmovaps %xmm2, %xmm01198; CHECK-NEXT:    retq1199  %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}"()1200  %a0 = load <8 x half>, ptr %p1201  %neg = fneg <8 x half> %a11202  %neg1 = fneg <8 x half> %a01203  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %neg1, <8 x half> %a2, <8 x half> %neg)1204  %3 = bitcast i8 %mask to <8 x i1>1205  %4 = select <8 x i1> %3, <8 x half> %2, <8 x half> %a01206  ret <8 x half> %41207}1208 1209define <8 x half> @stack_fold_fnmsub312ph_mask(ptr %p, <8 x half> %a1, <8 x half> %a2, i8 %mask) {1210; CHECK-LABEL: stack_fold_fnmsub312ph_mask:1211; CHECK:       # %bb.0:1212; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1213; CHECK-NEXT:    #APP1214; CHECK-NEXT:    nop1215; CHECK-NEXT:    #NO_APP1216; CHECK-NEXT:    vmovaps (%rdi), %xmm21217; CHECK-NEXT:    kmovd %esi, %k11218; CHECK-NEXT:    vfnmsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm2 {%k1} # 16-byte Folded Reload1219; CHECK-NEXT:    vmovaps %xmm2, %xmm01220; CHECK-NEXT:    retq1221  %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}"()1222  %a0 = load <8 x half>, ptr %p1223  %neg = fneg <8 x half> %a11224  %neg1 = fneg <8 x half> %a21225  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %neg1, <8 x half> %a0, <8 x half> %neg)1226  %3 = bitcast i8 %mask to <8 x i1>1227  %4 = select <8 x i1> %3, <8 x half> %2, <8 x half> %a01228  ret <8 x half> %41229}1230 1231define <8 x half> @stack_fold_fnmsub123ph_maskz(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2, ptr %mask) {1232; CHECK-LABEL: stack_fold_fnmsub123ph_maskz:1233; CHECK:       # %bb.0:1234; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1235; CHECK-NEXT:    #APP1236; CHECK-NEXT:    nop1237; CHECK-NEXT:    #NO_APP1238; CHECK-NEXT:    movzbl (%rdi), %eax1239; CHECK-NEXT:    kmovd %eax, %k11240; CHECK-NEXT:    vfnmsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload1241; CHECK-NEXT:    retq1242  %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}"()1243  %neg = fneg <8 x half> %a21244  %neg1 = fneg <8 x half> %a01245  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %neg1, <8 x half> %a1, <8 x half> %neg)1246  %3 = load i8, ptr %mask1247  %4 = bitcast i8 %3 to <8 x i1>1248  %5 = select <8 x i1> %4, <8 x half> %2, <8 x half> zeroinitializer1249  ret <8 x half> %51250}1251 1252define <8 x half> @stack_fold_fnmsub213ph_maskz(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2, ptr %mask) {1253; CHECK-LABEL: stack_fold_fnmsub213ph_maskz:1254; CHECK:       # %bb.0:1255; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1256; CHECK-NEXT:    #APP1257; CHECK-NEXT:    nop1258; CHECK-NEXT:    #NO_APP1259; CHECK-NEXT:    movzbl (%rdi), %eax1260; CHECK-NEXT:    kmovd %eax, %k11261; CHECK-NEXT:    vfnmsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload1262; CHECK-NEXT:    retq1263  %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}"()1264  %neg = fneg <8 x half> %a21265  %neg1 = fneg <8 x half> %a11266  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %neg1, <8 x half> %a0, <8 x half> %neg)1267  %3 = load i8, ptr %mask1268  %4 = bitcast i8 %3 to <8 x i1>1269  %5 = select <8 x i1> %4, <8 x half> %2, <8 x half> zeroinitializer1270  ret <8 x half> %51271}1272 1273define <8 x half> @stack_fold_fnmsub231ph_maskz(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2, ptr %mask) {1274; CHECK-LABEL: stack_fold_fnmsub231ph_maskz:1275; CHECK:       # %bb.0:1276; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1277; CHECK-NEXT:    #APP1278; CHECK-NEXT:    nop1279; CHECK-NEXT:    #NO_APP1280; CHECK-NEXT:    movzbl (%rdi), %eax1281; CHECK-NEXT:    kmovd %eax, %k11282; CHECK-NEXT:    vfnmsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload1283; CHECK-NEXT:    retq1284  %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}"()1285  %neg = fneg <8 x half> %a01286  %neg1 = fneg <8 x half> %a11287  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %neg1, <8 x half> %a2, <8 x half> %neg)1288  %3 = load i8, ptr %mask1289  %4 = bitcast i8 %3 to <8 x i1>1290  %5 = select <8 x i1> %4, <8 x half> %2, <8 x half> zeroinitializer1291  ret <8 x half> %51292}1293 1294define <8 x half> @stack_fold_fnmsub321ph_maskz(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2, ptr %mask) {1295; CHECK-LABEL: stack_fold_fnmsub321ph_maskz:1296; CHECK:       # %bb.0:1297; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1298; CHECK-NEXT:    #APP1299; CHECK-NEXT:    nop1300; CHECK-NEXT:    #NO_APP1301; CHECK-NEXT:    movzbl (%rdi), %eax1302; CHECK-NEXT:    kmovd %eax, %k11303; CHECK-NEXT:    vfnmsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload1304; CHECK-NEXT:    retq1305  %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}"()1306  %neg = fneg <8 x half> %a01307  %neg1 = fneg <8 x half> %a21308  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %neg1, <8 x half> %a1, <8 x half> %neg)1309  %3 = load i8, ptr %mask1310  %4 = bitcast i8 %3 to <8 x i1>1311  %5 = select <8 x i1> %4, <8 x half> %2, <8 x half> zeroinitializer1312  ret <8 x half> %51313}1314 1315define <8 x half> @stack_fold_fnmsub132ph_maskz(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2, ptr %mask) {1316; CHECK-LABEL: stack_fold_fnmsub132ph_maskz:1317; CHECK:       # %bb.0:1318; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1319; CHECK-NEXT:    #APP1320; CHECK-NEXT:    nop1321; CHECK-NEXT:    #NO_APP1322; CHECK-NEXT:    movzbl (%rdi), %eax1323; CHECK-NEXT:    kmovd %eax, %k11324; CHECK-NEXT:    vfnmsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload1325; CHECK-NEXT:    retq1326  %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}"()1327  %neg = fneg <8 x half> %a11328  %neg1 = fneg <8 x half> %a01329  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %neg1, <8 x half> %a2, <8 x half> %neg)1330  %3 = load i8, ptr %mask1331  %4 = bitcast i8 %3 to <8 x i1>1332  %5 = select <8 x i1> %4, <8 x half> %2, <8 x half> zeroinitializer1333  ret <8 x half> %51334}1335 1336define <8 x half> @stack_fold_fnmsub312ph_maskz(<8 x half> %a0, <8 x half> %a1, <8 x half> %a2, ptr %mask) {1337; CHECK-LABEL: stack_fold_fnmsub312ph_maskz:1338; CHECK:       # %bb.0:1339; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1340; CHECK-NEXT:    #APP1341; CHECK-NEXT:    nop1342; CHECK-NEXT:    #NO_APP1343; CHECK-NEXT:    movzbl (%rdi), %eax1344; CHECK-NEXT:    kmovd %eax, %k11345; CHECK-NEXT:    vfnmsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload1346; CHECK-NEXT:    retq1347  %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}"()1348  %neg = fneg <8 x half> %a11349  %neg1 = fneg <8 x half> %a21350  %2 = call <8 x half> @llvm.fma.v8f16(<8 x half> %neg1, <8 x half> %a0, <8 x half> %neg)1351  %3 = load i8, ptr %mask1352  %4 = bitcast i8 %3 to <8 x i1>1353  %5 = select <8 x i1> %4, <8 x half> %2, <8 x half> zeroinitializer1354  ret <8 x half> %51355}1356 1357define <16 x half> @stack_fold_fmadd123ph_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2) {1358; CHECK-LABEL: stack_fold_fmadd123ph_ymm:1359; CHECK:       # %bb.0:1360; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1361; CHECK-NEXT:    #APP1362; CHECK-NEXT:    nop1363; CHECK-NEXT:    #NO_APP1364; CHECK-NEXT:    vfmadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 # 32-byte Folded Reload1365; CHECK-NEXT:    retq1366  %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}"()1367  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2)1368  ret <16 x half> %21369}1370declare <16 x half> @llvm.fma.v16f16(<16 x half>, <16 x half>, <16 x half>)1371 1372define <16 x half> @stack_fold_fmadd213ph_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2) {1373; CHECK-LABEL: stack_fold_fmadd213ph_ymm:1374; CHECK:       # %bb.0:1375; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1376; CHECK-NEXT:    #APP1377; CHECK-NEXT:    nop1378; CHECK-NEXT:    #NO_APP1379; CHECK-NEXT:    vfmadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 # 32-byte Folded Reload1380; CHECK-NEXT:    retq1381  %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}"()1382  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %a1, <16 x half> %a0, <16 x half> %a2)1383  ret <16 x half> %21384}1385 1386define <16 x half> @stack_fold_fmadd231ph_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2) {1387; CHECK-LABEL: stack_fold_fmadd231ph_ymm:1388; CHECK:       # %bb.0:1389; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1390; CHECK-NEXT:    #APP1391; CHECK-NEXT:    nop1392; CHECK-NEXT:    #NO_APP1393; CHECK-NEXT:    vfmadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 # 32-byte Folded Reload1394; CHECK-NEXT:    retq1395  %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}"()1396  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %a1, <16 x half> %a2, <16 x half> %a0)1397  ret <16 x half> %21398}1399 1400define <16 x half> @stack_fold_fmadd321ph_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2) {1401; CHECK-LABEL: stack_fold_fmadd321ph_ymm:1402; CHECK:       # %bb.0:1403; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1404; CHECK-NEXT:    #APP1405; CHECK-NEXT:    nop1406; CHECK-NEXT:    #NO_APP1407; CHECK-NEXT:    vfmadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 # 32-byte Folded Reload1408; CHECK-NEXT:    retq1409  %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}"()1410  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %a2, <16 x half> %a1, <16 x half> %a0)1411  ret <16 x half> %21412}1413 1414define <16 x half> @stack_fold_fmadd132ph_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2) {1415; CHECK-LABEL: stack_fold_fmadd132ph_ymm:1416; CHECK:       # %bb.0:1417; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1418; CHECK-NEXT:    #APP1419; CHECK-NEXT:    nop1420; CHECK-NEXT:    #NO_APP1421; CHECK-NEXT:    vfmadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 # 32-byte Folded Reload1422; CHECK-NEXT:    retq1423  %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}"()1424  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %a0, <16 x half> %a2, <16 x half> %a1)1425  ret <16 x half> %21426}1427 1428define <16 x half> @stack_fold_fmadd312ph_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2) {1429; CHECK-LABEL: stack_fold_fmadd312ph_ymm:1430; CHECK:       # %bb.0:1431; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1432; CHECK-NEXT:    #APP1433; CHECK-NEXT:    nop1434; CHECK-NEXT:    #NO_APP1435; CHECK-NEXT:    vfmadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 # 32-byte Folded Reload1436; CHECK-NEXT:    retq1437  %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}"()1438  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %a2, <16 x half> %a0, <16 x half> %a1)1439  ret <16 x half> %21440}1441 1442define <16 x half> @stack_fold_fmadd123ph_mask_ymm(ptr %p, <16 x half> %a1, <16 x half> %a2, i16 %mask) {1443; CHECK-LABEL: stack_fold_fmadd123ph_mask_ymm:1444; CHECK:       # %bb.0:1445; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1446; CHECK-NEXT:    #APP1447; CHECK-NEXT:    nop1448; CHECK-NEXT:    #NO_APP1449; CHECK-NEXT:    vmovaps (%rdi), %ymm21450; CHECK-NEXT:    kmovd %esi, %k11451; CHECK-NEXT:    vfmadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 {%k1} # 32-byte Folded Reload1452; CHECK-NEXT:    vmovaps %ymm2, %ymm01453; CHECK-NEXT:    retq1454  %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}"()1455  %a0 = load <16 x half>, ptr %p1456  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2)1457  %3 = bitcast i16 %mask to <16 x i1>1458  %4 = select <16 x i1> %3, <16 x half> %2, <16 x half> %a01459  ret <16 x half> %41460}1461 1462define <16 x half> @stack_fold_fmadd213ph_mask_ymm(ptr %p, <16 x half> %a1, <16 x half> %a2, i16 %mask) {1463; CHECK-LABEL: stack_fold_fmadd213ph_mask_ymm:1464; CHECK:       # %bb.0:1465; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1466; CHECK-NEXT:    #APP1467; CHECK-NEXT:    nop1468; CHECK-NEXT:    #NO_APP1469; CHECK-NEXT:    vmovaps (%rdi), %ymm21470; CHECK-NEXT:    kmovd %esi, %k11471; CHECK-NEXT:    vfmadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 {%k1} # 32-byte Folded Reload1472; CHECK-NEXT:    vmovaps %ymm2, %ymm01473; CHECK-NEXT:    retq1474  %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}"()1475  %a0 = load <16 x half>, ptr %p1476  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %a1, <16 x half> %a0, <16 x half> %a2)1477  %3 = bitcast i16 %mask to <16 x i1>1478  %4 = select <16 x i1> %3, <16 x half> %2, <16 x half> %a01479  ret <16 x half> %41480}1481 1482define <16 x half> @stack_fold_fmadd231ph_mask_ymm(ptr %p, <16 x half> %a1, <16 x half> %a2, i16 %mask) {1483; CHECK-LABEL: stack_fold_fmadd231ph_mask_ymm:1484; CHECK:       # %bb.0:1485; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1486; CHECK-NEXT:    #APP1487; CHECK-NEXT:    nop1488; CHECK-NEXT:    #NO_APP1489; CHECK-NEXT:    vmovaps (%rdi), %ymm21490; CHECK-NEXT:    kmovd %esi, %k11491; CHECK-NEXT:    vfmadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 {%k1} # 32-byte Folded Reload1492; CHECK-NEXT:    vmovaps %ymm2, %ymm01493; CHECK-NEXT:    retq1494  %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}"()1495  %a0 = load <16 x half>, ptr %p1496  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %a1, <16 x half> %a2, <16 x half> %a0)1497  %3 = bitcast i16 %mask to <16 x i1>1498  %4 = select <16 x i1> %3, <16 x half> %2, <16 x half> %a01499  ret <16 x half> %41500}1501 1502define <16 x half> @stack_fold_fmadd321ph_mask_ymm(ptr %p, <16 x half> %a1, <16 x half> %a2, i16 %mask) {1503; CHECK-LABEL: stack_fold_fmadd321ph_mask_ymm:1504; CHECK:       # %bb.0:1505; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1506; CHECK-NEXT:    #APP1507; CHECK-NEXT:    nop1508; CHECK-NEXT:    #NO_APP1509; CHECK-NEXT:    vmovaps (%rdi), %ymm21510; CHECK-NEXT:    kmovd %esi, %k11511; CHECK-NEXT:    vfmadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 {%k1} # 32-byte Folded Reload1512; CHECK-NEXT:    vmovaps %ymm2, %ymm01513; CHECK-NEXT:    retq1514  %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}"()1515  %a0 = load <16 x half>, ptr %p1516  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %a2, <16 x half> %a1, <16 x half> %a0)1517  %3 = bitcast i16 %mask to <16 x i1>1518  %4 = select <16 x i1> %3, <16 x half> %2, <16 x half> %a01519  ret <16 x half> %41520}1521 1522define <16 x half> @stack_fold_fmadd132ph_mask_ymm(ptr %p, <16 x half> %a1, <16 x half> %a2, i16 %mask) {1523; CHECK-LABEL: stack_fold_fmadd132ph_mask_ymm:1524; CHECK:       # %bb.0:1525; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1526; CHECK-NEXT:    #APP1527; CHECK-NEXT:    nop1528; CHECK-NEXT:    #NO_APP1529; CHECK-NEXT:    vmovaps (%rdi), %ymm21530; CHECK-NEXT:    kmovd %esi, %k11531; CHECK-NEXT:    vfmadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 {%k1} # 32-byte Folded Reload1532; CHECK-NEXT:    vmovaps %ymm2, %ymm01533; CHECK-NEXT:    retq1534  %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}"()1535  %a0 = load <16 x half>, ptr %p1536  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %a0, <16 x half> %a2, <16 x half> %a1)1537  %3 = bitcast i16 %mask to <16 x i1>1538  %4 = select <16 x i1> %3, <16 x half> %2, <16 x half> %a01539  ret <16 x half> %41540}1541 1542define <16 x half> @stack_fold_fmadd312ph_mask_ymm(ptr %p, <16 x half> %a1, <16 x half> %a2, i16 %mask) {1543; CHECK-LABEL: stack_fold_fmadd312ph_mask_ymm:1544; CHECK:       # %bb.0:1545; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1546; CHECK-NEXT:    #APP1547; CHECK-NEXT:    nop1548; CHECK-NEXT:    #NO_APP1549; CHECK-NEXT:    vmovaps (%rdi), %ymm21550; CHECK-NEXT:    kmovd %esi, %k11551; CHECK-NEXT:    vfmadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 {%k1} # 32-byte Folded Reload1552; CHECK-NEXT:    vmovaps %ymm2, %ymm01553; CHECK-NEXT:    retq1554  %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}"()1555  %a0 = load <16 x half>, ptr %p1556  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %a2, <16 x half> %a0, <16 x half> %a1)1557  %3 = bitcast i16 %mask to <16 x i1>1558  %4 = select <16 x i1> %3, <16 x half> %2, <16 x half> %a01559  ret <16 x half> %41560}1561 1562define <16 x half> @stack_fold_fmadd123ph_maskz_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2, ptr %mask) {1563; CHECK-LABEL: stack_fold_fmadd123ph_maskz_ymm:1564; CHECK:       # %bb.0:1565; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1566; CHECK-NEXT:    #APP1567; CHECK-NEXT:    nop1568; CHECK-NEXT:    #NO_APP1569; CHECK-NEXT:    kmovw (%rdi), %k11570; CHECK-NEXT:    vfmadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 {%k1} {z} # 32-byte Folded Reload1571; CHECK-NEXT:    retq1572  %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}"()1573  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2)1574  %3 = load i16, ptr %mask1575  %4 = bitcast i16 %3 to <16 x i1>1576  %5 = select <16 x i1> %4, <16 x half> %2, <16 x half> zeroinitializer1577  ret <16 x half> %51578}1579 1580define <16 x half> @stack_fold_fmadd213ph_maskz_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2, ptr %mask) {1581; CHECK-LABEL: stack_fold_fmadd213ph_maskz_ymm:1582; CHECK:       # %bb.0:1583; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1584; CHECK-NEXT:    #APP1585; CHECK-NEXT:    nop1586; CHECK-NEXT:    #NO_APP1587; CHECK-NEXT:    kmovw (%rdi), %k11588; CHECK-NEXT:    vfmadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 {%k1} {z} # 32-byte Folded Reload1589; CHECK-NEXT:    retq1590  %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}"()1591  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %a1, <16 x half> %a0, <16 x half> %a2)1592  %3 = load i16, ptr %mask1593  %4 = bitcast i16 %3 to <16 x i1>1594  %5 = select <16 x i1> %4, <16 x half> %2, <16 x half> zeroinitializer1595  ret <16 x half> %51596}1597 1598define <16 x half> @stack_fold_fmadd231ph_maskz_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2, ptr %mask) {1599; CHECK-LABEL: stack_fold_fmadd231ph_maskz_ymm:1600; CHECK:       # %bb.0:1601; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1602; CHECK-NEXT:    #APP1603; CHECK-NEXT:    nop1604; CHECK-NEXT:    #NO_APP1605; CHECK-NEXT:    kmovw (%rdi), %k11606; CHECK-NEXT:    vfmadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 {%k1} {z} # 32-byte Folded Reload1607; CHECK-NEXT:    retq1608  %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}"()1609  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %a1, <16 x half> %a2, <16 x half> %a0)1610  %3 = load i16, ptr %mask1611  %4 = bitcast i16 %3 to <16 x i1>1612  %5 = select <16 x i1> %4, <16 x half> %2, <16 x half> zeroinitializer1613  ret <16 x half> %51614}1615 1616define <16 x half> @stack_fold_fmadd321ph_maskz_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2, ptr %mask) {1617; CHECK-LABEL: stack_fold_fmadd321ph_maskz_ymm:1618; CHECK:       # %bb.0:1619; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1620; CHECK-NEXT:    #APP1621; CHECK-NEXT:    nop1622; CHECK-NEXT:    #NO_APP1623; CHECK-NEXT:    kmovw (%rdi), %k11624; CHECK-NEXT:    vfmadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 {%k1} {z} # 32-byte Folded Reload1625; CHECK-NEXT:    retq1626  %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}"()1627  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %a2, <16 x half> %a1, <16 x half> %a0)1628  %3 = load i16, ptr %mask1629  %4 = bitcast i16 %3 to <16 x i1>1630  %5 = select <16 x i1> %4, <16 x half> %2, <16 x half> zeroinitializer1631  ret <16 x half> %51632}1633 1634define <16 x half> @stack_fold_fmadd132ph_maskz_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2, ptr %mask) {1635; CHECK-LABEL: stack_fold_fmadd132ph_maskz_ymm:1636; CHECK:       # %bb.0:1637; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1638; CHECK-NEXT:    #APP1639; CHECK-NEXT:    nop1640; CHECK-NEXT:    #NO_APP1641; CHECK-NEXT:    kmovw (%rdi), %k11642; CHECK-NEXT:    vfmadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 {%k1} {z} # 32-byte Folded Reload1643; CHECK-NEXT:    retq1644  %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}"()1645  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %a0, <16 x half> %a2, <16 x half> %a1)1646  %3 = load i16, ptr %mask1647  %4 = bitcast i16 %3 to <16 x i1>1648  %5 = select <16 x i1> %4, <16 x half> %2, <16 x half> zeroinitializer1649  ret <16 x half> %51650}1651 1652define <16 x half> @stack_fold_fmadd312ph_maskz_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2, ptr %mask) {1653; CHECK-LABEL: stack_fold_fmadd312ph_maskz_ymm:1654; CHECK:       # %bb.0:1655; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1656; CHECK-NEXT:    #APP1657; CHECK-NEXT:    nop1658; CHECK-NEXT:    #NO_APP1659; CHECK-NEXT:    kmovw (%rdi), %k11660; CHECK-NEXT:    vfmadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 {%k1} {z} # 32-byte Folded Reload1661; CHECK-NEXT:    retq1662  %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}"()1663  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %a2, <16 x half> %a0, <16 x half> %a1)1664  %3 = load i16, ptr %mask1665  %4 = bitcast i16 %3 to <16 x i1>1666  %5 = select <16 x i1> %4, <16 x half> %2, <16 x half> zeroinitializer1667  ret <16 x half> %51668}1669 1670define <16 x half> @stack_fold_fmsub123ph_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2) {1671; CHECK-LABEL: stack_fold_fmsub123ph_ymm:1672; CHECK:       # %bb.0:1673; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1674; CHECK-NEXT:    #APP1675; CHECK-NEXT:    nop1676; CHECK-NEXT:    #NO_APP1677; CHECK-NEXT:    vfmsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 # 32-byte Folded Reload1678; CHECK-NEXT:    retq1679  %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}"()1680  %2 = fneg <16 x half> %a21681  %3 = call <16 x half> @llvm.fma.v16f16(<16 x half> %a0, <16 x half> %a1, <16 x half> %2)1682  ret <16 x half> %31683}1684 1685define <16 x half> @stack_fold_fmsub213ph_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2) {1686; CHECK-LABEL: stack_fold_fmsub213ph_ymm:1687; CHECK:       # %bb.0:1688; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1689; CHECK-NEXT:    #APP1690; CHECK-NEXT:    nop1691; CHECK-NEXT:    #NO_APP1692; CHECK-NEXT:    vfmsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 # 32-byte Folded Reload1693; CHECK-NEXT:    retq1694  %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}"()1695  %2 = fneg <16 x half> %a21696  %3 = call <16 x half> @llvm.fma.v16f16(<16 x half> %a1, <16 x half> %a0, <16 x half> %2)1697  ret <16 x half> %31698}1699 1700define <16 x half> @stack_fold_fmsub231ph_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2) {1701; CHECK-LABEL: stack_fold_fmsub231ph_ymm:1702; CHECK:       # %bb.0:1703; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1704; CHECK-NEXT:    #APP1705; CHECK-NEXT:    nop1706; CHECK-NEXT:    #NO_APP1707; CHECK-NEXT:    vfmsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 # 32-byte Folded Reload1708; CHECK-NEXT:    retq1709  %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}"()1710  %2 = fneg <16 x half> %a01711  %3 = call <16 x half> @llvm.fma.v16f16(<16 x half> %a1, <16 x half> %a2, <16 x half> %2)1712  ret <16 x half> %31713}1714 1715define <16 x half> @stack_fold_fmsub321ph_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2) {1716; CHECK-LABEL: stack_fold_fmsub321ph_ymm:1717; CHECK:       # %bb.0:1718; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1719; CHECK-NEXT:    #APP1720; CHECK-NEXT:    nop1721; CHECK-NEXT:    #NO_APP1722; CHECK-NEXT:    vfmsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 # 32-byte Folded Reload1723; CHECK-NEXT:    retq1724  %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}"()1725  %2 = fneg <16 x half> %a01726  %3 = call <16 x half> @llvm.fma.v16f16(<16 x half> %a2, <16 x half> %a1, <16 x half> %2)1727  ret <16 x half> %31728}1729 1730define <16 x half> @stack_fold_fmsub132ph_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2) {1731; CHECK-LABEL: stack_fold_fmsub132ph_ymm:1732; CHECK:       # %bb.0:1733; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1734; CHECK-NEXT:    #APP1735; CHECK-NEXT:    nop1736; CHECK-NEXT:    #NO_APP1737; CHECK-NEXT:    vfmsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 # 32-byte Folded Reload1738; CHECK-NEXT:    retq1739  %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}"()1740  %2 = fneg <16 x half> %a11741  %3 = call <16 x half> @llvm.fma.v16f16(<16 x half> %a0, <16 x half> %a2, <16 x half> %2)1742  ret <16 x half> %31743}1744 1745define <16 x half> @stack_fold_fmsub312ph_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2) {1746; CHECK-LABEL: stack_fold_fmsub312ph_ymm:1747; CHECK:       # %bb.0:1748; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1749; CHECK-NEXT:    #APP1750; CHECK-NEXT:    nop1751; CHECK-NEXT:    #NO_APP1752; CHECK-NEXT:    vfmsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 # 32-byte Folded Reload1753; CHECK-NEXT:    retq1754  %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}"()1755  %2 = fneg <16 x half> %a11756  %3 = call <16 x half> @llvm.fma.v16f16(<16 x half> %a2, <16 x half> %a0, <16 x half> %2)1757  ret <16 x half> %31758}1759 1760define <16 x half> @stack_fold_fmsub123ph_mask_ymm(ptr %p, <16 x half> %a1, <16 x half> %a2, i16 %mask) {1761; CHECK-LABEL: stack_fold_fmsub123ph_mask_ymm:1762; CHECK:       # %bb.0:1763; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1764; CHECK-NEXT:    #APP1765; CHECK-NEXT:    nop1766; CHECK-NEXT:    #NO_APP1767; CHECK-NEXT:    vmovaps (%rdi), %ymm21768; CHECK-NEXT:    kmovd %esi, %k11769; CHECK-NEXT:    vfmsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 {%k1} # 32-byte Folded Reload1770; CHECK-NEXT:    vmovaps %ymm2, %ymm01771; CHECK-NEXT:    retq1772  %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}"()1773  %a0 = load <16 x half>, ptr %p1774  %neg = fneg <16 x half> %a21775  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %a0, <16 x half> %a1, <16 x half> %neg)1776  %3 = bitcast i16 %mask to <16 x i1>1777  %4 = select <16 x i1> %3, <16 x half> %2, <16 x half> %a01778  ret <16 x half> %41779}1780 1781define <16 x half> @stack_fold_fmsub213ph_mask_ymm(ptr %p, <16 x half> %a1, <16 x half> %a2, i16 %mask) {1782; CHECK-LABEL: stack_fold_fmsub213ph_mask_ymm:1783; CHECK:       # %bb.0:1784; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1785; CHECK-NEXT:    #APP1786; CHECK-NEXT:    nop1787; CHECK-NEXT:    #NO_APP1788; CHECK-NEXT:    vmovaps (%rdi), %ymm21789; CHECK-NEXT:    kmovd %esi, %k11790; CHECK-NEXT:    vfmsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 {%k1} # 32-byte Folded Reload1791; CHECK-NEXT:    vmovaps %ymm2, %ymm01792; CHECK-NEXT:    retq1793  %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}"()1794  %a0 = load <16 x half>, ptr %p1795  %neg = fneg <16 x half> %a21796  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %a1, <16 x half> %a0, <16 x half> %neg)1797  %3 = bitcast i16 %mask to <16 x i1>1798  %4 = select <16 x i1> %3, <16 x half> %2, <16 x half> %a01799  ret <16 x half> %41800}1801 1802define <16 x half> @stack_fold_fmsub231ph_mask_ymm(ptr %p, <16 x half> %a1, <16 x half> %a2, i16 %mask) {1803; CHECK-LABEL: stack_fold_fmsub231ph_mask_ymm:1804; CHECK:       # %bb.0:1805; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1806; CHECK-NEXT:    #APP1807; CHECK-NEXT:    nop1808; CHECK-NEXT:    #NO_APP1809; CHECK-NEXT:    vmovaps (%rdi), %ymm21810; CHECK-NEXT:    kmovd %esi, %k11811; CHECK-NEXT:    vfmsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 {%k1} # 32-byte Folded Reload1812; CHECK-NEXT:    vmovaps %ymm2, %ymm01813; CHECK-NEXT:    retq1814  %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}"()1815  %a0 = load <16 x half>, ptr %p1816  %neg = fneg <16 x half> %a01817  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %a1, <16 x half> %a2, <16 x half> %neg)1818  %3 = bitcast i16 %mask to <16 x i1>1819  %4 = select <16 x i1> %3, <16 x half> %2, <16 x half> %a01820  ret <16 x half> %41821}1822 1823define <16 x half> @stack_fold_fmsub321ph_mask_ymm(ptr %p, <16 x half> %a1, <16 x half> %a2, i16 %mask) {1824; CHECK-LABEL: stack_fold_fmsub321ph_mask_ymm:1825; CHECK:       # %bb.0:1826; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1827; CHECK-NEXT:    #APP1828; CHECK-NEXT:    nop1829; CHECK-NEXT:    #NO_APP1830; CHECK-NEXT:    vmovaps (%rdi), %ymm21831; CHECK-NEXT:    kmovd %esi, %k11832; CHECK-NEXT:    vfmsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 {%k1} # 32-byte Folded Reload1833; CHECK-NEXT:    vmovaps %ymm2, %ymm01834; CHECK-NEXT:    retq1835  %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}"()1836  %a0 = load <16 x half>, ptr %p1837  %neg = fneg <16 x half> %a01838  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %a2, <16 x half> %a1, <16 x half> %neg)1839  %3 = bitcast i16 %mask to <16 x i1>1840  %4 = select <16 x i1> %3, <16 x half> %2, <16 x half> %a01841  ret <16 x half> %41842}1843 1844define <16 x half> @stack_fold_fmsub132ph_mask_ymm(ptr %p, <16 x half> %a1, <16 x half> %a2, i16 %mask) {1845; CHECK-LABEL: stack_fold_fmsub132ph_mask_ymm:1846; CHECK:       # %bb.0:1847; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1848; CHECK-NEXT:    #APP1849; CHECK-NEXT:    nop1850; CHECK-NEXT:    #NO_APP1851; CHECK-NEXT:    vmovaps (%rdi), %ymm21852; CHECK-NEXT:    kmovd %esi, %k11853; CHECK-NEXT:    vfmsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 {%k1} # 32-byte Folded Reload1854; CHECK-NEXT:    vmovaps %ymm2, %ymm01855; CHECK-NEXT:    retq1856  %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}"()1857  %a0 = load <16 x half>, ptr %p1858  %neg = fneg <16 x half> %a11859  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %a0, <16 x half> %a2, <16 x half> %neg)1860  %3 = bitcast i16 %mask to <16 x i1>1861  %4 = select <16 x i1> %3, <16 x half> %2, <16 x half> %a01862  ret <16 x half> %41863}1864 1865define <16 x half> @stack_fold_fmsub312ph_mask_ymm(ptr %p, <16 x half> %a1, <16 x half> %a2, i16 %mask) {1866; CHECK-LABEL: stack_fold_fmsub312ph_mask_ymm:1867; CHECK:       # %bb.0:1868; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1869; CHECK-NEXT:    #APP1870; CHECK-NEXT:    nop1871; CHECK-NEXT:    #NO_APP1872; CHECK-NEXT:    vmovaps (%rdi), %ymm21873; CHECK-NEXT:    kmovd %esi, %k11874; CHECK-NEXT:    vfmsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 {%k1} # 32-byte Folded Reload1875; CHECK-NEXT:    vmovaps %ymm2, %ymm01876; CHECK-NEXT:    retq1877  %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}"()1878  %a0 = load <16 x half>, ptr %p1879  %neg = fneg <16 x half> %a11880  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %a2, <16 x half> %a0, <16 x half> %neg)1881  %3 = bitcast i16 %mask to <16 x i1>1882  %4 = select <16 x i1> %3, <16 x half> %2, <16 x half> %a01883  ret <16 x half> %41884}1885 1886define <16 x half> @stack_fold_fmsub123ph_maskz_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2, ptr %mask) {1887; CHECK-LABEL: stack_fold_fmsub123ph_maskz_ymm:1888; CHECK:       # %bb.0:1889; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1890; CHECK-NEXT:    #APP1891; CHECK-NEXT:    nop1892; CHECK-NEXT:    #NO_APP1893; CHECK-NEXT:    kmovw (%rdi), %k11894; CHECK-NEXT:    vfmsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 {%k1} {z} # 32-byte Folded Reload1895; CHECK-NEXT:    retq1896  %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}"()1897  %neg = fneg <16 x half> %a21898  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %a0, <16 x half> %a1, <16 x half> %neg)1899  %3 = load i16, ptr %mask1900  %4 = bitcast i16 %3 to <16 x i1>1901  %5 = select <16 x i1> %4, <16 x half> %2, <16 x half> zeroinitializer1902  ret <16 x half> %51903}1904 1905define <16 x half> @stack_fold_fmsub213ph_maskz_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2, ptr %mask) {1906; CHECK-LABEL: stack_fold_fmsub213ph_maskz_ymm:1907; CHECK:       # %bb.0:1908; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1909; CHECK-NEXT:    #APP1910; CHECK-NEXT:    nop1911; CHECK-NEXT:    #NO_APP1912; CHECK-NEXT:    kmovw (%rdi), %k11913; CHECK-NEXT:    vfmsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 {%k1} {z} # 32-byte Folded Reload1914; CHECK-NEXT:    retq1915  %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}"()1916  %neg = fneg <16 x half> %a21917  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %a1, <16 x half> %a0, <16 x half> %neg)1918  %3 = load i16, ptr %mask1919  %4 = bitcast i16 %3 to <16 x i1>1920  %5 = select <16 x i1> %4, <16 x half> %2, <16 x half> zeroinitializer1921  ret <16 x half> %51922}1923 1924define <16 x half> @stack_fold_fmsub231ph_maskz_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2, ptr %mask) {1925; CHECK-LABEL: stack_fold_fmsub231ph_maskz_ymm:1926; CHECK:       # %bb.0:1927; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1928; CHECK-NEXT:    #APP1929; CHECK-NEXT:    nop1930; CHECK-NEXT:    #NO_APP1931; CHECK-NEXT:    kmovw (%rdi), %k11932; CHECK-NEXT:    vfmsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 {%k1} {z} # 32-byte Folded Reload1933; CHECK-NEXT:    retq1934  %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}"()1935  %neg = fneg <16 x half> %a01936  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %a1, <16 x half> %a2, <16 x half> %neg)1937  %3 = load i16, ptr %mask1938  %4 = bitcast i16 %3 to <16 x i1>1939  %5 = select <16 x i1> %4, <16 x half> %2, <16 x half> zeroinitializer1940  ret <16 x half> %51941}1942 1943define <16 x half> @stack_fold_fmsub321ph_maskz_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2, ptr %mask) {1944; CHECK-LABEL: stack_fold_fmsub321ph_maskz_ymm:1945; CHECK:       # %bb.0:1946; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1947; CHECK-NEXT:    #APP1948; CHECK-NEXT:    nop1949; CHECK-NEXT:    #NO_APP1950; CHECK-NEXT:    kmovw (%rdi), %k11951; CHECK-NEXT:    vfmsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 {%k1} {z} # 32-byte Folded Reload1952; CHECK-NEXT:    retq1953  %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}"()1954  %neg = fneg <16 x half> %a01955  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %a2, <16 x half> %a1, <16 x half> %neg)1956  %3 = load i16, ptr %mask1957  %4 = bitcast i16 %3 to <16 x i1>1958  %5 = select <16 x i1> %4, <16 x half> %2, <16 x half> zeroinitializer1959  ret <16 x half> %51960}1961 1962define <16 x half> @stack_fold_fmsub132ph_maskz_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2, ptr %mask) {1963; CHECK-LABEL: stack_fold_fmsub132ph_maskz_ymm:1964; CHECK:       # %bb.0:1965; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1966; CHECK-NEXT:    #APP1967; CHECK-NEXT:    nop1968; CHECK-NEXT:    #NO_APP1969; CHECK-NEXT:    kmovw (%rdi), %k11970; CHECK-NEXT:    vfmsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 {%k1} {z} # 32-byte Folded Reload1971; CHECK-NEXT:    retq1972  %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}"()1973  %neg = fneg <16 x half> %a11974  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %a0, <16 x half> %a2, <16 x half> %neg)1975  %3 = load i16, ptr %mask1976  %4 = bitcast i16 %3 to <16 x i1>1977  %5 = select <16 x i1> %4, <16 x half> %2, <16 x half> zeroinitializer1978  ret <16 x half> %51979}1980 1981define <16 x half> @stack_fold_fmsub312ph_maskz_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2, ptr %mask) {1982; CHECK-LABEL: stack_fold_fmsub312ph_maskz_ymm:1983; CHECK:       # %bb.0:1984; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1985; CHECK-NEXT:    #APP1986; CHECK-NEXT:    nop1987; CHECK-NEXT:    #NO_APP1988; CHECK-NEXT:    kmovw (%rdi), %k11989; CHECK-NEXT:    vfmsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 {%k1} {z} # 32-byte Folded Reload1990; CHECK-NEXT:    retq1991  %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}"()1992  %neg = fneg <16 x half> %a11993  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %a2, <16 x half> %a0, <16 x half> %neg)1994  %3 = load i16, ptr %mask1995  %4 = bitcast i16 %3 to <16 x i1>1996  %5 = select <16 x i1> %4, <16 x half> %2, <16 x half> zeroinitializer1997  ret <16 x half> %51998}1999 2000define <16 x half> @stack_fold_fnmadd123ph_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2) {2001; CHECK-LABEL: stack_fold_fnmadd123ph_ymm:2002; CHECK:       # %bb.0:2003; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2004; CHECK-NEXT:    #APP2005; CHECK-NEXT:    nop2006; CHECK-NEXT:    #NO_APP2007; CHECK-NEXT:    vfnmadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 # 32-byte Folded Reload2008; CHECK-NEXT:    retq2009  %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}"()2010  %2 = fneg <16 x half> %a02011  %3 = call <16 x half> @llvm.fma.v16f16(<16 x half> %2, <16 x half> %a1, <16 x half> %a2)2012  ret <16 x half> %32013}2014 2015define <16 x half> @stack_fold_fnmadd213ph_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2) {2016; CHECK-LABEL: stack_fold_fnmadd213ph_ymm:2017; CHECK:       # %bb.0:2018; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2019; CHECK-NEXT:    #APP2020; CHECK-NEXT:    nop2021; CHECK-NEXT:    #NO_APP2022; CHECK-NEXT:    vfnmadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 # 32-byte Folded Reload2023; CHECK-NEXT:    retq2024  %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}"()2025  %2 = fneg <16 x half> %a12026  %3 = call <16 x half> @llvm.fma.v16f16(<16 x half> %2, <16 x half> %a0, <16 x half> %a2)2027  ret <16 x half> %32028}2029 2030define <16 x half> @stack_fold_fnmadd231ph_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2) {2031; CHECK-LABEL: stack_fold_fnmadd231ph_ymm:2032; CHECK:       # %bb.0:2033; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2034; CHECK-NEXT:    #APP2035; CHECK-NEXT:    nop2036; CHECK-NEXT:    #NO_APP2037; CHECK-NEXT:    vfnmadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 # 32-byte Folded Reload2038; CHECK-NEXT:    retq2039  %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}"()2040  %2 = fneg <16 x half> %a12041  %3 = call <16 x half> @llvm.fma.v16f16(<16 x half> %2, <16 x half> %a2, <16 x half> %a0)2042  ret <16 x half> %32043}2044 2045define <16 x half> @stack_fold_fnmadd321ph_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2) {2046; CHECK-LABEL: stack_fold_fnmadd321ph_ymm:2047; CHECK:       # %bb.0:2048; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2049; CHECK-NEXT:    #APP2050; CHECK-NEXT:    nop2051; CHECK-NEXT:    #NO_APP2052; CHECK-NEXT:    vfnmadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 # 32-byte Folded Reload2053; CHECK-NEXT:    retq2054  %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}"()2055  %2 = fneg <16 x half> %a22056  %3 = call <16 x half> @llvm.fma.v16f16(<16 x half> %2, <16 x half> %a1, <16 x half> %a0)2057  ret <16 x half> %32058}2059 2060define <16 x half> @stack_fold_fnmadd132ph_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2) {2061; CHECK-LABEL: stack_fold_fnmadd132ph_ymm:2062; CHECK:       # %bb.0:2063; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2064; CHECK-NEXT:    #APP2065; CHECK-NEXT:    nop2066; CHECK-NEXT:    #NO_APP2067; CHECK-NEXT:    vfnmadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 # 32-byte Folded Reload2068; CHECK-NEXT:    retq2069  %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}"()2070  %2 = fneg <16 x half> %a02071  %3 = call <16 x half> @llvm.fma.v16f16(<16 x half> %2, <16 x half> %a2, <16 x half> %a1)2072  ret <16 x half> %32073}2074 2075define <16 x half> @stack_fold_fnmadd312ph_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2) {2076; CHECK-LABEL: stack_fold_fnmadd312ph_ymm:2077; CHECK:       # %bb.0:2078; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2079; CHECK-NEXT:    #APP2080; CHECK-NEXT:    nop2081; CHECK-NEXT:    #NO_APP2082; CHECK-NEXT:    vfnmadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 # 32-byte Folded Reload2083; CHECK-NEXT:    retq2084  %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}"()2085  %2 = fneg <16 x half> %a22086  %3 = call <16 x half> @llvm.fma.v16f16(<16 x half> %2, <16 x half> %a0, <16 x half> %a1)2087  ret <16 x half> %32088}2089 2090define <16 x half> @stack_fold_fnmadd123ph_mask_ymm(ptr %p, <16 x half> %a1, <16 x half> %a2, i16 %mask) {2091; CHECK-LABEL: stack_fold_fnmadd123ph_mask_ymm:2092; CHECK:       # %bb.0:2093; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2094; CHECK-NEXT:    #APP2095; CHECK-NEXT:    nop2096; CHECK-NEXT:    #NO_APP2097; CHECK-NEXT:    vmovaps (%rdi), %ymm22098; CHECK-NEXT:    kmovd %esi, %k12099; CHECK-NEXT:    vfnmadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 {%k1} # 32-byte Folded Reload2100; CHECK-NEXT:    vmovaps %ymm2, %ymm02101; CHECK-NEXT:    retq2102  %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}"()2103  %a0 = load <16 x half>, ptr %p2104  %neg = fneg <16 x half> %a02105  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %neg, <16 x half> %a1, <16 x half> %a2)2106  %3 = bitcast i16 %mask to <16 x i1>2107  %4 = select <16 x i1> %3, <16 x half> %2, <16 x half> %a02108  ret <16 x half> %42109}2110 2111define <16 x half> @stack_fold_fnmadd213ph_mask_ymm(ptr %p, <16 x half> %a1, <16 x half> %a2, i16 %mask) {2112; CHECK-LABEL: stack_fold_fnmadd213ph_mask_ymm:2113; CHECK:       # %bb.0:2114; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2115; CHECK-NEXT:    #APP2116; CHECK-NEXT:    nop2117; CHECK-NEXT:    #NO_APP2118; CHECK-NEXT:    vmovaps (%rdi), %ymm22119; CHECK-NEXT:    kmovd %esi, %k12120; CHECK-NEXT:    vfnmadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 {%k1} # 32-byte Folded Reload2121; CHECK-NEXT:    vmovaps %ymm2, %ymm02122; CHECK-NEXT:    retq2123  %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}"()2124  %a0 = load <16 x half>, ptr %p2125  %neg = fneg <16 x half> %a12126  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %neg, <16 x half> %a0, <16 x half> %a2)2127  %3 = bitcast i16 %mask to <16 x i1>2128  %4 = select <16 x i1> %3, <16 x half> %2, <16 x half> %a02129  ret <16 x half> %42130}2131 2132define <16 x half> @stack_fold_fnmadd231ph_mask_ymm(ptr %p, <16 x half> %a1, <16 x half> %a2, i16 %mask) {2133; CHECK-LABEL: stack_fold_fnmadd231ph_mask_ymm:2134; CHECK:       # %bb.0:2135; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2136; CHECK-NEXT:    #APP2137; CHECK-NEXT:    nop2138; CHECK-NEXT:    #NO_APP2139; CHECK-NEXT:    vmovaps (%rdi), %ymm22140; CHECK-NEXT:    kmovd %esi, %k12141; CHECK-NEXT:    vfnmadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 {%k1} # 32-byte Folded Reload2142; CHECK-NEXT:    vmovaps %ymm2, %ymm02143; CHECK-NEXT:    retq2144  %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}"()2145  %a0 = load <16 x half>, ptr %p2146  %neg = fneg <16 x half> %a12147  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %neg, <16 x half> %a2, <16 x half> %a0)2148  %3 = bitcast i16 %mask to <16 x i1>2149  %4 = select <16 x i1> %3, <16 x half> %2, <16 x half> %a02150  ret <16 x half> %42151}2152 2153define <16 x half> @stack_fold_fnmadd321ph_mask_ymm(ptr %p, <16 x half> %a1, <16 x half> %a2, i16 %mask) {2154; CHECK-LABEL: stack_fold_fnmadd321ph_mask_ymm:2155; CHECK:       # %bb.0:2156; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2157; CHECK-NEXT:    #APP2158; CHECK-NEXT:    nop2159; CHECK-NEXT:    #NO_APP2160; CHECK-NEXT:    vmovaps (%rdi), %ymm22161; CHECK-NEXT:    kmovd %esi, %k12162; CHECK-NEXT:    vfnmadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 {%k1} # 32-byte Folded Reload2163; CHECK-NEXT:    vmovaps %ymm2, %ymm02164; CHECK-NEXT:    retq2165  %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}"()2166  %a0 = load <16 x half>, ptr %p2167  %neg = fneg <16 x half> %a22168  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %neg, <16 x half> %a1, <16 x half> %a0)2169  %3 = bitcast i16 %mask to <16 x i1>2170  %4 = select <16 x i1> %3, <16 x half> %2, <16 x half> %a02171  ret <16 x half> %42172}2173 2174define <16 x half> @stack_fold_fnmadd132ph_mask_ymm(ptr %p, <16 x half> %a1, <16 x half> %a2, i16 %mask) {2175; CHECK-LABEL: stack_fold_fnmadd132ph_mask_ymm:2176; CHECK:       # %bb.0:2177; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2178; CHECK-NEXT:    #APP2179; CHECK-NEXT:    nop2180; CHECK-NEXT:    #NO_APP2181; CHECK-NEXT:    vmovaps (%rdi), %ymm22182; CHECK-NEXT:    kmovd %esi, %k12183; CHECK-NEXT:    vfnmadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 {%k1} # 32-byte Folded Reload2184; CHECK-NEXT:    vmovaps %ymm2, %ymm02185; CHECK-NEXT:    retq2186  %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}"()2187  %a0 = load <16 x half>, ptr %p2188  %neg = fneg <16 x half> %a02189  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %neg, <16 x half> %a2, <16 x half> %a1)2190  %3 = bitcast i16 %mask to <16 x i1>2191  %4 = select <16 x i1> %3, <16 x half> %2, <16 x half> %a02192  ret <16 x half> %42193}2194 2195define <16 x half> @stack_fold_fnmadd312ph_mask_ymm(ptr %p, <16 x half> %a1, <16 x half> %a2, i16 %mask) {2196; CHECK-LABEL: stack_fold_fnmadd312ph_mask_ymm:2197; CHECK:       # %bb.0:2198; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2199; CHECK-NEXT:    #APP2200; CHECK-NEXT:    nop2201; CHECK-NEXT:    #NO_APP2202; CHECK-NEXT:    vmovaps (%rdi), %ymm22203; CHECK-NEXT:    kmovd %esi, %k12204; CHECK-NEXT:    vfnmadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 {%k1} # 32-byte Folded Reload2205; CHECK-NEXT:    vmovaps %ymm2, %ymm02206; CHECK-NEXT:    retq2207  %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}"()2208  %a0 = load <16 x half>, ptr %p2209  %neg = fneg <16 x half> %a22210  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %neg, <16 x half> %a0, <16 x half> %a1)2211  %3 = bitcast i16 %mask to <16 x i1>2212  %4 = select <16 x i1> %3, <16 x half> %2, <16 x half> %a02213  ret <16 x half> %42214}2215 2216define <16 x half> @stack_fold_fnmadd123ph_maskz_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2, ptr %mask) {2217; CHECK-LABEL: stack_fold_fnmadd123ph_maskz_ymm:2218; CHECK:       # %bb.0:2219; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2220; CHECK-NEXT:    #APP2221; CHECK-NEXT:    nop2222; CHECK-NEXT:    #NO_APP2223; CHECK-NEXT:    kmovw (%rdi), %k12224; CHECK-NEXT:    vfnmadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 {%k1} {z} # 32-byte Folded Reload2225; CHECK-NEXT:    retq2226  %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}"()2227  %neg = fneg <16 x half> %a02228  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %neg, <16 x half> %a1, <16 x half> %a2)2229  %3 = load i16, ptr %mask2230  %4 = bitcast i16 %3 to <16 x i1>2231  %5 = select <16 x i1> %4, <16 x half> %2, <16 x half> zeroinitializer2232  ret <16 x half> %52233}2234 2235define <16 x half> @stack_fold_fnmadd213ph_maskz_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2, ptr %mask) {2236; CHECK-LABEL: stack_fold_fnmadd213ph_maskz_ymm:2237; CHECK:       # %bb.0:2238; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2239; CHECK-NEXT:    #APP2240; CHECK-NEXT:    nop2241; CHECK-NEXT:    #NO_APP2242; CHECK-NEXT:    kmovw (%rdi), %k12243; CHECK-NEXT:    vfnmadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 {%k1} {z} # 32-byte Folded Reload2244; CHECK-NEXT:    retq2245  %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}"()2246  %neg = fneg <16 x half> %a12247  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %neg, <16 x half> %a0, <16 x half> %a2)2248  %3 = load i16, ptr %mask2249  %4 = bitcast i16 %3 to <16 x i1>2250  %5 = select <16 x i1> %4, <16 x half> %2, <16 x half> zeroinitializer2251  ret <16 x half> %52252}2253 2254define <16 x half> @stack_fold_fnmadd231ph_maskz_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2, ptr %mask) {2255; CHECK-LABEL: stack_fold_fnmadd231ph_maskz_ymm:2256; CHECK:       # %bb.0:2257; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2258; CHECK-NEXT:    #APP2259; CHECK-NEXT:    nop2260; CHECK-NEXT:    #NO_APP2261; CHECK-NEXT:    kmovw (%rdi), %k12262; CHECK-NEXT:    vfnmadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 {%k1} {z} # 32-byte Folded Reload2263; CHECK-NEXT:    retq2264  %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}"()2265  %neg = fneg <16 x half> %a12266  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %neg, <16 x half> %a2, <16 x half> %a0)2267  %3 = load i16, ptr %mask2268  %4 = bitcast i16 %3 to <16 x i1>2269  %5 = select <16 x i1> %4, <16 x half> %2, <16 x half> zeroinitializer2270  ret <16 x half> %52271}2272 2273define <16 x half> @stack_fold_fnmadd321ph_maskz_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2, ptr %mask) {2274; CHECK-LABEL: stack_fold_fnmadd321ph_maskz_ymm:2275; CHECK:       # %bb.0:2276; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2277; CHECK-NEXT:    #APP2278; CHECK-NEXT:    nop2279; CHECK-NEXT:    #NO_APP2280; CHECK-NEXT:    kmovw (%rdi), %k12281; CHECK-NEXT:    vfnmadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 {%k1} {z} # 32-byte Folded Reload2282; CHECK-NEXT:    retq2283  %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}"()2284  %neg = fneg <16 x half> %a22285  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %neg, <16 x half> %a1, <16 x half> %a0)2286  %3 = load i16, ptr %mask2287  %4 = bitcast i16 %3 to <16 x i1>2288  %5 = select <16 x i1> %4, <16 x half> %2, <16 x half> zeroinitializer2289  ret <16 x half> %52290}2291 2292define <16 x half> @stack_fold_fnmadd132ph_maskz_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2, ptr %mask) {2293; CHECK-LABEL: stack_fold_fnmadd132ph_maskz_ymm:2294; CHECK:       # %bb.0:2295; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2296; CHECK-NEXT:    #APP2297; CHECK-NEXT:    nop2298; CHECK-NEXT:    #NO_APP2299; CHECK-NEXT:    kmovw (%rdi), %k12300; CHECK-NEXT:    vfnmadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 {%k1} {z} # 32-byte Folded Reload2301; CHECK-NEXT:    retq2302  %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}"()2303  %neg = fneg <16 x half> %a02304  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %neg, <16 x half> %a2, <16 x half> %a1)2305  %3 = load i16, ptr %mask2306  %4 = bitcast i16 %3 to <16 x i1>2307  %5 = select <16 x i1> %4, <16 x half> %2, <16 x half> zeroinitializer2308  ret <16 x half> %52309}2310 2311define <16 x half> @stack_fold_fnmadd312ph_maskz_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2, ptr %mask) {2312; CHECK-LABEL: stack_fold_fnmadd312ph_maskz_ymm:2313; CHECK:       # %bb.0:2314; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2315; CHECK-NEXT:    #APP2316; CHECK-NEXT:    nop2317; CHECK-NEXT:    #NO_APP2318; CHECK-NEXT:    kmovw (%rdi), %k12319; CHECK-NEXT:    vfnmadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 {%k1} {z} # 32-byte Folded Reload2320; CHECK-NEXT:    retq2321  %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}"()2322  %neg = fneg <16 x half> %a22323  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %neg, <16 x half> %a0, <16 x half> %a1)2324  %3 = load i16, ptr %mask2325  %4 = bitcast i16 %3 to <16 x i1>2326  %5 = select <16 x i1> %4, <16 x half> %2, <16 x half> zeroinitializer2327  ret <16 x half> %52328}2329 2330define <16 x half> @stack_fold_fnmsub123ph_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2) {2331; CHECK-LABEL: stack_fold_fnmsub123ph_ymm:2332; CHECK:       # %bb.0:2333; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2334; CHECK-NEXT:    #APP2335; CHECK-NEXT:    nop2336; CHECK-NEXT:    #NO_APP2337; CHECK-NEXT:    vfnmsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 # 32-byte Folded Reload2338; CHECK-NEXT:    retq2339  %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}"()2340  %2 = fneg <16 x half> %a02341  %3 = fneg <16 x half> %a22342  %4 = call <16 x half> @llvm.fma.v16f16(<16 x half> %2, <16 x half> %a1, <16 x half> %3)2343  ret <16 x half> %42344}2345 2346define <16 x half> @stack_fold_fnmsub213ph_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2) {2347; CHECK-LABEL: stack_fold_fnmsub213ph_ymm:2348; CHECK:       # %bb.0:2349; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2350; CHECK-NEXT:    #APP2351; CHECK-NEXT:    nop2352; CHECK-NEXT:    #NO_APP2353; CHECK-NEXT:    vfnmsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 # 32-byte Folded Reload2354; CHECK-NEXT:    retq2355  %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}"()2356  %2 = fneg <16 x half> %a12357  %3 = fneg <16 x half> %a22358  %4 = call <16 x half> @llvm.fma.v16f16(<16 x half> %2, <16 x half> %a0, <16 x half> %3)2359  ret <16 x half> %42360}2361 2362define <16 x half> @stack_fold_fnmsub231ph_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2) {2363; CHECK-LABEL: stack_fold_fnmsub231ph_ymm:2364; CHECK:       # %bb.0:2365; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2366; CHECK-NEXT:    #APP2367; CHECK-NEXT:    nop2368; CHECK-NEXT:    #NO_APP2369; CHECK-NEXT:    vfnmsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 # 32-byte Folded Reload2370; CHECK-NEXT:    retq2371  %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}"()2372  %2 = fneg <16 x half> %a12373  %3 = fneg <16 x half> %a02374  %4 = call <16 x half> @llvm.fma.v16f16(<16 x half> %2, <16 x half> %a2, <16 x half> %3)2375  ret <16 x half> %42376}2377 2378define <16 x half> @stack_fold_fnmsub321ph_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2) {2379; CHECK-LABEL: stack_fold_fnmsub321ph_ymm:2380; CHECK:       # %bb.0:2381; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2382; CHECK-NEXT:    #APP2383; CHECK-NEXT:    nop2384; CHECK-NEXT:    #NO_APP2385; CHECK-NEXT:    vfnmsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 # 32-byte Folded Reload2386; CHECK-NEXT:    retq2387  %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}"()2388  %2 = fneg <16 x half> %a22389  %3 = fneg <16 x half> %a02390  %4 = call <16 x half> @llvm.fma.v16f16(<16 x half> %2, <16 x half> %a1, <16 x half> %3)2391  ret <16 x half> %42392}2393 2394define <16 x half> @stack_fold_fnmsub132ph_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2) {2395; CHECK-LABEL: stack_fold_fnmsub132ph_ymm:2396; CHECK:       # %bb.0:2397; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2398; CHECK-NEXT:    #APP2399; CHECK-NEXT:    nop2400; CHECK-NEXT:    #NO_APP2401; CHECK-NEXT:    vfnmsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 # 32-byte Folded Reload2402; CHECK-NEXT:    retq2403  %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}"()2404  %2 = fneg <16 x half> %a02405  %3 = fneg <16 x half> %a12406  %4 = call <16 x half> @llvm.fma.v16f16(<16 x half> %2, <16 x half> %a2, <16 x half> %3)2407  ret <16 x half> %42408}2409 2410define <16 x half> @stack_fold_fnmsub312ph_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2) {2411; CHECK-LABEL: stack_fold_fnmsub312ph_ymm:2412; CHECK:       # %bb.0:2413; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2414; CHECK-NEXT:    #APP2415; CHECK-NEXT:    nop2416; CHECK-NEXT:    #NO_APP2417; CHECK-NEXT:    vfnmsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 # 32-byte Folded Reload2418; CHECK-NEXT:    retq2419  %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}"()2420  %2 = fneg <16 x half> %a22421  %3 = fneg <16 x half> %a12422  %4 = call <16 x half> @llvm.fma.v16f16(<16 x half> %2, <16 x half> %a0, <16 x half> %3)2423  ret <16 x half> %42424}2425 2426define <16 x half> @stack_fold_fnmsub123ph_mask_ymm(ptr %p, <16 x half> %a1, <16 x half> %a2, i16 %mask) {2427; CHECK-LABEL: stack_fold_fnmsub123ph_mask_ymm:2428; CHECK:       # %bb.0:2429; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2430; CHECK-NEXT:    #APP2431; CHECK-NEXT:    nop2432; CHECK-NEXT:    #NO_APP2433; CHECK-NEXT:    vmovaps (%rdi), %ymm22434; CHECK-NEXT:    kmovd %esi, %k12435; CHECK-NEXT:    vfnmsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 {%k1} # 32-byte Folded Reload2436; CHECK-NEXT:    vmovaps %ymm2, %ymm02437; CHECK-NEXT:    retq2438  %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}"()2439  %a0 = load <16 x half>, ptr %p2440  %neg = fneg <16 x half> %a22441  %neg1 = fneg <16 x half> %a02442  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %neg1, <16 x half> %a1, <16 x half> %neg)2443  %3 = bitcast i16 %mask to <16 x i1>2444  %4 = select <16 x i1> %3, <16 x half> %2, <16 x half> %a02445  ret <16 x half> %42446}2447 2448define <16 x half> @stack_fold_fnmsub213ph_mask_ymm(ptr %p, <16 x half> %a1, <16 x half> %a2, i16 %mask) {2449; CHECK-LABEL: stack_fold_fnmsub213ph_mask_ymm:2450; CHECK:       # %bb.0:2451; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2452; CHECK-NEXT:    #APP2453; CHECK-NEXT:    nop2454; CHECK-NEXT:    #NO_APP2455; CHECK-NEXT:    vmovaps (%rdi), %ymm22456; CHECK-NEXT:    kmovd %esi, %k12457; CHECK-NEXT:    vfnmsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 {%k1} # 32-byte Folded Reload2458; CHECK-NEXT:    vmovaps %ymm2, %ymm02459; CHECK-NEXT:    retq2460  %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}"()2461  %a0 = load <16 x half>, ptr %p2462  %neg = fneg <16 x half> %a22463  %neg1 = fneg <16 x half> %a12464  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %neg1, <16 x half> %a0, <16 x half> %neg)2465  %3 = bitcast i16 %mask to <16 x i1>2466  %4 = select <16 x i1> %3, <16 x half> %2, <16 x half> %a02467  ret <16 x half> %42468}2469 2470define <16 x half> @stack_fold_fnmsub231ph_mask_ymm(ptr %p, <16 x half> %a1, <16 x half> %a2, i16 %mask) {2471; CHECK-LABEL: stack_fold_fnmsub231ph_mask_ymm:2472; CHECK:       # %bb.0:2473; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2474; CHECK-NEXT:    #APP2475; CHECK-NEXT:    nop2476; CHECK-NEXT:    #NO_APP2477; CHECK-NEXT:    vmovaps (%rdi), %ymm22478; CHECK-NEXT:    kmovd %esi, %k12479; CHECK-NEXT:    vfnmsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 {%k1} # 32-byte Folded Reload2480; CHECK-NEXT:    vmovaps %ymm2, %ymm02481; CHECK-NEXT:    retq2482  %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}"()2483  %a0 = load <16 x half>, ptr %p2484  %neg = fneg <16 x half> %a02485  %neg1 = fneg <16 x half> %a12486  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %neg1, <16 x half> %a2, <16 x half> %neg)2487  %3 = bitcast i16 %mask to <16 x i1>2488  %4 = select <16 x i1> %3, <16 x half> %2, <16 x half> %a02489  ret <16 x half> %42490}2491 2492define <16 x half> @stack_fold_fnmsub321ph_mask_ymm(ptr %p, <16 x half> %a1, <16 x half> %a2, i16 %mask) {2493; CHECK-LABEL: stack_fold_fnmsub321ph_mask_ymm:2494; CHECK:       # %bb.0:2495; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2496; CHECK-NEXT:    #APP2497; CHECK-NEXT:    nop2498; CHECK-NEXT:    #NO_APP2499; CHECK-NEXT:    vmovaps (%rdi), %ymm22500; CHECK-NEXT:    kmovd %esi, %k12501; CHECK-NEXT:    vfnmsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 {%k1} # 32-byte Folded Reload2502; CHECK-NEXT:    vmovaps %ymm2, %ymm02503; CHECK-NEXT:    retq2504  %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}"()2505  %a0 = load <16 x half>, ptr %p2506  %neg = fneg <16 x half> %a02507  %neg1 = fneg <16 x half> %a22508  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %neg1, <16 x half> %a1, <16 x half> %neg)2509  %3 = bitcast i16 %mask to <16 x i1>2510  %4 = select <16 x i1> %3, <16 x half> %2, <16 x half> %a02511  ret <16 x half> %42512}2513 2514define <16 x half> @stack_fold_fnmsub132ph_mask_ymm(ptr %p, <16 x half> %a1, <16 x half> %a2, i16 %mask) {2515; CHECK-LABEL: stack_fold_fnmsub132ph_mask_ymm:2516; CHECK:       # %bb.0:2517; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2518; CHECK-NEXT:    #APP2519; CHECK-NEXT:    nop2520; CHECK-NEXT:    #NO_APP2521; CHECK-NEXT:    vmovaps (%rdi), %ymm22522; CHECK-NEXT:    kmovd %esi, %k12523; CHECK-NEXT:    vfnmsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 {%k1} # 32-byte Folded Reload2524; CHECK-NEXT:    vmovaps %ymm2, %ymm02525; CHECK-NEXT:    retq2526  %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}"()2527  %a0 = load <16 x half>, ptr %p2528  %neg = fneg <16 x half> %a12529  %neg1 = fneg <16 x half> %a02530  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %neg1, <16 x half> %a2, <16 x half> %neg)2531  %3 = bitcast i16 %mask to <16 x i1>2532  %4 = select <16 x i1> %3, <16 x half> %2, <16 x half> %a02533  ret <16 x half> %42534}2535 2536define <16 x half> @stack_fold_fnmsub312ph_mask_ymm(ptr %p, <16 x half> %a1, <16 x half> %a2, i16 %mask) {2537; CHECK-LABEL: stack_fold_fnmsub312ph_mask_ymm:2538; CHECK:       # %bb.0:2539; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2540; CHECK-NEXT:    #APP2541; CHECK-NEXT:    nop2542; CHECK-NEXT:    #NO_APP2543; CHECK-NEXT:    vmovaps (%rdi), %ymm22544; CHECK-NEXT:    kmovd %esi, %k12545; CHECK-NEXT:    vfnmsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 {%k1} # 32-byte Folded Reload2546; CHECK-NEXT:    vmovaps %ymm2, %ymm02547; CHECK-NEXT:    retq2548  %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}"()2549  %a0 = load <16 x half>, ptr %p2550  %neg = fneg <16 x half> %a12551  %neg1 = fneg <16 x half> %a22552  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %neg1, <16 x half> %a0, <16 x half> %neg)2553  %3 = bitcast i16 %mask to <16 x i1>2554  %4 = select <16 x i1> %3, <16 x half> %2, <16 x half> %a02555  ret <16 x half> %42556}2557 2558define <16 x half> @stack_fold_fnmsub123ph_maskz_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2, ptr %mask) {2559; CHECK-LABEL: stack_fold_fnmsub123ph_maskz_ymm:2560; CHECK:       # %bb.0:2561; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2562; CHECK-NEXT:    #APP2563; CHECK-NEXT:    nop2564; CHECK-NEXT:    #NO_APP2565; CHECK-NEXT:    kmovw (%rdi), %k12566; CHECK-NEXT:    vfnmsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 {%k1} {z} # 32-byte Folded Reload2567; CHECK-NEXT:    retq2568  %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}"()2569  %neg = fneg <16 x half> %a22570  %neg1 = fneg <16 x half> %a02571  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %neg1, <16 x half> %a1, <16 x half> %neg)2572  %3 = load i16, ptr %mask2573  %4 = bitcast i16 %3 to <16 x i1>2574  %5 = select <16 x i1> %4, <16 x half> %2, <16 x half> zeroinitializer2575  ret <16 x half> %52576}2577 2578define <16 x half> @stack_fold_fnmsub213ph_maskz_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2, ptr %mask) {2579; CHECK-LABEL: stack_fold_fnmsub213ph_maskz_ymm:2580; CHECK:       # %bb.0:2581; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2582; CHECK-NEXT:    #APP2583; CHECK-NEXT:    nop2584; CHECK-NEXT:    #NO_APP2585; CHECK-NEXT:    kmovw (%rdi), %k12586; CHECK-NEXT:    vfnmsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 {%k1} {z} # 32-byte Folded Reload2587; CHECK-NEXT:    retq2588  %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}"()2589  %neg = fneg <16 x half> %a22590  %neg1 = fneg <16 x half> %a12591  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %neg1, <16 x half> %a0, <16 x half> %neg)2592  %3 = load i16, ptr %mask2593  %4 = bitcast i16 %3 to <16 x i1>2594  %5 = select <16 x i1> %4, <16 x half> %2, <16 x half> zeroinitializer2595  ret <16 x half> %52596}2597 2598define <16 x half> @stack_fold_fnmsub231ph_maskz_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2, ptr %mask) {2599; CHECK-LABEL: stack_fold_fnmsub231ph_maskz_ymm:2600; CHECK:       # %bb.0:2601; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2602; CHECK-NEXT:    #APP2603; CHECK-NEXT:    nop2604; CHECK-NEXT:    #NO_APP2605; CHECK-NEXT:    kmovw (%rdi), %k12606; CHECK-NEXT:    vfnmsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 {%k1} {z} # 32-byte Folded Reload2607; CHECK-NEXT:    retq2608  %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}"()2609  %neg = fneg <16 x half> %a02610  %neg1 = fneg <16 x half> %a12611  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %neg1, <16 x half> %a2, <16 x half> %neg)2612  %3 = load i16, ptr %mask2613  %4 = bitcast i16 %3 to <16 x i1>2614  %5 = select <16 x i1> %4, <16 x half> %2, <16 x half> zeroinitializer2615  ret <16 x half> %52616}2617 2618define <16 x half> @stack_fold_fnmsub321ph_maskz_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2, ptr %mask) {2619; CHECK-LABEL: stack_fold_fnmsub321ph_maskz_ymm:2620; CHECK:       # %bb.0:2621; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2622; CHECK-NEXT:    #APP2623; CHECK-NEXT:    nop2624; CHECK-NEXT:    #NO_APP2625; CHECK-NEXT:    kmovw (%rdi), %k12626; CHECK-NEXT:    vfnmsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 {%k1} {z} # 32-byte Folded Reload2627; CHECK-NEXT:    retq2628  %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}"()2629  %neg = fneg <16 x half> %a02630  %neg1 = fneg <16 x half> %a22631  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %neg1, <16 x half> %a1, <16 x half> %neg)2632  %3 = load i16, ptr %mask2633  %4 = bitcast i16 %3 to <16 x i1>2634  %5 = select <16 x i1> %4, <16 x half> %2, <16 x half> zeroinitializer2635  ret <16 x half> %52636}2637 2638define <16 x half> @stack_fold_fnmsub132ph_maskz_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2, ptr %mask) {2639; CHECK-LABEL: stack_fold_fnmsub132ph_maskz_ymm:2640; CHECK:       # %bb.0:2641; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2642; CHECK-NEXT:    #APP2643; CHECK-NEXT:    nop2644; CHECK-NEXT:    #NO_APP2645; CHECK-NEXT:    kmovw (%rdi), %k12646; CHECK-NEXT:    vfnmsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 {%k1} {z} # 32-byte Folded Reload2647; CHECK-NEXT:    retq2648  %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}"()2649  %neg = fneg <16 x half> %a12650  %neg1 = fneg <16 x half> %a02651  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %neg1, <16 x half> %a2, <16 x half> %neg)2652  %3 = load i16, ptr %mask2653  %4 = bitcast i16 %3 to <16 x i1>2654  %5 = select <16 x i1> %4, <16 x half> %2, <16 x half> zeroinitializer2655  ret <16 x half> %52656}2657 2658define <16 x half> @stack_fold_fnmsub312ph_maskz_ymm(<16 x half> %a0, <16 x half> %a1, <16 x half> %a2, ptr %mask) {2659; CHECK-LABEL: stack_fold_fnmsub312ph_maskz_ymm:2660; CHECK:       # %bb.0:2661; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill2662; CHECK-NEXT:    #APP2663; CHECK-NEXT:    nop2664; CHECK-NEXT:    #NO_APP2665; CHECK-NEXT:    kmovw (%rdi), %k12666; CHECK-NEXT:    vfnmsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 {%k1} {z} # 32-byte Folded Reload2667; CHECK-NEXT:    retq2668  %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}"()2669  %neg = fneg <16 x half> %a12670  %neg1 = fneg <16 x half> %a22671  %2 = call <16 x half> @llvm.fma.v16f16(<16 x half> %neg1, <16 x half> %a0, <16 x half> %neg)2672  %3 = load i16, ptr %mask2673  %4 = bitcast i16 %3 to <16 x i1>2674  %5 = select <16 x i1> %4, <16 x half> %2, <16 x half> zeroinitializer2675  ret <16 x half> %52676}2677