brintos

brintos / llvm-project-archived public Read only

0
0
Text · 27.3 KiB · 0f69f73 Raw
590 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs -mcpu=sapphirerapids -mattr=+false-deps-getmant -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=ENABLE3; RUN: llc -verify-machineinstrs -mcpu=sapphirerapids -mattr=-false-deps-getmant -mtriple=x86_64-unknown-unknown < %s | FileCheck %s --check-prefixes=DISABLE4 5define <4 x float> @getmantps_mem_128(ptr %p0) {6; ENABLE-LABEL: getmantps_mem_128:7; ENABLE:       # %bb.0:8; ENABLE-NEXT:    #APP9; ENABLE-NEXT:    nop10; ENABLE-NEXT:    #NO_APP11; ENABLE-NEXT:    vxorps %xmm0, %xmm0, %xmm012; ENABLE-NEXT:    vgetmantps $88, (%rdi), %xmm013; ENABLE-NEXT:    retq14;15; DISABLE-LABEL: getmantps_mem_128:16; DISABLE:       # %bb.0:17; DISABLE-NEXT:    #APP18; DISABLE-NEXT:    nop19; DISABLE-NEXT:    #NO_APP20; DISABLE-NEXT:    vgetmantps $88, (%rdi), %xmm021; DISABLE-NEXT:    retq22  %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}"()23  %a0 = load <4 x float>, ptr %p0, align 6424  %2 = call <4 x float> @llvm.x86.avx512.mask.getmant.ps.128(<4 x float> %a0, i32 88, <4 x float> undef, i8 -1)25  ret <4 x float> %226}27 28define <4 x float> @getmantps_broadcast_128(ptr %p0) {29; ENABLE-LABEL: getmantps_broadcast_128:30; ENABLE:       # %bb.0:31; ENABLE-NEXT:    #APP32; ENABLE-NEXT:    nop33; ENABLE-NEXT:    #NO_APP34; ENABLE-NEXT:    vxorps %xmm0, %xmm0, %xmm035; ENABLE-NEXT:    vgetmantps $88, (%rdi){1to4}, %xmm036; ENABLE-NEXT:    retq37;38; DISABLE-LABEL: getmantps_broadcast_128:39; DISABLE:       # %bb.0:40; DISABLE-NEXT:    #APP41; DISABLE-NEXT:    nop42; DISABLE-NEXT:    #NO_APP43; DISABLE-NEXT:    vgetmantps $88, (%rdi){1to4}, %xmm044; DISABLE-NEXT:    retq45  %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}"()46  %v0 = load float, ptr %p0, align 447  %t0 = insertelement <4 x float> undef, float %v0, i64 048  %a0 = shufflevector <4 x float> %t0, <4 x float> undef, <4 x i32> zeroinitializer49  %2 = call <4 x float> @llvm.x86.avx512.mask.getmant.ps.128(<4 x float> %a0, i32 88, <4 x float> undef, i8 -1)50  ret <4 x float> %251}52 53declare <4 x float> @llvm.x86.avx512.mask.getmant.ps.128(<4 x float>, i32, <4 x float>, i8)54 55define <8 x float> @getmantps_mem_256(ptr %p0) {56; ENABLE-LABEL: getmantps_mem_256:57; ENABLE:       # %bb.0:58; ENABLE-NEXT:    #APP59; ENABLE-NEXT:    nop60; ENABLE-NEXT:    #NO_APP61; ENABLE-NEXT:    vxorps %xmm0, %xmm0, %xmm062; ENABLE-NEXT:    vgetmantps $88, (%rdi), %ymm063; ENABLE-NEXT:    retq64;65; DISABLE-LABEL: getmantps_mem_256:66; DISABLE:       # %bb.0:67; DISABLE-NEXT:    #APP68; DISABLE-NEXT:    nop69; DISABLE-NEXT:    #NO_APP70; DISABLE-NEXT:    vgetmantps $88, (%rdi), %ymm071; DISABLE-NEXT:    retq72  %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}"()73  %a0 = load <8 x float>, ptr %p0, align 6474  %2 = call <8 x float> @llvm.x86.avx512.mask.getmant.ps.256(<8 x float> %a0, i32 88, <8 x float> undef, i8 -1)75  ret <8 x float> %276}77 78define <8 x float> @getmantps_broadcast_256(ptr %p0) {79; ENABLE-LABEL: getmantps_broadcast_256:80; ENABLE:       # %bb.0:81; ENABLE-NEXT:    #APP82; ENABLE-NEXT:    nop83; ENABLE-NEXT:    #NO_APP84; ENABLE-NEXT:    vxorps %xmm0, %xmm0, %xmm085; ENABLE-NEXT:    vgetmantps $88, (%rdi){1to8}, %ymm086; ENABLE-NEXT:    retq87;88; DISABLE-LABEL: getmantps_broadcast_256:89; DISABLE:       # %bb.0:90; DISABLE-NEXT:    #APP91; DISABLE-NEXT:    nop92; DISABLE-NEXT:    #NO_APP93; DISABLE-NEXT:    vgetmantps $88, (%rdi){1to8}, %ymm094; DISABLE-NEXT:    retq95  %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}"()96  %v0 = load float, ptr %p0, align 497  %t0 = insertelement <8 x float> undef, float %v0, i64 098  %a0 = shufflevector <8 x float> %t0, <8 x float> undef, <8 x i32> zeroinitializer99  %2 = call <8 x float> @llvm.x86.avx512.mask.getmant.ps.256(<8 x float> %a0, i32 88, <8 x float> undef, i8 -1)100  ret <8 x float> %2101}102 103declare <8 x float> @llvm.x86.avx512.mask.getmant.ps.256(<8 x float>, i32, <8 x float>, i8)104 105define <16 x float> @getmantps_mem_512(ptr %p0) {106; ENABLE-LABEL: getmantps_mem_512:107; ENABLE:       # %bb.0:108; ENABLE-NEXT:    #APP109; ENABLE-NEXT:    nop110; ENABLE-NEXT:    #NO_APP111; ENABLE-NEXT:    vpxor %xmm0, %xmm0, %xmm0112; ENABLE-NEXT:    vgetmantps $88, (%rdi), %zmm0113; ENABLE-NEXT:    retq114;115; DISABLE-LABEL: getmantps_mem_512:116; DISABLE:       # %bb.0:117; DISABLE-NEXT:    #APP118; DISABLE-NEXT:    nop119; DISABLE-NEXT:    #NO_APP120; DISABLE-NEXT:    vgetmantps $88, (%rdi), %zmm0121; DISABLE-NEXT:    retq122  %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}"()123  %a0 = load <16 x float>, ptr %p0, align 64124  %2 = call <16 x float> @llvm.x86.avx512.mask.getmant.ps.512(<16 x float> %a0, i32 88, <16 x float> undef, i16 -1, i32 4)125  ret <16 x float> %2126}127 128define <16 x float> @getmantps_broadcast_512(ptr %p0) {129; ENABLE-LABEL: getmantps_broadcast_512:130; ENABLE:       # %bb.0:131; ENABLE-NEXT:    #APP132; ENABLE-NEXT:    nop133; ENABLE-NEXT:    #NO_APP134; ENABLE-NEXT:    vpxor %xmm0, %xmm0, %xmm0135; ENABLE-NEXT:    vgetmantps $88, (%rdi){1to16}, %zmm0136; ENABLE-NEXT:    retq137;138; DISABLE-LABEL: getmantps_broadcast_512:139; DISABLE:       # %bb.0:140; DISABLE-NEXT:    #APP141; DISABLE-NEXT:    nop142; DISABLE-NEXT:    #NO_APP143; DISABLE-NEXT:    vgetmantps $88, (%rdi){1to16}, %zmm0144; DISABLE-NEXT:    retq145  %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}"()146  %v0 = load float, ptr %p0, align 4147  %t0 = insertelement <16 x float> undef, float %v0, i64 0148  %a0 = shufflevector <16 x float> %t0, <16 x float> undef, <16 x i32> zeroinitializer149  %2 = call <16 x float> @llvm.x86.avx512.mask.getmant.ps.512(<16 x float> %a0, i32 88, <16 x float> undef, i16 -1, i32 4)150  ret <16 x float> %2151}152 153declare <16 x float> @llvm.x86.avx512.mask.getmant.ps.512(<16 x float>, i32, <16 x float>, i16, i32)154 155 156define <2 x double> @getmantpd_mem_128(ptr %p0) {157; ENABLE-LABEL: getmantpd_mem_128:158; ENABLE:       # %bb.0:159; ENABLE-NEXT:    #APP160; ENABLE-NEXT:    nop161; ENABLE-NEXT:    #NO_APP162; ENABLE-NEXT:    vxorps %xmm0, %xmm0, %xmm0163; ENABLE-NEXT:    vgetmantpd $88, (%rdi), %xmm0164; ENABLE-NEXT:    retq165;166; DISABLE-LABEL: getmantpd_mem_128:167; DISABLE:       # %bb.0:168; DISABLE-NEXT:    #APP169; DISABLE-NEXT:    nop170; DISABLE-NEXT:    #NO_APP171; DISABLE-NEXT:    vgetmantpd $88, (%rdi), %xmm0172; DISABLE-NEXT:    retq173  %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}"()174  %a0 = load <2 x double>, ptr %p0, align 64175  %2 = call <2 x double> @llvm.x86.avx512.mask.getmant.pd.128(<2 x double> %a0, i32 88, <2 x double> undef, i8 -1)176  ret <2 x double> %2177}178 179define <2 x double> @getmantpd_broadcast_128(ptr %p0) {180; ENABLE-LABEL: getmantpd_broadcast_128:181; ENABLE:       # %bb.0:182; ENABLE-NEXT:    #APP183; ENABLE-NEXT:    nop184; ENABLE-NEXT:    #NO_APP185; ENABLE-NEXT:    vxorps %xmm0, %xmm0, %xmm0186; ENABLE-NEXT:    vgetmantpd $88, (%rdi){1to2}, %xmm0187; ENABLE-NEXT:    retq188;189; DISABLE-LABEL: getmantpd_broadcast_128:190; DISABLE:       # %bb.0:191; DISABLE-NEXT:    #APP192; DISABLE-NEXT:    nop193; DISABLE-NEXT:    #NO_APP194; DISABLE-NEXT:    vgetmantpd $88, (%rdi){1to2}, %xmm0195; DISABLE-NEXT:    retq196  %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}"()197  %v0 = load double, ptr %p0, align 4198  %t0 = insertelement <2 x double> undef, double %v0, i64 0199  %a0 = shufflevector <2 x double> %t0, <2 x double> undef, <2 x i32> zeroinitializer200  %2 = call <2 x double> @llvm.x86.avx512.mask.getmant.pd.128(<2 x double> %a0, i32 88, <2 x double> undef, i8 -1)201  ret <2 x double> %2202}203 204declare <2 x double> @llvm.x86.avx512.mask.getmant.pd.128(<2 x double>, i32, <2 x double>, i8)205 206define <4 x double> @getmantpd_mem_256(ptr %p0) {207; ENABLE-LABEL: getmantpd_mem_256:208; ENABLE:       # %bb.0:209; ENABLE-NEXT:    #APP210; ENABLE-NEXT:    nop211; ENABLE-NEXT:    #NO_APP212; ENABLE-NEXT:    vxorps %xmm0, %xmm0, %xmm0213; ENABLE-NEXT:    vgetmantpd $88, (%rdi), %ymm0214; ENABLE-NEXT:    retq215;216; DISABLE-LABEL: getmantpd_mem_256:217; DISABLE:       # %bb.0:218; DISABLE-NEXT:    #APP219; DISABLE-NEXT:    nop220; DISABLE-NEXT:    #NO_APP221; DISABLE-NEXT:    vgetmantpd $88, (%rdi), %ymm0222; DISABLE-NEXT:    retq223  %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}"()224  %a0 = load <4 x double>, ptr %p0, align 64225  %2 = call <4 x double> @llvm.x86.avx512.mask.getmant.pd.256(<4 x double> %a0, i32 88, <4 x double> undef, i8 -1)226  ret <4 x double> %2227}228 229define <4 x double> @getmantpd_broadcast_256(ptr %p0) {230; ENABLE-LABEL: getmantpd_broadcast_256:231; ENABLE:       # %bb.0:232; ENABLE-NEXT:    #APP233; ENABLE-NEXT:    nop234; ENABLE-NEXT:    #NO_APP235; ENABLE-NEXT:    vxorps %xmm0, %xmm0, %xmm0236; ENABLE-NEXT:    vgetmantpd $88, (%rdi){1to4}, %ymm0237; ENABLE-NEXT:    retq238;239; DISABLE-LABEL: getmantpd_broadcast_256:240; DISABLE:       # %bb.0:241; DISABLE-NEXT:    #APP242; DISABLE-NEXT:    nop243; DISABLE-NEXT:    #NO_APP244; DISABLE-NEXT:    vgetmantpd $88, (%rdi){1to4}, %ymm0245; DISABLE-NEXT:    retq246  %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}"()247  %v0 = load double, ptr %p0, align 4248  %t0 = insertelement <4 x double> undef, double %v0, i64 0249  %a0 = shufflevector <4 x double> %t0, <4 x double> undef, <4 x i32> zeroinitializer250  %2 = call <4 x double> @llvm.x86.avx512.mask.getmant.pd.256(<4 x double> %a0, i32 88, <4 x double> undef, i8 -1)251  ret <4 x double> %2252}253 254declare <4 x double> @llvm.x86.avx512.mask.getmant.pd.256(<4 x double>, i32, <4 x double>, i8)255 256define <8 x double> @getmantpd_mem_512(ptr %p0) {257; ENABLE-LABEL: getmantpd_mem_512:258; ENABLE:       # %bb.0:259; ENABLE-NEXT:    #APP260; ENABLE-NEXT:    nop261; ENABLE-NEXT:    #NO_APP262; ENABLE-NEXT:    vpxor %xmm0, %xmm0, %xmm0263; ENABLE-NEXT:    vgetmantpd $88, (%rdi), %zmm0264; ENABLE-NEXT:    retq265;266; DISABLE-LABEL: getmantpd_mem_512:267; DISABLE:       # %bb.0:268; DISABLE-NEXT:    #APP269; DISABLE-NEXT:    nop270; DISABLE-NEXT:    #NO_APP271; DISABLE-NEXT:    vgetmantpd $88, (%rdi), %zmm0272; DISABLE-NEXT:    retq273  %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}"()274  %a0 = load <8 x double>, ptr %p0, align 64275  %2 = call <8 x double> @llvm.x86.avx512.mask.getmant.pd.512(<8 x double> %a0, i32 88, <8 x double> undef, i8 -1, i32 4)276  ret <8 x double> %2277}278 279define <8 x double> @getmantpd_broadcast_512(ptr %p0) {280; ENABLE-LABEL: getmantpd_broadcast_512:281; ENABLE:       # %bb.0:282; ENABLE-NEXT:    #APP283; ENABLE-NEXT:    nop284; ENABLE-NEXT:    #NO_APP285; ENABLE-NEXT:    vpxor %xmm0, %xmm0, %xmm0286; ENABLE-NEXT:    vgetmantpd $88, (%rdi){1to8}, %zmm0287; ENABLE-NEXT:    retq288;289; DISABLE-LABEL: getmantpd_broadcast_512:290; DISABLE:       # %bb.0:291; DISABLE-NEXT:    #APP292; DISABLE-NEXT:    nop293; DISABLE-NEXT:    #NO_APP294; DISABLE-NEXT:    vgetmantpd $88, (%rdi){1to8}, %zmm0295; DISABLE-NEXT:    retq296  %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}"()297  %v0 = load double, ptr %p0, align 4298  %t0 = insertelement <8 x double> undef, double %v0, i64 0299  %a0 = shufflevector <8 x double> %t0, <8 x double> undef, <8 x i32> zeroinitializer300  %2 = call <8 x double> @llvm.x86.avx512.mask.getmant.pd.512(<8 x double> %a0, i32 88, <8 x double> undef, i8 -1, i32 4)301  ret <8 x double> %2302}303 304declare <8 x double> @llvm.x86.avx512.mask.getmant.pd.512(<8 x double>, i32, <8 x double>, i8, i32)305 306define <8 x half> @getmantsh(<8 x half> %a0, <8 x half> %a1) {307; ENABLE-LABEL: getmantsh:308; ENABLE:       # %bb.0:309; ENABLE-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill310; ENABLE-NEXT:    #APP311; ENABLE-NEXT:    nop312; ENABLE-NEXT:    #NO_APP313; ENABLE-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload314; ENABLE-NEXT:    vxorps %xmm1, %xmm1, %xmm1315; ENABLE-NEXT:    vgetmantsh $11, %xmm2, %xmm0, %xmm1316; ENABLE-NEXT:    vaddph %xmm2, %xmm0, %xmm0317; ENABLE-NEXT:    vaddph %xmm0, %xmm1, %xmm0318; ENABLE-NEXT:    retq319;320; DISABLE-LABEL: getmantsh:321; DISABLE:       # %bb.0:322; DISABLE-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill323; DISABLE-NEXT:    #APP324; DISABLE-NEXT:    nop325; DISABLE-NEXT:    #NO_APP326; DISABLE-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload327; DISABLE-NEXT:    vgetmantsh $11, %xmm2, %xmm0, %xmm1328; DISABLE-NEXT:    vaddph %xmm2, %xmm0, %xmm0329; DISABLE-NEXT:    vaddph %xmm0, %xmm1, %xmm0330; DISABLE-NEXT:    retq331  %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}"()332  %2 = call <8 x half> @llvm.x86.avx512fp16.mask.getmant.sh(<8 x half> %a0, <8 x half> %a1, i32 11, <8 x half> undef, i8 -1, i32 4)333  %t = fadd <8 x half> %a0, %a1334  %res = fadd <8 x half> %2, %t335  ret <8 x half> %res336}337 338define <8 x half> @getmantsh_mem(<8 x half> %a0, ptr %p1) {339; ENABLE-LABEL: getmantsh_mem:340; ENABLE:       # %bb.0:341; ENABLE-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill342; ENABLE-NEXT:    #APP343; ENABLE-NEXT:    nop344; ENABLE-NEXT:    #NO_APP345; ENABLE-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload346; ENABLE-NEXT:    vxorps %xmm0, %xmm0, %xmm0347; ENABLE-NEXT:    vgetmantsh $11, (%rdi), %xmm1, %xmm0348; ENABLE-NEXT:    vaddph %xmm1, %xmm0, %xmm0349; ENABLE-NEXT:    retq350;351; DISABLE-LABEL: getmantsh_mem:352; DISABLE:       # %bb.0:353; DISABLE-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill354; DISABLE-NEXT:    #APP355; DISABLE-NEXT:    nop356; DISABLE-NEXT:    #NO_APP357; DISABLE-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload358; DISABLE-NEXT:    vgetmantsh $11, (%rdi), %xmm1, %xmm0359; DISABLE-NEXT:    vaddph %xmm1, %xmm0, %xmm0360; DISABLE-NEXT:    retq361  %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}"()362  %a1 = load <8 x half>, ptr %p1, align 64363  %2 = call <8 x half> @llvm.x86.avx512fp16.mask.getmant.sh(<8 x half> %a0, <8 x half> %a1, i32 11, <8 x half> undef, i8 -1, i32 4)364  %res = fadd <8 x half> %2, %a0365  ret <8 x half> %res366}367 368define <8 x half> @getmantsh_maskz(<8 x half> %a0, <8 x half> %a1, ptr %mask) {369; ENABLE-LABEL: getmantsh_maskz:370; ENABLE:       # %bb.0:371; ENABLE-NEXT:    #APP372; ENABLE-NEXT:    nop373; ENABLE-NEXT:    #NO_APP374; ENABLE-NEXT:    kmovb (%rdi), %k1375; ENABLE-NEXT:    vxorps %xmm2, %xmm2, %xmm2376; ENABLE-NEXT:    vgetmantsh $11, %xmm1, %xmm0, %xmm2 {%k1} {z}377; ENABLE-NEXT:    vaddph %xmm1, %xmm0, %xmm0378; ENABLE-NEXT:    vaddph %xmm0, %xmm2, %xmm0379; ENABLE-NEXT:    retq380;381; DISABLE-LABEL: getmantsh_maskz:382; DISABLE:       # %bb.0:383; DISABLE-NEXT:    #APP384; DISABLE-NEXT:    nop385; DISABLE-NEXT:    #NO_APP386; DISABLE-NEXT:    kmovb (%rdi), %k1387; DISABLE-NEXT:    vgetmantsh $11, %xmm1, %xmm0, %xmm2 {%k1} {z}388; DISABLE-NEXT:    vaddph %xmm1, %xmm0, %xmm0389; DISABLE-NEXT:    vaddph %xmm0, %xmm2, %xmm0390; DISABLE-NEXT:    retq391  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()392  %2 = load i8, ptr %mask393  %3 = call <8 x half> @llvm.x86.avx512fp16.mask.getmant.sh(<8 x half> %a0, <8 x half> %a1, i32 11, <8 x half> zeroinitializer, i8 %2, i32 4)394  %t = fadd <8 x half> %a0, %a1395  %res = fadd <8 x half> %3, %t396  ret <8 x half> %res397}398 399declare <8 x half> @llvm.x86.avx512fp16.mask.getmant.sh(<8 x half>, <8 x half>, i32, <8 x half>, i8, i32)400 401define <4 x float> @getmantss(<4 x float> %a0, <4 x float> %a1) {402; ENABLE-LABEL: getmantss:403; ENABLE:       # %bb.0:404; ENABLE-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill405; ENABLE-NEXT:    #APP406; ENABLE-NEXT:    nop407; ENABLE-NEXT:    #NO_APP408; ENABLE-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload409; ENABLE-NEXT:    vxorps %xmm1, %xmm1, %xmm1410; ENABLE-NEXT:    vgetmantss $11, %xmm2, %xmm0, %xmm1411; ENABLE-NEXT:    vaddps %xmm2, %xmm0, %xmm0412; ENABLE-NEXT:    vaddps %xmm0, %xmm1, %xmm0413; ENABLE-NEXT:    retq414;415; DISABLE-LABEL: getmantss:416; DISABLE:       # %bb.0:417; DISABLE-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill418; DISABLE-NEXT:    #APP419; DISABLE-NEXT:    nop420; DISABLE-NEXT:    #NO_APP421; DISABLE-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload422; DISABLE-NEXT:    vgetmantss $11, %xmm2, %xmm0, %xmm1423; DISABLE-NEXT:    vaddps %xmm2, %xmm0, %xmm0424; DISABLE-NEXT:    vaddps %xmm0, %xmm1, %xmm0425; DISABLE-NEXT:    retq426  %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}"()427  %2 = call <4 x float> @llvm.x86.avx512.mask.getmant.ss(<4 x float> %a0, <4 x float> %a1, i32 11, <4 x float> undef, i8 -1, i32 4)428  %t = fadd <4 x float> %a0, %a1429  %res = fadd <4 x float> %2, %t430  ret <4 x float> %res431}432 433define <4 x float> @getmantss_mem(<4 x float> %a0, ptr %p1) {434; ENABLE-LABEL: getmantss_mem:435; ENABLE:       # %bb.0:436; ENABLE-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill437; ENABLE-NEXT:    #APP438; ENABLE-NEXT:    nop439; ENABLE-NEXT:    #NO_APP440; ENABLE-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload441; ENABLE-NEXT:    vxorps %xmm0, %xmm0, %xmm0442; ENABLE-NEXT:    vgetmantss $11, (%rdi), %xmm1, %xmm0443; ENABLE-NEXT:    vaddps %xmm1, %xmm0, %xmm0444; ENABLE-NEXT:    retq445;446; DISABLE-LABEL: getmantss_mem:447; DISABLE:       # %bb.0:448; DISABLE-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill449; DISABLE-NEXT:    #APP450; DISABLE-NEXT:    nop451; DISABLE-NEXT:    #NO_APP452; DISABLE-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload453; DISABLE-NEXT:    vgetmantss $11, (%rdi), %xmm1, %xmm0454; DISABLE-NEXT:    vaddps %xmm1, %xmm0, %xmm0455; DISABLE-NEXT:    retq456  %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}"()457  %a1 = load <4 x float>, ptr %p1, align 64458  %2 = call <4 x float> @llvm.x86.avx512.mask.getmant.ss(<4 x float> %a0, <4 x float> %a1, i32 11, <4 x float> undef, i8 -1, i32 4)459  %res = fadd <4 x float> %2, %a0460  ret <4 x float> %res461}462 463define <4 x float> @getmantss_maskz(<4 x float> %a0, <4 x float> %a1, ptr %mask) {464; ENABLE-LABEL: getmantss_maskz:465; ENABLE:       # %bb.0:466; ENABLE-NEXT:    #APP467; ENABLE-NEXT:    nop468; ENABLE-NEXT:    #NO_APP469; ENABLE-NEXT:    kmovb (%rdi), %k1470; ENABLE-NEXT:    vxorps %xmm2, %xmm2, %xmm2471; ENABLE-NEXT:    vgetmantss $11, %xmm1, %xmm0, %xmm2 {%k1} {z}472; ENABLE-NEXT:    vaddps %xmm1, %xmm0, %xmm0473; ENABLE-NEXT:    vaddps %xmm0, %xmm2, %xmm0474; ENABLE-NEXT:    retq475;476; DISABLE-LABEL: getmantss_maskz:477; DISABLE:       # %bb.0:478; DISABLE-NEXT:    #APP479; DISABLE-NEXT:    nop480; DISABLE-NEXT:    #NO_APP481; DISABLE-NEXT:    kmovb (%rdi), %k1482; DISABLE-NEXT:    vgetmantss $11, %xmm1, %xmm0, %xmm2 {%k1} {z}483; DISABLE-NEXT:    vaddps %xmm1, %xmm0, %xmm0484; DISABLE-NEXT:    vaddps %xmm0, %xmm2, %xmm0485; DISABLE-NEXT:    retq486  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()487  %2 = load i8, ptr %mask488  %3 = call <4 x float> @llvm.x86.avx512.mask.getmant.ss(<4 x float> %a0, <4 x float> %a1, i32 11, <4 x float> zeroinitializer, i8 %2, i32 4)489  %t = fadd <4 x float> %a0, %a1490  %res = fadd <4 x float> %3, %t491  ret <4 x float> %res492}493 494declare <4 x float> @llvm.x86.avx512.mask.getmant.ss(<4 x float>, <4 x float>, i32, <4 x float>, i8, i32)495 496define <2 x double> @getmantsd(<2 x double> %a0, <2 x double> %a1) {497; ENABLE-LABEL: getmantsd:498; ENABLE:       # %bb.0:499; ENABLE-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill500; ENABLE-NEXT:    #APP501; ENABLE-NEXT:    nop502; ENABLE-NEXT:    #NO_APP503; ENABLE-NEXT:    vmovapd {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload504; ENABLE-NEXT:    vxorps %xmm1, %xmm1, %xmm1505; ENABLE-NEXT:    vgetmantsd $11, %xmm2, %xmm0, %xmm1506; ENABLE-NEXT:    vaddpd %xmm2, %xmm0, %xmm0507; ENABLE-NEXT:    vaddpd %xmm0, %xmm1, %xmm0508; ENABLE-NEXT:    retq509;510; DISABLE-LABEL: getmantsd:511; DISABLE:       # %bb.0:512; DISABLE-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill513; DISABLE-NEXT:    #APP514; DISABLE-NEXT:    nop515; DISABLE-NEXT:    #NO_APP516; DISABLE-NEXT:    vmovapd {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload517; DISABLE-NEXT:    vgetmantsd $11, %xmm2, %xmm0, %xmm1518; DISABLE-NEXT:    vaddpd %xmm2, %xmm0, %xmm0519; DISABLE-NEXT:    vaddpd %xmm0, %xmm1, %xmm0520; DISABLE-NEXT:    retq521  %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}"()522  %2 = call <2 x double> @llvm.x86.avx512.mask.getmant.sd(<2 x double> %a0, <2 x double> %a1, i32 11, <2 x double> undef, i8 -1, i32 4)523  %t = fadd <2 x double> %a0, %a1524  %res = fadd <2 x double> %2, %t525  ret <2 x double> %res526}527 528define <2 x double> @getmantsd_mem(<2 x double> %a0, ptr %p1) {529; ENABLE-LABEL: getmantsd_mem:530; ENABLE:       # %bb.0:531; ENABLE-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill532; ENABLE-NEXT:    #APP533; ENABLE-NEXT:    nop534; ENABLE-NEXT:    #NO_APP535; ENABLE-NEXT:    vmovapd {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload536; ENABLE-NEXT:    vxorps %xmm0, %xmm0, %xmm0537; ENABLE-NEXT:    vgetmantsd $11, (%rdi), %xmm1, %xmm0538; ENABLE-NEXT:    vaddpd %xmm1, %xmm0, %xmm0539; ENABLE-NEXT:    retq540;541; DISABLE-LABEL: getmantsd_mem:542; DISABLE:       # %bb.0:543; DISABLE-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill544; DISABLE-NEXT:    #APP545; DISABLE-NEXT:    nop546; DISABLE-NEXT:    #NO_APP547; DISABLE-NEXT:    vmovapd {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload548; DISABLE-NEXT:    vgetmantsd $11, (%rdi), %xmm1, %xmm0549; DISABLE-NEXT:    vaddpd %xmm1, %xmm0, %xmm0550; DISABLE-NEXT:    retq551  %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}"()552  %a1 = load <2 x double>, ptr %p1, align 64553  %2 = call <2 x double> @llvm.x86.avx512.mask.getmant.sd(<2 x double> %a0, <2 x double> %a1, i32 11, <2 x double> undef, i8 -1, i32 4)554  %res = fadd <2 x double> %2, %a0555  ret <2 x double> %res556}557 558define <2 x double> @getmantsd_maskz(<2 x double> %a0, <2 x double> %a1, ptr %mask) {559; ENABLE-LABEL: getmantsd_maskz:560; ENABLE:       # %bb.0:561; ENABLE-NEXT:    #APP562; ENABLE-NEXT:    nop563; ENABLE-NEXT:    #NO_APP564; ENABLE-NEXT:    kmovb (%rdi), %k1565; ENABLE-NEXT:    vxorps %xmm2, %xmm2, %xmm2566; ENABLE-NEXT:    vgetmantsd $11, %xmm1, %xmm0, %xmm2 {%k1} {z}567; ENABLE-NEXT:    vaddpd %xmm1, %xmm0, %xmm0568; ENABLE-NEXT:    vaddpd %xmm0, %xmm2, %xmm0569; ENABLE-NEXT:    retq570;571; DISABLE-LABEL: getmantsd_maskz:572; DISABLE:       # %bb.0:573; DISABLE-NEXT:    #APP574; DISABLE-NEXT:    nop575; DISABLE-NEXT:    #NO_APP576; DISABLE-NEXT:    kmovb (%rdi), %k1577; DISABLE-NEXT:    vgetmantsd $11, %xmm1, %xmm0, %xmm2 {%k1} {z}578; DISABLE-NEXT:    vaddpd %xmm1, %xmm0, %xmm0579; DISABLE-NEXT:    vaddpd %xmm0, %xmm2, %xmm0580; DISABLE-NEXT:    retq581  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()582  %2 = load i8, ptr %mask583  %3 = call <2 x double> @llvm.x86.avx512.mask.getmant.sd(<2 x double> %a0, <2 x double> %a1, i32 11, <2 x double> zeroinitializer, i8 %2, i32 4)584  %t = fadd <2 x double> %a0, %a1585  %res = fadd <2 x double> %3, %t586  ret <2 x double> %res587}588 589declare <2 x double> @llvm.x86.avx512.mask.getmant.sd(<2 x double>, <2 x double>, i32, <2 x double>, i8, i32)590