brintos

brintos / llvm-project-archived public Read only

0
0
Text · 84.2 KiB · cd06f2d Raw
1474 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=+avx512vl,+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 <8 x half> @stack_fold_addph(<8 x half> %a0, <8 x half> %a1) {13; CHECK-LABEL: stack_fold_addph:14; CHECK:       # %bb.0:15; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill16; CHECK-NEXT:    #APP17; CHECK-NEXT:    nop18; CHECK-NEXT:    #NO_APP19; CHECK-NEXT:    vaddph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload20; CHECK-NEXT:    retq21  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{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 = fadd <8 x half> %a0, %a123  ret <8 x half> %224}25 26define <16 x half> @stack_fold_addph_ymm(<16 x half> %a0, <16 x half> %a1) {27; CHECK-LABEL: stack_fold_addph_ymm:28; CHECK:       # %bb.0:29; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill30; CHECK-NEXT:    #APP31; CHECK-NEXT:    nop32; CHECK-NEXT:    #NO_APP33; CHECK-NEXT:    vaddph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload34; CHECK-NEXT:    retq35  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()36  %2 = fadd <16 x half> %a0, %a137  ret <16 x half> %238}39 40define i8 @stack_fold_cmpph(<8 x half> %a0, <8 x half> %a1) {41; CHECK-LABEL: stack_fold_cmpph:42; CHECK:       # %bb.0:43; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill44; CHECK-NEXT:    #APP45; CHECK-NEXT:    nop46; CHECK-NEXT:    #NO_APP47; CHECK-NEXT:    vcmpeqph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %k0 # 16-byte Folded Reload48; CHECK-NEXT:    kmovd %k0, %eax49; CHECK-NEXT:    # kill: def $al killed $al killed $eax50; CHECK-NEXT:    retq51  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()52  %res = call <8 x i1> @llvm.x86.avx512fp16.mask.cmp.ph.128(<8 x half> %a0, <8 x half> %a1, i32 0, <8 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>)53  %2 = bitcast <8 x i1> %res to i854  ret i8 %255}56declare <8 x i1> @llvm.x86.avx512fp16.mask.cmp.ph.128(<8 x half>, <8 x half>, i32,  <8 x i1>)57 58define i16 @stack_fold_cmpph_ymm(<16 x half> %a0, <16 x half> %a1) {59; CHECK-LABEL: stack_fold_cmpph_ymm:60; CHECK:       # %bb.0:61; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill62; CHECK-NEXT:    #APP63; CHECK-NEXT:    nop64; CHECK-NEXT:    #NO_APP65; CHECK-NEXT:    vcmpeqph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %k0 # 32-byte Folded Reload66; CHECK-NEXT:    kmovd %k0, %eax67; CHECK-NEXT:    # kill: def $ax killed $ax killed $eax68; CHECK-NEXT:    vzeroupper69; CHECK-NEXT:    retq70  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()71  %res = call <16 x i1> @llvm.x86.avx512fp16.mask.cmp.ph.256(<16 x half> %a0, <16 x half> %a1, i32 0, <16 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>)72  %2 = bitcast <16 x i1> %res to i1673  ret i16 %274}75declare <16 x i1> @llvm.x86.avx512fp16.mask.cmp.ph.256(<16 x half>, <16 x half>, i32, <16 x i1>)76 77define <8 x half> @stack_fold_divph(<8 x half> %a0, <8 x half> %a1) {78; CHECK-LABEL: stack_fold_divph:79; CHECK:       # %bb.0:80; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill81; CHECK-NEXT:    #APP82; CHECK-NEXT:    nop83; CHECK-NEXT:    #NO_APP84; CHECK-NEXT:    vdivph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload85; CHECK-NEXT:    retq86  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()87  %2 = fdiv <8 x half> %a0, %a188  ret <8 x half> %289}90 91define <16 x half> @stack_fold_divph_ymm(<16 x half> %a0, <16 x half> %a1) {92; CHECK-LABEL: stack_fold_divph_ymm:93; CHECK:       # %bb.0:94; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill95; CHECK-NEXT:    #APP96; CHECK-NEXT:    nop97; CHECK-NEXT:    #NO_APP98; CHECK-NEXT:    vdivph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload99; CHECK-NEXT:    retq100  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()101  %2 = fdiv <16 x half> %a0, %a1102  ret <16 x half> %2103}104 105define i8 @stack_fold_fpclassph(<8 x half> %a0) {106; CHECK-LABEL: stack_fold_fpclassph:107; CHECK:       # %bb.0:108; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill109; CHECK-NEXT:    #APP110; CHECK-NEXT:    nop111; CHECK-NEXT:    #NO_APP112; CHECK-NEXT:    vfpclassphx $4, {{[-0-9]+}}(%r{{[sb]}}p), %k0 # 16-byte Folded Reload113; CHECK-NEXT:    # k0 = isNegativeZero(mem)114; CHECK-NEXT:    kmovd %k0, %eax115; CHECK-NEXT:    # kill: def $al killed $al killed $eax116; CHECK-NEXT:    retq117  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()118  %2 = call <8 x i1> @llvm.x86.avx512fp16.fpclass.ph.128(<8 x half> %a0, i32 4)119  %3 = bitcast <8 x i1> %2 to i8120  ret i8 %3121}122declare <8 x i1> @llvm.x86.avx512fp16.fpclass.ph.128(<8 x half>, i32)123 124define i8 @stack_fold_fpclassph_mask(<8 x half> %a0, ptr %p) {125; CHECK-LABEL: stack_fold_fpclassph_mask:126; CHECK:       # %bb.0:127; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill128; CHECK-NEXT:    #APP129; CHECK-NEXT:    nop130; CHECK-NEXT:    #NO_APP131; CHECK-NEXT:    movzbl (%rdi), %eax132; CHECK-NEXT:    kmovd %eax, %k1133; CHECK-NEXT:    vfpclassphx $4, {{[-0-9]+}}(%r{{[sb]}}p), %k0 {%k1} # 16-byte Folded Reload134; CHECK-NEXT:    kmovd %k0, %eax135; CHECK-NEXT:    # kill: def $al killed $al killed $eax136; CHECK-NEXT:    retq137  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()138  %2 = call <8 x i1> @llvm.x86.avx512fp16.fpclass.ph.128(<8 x half> %a0, i32 4)139  %mask = load <8 x i1>, ptr %p140  %3 = and <8 x i1> %2, %mask141  %4 = bitcast <8 x i1> %3 to i8142  ret i8 %4143}144 145define i16 @stack_fold_fpclassph_ymm(<16 x half> %a0) {146; CHECK-LABEL: stack_fold_fpclassph_ymm:147; CHECK:       # %bb.0:148; CHECK-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill149; CHECK-NEXT:    #APP150; CHECK-NEXT:    nop151; CHECK-NEXT:    #NO_APP152; CHECK-NEXT:    vfpclassphy $4, {{[-0-9]+}}(%r{{[sb]}}p), %k0 # 32-byte Folded Reload153; CHECK-NEXT:    # k0 = isNegativeZero(mem)154; CHECK-NEXT:    kmovd %k0, %eax155; CHECK-NEXT:    # kill: def $ax killed $ax killed $eax156; CHECK-NEXT:    vzeroupper157; CHECK-NEXT:    retq158  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()159  %2 = call <16 x i1> @llvm.x86.avx512fp16.fpclass.ph.256(<16 x half> %a0, i32 4)160  %3 = bitcast <16 x i1> %2 to i16161  ret i16 %3162}163declare <16 x i1> @llvm.x86.avx512fp16.fpclass.ph.256(<16 x half>, i32)164 165define i16 @stack_fold_fpclassph_mask_ymm(<16 x half> %a0, ptr %p) {166; CHECK-LABEL: stack_fold_fpclassph_mask_ymm:167; CHECK:       # %bb.0:168; CHECK-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill169; CHECK-NEXT:    #APP170; CHECK-NEXT:    nop171; CHECK-NEXT:    #NO_APP172; CHECK-NEXT:    kmovw (%rdi), %k1173; CHECK-NEXT:    vfpclassphy $4, {{[-0-9]+}}(%r{{[sb]}}p), %k0 {%k1} # 32-byte Folded Reload174; CHECK-NEXT:    kmovd %k0, %eax175; CHECK-NEXT:    # kill: def $ax killed $ax killed $eax176; CHECK-NEXT:    vzeroupper177; CHECK-NEXT:    retq178  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()179  %2 = call <16 x i1> @llvm.x86.avx512fp16.fpclass.ph.256(<16 x half> %a0, i32 4)180  %mask = load <16 x i1>, ptr %p181  %3 = and <16 x i1> %2, %mask182  %4 = bitcast <16 x i1> %3 to i16183  ret i16 %4184}185 186define <8 x half> @stack_fold_getexpph(<8 x half> %a0) {187; CHECK-LABEL: stack_fold_getexpph:188; CHECK:       # %bb.0:189; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill190; CHECK-NEXT:    #APP191; CHECK-NEXT:    nop192; CHECK-NEXT:    #NO_APP193; CHECK-NEXT:    vgetexpph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload194; CHECK-NEXT:    retq195  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()196  %2 = call <8 x half> @llvm.x86.avx512fp16.mask.getexp.ph.128(<8 x half> %a0, <8 x half> undef, i8 -1)197  ret <8 x half> %2198}199declare <8 x half> @llvm.x86.avx512fp16.mask.getexp.ph.128(<8 x half>, <8 x half>, i8)200 201define <8 x half> @stack_fold_getexpph_mask(<8 x half> %a0, ptr %passthru, i8 %mask) {202; CHECK-LABEL: stack_fold_getexpph_mask:203; CHECK:       # %bb.0:204; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill205; CHECK-NEXT:    kmovd %esi, %k1206; CHECK-NEXT:    #APP207; CHECK-NEXT:    nop208; CHECK-NEXT:    #NO_APP209; CHECK-NEXT:    vmovaps (%rdi), %xmm1210; CHECK-NEXT:    vgetexpph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 {%k1} # 16-byte Folded Reload211; CHECK-NEXT:    vmovaps %xmm1, %xmm0212; CHECK-NEXT:    retq213  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()214  %2 = load <8 x half>, ptr %passthru215  %3 = call <8 x half> @llvm.x86.avx512fp16.mask.getexp.ph.128(<8 x half> %a0, <8 x half> %2, i8 %mask)216  ret <8 x half> %3217}218 219define <8 x half> @stack_fold_getexpph_maskz(<8 x half> %a0, ptr %mask) {220; CHECK-LABEL: stack_fold_getexpph_maskz:221; CHECK:       # %bb.0:222; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill223; CHECK-NEXT:    #APP224; CHECK-NEXT:    nop225; CHECK-NEXT:    #NO_APP226; CHECK-NEXT:    movzbl (%rdi), %eax227; CHECK-NEXT:    kmovd %eax, %k1228; CHECK-NEXT:    vgetexpph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 {%k1} {z} # 16-byte Folded Reload229; CHECK-NEXT:    retq230  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()231  %2 = load i8, ptr %mask232  %3 = call <8 x half> @llvm.x86.avx512fp16.mask.getexp.ph.128(<8 x half> %a0, <8 x half> zeroinitializer, i8 %2)233  ret <8 x half> %3234}235 236define <16 x half> @stack_fold_getexpph_ymm(<16 x half> %a0) {237; CHECK-LABEL: stack_fold_getexpph_ymm:238; CHECK:       # %bb.0:239; CHECK-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill240; CHECK-NEXT:    #APP241; CHECK-NEXT:    nop242; CHECK-NEXT:    #NO_APP243; CHECK-NEXT:    vgetexpph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload244; CHECK-NEXT:    retq245  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()246  %2 = call <16 x half> @llvm.x86.avx512fp16.mask.getexp.ph.256(<16 x half> %a0, <16 x half> undef, i16 -1)247  ret <16 x half> %2248}249declare <16 x half> @llvm.x86.avx512fp16.mask.getexp.ph.256(<16 x half>, <16 x half>, i16)250 251define <16 x half> @stack_fold_getexpph_mask_ymm(<16 x half> %a0, ptr %passthru, i16 %mask) {252; CHECK-LABEL: stack_fold_getexpph_mask_ymm:253; CHECK:       # %bb.0:254; CHECK-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill255; CHECK-NEXT:    kmovd %esi, %k1256; CHECK-NEXT:    #APP257; CHECK-NEXT:    nop258; CHECK-NEXT:    #NO_APP259; CHECK-NEXT:    vmovaps (%rdi), %ymm1260; CHECK-NEXT:    vgetexpph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 {%k1} # 32-byte Folded Reload261; CHECK-NEXT:    vmovaps %ymm1, %ymm0262; CHECK-NEXT:    retq263  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()264  %2 = load <16 x half>, ptr %passthru265  %3 = call <16 x half> @llvm.x86.avx512fp16.mask.getexp.ph.256(<16 x half> %a0, <16 x half> %2, i16 %mask)266  ret <16 x half> %3267}268 269define <16 x half> @stack_fold_getexpph_maskz_ymm(<16 x half> %a0, ptr %mask) {270; CHECK-LABEL: stack_fold_getexpph_maskz_ymm:271; CHECK:       # %bb.0:272; CHECK-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill273; CHECK-NEXT:    #APP274; CHECK-NEXT:    nop275; CHECK-NEXT:    #NO_APP276; CHECK-NEXT:    kmovw (%rdi), %k1277; CHECK-NEXT:    vgetexpph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 {%k1} {z} # 32-byte Folded Reload278; CHECK-NEXT:    retq279  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()280  %2 = load i16, ptr %mask281  %3 = call <16 x half> @llvm.x86.avx512fp16.mask.getexp.ph.256(<16 x half> %a0, <16 x half> zeroinitializer, i16 %2)282  ret <16 x half> %3283}284 285define <8 x half> @stack_fold_getmantph(<8 x half> %a0) {286; CHECK-LABEL: stack_fold_getmantph:287; CHECK:       # %bb.0:288; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill289; CHECK-NEXT:    #APP290; CHECK-NEXT:    nop291; CHECK-NEXT:    #NO_APP292; CHECK-NEXT:    vgetmantph $8, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload293; CHECK-NEXT:    retq294  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()295  %2 = call <8 x half> @llvm.x86.avx512fp16.mask.getmant.ph.128(<8 x half> %a0, i32 8, <8 x half> undef, i8 -1)296  ret <8 x half> %2297}298declare <8 x half> @llvm.x86.avx512fp16.mask.getmant.ph.128(<8 x half>, i32, <8 x half>, i8)299 300define <8 x half> @stack_fold_getmantph_mask(<8 x half> %a0, ptr %passthru, i8 %mask) {301; CHECK-LABEL: stack_fold_getmantph_mask:302; CHECK:       # %bb.0:303; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill304; CHECK-NEXT:    kmovd %esi, %k1305; CHECK-NEXT:    #APP306; CHECK-NEXT:    nop307; CHECK-NEXT:    #NO_APP308; CHECK-NEXT:    vmovaps (%rdi), %xmm1309; CHECK-NEXT:    vgetmantph $8, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 {%k1} # 16-byte Folded Reload310; CHECK-NEXT:    vmovaps %xmm1, %xmm0311; CHECK-NEXT:    retq312  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()313  %2 = load <8 x half>, ptr %passthru314  %3 = call <8 x half> @llvm.x86.avx512fp16.mask.getmant.ph.128(<8 x half> %a0, i32 8, <8 x half> %2, i8 %mask)315  ret <8 x half> %3316}317 318define <8 x half> @stack_fold_getmantph_maskz(<8 x half> %a0, ptr %mask) {319; CHECK-LABEL: stack_fold_getmantph_maskz:320; CHECK:       # %bb.0:321; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill322; CHECK-NEXT:    #APP323; CHECK-NEXT:    nop324; CHECK-NEXT:    #NO_APP325; CHECK-NEXT:    movzbl (%rdi), %eax326; CHECK-NEXT:    kmovd %eax, %k1327; CHECK-NEXT:    vgetmantph $8, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 {%k1} {z} # 16-byte Folded Reload328; CHECK-NEXT:    retq329  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()330  %2 = load i8, ptr %mask331  %3 = call <8 x half> @llvm.x86.avx512fp16.mask.getmant.ph.128(<8 x half> %a0, i32 8, <8 x half> zeroinitializer, i8 %2)332  ret <8 x half> %3333}334 335define <16 x half> @stack_fold_getmantph_ymm(<16 x half> %a0) {336; CHECK-LABEL: stack_fold_getmantph_ymm:337; CHECK:       # %bb.0:338; CHECK-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill339; CHECK-NEXT:    #APP340; CHECK-NEXT:    nop341; CHECK-NEXT:    #NO_APP342; CHECK-NEXT:    vgetmantph $8, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload343; CHECK-NEXT:    retq344  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()345  %2 = call <16 x half> @llvm.x86.avx512fp16.mask.getmant.ph.256(<16 x half> %a0, i32 8, <16 x half> undef, i16 -1)346  ret <16 x half> %2347}348declare <16 x half> @llvm.x86.avx512fp16.mask.getmant.ph.256(<16 x half>, i32, <16 x half>, i16)349 350define <16 x half> @stack_fold_getmantph_mask_ymm(<16 x half> %a0, ptr %passthru, i16 %mask) {351; CHECK-LABEL: stack_fold_getmantph_mask_ymm:352; CHECK:       # %bb.0:353; CHECK-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill354; CHECK-NEXT:    kmovd %esi, %k1355; CHECK-NEXT:    #APP356; CHECK-NEXT:    nop357; CHECK-NEXT:    #NO_APP358; CHECK-NEXT:    vmovaps (%rdi), %ymm1359; CHECK-NEXT:    vgetmantph $8, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 {%k1} # 32-byte Folded Reload360; CHECK-NEXT:    vmovaps %ymm1, %ymm0361; CHECK-NEXT:    retq362  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()363  %2 = load <16 x half>, ptr %passthru364  %3 = call <16 x half> @llvm.x86.avx512fp16.mask.getmant.ph.256(<16 x half> %a0, i32 8, <16 x half> %2, i16 %mask)365  ret <16 x half> %3366}367 368define <16 x half> @stack_fold_getmantph_maskz_ymm(<16 x half> %a0, ptr %mask) {369; CHECK-LABEL: stack_fold_getmantph_maskz_ymm:370; CHECK:       # %bb.0:371; CHECK-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill372; CHECK-NEXT:    #APP373; CHECK-NEXT:    nop374; CHECK-NEXT:    #NO_APP375; CHECK-NEXT:    kmovw (%rdi), %k1376; CHECK-NEXT:    vgetmantph $8, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 {%k1} {z} # 32-byte Folded Reload377; CHECK-NEXT:    retq378  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()379  %2 = load i16, ptr %mask380  %3 = call <16 x half> @llvm.x86.avx512fp16.mask.getmant.ph.256(<16 x half> %a0, i32 8, <16 x half> zeroinitializer, i16 %2)381  ret <16 x half> %3382}383 384define <8 x half> @stack_fold_maxph(<8 x half> %a0, <8 x half> %a1) {385; CHECK-LABEL: stack_fold_maxph:386; CHECK:       # %bb.0:387; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill388; CHECK-NEXT:    #APP389; CHECK-NEXT:    nop390; CHECK-NEXT:    #NO_APP391; CHECK-NEXT:    vmaxph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload392; CHECK-NEXT:    retq393  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()394  %2 = call <8 x half> @llvm.x86.avx512fp16.max.ph.128(<8 x half> %a0, <8 x half> %a1)395  ret <8 x half> %2396}397declare <8 x half> @llvm.x86.avx512fp16.max.ph.128(<8 x half>, <8 x half>) nounwind readnone398 399define <8 x half> @stack_fold_maxph_commutable(<8 x half> %a0, <8 x half> %a1) {400; CHECK-LABEL: stack_fold_maxph_commutable:401; CHECK:       # %bb.0:402; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill403; CHECK-NEXT:    #APP404; CHECK-NEXT:    nop405; CHECK-NEXT:    #NO_APP406; CHECK-NEXT:    vmaxph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload407; CHECK-NEXT:    retq408  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()409  %2 = call <8 x half> @llvm.x86.avx512fp16.max.ph.128(<8 x half> %a0, <8 x half> %a1)410  ret <8 x half> %2411}412 413define <16 x half> @stack_fold_maxph_ymm(<16 x half> %a0, <16 x half> %a1) {414; CHECK-LABEL: stack_fold_maxph_ymm:415; CHECK:       # %bb.0:416; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill417; CHECK-NEXT:    #APP418; CHECK-NEXT:    nop419; CHECK-NEXT:    #NO_APP420; CHECK-NEXT:    vmaxph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload421; CHECK-NEXT:    retq422  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()423  %2 = call <16 x half> @llvm.x86.avx512fp16.max.ph.256(<16 x half> %a0, <16 x half> %a1)424  ret <16 x half> %2425}426declare <16 x half> @llvm.x86.avx512fp16.max.ph.256(<16 x half>, <16 x half>) nounwind readnone427 428define <16 x half> @stack_fold_maxph_ymm_commutable(<16 x half> %a0, <16 x half> %a1) {429; CHECK-LABEL: stack_fold_maxph_ymm_commutable:430; CHECK:       # %bb.0:431; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill432; CHECK-NEXT:    #APP433; CHECK-NEXT:    nop434; CHECK-NEXT:    #NO_APP435; CHECK-NEXT:    vmaxph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload436; CHECK-NEXT:    retq437  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()438  %2 = call <16 x half> @llvm.x86.avx512fp16.max.ph.256(<16 x half> %a0, <16 x half> %a1)439  ret <16 x half> %2440}441 442define <8 x half> @stack_fold_minph(<8 x half> %a0, <8 x half> %a1) {443; CHECK-LABEL: stack_fold_minph:444; CHECK:       # %bb.0:445; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill446; CHECK-NEXT:    #APP447; CHECK-NEXT:    nop448; CHECK-NEXT:    #NO_APP449; CHECK-NEXT:    vminph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload450; CHECK-NEXT:    retq451  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()452  %2 = call <8 x half> @llvm.x86.avx512fp16.min.ph.128(<8 x half> %a0, <8 x half> %a1)453  ret <8 x half> %2454}455declare <8 x half> @llvm.x86.avx512fp16.min.ph.128(<8 x half>, <8 x half>) nounwind readnone456 457define <8 x half> @stack_fold_minph_commutable(<8 x half> %a0, <8 x half> %a1) {458; CHECK-LABEL: stack_fold_minph_commutable:459; CHECK:       # %bb.0:460; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill461; CHECK-NEXT:    #APP462; CHECK-NEXT:    nop463; CHECK-NEXT:    #NO_APP464; CHECK-NEXT:    vminph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload465; CHECK-NEXT:    retq466  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()467  %2 = call <8 x half> @llvm.x86.avx512fp16.min.ph.128(<8 x half> %a0, <8 x half> %a1)468  ret <8 x half> %2469}470 471define <16 x half> @stack_fold_minph_ymm(<16 x half> %a0, <16 x half> %a1) {472; CHECK-LABEL: stack_fold_minph_ymm:473; CHECK:       # %bb.0:474; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill475; CHECK-NEXT:    #APP476; CHECK-NEXT:    nop477; CHECK-NEXT:    #NO_APP478; CHECK-NEXT:    vminph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload479; CHECK-NEXT:    retq480  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()481  %2 = call <16 x half> @llvm.x86.avx512fp16.min.ph.256(<16 x half> %a0, <16 x half> %a1)482  ret <16 x half> %2483}484declare <16 x half> @llvm.x86.avx512fp16.min.ph.256(<16 x half>, <16 x half>) nounwind readnone485 486define <16 x half> @stack_fold_minph_ymm_commutable(<16 x half> %a0, <16 x half> %a1) {487; CHECK-LABEL: stack_fold_minph_ymm_commutable:488; CHECK:       # %bb.0:489; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill490; CHECK-NEXT:    #APP491; CHECK-NEXT:    nop492; CHECK-NEXT:    #NO_APP493; CHECK-NEXT:    vminph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload494; CHECK-NEXT:    retq495  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()496  %2 = call <16 x half> @llvm.x86.avx512fp16.min.ph.256(<16 x half> %a0, <16 x half> %a1)497  ret <16 x half> %2498}499 500define <8 x half> @stack_fold_mulph(<8 x half> %a0, <8 x half> %a1) {501; CHECK-LABEL: stack_fold_mulph:502; CHECK:       # %bb.0:503; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill504; CHECK-NEXT:    #APP505; CHECK-NEXT:    nop506; CHECK-NEXT:    #NO_APP507; CHECK-NEXT:    vmulph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload508; CHECK-NEXT:    retq509  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()510  %2 = fmul <8 x half> %a0, %a1511  ret <8 x half> %2512}513 514define <16 x half> @stack_fold_mulph_ymm(<16 x half> %a0, <16 x half> %a1) {515; CHECK-LABEL: stack_fold_mulph_ymm:516; CHECK:       # %bb.0:517; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill518; CHECK-NEXT:    #APP519; CHECK-NEXT:    nop520; CHECK-NEXT:    #NO_APP521; CHECK-NEXT:    vmulph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload522; CHECK-NEXT:    retq523  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()524  %2 = fmul <16 x half> %a0, %a1525  ret <16 x half> %2526}527 528define <8 x half> @stack_fold_rcpph(<8 x half> %a0) {529; CHECK-LABEL: stack_fold_rcpph:530; CHECK:       # %bb.0:531; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill532; CHECK-NEXT:    #APP533; CHECK-NEXT:    nop534; CHECK-NEXT:    #NO_APP535; CHECK-NEXT:    vrcpph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload536; CHECK-NEXT:    retq537  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()538  %2 = call <8 x half> @llvm.x86.avx512fp16.mask.rcp.ph.128(<8 x half> %a0, <8 x half> undef, i8 -1)539  ret <8 x half> %2540}541declare <8 x half> @llvm.x86.avx512fp16.mask.rcp.ph.128(<8 x half>, <8 x half>, i8)542 543define <8 x half> @stack_fold_rcpph_mask(<8 x half> %a0, ptr %passthru, i8 %mask) {544; CHECK-LABEL: stack_fold_rcpph_mask:545; CHECK:       # %bb.0:546; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill547; CHECK-NEXT:    kmovd %esi, %k1548; CHECK-NEXT:    #APP549; CHECK-NEXT:    nop550; CHECK-NEXT:    #NO_APP551; CHECK-NEXT:    vmovaps (%rdi), %xmm1552; CHECK-NEXT:    vrcpph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 {%k1} # 16-byte Folded Reload553; CHECK-NEXT:    vmovaps %xmm1, %xmm0554; CHECK-NEXT:    retq555  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()556  %2 = load <8 x half>, ptr %passthru557  %3 = call <8 x half> @llvm.x86.avx512fp16.mask.rcp.ph.128(<8 x half> %a0, <8 x half> %2, i8 %mask)558  ret <8 x half> %3559}560 561define <8 x half> @stack_fold_rcpph_maskz(<8 x half> %a0, ptr %mask) {562; CHECK-LABEL: stack_fold_rcpph_maskz:563; CHECK:       # %bb.0:564; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill565; CHECK-NEXT:    #APP566; CHECK-NEXT:    nop567; CHECK-NEXT:    #NO_APP568; CHECK-NEXT:    movzbl (%rdi), %eax569; CHECK-NEXT:    kmovd %eax, %k1570; CHECK-NEXT:    vrcpph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 {%k1} {z} # 16-byte Folded Reload571; CHECK-NEXT:    retq572  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()573  %2 = load i8, ptr %mask574  %3 = call <8 x half> @llvm.x86.avx512fp16.mask.rcp.ph.128(<8 x half> %a0, <8 x half> zeroinitializer, i8 %2)575  ret <8 x half> %3576}577 578define <16 x half> @stack_fold_rcpph_ymm(<16 x half> %a0) {579; CHECK-LABEL: stack_fold_rcpph_ymm:580; CHECK:       # %bb.0:581; CHECK-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill582; CHECK-NEXT:    #APP583; CHECK-NEXT:    nop584; CHECK-NEXT:    #NO_APP585; CHECK-NEXT:    vrcpph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload586; CHECK-NEXT:    retq587  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()588  %2 = call <16 x half> @llvm.x86.avx512fp16.mask.rcp.ph.256(<16 x half> %a0, <16 x half> undef, i16 -1)589  ret <16 x half> %2590}591declare <16 x half> @llvm.x86.avx512fp16.mask.rcp.ph.256(<16 x half>, <16 x half>, i16)592 593define <16 x half> @stack_fold_rcpph_mask_ymm(<16 x half> %a0, ptr %passthru, i16 %mask) {594; CHECK-LABEL: stack_fold_rcpph_mask_ymm:595; CHECK:       # %bb.0:596; CHECK-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill597; CHECK-NEXT:    kmovd %esi, %k1598; CHECK-NEXT:    #APP599; CHECK-NEXT:    nop600; CHECK-NEXT:    #NO_APP601; CHECK-NEXT:    vmovaps (%rdi), %ymm1602; CHECK-NEXT:    vrcpph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 {%k1} # 32-byte Folded Reload603; CHECK-NEXT:    vmovaps %ymm1, %ymm0604; CHECK-NEXT:    retq605  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()606  %2 = load <16 x half>, ptr %passthru607  %3 = call <16 x half> @llvm.x86.avx512fp16.mask.rcp.ph.256(<16 x half> %a0, <16 x half> %2, i16 %mask)608  ret <16 x half> %3609}610 611define <16 x half> @stack_fold_rcpph_maskz_ymm(<16 x half> %a0, ptr %mask) {612; CHECK-LABEL: stack_fold_rcpph_maskz_ymm:613; CHECK:       # %bb.0:614; CHECK-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill615; CHECK-NEXT:    #APP616; CHECK-NEXT:    nop617; CHECK-NEXT:    #NO_APP618; CHECK-NEXT:    kmovw (%rdi), %k1619; CHECK-NEXT:    vrcpph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 {%k1} {z} # 32-byte Folded Reload620; CHECK-NEXT:    retq621  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()622  %2 = load i16, ptr %mask623  %3 = call <16 x half> @llvm.x86.avx512fp16.mask.rcp.ph.256(<16 x half> %a0, <16 x half> zeroinitializer, i16 %2)624  ret <16 x half> %3625}626 627define <8 x half> @stack_fold_reduceph(<8 x half> %a0) {628; CHECK-LABEL: stack_fold_reduceph:629; CHECK:       # %bb.0:630; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill631; CHECK-NEXT:    #APP632; CHECK-NEXT:    nop633; CHECK-NEXT:    #NO_APP634; CHECK-NEXT:    vreduceph $8, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload635; CHECK-NEXT:    retq636  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()637  %2 = call <8 x half> @llvm.x86.avx512fp16.mask.reduce.ph.128(<8 x half> %a0, i32 8, <8 x half> undef, i8 -1)638  ret <8 x half> %2639}640declare <8 x half> @llvm.x86.avx512fp16.mask.reduce.ph.128(<8 x half>, i32, <8 x half>, i8)641 642define <8 x half> @stack_fold_reduceph_mask(<8 x half> %a0, ptr %passthru, i8 %mask) {643; CHECK-LABEL: stack_fold_reduceph_mask:644; CHECK:       # %bb.0:645; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill646; CHECK-NEXT:    kmovd %esi, %k1647; CHECK-NEXT:    #APP648; CHECK-NEXT:    nop649; CHECK-NEXT:    #NO_APP650; CHECK-NEXT:    vmovaps (%rdi), %xmm1651; CHECK-NEXT:    vreduceph $8, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 {%k1} # 16-byte Folded Reload652; CHECK-NEXT:    vmovaps %xmm1, %xmm0653; CHECK-NEXT:    retq654  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()655  %2 = load <8 x half>, ptr %passthru656  %3 = call <8 x half> @llvm.x86.avx512fp16.mask.reduce.ph.128(<8 x half> %a0, i32 8, <8 x half> %2, i8 %mask)657  ret <8 x half> %3658}659 660define <8 x half> @stack_fold_reduceph_maskz(<8 x half> %a0, ptr %mask) {661; CHECK-LABEL: stack_fold_reduceph_maskz:662; CHECK:       # %bb.0:663; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill664; CHECK-NEXT:    #APP665; CHECK-NEXT:    nop666; CHECK-NEXT:    #NO_APP667; CHECK-NEXT:    movzbl (%rdi), %eax668; CHECK-NEXT:    kmovd %eax, %k1669; CHECK-NEXT:    vreduceph $8, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 {%k1} {z} # 16-byte Folded Reload670; CHECK-NEXT:    retq671  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()672  %2 = load i8, ptr %mask673  %3 = call <8 x half> @llvm.x86.avx512fp16.mask.reduce.ph.128(<8 x half> %a0, i32 8, <8 x half> zeroinitializer, i8 %2)674  ret <8 x half> %3675}676 677define <16 x half> @stack_fold_reduceph_ymm(<16 x half> %a0) {678; CHECK-LABEL: stack_fold_reduceph_ymm:679; CHECK:       # %bb.0:680; CHECK-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill681; CHECK-NEXT:    #APP682; CHECK-NEXT:    nop683; CHECK-NEXT:    #NO_APP684; CHECK-NEXT:    vreduceph $8, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload685; CHECK-NEXT:    retq686  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()687  %2 = call <16 x half> @llvm.x86.avx512fp16.mask.reduce.ph.256(<16 x half> %a0, i32 8, <16 x half> undef, i16 -1)688  ret <16 x half> %2689}690declare <16 x half> @llvm.x86.avx512fp16.mask.reduce.ph.256(<16 x half>, i32, <16 x half>, i16)691 692define <16 x half> @stack_fold_reduceph_mask_ymm(<16 x half> %a0, ptr %passthru, i16 %mask) {693; CHECK-LABEL: stack_fold_reduceph_mask_ymm:694; CHECK:       # %bb.0:695; CHECK-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill696; CHECK-NEXT:    kmovd %esi, %k1697; CHECK-NEXT:    #APP698; CHECK-NEXT:    nop699; CHECK-NEXT:    #NO_APP700; CHECK-NEXT:    vmovaps (%rdi), %ymm1701; CHECK-NEXT:    vreduceph $8, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 {%k1} # 32-byte Folded Reload702; CHECK-NEXT:    vmovaps %ymm1, %ymm0703; CHECK-NEXT:    retq704  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()705  %2 = load <16 x half>, ptr %passthru706  %3 = call <16 x half> @llvm.x86.avx512fp16.mask.reduce.ph.256(<16 x half> %a0, i32 8, <16 x half> %2, i16 %mask)707  ret <16 x half> %3708}709 710define <16 x half> @stack_fold_reduceph_maskz_ymm(<16 x half> %a0, ptr %mask) {711; CHECK-LABEL: stack_fold_reduceph_maskz_ymm:712; CHECK:       # %bb.0:713; CHECK-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill714; CHECK-NEXT:    #APP715; CHECK-NEXT:    nop716; CHECK-NEXT:    #NO_APP717; CHECK-NEXT:    kmovw (%rdi), %k1718; CHECK-NEXT:    vreduceph $8, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 {%k1} {z} # 32-byte Folded Reload719; CHECK-NEXT:    retq720  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()721  %2 = load i16, ptr %mask722  %3 = call <16 x half> @llvm.x86.avx512fp16.mask.reduce.ph.256(<16 x half> %a0, i32 8, <16 x half> zeroinitializer, i16 %2)723  ret <16 x half> %3724}725 726define <8 x half> @stack_fold_rndscaleph(<8 x half> %a0) {727; CHECK-LABEL: stack_fold_rndscaleph:728; CHECK:       # %bb.0:729; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill730; CHECK-NEXT:    #APP731; CHECK-NEXT:    nop732; CHECK-NEXT:    #NO_APP733; CHECK-NEXT:    vrndscaleph $8, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload734; CHECK-NEXT:    retq735  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()736  %2 = call <8 x half> @llvm.x86.avx512fp16.mask.rndscale.ph.128(<8 x half> %a0, i32 8, <8 x half> undef, i8 -1)737  ret <8 x half> %2738}739declare <8 x half> @llvm.x86.avx512fp16.mask.rndscale.ph.128(<8 x half>, i32, <8 x half>, i8)740 741define <8 x half> @stack_fold_rndscaleph_mask(<8 x half> %a0, ptr %passthru, i8 %mask) {742; CHECK-LABEL: stack_fold_rndscaleph_mask:743; CHECK:       # %bb.0:744; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill745; CHECK-NEXT:    kmovd %esi, %k1746; CHECK-NEXT:    #APP747; CHECK-NEXT:    nop748; CHECK-NEXT:    #NO_APP749; CHECK-NEXT:    vmovaps (%rdi), %xmm1750; CHECK-NEXT:    vrndscaleph $8, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 {%k1} # 16-byte Folded Reload751; CHECK-NEXT:    vmovaps %xmm1, %xmm0752; CHECK-NEXT:    retq753  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()754  %2 = load <8 x half>, ptr %passthru755  %3 = call <8 x half> @llvm.x86.avx512fp16.mask.rndscale.ph.128(<8 x half> %a0, i32 8, <8 x half> %2, i8 %mask)756  ret <8 x half> %3757}758 759define <8 x half> @stack_fold_rndscaleph_maskz(<8 x half> %a0, ptr %mask) {760; CHECK-LABEL: stack_fold_rndscaleph_maskz:761; CHECK:       # %bb.0:762; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill763; CHECK-NEXT:    #APP764; CHECK-NEXT:    nop765; CHECK-NEXT:    #NO_APP766; CHECK-NEXT:    movzbl (%rdi), %eax767; CHECK-NEXT:    kmovd %eax, %k1768; CHECK-NEXT:    vrndscaleph $8, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 {%k1} {z} # 16-byte Folded Reload769; CHECK-NEXT:    retq770  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()771  %2 = load i8, ptr %mask772  %3 = call <8 x half> @llvm.x86.avx512fp16.mask.rndscale.ph.128(<8 x half> %a0, i32 8, <8 x half> zeroinitializer, i8 %2)773  ret <8 x half> %3774}775 776define <16 x half> @stack_fold_rndscaleph_ymm(<16 x half> %a0) {777; CHECK-LABEL: stack_fold_rndscaleph_ymm:778; CHECK:       # %bb.0:779; CHECK-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill780; CHECK-NEXT:    #APP781; CHECK-NEXT:    nop782; CHECK-NEXT:    #NO_APP783; CHECK-NEXT:    vrndscaleph $8, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload784; CHECK-NEXT:    retq785  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()786  %2 = call <16 x half> @llvm.x86.avx512fp16.mask.rndscale.ph.256(<16 x half> %a0, i32 8, <16 x half> undef, i16 -1)787  ret <16 x half> %2788}789declare <16 x half> @llvm.x86.avx512fp16.mask.rndscale.ph.256(<16 x half>, i32, <16 x half>, i16)790 791define <16 x half> @stack_fold_rndscaleph_mask_ymm(<16 x half> %a0, ptr %passthru, i16 %mask) {792; CHECK-LABEL: stack_fold_rndscaleph_mask_ymm:793; CHECK:       # %bb.0:794; CHECK-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill795; CHECK-NEXT:    kmovd %esi, %k1796; CHECK-NEXT:    #APP797; CHECK-NEXT:    nop798; CHECK-NEXT:    #NO_APP799; CHECK-NEXT:    vmovaps (%rdi), %ymm1800; CHECK-NEXT:    vrndscaleph $8, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 {%k1} # 32-byte Folded Reload801; CHECK-NEXT:    vmovaps %ymm1, %ymm0802; CHECK-NEXT:    retq803  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()804  %2 = load <16 x half>, ptr %passthru805  %3 = call <16 x half> @llvm.x86.avx512fp16.mask.rndscale.ph.256(<16 x half> %a0, i32 8, <16 x half> %2, i16 %mask)806  ret <16 x half> %3807}808 809define <16 x half> @stack_fold_rndscaleph_maskz_ymm(<16 x half> %a0, ptr %mask) {810; CHECK-LABEL: stack_fold_rndscaleph_maskz_ymm:811; CHECK:       # %bb.0:812; CHECK-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill813; CHECK-NEXT:    #APP814; CHECK-NEXT:    nop815; CHECK-NEXT:    #NO_APP816; CHECK-NEXT:    kmovw (%rdi), %k1817; CHECK-NEXT:    vrndscaleph $8, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 {%k1} {z} # 32-byte Folded Reload818; CHECK-NEXT:    retq819  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()820  %2 = load i16, ptr %mask821  %3 = call <16 x half> @llvm.x86.avx512fp16.mask.rndscale.ph.256(<16 x half> %a0, i32 8, <16 x half> zeroinitializer, i16 %2)822  ret <16 x half> %3823}824 825define <8 x half> @stack_fold_rsqrtph(<8 x half> %a0) {826; CHECK-LABEL: stack_fold_rsqrtph:827; CHECK:       # %bb.0:828; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill829; CHECK-NEXT:    #APP830; CHECK-NEXT:    nop831; CHECK-NEXT:    #NO_APP832; CHECK-NEXT:    vrsqrtph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload833; CHECK-NEXT:    retq834  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()835  %2 = call <8 x half> @llvm.x86.avx512fp16.mask.rsqrt.ph.128(<8 x half> %a0, <8 x half> undef, i8 -1)836  ret <8 x half> %2837}838declare <8 x half> @llvm.x86.avx512fp16.mask.rsqrt.ph.128(<8 x half>, <8 x half>, i8)839 840define <8 x half> @stack_fold_rsqrtph_mask(<8 x half> %a0, ptr %passthru, i8 %mask) {841; CHECK-LABEL: stack_fold_rsqrtph_mask:842; CHECK:       # %bb.0:843; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill844; CHECK-NEXT:    kmovd %esi, %k1845; CHECK-NEXT:    #APP846; CHECK-NEXT:    nop847; CHECK-NEXT:    #NO_APP848; CHECK-NEXT:    vmovaps (%rdi), %xmm1849; CHECK-NEXT:    vrsqrtph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 {%k1} # 16-byte Folded Reload850; CHECK-NEXT:    vmovaps %xmm1, %xmm0851; CHECK-NEXT:    retq852  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()853  %2 = load <8 x half>, ptr %passthru854  %3 = call <8 x half> @llvm.x86.avx512fp16.mask.rsqrt.ph.128(<8 x half> %a0, <8 x half> %2, i8 %mask)855  ret <8 x half> %3856}857 858define <8 x half> @stack_fold_rsqrtph_maskz(<8 x half> %a0, ptr %mask) {859; CHECK-LABEL: stack_fold_rsqrtph_maskz:860; CHECK:       # %bb.0:861; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill862; CHECK-NEXT:    #APP863; CHECK-NEXT:    nop864; CHECK-NEXT:    #NO_APP865; CHECK-NEXT:    movzbl (%rdi), %eax866; CHECK-NEXT:    kmovd %eax, %k1867; CHECK-NEXT:    vrsqrtph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 {%k1} {z} # 16-byte Folded Reload868; CHECK-NEXT:    retq869  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()870  %2 = load i8, ptr %mask871  %3 = call <8 x half> @llvm.x86.avx512fp16.mask.rsqrt.ph.128(<8 x half> %a0, <8 x half> zeroinitializer, i8 %2)872  ret <8 x half> %3873}874 875define <16 x half> @stack_fold_rsqrtph_ymm(<16 x half> %a0) {876; CHECK-LABEL: stack_fold_rsqrtph_ymm:877; CHECK:       # %bb.0:878; CHECK-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill879; CHECK-NEXT:    #APP880; CHECK-NEXT:    nop881; CHECK-NEXT:    #NO_APP882; CHECK-NEXT:    vrsqrtph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload883; CHECK-NEXT:    retq884  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()885  %2 = call <16 x half> @llvm.x86.avx512fp16.mask.rsqrt.ph.256(<16 x half> %a0, <16 x half> undef, i16 -1)886  ret <16 x half> %2887}888declare <16 x half> @llvm.x86.avx512fp16.mask.rsqrt.ph.256(<16 x half>, <16 x half>, i16)889 890define <16 x half> @stack_fold_rsqrtph_mask_ymm(<16 x half> %a0, ptr %passthru, i16 %mask) {891; CHECK-LABEL: stack_fold_rsqrtph_mask_ymm:892; CHECK:       # %bb.0:893; CHECK-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill894; CHECK-NEXT:    kmovd %esi, %k1895; CHECK-NEXT:    #APP896; CHECK-NEXT:    nop897; CHECK-NEXT:    #NO_APP898; CHECK-NEXT:    vmovaps (%rdi), %ymm1899; CHECK-NEXT:    vrsqrtph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 {%k1} # 32-byte Folded Reload900; CHECK-NEXT:    vmovaps %ymm1, %ymm0901; CHECK-NEXT:    retq902  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()903  %2 = load <16 x half>, ptr %passthru904  %3 = call <16 x half> @llvm.x86.avx512fp16.mask.rsqrt.ph.256(<16 x half> %a0, <16 x half> %2, i16 %mask)905  ret <16 x half> %3906}907 908define <16 x half> @stack_fold_rsqrtph_maskz_ymm(<16 x half> %a0, ptr %mask) {909; CHECK-LABEL: stack_fold_rsqrtph_maskz_ymm:910; CHECK:       # %bb.0:911; CHECK-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill912; CHECK-NEXT:    #APP913; CHECK-NEXT:    nop914; CHECK-NEXT:    #NO_APP915; CHECK-NEXT:    kmovw (%rdi), %k1916; CHECK-NEXT:    vrsqrtph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 {%k1} {z} # 32-byte Folded Reload917; CHECK-NEXT:    retq918  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()919  %2 = load i16, ptr %mask920  %3 = call <16 x half> @llvm.x86.avx512fp16.mask.rsqrt.ph.256(<16 x half> %a0, <16 x half> zeroinitializer, i16 %2)921  ret <16 x half> %3922}923 924define <8 x half> @stack_fold_sqrtph(<8 x half> %a0) {925; CHECK-LABEL: stack_fold_sqrtph:926; CHECK:       # %bb.0:927; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill928; CHECK-NEXT:    #APP929; CHECK-NEXT:    nop930; CHECK-NEXT:    #NO_APP931; CHECK-NEXT:    vsqrtph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload932; CHECK-NEXT:    retq933  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()934  %2 = call <8 x half> @llvm.sqrt.v8f16(<8 x half> %a0)935  ret <8 x half> %2936}937declare <8 x half> @llvm.sqrt.v8f16(<8 x half>)938 939define <8 x half> @stack_fold_sqrtph_mask(<8 x half> %a0, ptr %passthru, i8 %mask) {940; CHECK-LABEL: stack_fold_sqrtph_mask:941; CHECK:       # %bb.0:942; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill943; CHECK-NEXT:    #APP944; CHECK-NEXT:    nop945; CHECK-NEXT:    #NO_APP946; CHECK-NEXT:    vmovaps (%rdi), %xmm1947; CHECK-NEXT:    kmovd %esi, %k1948; CHECK-NEXT:    vsqrtph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 {%k1} # 16-byte Folded Reload949; CHECK-NEXT:    vmovaps %xmm1, %xmm0950; CHECK-NEXT:    retq951  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()952  %2 = load <8 x half>, ptr %passthru953  %3 = call <8 x half> @llvm.sqrt.v8f16(<8 x half> %a0)954  %4 = bitcast i8 %mask to <8 x i1>955  %5 = select <8 x i1> %4, <8 x half> %3, <8 x half> %2956  ret <8 x half> %5957}958 959define <8 x half> @stack_fold_sqrtph_maskz(<8 x half> %a0, ptr %mask) {960; CHECK-LABEL: stack_fold_sqrtph_maskz:961; CHECK:       # %bb.0:962; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill963; CHECK-NEXT:    #APP964; CHECK-NEXT:    nop965; CHECK-NEXT:    #NO_APP966; CHECK-NEXT:    movzbl (%rdi), %eax967; CHECK-NEXT:    kmovd %eax, %k1968; CHECK-NEXT:    vsqrtph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 {%k1} {z} # 16-byte Folded Reload969; CHECK-NEXT:    retq970  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()971  %2 = load i8, ptr %mask972  %3 = call <8 x half> @llvm.sqrt.v8f16(<8 x half> %a0)973  %4 = bitcast i8 %2 to <8 x i1>974  %5 = select <8 x i1> %4, <8 x half> %3, <8 x half> zeroinitializer975  ret <8 x half> %5976}977 978define <16 x half> @stack_fold_sqrtph_ymm(<16 x half> %a0) {979; CHECK-LABEL: stack_fold_sqrtph_ymm:980; CHECK:       # %bb.0:981; CHECK-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill982; CHECK-NEXT:    #APP983; CHECK-NEXT:    nop984; CHECK-NEXT:    #NO_APP985; CHECK-NEXT:    vsqrtph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Folded Reload986; CHECK-NEXT:    retq987  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()988  %2 = call <16 x half> @llvm.sqrt.v16f16(<16 x half> %a0)989  ret <16 x half> %2990}991declare <16 x half> @llvm.sqrt.v16f16(<16 x half>)992 993define <16 x half> @stack_fold_sqrtph_mask_ymm(<16 x half> %a0, ptr %passthru, i16 %mask) {994; CHECK-LABEL: stack_fold_sqrtph_mask_ymm:995; CHECK:       # %bb.0:996; CHECK-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill997; CHECK-NEXT:    #APP998; CHECK-NEXT:    nop999; CHECK-NEXT:    #NO_APP1000; CHECK-NEXT:    vmovaps (%rdi), %ymm11001; CHECK-NEXT:    kmovd %esi, %k11002; CHECK-NEXT:    vsqrtph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 {%k1} # 32-byte Folded Reload1003; CHECK-NEXT:    vmovaps %ymm1, %ymm01004; CHECK-NEXT:    retq1005  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1006  %2 = load <16 x half>, ptr %passthru1007  %3 = call <16 x half> @llvm.sqrt.v16f16(<16 x half> %a0)1008  %4 = bitcast i16 %mask to <16 x i1>1009  %5 = select <16 x i1> %4, <16 x half> %3, <16 x half> %21010  ret <16 x half> %51011}1012 1013define <16 x half> @stack_fold_sqrtph_maskz_ymm(<16 x half> %a0, ptr %mask) {1014; CHECK-LABEL: stack_fold_sqrtph_maskz_ymm:1015; CHECK:       # %bb.0:1016; CHECK-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1017; CHECK-NEXT:    #APP1018; CHECK-NEXT:    nop1019; CHECK-NEXT:    #NO_APP1020; CHECK-NEXT:    kmovw (%rdi), %k11021; CHECK-NEXT:    vsqrtph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 {%k1} {z} # 32-byte Folded Reload1022; CHECK-NEXT:    retq1023  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1024  %2 = load i16, ptr %mask1025  %3 = call <16 x half> @llvm.sqrt.v16f16(<16 x half> %a0)1026  %4 = bitcast i16 %2 to <16 x i1>1027  %5 = select <16 x i1> %4, <16 x half> %3, <16 x half> zeroinitializer1028  ret <16 x half> %51029}1030 1031define <8 x half> @stack_fold_subph(<8 x half> %a0, <8 x half> %a1) {1032; CHECK-LABEL: stack_fold_subph:1033; CHECK:       # %bb.0:1034; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1035; CHECK-NEXT:    #APP1036; CHECK-NEXT:    nop1037; CHECK-NEXT:    #NO_APP1038; CHECK-NEXT:    vsubph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload1039; CHECK-NEXT:    retq1040  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1041  %2 = fsub <8 x half> %a0, %a11042  ret <8 x half> %21043}1044 1045define <16 x half> @stack_fold_subph_ymm(<16 x half> %a0, <16 x half> %a1) {1046; CHECK-LABEL: stack_fold_subph_ymm:1047; CHECK:       # %bb.0:1048; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1049; CHECK-NEXT:    #APP1050; CHECK-NEXT:    nop1051; CHECK-NEXT:    #NO_APP1052; CHECK-NEXT:    vsubph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload1053; CHECK-NEXT:    retq1054  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1055  %2 = fsub <16 x half> %a0, %a11056  ret <16 x half> %21057}1058 1059define <4 x float> @stack_fold_fmulc(<4 x float> %a0, <4 x float> %a1) {1060; CHECK-LABEL: stack_fold_fmulc:1061; CHECK:       # %bb.0:1062; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1063; CHECK-NEXT:    #APP1064; CHECK-NEXT:    nop1065; CHECK-NEXT:    #NO_APP1066; CHECK-NEXT:    vfmulcph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm2 # 16-byte Folded Reload1067; CHECK-NEXT:    vmovaps %xmm2, %xmm01068; CHECK-NEXT:    retq1069  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1070  %2 = call <4 x float> @llvm.x86.avx512fp16.mask.vfmul.cph.128(<4 x float> %a0, <4 x float> %a1, <4 x float> undef, i8 -1)1071  ret <4 x float> %21072}1073declare <4 x float> @llvm.x86.avx512fp16.mask.vfmul.cph.128(<4 x float>, <4 x float>, <4 x float>, i8)1074 1075define <4 x float> @stack_fold_fmulc_mask(<4 x float> %a0, <4 x float> %a1, ptr %passthru, i8 %mask) {1076; CHECK-LABEL: stack_fold_fmulc_mask:1077; CHECK:       # %bb.0:1078; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1079; CHECK-NEXT:    kmovd %esi, %k11080; CHECK-NEXT:    #APP1081; CHECK-NEXT:    nop1082; CHECK-NEXT:    #NO_APP1083; CHECK-NEXT:    vmovaps (%rdi), %xmm21084; CHECK-NEXT:    vfmulcph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm2 {%k1} # 16-byte Folded Reload1085; CHECK-NEXT:    vmovaps %xmm2, %xmm01086; CHECK-NEXT:    retq1087  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1088  %2 = load <4 x float>, ptr %passthru1089  %3 = call <4 x float> @llvm.x86.avx512fp16.mask.vfmul.cph.128(<4 x float> %a0, <4 x float> %a1, <4 x float> %2, i8 %mask)1090  ret <4 x float> %31091}1092 1093define <4 x float> @stack_fold_fmulc_maskz(<4 x float> %a0, <4 x float> %a1, ptr %mask) {1094; CHECK-LABEL: stack_fold_fmulc_maskz:1095; CHECK:       # %bb.0:1096; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1097; CHECK-NEXT:    #APP1098; CHECK-NEXT:    nop1099; CHECK-NEXT:    #NO_APP1100; CHECK-NEXT:    movzbl (%rdi), %eax1101; CHECK-NEXT:    kmovd %eax, %k11102; CHECK-NEXT:    vfmulcph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm2 {%k1} {z} # 16-byte Folded Reload1103; CHECK-NEXT:    vmovaps %xmm2, %xmm01104; CHECK-NEXT:    retq1105  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1106  %2 = load i8, ptr %mask1107  %3 = call <4 x float> @llvm.x86.avx512fp16.mask.vfmul.cph.128(<4 x float> %a0, <4 x float> %a1, <4 x float> zeroinitializer, i8 %2)1108  ret <4 x float> %31109}1110 1111define <4 x float> @stack_fold_fcmulc(<4 x float> %a0, <4 x float> %a1) {1112; CHECK-LABEL: stack_fold_fcmulc:1113; CHECK:       # %bb.0:1114; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1115; CHECK-NEXT:    #APP1116; CHECK-NEXT:    nop1117; CHECK-NEXT:    #NO_APP1118; CHECK-NEXT:    vfcmulcph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm2 # 16-byte Folded Reload1119; CHECK-NEXT:    vmovaps %xmm2, %xmm01120; CHECK-NEXT:    retq1121  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1122  %2 = call <4 x float> @llvm.x86.avx512fp16.mask.vfcmul.cph.128(<4 x float> %a0, <4 x float> %a1, <4 x float> undef, i8 -1)1123  ret <4 x float> %21124}1125declare <4 x float> @llvm.x86.avx512fp16.mask.vfcmul.cph.128(<4 x float>, <4 x float>, <4 x float>, i8)1126 1127define <4 x float> @stack_fold_fcmulc_mask(<4 x float> %a0, <4 x float> %a1, ptr %passthru, i8 %mask) {1128; CHECK-LABEL: stack_fold_fcmulc_mask:1129; CHECK:       # %bb.0:1130; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1131; CHECK-NEXT:    kmovd %esi, %k11132; CHECK-NEXT:    #APP1133; CHECK-NEXT:    nop1134; CHECK-NEXT:    #NO_APP1135; CHECK-NEXT:    vmovaps (%rdi), %xmm21136; CHECK-NEXT:    vfcmulcph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm2 {%k1} # 16-byte Folded Reload1137; CHECK-NEXT:    vmovaps %xmm2, %xmm01138; CHECK-NEXT:    retq1139  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1140  %2 = load <4 x float>, ptr %passthru1141  %3 = call <4 x float> @llvm.x86.avx512fp16.mask.vfcmul.cph.128(<4 x float> %a0, <4 x float> %a1, <4 x float> %2, i8 %mask)1142  ret <4 x float> %31143}1144 1145define <4 x float> @stack_fold_fcmulc_maskz(<4 x float> %a0, <4 x float> %a1, ptr %mask) {1146; CHECK-LABEL: stack_fold_fcmulc_maskz:1147; CHECK:       # %bb.0:1148; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1149; CHECK-NEXT:    #APP1150; CHECK-NEXT:    nop1151; CHECK-NEXT:    #NO_APP1152; CHECK-NEXT:    movzbl (%rdi), %eax1153; CHECK-NEXT:    kmovd %eax, %k11154; CHECK-NEXT:    vfcmulcph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm2 {%k1} {z} # 16-byte Folded Reload1155; CHECK-NEXT:    vmovaps %xmm2, %xmm01156; CHECK-NEXT:    retq1157  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1158  %2 = load i8, ptr %mask1159  %3 = call <4 x float> @llvm.x86.avx512fp16.mask.vfcmul.cph.128(<4 x float> %a0, <4 x float> %a1, <4 x float> zeroinitializer, i8 %2)1160  ret <4 x float> %31161}1162 1163define <4 x float> @stack_fold_fmaddc(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2) {1164; CHECK-LABEL: stack_fold_fmaddc:1165; CHECK:       # %bb.0:1166; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1167; CHECK-NEXT:    #APP1168; CHECK-NEXT:    nop1169; CHECK-NEXT:    #NO_APP1170; CHECK-NEXT:    vfmaddcph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload1171; CHECK-NEXT:    retq1172  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1173  %2 = call <4 x float> @llvm.x86.avx512fp16.mask.vfmadd.cph.128(<4 x float> %a1, <4 x float> %a2, <4 x float> %a0, i8 -1)1174  ret <4 x float> %21175}1176declare <4 x float> @llvm.x86.avx512fp16.mask.vfmadd.cph.128(<4 x float>, <4 x float>, <4 x float>, i8)1177 1178define <4 x float> @stack_fold_fmaddc_mask(ptr %p, <4 x float> %a1, <4 x float> %a2, i8 %mask) {1179; CHECK-LABEL: stack_fold_fmaddc_mask:1180; CHECK:       # %bb.0:1181; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1182; CHECK-NEXT:    kmovd %esi, %k11183; CHECK-NEXT:    #APP1184; CHECK-NEXT:    nop1185; CHECK-NEXT:    #NO_APP1186; CHECK-NEXT:    vmovaps (%rdi), %xmm21187; CHECK-NEXT:    vfmaddcph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm2 {%k1} # 16-byte Folded Reload1188; CHECK-NEXT:    vmovaps %xmm2, %xmm01189; CHECK-NEXT:    retq1190  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1191  %a0 = load <4 x float>, ptr %p1192  %2 = call <4 x float> @llvm.x86.avx512fp16.mask.vfmadd.cph.128(<4 x float> %a1, <4 x float> %a2, <4 x float> %a0, i8 %mask)1193  ret <4 x float> %21194}1195 1196define <4 x float> @stack_fold_fmaddc_maskz(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, ptr %mask) {1197; CHECK-LABEL: stack_fold_fmaddc_maskz:1198; CHECK:       # %bb.0:1199; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1200; CHECK-NEXT:    #APP1201; CHECK-NEXT:    nop1202; CHECK-NEXT:    #NO_APP1203; CHECK-NEXT:    movzbl (%rdi), %eax1204; CHECK-NEXT:    kmovd %eax, %k11205; CHECK-NEXT:    vxorps %xmm0, %xmm0, %xmm01206; CHECK-NEXT:    vfmaddcph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload1207; CHECK-NEXT:    retq1208  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1209  %2 = load i8, ptr %mask1210  %3 = call <4 x float> @llvm.x86.avx512fp16.mask.vfmadd.cph.128(<4 x float> %a1, <4 x float> %a2, <4 x float> zeroinitializer, i8 %2)1211  ret <4 x float> %31212}1213declare <4 x float> @llvm.x86.avx512fp16.maskz.vfmadd.cph.128(<4 x float>, <4 x float>, <4 x float>, i8)1214 1215define <4 x float> @stack_fold_fcmaddc(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2) {1216; CHECK-LABEL: stack_fold_fcmaddc:1217; CHECK:       # %bb.0:1218; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1219; CHECK-NEXT:    #APP1220; CHECK-NEXT:    nop1221; CHECK-NEXT:    #NO_APP1222; CHECK-NEXT:    vfcmaddcph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload1223; CHECK-NEXT:    retq1224  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1225  %2 = call <4 x float> @llvm.x86.avx512fp16.mask.vfcmadd.cph.128(<4 x float> %a1, <4 x float> %a2, <4 x float> %a0, i8 -1)1226  ret <4 x float> %21227}1228declare <4 x float> @llvm.x86.avx512fp16.mask.vfcmadd.cph.128(<4 x float>, <4 x float>, <4 x float>, i8)1229 1230define <4 x float> @stack_fold_fcmaddc_mask(ptr %p, <4 x float> %a1, <4 x float> %a2, i8 %mask) {1231; CHECK-LABEL: stack_fold_fcmaddc_mask:1232; CHECK:       # %bb.0:1233; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1234; CHECK-NEXT:    kmovd %esi, %k11235; CHECK-NEXT:    #APP1236; CHECK-NEXT:    nop1237; CHECK-NEXT:    #NO_APP1238; CHECK-NEXT:    vmovaps (%rdi), %xmm21239; CHECK-NEXT:    vfcmaddcph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm2 {%k1} # 16-byte Folded Reload1240; CHECK-NEXT:    vmovaps %xmm2, %xmm01241; CHECK-NEXT:    retq1242  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1243  %a0 = load <4 x float>, ptr %p1244  %2 = call <4 x float> @llvm.x86.avx512fp16.mask.vfcmadd.cph.128(<4 x float> %a1, <4 x float> %a2, <4 x float> %a0, i8 %mask)1245  ret <4 x float> %21246}1247 1248define <4 x float> @stack_fold_fcmaddc_maskz(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, ptr %mask) {1249; CHECK-LABEL: stack_fold_fcmaddc_maskz:1250; CHECK:       # %bb.0:1251; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1252; CHECK-NEXT:    #APP1253; CHECK-NEXT:    nop1254; CHECK-NEXT:    #NO_APP1255; CHECK-NEXT:    movzbl (%rdi), %eax1256; CHECK-NEXT:    kmovd %eax, %k11257; CHECK-NEXT:    vxorps %xmm0, %xmm0, %xmm01258; CHECK-NEXT:    vfcmaddcph {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload1259; CHECK-NEXT:    retq1260  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1261  %2 = load i8, ptr %mask1262  %3 = call <4 x float> @llvm.x86.avx512fp16.mask.vfcmadd.cph.128(<4 x float> %a1, <4 x float> %a2, <4 x float> zeroinitializer, i8 %2)1263  ret <4 x float> %31264}1265declare <4 x float> @llvm.x86.avx512fp16.maskz.vfcmadd.cph.128(<4 x float>, <4 x float>, <4 x float>, i8)1266 1267define <8 x float> @stack_fold_fmulc_ymm(<8 x float> %a0, <8 x float> %a1) {1268; CHECK-LABEL: stack_fold_fmulc_ymm:1269; CHECK:       # %bb.0:1270; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1271; CHECK-NEXT:    #APP1272; CHECK-NEXT:    nop1273; CHECK-NEXT:    #NO_APP1274; CHECK-NEXT:    vfmulcph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 # 32-byte Folded Reload1275; CHECK-NEXT:    vmovaps %ymm2, %ymm01276; CHECK-NEXT:    retq1277  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1278  %2 = call <8 x float> @llvm.x86.avx512fp16.mask.vfmul.cph.256(<8 x float> %a0, <8 x float> %a1, <8 x float> undef, i8 -1)1279  ret <8 x float> %21280}1281declare <8 x float> @llvm.x86.avx512fp16.mask.vfmul.cph.256(<8 x float>, <8 x float>, <8 x float>, i8)1282 1283define <8 x float> @stack_fold_fmulc_mask_ymm(<8 x float> %a0, <8 x float> %a1, ptr %passthru, i8 %mask) {1284; CHECK-LABEL: stack_fold_fmulc_mask_ymm:1285; CHECK:       # %bb.0:1286; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1287; CHECK-NEXT:    kmovd %esi, %k11288; CHECK-NEXT:    #APP1289; CHECK-NEXT:    nop1290; CHECK-NEXT:    #NO_APP1291; CHECK-NEXT:    vmovaps (%rdi), %ymm21292; CHECK-NEXT:    vfmulcph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 {%k1} # 32-byte Folded Reload1293; CHECK-NEXT:    vmovaps %ymm2, %ymm01294; CHECK-NEXT:    retq1295  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1296  %2 = load <8 x float>, ptr %passthru1297  %3 = call <8 x float> @llvm.x86.avx512fp16.mask.vfmul.cph.256(<8 x float> %a0, <8 x float> %a1, <8 x float> %2, i8 %mask)1298  ret <8 x float> %31299}1300 1301define <8 x float> @stack_fold_fmulc_maskz_ymm(<8 x float> %a0, <8 x float> %a1, ptr %mask) {1302; CHECK-LABEL: stack_fold_fmulc_maskz_ymm:1303; CHECK:       # %bb.0:1304; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1305; CHECK-NEXT:    #APP1306; CHECK-NEXT:    nop1307; CHECK-NEXT:    #NO_APP1308; CHECK-NEXT:    movzbl (%rdi), %eax1309; CHECK-NEXT:    kmovd %eax, %k11310; CHECK-NEXT:    vfmulcph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 {%k1} {z} # 32-byte Folded Reload1311; CHECK-NEXT:    vmovaps %ymm2, %ymm01312; CHECK-NEXT:    retq1313  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1314  %2 = load i8, ptr %mask1315  %3 = call <8 x float> @llvm.x86.avx512fp16.mask.vfmul.cph.256(<8 x float> %a0, <8 x float> %a1, <8 x float> zeroinitializer, i8 %2)1316  ret <8 x float> %31317}1318 1319define <8 x float> @stack_fold_fcmulc_ymm(<8 x float> %a0, <8 x float> %a1) {1320; CHECK-LABEL: stack_fold_fcmulc_ymm:1321; CHECK:       # %bb.0:1322; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1323; CHECK-NEXT:    #APP1324; CHECK-NEXT:    nop1325; CHECK-NEXT:    #NO_APP1326; CHECK-NEXT:    vfcmulcph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 # 32-byte Folded Reload1327; CHECK-NEXT:    vmovaps %ymm2, %ymm01328; CHECK-NEXT:    retq1329  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1330  %2 = call <8 x float> @llvm.x86.avx512fp16.mask.vfcmul.cph.256(<8 x float> %a0, <8 x float> %a1, <8 x float> undef, i8 -1)1331  ret <8 x float> %21332}1333declare <8 x float> @llvm.x86.avx512fp16.mask.vfcmul.cph.256(<8 x float>, <8 x float>, <8 x float>, i8)1334 1335define <8 x float> @stack_fold_fcmulc_mask_ymm(<8 x float> %a0, <8 x float> %a1, ptr %passthru, i8 %mask) {1336; CHECK-LABEL: stack_fold_fcmulc_mask_ymm:1337; CHECK:       # %bb.0:1338; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1339; CHECK-NEXT:    kmovd %esi, %k11340; CHECK-NEXT:    #APP1341; CHECK-NEXT:    nop1342; CHECK-NEXT:    #NO_APP1343; CHECK-NEXT:    vmovaps (%rdi), %ymm21344; CHECK-NEXT:    vfcmulcph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 {%k1} # 32-byte Folded Reload1345; CHECK-NEXT:    vmovaps %ymm2, %ymm01346; CHECK-NEXT:    retq1347  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1348  %2 = load <8 x float>, ptr %passthru1349  %3 = call <8 x float> @llvm.x86.avx512fp16.mask.vfcmul.cph.256(<8 x float> %a0, <8 x float> %a1, <8 x float> %2, i8 %mask)1350  ret <8 x float> %31351}1352 1353define <8 x float> @stack_fold_fcmulc_maskz_ymm(<8 x float> %a0, <8 x float> %a1, ptr %mask) {1354; CHECK-LABEL: stack_fold_fcmulc_maskz_ymm:1355; CHECK:       # %bb.0:1356; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1357; CHECK-NEXT:    #APP1358; CHECK-NEXT:    nop1359; CHECK-NEXT:    #NO_APP1360; CHECK-NEXT:    movzbl (%rdi), %eax1361; CHECK-NEXT:    kmovd %eax, %k11362; CHECK-NEXT:    vfcmulcph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 {%k1} {z} # 32-byte Folded Reload1363; CHECK-NEXT:    vmovaps %ymm2, %ymm01364; CHECK-NEXT:    retq1365  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1366  %2 = load i8, ptr %mask1367  %3 = call <8 x float> @llvm.x86.avx512fp16.mask.vfcmul.cph.256(<8 x float> %a0, <8 x float> %a1, <8 x float> zeroinitializer, i8 %2)1368  ret <8 x float> %31369}1370 1371define <8 x float> @stack_fold_fmaddc_ymm(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2) {1372; CHECK-LABEL: stack_fold_fmaddc_ymm:1373; CHECK:       # %bb.0:1374; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1375; CHECK-NEXT:    #APP1376; CHECK-NEXT:    nop1377; CHECK-NEXT:    #NO_APP1378; CHECK-NEXT:    vfmaddcph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 # 32-byte Folded Reload1379; CHECK-NEXT:    retq1380  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1381  %2 = call <8 x float> @llvm.x86.avx512fp16.mask.vfmadd.cph.256(<8 x float> %a1, <8 x float> %a2, <8 x float> %a0, i8 -1)1382  ret <8 x float> %21383}1384declare <8 x float> @llvm.x86.avx512fp16.mask.vfmadd.cph.256(<8 x float>, <8 x float>, <8 x float>, i8)1385 1386define <8 x float> @stack_fold_fmaddc_mask_ymm(ptr %p, <8 x float> %a1, <8 x float> %a2, i8 %mask) {1387; CHECK-LABEL: stack_fold_fmaddc_mask_ymm:1388; CHECK:       # %bb.0:1389; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1390; CHECK-NEXT:    kmovd %esi, %k11391; CHECK-NEXT:    #APP1392; CHECK-NEXT:    nop1393; CHECK-NEXT:    #NO_APP1394; CHECK-NEXT:    vmovaps (%rdi), %ymm21395; CHECK-NEXT:    vfmaddcph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 {%k1} # 32-byte Folded Reload1396; CHECK-NEXT:    vmovaps %ymm2, %ymm01397; CHECK-NEXT:    retq1398  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1399  %a0 = load <8 x float>, ptr %p1400  %2 = call <8 x float> @llvm.x86.avx512fp16.mask.vfmadd.cph.256(<8 x float> %a1, <8 x float> %a2, <8 x float> %a0, i8 %mask)1401  ret <8 x float> %21402}1403 1404define <8 x float> @stack_fold_fmaddc_maskz_ymm(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2, ptr %mask) {1405; CHECK-LABEL: stack_fold_fmaddc_maskz_ymm:1406; CHECK:       # %bb.0:1407; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1408; CHECK-NEXT:    #APP1409; CHECK-NEXT:    nop1410; CHECK-NEXT:    #NO_APP1411; CHECK-NEXT:    movzbl (%rdi), %eax1412; CHECK-NEXT:    kmovd %eax, %k11413; CHECK-NEXT:    vxorps %xmm0, %xmm0, %xmm01414; CHECK-NEXT:    vfmaddcph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 {%k1} {z} # 32-byte Folded Reload1415; CHECK-NEXT:    retq1416  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1417  %2 = load i8, ptr %mask1418  %3 = call <8 x float> @llvm.x86.avx512fp16.mask.vfmadd.cph.256(<8 x float> %a1, <8 x float> %a2, <8 x float> zeroinitializer, i8 %2)1419  ret <8 x float> %31420}1421declare <8 x float> @llvm.x86.avx512fp16.maskz.vfmadd.cph.256(<8 x float>, <8 x float>, <8 x float>, i8)1422 1423define <8 x float> @stack_fold_fcmaddc_ymm(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2) {1424; CHECK-LABEL: stack_fold_fcmaddc_ymm:1425; CHECK:       # %bb.0:1426; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1427; CHECK-NEXT:    #APP1428; CHECK-NEXT:    nop1429; CHECK-NEXT:    #NO_APP1430; CHECK-NEXT:    vfcmaddcph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 # 32-byte Folded Reload1431; CHECK-NEXT:    retq1432  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1433  %2 = call <8 x float> @llvm.x86.avx512fp16.mask.vfcmadd.cph.256(<8 x float> %a1, <8 x float> %a2, <8 x float> %a0, i8 -1)1434  ret <8 x float> %21435}1436declare <8 x float> @llvm.x86.avx512fp16.mask.vfcmadd.cph.256(<8 x float>, <8 x float>, <8 x float>, i8)1437 1438define <8 x float> @stack_fold_fcmaddc_mask_ymm(ptr %p, <8 x float> %a1, <8 x float> %a2, i8 %mask) {1439; CHECK-LABEL: stack_fold_fcmaddc_mask_ymm:1440; CHECK:       # %bb.0:1441; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1442; CHECK-NEXT:    kmovd %esi, %k11443; CHECK-NEXT:    #APP1444; CHECK-NEXT:    nop1445; CHECK-NEXT:    #NO_APP1446; CHECK-NEXT:    vmovaps (%rdi), %ymm21447; CHECK-NEXT:    vfcmaddcph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 {%k1} # 32-byte Folded Reload1448; CHECK-NEXT:    vmovaps %ymm2, %ymm01449; CHECK-NEXT:    retq1450  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1451  %a0 = load <8 x float>, ptr %p1452  %2 = call <8 x float> @llvm.x86.avx512fp16.mask.vfcmadd.cph.256(<8 x float> %a1, <8 x float> %a2, <8 x float> %a0, i8 %mask)1453  ret <8 x float> %21454}1455 1456define <8 x float> @stack_fold_fcmaddc_maskz_ymm(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2, ptr %mask) {1457; CHECK-LABEL: stack_fold_fcmaddc_maskz_ymm:1458; CHECK:       # %bb.0:1459; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill1460; CHECK-NEXT:    #APP1461; CHECK-NEXT:    nop1462; CHECK-NEXT:    #NO_APP1463; CHECK-NEXT:    movzbl (%rdi), %eax1464; CHECK-NEXT:    kmovd %eax, %k11465; CHECK-NEXT:    vxorps %xmm0, %xmm0, %xmm01466; CHECK-NEXT:    vfcmaddcph {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 {%k1} {z} # 32-byte Folded Reload1467; CHECK-NEXT:    retq1468  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()1469  %2 = load i8, ptr %mask1470  %3 = call <8 x float> @llvm.x86.avx512fp16.mask.vfcmadd.cph.256(<8 x float> %a1, <8 x float> %a2, <8 x float> zeroinitializer, i8 %2)1471  ret <8 x float> %31472}1473declare <8 x float> @llvm.x86.avx512fp16.maskz.vfcmadd.cph.256(<8 x float>, <8 x float>, <8 x float>, i8)1474