Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / RISCV / half-zfa-fli.ll
blob281a873235623b302da2df8c987f5f791b745140
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv32 -target-abi ilp32f -mattr=+zfa,+zfh < %s \
3 ; RUN:     | FileCheck %s
4 ; RUN: llc -mtriple=riscv64 -target-abi lp64f -mattr=+zfa,+zfh < %s \
5 ; RUN:     | FileCheck %s
6 ; RUN: llc -mtriple=riscv32 -target-abi ilp32f -mattr=+zfa,+zfhmin < %s \
7 ; RUN:     | FileCheck %s --check-prefix=ZFHMIN
8 ; RUN: llc -mtriple=riscv64 -target-abi lp64f -mattr=+zfa,+zfhmin < %s \
9 ; RUN:     | FileCheck %s --check-prefix=ZFHMIN
11 define half @loadfpimm1() {
12 ; CHECK-LABEL: loadfpimm1:
13 ; CHECK:       # %bb.0:
14 ; CHECK-NEXT:    fli.h fa0, 0.0625
15 ; CHECK-NEXT:    ret
17 ; ZFHMIN-LABEL: loadfpimm1:
18 ; ZFHMIN:       # %bb.0:
19 ; ZFHMIN-NEXT:    lui a0, %hi(.LCPI0_0)
20 ; ZFHMIN-NEXT:    flh fa0, %lo(.LCPI0_0)(a0)
21 ; ZFHMIN-NEXT:    ret
22   ret half 0.0625
25 define half @loadfpimm2() {
26 ; CHECK-LABEL: loadfpimm2:
27 ; CHECK:       # %bb.0:
28 ; CHECK-NEXT:    fli.h fa0, 0.75
29 ; CHECK-NEXT:    ret
31 ; ZFHMIN-LABEL: loadfpimm2:
32 ; ZFHMIN:       # %bb.0:
33 ; ZFHMIN-NEXT:    lui a0, %hi(.LCPI1_0)
34 ; ZFHMIN-NEXT:    flh fa0, %lo(.LCPI1_0)(a0)
35 ; ZFHMIN-NEXT:    ret
36   ret half 0.75
39 define half @loadfpimm3() {
40 ; CHECK-LABEL: loadfpimm3:
41 ; CHECK:       # %bb.0:
42 ; CHECK-NEXT:    fli.h fa0, 1.25
43 ; CHECK-NEXT:    ret
45 ; ZFHMIN-LABEL: loadfpimm3:
46 ; ZFHMIN:       # %bb.0:
47 ; ZFHMIN-NEXT:    lui a0, %hi(.LCPI2_0)
48 ; ZFHMIN-NEXT:    flh fa0, %lo(.LCPI2_0)(a0)
49 ; ZFHMIN-NEXT:    ret
50   ret half 1.25
53 define half @loadfpimm4() {
54 ; CHECK-LABEL: loadfpimm4:
55 ; CHECK:       # %bb.0:
56 ; CHECK-NEXT:    fli.h fa0, 3.0
57 ; CHECK-NEXT:    ret
59 ; ZFHMIN-LABEL: loadfpimm4:
60 ; ZFHMIN:       # %bb.0:
61 ; ZFHMIN-NEXT:    lui a0, %hi(.LCPI3_0)
62 ; ZFHMIN-NEXT:    flh fa0, %lo(.LCPI3_0)(a0)
63 ; ZFHMIN-NEXT:    ret
64   ret half 3.0
67 define half @loadfpimm5() {
68 ; CHECK-LABEL: loadfpimm5:
69 ; CHECK:       # %bb.0:
70 ; CHECK-NEXT:    fli.h fa0, 256.0
71 ; CHECK-NEXT:    ret
73 ; ZFHMIN-LABEL: loadfpimm5:
74 ; ZFHMIN:       # %bb.0:
75 ; ZFHMIN-NEXT:    lui a0, %hi(.LCPI4_0)
76 ; ZFHMIN-NEXT:    flh fa0, %lo(.LCPI4_0)(a0)
77 ; ZFHMIN-NEXT:    ret
78   ret half 256.0
81 define half @loadfpimm6() {
82 ; CHECK-LABEL: loadfpimm6:
83 ; CHECK:       # %bb.0:
84 ; CHECK-NEXT:    fli.h fa0, inf
85 ; CHECK-NEXT:    ret
87 ; ZFHMIN-LABEL: loadfpimm6:
88 ; ZFHMIN:       # %bb.0:
89 ; ZFHMIN-NEXT:    lui a0, %hi(.LCPI5_0)
90 ; ZFHMIN-NEXT:    flh fa0, %lo(.LCPI5_0)(a0)
91 ; ZFHMIN-NEXT:    ret
92   ret half 0xH7C00
95 define half @loadfpimm7() {
96 ; CHECK-LABEL: loadfpimm7:
97 ; CHECK:       # %bb.0:
98 ; CHECK-NEXT:    fli.h fa0, nan
99 ; CHECK-NEXT:    ret
101 ; ZFHMIN-LABEL: loadfpimm7:
102 ; ZFHMIN:       # %bb.0:
103 ; ZFHMIN-NEXT:    lui a0, %hi(.LCPI6_0)
104 ; ZFHMIN-NEXT:    flh fa0, %lo(.LCPI6_0)(a0)
105 ; ZFHMIN-NEXT:    ret
106   ret half 0xH7E00
109 define half @loadfpimm8() {
110 ; CHECK-LABEL: loadfpimm8:
111 ; CHECK:       # %bb.0:
112 ; CHECK-NEXT:    fli.h fa0, min
113 ; CHECK-NEXT:    ret
115 ; ZFHMIN-LABEL: loadfpimm8:
116 ; ZFHMIN:       # %bb.0:
117 ; ZFHMIN-NEXT:    li a0, 1024
118 ; ZFHMIN-NEXT:    fmv.h.x fa0, a0
119 ; ZFHMIN-NEXT:    ret
120   ret half 0xH0400
123 define half @loadfpimm9() {
124 ; CHECK-LABEL: loadfpimm9:
125 ; CHECK:       # %bb.0:
126 ; CHECK-NEXT:    lui a0, %hi(.LCPI8_0)
127 ; CHECK-NEXT:    flh fa0, %lo(.LCPI8_0)(a0)
128 ; CHECK-NEXT:    ret
130 ; ZFHMIN-LABEL: loadfpimm9:
131 ; ZFHMIN:       # %bb.0:
132 ; ZFHMIN-NEXT:    lui a0, %hi(.LCPI8_0)
133 ; ZFHMIN-NEXT:    flh fa0, %lo(.LCPI8_0)(a0)
134 ; ZFHMIN-NEXT:    ret
135   ret half 255.0
138 ; This is 1 * 2^-16
139 define half @loadfpimm10() {
140 ; CHECK-LABEL: loadfpimm10:
141 ; CHECK:       # %bb.0:
142 ; CHECK-NEXT:    fli.h fa0, 1.52587890625e-05
143 ; CHECK-NEXT:    ret
145 ; ZFHMIN-LABEL: loadfpimm10:
146 ; ZFHMIN:       # %bb.0:
147 ; ZFHMIN-NEXT:    li a0, 256
148 ; ZFHMIN-NEXT:    fmv.h.x fa0, a0
149 ; ZFHMIN-NEXT:    ret
150   ret half 0xH0100
153 ; This is 1 * 2^-15
154 define half @loadfpimm11() {
155 ; CHECK-LABEL: loadfpimm11:
156 ; CHECK:       # %bb.0:
157 ; CHECK-NEXT:    fli.h fa0, 3.0517578125e-05
158 ; CHECK-NEXT:    ret
160 ; ZFHMIN-LABEL: loadfpimm11:
161 ; ZFHMIN:       # %bb.0:
162 ; ZFHMIN-NEXT:    li a0, 512
163 ; ZFHMIN-NEXT:    fmv.h.x fa0, a0
164 ; ZFHMIN-NEXT:    ret
165   ret half 0xH0200
168 ; Negative test. This is an snan with payload of 1.
169 define half @loadfpimm12() {
170 ; CHECK-LABEL: loadfpimm12:
171 ; CHECK:       # %bb.0:
172 ; CHECK-NEXT:    lui a0, %hi(.LCPI11_0)
173 ; CHECK-NEXT:    flh fa0, %lo(.LCPI11_0)(a0)
174 ; CHECK-NEXT:    ret
176 ; ZFHMIN-LABEL: loadfpimm12:
177 ; ZFHMIN:       # %bb.0:
178 ; ZFHMIN-NEXT:    lui a0, %hi(.LCPI11_0)
179 ; ZFHMIN-NEXT:    flh fa0, %lo(.LCPI11_0)(a0)
180 ; ZFHMIN-NEXT:    ret
181   ret half 0xH7c01
184 define half @loadfpimm13() {
185 ; CHECK-LABEL: loadfpimm13:
186 ; CHECK:       # %bb.0:
187 ; CHECK-NEXT:    fli.h fa0, -1.0
188 ; CHECK-NEXT:    ret
190 ; ZFHMIN-LABEL: loadfpimm13:
191 ; ZFHMIN:       # %bb.0:
192 ; ZFHMIN-NEXT:    lui a0, %hi(.LCPI12_0)
193 ; ZFHMIN-NEXT:    flh fa0, %lo(.LCPI12_0)(a0)
194 ; ZFHMIN-NEXT:    ret
195   ret half -1.0
198 ; Ensure fli isn't directly used for negated versions of numbers in the fli
199 ; table.
200 define half @loadfpimm14() {
201 ; CHECK-LABEL: loadfpimm14:
202 ; CHECK:       # %bb.0:
203 ; CHECK-NEXT:    fli.h fa5, 2.0
204 ; CHECK-NEXT:    fneg.h fa0, fa5
205 ; CHECK-NEXT:    ret
207 ; ZFHMIN-LABEL: loadfpimm14:
208 ; ZFHMIN:       # %bb.0:
209 ; ZFHMIN-NEXT:    lui a0, 1048572
210 ; ZFHMIN-NEXT:    fmv.h.x fa0, a0
211 ; ZFHMIN-NEXT:    ret
212   ret half -2.0
215 ; Ensure fli isn't directly used for negative min normal value.
216 define half @loadfpimm15() {
217 ; CHECK-LABEL: loadfpimm15:
218 ; CHECK:       # %bb.0:
219 ; CHECK-NEXT:    fli.h fa5, min
220 ; CHECK-NEXT:    fneg.h fa0, fa5
221 ; CHECK-NEXT:    ret
223 ; ZFHMIN-LABEL: loadfpimm15:
224 ; ZFHMIN:       # %bb.0:
225 ; ZFHMIN-NEXT:    lui a0, %hi(.LCPI14_0)
226 ; ZFHMIN-NEXT:    flh fa0, %lo(.LCPI14_0)(a0)
227 ; ZFHMIN-NEXT:    ret
228   ret half 0xH8400