15
15
define void @constpool_f32 (ptr %p ) {
16
16
; RV32-SMALL-LABEL: constpool_f32:
17
17
; RV32-SMALL: # %bb.0:
18
- ; RV32-SMALL-NEXT: lui a1, %hi(.LCPI0_0)
19
- ; RV32-SMALL-NEXT: lw a1, %lo(.LCPI0_0)(a1)
18
+ ; RV32-SMALL-NEXT: lui a1, 260096
20
19
; RV32-SMALL-NEXT: sw a1, 0(a0)
21
20
; RV32-SMALL-NEXT: ret
22
21
;
23
22
; RV32-MEDIUM-LABEL: constpool_f32:
24
23
; RV32-MEDIUM: # %bb.0:
25
- ; RV32-MEDIUM-NEXT: .Lpcrel_hi0:
26
- ; RV32-MEDIUM-NEXT: auipc a1, %pcrel_hi(.LCPI0_0)
27
- ; RV32-MEDIUM-NEXT: lw a1, %pcrel_lo(.Lpcrel_hi0)(a1)
24
+ ; RV32-MEDIUM-NEXT: lui a1, 260096
28
25
; RV32-MEDIUM-NEXT: sw a1, 0(a0)
29
26
; RV32-MEDIUM-NEXT: ret
30
27
;
31
28
; RV32-PIC-LABEL: constpool_f32:
32
29
; RV32-PIC: # %bb.0:
33
- ; RV32-PIC-NEXT: .Lpcrel_hi0:
34
- ; RV32-PIC-NEXT: auipc a1, %pcrel_hi(.LCPI0_0)
35
- ; RV32-PIC-NEXT: lw a1, %pcrel_lo(.Lpcrel_hi0)(a1)
30
+ ; RV32-PIC-NEXT: lui a1, 260096
36
31
; RV32-PIC-NEXT: sw a1, 0(a0)
37
32
; RV32-PIC-NEXT: ret
38
33
;
39
34
; RV64-SMALL-LABEL: constpool_f32:
40
35
; RV64-SMALL: # %bb.0:
41
- ; RV64-SMALL-NEXT: lui a1, %hi(.LCPI0_0)
42
- ; RV64-SMALL-NEXT: lw a1, %lo(.LCPI0_0)(a1)
36
+ ; RV64-SMALL-NEXT: lui a1, 260096
43
37
; RV64-SMALL-NEXT: sw a1, 0(a0)
44
38
; RV64-SMALL-NEXT: ret
45
39
;
46
40
; RV64-MEDIUM-LABEL: constpool_f32:
47
41
; RV64-MEDIUM: # %bb.0:
48
- ; RV64-MEDIUM-NEXT: .Lpcrel_hi0:
49
- ; RV64-MEDIUM-NEXT: auipc a1, %pcrel_hi(.LCPI0_0)
50
- ; RV64-MEDIUM-NEXT: lw a1, %pcrel_lo(.Lpcrel_hi0)(a1)
42
+ ; RV64-MEDIUM-NEXT: lui a1, 260096
51
43
; RV64-MEDIUM-NEXT: sw a1, 0(a0)
52
44
; RV64-MEDIUM-NEXT: ret
53
45
;
54
46
; RV64-PIC-LABEL: constpool_f32:
55
47
; RV64-PIC: # %bb.0:
56
- ; RV64-PIC-NEXT: .Lpcrel_hi0:
57
- ; RV64-PIC-NEXT: auipc a1, %pcrel_hi(.LCPI0_0)
58
- ; RV64-PIC-NEXT: lw a1, %pcrel_lo(.Lpcrel_hi0)(a1)
48
+ ; RV64-PIC-NEXT: lui a1, 260096
59
49
; RV64-PIC-NEXT: sw a1, 0(a0)
60
50
; RV64-PIC-NEXT: ret
61
51
store float 1 .0 , ptr %p
@@ -75,9 +65,9 @@ define void @constpool_f64(ptr %p) {
75
65
;
76
66
; RV32-MEDIUM-LABEL: constpool_f64:
77
67
; RV32-MEDIUM: # %bb.0:
78
- ; RV32-MEDIUM-NEXT: .Lpcrel_hi1 :
68
+ ; RV32-MEDIUM-NEXT: .Lpcrel_hi0 :
79
69
; RV32-MEDIUM-NEXT: auipc a1, %pcrel_hi(.LCPI1_0)
80
- ; RV32-MEDIUM-NEXT: addi a1, a1, %pcrel_lo(.Lpcrel_hi1 )
70
+ ; RV32-MEDIUM-NEXT: addi a1, a1, %pcrel_lo(.Lpcrel_hi0 )
81
71
; RV32-MEDIUM-NEXT: lw a2, 0(a1)
82
72
; RV32-MEDIUM-NEXT: lw a1, 4(a1)
83
73
; RV32-MEDIUM-NEXT: sw a2, 0(a0)
@@ -86,9 +76,9 @@ define void @constpool_f64(ptr %p) {
86
76
;
87
77
; RV32-PIC-LABEL: constpool_f64:
88
78
; RV32-PIC: # %bb.0:
89
- ; RV32-PIC-NEXT: .Lpcrel_hi1 :
79
+ ; RV32-PIC-NEXT: .Lpcrel_hi0 :
90
80
; RV32-PIC-NEXT: auipc a1, %pcrel_hi(.LCPI1_0)
91
- ; RV32-PIC-NEXT: addi a1, a1, %pcrel_lo(.Lpcrel_hi1 )
81
+ ; RV32-PIC-NEXT: addi a1, a1, %pcrel_lo(.Lpcrel_hi0 )
92
82
; RV32-PIC-NEXT: lw a2, 0(a1)
93
83
; RV32-PIC-NEXT: lw a1, 4(a1)
94
84
; RV32-PIC-NEXT: sw a2, 0(a0)
@@ -97,26 +87,124 @@ define void @constpool_f64(ptr %p) {
97
87
;
98
88
; RV64-SMALL-LABEL: constpool_f64:
99
89
; RV64-SMALL: # %bb.0:
100
- ; RV64-SMALL-NEXT: lui a1, %hi(.LCPI1_0)
101
- ; RV64-SMALL-NEXT: ld a1, %lo(.LCPI1_0)(a1)
90
+ ; RV64-SMALL-NEXT: li a1, 1023
91
+ ; RV64-SMALL-NEXT: slli a1, a1, 52
102
92
; RV64-SMALL-NEXT: sd a1, 0(a0)
103
93
; RV64-SMALL-NEXT: ret
104
94
;
105
95
; RV64-MEDIUM-LABEL: constpool_f64:
106
96
; RV64-MEDIUM: # %bb.0:
107
- ; RV64-MEDIUM-NEXT: .Lpcrel_hi1:
108
- ; RV64-MEDIUM-NEXT: auipc a1, %pcrel_hi(.LCPI1_0)
109
- ; RV64-MEDIUM-NEXT: ld a1, %pcrel_lo(.Lpcrel_hi1)(a1)
97
+ ; RV64-MEDIUM-NEXT: li a1, 1023
98
+ ; RV64-MEDIUM-NEXT: slli a1, a1, 52
110
99
; RV64-MEDIUM-NEXT: sd a1, 0(a0)
111
100
; RV64-MEDIUM-NEXT: ret
112
101
;
113
102
; RV64-PIC-LABEL: constpool_f64:
114
103
; RV64-PIC: # %bb.0:
115
- ; RV64-PIC-NEXT: .Lpcrel_hi1:
116
- ; RV64-PIC-NEXT: auipc a1, %pcrel_hi(.LCPI1_0)
117
- ; RV64-PIC-NEXT: ld a1, %pcrel_lo(.Lpcrel_hi1)(a1)
104
+ ; RV64-PIC-NEXT: li a1, 1023
105
+ ; RV64-PIC-NEXT: slli a1, a1, 52
118
106
; RV64-PIC-NEXT: sd a1, 0(a0)
119
107
; RV64-PIC-NEXT: ret
120
108
store double 1 .0 , ptr %p
121
109
ret void
122
110
}
111
+
112
+ define void @constpool_f32_1234_5 (ptr %p ) {
113
+ ; RV32-SMALL-LABEL: constpool_f32_1234_5:
114
+ ; RV32-SMALL: # %bb.0:
115
+ ; RV32-SMALL-NEXT: lui a1, 280997
116
+ ; RV32-SMALL-NEXT: sw a1, 0(a0)
117
+ ; RV32-SMALL-NEXT: ret
118
+ ;
119
+ ; RV32-MEDIUM-LABEL: constpool_f32_1234_5:
120
+ ; RV32-MEDIUM: # %bb.0:
121
+ ; RV32-MEDIUM-NEXT: lui a1, 280997
122
+ ; RV32-MEDIUM-NEXT: sw a1, 0(a0)
123
+ ; RV32-MEDIUM-NEXT: ret
124
+ ;
125
+ ; RV32-PIC-LABEL: constpool_f32_1234_5:
126
+ ; RV32-PIC: # %bb.0:
127
+ ; RV32-PIC-NEXT: lui a1, 280997
128
+ ; RV32-PIC-NEXT: sw a1, 0(a0)
129
+ ; RV32-PIC-NEXT: ret
130
+ ;
131
+ ; RV64-SMALL-LABEL: constpool_f32_1234_5:
132
+ ; RV64-SMALL: # %bb.0:
133
+ ; RV64-SMALL-NEXT: lui a1, 280997
134
+ ; RV64-SMALL-NEXT: sw a1, 0(a0)
135
+ ; RV64-SMALL-NEXT: ret
136
+ ;
137
+ ; RV64-MEDIUM-LABEL: constpool_f32_1234_5:
138
+ ; RV64-MEDIUM: # %bb.0:
139
+ ; RV64-MEDIUM-NEXT: lui a1, 280997
140
+ ; RV64-MEDIUM-NEXT: sw a1, 0(a0)
141
+ ; RV64-MEDIUM-NEXT: ret
142
+ ;
143
+ ; RV64-PIC-LABEL: constpool_f32_1234_5:
144
+ ; RV64-PIC: # %bb.0:
145
+ ; RV64-PIC-NEXT: lui a1, 280997
146
+ ; RV64-PIC-NEXT: sw a1, 0(a0)
147
+ ; RV64-PIC-NEXT: ret
148
+ store float 1 .234500e+03 , ptr %p
149
+ ret void
150
+ }
151
+
152
+ define void @constpool_f64_1234_5 (ptr %p ) {
153
+ ; RV32-SMALL-LABEL: constpool_f64_1234_5:
154
+ ; RV32-SMALL: # %bb.0:
155
+ ; RV32-SMALL-NEXT: lui a1, %hi(.LCPI3_0)
156
+ ; RV32-SMALL-NEXT: addi a1, a1, %lo(.LCPI3_0)
157
+ ; RV32-SMALL-NEXT: lw a2, 0(a1)
158
+ ; RV32-SMALL-NEXT: lw a1, 4(a1)
159
+ ; RV32-SMALL-NEXT: sw a2, 0(a0)
160
+ ; RV32-SMALL-NEXT: sw a1, 4(a0)
161
+ ; RV32-SMALL-NEXT: ret
162
+ ;
163
+ ; RV32-MEDIUM-LABEL: constpool_f64_1234_5:
164
+ ; RV32-MEDIUM: # %bb.0:
165
+ ; RV32-MEDIUM-NEXT: .Lpcrel_hi1:
166
+ ; RV32-MEDIUM-NEXT: auipc a1, %pcrel_hi(.LCPI3_0)
167
+ ; RV32-MEDIUM-NEXT: addi a1, a1, %pcrel_lo(.Lpcrel_hi1)
168
+ ; RV32-MEDIUM-NEXT: lw a2, 0(a1)
169
+ ; RV32-MEDIUM-NEXT: lw a1, 4(a1)
170
+ ; RV32-MEDIUM-NEXT: sw a2, 0(a0)
171
+ ; RV32-MEDIUM-NEXT: sw a1, 4(a0)
172
+ ; RV32-MEDIUM-NEXT: ret
173
+ ;
174
+ ; RV32-PIC-LABEL: constpool_f64_1234_5:
175
+ ; RV32-PIC: # %bb.0:
176
+ ; RV32-PIC-NEXT: .Lpcrel_hi1:
177
+ ; RV32-PIC-NEXT: auipc a1, %pcrel_hi(.LCPI3_0)
178
+ ; RV32-PIC-NEXT: addi a1, a1, %pcrel_lo(.Lpcrel_hi1)
179
+ ; RV32-PIC-NEXT: lw a2, 0(a1)
180
+ ; RV32-PIC-NEXT: lw a1, 4(a1)
181
+ ; RV32-PIC-NEXT: sw a2, 0(a0)
182
+ ; RV32-PIC-NEXT: sw a1, 4(a0)
183
+ ; RV32-PIC-NEXT: ret
184
+ ;
185
+ ; RV64-SMALL-LABEL: constpool_f64_1234_5:
186
+ ; RV64-SMALL: # %bb.0:
187
+ ; RV64-SMALL-NEXT: lui a1, 517
188
+ ; RV64-SMALL-NEXT: addi a1, a1, -1627
189
+ ; RV64-SMALL-NEXT: slli a1, a1, 41
190
+ ; RV64-SMALL-NEXT: sd a1, 0(a0)
191
+ ; RV64-SMALL-NEXT: ret
192
+ ;
193
+ ; RV64-MEDIUM-LABEL: constpool_f64_1234_5:
194
+ ; RV64-MEDIUM: # %bb.0:
195
+ ; RV64-MEDIUM-NEXT: lui a1, 517
196
+ ; RV64-MEDIUM-NEXT: addi a1, a1, -1627
197
+ ; RV64-MEDIUM-NEXT: slli a1, a1, 41
198
+ ; RV64-MEDIUM-NEXT: sd a1, 0(a0)
199
+ ; RV64-MEDIUM-NEXT: ret
200
+ ;
201
+ ; RV64-PIC-LABEL: constpool_f64_1234_5:
202
+ ; RV64-PIC: # %bb.0:
203
+ ; RV64-PIC-NEXT: lui a1, 517
204
+ ; RV64-PIC-NEXT: addi a1, a1, -1627
205
+ ; RV64-PIC-NEXT: slli a1, a1, 41
206
+ ; RV64-PIC-NEXT: sd a1, 0(a0)
207
+ ; RV64-PIC-NEXT: ret
208
+ store double 1 .234500e+03 , ptr %p
209
+ ret void
210
+ }
0 commit comments