@@ -190,51 +190,97 @@ def BlahLibrary : SystemRuntimeLibrary<isBlahArch, (add calloc, LibraryWithCondi
190190// CHECK-NEXT: }
191191
192192// 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: };
193197// CHECK-EMPTY:
194198// 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: }
198208// CHECK-EMPTY:
199209// 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: }
202218// CHECK-EMPTY:
203219// CHECK-NEXT: }
204220// CHECK-EMPTY:
205221// 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: }
207229// CHECK-EMPTY:
208230// CHECK-NEXT: }
209231// CHECK-EMPTY:
210232// CHECK-NEXT: return;
211233// CHECK-NEXT: }
212234// CHECK-EMPTY:
213235// 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: }
217245// CHECK-EMPTY:
218246// CHECK-NEXT: return;
219247// CHECK-NEXT: }
220248// CHECK-EMPTY:
221249// 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: }
224258// CHECK-EMPTY:
225259// 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: }
227267// CHECK-EMPTY:
228268// CHECK-NEXT: }
229269// CHECK-EMPTY:
230270// CHECK-NEXT: return;
231271// CHECK-NEXT: }
232272// CHECK-EMPTY:
233273// 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: }
238284// CHECK-EMPTY:
239285// CHECK-NEXT: return;
240286// CHECK-NEXT: }
0 commit comments