xref: /llvm-project/llvm/test/CodeGen/PowerPC/GlobalISel/float-arithmetic.ll (revision 3508f123353c0a145ee79cebb972f46fcb97bf1e)
1d9143ce3SChen Zheng; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2d9143ce3SChen Zheng; RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -global-isel -o - \
3d9143ce3SChen Zheng; RUN:   -ppc-vsr-nums-as-vr -ppc-asm-full-reg-names < %s | FileCheck %s
4d9143ce3SChen Zheng
5d9143ce3SChen Zhengdefine float @float_add(float %a, float %b) {
6d9143ce3SChen Zheng; CHECK-LABEL: float_add:
7d9143ce3SChen Zheng; CHECK:       # %bb.0: # %entry
8d9143ce3SChen Zheng; CHECK-NEXT:    xsaddsp f1, f1, f2
9d9143ce3SChen Zheng; CHECK-NEXT:    blr
10d9143ce3SChen Zhengentry:
11d9143ce3SChen Zheng  %add = fadd float %a, %b
12d9143ce3SChen Zheng  ret float %add
13d9143ce3SChen Zheng}
14d9143ce3SChen Zheng
15d9143ce3SChen Zhengdefine double @double_add(double %a, double %b) {
16d9143ce3SChen Zheng; CHECK-LABEL: double_add:
17d9143ce3SChen Zheng; CHECK:       # %bb.0: # %entry
18d9143ce3SChen Zheng; CHECK-NEXT:    xsadddp f1, f1, f2
19d9143ce3SChen Zheng; CHECK-NEXT:    blr
20d9143ce3SChen Zhengentry:
21d9143ce3SChen Zheng  %add = fadd double %a, %b
22d9143ce3SChen Zheng  ret double %add
23d9143ce3SChen Zheng}
24d9143ce3SChen Zheng
25d9143ce3SChen Zhengdefine float @float_sub(float %a, float %b) {
26d9143ce3SChen Zheng; CHECK-LABEL: float_sub:
27d9143ce3SChen Zheng; CHECK:       # %bb.0: # %entry
28d9143ce3SChen Zheng; CHECK-NEXT:    xssubsp f1, f1, f2
29d9143ce3SChen Zheng; CHECK-NEXT:    blr
30d9143ce3SChen Zhengentry:
31d9143ce3SChen Zheng  %sub = fsub float %a, %b
32d9143ce3SChen Zheng  ret float %sub
33d9143ce3SChen Zheng}
34d9143ce3SChen Zheng
35d9143ce3SChen Zhengdefine float @float_mul(float %a, float %b) {
36d9143ce3SChen Zheng; CHECK-LABEL: float_mul:
37d9143ce3SChen Zheng; CHECK:       # %bb.0: # %entry
38d9143ce3SChen Zheng; CHECK-NEXT:    xsmulsp f1, f1, f2
39d9143ce3SChen Zheng; CHECK-NEXT:    blr
40d9143ce3SChen Zhengentry:
41d9143ce3SChen Zheng  %mul = fmul float %a, %b
42d9143ce3SChen Zheng  ret float %mul
43d9143ce3SChen Zheng}
44d9143ce3SChen Zheng
45d9143ce3SChen Zhengdefine float @float_div(float %a, float %b) {
46d9143ce3SChen Zheng; CHECK-LABEL: float_div:
47d9143ce3SChen Zheng; CHECK:       # %bb.0: # %entry
48d9143ce3SChen Zheng; CHECK-NEXT:    xsdivsp f1, f1, f2
49d9143ce3SChen Zheng; CHECK-NEXT:    blr
50d9143ce3SChen Zhengentry:
51d9143ce3SChen Zheng  %div = fdiv float %a, %b
52d9143ce3SChen Zheng  ret float %div
53d9143ce3SChen Zheng}
54*3508f123SAmy Kwan
55*3508f123SAmy Kwandefine <4 x float> @test_fadd_v4f32(<4 x float> %a, <4 x float> %b) {
56*3508f123SAmy Kwan; CHECK-LABEL: test_fadd_v4f32:
57*3508f123SAmy Kwan; CHECK:       # %bb.0:
58*3508f123SAmy Kwan; CHECK-NEXT:    xvaddsp v2, v2, v3
59*3508f123SAmy Kwan; CHECK-NEXT:    blr
60*3508f123SAmy Kwan  %res = fadd <4 x float> %a, %b
61*3508f123SAmy Kwan  ret <4 x float> %res
62*3508f123SAmy Kwan}
63*3508f123SAmy Kwan
64*3508f123SAmy Kwandefine <2 x double> @test_fadd_v2f64(<2 x double> %a, <2 x double> %b) {
65*3508f123SAmy Kwan; CHECK-LABEL: test_fadd_v2f64:
66*3508f123SAmy Kwan; CHECK:       # %bb.0:
67*3508f123SAmy Kwan; CHECK-NEXT:    xvadddp v2, v2, v3
68*3508f123SAmy Kwan; CHECK-NEXT:    blr
69*3508f123SAmy Kwan  %res = fadd <2 x double> %a, %b
70*3508f123SAmy Kwan  ret <2 x double> %res
71*3508f123SAmy Kwan}
72*3508f123SAmy Kwan
73*3508f123SAmy Kwandefine <4 x float> @test_fsub_v4f32(<4 x float> %a, <4 x float> %b) {
74*3508f123SAmy Kwan; CHECK-LABEL: test_fsub_v4f32:
75*3508f123SAmy Kwan; CHECK:       # %bb.0:
76*3508f123SAmy Kwan; CHECK-NEXT:    xvsubsp v2, v2, v3
77*3508f123SAmy Kwan; CHECK-NEXT:    blr
78*3508f123SAmy Kwan  %res = fsub <4 x float> %a, %b
79*3508f123SAmy Kwan  ret <4 x float> %res
80*3508f123SAmy Kwan}
81*3508f123SAmy Kwan
82*3508f123SAmy Kwandefine <2 x double> @test_fsub_v2f64(<2 x double> %a, <2 x double> %b) {
83*3508f123SAmy Kwan; CHECK-LABEL: test_fsub_v2f64:
84*3508f123SAmy Kwan; CHECK:       # %bb.0:
85*3508f123SAmy Kwan; CHECK-NEXT:    xvsubdp v2, v2, v3
86*3508f123SAmy Kwan; CHECK-NEXT:    blr
87*3508f123SAmy Kwan  %res = fsub <2 x double> %a, %b
88*3508f123SAmy Kwan  ret <2 x double> %res
89*3508f123SAmy Kwan}
90*3508f123SAmy Kwan
91*3508f123SAmy Kwandefine <4 x float> @test_fmul_v4f32(<4 x float> %a, <4 x float> %b) {
92*3508f123SAmy Kwan; CHECK-LABEL: test_fmul_v4f32:
93*3508f123SAmy Kwan; CHECK:       # %bb.0:
94*3508f123SAmy Kwan; CHECK-NEXT:    xvmulsp v2, v2, v3
95*3508f123SAmy Kwan; CHECK-NEXT:    blr
96*3508f123SAmy Kwan  %res = fmul <4 x float> %a, %b
97*3508f123SAmy Kwan  ret <4 x float> %res
98*3508f123SAmy Kwan}
99*3508f123SAmy Kwan
100*3508f123SAmy Kwandefine <2 x double> @test_fmul_v2f64(<2 x double> %a, <2 x double> %b) {
101*3508f123SAmy Kwan; CHECK-LABEL: test_fmul_v2f64:
102*3508f123SAmy Kwan; CHECK:       # %bb.0:
103*3508f123SAmy Kwan; CHECK-NEXT:    xvmuldp v2, v2, v3
104*3508f123SAmy Kwan; CHECK-NEXT:    blr
105*3508f123SAmy Kwan  %res = fmul <2 x double> %a, %b
106*3508f123SAmy Kwan  ret <2 x double> %res
107*3508f123SAmy Kwan}
108*3508f123SAmy Kwan
109*3508f123SAmy Kwandefine <4 x float> @test_fdiv_v4f32(<4 x float> %a, <4 x float> %b) {
110*3508f123SAmy Kwan; CHECK-LABEL: test_fdiv_v4f32:
111*3508f123SAmy Kwan; CHECK:       # %bb.0:
112*3508f123SAmy Kwan; CHECK-NEXT:    xvdivsp v2, v2, v3
113*3508f123SAmy Kwan; CHECK-NEXT:    blr
114*3508f123SAmy Kwan  %res = fdiv <4 x float> %a, %b
115*3508f123SAmy Kwan  ret <4 x float> %res
116*3508f123SAmy Kwan}
117*3508f123SAmy Kwan
118*3508f123SAmy Kwandefine <2 x double> @test_fdiv_v2f64(<2 x double> %a, <2 x double> %b) {
119*3508f123SAmy Kwan; CHECK-LABEL: test_fdiv_v2f64:
120*3508f123SAmy Kwan; CHECK:       # %bb.0:
121*3508f123SAmy Kwan; CHECK-NEXT:    xvdivdp v2, v2, v3
122*3508f123SAmy Kwan; CHECK-NEXT:    blr
123*3508f123SAmy Kwan  %res = fdiv <2 x double> %a, %b
124*3508f123SAmy Kwan  ret <2 x double> %res
125*3508f123SAmy Kwan}
126