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