1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-unknown \ 3; RUN: -mcpu=pwr7 < %s | FileCheck %s --check-prefix=CHECK-PWR7 4; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-unknown \ 5; RUN: -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-PWR8 6; RUN: llc -verify-machineinstrs -mtriple=powerpc-unknown-aix \ 7; RUN: -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-PWR8 8; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-unknown \ 9; RUN: -mattr=-vsx -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-NOVSX 10 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: # %entry 14; CHECK-PWR7-NEXT: fsel 1, 1, 2, 3 15; CHECK-PWR7-NEXT: blr 16; 17; CHECK-PWR8-LABEL: test_fsel: 18; CHECK-PWR8: # %bb.0: # %entry 19; CHECK-PWR8-NEXT: fsel 1, 1, 2, 3 20; CHECK-PWR8-NEXT: blr 21; 22; CHECK-NOVSX-LABEL: test_fsel: 23; CHECK-NOVSX: # %bb.0: # %entry 24; CHECK-NOVSX-NEXT: fsel 1, 1, 2, 3 25; CHECK-NOVSX-NEXT: blr 26 27entry: 28 %0 = tail call double @llvm.ppc.fsel(double %a, double %b, double %c) 29 ret double %0 30} 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: # %entry 37; CHECK-PWR7-NEXT: fsel 1, 1, 2, 3 38; CHECK-PWR7-NEXT: blr 39; 40; CHECK-PWR8-LABEL: test_fsels: 41; CHECK-PWR8: # %bb.0: # %entry 42; CHECK-PWR8-NEXT: fsel 1, 1, 2, 3 43; CHECK-PWR8-NEXT: blr 44; 45; CHECK-NOVSX-LABEL: test_fsels: 46; CHECK-NOVSX: # %bb.0: # %entry 47; CHECK-NOVSX-NEXT: fsel 1, 1, 2, 3 48; CHECK-NOVSX-NEXT: blr 49 50entry: 51 %0 = tail call float @llvm.ppc.fsels(float %a, float %b, float %c) 52 ret float %0 53} 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: # %entry 60; CHECK-PWR7-NEXT: xsrsqrtedp 1, 1 61; CHECK-PWR7-NEXT: blr 62; 63; CHECK-PWR8-LABEL: test_frsqrte: 64; CHECK-PWR8: # %bb.0: # %entry 65; CHECK-PWR8-NEXT: xsrsqrtedp 1, 1 66; CHECK-PWR8-NEXT: blr 67; 68; CHECK-NOVSX-LABEL: test_frsqrte: 69; CHECK-NOVSX: # %bb.0: # %entry 70; CHECK-NOVSX-NEXT: frsqrte 1, 1 71; CHECK-NOVSX-NEXT: blr 72 73entry: 74 %0 = tail call double @llvm.ppc.frsqrte(double %a) 75 ret double %0 76} 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: # %entry 83; CHECK-PWR7-NEXT: frsqrtes 1, 1 84; CHECK-PWR7-NEXT: blr 85; 86; CHECK-PWR8-LABEL: test_frsqrtes: 87; CHECK-PWR8: # %bb.0: # %entry 88; CHECK-PWR8-NEXT: xsrsqrtesp 1, 1 89; CHECK-PWR8-NEXT: blr 90; 91; CHECK-NOVSX-LABEL: test_frsqrtes: 92; CHECK-NOVSX: # %bb.0: # %entry 93; CHECK-NOVSX-NEXT: frsqrtes 1, 1 94; CHECK-NOVSX-NEXT: blr 95 96entry: 97 %0 = tail call float @llvm.ppc.frsqrtes(float %a) 98 ret float %0 99} 100 101declare float @llvm.ppc.frsqrtes(float) 102