brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.5 KiB · 8faed9b Raw
291 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \3; RUN:   < %s -mtriple=powerpc64le-unknown-linux -mcpu=pwr9 | FileCheck %s4; RUN: llc -verify-machineinstrs -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \5; RUN:   < %s -mtriple=powerpc64le-unknown-linux -mcpu=pwr8 | FileCheck %s --check-prefix=CHECK-P86 7declare fp128 @llvm.experimental.constrained.fadd.f128(fp128, fp128, metadata, metadata)8declare fp128 @llvm.experimental.constrained.fsub.f128(fp128, fp128, metadata, metadata)9declare fp128 @llvm.experimental.constrained.fmul.f128(fp128, fp128, metadata, metadata)10declare fp128 @llvm.experimental.constrained.fdiv.f128(fp128, fp128, metadata, metadata)11 12declare fp128 @llvm.experimental.constrained.fma.f128(fp128, fp128, fp128, metadata, metadata)13declare fp128 @llvm.experimental.constrained.sqrt.f128(fp128, metadata, metadata)14 15define fp128 @fadd_f128(fp128 %f1, fp128 %f2) #0 {16; CHECK-LABEL: fadd_f128:17; CHECK:       # %bb.0:18; CHECK-NEXT:    xsaddqp v2, v2, v319; CHECK-NEXT:    blr20;21; CHECK-P8-LABEL: fadd_f128:22; CHECK-P8:       # %bb.0:23; CHECK-P8-NEXT:    mflr r024; CHECK-P8-NEXT:    stdu r1, -32(r1)25; CHECK-P8-NEXT:    std r0, 48(r1)26; CHECK-P8-NEXT:    .cfi_def_cfa_offset 3227; CHECK-P8-NEXT:    .cfi_offset lr, 1628; CHECK-P8-NEXT:    bl __addkf329; CHECK-P8-NEXT:    nop30; CHECK-P8-NEXT:    addi r1, r1, 3231; CHECK-P8-NEXT:    ld r0, 16(r1)32; CHECK-P8-NEXT:    mtlr r033; CHECK-P8-NEXT:    blr34  %res = call fp128 @llvm.experimental.constrained.fadd.f128(35                        fp128 %f1, fp128 %f2,36                        metadata !"round.dynamic",37                        metadata !"fpexcept.strict") #038  ret fp128 %res39}40 41define fp128 @fsub_f128(fp128 %f1, fp128 %f2) #0 {42; CHECK-LABEL: fsub_f128:43; CHECK:       # %bb.0:44; CHECK-NEXT:    xssubqp v2, v2, v345; CHECK-NEXT:    blr46;47; CHECK-P8-LABEL: fsub_f128:48; CHECK-P8:       # %bb.0:49; CHECK-P8-NEXT:    mflr r050; CHECK-P8-NEXT:    stdu r1, -32(r1)51; CHECK-P8-NEXT:    std r0, 48(r1)52; CHECK-P8-NEXT:    .cfi_def_cfa_offset 3253; CHECK-P8-NEXT:    .cfi_offset lr, 1654; CHECK-P8-NEXT:    bl __subkf355; CHECK-P8-NEXT:    nop56; CHECK-P8-NEXT:    addi r1, r1, 3257; CHECK-P8-NEXT:    ld r0, 16(r1)58; CHECK-P8-NEXT:    mtlr r059; CHECK-P8-NEXT:    blr60  %res = call fp128 @llvm.experimental.constrained.fsub.f128(61                        fp128 %f1, fp128 %f2,62                        metadata !"round.dynamic",63                        metadata !"fpexcept.strict") #064  ret fp128 %res65}66 67define fp128 @fmul_f128(fp128 %f1, fp128 %f2) #0 {68; CHECK-LABEL: fmul_f128:69; CHECK:       # %bb.0:70; CHECK-NEXT:    xsmulqp v2, v2, v371; CHECK-NEXT:    blr72;73; CHECK-P8-LABEL: fmul_f128:74; CHECK-P8:       # %bb.0:75; CHECK-P8-NEXT:    mflr r076; CHECK-P8-NEXT:    stdu r1, -32(r1)77; CHECK-P8-NEXT:    std r0, 48(r1)78; CHECK-P8-NEXT:    .cfi_def_cfa_offset 3279; CHECK-P8-NEXT:    .cfi_offset lr, 1680; CHECK-P8-NEXT:    bl __mulkf381; CHECK-P8-NEXT:    nop82; CHECK-P8-NEXT:    addi r1, r1, 3283; CHECK-P8-NEXT:    ld r0, 16(r1)84; CHECK-P8-NEXT:    mtlr r085; CHECK-P8-NEXT:    blr86  %res = call fp128 @llvm.experimental.constrained.fmul.f128(87                        fp128 %f1, fp128 %f2,88                        metadata !"round.dynamic",89                        metadata !"fpexcept.strict") #090  ret fp128 %res91}92 93define fp128 @fdiv_f128(fp128 %f1, fp128 %f2) #0 {94; CHECK-LABEL: fdiv_f128:95; CHECK:       # %bb.0:96; CHECK-NEXT:    xsdivqp v2, v2, v397; CHECK-NEXT:    blr98;99; CHECK-P8-LABEL: fdiv_f128:100; CHECK-P8:       # %bb.0:101; CHECK-P8-NEXT:    mflr r0102; CHECK-P8-NEXT:    stdu r1, -32(r1)103; CHECK-P8-NEXT:    std r0, 48(r1)104; CHECK-P8-NEXT:    .cfi_def_cfa_offset 32105; CHECK-P8-NEXT:    .cfi_offset lr, 16106; CHECK-P8-NEXT:    bl __divkf3107; CHECK-P8-NEXT:    nop108; CHECK-P8-NEXT:    addi r1, r1, 32109; CHECK-P8-NEXT:    ld r0, 16(r1)110; CHECK-P8-NEXT:    mtlr r0111; CHECK-P8-NEXT:    blr112  %res = call fp128 @llvm.experimental.constrained.fdiv.f128(113                        fp128 %f1, fp128 %f2,114                        metadata !"round.dynamic",115                        metadata !"fpexcept.strict") #0116  ret fp128 %res117}118 119define fp128 @fmadd_f128(fp128 %f0, fp128 %f1, fp128 %f2) #0 {120; CHECK-LABEL: fmadd_f128:121; CHECK:       # %bb.0:122; CHECK-NEXT:    xsmaddqp v4, v2, v3123; CHECK-NEXT:    vmr v2, v4124; CHECK-NEXT:    blr125;126; CHECK-P8-LABEL: fmadd_f128:127; CHECK-P8:       # %bb.0:128; CHECK-P8-NEXT:    mflr r0129; CHECK-P8-NEXT:    stdu r1, -32(r1)130; CHECK-P8-NEXT:    std r0, 48(r1)131; CHECK-P8-NEXT:    .cfi_def_cfa_offset 32132; CHECK-P8-NEXT:    .cfi_offset lr, 16133; CHECK-P8-NEXT:    bl fmaf128134; CHECK-P8-NEXT:    nop135; CHECK-P8-NEXT:    addi r1, r1, 32136; CHECK-P8-NEXT:    ld r0, 16(r1)137; CHECK-P8-NEXT:    mtlr r0138; CHECK-P8-NEXT:    blr139  %res = call fp128 @llvm.experimental.constrained.fma.f128(140                        fp128 %f0, fp128 %f1, fp128 %f2,141                        metadata !"round.dynamic",142                        metadata !"fpexcept.strict") #0143  ret fp128 %res144}145 146define fp128 @fmsub_f128(fp128 %f0, fp128 %f1, fp128 %f2) #0 {147; CHECK-LABEL: fmsub_f128:148; CHECK:       # %bb.0:149; CHECK-NEXT:    xsmsubqp v4, v2, v3150; CHECK-NEXT:    vmr v2, v4151; CHECK-NEXT:    blr152;153; CHECK-P8-LABEL: fmsub_f128:154; CHECK-P8:       # %bb.0:155; CHECK-P8-NEXT:    mflr r0156; CHECK-P8-NEXT:    stdu r1, -48(r1)157; CHECK-P8-NEXT:    std r0, 64(r1)158; CHECK-P8-NEXT:    .cfi_def_cfa_offset 48159; CHECK-P8-NEXT:    .cfi_offset lr, 16160; CHECK-P8-NEXT:    xxswapd vs0, v4161; CHECK-P8-NEXT:    addi r3, r1, 32162; CHECK-P8-NEXT:    stxvd2x vs0, 0, r3163; CHECK-P8-NEXT:    lbz r4, 47(r1)164; CHECK-P8-NEXT:    xori r4, r4, 128165; CHECK-P8-NEXT:    stb r4, 47(r1)166; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3167; CHECK-P8-NEXT:    xxswapd v4, vs0168; CHECK-P8-NEXT:    bl fmaf128169; CHECK-P8-NEXT:    nop170; CHECK-P8-NEXT:    addi r1, r1, 48171; CHECK-P8-NEXT:    ld r0, 16(r1)172; CHECK-P8-NEXT:    mtlr r0173; CHECK-P8-NEXT:    blr174  %neg = fneg fp128 %f2175  %res = call fp128 @llvm.experimental.constrained.fma.f128(176                        fp128 %f0, fp128 %f1, fp128 %neg,177                        metadata !"round.dynamic",178                        metadata !"fpexcept.strict") #0179  ret fp128 %res180}181 182define fp128 @fnmadd_f128(fp128 %f0, fp128 %f1, fp128 %f2) #0 {183; CHECK-LABEL: fnmadd_f128:184; CHECK:       # %bb.0:185; CHECK-NEXT:    xsnmaddqp v4, v2, v3186; CHECK-NEXT:    vmr v2, v4187; CHECK-NEXT:    blr188;189; CHECK-P8-LABEL: fnmadd_f128:190; CHECK-P8:       # %bb.0:191; CHECK-P8-NEXT:    mflr r0192; CHECK-P8-NEXT:    stdu r1, -48(r1)193; CHECK-P8-NEXT:    std r0, 64(r1)194; CHECK-P8-NEXT:    .cfi_def_cfa_offset 48195; CHECK-P8-NEXT:    .cfi_offset lr, 16196; CHECK-P8-NEXT:    bl fmaf128197; CHECK-P8-NEXT:    nop198; CHECK-P8-NEXT:    xxswapd vs0, v2199; CHECK-P8-NEXT:    addi r3, r1, 32200; CHECK-P8-NEXT:    stxvd2x vs0, 0, r3201; CHECK-P8-NEXT:    lbz r4, 47(r1)202; CHECK-P8-NEXT:    xori r4, r4, 128203; CHECK-P8-NEXT:    stb r4, 47(r1)204; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3205; CHECK-P8-NEXT:    xxswapd v2, vs0206; CHECK-P8-NEXT:    addi r1, r1, 48207; CHECK-P8-NEXT:    ld r0, 16(r1)208; CHECK-P8-NEXT:    mtlr r0209; CHECK-P8-NEXT:    blr210  %fma = call fp128 @llvm.experimental.constrained.fma.f128(211                        fp128 %f0, fp128 %f1, fp128 %f2,212                        metadata !"round.dynamic",213                        metadata !"fpexcept.strict") #0214  %res = fneg fp128 %fma215  ret fp128 %res216}217 218define fp128 @fnmsub_f128(fp128 %f0, fp128 %f1, fp128 %f2) #0 {219; CHECK-LABEL: fnmsub_f128:220; CHECK:       # %bb.0:221; CHECK-NEXT:    xsnmsubqp v4, v2, v3222; CHECK-NEXT:    vmr v2, v4223; CHECK-NEXT:    blr224;225; CHECK-P8-LABEL: fnmsub_f128:226; CHECK-P8:       # %bb.0:227; CHECK-P8-NEXT:    mflr r0228; CHECK-P8-NEXT:    stdu r1, -64(r1)229; CHECK-P8-NEXT:    std r0, 80(r1)230; CHECK-P8-NEXT:    .cfi_def_cfa_offset 64231; CHECK-P8-NEXT:    .cfi_offset lr, 16232; CHECK-P8-NEXT:    xxswapd vs0, v4233; CHECK-P8-NEXT:    addi r3, r1, 32234; CHECK-P8-NEXT:    stxvd2x vs0, 0, r3235; CHECK-P8-NEXT:    lbz r4, 47(r1)236; CHECK-P8-NEXT:    xori r4, r4, 128237; CHECK-P8-NEXT:    stb r4, 47(r1)238; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3239; CHECK-P8-NEXT:    xxswapd v4, vs0240; CHECK-P8-NEXT:    bl fmaf128241; CHECK-P8-NEXT:    nop242; CHECK-P8-NEXT:    xxswapd vs0, v2243; CHECK-P8-NEXT:    addi r3, r1, 48244; CHECK-P8-NEXT:    stxvd2x vs0, 0, r3245; CHECK-P8-NEXT:    lbz r4, 63(r1)246; CHECK-P8-NEXT:    xori r4, r4, 128247; CHECK-P8-NEXT:    stb r4, 63(r1)248; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3249; CHECK-P8-NEXT:    xxswapd v2, vs0250; CHECK-P8-NEXT:    addi r1, r1, 64251; CHECK-P8-NEXT:    ld r0, 16(r1)252; CHECK-P8-NEXT:    mtlr r0253; CHECK-P8-NEXT:    blr254  %neg = fneg fp128 %f2255  %fma = call fp128 @llvm.experimental.constrained.fma.f128(256                        fp128 %f0, fp128 %f1, fp128 %neg,257                        metadata !"round.dynamic",258                        metadata !"fpexcept.strict") #0259  %res = fneg fp128 %fma260  ret fp128 %res261}262 263 264define fp128 @fsqrt_f128(fp128 %f1) #0 {265; CHECK-LABEL: fsqrt_f128:266; CHECK:       # %bb.0:267; CHECK-NEXT:    xssqrtqp v2, v2268; CHECK-NEXT:    blr269;270; CHECK-P8-LABEL: fsqrt_f128:271; CHECK-P8:       # %bb.0:272; CHECK-P8-NEXT:    mflr r0273; CHECK-P8-NEXT:    stdu r1, -32(r1)274; CHECK-P8-NEXT:    std r0, 48(r1)275; CHECK-P8-NEXT:    .cfi_def_cfa_offset 32276; CHECK-P8-NEXT:    .cfi_offset lr, 16277; CHECK-P8-NEXT:    bl sqrtf128278; CHECK-P8-NEXT:    nop279; CHECK-P8-NEXT:    addi r1, r1, 32280; CHECK-P8-NEXT:    ld r0, 16(r1)281; CHECK-P8-NEXT:    mtlr r0282; CHECK-P8-NEXT:    blr283  %res = call fp128 @llvm.experimental.constrained.sqrt.f128(284                        fp128 %f1,285                        metadata !"round.dynamic",286                        metadata !"fpexcept.strict") #0287  ret fp128 %res288}289 290attributes #0 = { strictfp }291