xref: /llvm-project/llvm/test/CodeGen/PowerPC/builtins-ppc-xlcompat-fp.ll (revision e23ff55931bd9998984a67af8c262c5e98eef13c)
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