102 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-unknown \3; RUN: -mcpu=pwr7 < %s | FileCheck %s --check-prefix=CHECK-PWR74; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-unknown \5; RUN: -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-PWR86; RUN: llc -verify-machineinstrs -mtriple=powerpc-unknown-aix \7; RUN: -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-PWR88; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-unknown \9; RUN: -mattr=-vsx -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-NOVSX10 11define dso_local double @test_fsel(double %a, double %b, double %c) local_unnamed_addr {12; CHECK-PWR7-LABEL: test_fsel:13; CHECK-PWR7: # %bb.0: # %entry14; CHECK-PWR7-NEXT: fsel 1, 1, 2, 315; CHECK-PWR7-NEXT: blr16;17; CHECK-PWR8-LABEL: test_fsel:18; CHECK-PWR8: # %bb.0: # %entry19; CHECK-PWR8-NEXT: fsel 1, 1, 2, 320; CHECK-PWR8-NEXT: blr21;22; CHECK-NOVSX-LABEL: test_fsel:23; CHECK-NOVSX: # %bb.0: # %entry24; CHECK-NOVSX-NEXT: fsel 1, 1, 2, 325; CHECK-NOVSX-NEXT: blr26 27entry:28 %0 = tail call double @llvm.ppc.fsel(double %a, double %b, double %c)29 ret double %030}31 32declare double @llvm.ppc.fsel(double, double, double)33 34define dso_local float @test_fsels(float %a, float %b, float %c) local_unnamed_addr {35; CHECK-PWR7-LABEL: test_fsels:36; CHECK-PWR7: # %bb.0: # %entry37; CHECK-PWR7-NEXT: fsel 1, 1, 2, 338; CHECK-PWR7-NEXT: blr39;40; CHECK-PWR8-LABEL: test_fsels:41; CHECK-PWR8: # %bb.0: # %entry42; CHECK-PWR8-NEXT: fsel 1, 1, 2, 343; CHECK-PWR8-NEXT: blr44;45; CHECK-NOVSX-LABEL: test_fsels:46; CHECK-NOVSX: # %bb.0: # %entry47; CHECK-NOVSX-NEXT: fsel 1, 1, 2, 348; CHECK-NOVSX-NEXT: blr49 50entry:51 %0 = tail call float @llvm.ppc.fsels(float %a, float %b, float %c)52 ret float %053}54 55declare float @llvm.ppc.fsels(float, float, float)56 57define dso_local double @test_frsqrte(double %a) local_unnamed_addr {58; CHECK-PWR7-LABEL: test_frsqrte:59; CHECK-PWR7: # %bb.0: # %entry60; CHECK-PWR7-NEXT: xsrsqrtedp 1, 161; CHECK-PWR7-NEXT: blr62;63; CHECK-PWR8-LABEL: test_frsqrte:64; CHECK-PWR8: # %bb.0: # %entry65; CHECK-PWR8-NEXT: xsrsqrtedp 1, 166; CHECK-PWR8-NEXT: blr67;68; CHECK-NOVSX-LABEL: test_frsqrte:69; CHECK-NOVSX: # %bb.0: # %entry70; CHECK-NOVSX-NEXT: frsqrte 1, 171; CHECK-NOVSX-NEXT: blr72 73entry:74 %0 = tail call double @llvm.ppc.frsqrte(double %a)75 ret double %076}77 78declare double @llvm.ppc.frsqrte(double)79 80define dso_local float @test_frsqrtes(float %a) local_unnamed_addr {81; CHECK-PWR7-LABEL: test_frsqrtes:82; CHECK-PWR7: # %bb.0: # %entry83; CHECK-PWR7-NEXT: frsqrtes 1, 184; CHECK-PWR7-NEXT: blr85;86; CHECK-PWR8-LABEL: test_frsqrtes:87; CHECK-PWR8: # %bb.0: # %entry88; CHECK-PWR8-NEXT: xsrsqrtesp 1, 189; CHECK-PWR8-NEXT: blr90;91; CHECK-NOVSX-LABEL: test_frsqrtes:92; CHECK-NOVSX: # %bb.0: # %entry93; CHECK-NOVSX-NEXT: frsqrtes 1, 194; CHECK-NOVSX-NEXT: blr95 96entry:97 %0 = tail call float @llvm.ppc.frsqrtes(float %a)98 ret float %099}100 101declare float @llvm.ppc.frsqrtes(float)102