brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.4 KiB · 1a64b5a Raw
243 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu < %s |\3; RUN:   FileCheck %s --check-prefix=CHECK-PWR84; RUN: llc -verify-machineinstrs -mcpu=ppc -mtriple=powerpc64-unknown-linux-gnu \5; RUN:   -mattr=-vsx < %s | FileCheck %s --check-prefix=CHECK-NOVSX6; RUN: llc -verify-machineinstrs -mcpu=ppc -mtriple=powerpc64-unknown-linux-gnu \7; RUN:   -mcpu=pwr7 < %s | FileCheck %s --check-prefix=CHECK-PWR78; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-aix -mcpu=pwr7 \9; RUN:   < %s | FileCheck %s --check-prefix=CHECK-PWR710; RUN: llc -verify-machineinstrs -mtriple=powerpc-unknown-aix -mcpu=pwr8 < %s |\11; RUN:   FileCheck %s --check-prefix=CHECK-PWR812 13define dso_local double @fmsub_t0(double %d, double %d2, double %d3) {14; CHECK-PWR8-LABEL: fmsub_t0:15; CHECK-PWR8:       # %bb.0: # %entry16; CHECK-PWR8-NEXT:    xsmsubmdp 1, 2, 317; CHECK-PWR8-NEXT:    blr18;19; CHECK-NOVSX-LABEL: fmsub_t0:20; CHECK-NOVSX:       # %bb.0: # %entry21; CHECK-NOVSX-NEXT:    fmsub 1, 1, 2, 322; CHECK-NOVSX-NEXT:    blr23;24; CHECK-PWR7-LABEL: fmsub_t0:25; CHECK-PWR7:       # %bb.0: # %entry26; CHECK-PWR7-NEXT:    xsmsubmdp 1, 2, 327; CHECK-PWR7-NEXT:    blr28entry:29  %0 = tail call double @llvm.ppc.fmsub(double %d, double %d2, double %d3)30  ret double %031}32 33declare double @llvm.ppc.fmsub(double, double, double)34 35define dso_local float @fmsubs_t0(float %f, float %f2, float %f3) {36; CHECK-PWR8-LABEL: fmsubs_t0:37; CHECK-PWR8:       # %bb.0: # %entry38; CHECK-PWR8-NEXT:    xsmsubmsp 1, 2, 339; CHECK-PWR8-NEXT:    blr40;41; CHECK-NOVSX-LABEL: fmsubs_t0:42; CHECK-NOVSX:       # %bb.0: # %entry43; CHECK-NOVSX-NEXT:    fmsubs 1, 1, 2, 344; CHECK-NOVSX-NEXT:    blr45;46; CHECK-PWR7-LABEL: fmsubs_t0:47; CHECK-PWR7:       # %bb.0: # %entry48; CHECK-PWR7-NEXT:    fmsubs 1, 1, 2, 349; CHECK-PWR7-NEXT:    blr50entry:51  %0 = tail call float @llvm.ppc.fmsubs(float %f, float %f2, float %f3)52  ret float %053}54 55declare float @llvm.ppc.fmsubs(float, float, float)56 57define dso_local double @fnmadd_t0(double %d, double %d2, double %d3) {58; CHECK-PWR8-LABEL: fnmadd_t0:59; CHECK-PWR8:       # %bb.0: # %entry60; CHECK-PWR8-NEXT:    xsnmaddmdp 1, 2, 361; CHECK-PWR8-NEXT:    blr62;63; CHECK-NOVSX-LABEL: fnmadd_t0:64; CHECK-NOVSX:       # %bb.0: # %entry65; CHECK-NOVSX-NEXT:    fnmadd 1, 1, 2, 366; CHECK-NOVSX-NEXT:    blr67;68; CHECK-PWR7-LABEL: fnmadd_t0:69; CHECK-PWR7:       # %bb.0: # %entry70; CHECK-PWR7-NEXT:    xsnmaddmdp 1, 2, 371; CHECK-PWR7-NEXT:    blr72entry:73  %0 = tail call double @llvm.ppc.fnmadd(double %d, double %d2, double %d3)74  ret double %075}76 77declare double @llvm.ppc.fnmadd(double, double, double)78 79define dso_local float @fnmadds_t0(float %f, float %f2, float %f3) {80; CHECK-PWR8-LABEL: fnmadds_t0:81; CHECK-PWR8:       # %bb.0: # %entry82; CHECK-PWR8-NEXT:    xsnmaddmsp 1, 2, 383; CHECK-PWR8-NEXT:    blr84;85; CHECK-NOVSX-LABEL: fnmadds_t0:86; CHECK-NOVSX:       # %bb.0: # %entry87; CHECK-NOVSX-NEXT:    fnmadds 1, 1, 2, 388; CHECK-NOVSX-NEXT:    blr89;90; CHECK-PWR7-LABEL: fnmadds_t0:91; CHECK-PWR7:       # %bb.0: # %entry92; CHECK-PWR7-NEXT:    fnmadds 1, 1, 2, 393; CHECK-PWR7-NEXT:    blr94entry:95  %0 = tail call float @llvm.ppc.fnmadds(float %f, float %f2, float %f3)96  ret float %097}98 99declare float @llvm.ppc.fnmadds(float, float, float)100 101define dso_local float @fnmsub_f32(float %f, float %f2, float %f3) {102; CHECK-PWR8-LABEL: fnmsub_f32:103; CHECK-PWR8:       # %bb.0: # %entry104; CHECK-PWR8-NEXT:    xsnmsubasp 3, 1, 2105; CHECK-PWR8-NEXT:    fmr 1, 3106; CHECK-PWR8-NEXT:    blr107;108; CHECK-NOVSX-LABEL: fnmsub_f32:109; CHECK-NOVSX:       # %bb.0: # %entry110; CHECK-NOVSX-NEXT:    fnmsubs 1, 1, 2, 3111; CHECK-NOVSX-NEXT:    blr112;113; CHECK-PWR7-LABEL: fnmsub_f32:114; CHECK-PWR7:       # %bb.0: # %entry115; CHECK-PWR7-NEXT:    fnmsubs 1, 1, 2, 3116; CHECK-PWR7-NEXT:    blr117entry:118  %0 = tail call float @llvm.ppc.fnmsub.f32(float %f, float %f2, float %f3)119  ret float %0120}121 122declare float @llvm.ppc.fnmsub.f32(float, float, float)123 124define dso_local double @fnmsub_f64(double %f, double %f2, double %f3) {125; CHECK-PWR8-LABEL: fnmsub_f64:126; CHECK-PWR8:       # %bb.0: # %entry127; CHECK-PWR8-NEXT:    xsnmsubadp 3, 1, 2128; CHECK-PWR8-NEXT:    fmr 1, 3129; CHECK-PWR8-NEXT:    blr130;131; CHECK-NOVSX-LABEL: fnmsub_f64:132; CHECK-NOVSX:       # %bb.0: # %entry133; CHECK-NOVSX-NEXT:    fnmsub 1, 1, 2, 3134; CHECK-NOVSX-NEXT:    blr135;136; CHECK-PWR7-LABEL: fnmsub_f64:137; CHECK-PWR7:       # %bb.0: # %entry138; CHECK-PWR7-NEXT:    xsnmsubadp 3, 1, 2139; CHECK-PWR7-NEXT:    fmr 1, 3140; CHECK-PWR7-NEXT:    blr141entry:142  %0 = tail call double @llvm.ppc.fnmsub.f64(double %f, double %f2, double %f3)143  ret double %0144}145 146declare double @llvm.ppc.fnmsub.f64(double, double, double)147 148define dso_local <4 x float> @fnmsub_v4f32(<4 x float> %f, <4 x float> %f2, <4 x float> %f3) {149; CHECK-PWR8-LABEL: fnmsub_v4f32:150; CHECK-PWR8:       # %bb.0: # %entry151; CHECK-PWR8-NEXT:    xvnmsubasp 36, 34, 35152; CHECK-PWR8-NEXT:    vmr 2, 4153; CHECK-PWR8-NEXT:    blr154;155; CHECK-NOVSX-LABEL: fnmsub_v4f32:156; CHECK-NOVSX:       # %bb.0: # %entry157; CHECK-NOVSX-NEXT:    fnmsubs 1, 1, 5, 9158; CHECK-NOVSX-NEXT:    fnmsubs 2, 2, 6, 10159; CHECK-NOVSX-NEXT:    fnmsubs 3, 3, 7, 11160; CHECK-NOVSX-NEXT:    fnmsubs 4, 4, 8, 12161; CHECK-NOVSX-NEXT:    blr162;163; CHECK-PWR7-LABEL: fnmsub_v4f32:164; CHECK-PWR7:       # %bb.0: # %entry165; CHECK-PWR7-NEXT:    xvnmsubasp 36, 34, 35166; CHECK-PWR7-NEXT:    vmr 2, 4167; CHECK-PWR7-NEXT:    blr168entry:169  %0 = tail call <4 x float> @llvm.ppc.fnmsub.v4f32(<4 x float> %f, <4 x float> %f2, <4 x float> %f3)170  ret <4 x float> %0171}172 173declare <4 x float> @llvm.ppc.fnmsub.v4f32(<4 x float>, <4 x float>, <4 x float>)174 175define dso_local <2 x double> @fnmsub_v2f64(<2 x double> %f, <2 x double> %f2, <2 x double> %f3) {176; CHECK-PWR8-LABEL: fnmsub_v2f64:177; CHECK-PWR8:       # %bb.0: # %entry178; CHECK-PWR8-NEXT:    xvnmsubadp 36, 34, 35179; CHECK-PWR8-NEXT:    vmr 2, 4180; CHECK-PWR8-NEXT:    blr181;182; CHECK-NOVSX-LABEL: fnmsub_v2f64:183; CHECK-NOVSX:       # %bb.0: # %entry184; CHECK-NOVSX-NEXT:    fnmsub 1, 1, 3, 5185; CHECK-NOVSX-NEXT:    fnmsub 2, 2, 4, 6186; CHECK-NOVSX-NEXT:    blr187;188; CHECK-PWR7-LABEL: fnmsub_v2f64:189; CHECK-PWR7:       # %bb.0: # %entry190; CHECK-PWR7-NEXT:    xvnmsubadp 36, 34, 35191; CHECK-PWR7-NEXT:    vmr 2, 4192; CHECK-PWR7-NEXT:    blr193entry:194  %0 = tail call <2 x double> @llvm.ppc.fnmsub.v2f64(<2 x double> %f, <2 x double> %f2, <2 x double> %f3)195  ret <2 x double> %0196}197 198declare <2 x double> @llvm.ppc.fnmsub.v2f64(<2 x double>, <2 x double>, <2 x double>)199 200define dso_local double @fre(double %d) {201; CHECK-PWR8-LABEL: fre:202; CHECK-PWR8:       # %bb.0: # %entry203; CHECK-PWR8-NEXT:    xsredp 1, 1204; CHECK-PWR8-NEXT:    blr205;206; CHECK-NOVSX-LABEL: fre:207; CHECK-NOVSX:       # %bb.0: # %entry208; CHECK-NOVSX-NEXT:    fre 1, 1209; CHECK-NOVSX-NEXT:    blr210;211; CHECK-PWR7-LABEL: fre:212; CHECK-PWR7:       # %bb.0: # %entry213; CHECK-PWR7-NEXT:    xsredp 1, 1214; CHECK-PWR7-NEXT:    blr215entry:216  %0 = tail call double @llvm.ppc.fre(double %d)217  ret double %0218}219 220declare double @llvm.ppc.fre(double)221 222define dso_local float @fres(float %f) {223; CHECK-PWR8-LABEL: fres:224; CHECK-PWR8:       # %bb.0: # %entry225; CHECK-PWR8-NEXT:    xsresp 1, 1226; CHECK-PWR8-NEXT:    blr227;228; CHECK-NOVSX-LABEL: fres:229; CHECK-NOVSX:       # %bb.0: # %entry230; CHECK-NOVSX-NEXT:    fres 1, 1231; CHECK-NOVSX-NEXT:    blr232;233; CHECK-PWR7-LABEL: fres:234; CHECK-PWR7:       # %bb.0: # %entry235; CHECK-PWR7-NEXT:    fres 1, 1236; CHECK-PWR7-NEXT:    blr237entry:238  %0 = tail call float @llvm.ppc.fres(float %f)239  ret float %0240}241 242declare float @llvm.ppc.fres(float)243