@@ -190,51 +190,97 @@ def BlahLibrary : SystemRuntimeLibrary<isBlahArch, (add calloc, LibraryWithCondi
190
190
// CHECK-NEXT: }
191
191
192
192
// CHECK: void llvm::RTLIB::RuntimeLibcallsInfo::setTargetRuntimeLibcallSets(const llvm::Triple &TT, ExceptionHandling ExceptionModel, FloatABI::ABIType FloatABI, EABI EABIVersion, StringRef ABIName) {
193
+ // CHECK-NEXT: struct LibcallImplPair {
194
+ // CHECK-NEXT: RTLIB::Libcall Func;
195
+ // CHECK-NEXT: RTLIB::LibcallImpl Impl;
196
+ // CHECK-NEXT: };
193
197
// CHECK-EMPTY:
194
198
// CHECK-NEXT: if (TT.getArch() == Triple::blah) {
195
- // CHECK-NEXT: setLibcallImpl(RTLIB::BZERO, RTLIB::impl_bzero); // bzero
196
- // CHECK-NEXT: setLibcallImpl(RTLIB::CALLOC, RTLIB::impl_calloc); // calloc
197
- // CHECK-NEXT: setLibcallImpl(RTLIB::SQRT_F128, RTLIB::impl_sqrtl_f128); // sqrtl
199
+ // CHECK-NEXT: static const LibcallImplPair LibraryCalls[] = {
200
+ // CHECK-NEXT: {RTLIB::BZERO, RTLIB::impl_bzero}, // bzero
201
+ // CHECK-NEXT: {RTLIB::CALLOC, RTLIB::impl_calloc}, // calloc
202
+ // CHECK-NEXT: {RTLIB::SQRT_F128, RTLIB::impl_sqrtl_f128}, // sqrtl
203
+ // CHECK-NEXT: };
204
+ // CHECK-EMPTY:
205
+ // CHECK-NEXT: for (const auto [Func, Impl] : LibraryCalls) {
206
+ // CHECK-NEXT: setLibcallImpl(Func, Impl);
207
+ // CHECK-NEXT: }
198
208
// CHECK-EMPTY:
199
209
// CHECK-NEXT: if (TT.hasCompilerRT()) {
200
- // CHECK-NEXT: setLibcallImpl(RTLIB::SHL_I32, RTLIB::impl___ashlsi3); // __ashlsi3
201
- // CHECK-NEXT: setLibcallImpl(RTLIB::SRL_I64, RTLIB::impl___lshrdi3); // __lshrdi3
210
+ // CHECK-NEXT: static const LibcallImplPair LibraryCalls_hasCompilerRT[] = {
211
+ // CHECK-NEXT: {RTLIB::SHL_I32, RTLIB::impl___ashlsi3}, // __ashlsi3
212
+ // CHECK-NEXT: {RTLIB::SRL_I64, RTLIB::impl___lshrdi3}, // __lshrdi3
213
+ // CHECK-NEXT: };
214
+ // CHECK-EMPTY:
215
+ // CHECK-NEXT: for (const auto [Func, Impl] : LibraryCalls_hasCompilerRT) {
216
+ // CHECK-NEXT: setLibcallImpl(Func, Impl);
217
+ // CHECK-NEXT: }
202
218
// CHECK-EMPTY:
203
219
// CHECK-NEXT: }
204
220
// CHECK-EMPTY:
205
221
// CHECK-NEXT: if (TT.getOS() == Triple::bar) {
206
- // CHECK-NEXT: setLibcallImpl(RTLIB::MEMSET, RTLIB::impl____memset); // ___memset
222
+ // CHECK-NEXT: static const LibcallImplPair LibraryCalls_isBarOS[] = {
223
+ // CHECK-NEXT: {RTLIB::MEMSET, RTLIB::impl____memset}, // ___memset
224
+ // CHECK-NEXT: };
225
+ // CHECK-EMPTY:
226
+ // CHECK-NEXT: for (const auto [Func, Impl] : LibraryCalls_isBarOS) {
227
+ // CHECK-NEXT: setLibcallImpl(Func, Impl);
228
+ // CHECK-NEXT: }
207
229
// CHECK-EMPTY:
208
230
// CHECK-NEXT: }
209
231
// CHECK-EMPTY:
210
232
// CHECK-NEXT: return;
211
233
// CHECK-NEXT: }
212
234
// CHECK-EMPTY:
213
235
// CHECK-NEXT: if (TT.getArch() == Triple::buzz) {
214
- // CHECK-NEXT: setLibcallImpl(RTLIB::SHL_I32, RTLIB::impl___ashlsi3); // __ashlsi3
215
- // CHECK-NEXT: setLibcallImpl(RTLIB::SQRT_F80, RTLIB::impl_sqrtl_f80); // sqrtl
216
- // CHECK-NEXT: setLibcallImpl(RTLIB::SRL_I64, RTLIB::impl___lshrdi3); // __lshrdi3
236
+ // CHECK-NEXT: static const LibcallImplPair LibraryCalls[] = {
237
+ // CHECK-NEXT: {RTLIB::SHL_I32, RTLIB::impl___ashlsi3}, // __ashlsi3
238
+ // CHECK-NEXT: {RTLIB::SQRT_F80, RTLIB::impl_sqrtl_f80}, // sqrtl
239
+ // CHECK-NEXT: {RTLIB::SRL_I64, RTLIB::impl___lshrdi3}, // __lshrdi3
240
+ // CHECK-NEXT: };
241
+ // CHECK-EMPTY:
242
+ // CHECK-NEXT: for (const auto [Func, Impl] : LibraryCalls) {
243
+ // CHECK-NEXT: setLibcallImpl(Func, Impl);
244
+ // CHECK-NEXT: }
217
245
// CHECK-EMPTY:
218
246
// CHECK-NEXT: return;
219
247
// CHECK-NEXT: }
220
248
// CHECK-EMPTY:
221
249
// CHECK-NEXT: if (TT.getArch() == Triple::foo) {
222
- // CHECK-NEXT: setLibcallImpl(RTLIB::BZERO, RTLIB::impl_bzero); // bzero
223
- // CHECK-NEXT: setLibcallImpl(RTLIB::SQRT_F128, RTLIB::impl_sqrtl_f128); // sqrtl
250
+ // CHECK-NEXT: static const LibcallImplPair LibraryCalls[] = {
251
+ // CHECK-NEXT: {RTLIB::BZERO, RTLIB::impl_bzero}, // bzero
252
+ // CHECK-NEXT: {RTLIB::SQRT_F128, RTLIB::impl_sqrtl_f128}, // sqrtl
253
+ // CHECK-NEXT: };
254
+ // CHECK-EMPTY:
255
+ // CHECK-NEXT: for (const auto [Func, Impl] : LibraryCalls) {
256
+ // CHECK-NEXT: setLibcallImpl(Func, Impl);
257
+ // CHECK-NEXT: }
224
258
// CHECK-EMPTY:
225
259
// CHECK-NEXT: if (TT.getOS() == Triple::bar) {
226
- // CHECK-NEXT: setLibcallImpl(RTLIB::MEMSET, RTLIB::impl____memset); // ___memset
260
+ // CHECK-NEXT: static const LibcallImplPair LibraryCalls_isBarOS[] = {
261
+ // CHECK-NEXT: {RTLIB::MEMSET, RTLIB::impl____memset}, // ___memset
262
+ // CHECK-NEXT: };
263
+ // CHECK-EMPTY:
264
+ // CHECK-NEXT: for (const auto [Func, Impl] : LibraryCalls_isBarOS) {
265
+ // CHECK-NEXT: setLibcallImpl(Func, Impl);
266
+ // CHECK-NEXT: }
227
267
// CHECK-EMPTY:
228
268
// CHECK-NEXT: }
229
269
// CHECK-EMPTY:
230
270
// CHECK-NEXT: return;
231
271
// CHECK-NEXT: }
232
272
// CHECK-EMPTY:
233
273
// CHECK-NEXT: if (TT.getArch() == Triple::simple) {
234
- // CHECK-NEXT: setLibcallImpl(RTLIB::CALLOC, RTLIB::impl_calloc); // calloc
235
- // CHECK-NEXT: setLibcallImpl(RTLIB::SHL_I32, RTLIB::impl___ashlsi3); // __ashlsi3
236
- // CHECK-NEXT: setLibcallImpl(RTLIB::SQRT_F80, RTLIB::impl_sqrtl_f80); // sqrtl
237
- // CHECK-NEXT: setLibcallImpl(RTLIB::SRL_I64, RTLIB::impl___lshrdi3); // __lshrdi3
274
+ // CHECK-NEXT: static const LibcallImplPair LibraryCalls[] = {
275
+ // CHECK-NEXT: {RTLIB::CALLOC, RTLIB::impl_calloc}, // calloc
276
+ // CHECK-NEXT: {RTLIB::SHL_I32, RTLIB::impl___ashlsi3}, // __ashlsi3
277
+ // CHECK-NEXT: {RTLIB::SQRT_F80, RTLIB::impl_sqrtl_f80}, // sqrtl
278
+ // CHECK-NEXT: {RTLIB::SRL_I64, RTLIB::impl___lshrdi3}, // __lshrdi3
279
+ // CHECK-NEXT: };
280
+ // CHECK-EMPTY:
281
+ // CHECK-NEXT: for (const auto [Func, Impl] : LibraryCalls) {
282
+ // CHECK-NEXT: setLibcallImpl(Func, Impl);
283
+ // CHECK-NEXT: }
238
284
// CHECK-EMPTY:
239
285
// CHECK-NEXT: return;
240
286
// CHECK-NEXT: }
0 commit comments