xref: /llvm-project/llvm/test/CodeGen/VE/Scalar/fp_mul.ll (revision 44a4f9392546649f7d6247af1b816aa1f346dee0)
1; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s
2
3define float @func1(float %a, float %b) {
4; CHECK-LABEL: func1:
5; CHECK:       # %bb.0:
6; CHECK-NEXT:    fmul.s %s0, %s0, %s1
7; CHECK-NEXT:    b.l.t (, %s10)
8  %r = fmul float %a, %b
9  ret float %r
10}
11
12define double @func2(double %a, double %b) {
13; CHECK-LABEL: func2:
14; CHECK:       # %bb.0:
15; CHECK-NEXT:    fmul.d %s0, %s0, %s1
16; CHECK-NEXT:    b.l.t (, %s10)
17  %r = fmul double %a, %b
18  ret double %r
19}
20
21define fp128 @func3(fp128 %a, fp128 %b) {
22; CHECK-LABEL: func3:
23; CHECK:       # %bb.0:
24; CHECK-NEXT:    fmul.q %s0, %s0, %s2
25; CHECK-NEXT:    b.l.t (, %s10)
26  %r = fmul fp128 %a, %b
27  ret fp128 %r
28}
29
30define float @func4(float %a) {
31; CHECK-LABEL: func4:
32; CHECK:       # %bb.0:
33; CHECK-NEXT:    lea.sl %s1, 1084227584
34; CHECK-NEXT:    fmul.s %s0, %s0, %s1
35; CHECK-NEXT:    b.l.t (, %s10)
36  %r = fmul float %a, 5.000000e+00
37  ret float %r
38}
39
40define double @func5(double %a) {
41; CHECK-LABEL: func5:
42; CHECK:       # %bb.0:
43; CHECK-NEXT:    lea.sl %s1, 1075052544
44; CHECK-NEXT:    fmul.d %s0, %s0, %s1
45; CHECK-NEXT:    b.l.t (, %s10)
46  %r = fmul double %a, 5.000000e+00
47  ret double %r
48}
49
50define fp128 @func6(fp128 %a) {
51; CHECK-LABEL: func6:
52; CHECK:       # %bb.0:
53; CHECK-NEXT:    lea %s2, .LCPI{{[0-9]+}}_0@lo
54; CHECK-NEXT:    and %s2, %s2, (32)0
55; CHECK-NEXT:    lea.sl %s2, .LCPI{{[0-9]+}}_0@hi(, %s2)
56; CHECK-NEXT:    ld %s4, 8(, %s2)
57; CHECK-NEXT:    ld %s5, (, %s2)
58; CHECK-NEXT:    fmul.q %s0, %s0, %s4
59; CHECK-NEXT:    b.l.t (, %s10)
60  %r = fmul fp128 %a, 0xL00000000000000004001400000000000
61  ret fp128 %r
62}
63
64define float @func7(float %a) {
65; CHECK-LABEL: func7:
66; CHECK:       # %bb.0:
67; CHECK-NEXT:    lea.sl %s1, 2139095039
68; CHECK-NEXT:    fmul.s %s0, %s0, %s1
69; CHECK-NEXT:    b.l.t (, %s10)
70  %r = fmul float %a, 0x47EFFFFFE0000000
71  ret float %r
72}
73
74define double @func8(double %a) {
75; CHECK-LABEL: func8:
76; CHECK:       # %bb.0:
77; CHECK-NEXT:    lea %s1, -1
78; CHECK-NEXT:    and %s1, %s1, (32)0
79; CHECK-NEXT:    lea.sl %s1, 2146435071(, %s1)
80; CHECK-NEXT:    fmul.d %s0, %s0, %s1
81; CHECK-NEXT:    b.l.t (, %s10)
82  %r = fmul double %a, 0x7FEFFFFFFFFFFFFF
83  ret double %r
84}
85
86define fp128 @func9(fp128 %a) {
87; CHECK-LABEL: func9:
88; CHECK:       # %bb.0:
89; CHECK-NEXT:    lea %s2, .LCPI{{[0-9]+}}_0@lo
90; CHECK-NEXT:    and %s2, %s2, (32)0
91; CHECK-NEXT:    lea.sl %s2, .LCPI{{[0-9]+}}_0@hi(, %s2)
92; CHECK-NEXT:    ld %s4, 8(, %s2)
93; CHECK-NEXT:    ld %s5, (, %s2)
94; CHECK-NEXT:    fmul.q %s0, %s0, %s4
95; CHECK-NEXT:    b.l.t (, %s10)
96  %r = fmul fp128 %a, 0xLFFFFFFFFFFFFFFFF7FFEFFFFFFFFFFFF
97  ret fp128 %r
98}
99
100define float @fmuls_ir(float %a) {
101; CHECK-LABEL: fmuls_ir:
102; CHECK:       # %bb.0:
103; CHECK-NEXT:    fmul.s %s0, %s0, (0)1
104; CHECK-NEXT:    b.l.t (, %s10)
105  %r = fmul float 0.e+00, %a
106  ret float %r
107}
108
109define float @fmuls_ri(float %a) {
110; CHECK-LABEL: fmuls_ri:
111; CHECK:       # %bb.0:
112; CHECK-NEXT:    fmul.s %s0, %s0, (2)1
113; CHECK-NEXT:    b.l.t (, %s10)
114  %r = fmul float %a, -2.
115  ret float %r
116}
117
118define float @fmuls_ri2(float %a) {
119; CHECK-LABEL: fmuls_ri2:
120; CHECK:       # %bb.0:
121; CHECK-NEXT:    fmul.s %s0, %s0, (3)1
122; CHECK-NEXT:    b.l.t (, %s10)
123  %r = fmul float %a, -36893488147419103232.
124  ret float %r
125}
126
127define float @fmuls_ri3(float %a) {
128; CHECK-LABEL: fmuls_ri3:
129; CHECK:       # %bb.0:
130; CHECK-NEXT:    fmul.s %s0, %s0, (9)0
131; CHECK-NEXT:    b.l.t (, %s10)
132  %r = fmul float %a, 1.175494210692441075487029444849287348827052428745893333857174530571588870475618904265502351336181163787841796875E-38
133  ret float %r
134}
135