brintos

brintos / llvm-project-archived public Read only

0
0
Text · 213.8 KiB · 1e1a8a6 Raw
3992 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 < %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 <32 x half> @stack_fold_fmadd123ph(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2) {13; CHECK-LABEL: stack_fold_fmadd123ph:14; CHECK:       # %bb.0:15; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill16; CHECK-NEXT:    #APP17; CHECK-NEXT:    nop18; CHECK-NEXT:    #NO_APP19; CHECK-NEXT:    vfmadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-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 <32 x half> @llvm.fma.v32f16(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2)23  ret <32 x half> %224}25declare <32 x half> @llvm.fma.v32f16(<32 x half>, <32 x half>, <32 x half>)26 27define <32 x half> @stack_fold_fmadd213ph(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2) {28; CHECK-LABEL: stack_fold_fmadd213ph:29; CHECK:       # %bb.0:30; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill31; CHECK-NEXT:    #APP32; CHECK-NEXT:    nop33; CHECK-NEXT:    #NO_APP34; CHECK-NEXT:    vfmadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-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 <32 x half> @llvm.fma.v32f16(<32 x half> %a1, <32 x half> %a0, <32 x half> %a2)38  ret <32 x half> %239}40 41define <32 x half> @stack_fold_fmadd231ph(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2) {42; CHECK-LABEL: stack_fold_fmadd231ph:43; CHECK:       # %bb.0:44; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill45; CHECK-NEXT:    #APP46; CHECK-NEXT:    nop47; CHECK-NEXT:    #NO_APP48; CHECK-NEXT:    vfmadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-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 <32 x half> @llvm.fma.v32f16(<32 x half> %a1, <32 x half> %a2, <32 x half> %a0)52  ret <32 x half> %253}54 55define <32 x half> @stack_fold_fmadd321ph(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2) {56; CHECK-LABEL: stack_fold_fmadd321ph:57; CHECK:       # %bb.0:58; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill59; CHECK-NEXT:    #APP60; CHECK-NEXT:    nop61; CHECK-NEXT:    #NO_APP62; CHECK-NEXT:    vfmadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-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 <32 x half> @llvm.fma.v32f16(<32 x half> %a2, <32 x half> %a1, <32 x half> %a0)66  ret <32 x half> %267}68 69define <32 x half> @stack_fold_fmadd132ph(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2) {70; CHECK-LABEL: stack_fold_fmadd132ph:71; CHECK:       # %bb.0:72; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill73; CHECK-NEXT:    #APP74; CHECK-NEXT:    nop75; CHECK-NEXT:    #NO_APP76; CHECK-NEXT:    vfmadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-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 <32 x half> @llvm.fma.v32f16(<32 x half> %a0, <32 x half> %a2, <32 x half> %a1)80  ret <32 x half> %281}82 83define <32 x half> @stack_fold_fmadd312ph(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2) {84; CHECK-LABEL: stack_fold_fmadd312ph:85; CHECK:       # %bb.0:86; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill87; CHECK-NEXT:    #APP88; CHECK-NEXT:    nop89; CHECK-NEXT:    #NO_APP90; CHECK-NEXT:    vfmadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-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 <32 x half> @llvm.fma.v32f16(<32 x half> %a2, <32 x half> %a0, <32 x half> %a1)94  ret <32 x half> %295}96 97define <32 x half> @stack_fold_fmadd123ph_mask(ptr %p, <32 x half> %a1, <32 x half> %a2, i32 %mask) {98; CHECK-LABEL: stack_fold_fmadd123ph_mask:99; CHECK:       # %bb.0:100; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill101; CHECK-NEXT:    #APP102; CHECK-NEXT:    nop103; CHECK-NEXT:    #NO_APP104; CHECK-NEXT:    vmovaps (%rdi), %zmm2105; CHECK-NEXT:    kmovd %esi, %k1106; CHECK-NEXT:    vfmadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload107; CHECK-NEXT:    vmovaps %zmm2, %zmm0108; 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 <32 x half>, ptr %p111  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2)112  %3 = bitcast i32 %mask to <32 x i1>113  %4 = select <32 x i1> %3, <32 x half> %2, <32 x half> %a0114  ret <32 x half> %4115}116 117define <32 x half> @stack_fold_fmadd213ph_mask(ptr %p, <32 x half> %a1, <32 x half> %a2, i32 %mask) {118; CHECK-LABEL: stack_fold_fmadd213ph_mask:119; CHECK:       # %bb.0:120; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill121; CHECK-NEXT:    #APP122; CHECK-NEXT:    nop123; CHECK-NEXT:    #NO_APP124; CHECK-NEXT:    vmovaps (%rdi), %zmm2125; CHECK-NEXT:    kmovd %esi, %k1126; CHECK-NEXT:    vfmadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload127; CHECK-NEXT:    vmovaps %zmm2, %zmm0128; 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 <32 x half>, ptr %p131  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %a1, <32 x half> %a0, <32 x half> %a2)132  %3 = bitcast i32 %mask to <32 x i1>133  %4 = select <32 x i1> %3, <32 x half> %2, <32 x half> %a0134  ret <32 x half> %4135}136 137define <32 x half> @stack_fold_fmadd231ph_mask(ptr %p, <32 x half> %a1, <32 x half> %a2, i32 %mask) {138; CHECK-LABEL: stack_fold_fmadd231ph_mask:139; CHECK:       # %bb.0:140; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill141; CHECK-NEXT:    #APP142; CHECK-NEXT:    nop143; CHECK-NEXT:    #NO_APP144; CHECK-NEXT:    vmovaps (%rdi), %zmm2145; CHECK-NEXT:    kmovd %esi, %k1146; CHECK-NEXT:    vfmadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload147; CHECK-NEXT:    vmovaps %zmm2, %zmm0148; 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 <32 x half>, ptr %p151  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %a1, <32 x half> %a2, <32 x half> %a0)152  %3 = bitcast i32 %mask to <32 x i1>153  %4 = select <32 x i1> %3, <32 x half> %2, <32 x half> %a0154  ret <32 x half> %4155}156 157define <32 x half> @stack_fold_fmadd321ph_mask(ptr %p, <32 x half> %a1, <32 x half> %a2, i32 %mask) {158; CHECK-LABEL: stack_fold_fmadd321ph_mask:159; CHECK:       # %bb.0:160; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill161; CHECK-NEXT:    #APP162; CHECK-NEXT:    nop163; CHECK-NEXT:    #NO_APP164; CHECK-NEXT:    vmovaps (%rdi), %zmm2165; CHECK-NEXT:    kmovd %esi, %k1166; CHECK-NEXT:    vfmadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload167; CHECK-NEXT:    vmovaps %zmm2, %zmm0168; 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 <32 x half>, ptr %p171  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %a2, <32 x half> %a1, <32 x half> %a0)172  %3 = bitcast i32 %mask to <32 x i1>173  %4 = select <32 x i1> %3, <32 x half> %2, <32 x half> %a0174  ret <32 x half> %4175}176 177define <32 x half> @stack_fold_fmadd132ph_mask(ptr %p, <32 x half> %a1, <32 x half> %a2, i32 %mask) {178; CHECK-LABEL: stack_fold_fmadd132ph_mask:179; CHECK:       # %bb.0:180; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill181; CHECK-NEXT:    #APP182; CHECK-NEXT:    nop183; CHECK-NEXT:    #NO_APP184; CHECK-NEXT:    vmovaps (%rdi), %zmm2185; CHECK-NEXT:    kmovd %esi, %k1186; CHECK-NEXT:    vfmadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload187; CHECK-NEXT:    vmovaps %zmm2, %zmm0188; 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 <32 x half>, ptr %p191  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %a0, <32 x half> %a2, <32 x half> %a1)192  %3 = bitcast i32 %mask to <32 x i1>193  %4 = select <32 x i1> %3, <32 x half> %2, <32 x half> %a0194  ret <32 x half> %4195}196 197define <32 x half> @stack_fold_fmadd312ph_mask(ptr %p, <32 x half> %a1, <32 x half> %a2, i32 %mask) {198; CHECK-LABEL: stack_fold_fmadd312ph_mask:199; CHECK:       # %bb.0:200; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill201; CHECK-NEXT:    #APP202; CHECK-NEXT:    nop203; CHECK-NEXT:    #NO_APP204; CHECK-NEXT:    vmovaps (%rdi), %zmm2205; CHECK-NEXT:    kmovd %esi, %k1206; CHECK-NEXT:    vfmadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload207; CHECK-NEXT:    vmovaps %zmm2, %zmm0208; 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 <32 x half>, ptr %p211  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %a2, <32 x half> %a0, <32 x half> %a1)212  %3 = bitcast i32 %mask to <32 x i1>213  %4 = select <32 x i1> %3, <32 x half> %2, <32 x half> %a0214  ret <32 x half> %4215}216 217define <32 x half> @stack_fold_fmadd123ph_maskz(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, ptr %mask) {218; CHECK-LABEL: stack_fold_fmadd123ph_maskz:219; CHECK:       # %bb.0:220; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill221; CHECK-NEXT:    #APP222; CHECK-NEXT:    nop223; CHECK-NEXT:    #NO_APP224; CHECK-NEXT:    kmovd (%rdi), %k1225; CHECK-NEXT:    vfmadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} {z} # 64-byte Folded Reload226; CHECK-NEXT:    retq227  %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}"()228  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2)229  %3 = load i32, ptr %mask230  %4 = bitcast i32 %3 to <32 x i1>231  %5 = select <32 x i1> %4, <32 x half> %2, <32 x half> zeroinitializer232  ret <32 x half> %5233}234 235define <32 x half> @stack_fold_fmadd213ph_maskz(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, ptr %mask) {236; CHECK-LABEL: stack_fold_fmadd213ph_maskz:237; CHECK:       # %bb.0:238; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill239; CHECK-NEXT:    #APP240; CHECK-NEXT:    nop241; CHECK-NEXT:    #NO_APP242; CHECK-NEXT:    kmovd (%rdi), %k1243; CHECK-NEXT:    vfmadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} {z} # 64-byte Folded Reload244; CHECK-NEXT:    retq245  %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}"()246  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %a1, <32 x half> %a0, <32 x half> %a2)247  %3 = load i32, ptr %mask248  %4 = bitcast i32 %3 to <32 x i1>249  %5 = select <32 x i1> %4, <32 x half> %2, <32 x half> zeroinitializer250  ret <32 x half> %5251}252 253define <32 x half> @stack_fold_fmadd231ph_maskz(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, ptr %mask) {254; CHECK-LABEL: stack_fold_fmadd231ph_maskz:255; CHECK:       # %bb.0:256; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill257; CHECK-NEXT:    #APP258; CHECK-NEXT:    nop259; CHECK-NEXT:    #NO_APP260; CHECK-NEXT:    kmovd (%rdi), %k1261; CHECK-NEXT:    vfmadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} {z} # 64-byte Folded Reload262; CHECK-NEXT:    retq263  %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}"()264  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %a1, <32 x half> %a2, <32 x half> %a0)265  %3 = load i32, ptr %mask266  %4 = bitcast i32 %3 to <32 x i1>267  %5 = select <32 x i1> %4, <32 x half> %2, <32 x half> zeroinitializer268  ret <32 x half> %5269}270 271define <32 x half> @stack_fold_fmadd321ph_maskz(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, ptr %mask) {272; CHECK-LABEL: stack_fold_fmadd321ph_maskz:273; CHECK:       # %bb.0:274; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill275; CHECK-NEXT:    #APP276; CHECK-NEXT:    nop277; CHECK-NEXT:    #NO_APP278; CHECK-NEXT:    kmovd (%rdi), %k1279; CHECK-NEXT:    vfmadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} {z} # 64-byte Folded Reload280; CHECK-NEXT:    retq281  %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}"()282  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %a2, <32 x half> %a1, <32 x half> %a0)283  %3 = load i32, ptr %mask284  %4 = bitcast i32 %3 to <32 x i1>285  %5 = select <32 x i1> %4, <32 x half> %2, <32 x half> zeroinitializer286  ret <32 x half> %5287}288 289define <32 x half> @stack_fold_fmadd132ph_maskz(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, ptr %mask) {290; CHECK-LABEL: stack_fold_fmadd132ph_maskz:291; CHECK:       # %bb.0:292; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill293; CHECK-NEXT:    #APP294; CHECK-NEXT:    nop295; CHECK-NEXT:    #NO_APP296; CHECK-NEXT:    kmovd (%rdi), %k1297; CHECK-NEXT:    vfmadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} {z} # 64-byte Folded Reload298; CHECK-NEXT:    retq299  %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}"()300  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %a0, <32 x half> %a2, <32 x half> %a1)301  %3 = load i32, ptr %mask302  %4 = bitcast i32 %3 to <32 x i1>303  %5 = select <32 x i1> %4, <32 x half> %2, <32 x half> zeroinitializer304  ret <32 x half> %5305}306 307define <32 x half> @stack_fold_fmadd312ph_maskz(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, ptr %mask) {308; CHECK-LABEL: stack_fold_fmadd312ph_maskz:309; CHECK:       # %bb.0:310; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill311; CHECK-NEXT:    #APP312; CHECK-NEXT:    nop313; CHECK-NEXT:    #NO_APP314; CHECK-NEXT:    kmovd (%rdi), %k1315; CHECK-NEXT:    vfmadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} {z} # 64-byte Folded Reload316; CHECK-NEXT:    retq317  %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}"()318  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %a2, <32 x half> %a0, <32 x half> %a1)319  %3 = load i32, ptr %mask320  %4 = bitcast i32 %3 to <32 x i1>321  %5 = select <32 x i1> %4, <32 x half> %2, <32 x half> zeroinitializer322  ret <32 x half> %5323}324 325define <32 x half> @stack_fold_fmsub123ph(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2) {326; CHECK-LABEL: stack_fold_fmsub123ph:327; CHECK:       # %bb.0:328; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill329; CHECK-NEXT:    #APP330; CHECK-NEXT:    nop331; CHECK-NEXT:    #NO_APP332; CHECK-NEXT:    vfmsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload333; CHECK-NEXT:    retq334  %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}"()335  %2 = fneg <32 x half> %a2336  %3 = call <32 x half> @llvm.fma.v32f16(<32 x half> %a0, <32 x half> %a1, <32 x half> %2)337  ret <32 x half> %3338}339 340define <32 x half> @stack_fold_fmsub213ph(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2) {341; CHECK-LABEL: stack_fold_fmsub213ph:342; CHECK:       # %bb.0:343; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill344; CHECK-NEXT:    #APP345; CHECK-NEXT:    nop346; CHECK-NEXT:    #NO_APP347; CHECK-NEXT:    vfmsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload348; CHECK-NEXT:    retq349  %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}"()350  %2 = fneg <32 x half> %a2351  %3 = call <32 x half> @llvm.fma.v32f16(<32 x half> %a1, <32 x half> %a0, <32 x half> %2)352  ret <32 x half> %3353}354 355define <32 x half> @stack_fold_fmsub231ph(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2) {356; CHECK-LABEL: stack_fold_fmsub231ph:357; CHECK:       # %bb.0:358; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill359; CHECK-NEXT:    #APP360; CHECK-NEXT:    nop361; CHECK-NEXT:    #NO_APP362; CHECK-NEXT:    vfmsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload363; CHECK-NEXT:    retq364  %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}"()365  %2 = fneg <32 x half> %a0366  %3 = call <32 x half> @llvm.fma.v32f16(<32 x half> %a1, <32 x half> %a2, <32 x half> %2)367  ret <32 x half> %3368}369 370define <32 x half> @stack_fold_fmsub321ph(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2) {371; CHECK-LABEL: stack_fold_fmsub321ph:372; CHECK:       # %bb.0:373; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill374; CHECK-NEXT:    #APP375; CHECK-NEXT:    nop376; CHECK-NEXT:    #NO_APP377; CHECK-NEXT:    vfmsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload378; CHECK-NEXT:    retq379  %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}"()380  %2 = fneg <32 x half> %a0381  %3 = call <32 x half> @llvm.fma.v32f16(<32 x half> %a2, <32 x half> %a1, <32 x half> %2)382  ret <32 x half> %3383}384 385define <32 x half> @stack_fold_fmsub132ph(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2) {386; CHECK-LABEL: stack_fold_fmsub132ph:387; CHECK:       # %bb.0:388; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill389; CHECK-NEXT:    #APP390; CHECK-NEXT:    nop391; CHECK-NEXT:    #NO_APP392; CHECK-NEXT:    vfmsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload393; CHECK-NEXT:    retq394  %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}"()395  %2 = fneg <32 x half> %a1396  %3 = call <32 x half> @llvm.fma.v32f16(<32 x half> %a0, <32 x half> %a2, <32 x half> %2)397  ret <32 x half> %3398}399 400define <32 x half> @stack_fold_fmsub312ph(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2) {401; CHECK-LABEL: stack_fold_fmsub312ph:402; CHECK:       # %bb.0:403; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill404; CHECK-NEXT:    #APP405; CHECK-NEXT:    nop406; CHECK-NEXT:    #NO_APP407; CHECK-NEXT:    vfmsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload408; CHECK-NEXT:    retq409  %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}"()410  %2 = fneg <32 x half> %a1411  %3 = call <32 x half> @llvm.fma.v32f16(<32 x half> %a2, <32 x half> %a0, <32 x half> %2)412  ret <32 x half> %3413}414 415define <32 x half> @stack_fold_fmsub123ph_mask(ptr %p, <32 x half> %a1, <32 x half> %a2, i32 %mask) {416; CHECK-LABEL: stack_fold_fmsub123ph_mask:417; CHECK:       # %bb.0:418; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill419; CHECK-NEXT:    #APP420; CHECK-NEXT:    nop421; CHECK-NEXT:    #NO_APP422; CHECK-NEXT:    vmovaps (%rdi), %zmm2423; CHECK-NEXT:    kmovd %esi, %k1424; CHECK-NEXT:    vfmsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload425; CHECK-NEXT:    vmovaps %zmm2, %zmm0426; CHECK-NEXT:    retq427  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()428  %a0 = load <32 x half>, ptr %p429  %neg = fneg <32 x half> %a2430  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %a0, <32 x half> %a1, <32 x half> %neg)431  %3 = bitcast i32 %mask to <32 x i1>432  %4 = select <32 x i1> %3, <32 x half> %2, <32 x half> %a0433  ret <32 x half> %4434}435 436define <32 x half> @stack_fold_fmsub213ph_mask(ptr %p, <32 x half> %a1, <32 x half> %a2, i32 %mask) {437; CHECK-LABEL: stack_fold_fmsub213ph_mask:438; CHECK:       # %bb.0:439; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill440; CHECK-NEXT:    #APP441; CHECK-NEXT:    nop442; CHECK-NEXT:    #NO_APP443; CHECK-NEXT:    vmovaps (%rdi), %zmm2444; CHECK-NEXT:    kmovd %esi, %k1445; CHECK-NEXT:    vfmsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload446; CHECK-NEXT:    vmovaps %zmm2, %zmm0447; CHECK-NEXT:    retq448  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()449  %a0 = load <32 x half>, ptr %p450  %neg = fneg <32 x half> %a2451  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %a1, <32 x half> %a0, <32 x half> %neg)452  %3 = bitcast i32 %mask to <32 x i1>453  %4 = select <32 x i1> %3, <32 x half> %2, <32 x half> %a0454  ret <32 x half> %4455}456 457define <32 x half> @stack_fold_fmsub231ph_mask(ptr %p, <32 x half> %a1, <32 x half> %a2, i32 %mask) {458; CHECK-LABEL: stack_fold_fmsub231ph_mask:459; CHECK:       # %bb.0:460; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill461; CHECK-NEXT:    #APP462; CHECK-NEXT:    nop463; CHECK-NEXT:    #NO_APP464; CHECK-NEXT:    vmovaps (%rdi), %zmm2465; CHECK-NEXT:    kmovd %esi, %k1466; CHECK-NEXT:    vfmsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload467; CHECK-NEXT:    vmovaps %zmm2, %zmm0468; CHECK-NEXT:    retq469  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()470  %a0 = load <32 x half>, ptr %p471  %neg = fneg <32 x half> %a0472  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %a1, <32 x half> %a2, <32 x half> %neg)473  %3 = bitcast i32 %mask to <32 x i1>474  %4 = select <32 x i1> %3, <32 x half> %2, <32 x half> %a0475  ret <32 x half> %4476}477 478define <32 x half> @stack_fold_fmsub321ph_mask(ptr %p, <32 x half> %a1, <32 x half> %a2, i32 %mask) {479; CHECK-LABEL: stack_fold_fmsub321ph_mask:480; CHECK:       # %bb.0:481; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill482; CHECK-NEXT:    #APP483; CHECK-NEXT:    nop484; CHECK-NEXT:    #NO_APP485; CHECK-NEXT:    vmovaps (%rdi), %zmm2486; CHECK-NEXT:    kmovd %esi, %k1487; CHECK-NEXT:    vfmsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload488; CHECK-NEXT:    vmovaps %zmm2, %zmm0489; CHECK-NEXT:    retq490  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()491  %a0 = load <32 x half>, ptr %p492  %neg = fneg <32 x half> %a0493  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %a2, <32 x half> %a1, <32 x half> %neg)494  %3 = bitcast i32 %mask to <32 x i1>495  %4 = select <32 x i1> %3, <32 x half> %2, <32 x half> %a0496  ret <32 x half> %4497}498 499define <32 x half> @stack_fold_fmsub132ph_mask(ptr %p, <32 x half> %a1, <32 x half> %a2, i32 %mask) {500; CHECK-LABEL: stack_fold_fmsub132ph_mask:501; CHECK:       # %bb.0:502; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill503; CHECK-NEXT:    #APP504; CHECK-NEXT:    nop505; CHECK-NEXT:    #NO_APP506; CHECK-NEXT:    vmovaps (%rdi), %zmm2507; CHECK-NEXT:    kmovd %esi, %k1508; CHECK-NEXT:    vfmsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload509; CHECK-NEXT:    vmovaps %zmm2, %zmm0510; CHECK-NEXT:    retq511  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()512  %a0 = load <32 x half>, ptr %p513  %neg = fneg <32 x half> %a1514  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %a0, <32 x half> %a2, <32 x half> %neg)515  %3 = bitcast i32 %mask to <32 x i1>516  %4 = select <32 x i1> %3, <32 x half> %2, <32 x half> %a0517  ret <32 x half> %4518}519 520define <32 x half> @stack_fold_fmsub312ph_mask(ptr %p, <32 x half> %a1, <32 x half> %a2, i32 %mask) {521; CHECK-LABEL: stack_fold_fmsub312ph_mask:522; CHECK:       # %bb.0:523; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill524; CHECK-NEXT:    #APP525; CHECK-NEXT:    nop526; CHECK-NEXT:    #NO_APP527; CHECK-NEXT:    vmovaps (%rdi), %zmm2528; CHECK-NEXT:    kmovd %esi, %k1529; CHECK-NEXT:    vfmsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload530; CHECK-NEXT:    vmovaps %zmm2, %zmm0531; CHECK-NEXT:    retq532  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()533  %a0 = load <32 x half>, ptr %p534  %neg = fneg <32 x half> %a1535  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %a2, <32 x half> %a0, <32 x half> %neg)536  %3 = bitcast i32 %mask to <32 x i1>537  %4 = select <32 x i1> %3, <32 x half> %2, <32 x half> %a0538  ret <32 x half> %4539}540 541define <32 x half> @stack_fold_fmsub123ph_maskz(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, ptr %mask) {542; CHECK-LABEL: stack_fold_fmsub123ph_maskz:543; CHECK:       # %bb.0:544; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill545; CHECK-NEXT:    #APP546; CHECK-NEXT:    nop547; CHECK-NEXT:    #NO_APP548; CHECK-NEXT:    kmovd (%rdi), %k1549; CHECK-NEXT:    vfmsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} {z} # 64-byte Folded Reload550; CHECK-NEXT:    retq551  %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}"()552  %neg = fneg <32 x half> %a2553  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %a0, <32 x half> %a1, <32 x half> %neg)554  %3 = load i32, ptr %mask555  %4 = bitcast i32 %3 to <32 x i1>556  %5 = select <32 x i1> %4, <32 x half> %2, <32 x half> zeroinitializer557  ret <32 x half> %5558}559 560define <32 x half> @stack_fold_fmsub213ph_maskz(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, ptr %mask) {561; CHECK-LABEL: stack_fold_fmsub213ph_maskz:562; CHECK:       # %bb.0:563; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill564; CHECK-NEXT:    #APP565; CHECK-NEXT:    nop566; CHECK-NEXT:    #NO_APP567; CHECK-NEXT:    kmovd (%rdi), %k1568; CHECK-NEXT:    vfmsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} {z} # 64-byte Folded Reload569; CHECK-NEXT:    retq570  %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}"()571  %neg = fneg <32 x half> %a2572  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %a1, <32 x half> %a0, <32 x half> %neg)573  %3 = load i32, ptr %mask574  %4 = bitcast i32 %3 to <32 x i1>575  %5 = select <32 x i1> %4, <32 x half> %2, <32 x half> zeroinitializer576  ret <32 x half> %5577}578 579define <32 x half> @stack_fold_fmsub231ph_maskz(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, ptr %mask) {580; CHECK-LABEL: stack_fold_fmsub231ph_maskz:581; CHECK:       # %bb.0:582; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill583; CHECK-NEXT:    #APP584; CHECK-NEXT:    nop585; CHECK-NEXT:    #NO_APP586; CHECK-NEXT:    kmovd (%rdi), %k1587; CHECK-NEXT:    vfmsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} {z} # 64-byte Folded Reload588; CHECK-NEXT:    retq589  %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}"()590  %neg = fneg <32 x half> %a0591  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %a1, <32 x half> %a2, <32 x half> %neg)592  %3 = load i32, ptr %mask593  %4 = bitcast i32 %3 to <32 x i1>594  %5 = select <32 x i1> %4, <32 x half> %2, <32 x half> zeroinitializer595  ret <32 x half> %5596}597 598define <32 x half> @stack_fold_fmsub321ph_maskz(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, ptr %mask) {599; CHECK-LABEL: stack_fold_fmsub321ph_maskz:600; CHECK:       # %bb.0:601; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill602; CHECK-NEXT:    #APP603; CHECK-NEXT:    nop604; CHECK-NEXT:    #NO_APP605; CHECK-NEXT:    kmovd (%rdi), %k1606; CHECK-NEXT:    vfmsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} {z} # 64-byte Folded Reload607; CHECK-NEXT:    retq608  %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}"()609  %neg = fneg <32 x half> %a0610  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %a2, <32 x half> %a1, <32 x half> %neg)611  %3 = load i32, ptr %mask612  %4 = bitcast i32 %3 to <32 x i1>613  %5 = select <32 x i1> %4, <32 x half> %2, <32 x half> zeroinitializer614  ret <32 x half> %5615}616 617define <32 x half> @stack_fold_fmsub132ph_maskz(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, ptr %mask) {618; CHECK-LABEL: stack_fold_fmsub132ph_maskz:619; CHECK:       # %bb.0:620; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill621; CHECK-NEXT:    #APP622; CHECK-NEXT:    nop623; CHECK-NEXT:    #NO_APP624; CHECK-NEXT:    kmovd (%rdi), %k1625; CHECK-NEXT:    vfmsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} {z} # 64-byte Folded Reload626; CHECK-NEXT:    retq627  %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}"()628  %neg = fneg <32 x half> %a1629  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %a0, <32 x half> %a2, <32 x half> %neg)630  %3 = load i32, ptr %mask631  %4 = bitcast i32 %3 to <32 x i1>632  %5 = select <32 x i1> %4, <32 x half> %2, <32 x half> zeroinitializer633  ret <32 x half> %5634}635 636define <32 x half> @stack_fold_fmsub312ph_maskz(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, ptr %mask) {637; CHECK-LABEL: stack_fold_fmsub312ph_maskz:638; CHECK:       # %bb.0:639; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill640; CHECK-NEXT:    #APP641; CHECK-NEXT:    nop642; CHECK-NEXT:    #NO_APP643; CHECK-NEXT:    kmovd (%rdi), %k1644; CHECK-NEXT:    vfmsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} {z} # 64-byte Folded Reload645; CHECK-NEXT:    retq646  %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}"()647  %neg = fneg <32 x half> %a1648  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %a2, <32 x half> %a0, <32 x half> %neg)649  %3 = load i32, ptr %mask650  %4 = bitcast i32 %3 to <32 x i1>651  %5 = select <32 x i1> %4, <32 x half> %2, <32 x half> zeroinitializer652  ret <32 x half> %5653}654 655define <32 x half> @stack_fold_fnmadd123ph(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2) {656; CHECK-LABEL: stack_fold_fnmadd123ph:657; CHECK:       # %bb.0:658; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill659; CHECK-NEXT:    #APP660; CHECK-NEXT:    nop661; CHECK-NEXT:    #NO_APP662; CHECK-NEXT:    vfnmadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload663; CHECK-NEXT:    retq664  %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}"()665  %2 = fneg <32 x half> %a0666  %3 = call <32 x half> @llvm.fma.v32f16(<32 x half> %2, <32 x half> %a1, <32 x half> %a2)667  ret <32 x half> %3668}669 670define <32 x half> @stack_fold_fnmadd213ph(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2) {671; CHECK-LABEL: stack_fold_fnmadd213ph:672; CHECK:       # %bb.0:673; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill674; CHECK-NEXT:    #APP675; CHECK-NEXT:    nop676; CHECK-NEXT:    #NO_APP677; CHECK-NEXT:    vfnmadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload678; CHECK-NEXT:    retq679  %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}"()680  %2 = fneg <32 x half> %a1681  %3 = call <32 x half> @llvm.fma.v32f16(<32 x half> %2, <32 x half> %a0, <32 x half> %a2)682  ret <32 x half> %3683}684 685define <32 x half> @stack_fold_fnmadd231ph(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2) {686; CHECK-LABEL: stack_fold_fnmadd231ph:687; CHECK:       # %bb.0:688; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill689; CHECK-NEXT:    #APP690; CHECK-NEXT:    nop691; CHECK-NEXT:    #NO_APP692; CHECK-NEXT:    vfnmadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload693; CHECK-NEXT:    retq694  %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}"()695  %2 = fneg <32 x half> %a1696  %3 = call <32 x half> @llvm.fma.v32f16(<32 x half> %2, <32 x half> %a2, <32 x half> %a0)697  ret <32 x half> %3698}699 700define <32 x half> @stack_fold_fnmadd321ph(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2) {701; CHECK-LABEL: stack_fold_fnmadd321ph:702; CHECK:       # %bb.0:703; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill704; CHECK-NEXT:    #APP705; CHECK-NEXT:    nop706; CHECK-NEXT:    #NO_APP707; CHECK-NEXT:    vfnmadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload708; CHECK-NEXT:    retq709  %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}"()710  %2 = fneg <32 x half> %a2711  %3 = call <32 x half> @llvm.fma.v32f16(<32 x half> %2, <32 x half> %a1, <32 x half> %a0)712  ret <32 x half> %3713}714 715define <32 x half> @stack_fold_fnmadd132ph(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2) {716; CHECK-LABEL: stack_fold_fnmadd132ph:717; CHECK:       # %bb.0:718; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill719; CHECK-NEXT:    #APP720; CHECK-NEXT:    nop721; CHECK-NEXT:    #NO_APP722; CHECK-NEXT:    vfnmadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload723; CHECK-NEXT:    retq724  %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}"()725  %2 = fneg <32 x half> %a0726  %3 = call <32 x half> @llvm.fma.v32f16(<32 x half> %2, <32 x half> %a2, <32 x half> %a1)727  ret <32 x half> %3728}729 730define <32 x half> @stack_fold_fnmadd312ph(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2) {731; CHECK-LABEL: stack_fold_fnmadd312ph:732; CHECK:       # %bb.0:733; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill734; CHECK-NEXT:    #APP735; CHECK-NEXT:    nop736; CHECK-NEXT:    #NO_APP737; CHECK-NEXT:    vfnmadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload738; CHECK-NEXT:    retq739  %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}"()740  %2 = fneg <32 x half> %a2741  %3 = call <32 x half> @llvm.fma.v32f16(<32 x half> %2, <32 x half> %a0, <32 x half> %a1)742  ret <32 x half> %3743}744 745define <32 x half> @stack_fold_fnmadd123ph_mask(ptr %p, <32 x half> %a1, <32 x half> %a2, i32 %mask) {746; CHECK-LABEL: stack_fold_fnmadd123ph_mask:747; CHECK:       # %bb.0:748; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill749; CHECK-NEXT:    #APP750; CHECK-NEXT:    nop751; CHECK-NEXT:    #NO_APP752; CHECK-NEXT:    vmovaps (%rdi), %zmm2753; CHECK-NEXT:    kmovd %esi, %k1754; CHECK-NEXT:    vfnmadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload755; CHECK-NEXT:    vmovaps %zmm2, %zmm0756; CHECK-NEXT:    retq757  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()758  %a0 = load <32 x half>, ptr %p759  %neg = fneg <32 x half> %a0760  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %neg, <32 x half> %a1, <32 x half> %a2)761  %3 = bitcast i32 %mask to <32 x i1>762  %4 = select <32 x i1> %3, <32 x half> %2, <32 x half> %a0763  ret <32 x half> %4764}765 766define <32 x half> @stack_fold_fnmadd213ph_mask(ptr %p, <32 x half> %a1, <32 x half> %a2, i32 %mask) {767; CHECK-LABEL: stack_fold_fnmadd213ph_mask:768; CHECK:       # %bb.0:769; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill770; CHECK-NEXT:    #APP771; CHECK-NEXT:    nop772; CHECK-NEXT:    #NO_APP773; CHECK-NEXT:    vmovaps (%rdi), %zmm2774; CHECK-NEXT:    kmovd %esi, %k1775; CHECK-NEXT:    vfnmadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload776; CHECK-NEXT:    vmovaps %zmm2, %zmm0777; CHECK-NEXT:    retq778  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()779  %a0 = load <32 x half>, ptr %p780  %neg = fneg <32 x half> %a1781  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %neg, <32 x half> %a0, <32 x half> %a2)782  %3 = bitcast i32 %mask to <32 x i1>783  %4 = select <32 x i1> %3, <32 x half> %2, <32 x half> %a0784  ret <32 x half> %4785}786 787define <32 x half> @stack_fold_fnmadd231ph_mask(ptr %p, <32 x half> %a1, <32 x half> %a2, i32 %mask) {788; CHECK-LABEL: stack_fold_fnmadd231ph_mask:789; CHECK:       # %bb.0:790; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill791; CHECK-NEXT:    #APP792; CHECK-NEXT:    nop793; CHECK-NEXT:    #NO_APP794; CHECK-NEXT:    vmovaps (%rdi), %zmm2795; CHECK-NEXT:    kmovd %esi, %k1796; CHECK-NEXT:    vfnmadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload797; CHECK-NEXT:    vmovaps %zmm2, %zmm0798; CHECK-NEXT:    retq799  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()800  %a0 = load <32 x half>, ptr %p801  %neg = fneg <32 x half> %a1802  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %neg, <32 x half> %a2, <32 x half> %a0)803  %3 = bitcast i32 %mask to <32 x i1>804  %4 = select <32 x i1> %3, <32 x half> %2, <32 x half> %a0805  ret <32 x half> %4806}807 808define <32 x half> @stack_fold_fnmadd321ph_mask(ptr %p, <32 x half> %a1, <32 x half> %a2, i32 %mask) {809; CHECK-LABEL: stack_fold_fnmadd321ph_mask:810; CHECK:       # %bb.0:811; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill812; CHECK-NEXT:    #APP813; CHECK-NEXT:    nop814; CHECK-NEXT:    #NO_APP815; CHECK-NEXT:    vmovaps (%rdi), %zmm2816; CHECK-NEXT:    kmovd %esi, %k1817; CHECK-NEXT:    vfnmadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload818; CHECK-NEXT:    vmovaps %zmm2, %zmm0819; CHECK-NEXT:    retq820  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()821  %a0 = load <32 x half>, ptr %p822  %neg = fneg <32 x half> %a2823  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %neg, <32 x half> %a1, <32 x half> %a0)824  %3 = bitcast i32 %mask to <32 x i1>825  %4 = select <32 x i1> %3, <32 x half> %2, <32 x half> %a0826  ret <32 x half> %4827}828 829define <32 x half> @stack_fold_fnmadd132ph_mask(ptr %p, <32 x half> %a1, <32 x half> %a2, i32 %mask) {830; CHECK-LABEL: stack_fold_fnmadd132ph_mask:831; CHECK:       # %bb.0:832; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill833; CHECK-NEXT:    #APP834; CHECK-NEXT:    nop835; CHECK-NEXT:    #NO_APP836; CHECK-NEXT:    vmovaps (%rdi), %zmm2837; CHECK-NEXT:    kmovd %esi, %k1838; CHECK-NEXT:    vfnmadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload839; CHECK-NEXT:    vmovaps %zmm2, %zmm0840; CHECK-NEXT:    retq841  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()842  %a0 = load <32 x half>, ptr %p843  %neg = fneg <32 x half> %a0844  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %neg, <32 x half> %a2, <32 x half> %a1)845  %3 = bitcast i32 %mask to <32 x i1>846  %4 = select <32 x i1> %3, <32 x half> %2, <32 x half> %a0847  ret <32 x half> %4848}849 850define <32 x half> @stack_fold_fnmadd312ph_mask(ptr %p, <32 x half> %a1, <32 x half> %a2, i32 %mask) {851; CHECK-LABEL: stack_fold_fnmadd312ph_mask:852; CHECK:       # %bb.0:853; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill854; CHECK-NEXT:    #APP855; CHECK-NEXT:    nop856; CHECK-NEXT:    #NO_APP857; CHECK-NEXT:    vmovaps (%rdi), %zmm2858; CHECK-NEXT:    kmovd %esi, %k1859; CHECK-NEXT:    vfnmadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload860; CHECK-NEXT:    vmovaps %zmm2, %zmm0861; CHECK-NEXT:    retq862  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()863  %a0 = load <32 x half>, ptr %p864  %neg = fneg <32 x half> %a2865  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %neg, <32 x half> %a0, <32 x half> %a1)866  %3 = bitcast i32 %mask to <32 x i1>867  %4 = select <32 x i1> %3, <32 x half> %2, <32 x half> %a0868  ret <32 x half> %4869}870 871define <32 x half> @stack_fold_fnmadd123ph_maskz(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, ptr %mask) {872; CHECK-LABEL: stack_fold_fnmadd123ph_maskz:873; CHECK:       # %bb.0:874; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill875; CHECK-NEXT:    #APP876; CHECK-NEXT:    nop877; CHECK-NEXT:    #NO_APP878; CHECK-NEXT:    kmovd (%rdi), %k1879; CHECK-NEXT:    vfnmadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} {z} # 64-byte Folded Reload880; CHECK-NEXT:    retq881  %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}"()882  %neg = fneg <32 x half> %a0883  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %neg, <32 x half> %a1, <32 x half> %a2)884  %3 = load i32, ptr %mask885  %4 = bitcast i32 %3 to <32 x i1>886  %5 = select <32 x i1> %4, <32 x half> %2, <32 x half> zeroinitializer887  ret <32 x half> %5888}889 890define <32 x half> @stack_fold_fnmadd213ph_maskz(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, ptr %mask) {891; CHECK-LABEL: stack_fold_fnmadd213ph_maskz:892; CHECK:       # %bb.0:893; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill894; CHECK-NEXT:    #APP895; CHECK-NEXT:    nop896; CHECK-NEXT:    #NO_APP897; CHECK-NEXT:    kmovd (%rdi), %k1898; CHECK-NEXT:    vfnmadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} {z} # 64-byte Folded Reload899; CHECK-NEXT:    retq900  %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}"()901  %neg = fneg <32 x half> %a1902  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %neg, <32 x half> %a0, <32 x half> %a2)903  %3 = load i32, ptr %mask904  %4 = bitcast i32 %3 to <32 x i1>905  %5 = select <32 x i1> %4, <32 x half> %2, <32 x half> zeroinitializer906  ret <32 x half> %5907}908 909define <32 x half> @stack_fold_fnmadd231ph_maskz(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, ptr %mask) {910; CHECK-LABEL: stack_fold_fnmadd231ph_maskz:911; CHECK:       # %bb.0:912; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill913; CHECK-NEXT:    #APP914; CHECK-NEXT:    nop915; CHECK-NEXT:    #NO_APP916; CHECK-NEXT:    kmovd (%rdi), %k1917; CHECK-NEXT:    vfnmadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} {z} # 64-byte Folded Reload918; CHECK-NEXT:    retq919  %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}"()920  %neg = fneg <32 x half> %a1921  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %neg, <32 x half> %a2, <32 x half> %a0)922  %3 = load i32, ptr %mask923  %4 = bitcast i32 %3 to <32 x i1>924  %5 = select <32 x i1> %4, <32 x half> %2, <32 x half> zeroinitializer925  ret <32 x half> %5926}927 928define <32 x half> @stack_fold_fnmadd321ph_maskz(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, ptr %mask) {929; CHECK-LABEL: stack_fold_fnmadd321ph_maskz:930; CHECK:       # %bb.0:931; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill932; CHECK-NEXT:    #APP933; CHECK-NEXT:    nop934; CHECK-NEXT:    #NO_APP935; CHECK-NEXT:    kmovd (%rdi), %k1936; CHECK-NEXT:    vfnmadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} {z} # 64-byte Folded Reload937; CHECK-NEXT:    retq938  %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}"()939  %neg = fneg <32 x half> %a2940  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %neg, <32 x half> %a1, <32 x half> %a0)941  %3 = load i32, ptr %mask942  %4 = bitcast i32 %3 to <32 x i1>943  %5 = select <32 x i1> %4, <32 x half> %2, <32 x half> zeroinitializer944  ret <32 x half> %5945}946 947define <32 x half> @stack_fold_fnmadd132ph_maskz(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, ptr %mask) {948; CHECK-LABEL: stack_fold_fnmadd132ph_maskz:949; CHECK:       # %bb.0:950; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill951; CHECK-NEXT:    #APP952; CHECK-NEXT:    nop953; CHECK-NEXT:    #NO_APP954; CHECK-NEXT:    kmovd (%rdi), %k1955; CHECK-NEXT:    vfnmadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} {z} # 64-byte Folded Reload956; CHECK-NEXT:    retq957  %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}"()958  %neg = fneg <32 x half> %a0959  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %neg, <32 x half> %a2, <32 x half> %a1)960  %3 = load i32, ptr %mask961  %4 = bitcast i32 %3 to <32 x i1>962  %5 = select <32 x i1> %4, <32 x half> %2, <32 x half> zeroinitializer963  ret <32 x half> %5964}965 966define <32 x half> @stack_fold_fnmadd312ph_maskz(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, ptr %mask) {967; CHECK-LABEL: stack_fold_fnmadd312ph_maskz:968; CHECK:       # %bb.0:969; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill970; CHECK-NEXT:    #APP971; CHECK-NEXT:    nop972; CHECK-NEXT:    #NO_APP973; CHECK-NEXT:    kmovd (%rdi), %k1974; CHECK-NEXT:    vfnmadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} {z} # 64-byte Folded Reload975; CHECK-NEXT:    retq976  %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}"()977  %neg = fneg <32 x half> %a2978  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %neg, <32 x half> %a0, <32 x half> %a1)979  %3 = load i32, ptr %mask980  %4 = bitcast i32 %3 to <32 x i1>981  %5 = select <32 x i1> %4, <32 x half> %2, <32 x half> zeroinitializer982  ret <32 x half> %5983}984 985define <32 x half> @stack_fold_fnmsub123ph(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2) {986; CHECK-LABEL: stack_fold_fnmsub123ph:987; CHECK:       # %bb.0:988; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill989; CHECK-NEXT:    #APP990; CHECK-NEXT:    nop991; CHECK-NEXT:    #NO_APP992; CHECK-NEXT:    vfnmsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-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  %2 = fneg <32 x half> %a0996  %3 = fneg <32 x half> %a2997  %4 = call <32 x half> @llvm.fma.v32f16(<32 x half> %2, <32 x half> %a1, <32 x half> %3)998  ret <32 x half> %4999}1000 1001define <32 x half> @stack_fold_fnmsub213ph(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2) {1002; CHECK-LABEL: stack_fold_fnmsub213ph:1003; CHECK:       # %bb.0:1004; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1005; CHECK-NEXT:    #APP1006; CHECK-NEXT:    nop1007; CHECK-NEXT:    #NO_APP1008; CHECK-NEXT:    vfnmsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload1009; CHECK-NEXT:    retq1010  %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}"()1011  %2 = fneg <32 x half> %a11012  %3 = fneg <32 x half> %a21013  %4 = call <32 x half> @llvm.fma.v32f16(<32 x half> %2, <32 x half> %a0, <32 x half> %3)1014  ret <32 x half> %41015}1016 1017define <32 x half> @stack_fold_fnmsub231ph(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2) {1018; CHECK-LABEL: stack_fold_fnmsub231ph:1019; CHECK:       # %bb.0:1020; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1021; CHECK-NEXT:    #APP1022; CHECK-NEXT:    nop1023; CHECK-NEXT:    #NO_APP1024; CHECK-NEXT:    vfnmsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload1025; CHECK-NEXT:    retq1026  %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}"()1027  %2 = fneg <32 x half> %a11028  %3 = fneg <32 x half> %a01029  %4 = call <32 x half> @llvm.fma.v32f16(<32 x half> %2, <32 x half> %a2, <32 x half> %3)1030  ret <32 x half> %41031}1032 1033define <32 x half> @stack_fold_fnmsub321ph(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2) {1034; CHECK-LABEL: stack_fold_fnmsub321ph:1035; CHECK:       # %bb.0:1036; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1037; CHECK-NEXT:    #APP1038; CHECK-NEXT:    nop1039; CHECK-NEXT:    #NO_APP1040; CHECK-NEXT:    vfnmsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload1041; CHECK-NEXT:    retq1042  %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}"()1043  %2 = fneg <32 x half> %a21044  %3 = fneg <32 x half> %a01045  %4 = call <32 x half> @llvm.fma.v32f16(<32 x half> %2, <32 x half> %a1, <32 x half> %3)1046  ret <32 x half> %41047}1048 1049define <32 x half> @stack_fold_fnmsub132ph(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2) {1050; CHECK-LABEL: stack_fold_fnmsub132ph:1051; CHECK:       # %bb.0:1052; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1053; CHECK-NEXT:    #APP1054; CHECK-NEXT:    nop1055; CHECK-NEXT:    #NO_APP1056; CHECK-NEXT:    vfnmsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload1057; CHECK-NEXT:    retq1058  %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}"()1059  %2 = fneg <32 x half> %a01060  %3 = fneg <32 x half> %a11061  %4 = call <32 x half> @llvm.fma.v32f16(<32 x half> %2, <32 x half> %a2, <32 x half> %3)1062  ret <32 x half> %41063}1064 1065define <32 x half> @stack_fold_fnmsub312ph(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2) {1066; CHECK-LABEL: stack_fold_fnmsub312ph:1067; CHECK:       # %bb.0:1068; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1069; CHECK-NEXT:    #APP1070; CHECK-NEXT:    nop1071; CHECK-NEXT:    #NO_APP1072; CHECK-NEXT:    vfnmsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload1073; CHECK-NEXT:    retq1074  %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}"()1075  %2 = fneg <32 x half> %a21076  %3 = fneg <32 x half> %a11077  %4 = call <32 x half> @llvm.fma.v32f16(<32 x half> %2, <32 x half> %a0, <32 x half> %3)1078  ret <32 x half> %41079}1080 1081define <32 x half> @stack_fold_fnmsub123ph_mask(ptr %p, <32 x half> %a1, <32 x half> %a2, i32 %mask) {1082; CHECK-LABEL: stack_fold_fnmsub123ph_mask:1083; CHECK:       # %bb.0:1084; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1085; CHECK-NEXT:    #APP1086; CHECK-NEXT:    nop1087; CHECK-NEXT:    #NO_APP1088; CHECK-NEXT:    vmovaps (%rdi), %zmm21089; CHECK-NEXT:    kmovd %esi, %k11090; CHECK-NEXT:    vfnmsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload1091; CHECK-NEXT:    vmovaps %zmm2, %zmm01092; CHECK-NEXT:    retq1093  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1094  %a0 = load <32 x half>, ptr %p1095  %neg = fneg <32 x half> %a21096  %neg1 = fneg <32 x half> %a01097  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %neg1, <32 x half> %a1, <32 x half> %neg)1098  %3 = bitcast i32 %mask to <32 x i1>1099  %4 = select <32 x i1> %3, <32 x half> %2, <32 x half> %a01100  ret <32 x half> %41101}1102 1103define <32 x half> @stack_fold_fnmsub213ph_mask(ptr %p, <32 x half> %a1, <32 x half> %a2, i32 %mask) {1104; CHECK-LABEL: stack_fold_fnmsub213ph_mask:1105; CHECK:       # %bb.0:1106; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1107; CHECK-NEXT:    #APP1108; CHECK-NEXT:    nop1109; CHECK-NEXT:    #NO_APP1110; CHECK-NEXT:    vmovaps (%rdi), %zmm21111; CHECK-NEXT:    kmovd %esi, %k11112; CHECK-NEXT:    vfnmsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload1113; CHECK-NEXT:    vmovaps %zmm2, %zmm01114; CHECK-NEXT:    retq1115  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1116  %a0 = load <32 x half>, ptr %p1117  %neg = fneg <32 x half> %a21118  %neg1 = fneg <32 x half> %a11119  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %neg1, <32 x half> %a0, <32 x half> %neg)1120  %3 = bitcast i32 %mask to <32 x i1>1121  %4 = select <32 x i1> %3, <32 x half> %2, <32 x half> %a01122  ret <32 x half> %41123}1124 1125define <32 x half> @stack_fold_fnmsub231ph_mask(ptr %p, <32 x half> %a1, <32 x half> %a2, i32 %mask) {1126; CHECK-LABEL: stack_fold_fnmsub231ph_mask:1127; CHECK:       # %bb.0:1128; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1129; CHECK-NEXT:    #APP1130; CHECK-NEXT:    nop1131; CHECK-NEXT:    #NO_APP1132; CHECK-NEXT:    vmovaps (%rdi), %zmm21133; CHECK-NEXT:    kmovd %esi, %k11134; CHECK-NEXT:    vfnmsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload1135; CHECK-NEXT:    vmovaps %zmm2, %zmm01136; CHECK-NEXT:    retq1137  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1138  %a0 = load <32 x half>, ptr %p1139  %neg = fneg <32 x half> %a01140  %neg1 = fneg <32 x half> %a11141  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %neg1, <32 x half> %a2, <32 x half> %neg)1142  %3 = bitcast i32 %mask to <32 x i1>1143  %4 = select <32 x i1> %3, <32 x half> %2, <32 x half> %a01144  ret <32 x half> %41145}1146 1147define <32 x half> @stack_fold_fnmsub321ph_mask(ptr %p, <32 x half> %a1, <32 x half> %a2, i32 %mask) {1148; CHECK-LABEL: stack_fold_fnmsub321ph_mask:1149; CHECK:       # %bb.0:1150; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1151; CHECK-NEXT:    #APP1152; CHECK-NEXT:    nop1153; CHECK-NEXT:    #NO_APP1154; CHECK-NEXT:    vmovaps (%rdi), %zmm21155; CHECK-NEXT:    kmovd %esi, %k11156; CHECK-NEXT:    vfnmsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload1157; CHECK-NEXT:    vmovaps %zmm2, %zmm01158; CHECK-NEXT:    retq1159  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1160  %a0 = load <32 x half>, ptr %p1161  %neg = fneg <32 x half> %a01162  %neg1 = fneg <32 x half> %a21163  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %neg1, <32 x half> %a1, <32 x half> %neg)1164  %3 = bitcast i32 %mask to <32 x i1>1165  %4 = select <32 x i1> %3, <32 x half> %2, <32 x half> %a01166  ret <32 x half> %41167}1168 1169define <32 x half> @stack_fold_fnmsub132ph_mask(ptr %p, <32 x half> %a1, <32 x half> %a2, i32 %mask) {1170; CHECK-LABEL: stack_fold_fnmsub132ph_mask:1171; CHECK:       # %bb.0:1172; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1173; CHECK-NEXT:    #APP1174; CHECK-NEXT:    nop1175; CHECK-NEXT:    #NO_APP1176; CHECK-NEXT:    vmovaps (%rdi), %zmm21177; CHECK-NEXT:    kmovd %esi, %k11178; CHECK-NEXT:    vfnmsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload1179; CHECK-NEXT:    vmovaps %zmm2, %zmm01180; CHECK-NEXT:    retq1181  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1182  %a0 = load <32 x half>, ptr %p1183  %neg = fneg <32 x half> %a11184  %neg1 = fneg <32 x half> %a01185  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %neg1, <32 x half> %a2, <32 x half> %neg)1186  %3 = bitcast i32 %mask to <32 x i1>1187  %4 = select <32 x i1> %3, <32 x half> %2, <32 x half> %a01188  ret <32 x half> %41189}1190 1191define <32 x half> @stack_fold_fnmsub312ph_mask(ptr %p, <32 x half> %a1, <32 x half> %a2, i32 %mask) {1192; CHECK-LABEL: stack_fold_fnmsub312ph_mask:1193; CHECK:       # %bb.0:1194; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1195; CHECK-NEXT:    #APP1196; CHECK-NEXT:    nop1197; CHECK-NEXT:    #NO_APP1198; CHECK-NEXT:    vmovaps (%rdi), %zmm21199; CHECK-NEXT:    kmovd %esi, %k11200; CHECK-NEXT:    vfnmsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload1201; CHECK-NEXT:    vmovaps %zmm2, %zmm01202; CHECK-NEXT:    retq1203  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1204  %a0 = load <32 x half>, ptr %p1205  %neg = fneg <32 x half> %a11206  %neg1 = fneg <32 x half> %a21207  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %neg1, <32 x half> %a0, <32 x half> %neg)1208  %3 = bitcast i32 %mask to <32 x i1>1209  %4 = select <32 x i1> %3, <32 x half> %2, <32 x half> %a01210  ret <32 x half> %41211}1212 1213define <32 x half> @stack_fold_fnmsub123ph_maskz(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, ptr %mask) {1214; CHECK-LABEL: stack_fold_fnmsub123ph_maskz:1215; CHECK:       # %bb.0:1216; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1217; CHECK-NEXT:    #APP1218; CHECK-NEXT:    nop1219; CHECK-NEXT:    #NO_APP1220; CHECK-NEXT:    kmovd (%rdi), %k11221; CHECK-NEXT:    vfnmsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} {z} # 64-byte Folded Reload1222; CHECK-NEXT:    retq1223  %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}"()1224  %neg = fneg <32 x half> %a21225  %neg1 = fneg <32 x half> %a01226  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %neg1, <32 x half> %a1, <32 x half> %neg)1227  %3 = load i32, ptr %mask1228  %4 = bitcast i32 %3 to <32 x i1>1229  %5 = select <32 x i1> %4, <32 x half> %2, <32 x half> zeroinitializer1230  ret <32 x half> %51231}1232 1233define <32 x half> @stack_fold_fnmsub213ph_maskz(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, ptr %mask) {1234; CHECK-LABEL: stack_fold_fnmsub213ph_maskz:1235; CHECK:       # %bb.0:1236; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1237; CHECK-NEXT:    #APP1238; CHECK-NEXT:    nop1239; CHECK-NEXT:    #NO_APP1240; CHECK-NEXT:    kmovd (%rdi), %k11241; CHECK-NEXT:    vfnmsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} {z} # 64-byte Folded Reload1242; CHECK-NEXT:    retq1243  %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}"()1244  %neg = fneg <32 x half> %a21245  %neg1 = fneg <32 x half> %a11246  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %neg1, <32 x half> %a0, <32 x half> %neg)1247  %3 = load i32, ptr %mask1248  %4 = bitcast i32 %3 to <32 x i1>1249  %5 = select <32 x i1> %4, <32 x half> %2, <32 x half> zeroinitializer1250  ret <32 x half> %51251}1252 1253define <32 x half> @stack_fold_fnmsub231ph_maskz(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, ptr %mask) {1254; CHECK-LABEL: stack_fold_fnmsub231ph_maskz:1255; CHECK:       # %bb.0:1256; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1257; CHECK-NEXT:    #APP1258; CHECK-NEXT:    nop1259; CHECK-NEXT:    #NO_APP1260; CHECK-NEXT:    kmovd (%rdi), %k11261; CHECK-NEXT:    vfnmsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} {z} # 64-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 <32 x half> %a01265  %neg1 = fneg <32 x half> %a11266  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %neg1, <32 x half> %a2, <32 x half> %neg)1267  %3 = load i32, ptr %mask1268  %4 = bitcast i32 %3 to <32 x i1>1269  %5 = select <32 x i1> %4, <32 x half> %2, <32 x half> zeroinitializer1270  ret <32 x half> %51271}1272 1273define <32 x half> @stack_fold_fnmsub321ph_maskz(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, ptr %mask) {1274; CHECK-LABEL: stack_fold_fnmsub321ph_maskz:1275; CHECK:       # %bb.0:1276; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1277; CHECK-NEXT:    #APP1278; CHECK-NEXT:    nop1279; CHECK-NEXT:    #NO_APP1280; CHECK-NEXT:    kmovd (%rdi), %k11281; CHECK-NEXT:    vfnmsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} {z} # 64-byte Folded Reload1282; CHECK-NEXT:    retq1283  %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}"()1284  %neg = fneg <32 x half> %a01285  %neg1 = fneg <32 x half> %a21286  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %neg1, <32 x half> %a1, <32 x half> %neg)1287  %3 = load i32, ptr %mask1288  %4 = bitcast i32 %3 to <32 x i1>1289  %5 = select <32 x i1> %4, <32 x half> %2, <32 x half> zeroinitializer1290  ret <32 x half> %51291}1292 1293define <32 x half> @stack_fold_fnmsub132ph_maskz(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, ptr %mask) {1294; CHECK-LABEL: stack_fold_fnmsub132ph_maskz:1295; CHECK:       # %bb.0:1296; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1297; CHECK-NEXT:    #APP1298; CHECK-NEXT:    nop1299; CHECK-NEXT:    #NO_APP1300; CHECK-NEXT:    kmovd (%rdi), %k11301; CHECK-NEXT:    vfnmsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} {z} # 64-byte Folded Reload1302; CHECK-NEXT:    retq1303  %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}"()1304  %neg = fneg <32 x half> %a11305  %neg1 = fneg <32 x half> %a01306  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %neg1, <32 x half> %a2, <32 x half> %neg)1307  %3 = load i32, ptr %mask1308  %4 = bitcast i32 %3 to <32 x i1>1309  %5 = select <32 x i1> %4, <32 x half> %2, <32 x half> zeroinitializer1310  ret <32 x half> %51311}1312 1313define <32 x half> @stack_fold_fnmsub312ph_maskz(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, ptr %mask) {1314; CHECK-LABEL: stack_fold_fnmsub312ph_maskz:1315; CHECK:       # %bb.0:1316; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill1317; CHECK-NEXT:    #APP1318; CHECK-NEXT:    nop1319; CHECK-NEXT:    #NO_APP1320; CHECK-NEXT:    kmovd (%rdi), %k11321; CHECK-NEXT:    vfnmsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} {z} # 64-byte Folded Reload1322; CHECK-NEXT:    retq1323  %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}"()1324  %neg = fneg <32 x half> %a11325  %neg1 = fneg <32 x half> %a21326  %2 = call <32 x half> @llvm.fma.v32f16(<32 x half> %neg1, <32 x half> %a0, <32 x half> %neg)1327  %3 = load i32, ptr %mask1328  %4 = bitcast i32 %3 to <32 x i1>1329  %5 = select <32 x i1> %4, <32 x half> %2, <32 x half> zeroinitializer1330  ret <32 x half> %51331}1332 1333define half @stack_fold_fmadd123sh(half %a0, half %a1, half %a2) {1334; CHECK-LABEL: stack_fold_fmadd123sh:1335; CHECK:       # %bb.0:1336; CHECK-NEXT:    vmovsh %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill1337; CHECK-NEXT:    #APP1338; CHECK-NEXT:    nop1339; CHECK-NEXT:    #NO_APP1340; CHECK-NEXT:    vfmadd213sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 4-byte Folded Reload1341; CHECK-NEXT:    retq1342  %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}"()1343  %2 = call half @llvm.fma.f16(half %a0, half %a1, half %a2)1344  ret half %21345}1346declare half @llvm.fma.f16(half, half, half)1347 1348define half @stack_fold_fmadd213sh(half %a0, half %a1, half %a2) {1349; CHECK-LABEL: stack_fold_fmadd213sh:1350; CHECK:       # %bb.0:1351; CHECK-NEXT:    vmovsh %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill1352; CHECK-NEXT:    #APP1353; CHECK-NEXT:    nop1354; CHECK-NEXT:    #NO_APP1355; CHECK-NEXT:    vfmadd213sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 4-byte Folded Reload1356; CHECK-NEXT:    retq1357  %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}"()1358  %2 = call half @llvm.fma.f16(half %a1, half %a0, half %a2)1359  ret half %21360}1361 1362define half @stack_fold_fmadd231sh(half %a0, half %a1, half %a2) {1363; CHECK-LABEL: stack_fold_fmadd231sh:1364; CHECK:       # %bb.0:1365; CHECK-NEXT:    vmovsh %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill1366; CHECK-NEXT:    #APP1367; CHECK-NEXT:    nop1368; CHECK-NEXT:    #NO_APP1369; CHECK-NEXT:    vfmadd231sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 4-byte Folded Reload1370; CHECK-NEXT:    retq1371  %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}"()1372  %2 = call half @llvm.fma.f16(half %a1, half %a2, half %a0)1373  ret half %21374}1375 1376define half @stack_fold_fmadd321sh(half %a0, half %a1, half %a2) {1377; CHECK-LABEL: stack_fold_fmadd321sh:1378; CHECK:       # %bb.0:1379; CHECK-NEXT:    vmovsh %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill1380; CHECK-NEXT:    #APP1381; CHECK-NEXT:    nop1382; CHECK-NEXT:    #NO_APP1383; CHECK-NEXT:    vfmadd231sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 4-byte Folded Reload1384; CHECK-NEXT:    retq1385  %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}"()1386  %2 = call half @llvm.fma.f16(half %a2, half %a1, half %a0)1387  ret half %21388}1389 1390define half @stack_fold_fmadd132sh(half %a0, half %a1, half %a2) {1391; CHECK-LABEL: stack_fold_fmadd132sh:1392; CHECK:       # %bb.0:1393; CHECK-NEXT:    vmovsh %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill1394; CHECK-NEXT:    #APP1395; CHECK-NEXT:    nop1396; CHECK-NEXT:    #NO_APP1397; CHECK-NEXT:    vfmadd132sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 4-byte Folded Reload1398; CHECK-NEXT:    retq1399  %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}"()1400  %2 = call half @llvm.fma.f16(half %a0, half %a2, half %a1)1401  ret half %21402}1403 1404define half @stack_fold_fmadd312sh(half %a0, half %a1, half %a2) {1405; CHECK-LABEL: stack_fold_fmadd312sh:1406; CHECK:       # %bb.0:1407; CHECK-NEXT:    vmovsh %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill1408; CHECK-NEXT:    #APP1409; CHECK-NEXT:    nop1410; CHECK-NEXT:    #NO_APP1411; CHECK-NEXT:    vfmadd132sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 4-byte Folded Reload1412; CHECK-NEXT:    retq1413  %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}"()1414  %2 = call half @llvm.fma.f16(half %a2, half %a0, half %a1)1415  ret half %21416}1417 1418define half @stack_fold_fmsub123sh(half %a0, half %a1, half %a2) {1419; CHECK-LABEL: stack_fold_fmsub123sh:1420; CHECK:       # %bb.0:1421; CHECK-NEXT:    vmovsh %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill1422; CHECK-NEXT:    #APP1423; CHECK-NEXT:    nop1424; CHECK-NEXT:    #NO_APP1425; CHECK-NEXT:    vfmsub213sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 4-byte Folded Reload1426; CHECK-NEXT:    retq1427  %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}"()1428  %2 = fneg half %a21429  %3 = call half @llvm.fma.f16(half %a0, half %a1, half %2)1430  ret half %31431}1432 1433define half @stack_fold_fmsub213sh(half %a0, half %a1, half %a2) {1434; CHECK-LABEL: stack_fold_fmsub213sh:1435; CHECK:       # %bb.0:1436; CHECK-NEXT:    vmovsh %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill1437; CHECK-NEXT:    #APP1438; CHECK-NEXT:    nop1439; CHECK-NEXT:    #NO_APP1440; CHECK-NEXT:    vfmsub213sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 4-byte Folded Reload1441; CHECK-NEXT:    retq1442  %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}"()1443  %2 = fneg half %a21444  %3 = call half @llvm.fma.f16(half %a1, half %a0, half %2)1445  ret half %31446}1447 1448define half @stack_fold_fmsub231sh(half %a0, half %a1, half %a2) {1449; CHECK-LABEL: stack_fold_fmsub231sh:1450; CHECK:       # %bb.0:1451; CHECK-NEXT:    vmovsh %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill1452; CHECK-NEXT:    #APP1453; CHECK-NEXT:    nop1454; CHECK-NEXT:    #NO_APP1455; CHECK-NEXT:    vfmsub231sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 4-byte Folded Reload1456; CHECK-NEXT:    retq1457  %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}"()1458  %2 = fneg half %a01459  %3 = call half @llvm.fma.f16(half %a1, half %a2, half %2)1460  ret half %31461}1462 1463define half @stack_fold_fmsub321sh(half %a0, half %a1, half %a2) {1464; CHECK-LABEL: stack_fold_fmsub321sh:1465; CHECK:       # %bb.0:1466; CHECK-NEXT:    vmovsh %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill1467; CHECK-NEXT:    #APP1468; CHECK-NEXT:    nop1469; CHECK-NEXT:    #NO_APP1470; CHECK-NEXT:    vfmsub231sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 4-byte Folded Reload1471; CHECK-NEXT:    retq1472  %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}"()1473  %2 = fneg half %a01474  %3 = call half @llvm.fma.f16(half %a2, half %a1, half %2)1475  ret half %31476}1477 1478define half @stack_fold_fmsub132sh(half %a0, half %a1, half %a2) {1479; CHECK-LABEL: stack_fold_fmsub132sh:1480; CHECK:       # %bb.0:1481; CHECK-NEXT:    vmovsh %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill1482; CHECK-NEXT:    #APP1483; CHECK-NEXT:    nop1484; CHECK-NEXT:    #NO_APP1485; CHECK-NEXT:    vfmsub132sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 4-byte Folded Reload1486; CHECK-NEXT:    retq1487  %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}"()1488  %2 = fneg half %a11489  %3 = call half @llvm.fma.f16(half %a0, half %a2, half %2)1490  ret half %31491}1492 1493define half @stack_fold_fmsub312sh(half %a0, half %a1, half %a2) {1494; CHECK-LABEL: stack_fold_fmsub312sh:1495; CHECK:       # %bb.0:1496; CHECK-NEXT:    vmovsh %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill1497; CHECK-NEXT:    #APP1498; CHECK-NEXT:    nop1499; CHECK-NEXT:    #NO_APP1500; CHECK-NEXT:    vfmsub132sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 4-byte Folded Reload1501; CHECK-NEXT:    retq1502  %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}"()1503  %2 = fneg half %a11504  %3 = call half @llvm.fma.f16(half %a2, half %a0, half %2)1505  ret half %31506}1507 1508define half @stack_fold_fnmadd123sh(half %a0, half %a1, half %a2) {1509; CHECK-LABEL: stack_fold_fnmadd123sh:1510; CHECK:       # %bb.0:1511; CHECK-NEXT:    vmovsh %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill1512; CHECK-NEXT:    #APP1513; CHECK-NEXT:    nop1514; CHECK-NEXT:    #NO_APP1515; CHECK-NEXT:    vfnmadd213sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 4-byte Folded Reload1516; CHECK-NEXT:    retq1517  %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}"()1518  %2 = fneg half %a01519  %3 = call half @llvm.fma.f16(half %2, half %a1, half %a2)1520  ret half %31521}1522 1523define half @stack_fold_fnmadd213sh(half %a0, half %a1, half %a2) {1524; CHECK-LABEL: stack_fold_fnmadd213sh:1525; CHECK:       # %bb.0:1526; CHECK-NEXT:    vmovsh %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill1527; CHECK-NEXT:    #APP1528; CHECK-NEXT:    nop1529; CHECK-NEXT:    #NO_APP1530; CHECK-NEXT:    vfnmadd213sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 4-byte Folded Reload1531; CHECK-NEXT:    retq1532  %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}"()1533  %2 = fneg half %a11534  %3 = call half @llvm.fma.f16(half %2, half %a0, half %a2)1535  ret half %31536}1537 1538define half @stack_fold_fnmadd231sh(half %a0, half %a1, half %a2) {1539; CHECK-LABEL: stack_fold_fnmadd231sh:1540; CHECK:       # %bb.0:1541; CHECK-NEXT:    vmovsh %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill1542; CHECK-NEXT:    #APP1543; CHECK-NEXT:    nop1544; CHECK-NEXT:    #NO_APP1545; CHECK-NEXT:    vfnmadd231sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 4-byte Folded Reload1546; CHECK-NEXT:    retq1547  %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}"()1548  %2 = fneg half %a11549  %3 = call half @llvm.fma.f16(half %2, half %a2, half %a0)1550  ret half %31551}1552 1553define half @stack_fold_fnmadd321sh(half %a0, half %a1, half %a2) {1554; CHECK-LABEL: stack_fold_fnmadd321sh:1555; CHECK:       # %bb.0:1556; CHECK-NEXT:    vmovsh %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill1557; CHECK-NEXT:    #APP1558; CHECK-NEXT:    nop1559; CHECK-NEXT:    #NO_APP1560; CHECK-NEXT:    vfnmadd231sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 4-byte Folded Reload1561; CHECK-NEXT:    retq1562  %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}"()1563  %2 = fneg half %a21564  %3 = call half @llvm.fma.f16(half %2, half %a1, half %a0)1565  ret half %31566}1567 1568define half @stack_fold_fnmadd132sh(half %a0, half %a1, half %a2) {1569; CHECK-LABEL: stack_fold_fnmadd132sh:1570; CHECK:       # %bb.0:1571; CHECK-NEXT:    vmovsh %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill1572; CHECK-NEXT:    #APP1573; CHECK-NEXT:    nop1574; CHECK-NEXT:    #NO_APP1575; CHECK-NEXT:    vfnmadd132sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 4-byte Folded Reload1576; CHECK-NEXT:    retq1577  %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}"()1578  %2 = fneg half %a01579  %3 = call half @llvm.fma.f16(half %2, half %a2, half %a1)1580  ret half %31581}1582 1583define half @stack_fold_fnmadd312sh(half %a0, half %a1, half %a2) {1584; CHECK-LABEL: stack_fold_fnmadd312sh:1585; CHECK:       # %bb.0:1586; CHECK-NEXT:    vmovsh %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill1587; CHECK-NEXT:    #APP1588; CHECK-NEXT:    nop1589; CHECK-NEXT:    #NO_APP1590; CHECK-NEXT:    vfnmadd132sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 4-byte Folded Reload1591; CHECK-NEXT:    retq1592  %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}"()1593  %2 = fneg half %a21594  %3 = call half @llvm.fma.f16(half %2, half %a0, half %a1)1595  ret half %31596}1597 1598define half @stack_fold_fnmsub123sh(half %a0, half %a1, half %a2) {1599; CHECK-LABEL: stack_fold_fnmsub123sh:1600; CHECK:       # %bb.0:1601; CHECK-NEXT:    vmovsh %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill1602; CHECK-NEXT:    #APP1603; CHECK-NEXT:    nop1604; CHECK-NEXT:    #NO_APP1605; CHECK-NEXT:    vfnmsub213sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 4-byte Folded Reload1606; CHECK-NEXT:    retq1607  %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}"()1608  %2 = fneg half %a01609  %3 = fneg half %a21610  %4 = call half @llvm.fma.f16(half %2, half %a1, half %3)1611  ret half %41612}1613 1614define half @stack_fold_fnmsub213sh(half %a0, half %a1, half %a2) {1615; CHECK-LABEL: stack_fold_fnmsub213sh:1616; CHECK:       # %bb.0:1617; CHECK-NEXT:    vmovsh %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill1618; CHECK-NEXT:    #APP1619; CHECK-NEXT:    nop1620; CHECK-NEXT:    #NO_APP1621; CHECK-NEXT:    vfnmsub213sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 4-byte Folded Reload1622; CHECK-NEXT:    retq1623  %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}"()1624  %2 = fneg half %a11625  %3 = fneg half %a21626  %4 = call half @llvm.fma.f16(half %2, half %a0, half %3)1627  ret half %41628}1629 1630define half @stack_fold_fnmsub231sh(half %a0, half %a1, half %a2) {1631; CHECK-LABEL: stack_fold_fnmsub231sh:1632; CHECK:       # %bb.0:1633; CHECK-NEXT:    vmovsh %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill1634; CHECK-NEXT:    #APP1635; CHECK-NEXT:    nop1636; CHECK-NEXT:    #NO_APP1637; CHECK-NEXT:    vfnmsub231sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 4-byte Folded Reload1638; CHECK-NEXT:    retq1639  %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}"()1640  %2 = fneg half %a11641  %3 = fneg half %a01642  %4 = call half @llvm.fma.f16(half %2, half %a2, half %3)1643  ret half %41644}1645 1646define half @stack_fold_fnmsub321sh(half %a0, half %a1, half %a2) {1647; CHECK-LABEL: stack_fold_fnmsub321sh:1648; CHECK:       # %bb.0:1649; CHECK-NEXT:    vmovsh %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill1650; CHECK-NEXT:    #APP1651; CHECK-NEXT:    nop1652; CHECK-NEXT:    #NO_APP1653; CHECK-NEXT:    vfnmsub231sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 4-byte Folded Reload1654; CHECK-NEXT:    retq1655  %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}"()1656  %2 = fneg half %a21657  %3 = fneg half %a01658  %4 = call half @llvm.fma.f16(half %2, half %a1, half %3)1659  ret half %41660}1661 1662define half @stack_fold_fnmsub132sh(half %a0, half %a1, half %a2) {1663; CHECK-LABEL: stack_fold_fnmsub132sh:1664; CHECK:       # %bb.0:1665; CHECK-NEXT:    vmovsh %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill1666; CHECK-NEXT:    #APP1667; CHECK-NEXT:    nop1668; CHECK-NEXT:    #NO_APP1669; CHECK-NEXT:    vfnmsub132sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 4-byte Folded Reload1670; CHECK-NEXT:    retq1671  %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}"()1672  %2 = fneg half %a01673  %3 = fneg half %a11674  %4 = call half @llvm.fma.f16(half %2, half %a2, half %3)1675  ret half %41676}1677 1678define half @stack_fold_fnmsub312sh(half %a0, half %a1, half %a2) {1679; CHECK-LABEL: stack_fold_fnmsub312sh:1680; CHECK:       # %bb.0:1681; CHECK-NEXT:    vmovsh %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill1682; CHECK-NEXT:    #APP1683; CHECK-NEXT:    nop1684; CHECK-NEXT:    #NO_APP1685; CHECK-NEXT:    vfnmsub132sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 4-byte Folded Reload1686; CHECK-NEXT:    retq1687  %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}"()1688  %2 = fneg half %a21689  %3 = fneg half %a11690  %4 = call half @llvm.fma.f16(half %2, half %a0, half %3)1691  ret half %41692}1693 1694define <8 x half> @stack_fold_fmadd123sh_int(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v) {1695; CHECK-LABEL: stack_fold_fmadd123sh_int:1696; CHECK:       # %bb.0:1697; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1698; CHECK-NEXT:    #APP1699; CHECK-NEXT:    nop1700; CHECK-NEXT:    #NO_APP1701; CHECK-NEXT:    vfmadd213sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload1702; CHECK-NEXT:    retq1703  %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}"()1704  %a0 = extractelement <8 x half> %a0v, i64 01705  %a1 = extractelement <8 x half> %a1v, i64 01706  %a2 = extractelement <8 x half> %a2v, i64 01707  %2 = call half @llvm.fma.f16(half %a0, half %a1, half %a2)1708  %res = insertelement <8 x half> %a0v, half %2, i64 01709  ret <8 x half> %res1710}1711 1712define <8 x half> @stack_fold_fmadd213sh_int(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v) {1713; CHECK-LABEL: stack_fold_fmadd213sh_int:1714; CHECK:       # %bb.0:1715; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1716; CHECK-NEXT:    #APP1717; CHECK-NEXT:    nop1718; CHECK-NEXT:    #NO_APP1719; CHECK-NEXT:    vfmadd213sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload1720; CHECK-NEXT:    retq1721  %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}"()1722  %a0 = extractelement <8 x half> %a0v, i64 01723  %a1 = extractelement <8 x half> %a1v, i64 01724  %a2 = extractelement <8 x half> %a2v, i64 01725  %2 = call half @llvm.fma.f16(half %a1, half %a0, half %a2)1726  %res = insertelement <8 x half> %a0v, half %2, i64 01727  ret <8 x half> %res1728}1729 1730define <8 x half> @stack_fold_fmadd231sh_int(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v) {1731; CHECK-LABEL: stack_fold_fmadd231sh_int:1732; CHECK:       # %bb.0:1733; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1734; CHECK-NEXT:    #APP1735; CHECK-NEXT:    nop1736; CHECK-NEXT:    #NO_APP1737; CHECK-NEXT:    vfmadd231sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-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  %a0 = extractelement <8 x half> %a0v, i64 01741  %a1 = extractelement <8 x half> %a1v, i64 01742  %a2 = extractelement <8 x half> %a2v, i64 01743  %2 = call half @llvm.fma.f16(half %a1, half %a2, half %a0)1744  %res = insertelement <8 x half> %a0v, half %2, i64 01745  ret <8 x half> %res1746}1747 1748define <8 x half> @stack_fold_fmadd321sh_int(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v) {1749; CHECK-LABEL: stack_fold_fmadd321sh_int:1750; CHECK:       # %bb.0:1751; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1752; CHECK-NEXT:    #APP1753; CHECK-NEXT:    nop1754; CHECK-NEXT:    #NO_APP1755; CHECK-NEXT:    vfmadd231sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload1756; CHECK-NEXT:    retq1757  %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}"()1758  %a0 = extractelement <8 x half> %a0v, i64 01759  %a1 = extractelement <8 x half> %a1v, i64 01760  %a2 = extractelement <8 x half> %a2v, i64 01761  %2 = call half @llvm.fma.f16(half %a2, half %a1, half %a0)1762  %res = insertelement <8 x half> %a0v, half %2, i64 01763  ret <8 x half> %res1764}1765 1766define <8 x half> @stack_fold_fmadd132sh_int(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v) {1767; CHECK-LABEL: stack_fold_fmadd132sh_int:1768; CHECK:       # %bb.0:1769; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1770; CHECK-NEXT:    #APP1771; CHECK-NEXT:    nop1772; CHECK-NEXT:    #NO_APP1773; CHECK-NEXT:    vfmadd132sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload1774; CHECK-NEXT:    retq1775  %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}"()1776  %a0 = extractelement <8 x half> %a0v, i64 01777  %a1 = extractelement <8 x half> %a1v, i64 01778  %a2 = extractelement <8 x half> %a2v, i64 01779  %2 = call half @llvm.fma.f16(half %a0, half %a2, half %a1)1780  %res = insertelement <8 x half> %a0v, half %2, i64 01781  ret <8 x half> %res1782}1783 1784define <8 x half> @stack_fold_fmadd312sh_int(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v) {1785; CHECK-LABEL: stack_fold_fmadd312sh_int:1786; CHECK:       # %bb.0:1787; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1788; CHECK-NEXT:    #APP1789; CHECK-NEXT:    nop1790; CHECK-NEXT:    #NO_APP1791; CHECK-NEXT:    vfmadd132sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload1792; CHECK-NEXT:    retq1793  %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}"()1794  %a0 = extractelement <8 x half> %a0v, i64 01795  %a1 = extractelement <8 x half> %a1v, i64 01796  %a2 = extractelement <8 x half> %a2v, i64 01797  %2 = call half @llvm.fma.f16(half %a2, half %a0, half %a1)1798  %res = insertelement <8 x half> %a0v, half %2, i64 01799  ret <8 x half> %res1800}1801 1802define <8 x half> @stack_fold_fmsub123sh_int(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v) {1803; CHECK-LABEL: stack_fold_fmsub123sh_int:1804; CHECK:       # %bb.0:1805; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1806; CHECK-NEXT:    #APP1807; CHECK-NEXT:    nop1808; CHECK-NEXT:    #NO_APP1809; CHECK-NEXT:    vfmsub213sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload1810; CHECK-NEXT:    retq1811  %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}"()1812  %a0 = extractelement <8 x half> %a0v, i64 01813  %a1 = extractelement <8 x half> %a1v, i64 01814  %a2 = extractelement <8 x half> %a2v, i64 01815  %neg = fneg half %a21816  %2 = call half @llvm.fma.f16(half %a0, half %a1, half %neg)1817  %res = insertelement <8 x half> %a0v, half %2, i64 01818  ret <8 x half> %res1819}1820 1821define <8 x half> @stack_fold_fmsub213sh_int(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v) {1822; CHECK-LABEL: stack_fold_fmsub213sh_int:1823; CHECK:       # %bb.0:1824; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1825; CHECK-NEXT:    #APP1826; CHECK-NEXT:    nop1827; CHECK-NEXT:    #NO_APP1828; CHECK-NEXT:    vfmsub213sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload1829; CHECK-NEXT:    retq1830  %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}"()1831  %a0 = extractelement <8 x half> %a0v, i64 01832  %a1 = extractelement <8 x half> %a1v, i64 01833  %a2 = extractelement <8 x half> %a2v, i64 01834  %neg = fneg half %a21835  %2 = call half @llvm.fma.f16(half %a1, half %a0, half %neg)1836  %res = insertelement <8 x half> %a0v, half %2, i64 01837  ret <8 x half> %res1838}1839 1840define <8 x half> @stack_fold_fmsub231sh_int(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v) {1841; CHECK-LABEL: stack_fold_fmsub231sh_int:1842; CHECK:       # %bb.0:1843; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1844; CHECK-NEXT:    #APP1845; CHECK-NEXT:    nop1846; CHECK-NEXT:    #NO_APP1847; CHECK-NEXT:    vfmsub231sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload1848; CHECK-NEXT:    retq1849  %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}"()1850  %a0 = extractelement <8 x half> %a0v, i64 01851  %a1 = extractelement <8 x half> %a1v, i64 01852  %a2 = extractelement <8 x half> %a2v, i64 01853  %neg = fneg half %a01854  %2 = call half @llvm.fma.f16(half %a1, half %a2, half %neg)1855  %res = insertelement <8 x half> %a0v, half %2, i64 01856  ret <8 x half> %res1857}1858 1859define <8 x half> @stack_fold_fmsub321sh_int(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v) {1860; CHECK-LABEL: stack_fold_fmsub321sh_int:1861; CHECK:       # %bb.0:1862; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1863; CHECK-NEXT:    #APP1864; CHECK-NEXT:    nop1865; CHECK-NEXT:    #NO_APP1866; CHECK-NEXT:    vfmsub231sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload1867; CHECK-NEXT:    retq1868  %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}"()1869  %a0 = extractelement <8 x half> %a0v, i64 01870  %a1 = extractelement <8 x half> %a1v, i64 01871  %a2 = extractelement <8 x half> %a2v, i64 01872  %neg = fneg half %a01873  %2 = call half @llvm.fma.f16(half %a2, half %a1, half %neg)1874  %res = insertelement <8 x half> %a0v, half %2, i64 01875  ret <8 x half> %res1876}1877 1878define <8 x half> @stack_fold_fmsub132sh_int(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v) {1879; CHECK-LABEL: stack_fold_fmsub132sh_int:1880; CHECK:       # %bb.0:1881; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1882; CHECK-NEXT:    #APP1883; CHECK-NEXT:    nop1884; CHECK-NEXT:    #NO_APP1885; CHECK-NEXT:    vfmsub132sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload1886; CHECK-NEXT:    retq1887  %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}"()1888  %a0 = extractelement <8 x half> %a0v, i64 01889  %a1 = extractelement <8 x half> %a1v, i64 01890  %a2 = extractelement <8 x half> %a2v, i64 01891  %neg = fneg half %a11892  %2 = call half @llvm.fma.f16(half %a0, half %a2, half %neg)1893  %res = insertelement <8 x half> %a0v, half %2, i64 01894  ret <8 x half> %res1895}1896 1897define <8 x half> @stack_fold_fmsub312sh_int(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v) {1898; CHECK-LABEL: stack_fold_fmsub312sh_int:1899; CHECK:       # %bb.0:1900; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1901; CHECK-NEXT:    #APP1902; CHECK-NEXT:    nop1903; CHECK-NEXT:    #NO_APP1904; CHECK-NEXT:    vfmsub132sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload1905; CHECK-NEXT:    retq1906  %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}"()1907  %a0 = extractelement <8 x half> %a0v, i64 01908  %a1 = extractelement <8 x half> %a1v, i64 01909  %a2 = extractelement <8 x half> %a2v, i64 01910  %neg = fneg half %a11911  %2 = call half @llvm.fma.f16(half %a2, half %a0, half %neg)1912  %res = insertelement <8 x half> %a0v, half %2, i64 01913  ret <8 x half> %res1914}1915 1916define <8 x half> @stack_fold_fnmadd123sh_int(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v) {1917; CHECK-LABEL: stack_fold_fnmadd123sh_int:1918; CHECK:       # %bb.0:1919; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1920; CHECK-NEXT:    #APP1921; CHECK-NEXT:    nop1922; CHECK-NEXT:    #NO_APP1923; CHECK-NEXT:    vfnmadd213sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload1924; CHECK-NEXT:    retq1925  %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}"()1926  %a0 = extractelement <8 x half> %a0v, i64 01927  %a1 = extractelement <8 x half> %a1v, i64 01928  %a2 = extractelement <8 x half> %a2v, i64 01929  %neg1 = fneg half %a01930  %2 = call half @llvm.fma.f16(half %neg1, half %a1, half %a2)1931  %res = insertelement <8 x half> %a0v, half %2, i64 01932  ret <8 x half> %res1933}1934 1935define <8 x half> @stack_fold_fnmadd213sh_int(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v) {1936; CHECK-LABEL: stack_fold_fnmadd213sh_int:1937; CHECK:       # %bb.0:1938; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1939; CHECK-NEXT:    #APP1940; CHECK-NEXT:    nop1941; CHECK-NEXT:    #NO_APP1942; CHECK-NEXT:    vfnmadd213sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload1943; CHECK-NEXT:    retq1944  %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}"()1945  %a0 = extractelement <8 x half> %a0v, i64 01946  %a1 = extractelement <8 x half> %a1v, i64 01947  %a2 = extractelement <8 x half> %a2v, i64 01948  %neg1 = fneg half %a11949  %2 = call half @llvm.fma.f16(half %neg1, half %a0, half %a2)1950  %res = insertelement <8 x half> %a0v, half %2, i64 01951  ret <8 x half> %res1952}1953 1954define <8 x half> @stack_fold_fnmadd231sh_int(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v) {1955; CHECK-LABEL: stack_fold_fnmadd231sh_int:1956; CHECK:       # %bb.0:1957; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1958; CHECK-NEXT:    #APP1959; CHECK-NEXT:    nop1960; CHECK-NEXT:    #NO_APP1961; CHECK-NEXT:    vfnmadd231sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload1962; CHECK-NEXT:    retq1963  %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}"()1964  %a0 = extractelement <8 x half> %a0v, i64 01965  %a1 = extractelement <8 x half> %a1v, i64 01966  %a2 = extractelement <8 x half> %a2v, i64 01967  %neg1 = fneg half %a11968  %2 = call half @llvm.fma.f16(half %neg1, half %a2, half %a0)1969  %res = insertelement <8 x half> %a0v, half %2, i64 01970  ret <8 x half> %res1971}1972 1973define <8 x half> @stack_fold_fnmadd321sh_int(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v) {1974; CHECK-LABEL: stack_fold_fnmadd321sh_int:1975; CHECK:       # %bb.0:1976; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1977; CHECK-NEXT:    #APP1978; CHECK-NEXT:    nop1979; CHECK-NEXT:    #NO_APP1980; CHECK-NEXT:    vfnmadd231sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload1981; CHECK-NEXT:    retq1982  %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}"()1983  %a0 = extractelement <8 x half> %a0v, i64 01984  %a1 = extractelement <8 x half> %a1v, i64 01985  %a2 = extractelement <8 x half> %a2v, i64 01986  %neg1 = fneg half %a21987  %2 = call half @llvm.fma.f16(half %neg1, half %a1, half %a0)1988  %res = insertelement <8 x half> %a0v, half %2, i64 01989  ret <8 x half> %res1990}1991 1992define <8 x half> @stack_fold_fnmadd132sh_int(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v) {1993; CHECK-LABEL: stack_fold_fnmadd132sh_int:1994; CHECK:       # %bb.0:1995; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1996; CHECK-NEXT:    #APP1997; CHECK-NEXT:    nop1998; CHECK-NEXT:    #NO_APP1999; CHECK-NEXT:    vfnmadd132sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload2000; CHECK-NEXT:    retq2001  %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}"()2002  %a0 = extractelement <8 x half> %a0v, i64 02003  %a1 = extractelement <8 x half> %a1v, i64 02004  %a2 = extractelement <8 x half> %a2v, i64 02005  %neg1 = fneg half %a02006  %2 = call half @llvm.fma.f16(half %neg1, half %a2, half %a1)2007  %res = insertelement <8 x half> %a0v, half %2, i64 02008  ret <8 x half> %res2009}2010 2011define <8 x half> @stack_fold_fnmadd312sh_int(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v) {2012; CHECK-LABEL: stack_fold_fnmadd312sh_int:2013; CHECK:       # %bb.0:2014; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2015; CHECK-NEXT:    #APP2016; CHECK-NEXT:    nop2017; CHECK-NEXT:    #NO_APP2018; CHECK-NEXT:    vfnmadd132sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload2019; CHECK-NEXT:    retq2020  %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}"()2021  %a0 = extractelement <8 x half> %a0v, i64 02022  %a1 = extractelement <8 x half> %a1v, i64 02023  %a2 = extractelement <8 x half> %a2v, i64 02024  %neg1 = fneg half %a22025  %2 = call half @llvm.fma.f16(half %neg1, half %a0, half %a1)2026  %res = insertelement <8 x half> %a0v, half %2, i64 02027  ret <8 x half> %res2028}2029 2030define <8 x half> @stack_fold_fnmsub123sh_int(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v) {2031; CHECK-LABEL: stack_fold_fnmsub123sh_int:2032; CHECK:       # %bb.0:2033; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2034; CHECK-NEXT:    #APP2035; CHECK-NEXT:    nop2036; CHECK-NEXT:    #NO_APP2037; CHECK-NEXT:    vfnmsub213sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-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  %a0 = extractelement <8 x half> %a0v, i64 02041  %a1 = extractelement <8 x half> %a1v, i64 02042  %a2 = extractelement <8 x half> %a2v, i64 02043  %neg = fneg half %a22044  %neg1 = fneg half %a02045  %2 = call half @llvm.fma.f16(half %neg1, half %a1, half %neg)2046  %res = insertelement <8 x half> %a0v, half %2, i64 02047  ret <8 x half> %res2048}2049 2050define <8 x half> @stack_fold_fnmsub213sh_int(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v) {2051; CHECK-LABEL: stack_fold_fnmsub213sh_int:2052; CHECK:       # %bb.0:2053; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2054; CHECK-NEXT:    #APP2055; CHECK-NEXT:    nop2056; CHECK-NEXT:    #NO_APP2057; CHECK-NEXT:    vfnmsub213sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload2058; CHECK-NEXT:    retq2059  %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}"()2060  %a0 = extractelement <8 x half> %a0v, i64 02061  %a1 = extractelement <8 x half> %a1v, i64 02062  %a2 = extractelement <8 x half> %a2v, i64 02063  %neg = fneg half %a22064  %neg1 = fneg half %a12065  %2 = call half @llvm.fma.f16(half %neg1, half %a0, half %neg)2066  %res = insertelement <8 x half> %a0v, half %2, i64 02067  ret <8 x half> %res2068}2069 2070define <8 x half> @stack_fold_fnmsub231sh_int(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v) {2071; CHECK-LABEL: stack_fold_fnmsub231sh_int:2072; CHECK:       # %bb.0:2073; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2074; CHECK-NEXT:    #APP2075; CHECK-NEXT:    nop2076; CHECK-NEXT:    #NO_APP2077; CHECK-NEXT:    vfnmsub231sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload2078; CHECK-NEXT:    retq2079  %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}"()2080  %a0 = extractelement <8 x half> %a0v, i64 02081  %a1 = extractelement <8 x half> %a1v, i64 02082  %a2 = extractelement <8 x half> %a2v, i64 02083  %neg = fneg half %a02084  %neg1 = fneg half %a12085  %2 = call half @llvm.fma.f16(half %neg1, half %a2, half %neg)2086  %res = insertelement <8 x half> %a0v, half %2, i64 02087  ret <8 x half> %res2088}2089 2090define <8 x half> @stack_fold_fnmsub321sh_int(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v) {2091; CHECK-LABEL: stack_fold_fnmsub321sh_int:2092; CHECK:       # %bb.0:2093; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2094; CHECK-NEXT:    #APP2095; CHECK-NEXT:    nop2096; CHECK-NEXT:    #NO_APP2097; CHECK-NEXT:    vfnmsub231sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload2098; CHECK-NEXT:    retq2099  %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}"()2100  %a0 = extractelement <8 x half> %a0v, i64 02101  %a1 = extractelement <8 x half> %a1v, i64 02102  %a2 = extractelement <8 x half> %a2v, i64 02103  %neg = fneg half %a02104  %neg1 = fneg half %a22105  %2 = call half @llvm.fma.f16(half %neg1, half %a1, half %neg)2106  %res = insertelement <8 x half> %a0v, half %2, i64 02107  ret <8 x half> %res2108}2109 2110define <8 x half> @stack_fold_fnmsub132sh_int(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v) {2111; CHECK-LABEL: stack_fold_fnmsub132sh_int:2112; CHECK:       # %bb.0:2113; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2114; CHECK-NEXT:    #APP2115; CHECK-NEXT:    nop2116; CHECK-NEXT:    #NO_APP2117; CHECK-NEXT:    vfnmsub132sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload2118; CHECK-NEXT:    retq2119  %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}"()2120  %a0 = extractelement <8 x half> %a0v, i64 02121  %a1 = extractelement <8 x half> %a1v, i64 02122  %a2 = extractelement <8 x half> %a2v, i64 02123  %neg = fneg half %a12124  %neg1 = fneg half %a02125  %2 = call half @llvm.fma.f16(half %neg1, half %a2, half %neg)2126  %res = insertelement <8 x half> %a0v, half %2, i64 02127  ret <8 x half> %res2128}2129 2130define <8 x half> @stack_fold_fnmsub312sh_int(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v) {2131; CHECK-LABEL: stack_fold_fnmsub312sh_int:2132; CHECK:       # %bb.0:2133; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2134; CHECK-NEXT:    #APP2135; CHECK-NEXT:    nop2136; CHECK-NEXT:    #NO_APP2137; CHECK-NEXT:    vfnmsub132sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload2138; CHECK-NEXT:    retq2139  %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}"()2140  %a0 = extractelement <8 x half> %a0v, i64 02141  %a1 = extractelement <8 x half> %a1v, i64 02142  %a2 = extractelement <8 x half> %a2v, i64 02143  %neg = fneg half %a12144  %neg1 = fneg half %a22145  %2 = call half @llvm.fma.f16(half %neg1, half %a0, half %neg)2146  %res = insertelement <8 x half> %a0v, half %2, i64 02147  ret <8 x half> %res2148}2149 2150define <8 x half> @stack_fold_fmadd123sh_intk(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {2151; CHECK-LABEL: stack_fold_fmadd123sh_intk:2152; CHECK:       # %bb.0:2153; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2154; CHECK-NEXT:    #APP2155; CHECK-NEXT:    nop2156; CHECK-NEXT:    #NO_APP2157; CHECK-NEXT:    movzbl (%rdi), %eax2158; CHECK-NEXT:    kmovd %eax, %k12159; CHECK-NEXT:    vfmadd213sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} # 16-byte Folded Reload2160; CHECK-NEXT:    retq2161  %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}"()2162  %a0 = extractelement <8 x half> %a0v, i64 02163  %a1 = extractelement <8 x half> %a1v, i64 02164  %a2 = extractelement <8 x half> %a2v, i64 02165  %2 = call half @llvm.fma.f16(half %a0, half %a1, half %a2)2166  %3 = load i8, ptr %mask2167  %4 = bitcast i8 %3 to <8 x i1>2168  %5 = extractelement <8 x i1> %4, i64 02169  %6 = select i1 %5, half %2, half %a02170  %res = insertelement <8 x half> %a0v, half %6, i64 02171  ret <8 x half> %res2172}2173 2174define <8 x half> @stack_fold_fmadd213sh_intk(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {2175; CHECK-LABEL: stack_fold_fmadd213sh_intk:2176; CHECK:       # %bb.0:2177; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2178; CHECK-NEXT:    #APP2179; CHECK-NEXT:    nop2180; CHECK-NEXT:    #NO_APP2181; CHECK-NEXT:    movzbl (%rdi), %eax2182; CHECK-NEXT:    kmovd %eax, %k12183; CHECK-NEXT:    vfmadd213sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} # 16-byte Folded Reload2184; CHECK-NEXT:    retq2185  %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}"()2186  %a0 = extractelement <8 x half> %a0v, i64 02187  %a1 = extractelement <8 x half> %a1v, i64 02188  %a2 = extractelement <8 x half> %a2v, i64 02189  %2 = call half @llvm.fma.f16(half %a1, half %a0, half %a2)2190  %3 = load i8, ptr %mask2191  %4 = bitcast i8 %3 to <8 x i1>2192  %5 = extractelement <8 x i1> %4, i64 02193  %6 = select i1 %5, half %2, half %a02194  %res = insertelement <8 x half> %a0v, half %6, i64 02195  ret <8 x half> %res2196}2197 2198define <8 x half> @stack_fold_fmadd231sh_intk(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {2199; CHECK-LABEL: stack_fold_fmadd231sh_intk:2200; CHECK:       # %bb.0:2201; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2202; CHECK-NEXT:    #APP2203; CHECK-NEXT:    nop2204; CHECK-NEXT:    #NO_APP2205; CHECK-NEXT:    movzbl (%rdi), %eax2206; CHECK-NEXT:    kmovd %eax, %k12207; CHECK-NEXT:    vfmadd231sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} # 16-byte Folded Reload2208; CHECK-NEXT:    retq2209  %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}"()2210  %a0 = extractelement <8 x half> %a0v, i64 02211  %a1 = extractelement <8 x half> %a1v, i64 02212  %a2 = extractelement <8 x half> %a2v, i64 02213  %2 = call half @llvm.fma.f16(half %a1, half %a2, half %a0)2214  %3 = load i8, ptr %mask2215  %4 = bitcast i8 %3 to <8 x i1>2216  %5 = extractelement <8 x i1> %4, i64 02217  %6 = select i1 %5, half %2, half %a02218  %res = insertelement <8 x half> %a0v, half %6, i64 02219  ret <8 x half> %res2220}2221 2222define <8 x half> @stack_fold_fmadd321sh_intk(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {2223; CHECK-LABEL: stack_fold_fmadd321sh_intk:2224; CHECK:       # %bb.0:2225; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2226; CHECK-NEXT:    #APP2227; CHECK-NEXT:    nop2228; CHECK-NEXT:    #NO_APP2229; CHECK-NEXT:    movzbl (%rdi), %eax2230; CHECK-NEXT:    kmovd %eax, %k12231; CHECK-NEXT:    vfmadd231sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} # 16-byte Folded Reload2232; CHECK-NEXT:    retq2233  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()2234  %a0 = extractelement <8 x half> %a0v, i64 02235  %a1 = extractelement <8 x half> %a1v, i64 02236  %a2 = extractelement <8 x half> %a2v, i64 02237  %2 = call half @llvm.fma.f16(half %a2, half %a1, half %a0)2238  %3 = load i8, ptr %mask2239  %4 = bitcast i8 %3 to <8 x i1>2240  %5 = extractelement <8 x i1> %4, i64 02241  %6 = select i1 %5, half %2, half %a02242  %res = insertelement <8 x half> %a0v, half %6, i64 02243  ret <8 x half> %res2244}2245 2246define <8 x half> @stack_fold_fmadd132sh_intk(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {2247; CHECK-LABEL: stack_fold_fmadd132sh_intk:2248; CHECK:       # %bb.0:2249; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2250; CHECK-NEXT:    #APP2251; CHECK-NEXT:    nop2252; CHECK-NEXT:    #NO_APP2253; CHECK-NEXT:    movzbl (%rdi), %eax2254; CHECK-NEXT:    kmovd %eax, %k12255; CHECK-NEXT:    vfmadd132sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} # 16-byte Folded Reload2256; CHECK-NEXT:    retq2257  %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}"()2258  %a0 = extractelement <8 x half> %a0v, i64 02259  %a1 = extractelement <8 x half> %a1v, i64 02260  %a2 = extractelement <8 x half> %a2v, i64 02261  %2 = call half @llvm.fma.f16(half %a0, half %a2, half %a1)2262  %3 = load i8, ptr %mask2263  %4 = bitcast i8 %3 to <8 x i1>2264  %5 = extractelement <8 x i1> %4, i64 02265  %6 = select i1 %5, half %2, half %a02266  %res = insertelement <8 x half> %a0v, half %6, i64 02267  ret <8 x half> %res2268}2269 2270define <8 x half> @stack_fold_fmadd312sh_intk(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {2271; CHECK-LABEL: stack_fold_fmadd312sh_intk:2272; CHECK:       # %bb.0:2273; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2274; CHECK-NEXT:    #APP2275; CHECK-NEXT:    nop2276; CHECK-NEXT:    #NO_APP2277; CHECK-NEXT:    movzbl (%rdi), %eax2278; CHECK-NEXT:    kmovd %eax, %k12279; CHECK-NEXT:    vfmadd132sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} # 16-byte Folded Reload2280; CHECK-NEXT:    retq2281  %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}"()2282  %a0 = extractelement <8 x half> %a0v, i64 02283  %a1 = extractelement <8 x half> %a1v, i64 02284  %a2 = extractelement <8 x half> %a2v, i64 02285  %2 = call half @llvm.fma.f16(half %a2, half %a0, half %a1)2286  %3 = load i8, ptr %mask2287  %4 = bitcast i8 %3 to <8 x i1>2288  %5 = extractelement <8 x i1> %4, i64 02289  %6 = select i1 %5, half %2, half %a02290  %res = insertelement <8 x half> %a0v, half %6, i64 02291  ret <8 x half> %res2292}2293 2294define <8 x half> @stack_fold_fmsub123sh_intk(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {2295; CHECK-LABEL: stack_fold_fmsub123sh_intk:2296; CHECK:       # %bb.0:2297; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2298; CHECK-NEXT:    #APP2299; CHECK-NEXT:    nop2300; CHECK-NEXT:    #NO_APP2301; CHECK-NEXT:    movzbl (%rdi), %eax2302; CHECK-NEXT:    kmovd %eax, %k12303; CHECK-NEXT:    vfmsub213sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} # 16-byte Folded Reload2304; CHECK-NEXT:    retq2305  %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}"()2306  %a0 = extractelement <8 x half> %a0v, i64 02307  %a1 = extractelement <8 x half> %a1v, i64 02308  %a2 = extractelement <8 x half> %a2v, i64 02309  %neg = fneg half %a22310  %2 = call half @llvm.fma.f16(half %a0, half %a1, half %neg)2311  %3 = load i8, ptr %mask2312  %4 = bitcast i8 %3 to <8 x i1>2313  %5 = extractelement <8 x i1> %4, i64 02314  %6 = select i1 %5, half %2, half %a02315  %res = insertelement <8 x half> %a0v, half %6, i64 02316  ret <8 x half> %res2317}2318 2319define <8 x half> @stack_fold_fmsub213sh_intk(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {2320; CHECK-LABEL: stack_fold_fmsub213sh_intk:2321; CHECK:       # %bb.0:2322; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2323; CHECK-NEXT:    #APP2324; CHECK-NEXT:    nop2325; CHECK-NEXT:    #NO_APP2326; CHECK-NEXT:    movzbl (%rdi), %eax2327; CHECK-NEXT:    kmovd %eax, %k12328; CHECK-NEXT:    vfmsub213sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} # 16-byte Folded Reload2329; CHECK-NEXT:    retq2330  %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}"()2331  %a0 = extractelement <8 x half> %a0v, i64 02332  %a1 = extractelement <8 x half> %a1v, i64 02333  %a2 = extractelement <8 x half> %a2v, i64 02334  %neg = fneg half %a22335  %2 = call half @llvm.fma.f16(half %a1, half %a0, half %neg)2336  %3 = load i8, ptr %mask2337  %4 = bitcast i8 %3 to <8 x i1>2338  %5 = extractelement <8 x i1> %4, i64 02339  %6 = select i1 %5, half %2, half %a02340  %res = insertelement <8 x half> %a0v, half %6, i64 02341  ret <8 x half> %res2342}2343 2344define <8 x half> @stack_fold_fmsub231sh_intk(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {2345; CHECK-LABEL: stack_fold_fmsub231sh_intk:2346; CHECK:       # %bb.0:2347; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2348; CHECK-NEXT:    #APP2349; CHECK-NEXT:    nop2350; CHECK-NEXT:    #NO_APP2351; CHECK-NEXT:    movzbl (%rdi), %eax2352; CHECK-NEXT:    kmovd %eax, %k12353; CHECK-NEXT:    vfmsub231sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} # 16-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  %a0 = extractelement <8 x half> %a0v, i64 02357  %a1 = extractelement <8 x half> %a1v, i64 02358  %a2 = extractelement <8 x half> %a2v, i64 02359  %neg = fneg half %a02360  %2 = call half @llvm.fma.f16(half %a1, half %a2, half %neg)2361  %3 = load i8, ptr %mask2362  %4 = bitcast i8 %3 to <8 x i1>2363  %5 = extractelement <8 x i1> %4, i64 02364  %6 = select i1 %5, half %2, half %a02365  %res = insertelement <8 x half> %a0v, half %6, i64 02366  ret <8 x half> %res2367}2368 2369define <8 x half> @stack_fold_fmsub321sh_intk(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {2370; CHECK-LABEL: stack_fold_fmsub321sh_intk:2371; CHECK:       # %bb.0:2372; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2373; CHECK-NEXT:    #APP2374; CHECK-NEXT:    nop2375; CHECK-NEXT:    #NO_APP2376; CHECK-NEXT:    movzbl (%rdi), %eax2377; CHECK-NEXT:    kmovd %eax, %k12378; CHECK-NEXT:    vfmsub231sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} # 16-byte Folded Reload2379; CHECK-NEXT:    retq2380  %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}"()2381  %a0 = extractelement <8 x half> %a0v, i64 02382  %a1 = extractelement <8 x half> %a1v, i64 02383  %a2 = extractelement <8 x half> %a2v, i64 02384  %neg = fneg half %a02385  %2 = call half @llvm.fma.f16(half %a2, half %a1, half %neg)2386  %3 = load i8, ptr %mask2387  %4 = bitcast i8 %3 to <8 x i1>2388  %5 = extractelement <8 x i1> %4, i64 02389  %6 = select i1 %5, half %2, half %a02390  %res = insertelement <8 x half> %a0v, half %6, i64 02391  ret <8 x half> %res2392}2393 2394define <8 x half> @stack_fold_fmsub132sh_intk(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {2395; CHECK-LABEL: stack_fold_fmsub132sh_intk:2396; CHECK:       # %bb.0:2397; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2398; CHECK-NEXT:    #APP2399; CHECK-NEXT:    nop2400; CHECK-NEXT:    #NO_APP2401; CHECK-NEXT:    movzbl (%rdi), %eax2402; CHECK-NEXT:    kmovd %eax, %k12403; CHECK-NEXT:    vfmsub132sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} # 16-byte Folded Reload2404; CHECK-NEXT:    retq2405  %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}"()2406  %a0 = extractelement <8 x half> %a0v, i64 02407  %a1 = extractelement <8 x half> %a1v, i64 02408  %a2 = extractelement <8 x half> %a2v, i64 02409  %neg = fneg half %a12410  %2 = call half @llvm.fma.f16(half %a0, half %a2, half %neg)2411  %3 = load i8, ptr %mask2412  %4 = bitcast i8 %3 to <8 x i1>2413  %5 = extractelement <8 x i1> %4, i64 02414  %6 = select i1 %5, half %2, half %a02415  %res = insertelement <8 x half> %a0v, half %6, i64 02416  ret <8 x half> %res2417}2418 2419define <8 x half> @stack_fold_fmsub312sh_intk(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {2420; CHECK-LABEL: stack_fold_fmsub312sh_intk:2421; CHECK:       # %bb.0:2422; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2423; CHECK-NEXT:    #APP2424; CHECK-NEXT:    nop2425; CHECK-NEXT:    #NO_APP2426; CHECK-NEXT:    movzbl (%rdi), %eax2427; CHECK-NEXT:    kmovd %eax, %k12428; CHECK-NEXT:    vfmsub132sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} # 16-byte Folded Reload2429; CHECK-NEXT:    retq2430  %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}"()2431  %a0 = extractelement <8 x half> %a0v, i64 02432  %a1 = extractelement <8 x half> %a1v, i64 02433  %a2 = extractelement <8 x half> %a2v, i64 02434  %neg = fneg half %a12435  %2 = call half @llvm.fma.f16(half %a2, half %a0, half %neg)2436  %3 = load i8, ptr %mask2437  %4 = bitcast i8 %3 to <8 x i1>2438  %5 = extractelement <8 x i1> %4, i64 02439  %6 = select i1 %5, half %2, half %a02440  %res = insertelement <8 x half> %a0v, half %6, i64 02441  ret <8 x half> %res2442}2443 2444define <8 x half> @stack_fold_fnmadd123sh_intk(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {2445; CHECK-LABEL: stack_fold_fnmadd123sh_intk:2446; CHECK:       # %bb.0:2447; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2448; CHECK-NEXT:    #APP2449; CHECK-NEXT:    nop2450; CHECK-NEXT:    #NO_APP2451; CHECK-NEXT:    movzbl (%rdi), %eax2452; CHECK-NEXT:    kmovd %eax, %k12453; CHECK-NEXT:    vfnmadd213sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} # 16-byte Folded Reload2454; CHECK-NEXT:    retq2455  %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}"()2456  %a0 = extractelement <8 x half> %a0v, i64 02457  %a1 = extractelement <8 x half> %a1v, i64 02458  %a2 = extractelement <8 x half> %a2v, i64 02459  %neg1 = fneg half %a02460  %2 = call half @llvm.fma.f16(half %neg1, half %a1, half %a2)2461  %3 = load i8, ptr %mask2462  %4 = bitcast i8 %3 to <8 x i1>2463  %5 = extractelement <8 x i1> %4, i64 02464  %6 = select i1 %5, half %2, half %a02465  %res = insertelement <8 x half> %a0v, half %6, i64 02466  ret <8 x half> %res2467}2468 2469define <8 x half> @stack_fold_fnmadd213sh_intk(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {2470; CHECK-LABEL: stack_fold_fnmadd213sh_intk:2471; CHECK:       # %bb.0:2472; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2473; CHECK-NEXT:    #APP2474; CHECK-NEXT:    nop2475; CHECK-NEXT:    #NO_APP2476; CHECK-NEXT:    movzbl (%rdi), %eax2477; CHECK-NEXT:    kmovd %eax, %k12478; CHECK-NEXT:    vfnmadd213sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} # 16-byte Folded Reload2479; CHECK-NEXT:    retq2480  %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}"()2481  %a0 = extractelement <8 x half> %a0v, i64 02482  %a1 = extractelement <8 x half> %a1v, i64 02483  %a2 = extractelement <8 x half> %a2v, i64 02484  %neg1 = fneg half %a12485  %2 = call half @llvm.fma.f16(half %neg1, half %a0, half %a2)2486  %3 = load i8, ptr %mask2487  %4 = bitcast i8 %3 to <8 x i1>2488  %5 = extractelement <8 x i1> %4, i64 02489  %6 = select i1 %5, half %2, half %a02490  %res = insertelement <8 x half> %a0v, half %6, i64 02491  ret <8 x half> %res2492}2493 2494define <8 x half> @stack_fold_fnmadd231sh_intk(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {2495; CHECK-LABEL: stack_fold_fnmadd231sh_intk:2496; CHECK:       # %bb.0:2497; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2498; CHECK-NEXT:    #APP2499; CHECK-NEXT:    nop2500; CHECK-NEXT:    #NO_APP2501; CHECK-NEXT:    movzbl (%rdi), %eax2502; CHECK-NEXT:    kmovd %eax, %k12503; CHECK-NEXT:    vfnmadd231sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} # 16-byte Folded Reload2504; CHECK-NEXT:    retq2505  %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}"()2506  %a0 = extractelement <8 x half> %a0v, i64 02507  %a1 = extractelement <8 x half> %a1v, i64 02508  %a2 = extractelement <8 x half> %a2v, i64 02509  %neg1 = fneg half %a12510  %2 = call half @llvm.fma.f16(half %neg1, half %a2, half %a0)2511  %3 = load i8, ptr %mask2512  %4 = bitcast i8 %3 to <8 x i1>2513  %5 = extractelement <8 x i1> %4, i64 02514  %6 = select i1 %5, half %2, half %a02515  %res = insertelement <8 x half> %a0v, half %6, i64 02516  ret <8 x half> %res2517}2518 2519define <8 x half> @stack_fold_fnmadd321sh_intk(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {2520; CHECK-LABEL: stack_fold_fnmadd321sh_intk:2521; CHECK:       # %bb.0:2522; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2523; CHECK-NEXT:    #APP2524; CHECK-NEXT:    nop2525; CHECK-NEXT:    #NO_APP2526; CHECK-NEXT:    movzbl (%rdi), %eax2527; CHECK-NEXT:    kmovd %eax, %k12528; CHECK-NEXT:    vfnmadd231sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} # 16-byte Folded Reload2529; CHECK-NEXT:    retq2530  %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}"()2531  %a0 = extractelement <8 x half> %a0v, i64 02532  %a1 = extractelement <8 x half> %a1v, i64 02533  %a2 = extractelement <8 x half> %a2v, i64 02534  %neg1 = fneg half %a22535  %2 = call half @llvm.fma.f16(half %neg1, half %a1, half %a0)2536  %3 = load i8, ptr %mask2537  %4 = bitcast i8 %3 to <8 x i1>2538  %5 = extractelement <8 x i1> %4, i64 02539  %6 = select i1 %5, half %2, half %a02540  %res = insertelement <8 x half> %a0v, half %6, i64 02541  ret <8 x half> %res2542}2543 2544define <8 x half> @stack_fold_fnmadd132sh_intk(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {2545; CHECK-LABEL: stack_fold_fnmadd132sh_intk:2546; CHECK:       # %bb.0:2547; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2548; CHECK-NEXT:    #APP2549; CHECK-NEXT:    nop2550; CHECK-NEXT:    #NO_APP2551; CHECK-NEXT:    movzbl (%rdi), %eax2552; CHECK-NEXT:    kmovd %eax, %k12553; CHECK-NEXT:    vfnmadd132sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} # 16-byte Folded Reload2554; CHECK-NEXT:    retq2555  %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}"()2556  %a0 = extractelement <8 x half> %a0v, i64 02557  %a1 = extractelement <8 x half> %a1v, i64 02558  %a2 = extractelement <8 x half> %a2v, i64 02559  %neg1 = fneg half %a02560  %2 = call half @llvm.fma.f16(half %neg1, half %a2, half %a1)2561  %3 = load i8, ptr %mask2562  %4 = bitcast i8 %3 to <8 x i1>2563  %5 = extractelement <8 x i1> %4, i64 02564  %6 = select i1 %5, half %2, half %a02565  %res = insertelement <8 x half> %a0v, half %6, i64 02566  ret <8 x half> %res2567}2568 2569define <8 x half> @stack_fold_fnmadd312sh_intk(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {2570; CHECK-LABEL: stack_fold_fnmadd312sh_intk:2571; CHECK:       # %bb.0:2572; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2573; CHECK-NEXT:    #APP2574; CHECK-NEXT:    nop2575; CHECK-NEXT:    #NO_APP2576; CHECK-NEXT:    movzbl (%rdi), %eax2577; CHECK-NEXT:    kmovd %eax, %k12578; CHECK-NEXT:    vfnmadd132sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} # 16-byte Folded Reload2579; CHECK-NEXT:    retq2580  %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}"()2581  %a0 = extractelement <8 x half> %a0v, i64 02582  %a1 = extractelement <8 x half> %a1v, i64 02583  %a2 = extractelement <8 x half> %a2v, i64 02584  %neg1 = fneg half %a22585  %2 = call half @llvm.fma.f16(half %neg1, half %a0, half %a1)2586  %3 = load i8, ptr %mask2587  %4 = bitcast i8 %3 to <8 x i1>2588  %5 = extractelement <8 x i1> %4, i64 02589  %6 = select i1 %5, half %2, half %a02590  %res = insertelement <8 x half> %a0v, half %6, i64 02591  ret <8 x half> %res2592}2593 2594define <8 x half> @stack_fold_fnmsub123sh_intk(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {2595; CHECK-LABEL: stack_fold_fnmsub123sh_intk:2596; CHECK:       # %bb.0:2597; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2598; CHECK-NEXT:    #APP2599; CHECK-NEXT:    nop2600; CHECK-NEXT:    #NO_APP2601; CHECK-NEXT:    movzbl (%rdi), %eax2602; CHECK-NEXT:    kmovd %eax, %k12603; CHECK-NEXT:    vfnmsub213sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} # 16-byte Folded Reload2604; CHECK-NEXT:    retq2605  %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}"()2606  %a0 = extractelement <8 x half> %a0v, i64 02607  %a1 = extractelement <8 x half> %a1v, i64 02608  %a2 = extractelement <8 x half> %a2v, i64 02609  %neg = fneg half %a22610  %neg1 = fneg half %a02611  %2 = call half @llvm.fma.f16(half %neg1, half %a1, half %neg)2612  %3 = load i8, ptr %mask2613  %4 = bitcast i8 %3 to <8 x i1>2614  %5 = extractelement <8 x i1> %4, i64 02615  %6 = select i1 %5, half %2, half %a02616  %res = insertelement <8 x half> %a0v, half %6, i64 02617  ret <8 x half> %res2618}2619 2620define <8 x half> @stack_fold_fnmsub213sh_intk(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {2621; CHECK-LABEL: stack_fold_fnmsub213sh_intk:2622; CHECK:       # %bb.0:2623; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2624; CHECK-NEXT:    #APP2625; CHECK-NEXT:    nop2626; CHECK-NEXT:    #NO_APP2627; CHECK-NEXT:    movzbl (%rdi), %eax2628; CHECK-NEXT:    kmovd %eax, %k12629; CHECK-NEXT:    vfnmsub213sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} # 16-byte Folded Reload2630; CHECK-NEXT:    retq2631  %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}"()2632  %a0 = extractelement <8 x half> %a0v, i64 02633  %a1 = extractelement <8 x half> %a1v, i64 02634  %a2 = extractelement <8 x half> %a2v, i64 02635  %neg = fneg half %a22636  %neg1 = fneg half %a12637  %2 = call half @llvm.fma.f16(half %neg1, half %a0, half %neg)2638  %3 = load i8, ptr %mask2639  %4 = bitcast i8 %3 to <8 x i1>2640  %5 = extractelement <8 x i1> %4, i64 02641  %6 = select i1 %5, half %2, half %a02642  %res = insertelement <8 x half> %a0v, half %6, i64 02643  ret <8 x half> %res2644}2645 2646define <8 x half> @stack_fold_fnmsub231sh_intk(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {2647; CHECK-LABEL: stack_fold_fnmsub231sh_intk:2648; CHECK:       # %bb.0:2649; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2650; CHECK-NEXT:    #APP2651; CHECK-NEXT:    nop2652; CHECK-NEXT:    #NO_APP2653; CHECK-NEXT:    movzbl (%rdi), %eax2654; CHECK-NEXT:    kmovd %eax, %k12655; CHECK-NEXT:    vfnmsub231sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} # 16-byte Folded Reload2656; CHECK-NEXT:    retq2657  %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}"()2658  %a0 = extractelement <8 x half> %a0v, i64 02659  %a1 = extractelement <8 x half> %a1v, i64 02660  %a2 = extractelement <8 x half> %a2v, i64 02661  %neg = fneg half %a02662  %neg1 = fneg half %a12663  %2 = call half @llvm.fma.f16(half %neg1, half %a2, half %neg)2664  %3 = load i8, ptr %mask2665  %4 = bitcast i8 %3 to <8 x i1>2666  %5 = extractelement <8 x i1> %4, i64 02667  %6 = select i1 %5, half %2, half %a02668  %res = insertelement <8 x half> %a0v, half %6, i64 02669  ret <8 x half> %res2670}2671 2672define <8 x half> @stack_fold_fnmsub321sh_intk(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {2673; CHECK-LABEL: stack_fold_fnmsub321sh_intk:2674; CHECK:       # %bb.0:2675; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2676; CHECK-NEXT:    #APP2677; CHECK-NEXT:    nop2678; CHECK-NEXT:    #NO_APP2679; CHECK-NEXT:    movzbl (%rdi), %eax2680; CHECK-NEXT:    kmovd %eax, %k12681; CHECK-NEXT:    vfnmsub231sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} # 16-byte Folded Reload2682; CHECK-NEXT:    retq2683  %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}"()2684  %a0 = extractelement <8 x half> %a0v, i64 02685  %a1 = extractelement <8 x half> %a1v, i64 02686  %a2 = extractelement <8 x half> %a2v, i64 02687  %neg = fneg half %a02688  %neg1 = fneg half %a22689  %2 = call half @llvm.fma.f16(half %neg1, half %a1, half %neg)2690  %3 = load i8, ptr %mask2691  %4 = bitcast i8 %3 to <8 x i1>2692  %5 = extractelement <8 x i1> %4, i64 02693  %6 = select i1 %5, half %2, half %a02694  %res = insertelement <8 x half> %a0v, half %6, i64 02695  ret <8 x half> %res2696}2697 2698define <8 x half> @stack_fold_fnmsub132sh_intk(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {2699; CHECK-LABEL: stack_fold_fnmsub132sh_intk:2700; CHECK:       # %bb.0:2701; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2702; CHECK-NEXT:    #APP2703; CHECK-NEXT:    nop2704; CHECK-NEXT:    #NO_APP2705; CHECK-NEXT:    movzbl (%rdi), %eax2706; CHECK-NEXT:    kmovd %eax, %k12707; CHECK-NEXT:    vfnmsub132sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} # 16-byte Folded Reload2708; CHECK-NEXT:    retq2709  %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}"()2710  %a0 = extractelement <8 x half> %a0v, i64 02711  %a1 = extractelement <8 x half> %a1v, i64 02712  %a2 = extractelement <8 x half> %a2v, i64 02713  %neg = fneg half %a12714  %neg1 = fneg half %a02715  %2 = call half @llvm.fma.f16(half %neg1, half %a2, half %neg)2716  %3 = load i8, ptr %mask2717  %4 = bitcast i8 %3 to <8 x i1>2718  %5 = extractelement <8 x i1> %4, i64 02719  %6 = select i1 %5, half %2, half %a02720  %res = insertelement <8 x half> %a0v, half %6, i64 02721  ret <8 x half> %res2722}2723 2724define <8 x half> @stack_fold_fnmsub312sh_intk(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {2725; CHECK-LABEL: stack_fold_fnmsub312sh_intk:2726; CHECK:       # %bb.0:2727; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2728; CHECK-NEXT:    #APP2729; CHECK-NEXT:    nop2730; CHECK-NEXT:    #NO_APP2731; CHECK-NEXT:    movzbl (%rdi), %eax2732; CHECK-NEXT:    kmovd %eax, %k12733; CHECK-NEXT:    vfnmsub132sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} # 16-byte Folded Reload2734; CHECK-NEXT:    retq2735  %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}"()2736  %a0 = extractelement <8 x half> %a0v, i64 02737  %a1 = extractelement <8 x half> %a1v, i64 02738  %a2 = extractelement <8 x half> %a2v, i64 02739  %neg = fneg half %a12740  %neg1 = fneg half %a22741  %2 = call half @llvm.fma.f16(half %neg1, half %a0, half %neg)2742  %3 = load i8, ptr %mask2743  %4 = bitcast i8 %3 to <8 x i1>2744  %5 = extractelement <8 x i1> %4, i64 02745  %6 = select i1 %5, half %2, half %a02746  %res = insertelement <8 x half> %a0v, half %6, i64 02747  ret <8 x half> %res2748}2749 2750define <8 x half> @stack_fold_fmadd123sh_intkz(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {2751; CHECK-LABEL: stack_fold_fmadd123sh_intkz:2752; CHECK:       # %bb.0:2753; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2754; CHECK-NEXT:    #APP2755; CHECK-NEXT:    nop2756; CHECK-NEXT:    #NO_APP2757; CHECK-NEXT:    movzbl (%rdi), %eax2758; CHECK-NEXT:    kmovd %eax, %k12759; CHECK-NEXT:    vfmadd213sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload2760; CHECK-NEXT:    retq2761  %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}"()2762  %a0 = extractelement <8 x half> %a0v, i64 02763  %a1 = extractelement <8 x half> %a1v, i64 02764  %a2 = extractelement <8 x half> %a2v, i64 02765  %2 = call half @llvm.fma.f16(half %a0, half %a1, half %a2)2766  %3 = load i8, ptr %mask2767  %4 = bitcast i8 %3 to <8 x i1>2768  %5 = extractelement <8 x i1> %4, i64 02769  %6 = select i1 %5, half %2, half zeroinitializer2770  %res = insertelement <8 x half> %a0v, half %6, i64 02771  ret <8 x half> %res2772}2773 2774define <8 x half> @stack_fold_fmadd213sh_intkz(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {2775; CHECK-LABEL: stack_fold_fmadd213sh_intkz:2776; CHECK:       # %bb.0:2777; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2778; CHECK-NEXT:    #APP2779; CHECK-NEXT:    nop2780; CHECK-NEXT:    #NO_APP2781; CHECK-NEXT:    movzbl (%rdi), %eax2782; CHECK-NEXT:    kmovd %eax, %k12783; CHECK-NEXT:    vfmadd213sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload2784; CHECK-NEXT:    retq2785  %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}"()2786  %a0 = extractelement <8 x half> %a0v, i64 02787  %a1 = extractelement <8 x half> %a1v, i64 02788  %a2 = extractelement <8 x half> %a2v, i64 02789  %2 = call half @llvm.fma.f16(half %a1, half %a0, half %a2)2790  %3 = load i8, ptr %mask2791  %4 = bitcast i8 %3 to <8 x i1>2792  %5 = extractelement <8 x i1> %4, i64 02793  %6 = select i1 %5, half %2, half zeroinitializer2794  %res = insertelement <8 x half> %a0v, half %6, i64 02795  ret <8 x half> %res2796}2797 2798define <8 x half> @stack_fold_fmadd231sh_intkz(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {2799; CHECK-LABEL: stack_fold_fmadd231sh_intkz:2800; CHECK:       # %bb.0:2801; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2802; CHECK-NEXT:    #APP2803; CHECK-NEXT:    nop2804; CHECK-NEXT:    #NO_APP2805; CHECK-NEXT:    movzbl (%rdi), %eax2806; CHECK-NEXT:    kmovd %eax, %k12807; CHECK-NEXT:    vfmadd231sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload2808; CHECK-NEXT:    retq2809  %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}"()2810  %a0 = extractelement <8 x half> %a0v, i64 02811  %a1 = extractelement <8 x half> %a1v, i64 02812  %a2 = extractelement <8 x half> %a2v, i64 02813  %2 = call half @llvm.fma.f16(half %a1, half %a2, half %a0)2814  %3 = load i8, ptr %mask2815  %4 = bitcast i8 %3 to <8 x i1>2816  %5 = extractelement <8 x i1> %4, i64 02817  %6 = select i1 %5, half %2, half zeroinitializer2818  %res = insertelement <8 x half> %a0v, half %6, i64 02819  ret <8 x half> %res2820}2821 2822define <8 x half> @stack_fold_fmadd321sh_intkz(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {2823; CHECK-LABEL: stack_fold_fmadd321sh_intkz:2824; CHECK:       # %bb.0:2825; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2826; CHECK-NEXT:    #APP2827; CHECK-NEXT:    nop2828; CHECK-NEXT:    #NO_APP2829; CHECK-NEXT:    movzbl (%rdi), %eax2830; CHECK-NEXT:    kmovd %eax, %k12831; CHECK-NEXT:    vfmadd231sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload2832; CHECK-NEXT:    retq2833  %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}"()2834  %a0 = extractelement <8 x half> %a0v, i64 02835  %a1 = extractelement <8 x half> %a1v, i64 02836  %a2 = extractelement <8 x half> %a2v, i64 02837  %2 = call half @llvm.fma.f16(half %a2, half %a1, half %a0)2838  %3 = load i8, ptr %mask2839  %4 = bitcast i8 %3 to <8 x i1>2840  %5 = extractelement <8 x i1> %4, i64 02841  %6 = select i1 %5, half %2, half zeroinitializer2842  %res = insertelement <8 x half> %a0v, half %6, i64 02843  ret <8 x half> %res2844}2845 2846define <8 x half> @stack_fold_fmadd132sh_intkz(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {2847; CHECK-LABEL: stack_fold_fmadd132sh_intkz:2848; CHECK:       # %bb.0:2849; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2850; CHECK-NEXT:    #APP2851; CHECK-NEXT:    nop2852; CHECK-NEXT:    #NO_APP2853; CHECK-NEXT:    movzbl (%rdi), %eax2854; CHECK-NEXT:    kmovd %eax, %k12855; CHECK-NEXT:    vfmadd132sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload2856; CHECK-NEXT:    retq2857  %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}"()2858  %a0 = extractelement <8 x half> %a0v, i64 02859  %a1 = extractelement <8 x half> %a1v, i64 02860  %a2 = extractelement <8 x half> %a2v, i64 02861  %2 = call half @llvm.fma.f16(half %a0, half %a2, half %a1)2862  %3 = load i8, ptr %mask2863  %4 = bitcast i8 %3 to <8 x i1>2864  %5 = extractelement <8 x i1> %4, i64 02865  %6 = select i1 %5, half %2, half zeroinitializer2866  %res = insertelement <8 x half> %a0v, half %6, i64 02867  ret <8 x half> %res2868}2869 2870define <8 x half> @stack_fold_fmadd312sh_intkz(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {2871; CHECK-LABEL: stack_fold_fmadd312sh_intkz:2872; CHECK:       # %bb.0:2873; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2874; CHECK-NEXT:    #APP2875; CHECK-NEXT:    nop2876; CHECK-NEXT:    #NO_APP2877; CHECK-NEXT:    movzbl (%rdi), %eax2878; CHECK-NEXT:    kmovd %eax, %k12879; CHECK-NEXT:    vfmadd132sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload2880; CHECK-NEXT:    retq2881  %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}"()2882  %a0 = extractelement <8 x half> %a0v, i64 02883  %a1 = extractelement <8 x half> %a1v, i64 02884  %a2 = extractelement <8 x half> %a2v, i64 02885  %2 = call half @llvm.fma.f16(half %a2, half %a0, half %a1)2886  %3 = load i8, ptr %mask2887  %4 = bitcast i8 %3 to <8 x i1>2888  %5 = extractelement <8 x i1> %4, i64 02889  %6 = select i1 %5, half %2, half zeroinitializer2890  %res = insertelement <8 x half> %a0v, half %6, i64 02891  ret <8 x half> %res2892}2893 2894define <8 x half> @stack_fold_fmsub123sh_intkz(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {2895; CHECK-LABEL: stack_fold_fmsub123sh_intkz:2896; CHECK:       # %bb.0:2897; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2898; CHECK-NEXT:    #APP2899; CHECK-NEXT:    nop2900; CHECK-NEXT:    #NO_APP2901; CHECK-NEXT:    movzbl (%rdi), %eax2902; CHECK-NEXT:    kmovd %eax, %k12903; CHECK-NEXT:    vfmsub213sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload2904; CHECK-NEXT:    retq2905  %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}"()2906  %a0 = extractelement <8 x half> %a0v, i64 02907  %a1 = extractelement <8 x half> %a1v, i64 02908  %a2 = extractelement <8 x half> %a2v, i64 02909  %neg = fneg half %a22910  %2 = call half @llvm.fma.f16(half %a0, half %a1, half %neg)2911  %3 = load i8, ptr %mask2912  %4 = bitcast i8 %3 to <8 x i1>2913  %5 = extractelement <8 x i1> %4, i64 02914  %6 = select i1 %5, half %2, half zeroinitializer2915  %res = insertelement <8 x half> %a0v, half %6, i64 02916  ret <8 x half> %res2917}2918 2919define <8 x half> @stack_fold_fmsub213sh_intkz(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {2920; CHECK-LABEL: stack_fold_fmsub213sh_intkz:2921; CHECK:       # %bb.0:2922; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2923; CHECK-NEXT:    #APP2924; CHECK-NEXT:    nop2925; CHECK-NEXT:    #NO_APP2926; CHECK-NEXT:    movzbl (%rdi), %eax2927; CHECK-NEXT:    kmovd %eax, %k12928; CHECK-NEXT:    vfmsub213sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload2929; CHECK-NEXT:    retq2930  %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}"()2931  %a0 = extractelement <8 x half> %a0v, i64 02932  %a1 = extractelement <8 x half> %a1v, i64 02933  %a2 = extractelement <8 x half> %a2v, i64 02934  %neg = fneg half %a22935  %2 = call half @llvm.fma.f16(half %a1, half %a0, half %neg)2936  %3 = load i8, ptr %mask2937  %4 = bitcast i8 %3 to <8 x i1>2938  %5 = extractelement <8 x i1> %4, i64 02939  %6 = select i1 %5, half %2, half zeroinitializer2940  %res = insertelement <8 x half> %a0v, half %6, i64 02941  ret <8 x half> %res2942}2943 2944define <8 x half> @stack_fold_fmsub231sh_intkz(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {2945; CHECK-LABEL: stack_fold_fmsub231sh_intkz:2946; CHECK:       # %bb.0:2947; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2948; CHECK-NEXT:    #APP2949; CHECK-NEXT:    nop2950; CHECK-NEXT:    #NO_APP2951; CHECK-NEXT:    movzbl (%rdi), %eax2952; CHECK-NEXT:    kmovd %eax, %k12953; CHECK-NEXT:    vfmsub231sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload2954; CHECK-NEXT:    retq2955  %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}"()2956  %a0 = extractelement <8 x half> %a0v, i64 02957  %a1 = extractelement <8 x half> %a1v, i64 02958  %a2 = extractelement <8 x half> %a2v, i64 02959  %neg = fneg half %a02960  %2 = call half @llvm.fma.f16(half %a1, half %a2, half %neg)2961  %3 = load i8, ptr %mask2962  %4 = bitcast i8 %3 to <8 x i1>2963  %5 = extractelement <8 x i1> %4, i64 02964  %6 = select i1 %5, half %2, half zeroinitializer2965  %res = insertelement <8 x half> %a0v, half %6, i64 02966  ret <8 x half> %res2967}2968 2969define <8 x half> @stack_fold_fmsub321sh_intkz(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {2970; CHECK-LABEL: stack_fold_fmsub321sh_intkz:2971; CHECK:       # %bb.0:2972; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2973; CHECK-NEXT:    #APP2974; CHECK-NEXT:    nop2975; CHECK-NEXT:    #NO_APP2976; CHECK-NEXT:    movzbl (%rdi), %eax2977; CHECK-NEXT:    kmovd %eax, %k12978; CHECK-NEXT:    vfmsub231sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload2979; CHECK-NEXT:    retq2980  %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}"()2981  %a0 = extractelement <8 x half> %a0v, i64 02982  %a1 = extractelement <8 x half> %a1v, i64 02983  %a2 = extractelement <8 x half> %a2v, i64 02984  %neg = fneg half %a02985  %2 = call half @llvm.fma.f16(half %a2, half %a1, half %neg)2986  %3 = load i8, ptr %mask2987  %4 = bitcast i8 %3 to <8 x i1>2988  %5 = extractelement <8 x i1> %4, i64 02989  %6 = select i1 %5, half %2, half zeroinitializer2990  %res = insertelement <8 x half> %a0v, half %6, i64 02991  ret <8 x half> %res2992}2993 2994define <8 x half> @stack_fold_fmsub132sh_intkz(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {2995; CHECK-LABEL: stack_fold_fmsub132sh_intkz:2996; CHECK:       # %bb.0:2997; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2998; CHECK-NEXT:    #APP2999; CHECK-NEXT:    nop3000; CHECK-NEXT:    #NO_APP3001; CHECK-NEXT:    movzbl (%rdi), %eax3002; CHECK-NEXT:    kmovd %eax, %k13003; CHECK-NEXT:    vfmsub132sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload3004; CHECK-NEXT:    retq3005  %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}"()3006  %a0 = extractelement <8 x half> %a0v, i64 03007  %a1 = extractelement <8 x half> %a1v, i64 03008  %a2 = extractelement <8 x half> %a2v, i64 03009  %neg = fneg half %a13010  %2 = call half @llvm.fma.f16(half %a0, half %a2, half %neg)3011  %3 = load i8, ptr %mask3012  %4 = bitcast i8 %3 to <8 x i1>3013  %5 = extractelement <8 x i1> %4, i64 03014  %6 = select i1 %5, half %2, half zeroinitializer3015  %res = insertelement <8 x half> %a0v, half %6, i64 03016  ret <8 x half> %res3017}3018 3019define <8 x half> @stack_fold_fmsub312sh_intkz(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {3020; CHECK-LABEL: stack_fold_fmsub312sh_intkz:3021; CHECK:       # %bb.0:3022; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3023; CHECK-NEXT:    #APP3024; CHECK-NEXT:    nop3025; CHECK-NEXT:    #NO_APP3026; CHECK-NEXT:    movzbl (%rdi), %eax3027; CHECK-NEXT:    kmovd %eax, %k13028; CHECK-NEXT:    vfmsub132sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload3029; CHECK-NEXT:    retq3030  %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}"()3031  %a0 = extractelement <8 x half> %a0v, i64 03032  %a1 = extractelement <8 x half> %a1v, i64 03033  %a2 = extractelement <8 x half> %a2v, i64 03034  %neg = fneg half %a13035  %2 = call half @llvm.fma.f16(half %a2, half %a0, half %neg)3036  %3 = load i8, ptr %mask3037  %4 = bitcast i8 %3 to <8 x i1>3038  %5 = extractelement <8 x i1> %4, i64 03039  %6 = select i1 %5, half %2, half zeroinitializer3040  %res = insertelement <8 x half> %a0v, half %6, i64 03041  ret <8 x half> %res3042}3043 3044define <8 x half> @stack_fold_fnmadd123sh_intkz(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {3045; CHECK-LABEL: stack_fold_fnmadd123sh_intkz:3046; CHECK:       # %bb.0:3047; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3048; CHECK-NEXT:    #APP3049; CHECK-NEXT:    nop3050; CHECK-NEXT:    #NO_APP3051; CHECK-NEXT:    movzbl (%rdi), %eax3052; CHECK-NEXT:    kmovd %eax, %k13053; CHECK-NEXT:    vfnmadd213sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload3054; CHECK-NEXT:    retq3055  %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}"()3056  %a0 = extractelement <8 x half> %a0v, i64 03057  %a1 = extractelement <8 x half> %a1v, i64 03058  %a2 = extractelement <8 x half> %a2v, i64 03059  %neg1 = fneg half %a03060  %2 = call half @llvm.fma.f16(half %neg1, half %a1, half %a2)3061  %3 = load i8, ptr %mask3062  %4 = bitcast i8 %3 to <8 x i1>3063  %5 = extractelement <8 x i1> %4, i64 03064  %6 = select i1 %5, half %2, half zeroinitializer3065  %res = insertelement <8 x half> %a0v, half %6, i64 03066  ret <8 x half> %res3067}3068 3069define <8 x half> @stack_fold_fnmadd213sh_intkz(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {3070; CHECK-LABEL: stack_fold_fnmadd213sh_intkz:3071; CHECK:       # %bb.0:3072; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3073; CHECK-NEXT:    #APP3074; CHECK-NEXT:    nop3075; CHECK-NEXT:    #NO_APP3076; CHECK-NEXT:    movzbl (%rdi), %eax3077; CHECK-NEXT:    kmovd %eax, %k13078; CHECK-NEXT:    vfnmadd213sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload3079; CHECK-NEXT:    retq3080  %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}"()3081  %a0 = extractelement <8 x half> %a0v, i64 03082  %a1 = extractelement <8 x half> %a1v, i64 03083  %a2 = extractelement <8 x half> %a2v, i64 03084  %neg1 = fneg half %a13085  %2 = call half @llvm.fma.f16(half %neg1, half %a0, half %a2)3086  %3 = load i8, ptr %mask3087  %4 = bitcast i8 %3 to <8 x i1>3088  %5 = extractelement <8 x i1> %4, i64 03089  %6 = select i1 %5, half %2, half zeroinitializer3090  %res = insertelement <8 x half> %a0v, half %6, i64 03091  ret <8 x half> %res3092}3093 3094define <8 x half> @stack_fold_fnmadd231sh_intkz(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {3095; CHECK-LABEL: stack_fold_fnmadd231sh_intkz:3096; CHECK:       # %bb.0:3097; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3098; CHECK-NEXT:    #APP3099; CHECK-NEXT:    nop3100; CHECK-NEXT:    #NO_APP3101; CHECK-NEXT:    movzbl (%rdi), %eax3102; CHECK-NEXT:    kmovd %eax, %k13103; CHECK-NEXT:    vfnmadd231sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload3104; CHECK-NEXT:    retq3105  %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}"()3106  %a0 = extractelement <8 x half> %a0v, i64 03107  %a1 = extractelement <8 x half> %a1v, i64 03108  %a2 = extractelement <8 x half> %a2v, i64 03109  %neg1 = fneg half %a13110  %2 = call half @llvm.fma.f16(half %neg1, half %a2, half %a0)3111  %3 = load i8, ptr %mask3112  %4 = bitcast i8 %3 to <8 x i1>3113  %5 = extractelement <8 x i1> %4, i64 03114  %6 = select i1 %5, half %2, half zeroinitializer3115  %res = insertelement <8 x half> %a0v, half %6, i64 03116  ret <8 x half> %res3117}3118 3119define <8 x half> @stack_fold_fnmadd321sh_intkz(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {3120; CHECK-LABEL: stack_fold_fnmadd321sh_intkz:3121; CHECK:       # %bb.0:3122; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3123; CHECK-NEXT:    #APP3124; CHECK-NEXT:    nop3125; CHECK-NEXT:    #NO_APP3126; CHECK-NEXT:    movzbl (%rdi), %eax3127; CHECK-NEXT:    kmovd %eax, %k13128; CHECK-NEXT:    vfnmadd231sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload3129; CHECK-NEXT:    retq3130  %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}"()3131  %a0 = extractelement <8 x half> %a0v, i64 03132  %a1 = extractelement <8 x half> %a1v, i64 03133  %a2 = extractelement <8 x half> %a2v, i64 03134  %neg1 = fneg half %a23135  %2 = call half @llvm.fma.f16(half %neg1, half %a1, half %a0)3136  %3 = load i8, ptr %mask3137  %4 = bitcast i8 %3 to <8 x i1>3138  %5 = extractelement <8 x i1> %4, i64 03139  %6 = select i1 %5, half %2, half zeroinitializer3140  %res = insertelement <8 x half> %a0v, half %6, i64 03141  ret <8 x half> %res3142}3143 3144define <8 x half> @stack_fold_fnmadd132sh_intkz(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {3145; CHECK-LABEL: stack_fold_fnmadd132sh_intkz:3146; CHECK:       # %bb.0:3147; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3148; CHECK-NEXT:    #APP3149; CHECK-NEXT:    nop3150; CHECK-NEXT:    #NO_APP3151; CHECK-NEXT:    movzbl (%rdi), %eax3152; CHECK-NEXT:    kmovd %eax, %k13153; CHECK-NEXT:    vfnmadd132sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload3154; CHECK-NEXT:    retq3155  %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}"()3156  %a0 = extractelement <8 x half> %a0v, i64 03157  %a1 = extractelement <8 x half> %a1v, i64 03158  %a2 = extractelement <8 x half> %a2v, i64 03159  %neg1 = fneg half %a03160  %2 = call half @llvm.fma.f16(half %neg1, half %a2, half %a1)3161  %3 = load i8, ptr %mask3162  %4 = bitcast i8 %3 to <8 x i1>3163  %5 = extractelement <8 x i1> %4, i64 03164  %6 = select i1 %5, half %2, half zeroinitializer3165  %res = insertelement <8 x half> %a0v, half %6, i64 03166  ret <8 x half> %res3167}3168 3169define <8 x half> @stack_fold_fnmadd312sh_intkz(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {3170; CHECK-LABEL: stack_fold_fnmadd312sh_intkz:3171; CHECK:       # %bb.0:3172; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3173; CHECK-NEXT:    #APP3174; CHECK-NEXT:    nop3175; CHECK-NEXT:    #NO_APP3176; CHECK-NEXT:    movzbl (%rdi), %eax3177; CHECK-NEXT:    kmovd %eax, %k13178; CHECK-NEXT:    vfnmadd132sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload3179; CHECK-NEXT:    retq3180  %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}"()3181  %a0 = extractelement <8 x half> %a0v, i64 03182  %a1 = extractelement <8 x half> %a1v, i64 03183  %a2 = extractelement <8 x half> %a2v, i64 03184  %neg1 = fneg half %a23185  %2 = call half @llvm.fma.f16(half %neg1, half %a0, half %a1)3186  %3 = load i8, ptr %mask3187  %4 = bitcast i8 %3 to <8 x i1>3188  %5 = extractelement <8 x i1> %4, i64 03189  %6 = select i1 %5, half %2, half zeroinitializer3190  %res = insertelement <8 x half> %a0v, half %6, i64 03191  ret <8 x half> %res3192}3193 3194define <8 x half> @stack_fold_fnmsub123sh_intkz(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {3195; CHECK-LABEL: stack_fold_fnmsub123sh_intkz:3196; CHECK:       # %bb.0:3197; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3198; CHECK-NEXT:    #APP3199; CHECK-NEXT:    nop3200; CHECK-NEXT:    #NO_APP3201; CHECK-NEXT:    movzbl (%rdi), %eax3202; CHECK-NEXT:    kmovd %eax, %k13203; CHECK-NEXT:    vfnmsub213sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload3204; CHECK-NEXT:    retq3205  %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}"()3206  %a0 = extractelement <8 x half> %a0v, i64 03207  %a1 = extractelement <8 x half> %a1v, i64 03208  %a2 = extractelement <8 x half> %a2v, i64 03209  %neg = fneg half %a23210  %neg1 = fneg half %a03211  %2 = call half @llvm.fma.f16(half %neg1, half %a1, half %neg)3212  %3 = load i8, ptr %mask3213  %4 = bitcast i8 %3 to <8 x i1>3214  %5 = extractelement <8 x i1> %4, i64 03215  %6 = select i1 %5, half %2, half zeroinitializer3216  %res = insertelement <8 x half> %a0v, half %6, i64 03217  ret <8 x half> %res3218}3219 3220define <8 x half> @stack_fold_fnmsub213sh_intkz(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {3221; CHECK-LABEL: stack_fold_fnmsub213sh_intkz:3222; CHECK:       # %bb.0:3223; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3224; CHECK-NEXT:    #APP3225; CHECK-NEXT:    nop3226; CHECK-NEXT:    #NO_APP3227; CHECK-NEXT:    movzbl (%rdi), %eax3228; CHECK-NEXT:    kmovd %eax, %k13229; CHECK-NEXT:    vfnmsub213sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload3230; CHECK-NEXT:    retq3231  %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}"()3232  %a0 = extractelement <8 x half> %a0v, i64 03233  %a1 = extractelement <8 x half> %a1v, i64 03234  %a2 = extractelement <8 x half> %a2v, i64 03235  %neg = fneg half %a23236  %neg1 = fneg half %a13237  %2 = call half @llvm.fma.f16(half %neg1, half %a0, half %neg)3238  %3 = load i8, ptr %mask3239  %4 = bitcast i8 %3 to <8 x i1>3240  %5 = extractelement <8 x i1> %4, i64 03241  %6 = select i1 %5, half %2, half zeroinitializer3242  %res = insertelement <8 x half> %a0v, half %6, i64 03243  ret <8 x half> %res3244}3245 3246define <8 x half> @stack_fold_fnmsub231sh_intkz(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {3247; CHECK-LABEL: stack_fold_fnmsub231sh_intkz:3248; CHECK:       # %bb.0:3249; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3250; CHECK-NEXT:    #APP3251; CHECK-NEXT:    nop3252; CHECK-NEXT:    #NO_APP3253; CHECK-NEXT:    movzbl (%rdi), %eax3254; CHECK-NEXT:    kmovd %eax, %k13255; CHECK-NEXT:    vfnmsub231sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload3256; CHECK-NEXT:    retq3257  %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}"()3258  %a0 = extractelement <8 x half> %a0v, i64 03259  %a1 = extractelement <8 x half> %a1v, i64 03260  %a2 = extractelement <8 x half> %a2v, i64 03261  %neg = fneg half %a03262  %neg1 = fneg half %a13263  %2 = call half @llvm.fma.f16(half %neg1, half %a2, half %neg)3264  %3 = load i8, ptr %mask3265  %4 = bitcast i8 %3 to <8 x i1>3266  %5 = extractelement <8 x i1> %4, i64 03267  %6 = select i1 %5, half %2, half zeroinitializer3268  %res = insertelement <8 x half> %a0v, half %6, i64 03269  ret <8 x half> %res3270}3271 3272define <8 x half> @stack_fold_fnmsub321sh_intkz(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {3273; CHECK-LABEL: stack_fold_fnmsub321sh_intkz:3274; CHECK:       # %bb.0:3275; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3276; CHECK-NEXT:    #APP3277; CHECK-NEXT:    nop3278; CHECK-NEXT:    #NO_APP3279; CHECK-NEXT:    movzbl (%rdi), %eax3280; CHECK-NEXT:    kmovd %eax, %k13281; CHECK-NEXT:    vfnmsub231sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload3282; CHECK-NEXT:    retq3283  %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}"()3284  %a0 = extractelement <8 x half> %a0v, i64 03285  %a1 = extractelement <8 x half> %a1v, i64 03286  %a2 = extractelement <8 x half> %a2v, i64 03287  %neg = fneg half %a03288  %neg1 = fneg half %a23289  %2 = call half @llvm.fma.f16(half %neg1, half %a1, half %neg)3290  %3 = load i8, ptr %mask3291  %4 = bitcast i8 %3 to <8 x i1>3292  %5 = extractelement <8 x i1> %4, i64 03293  %6 = select i1 %5, half %2, half zeroinitializer3294  %res = insertelement <8 x half> %a0v, half %6, i64 03295  ret <8 x half> %res3296}3297 3298define <8 x half> @stack_fold_fnmsub132sh_intkz(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {3299; CHECK-LABEL: stack_fold_fnmsub132sh_intkz:3300; CHECK:       # %bb.0:3301; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3302; CHECK-NEXT:    #APP3303; CHECK-NEXT:    nop3304; CHECK-NEXT:    #NO_APP3305; CHECK-NEXT:    movzbl (%rdi), %eax3306; CHECK-NEXT:    kmovd %eax, %k13307; CHECK-NEXT:    vfnmsub132sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload3308; CHECK-NEXT:    retq3309  %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}"()3310  %a0 = extractelement <8 x half> %a0v, i64 03311  %a1 = extractelement <8 x half> %a1v, i64 03312  %a2 = extractelement <8 x half> %a2v, i64 03313  %neg = fneg half %a13314  %neg1 = fneg half %a03315  %2 = call half @llvm.fma.f16(half %neg1, half %a2, half %neg)3316  %3 = load i8, ptr %mask3317  %4 = bitcast i8 %3 to <8 x i1>3318  %5 = extractelement <8 x i1> %4, i64 03319  %6 = select i1 %5, half %2, half zeroinitializer3320  %res = insertelement <8 x half> %a0v, half %6, i64 03321  ret <8 x half> %res3322}3323 3324define <8 x half> @stack_fold_fnmsub312sh_intkz(<8 x half> %a0v, <8 x half> %a1v, <8 x half> %a2v, ptr %mask) {3325; CHECK-LABEL: stack_fold_fnmsub312sh_intkz:3326; CHECK:       # %bb.0:3327; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3328; CHECK-NEXT:    #APP3329; CHECK-NEXT:    nop3330; CHECK-NEXT:    #NO_APP3331; CHECK-NEXT:    movzbl (%rdi), %eax3332; CHECK-NEXT:    kmovd %eax, %k13333; CHECK-NEXT:    vfnmsub132sh {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload3334; CHECK-NEXT:    retq3335  %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}"()3336  %a0 = extractelement <8 x half> %a0v, i64 03337  %a1 = extractelement <8 x half> %a1v, i64 03338  %a2 = extractelement <8 x half> %a2v, i64 03339  %neg = fneg half %a13340  %neg1 = fneg half %a23341  %2 = call half @llvm.fma.f16(half %neg1, half %a0, half %neg)3342  %3 = load i8, ptr %mask3343  %4 = bitcast i8 %3 to <8 x i1>3344  %5 = extractelement <8 x i1> %4, i64 03345  %6 = select i1 %5, half %2, half zeroinitializer3346  %res = insertelement <8 x half> %a0v, half %6, i64 03347  ret <8 x half> %res3348}3349 3350define <32 x half> @stack_fold_fmaddsub123ph(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2) {3351; CHECK-LABEL: stack_fold_fmaddsub123ph:3352; CHECK:       # %bb.0:3353; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3354; CHECK-NEXT:    #APP3355; CHECK-NEXT:    nop3356; CHECK-NEXT:    #NO_APP3357; CHECK-NEXT:    vfmaddsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload3358; CHECK-NEXT:    retq3359  %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}"()3360  %2 = call <32 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.512(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, i32 4)3361  ret <32 x half> %23362}3363declare <32 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.512(<32 x half>, <32 x half>, <32 x half>, i32)3364 3365define <32 x half> @stack_fold_fmaddsub213ph(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2) {3366; CHECK-LABEL: stack_fold_fmaddsub213ph:3367; CHECK:       # %bb.0:3368; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3369; CHECK-NEXT:    #APP3370; CHECK-NEXT:    nop3371; CHECK-NEXT:    #NO_APP3372; CHECK-NEXT:    vfmaddsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload3373; CHECK-NEXT:    retq3374  %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}"()3375  %2 = call <32 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.512(<32 x half> %a1, <32 x half> %a0, <32 x half> %a2, i32 4)3376  ret <32 x half> %23377}3378 3379define <32 x half> @stack_fold_fmaddsub231ph(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2) {3380; CHECK-LABEL: stack_fold_fmaddsub231ph:3381; CHECK:       # %bb.0:3382; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3383; CHECK-NEXT:    #APP3384; CHECK-NEXT:    nop3385; CHECK-NEXT:    #NO_APP3386; CHECK-NEXT:    vfmaddsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload3387; CHECK-NEXT:    retq3388  %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}"()3389  %2 = call <32 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.512(<32 x half> %a1, <32 x half> %a2, <32 x half> %a0, i32 4)3390  ret <32 x half> %23391}3392 3393define <32 x half> @stack_fold_fmaddsub321ph(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2) {3394; CHECK-LABEL: stack_fold_fmaddsub321ph:3395; CHECK:       # %bb.0:3396; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3397; CHECK-NEXT:    #APP3398; CHECK-NEXT:    nop3399; CHECK-NEXT:    #NO_APP3400; CHECK-NEXT:    vfmaddsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload3401; CHECK-NEXT:    retq3402  %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}"()3403  %2 = call <32 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.512(<32 x half> %a2, <32 x half> %a1, <32 x half> %a0, i32 4)3404  ret <32 x half> %23405}3406 3407define <32 x half> @stack_fold_fmaddsub132ph(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2) {3408; CHECK-LABEL: stack_fold_fmaddsub132ph:3409; CHECK:       # %bb.0:3410; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3411; CHECK-NEXT:    #APP3412; CHECK-NEXT:    nop3413; CHECK-NEXT:    #NO_APP3414; CHECK-NEXT:    vfmaddsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload3415; CHECK-NEXT:    retq3416  %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}"()3417  %2 = call <32 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.512(<32 x half> %a0, <32 x half> %a2, <32 x half> %a1, i32 4)3418  ret <32 x half> %23419}3420 3421define <32 x half> @stack_fold_fmaddsub312ph(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2) {3422; CHECK-LABEL: stack_fold_fmaddsub312ph:3423; CHECK:       # %bb.0:3424; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3425; CHECK-NEXT:    #APP3426; CHECK-NEXT:    nop3427; CHECK-NEXT:    #NO_APP3428; CHECK-NEXT:    vfmaddsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload3429; CHECK-NEXT:    retq3430  %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}"()3431  %2 = call <32 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.512(<32 x half> %a2, <32 x half> %a0, <32 x half> %a1, i32 4)3432  ret <32 x half> %23433}3434 3435define <32 x half> @stack_fold_fmaddsub123ph_mask(ptr %p, <32 x half> %a1, <32 x half> %a2, i32 %mask) {3436; CHECK-LABEL: stack_fold_fmaddsub123ph_mask:3437; CHECK:       # %bb.0:3438; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3439; CHECK-NEXT:    #APP3440; CHECK-NEXT:    nop3441; CHECK-NEXT:    #NO_APP3442; CHECK-NEXT:    vmovaps (%rdi), %zmm23443; CHECK-NEXT:    kmovd %esi, %k13444; CHECK-NEXT:    vfmaddsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload3445; CHECK-NEXT:    vmovaps %zmm2, %zmm03446; CHECK-NEXT:    retq3447  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3448  %a0 = load <32 x half>, ptr %p3449  %2 = call <32 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.512(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, i32 4)3450  %3 = bitcast i32 %mask to <32 x i1>3451  %4 = select <32 x i1> %3, <32 x half> %2, <32 x half> %a03452  ret <32 x half> %43453}3454 3455define <32 x half> @stack_fold_fmaddsub213ph_mask(ptr %p, <32 x half> %a1, <32 x half> %a2, i32 %mask) {3456; CHECK-LABEL: stack_fold_fmaddsub213ph_mask:3457; CHECK:       # %bb.0:3458; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3459; CHECK-NEXT:    #APP3460; CHECK-NEXT:    nop3461; CHECK-NEXT:    #NO_APP3462; CHECK-NEXT:    vmovaps (%rdi), %zmm23463; CHECK-NEXT:    kmovd %esi, %k13464; CHECK-NEXT:    vfmaddsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload3465; CHECK-NEXT:    vmovaps %zmm2, %zmm03466; CHECK-NEXT:    retq3467  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3468  %a0 = load <32 x half>, ptr %p3469  %2 = call <32 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.512(<32 x half> %a1, <32 x half> %a0, <32 x half> %a2, i32 4)3470  %3 = bitcast i32 %mask to <32 x i1>3471  %4 = select <32 x i1> %3, <32 x half> %2, <32 x half> %a03472  ret <32 x half> %43473}3474 3475define <32 x half> @stack_fold_fmaddsub231ph_mask(ptr %p, <32 x half> %a1, <32 x half> %a2, i32 %mask) {3476; CHECK-LABEL: stack_fold_fmaddsub231ph_mask:3477; CHECK:       # %bb.0:3478; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3479; CHECK-NEXT:    #APP3480; CHECK-NEXT:    nop3481; CHECK-NEXT:    #NO_APP3482; CHECK-NEXT:    vmovaps (%rdi), %zmm23483; CHECK-NEXT:    kmovd %esi, %k13484; CHECK-NEXT:    vfmaddsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload3485; CHECK-NEXT:    vmovaps %zmm2, %zmm03486; CHECK-NEXT:    retq3487  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3488  %a0 = load <32 x half>, ptr %p3489  %2 = call <32 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.512(<32 x half> %a1, <32 x half> %a2, <32 x half> %a0, i32 4)3490  %3 = bitcast i32 %mask to <32 x i1>3491  %4 = select <32 x i1> %3, <32 x half> %2, <32 x half> %a03492  ret <32 x half> %43493}3494 3495define <32 x half> @stack_fold_fmaddsub321ph_mask(ptr %p, <32 x half> %a1, <32 x half> %a2, i32 %mask) {3496; CHECK-LABEL: stack_fold_fmaddsub321ph_mask:3497; CHECK:       # %bb.0:3498; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3499; CHECK-NEXT:    #APP3500; CHECK-NEXT:    nop3501; CHECK-NEXT:    #NO_APP3502; CHECK-NEXT:    vmovaps (%rdi), %zmm23503; CHECK-NEXT:    kmovd %esi, %k13504; CHECK-NEXT:    vfmaddsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload3505; CHECK-NEXT:    vmovaps %zmm2, %zmm03506; CHECK-NEXT:    retq3507  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3508  %a0 = load <32 x half>, ptr %p3509  %2 = call <32 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.512(<32 x half> %a2, <32 x half> %a1, <32 x half> %a0, i32 4)3510  %3 = bitcast i32 %mask to <32 x i1>3511  %4 = select <32 x i1> %3, <32 x half> %2, <32 x half> %a03512  ret <32 x half> %43513}3514 3515define <32 x half> @stack_fold_fmaddsub132ph_mask(ptr %p, <32 x half> %a1, <32 x half> %a2, i32 %mask) {3516; CHECK-LABEL: stack_fold_fmaddsub132ph_mask:3517; CHECK:       # %bb.0:3518; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3519; CHECK-NEXT:    #APP3520; CHECK-NEXT:    nop3521; CHECK-NEXT:    #NO_APP3522; CHECK-NEXT:    vmovaps (%rdi), %zmm23523; CHECK-NEXT:    kmovd %esi, %k13524; CHECK-NEXT:    vfmaddsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload3525; CHECK-NEXT:    vmovaps %zmm2, %zmm03526; CHECK-NEXT:    retq3527  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3528  %a0 = load <32 x half>, ptr %p3529  %2 = call <32 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.512(<32 x half> %a0, <32 x half> %a2, <32 x half> %a1, i32 4)3530  %3 = bitcast i32 %mask to <32 x i1>3531  %4 = select <32 x i1> %3, <32 x half> %2, <32 x half> %a03532  ret <32 x half> %43533}3534 3535define <32 x half> @stack_fold_fmaddsub312ph_mask(ptr %p, <32 x half> %a1, <32 x half> %a2, i32 %mask) {3536; CHECK-LABEL: stack_fold_fmaddsub312ph_mask:3537; CHECK:       # %bb.0:3538; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3539; CHECK-NEXT:    #APP3540; CHECK-NEXT:    nop3541; CHECK-NEXT:    #NO_APP3542; CHECK-NEXT:    vmovaps (%rdi), %zmm23543; CHECK-NEXT:    kmovd %esi, %k13544; CHECK-NEXT:    vfmaddsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload3545; CHECK-NEXT:    vmovaps %zmm2, %zmm03546; CHECK-NEXT:    retq3547  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3548  %a0 = load <32 x half>, ptr %p3549  %2 = call <32 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.512(<32 x half> %a2, <32 x half> %a0, <32 x half> %a1, i32 4)3550  %3 = bitcast i32 %mask to <32 x i1>3551  %4 = select <32 x i1> %3, <32 x half> %2, <32 x half> %a03552  ret <32 x half> %43553}3554 3555define <32 x half> @stack_fold_fmaddsub123ph_maskz(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, ptr %mask) {3556; CHECK-LABEL: stack_fold_fmaddsub123ph_maskz:3557; CHECK:       # %bb.0:3558; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3559; CHECK-NEXT:    #APP3560; CHECK-NEXT:    nop3561; CHECK-NEXT:    #NO_APP3562; CHECK-NEXT:    kmovd (%rdi), %k13563; CHECK-NEXT:    vfmaddsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} {z} # 64-byte Folded Reload3564; CHECK-NEXT:    retq3565  %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}"()3566  %2 = call <32 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.512(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, i32 4)3567  %3 = load i32, ptr %mask3568  %4 = bitcast i32 %3 to <32 x i1>3569  %5 = select <32 x i1> %4, <32 x half> %2, <32 x half> zeroinitializer3570  ret <32 x half> %53571}3572 3573define <32 x half> @stack_fold_fmaddsub213ph_maskz(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, ptr %mask) {3574; CHECK-LABEL: stack_fold_fmaddsub213ph_maskz:3575; CHECK:       # %bb.0:3576; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3577; CHECK-NEXT:    #APP3578; CHECK-NEXT:    nop3579; CHECK-NEXT:    #NO_APP3580; CHECK-NEXT:    kmovd (%rdi), %k13581; CHECK-NEXT:    vfmaddsub213ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} {z} # 64-byte Folded Reload3582; CHECK-NEXT:    retq3583  %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}"()3584  %2 = call <32 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.512(<32 x half> %a1, <32 x half> %a0, <32 x half> %a2, i32 4)3585  %3 = load i32, ptr %mask3586  %4 = bitcast i32 %3 to <32 x i1>3587  %5 = select <32 x i1> %4, <32 x half> %2, <32 x half> zeroinitializer3588  ret <32 x half> %53589}3590 3591define <32 x half> @stack_fold_fmaddsub231ph_maskz(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, ptr %mask) {3592; CHECK-LABEL: stack_fold_fmaddsub231ph_maskz:3593; CHECK:       # %bb.0:3594; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3595; CHECK-NEXT:    #APP3596; CHECK-NEXT:    nop3597; CHECK-NEXT:    #NO_APP3598; CHECK-NEXT:    kmovd (%rdi), %k13599; CHECK-NEXT:    vfmaddsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} {z} # 64-byte Folded Reload3600; CHECK-NEXT:    retq3601  %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}"()3602  %2 = call <32 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.512(<32 x half> %a1, <32 x half> %a2, <32 x half> %a0, i32 4)3603  %3 = load i32, ptr %mask3604  %4 = bitcast i32 %3 to <32 x i1>3605  %5 = select <32 x i1> %4, <32 x half> %2, <32 x half> zeroinitializer3606  ret <32 x half> %53607}3608 3609define <32 x half> @stack_fold_fmaddsub321ph_maskz(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, ptr %mask) {3610; CHECK-LABEL: stack_fold_fmaddsub321ph_maskz:3611; CHECK:       # %bb.0:3612; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3613; CHECK-NEXT:    #APP3614; CHECK-NEXT:    nop3615; CHECK-NEXT:    #NO_APP3616; CHECK-NEXT:    kmovd (%rdi), %k13617; CHECK-NEXT:    vfmaddsub231ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} {z} # 64-byte Folded Reload3618; CHECK-NEXT:    retq3619  %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}"()3620  %2 = call <32 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.512(<32 x half> %a2, <32 x half> %a1, <32 x half> %a0, i32 4)3621  %3 = load i32, ptr %mask3622  %4 = bitcast i32 %3 to <32 x i1>3623  %5 = select <32 x i1> %4, <32 x half> %2, <32 x half> zeroinitializer3624  ret <32 x half> %53625}3626 3627define <32 x half> @stack_fold_fmaddsub132ph_maskz(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, ptr %mask) {3628; CHECK-LABEL: stack_fold_fmaddsub132ph_maskz:3629; CHECK:       # %bb.0:3630; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3631; CHECK-NEXT:    #APP3632; CHECK-NEXT:    nop3633; CHECK-NEXT:    #NO_APP3634; CHECK-NEXT:    kmovd (%rdi), %k13635; CHECK-NEXT:    vfmaddsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} {z} # 64-byte Folded Reload3636; CHECK-NEXT:    retq3637  %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}"()3638  %2 = call <32 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.512(<32 x half> %a0, <32 x half> %a2, <32 x half> %a1, i32 4)3639  %3 = load i32, ptr %mask3640  %4 = bitcast i32 %3 to <32 x i1>3641  %5 = select <32 x i1> %4, <32 x half> %2, <32 x half> zeroinitializer3642  ret <32 x half> %53643}3644 3645define <32 x half> @stack_fold_fmaddsub312ph_maskz(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, ptr %mask) {3646; CHECK-LABEL: stack_fold_fmaddsub312ph_maskz:3647; CHECK:       # %bb.0:3648; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3649; CHECK-NEXT:    #APP3650; CHECK-NEXT:    nop3651; CHECK-NEXT:    #NO_APP3652; CHECK-NEXT:    kmovd (%rdi), %k13653; CHECK-NEXT:    vfmaddsub132ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} {z} # 64-byte Folded Reload3654; CHECK-NEXT:    retq3655  %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}"()3656  %2 = call <32 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.512(<32 x half> %a2, <32 x half> %a0, <32 x half> %a1, i32 4)3657  %3 = load i32, ptr %mask3658  %4 = bitcast i32 %3 to <32 x i1>3659  %5 = select <32 x i1> %4, <32 x half> %2, <32 x half> zeroinitializer3660  ret <32 x half> %53661}3662 3663define <32 x half> @stack_fold_fmsubadd123ph(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2) {3664; CHECK-LABEL: stack_fold_fmsubadd123ph:3665; CHECK:       # %bb.0:3666; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3667; CHECK-NEXT:    #APP3668; CHECK-NEXT:    nop3669; CHECK-NEXT:    #NO_APP3670; CHECK-NEXT:    vfmsubadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload3671; CHECK-NEXT:    retq3672  %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}"()3673  %2 = fneg <32 x half> %a23674  %3 = call <32 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.512(<32 x half> %a0, <32 x half> %a1, <32 x half> %2, i32 4)3675  ret <32 x half> %33676}3677 3678define <32 x half> @stack_fold_fmsubadd213ph(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2) {3679; CHECK-LABEL: stack_fold_fmsubadd213ph:3680; CHECK:       # %bb.0:3681; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3682; CHECK-NEXT:    #APP3683; CHECK-NEXT:    nop3684; CHECK-NEXT:    #NO_APP3685; CHECK-NEXT:    vfmsubadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload3686; CHECK-NEXT:    retq3687  %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}"()3688  %2 = fneg <32 x half> %a23689  %3 = call <32 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.512(<32 x half> %a1, <32 x half> %a0, <32 x half> %2, i32 4)3690  ret <32 x half> %33691}3692 3693define <32 x half> @stack_fold_fmsubadd231ph(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2) {3694; CHECK-LABEL: stack_fold_fmsubadd231ph:3695; CHECK:       # %bb.0:3696; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3697; CHECK-NEXT:    #APP3698; CHECK-NEXT:    nop3699; CHECK-NEXT:    #NO_APP3700; CHECK-NEXT:    vfmsubadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload3701; CHECK-NEXT:    retq3702  %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}"()3703  %2 = fneg <32 x half> %a03704  %3 = call <32 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.512(<32 x half> %a1, <32 x half> %a2, <32 x half> %2, i32 4)3705  ret <32 x half> %33706}3707 3708define <32 x half> @stack_fold_fmsubadd321ph(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2) {3709; CHECK-LABEL: stack_fold_fmsubadd321ph:3710; CHECK:       # %bb.0:3711; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3712; CHECK-NEXT:    #APP3713; CHECK-NEXT:    nop3714; CHECK-NEXT:    #NO_APP3715; CHECK-NEXT:    vfmsubadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload3716; CHECK-NEXT:    retq3717  %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}"()3718  %2 = fneg <32 x half> %a03719  %3 = call <32 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.512(<32 x half> %a2, <32 x half> %a1, <32 x half> %2, i32 4)3720  ret <32 x half> %33721}3722 3723define <32 x half> @stack_fold_fmsubadd132ph(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2) {3724; CHECK-LABEL: stack_fold_fmsubadd132ph:3725; CHECK:       # %bb.0:3726; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3727; CHECK-NEXT:    #APP3728; CHECK-NEXT:    nop3729; CHECK-NEXT:    #NO_APP3730; CHECK-NEXT:    vfmsubadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload3731; CHECK-NEXT:    retq3732  %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}"()3733  %2 = fneg <32 x half> %a13734  %3 = call <32 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.512(<32 x half> %a0, <32 x half> %a2, <32 x half> %2, i32 4)3735  ret <32 x half> %33736}3737 3738define <32 x half> @stack_fold_fmsubadd312ph(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2) {3739; CHECK-LABEL: stack_fold_fmsubadd312ph:3740; CHECK:       # %bb.0:3741; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3742; CHECK-NEXT:    #APP3743; CHECK-NEXT:    nop3744; CHECK-NEXT:    #NO_APP3745; CHECK-NEXT:    vfmsubadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload3746; CHECK-NEXT:    retq3747  %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}"()3748  %2 = fneg <32 x half> %a13749  %3 = call <32 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.512(<32 x half> %a2, <32 x half> %a0, <32 x half> %2, i32 4)3750  ret <32 x half> %33751}3752 3753define <32 x half> @stack_fold_fmsubadd123ph_mask(ptr %p, <32 x half> %a1, <32 x half> %a2, i32 %mask) {3754; CHECK-LABEL: stack_fold_fmsubadd123ph_mask:3755; CHECK:       # %bb.0:3756; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3757; CHECK-NEXT:    #APP3758; CHECK-NEXT:    nop3759; CHECK-NEXT:    #NO_APP3760; CHECK-NEXT:    vmovaps (%rdi), %zmm23761; CHECK-NEXT:    kmovd %esi, %k13762; CHECK-NEXT:    vfmsubadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload3763; CHECK-NEXT:    vmovaps %zmm2, %zmm03764; CHECK-NEXT:    retq3765  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3766  %a0 = load <32 x half>, ptr %p3767  %neg = fneg <32 x half> %a23768  %2 = call <32 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.512(<32 x half> %a0, <32 x half> %a1, <32 x half> %neg, i32 4)3769  %3 = bitcast i32 %mask to <32 x i1>3770  %4 = select <32 x i1> %3, <32 x half> %2, <32 x half> %a03771  ret <32 x half> %43772}3773 3774define <32 x half> @stack_fold_fmsubadd213ph_mask(ptr %p, <32 x half> %a1, <32 x half> %a2, i32 %mask) {3775; CHECK-LABEL: stack_fold_fmsubadd213ph_mask:3776; CHECK:       # %bb.0:3777; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3778; CHECK-NEXT:    #APP3779; CHECK-NEXT:    nop3780; CHECK-NEXT:    #NO_APP3781; CHECK-NEXT:    vmovaps (%rdi), %zmm23782; CHECK-NEXT:    kmovd %esi, %k13783; CHECK-NEXT:    vfmsubadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload3784; CHECK-NEXT:    vmovaps %zmm2, %zmm03785; CHECK-NEXT:    retq3786  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3787  %a0 = load <32 x half>, ptr %p3788  %neg = fneg <32 x half> %a23789  %2 = call <32 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.512(<32 x half> %a1, <32 x half> %a0, <32 x half> %neg, i32 4)3790  %3 = bitcast i32 %mask to <32 x i1>3791  %4 = select <32 x i1> %3, <32 x half> %2, <32 x half> %a03792  ret <32 x half> %43793}3794 3795define <32 x half> @stack_fold_fmsubadd231ph_mask(ptr %p, <32 x half> %a1, <32 x half> %a2, i32 %mask) {3796; CHECK-LABEL: stack_fold_fmsubadd231ph_mask:3797; CHECK:       # %bb.0:3798; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3799; CHECK-NEXT:    #APP3800; CHECK-NEXT:    nop3801; CHECK-NEXT:    #NO_APP3802; CHECK-NEXT:    vmovaps (%rdi), %zmm23803; CHECK-NEXT:    kmovd %esi, %k13804; CHECK-NEXT:    vfmsubadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload3805; CHECK-NEXT:    vmovaps %zmm2, %zmm03806; CHECK-NEXT:    retq3807  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3808  %a0 = load <32 x half>, ptr %p3809  %neg = fneg <32 x half> %a03810  %2 = call <32 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.512(<32 x half> %a1, <32 x half> %a2, <32 x half> %neg, i32 4)3811  %3 = bitcast i32 %mask to <32 x i1>3812  %4 = select <32 x i1> %3, <32 x half> %2, <32 x half> %a03813  ret <32 x half> %43814}3815 3816define <32 x half> @stack_fold_fmsubadd321ph_mask(ptr %p, <32 x half> %a1, <32 x half> %a2, i32 %mask) {3817; CHECK-LABEL: stack_fold_fmsubadd321ph_mask:3818; CHECK:       # %bb.0:3819; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3820; CHECK-NEXT:    #APP3821; CHECK-NEXT:    nop3822; CHECK-NEXT:    #NO_APP3823; CHECK-NEXT:    vmovaps (%rdi), %zmm23824; CHECK-NEXT:    kmovd %esi, %k13825; CHECK-NEXT:    vfmsubadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload3826; CHECK-NEXT:    vmovaps %zmm2, %zmm03827; CHECK-NEXT:    retq3828  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3829  %a0 = load <32 x half>, ptr %p3830  %neg = fneg <32 x half> %a03831  %2 = call <32 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.512(<32 x half> %a2, <32 x half> %a1, <32 x half> %neg, i32 4)3832  %3 = bitcast i32 %mask to <32 x i1>3833  %4 = select <32 x i1> %3, <32 x half> %2, <32 x half> %a03834  ret <32 x half> %43835}3836 3837define <32 x half> @stack_fold_fmsubadd132ph_mask(ptr %p, <32 x half> %a1, <32 x half> %a2, i32 %mask) {3838; CHECK-LABEL: stack_fold_fmsubadd132ph_mask:3839; CHECK:       # %bb.0:3840; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3841; CHECK-NEXT:    #APP3842; CHECK-NEXT:    nop3843; CHECK-NEXT:    #NO_APP3844; CHECK-NEXT:    vmovaps (%rdi), %zmm23845; CHECK-NEXT:    kmovd %esi, %k13846; CHECK-NEXT:    vfmsubadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload3847; CHECK-NEXT:    vmovaps %zmm2, %zmm03848; CHECK-NEXT:    retq3849  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3850  %a0 = load <32 x half>, ptr %p3851  %neg = fneg <32 x half> %a13852  %2 = call <32 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.512(<32 x half> %a0, <32 x half> %a2, <32 x half> %neg, i32 4)3853  %3 = bitcast i32 %mask to <32 x i1>3854  %4 = select <32 x i1> %3, <32 x half> %2, <32 x half> %a03855  ret <32 x half> %43856}3857 3858define <32 x half> @stack_fold_fmsubadd312ph_mask(ptr %p, <32 x half> %a1, <32 x half> %a2, i32 %mask) {3859; CHECK-LABEL: stack_fold_fmsubadd312ph_mask:3860; CHECK:       # %bb.0:3861; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3862; CHECK-NEXT:    #APP3863; CHECK-NEXT:    nop3864; CHECK-NEXT:    #NO_APP3865; CHECK-NEXT:    vmovaps (%rdi), %zmm23866; CHECK-NEXT:    kmovd %esi, %k13867; CHECK-NEXT:    vfmsubadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload3868; CHECK-NEXT:    vmovaps %zmm2, %zmm03869; CHECK-NEXT:    retq3870  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()3871  %a0 = load <32 x half>, ptr %p3872  %neg = fneg <32 x half> %a13873  %2 = call <32 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.512(<32 x half> %a2, <32 x half> %a0, <32 x half> %neg, i32 4)3874  %3 = bitcast i32 %mask to <32 x i1>3875  %4 = select <32 x i1> %3, <32 x half> %2, <32 x half> %a03876  ret <32 x half> %43877}3878 3879define <32 x half> @stack_fold_fmsubadd123ph_maskz(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, ptr %mask) {3880; CHECK-LABEL: stack_fold_fmsubadd123ph_maskz:3881; CHECK:       # %bb.0:3882; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3883; CHECK-NEXT:    #APP3884; CHECK-NEXT:    nop3885; CHECK-NEXT:    #NO_APP3886; CHECK-NEXT:    kmovd (%rdi), %k13887; CHECK-NEXT:    vfmsubadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} {z} # 64-byte Folded Reload3888; CHECK-NEXT:    retq3889  %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}"()3890  %neg = fneg <32 x half> %a23891  %2 = call <32 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.512(<32 x half> %a0, <32 x half> %a1, <32 x half> %neg, i32 4)3892  %3 = load i32, ptr %mask3893  %4 = bitcast i32 %3 to <32 x i1>3894  %5 = select <32 x i1> %4, <32 x half> %2, <32 x half> zeroinitializer3895  ret <32 x half> %53896}3897 3898define <32 x half> @stack_fold_fmsubadd213ph_maskz(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, ptr %mask) {3899; CHECK-LABEL: stack_fold_fmsubadd213ph_maskz:3900; CHECK:       # %bb.0:3901; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3902; CHECK-NEXT:    #APP3903; CHECK-NEXT:    nop3904; CHECK-NEXT:    #NO_APP3905; CHECK-NEXT:    kmovd (%rdi), %k13906; CHECK-NEXT:    vfmsubadd213ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} {z} # 64-byte Folded Reload3907; CHECK-NEXT:    retq3908  %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}"()3909  %neg = fneg <32 x half> %a23910  %2 = call <32 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.512(<32 x half> %a1, <32 x half> %a0, <32 x half> %neg, i32 4)3911  %3 = load i32, ptr %mask3912  %4 = bitcast i32 %3 to <32 x i1>3913  %5 = select <32 x i1> %4, <32 x half> %2, <32 x half> zeroinitializer3914  ret <32 x half> %53915}3916 3917define <32 x half> @stack_fold_fmsubadd231ph_maskz(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, ptr %mask) {3918; CHECK-LABEL: stack_fold_fmsubadd231ph_maskz:3919; CHECK:       # %bb.0:3920; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3921; CHECK-NEXT:    #APP3922; CHECK-NEXT:    nop3923; CHECK-NEXT:    #NO_APP3924; CHECK-NEXT:    kmovd (%rdi), %k13925; CHECK-NEXT:    vfmsubadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} {z} # 64-byte Folded Reload3926; CHECK-NEXT:    retq3927  %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}"()3928  %neg = fneg <32 x half> %a03929  %2 = call <32 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.512(<32 x half> %a1, <32 x half> %a2, <32 x half> %neg, i32 4)3930  %3 = load i32, ptr %mask3931  %4 = bitcast i32 %3 to <32 x i1>3932  %5 = select <32 x i1> %4, <32 x half> %2, <32 x half> zeroinitializer3933  ret <32 x half> %53934}3935 3936define <32 x half> @stack_fold_fmsubadd321ph_maskz(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, ptr %mask) {3937; CHECK-LABEL: stack_fold_fmsubadd321ph_maskz:3938; CHECK:       # %bb.0:3939; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3940; CHECK-NEXT:    #APP3941; CHECK-NEXT:    nop3942; CHECK-NEXT:    #NO_APP3943; CHECK-NEXT:    kmovd (%rdi), %k13944; CHECK-NEXT:    vfmsubadd231ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} {z} # 64-byte Folded Reload3945; CHECK-NEXT:    retq3946  %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}"()3947  %neg = fneg <32 x half> %a03948  %2 = call <32 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.512(<32 x half> %a2, <32 x half> %a1, <32 x half> %neg, i32 4)3949  %3 = load i32, ptr %mask3950  %4 = bitcast i32 %3 to <32 x i1>3951  %5 = select <32 x i1> %4, <32 x half> %2, <32 x half> zeroinitializer3952  ret <32 x half> %53953}3954 3955define <32 x half> @stack_fold_fmsubadd132ph_maskz(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, ptr %mask) {3956; CHECK-LABEL: stack_fold_fmsubadd132ph_maskz:3957; CHECK:       # %bb.0:3958; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3959; CHECK-NEXT:    #APP3960; CHECK-NEXT:    nop3961; CHECK-NEXT:    #NO_APP3962; CHECK-NEXT:    kmovd (%rdi), %k13963; CHECK-NEXT:    vfmsubadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} {z} # 64-byte Folded Reload3964; CHECK-NEXT:    retq3965  %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}"()3966  %neg = fneg <32 x half> %a13967  %2 = call <32 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.512(<32 x half> %a0, <32 x half> %a2, <32 x half> %neg, i32 4)3968  %3 = load i32, ptr %mask3969  %4 = bitcast i32 %3 to <32 x i1>3970  %5 = select <32 x i1> %4, <32 x half> %2, <32 x half> zeroinitializer3971  ret <32 x half> %53972}3973 3974define <32 x half> @stack_fold_fmsubadd312ph_maskz(<32 x half> %a0, <32 x half> %a1, <32 x half> %a2, ptr %mask) {3975; CHECK-LABEL: stack_fold_fmsubadd312ph_maskz:3976; CHECK:       # %bb.0:3977; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill3978; CHECK-NEXT:    #APP3979; CHECK-NEXT:    nop3980; CHECK-NEXT:    #NO_APP3981; CHECK-NEXT:    kmovd (%rdi), %k13982; CHECK-NEXT:    vfmsubadd132ph {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} {z} # 64-byte Folded Reload3983; CHECK-NEXT:    retq3984  %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}"()3985  %neg = fneg <32 x half> %a13986  %2 = call <32 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.512(<32 x half> %a2, <32 x half> %a0, <32 x half> %neg, i32 4)3987  %3 = load i32, ptr %mask3988  %4 = bitcast i32 %3 to <32 x i1>3989  %5 = select <32 x i1> %4, <32 x half> %2, <32 x half> zeroinitializer3990  ret <32 x half> %53991}3992