[PATCH] D40476: Switch kryo to use -mcpu=cortex-a57 when invoking the assembler
mcrosier added a comment. In https://reviews.llvm.org/D40476#936700, @mcrosier wrote: > In https://reviews.llvm.org/D40476#936372, @pirama wrote: > > > Thanks for the review. Now let's just hope the windows bots stay happy :) > > > Actually, I just checked and it looks like falkor and saphira were both added > as of a few weeks ago. I'll revert this part of the patch shortly. Done so in r319323. Repository: rL LLVM https://reviews.llvm.org/D40476 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D40476: Switch kryo to use -mcpu=cortex-a57 when invoking the assembler
mcrosier added a comment. In https://reviews.llvm.org/D40476#936372, @pirama wrote: > Thanks for the review. Now let's just hope the windows bots stay happy :) Actually, I just checked and it looks like falkor and saphira were both added as of a few weeks ago. I'll revert this part of the patch shortly. Repository: rL LLVM https://reviews.llvm.org/D40476 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D40476: Switch kryo to use -mcpu=cortex-a57 when invoking the assembler
This revision was automatically updated to reflect the committed changes. Closed by commit rL319077: Switch CPU names not recognized by GNU assembler (authored by pirama). Repository: rL LLVM https://reviews.llvm.org/D40476 Files: cfe/trunk/lib/Driver/ToolChains/Gnu.cpp cfe/trunk/test/Driver/as-mcpu.c Index: cfe/trunk/lib/Driver/ToolChains/Gnu.cpp === --- cfe/trunk/lib/Driver/ToolChains/Gnu.cpp +++ cfe/trunk/lib/Driver/ToolChains/Gnu.cpp @@ -42,6 +42,24 @@ !O.hasFlag(options::DriverOption) && !O.hasFlag(options::LinkerInput); } +// Switch CPU names not recognized by GNU assembler to a close CPU that it does +// recognize, instead of a lower march from being picked in the absence of a cpu +// flag. +static void normalizeCPUNamesForAssembler(const ArgList , + ArgStringList ) { + if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) { +StringRef CPUArg(A->getValue()); +if (CPUArg.equals_lower("krait")) + CmdArgs.push_back("-mcpu=cortex-a15"); +else if(CPUArg.equals_lower("kryo") || +CPUArg.equals_lower("falkor") || +CPUArg.equals_lower("saphira")) + CmdArgs.push_back("-mcpu=cortex-a57"); +else + Args.AddLastArg(CmdArgs, options::OPT_mcpu_EQ); + } +} + void tools::gcc::Common::ConstructJob(Compilation , const JobAction , const InputInfo , const InputInfoList , @@ -652,23 +670,16 @@ } Args.AddLastArg(CmdArgs, options::OPT_march_EQ); +normalizeCPUNamesForAssembler(Args, CmdArgs); -// FIXME: remove krait check when GNU tools support krait cpu -// for now replace it with -mcpu=cortex-a15 to avoid a lower -// march from being picked in the absence of a cpu flag. -Arg *A; -if ((A = Args.getLastArg(options::OPT_mcpu_EQ)) && -StringRef(A->getValue()).equals_lower("krait")) - CmdArgs.push_back("-mcpu=cortex-a15"); -else - Args.AddLastArg(CmdArgs, options::OPT_mcpu_EQ); Args.AddLastArg(CmdArgs, options::OPT_mfpu_EQ); break; } case llvm::Triple::aarch64: case llvm::Triple::aarch64_be: { Args.AddLastArg(CmdArgs, options::OPT_march_EQ); -Args.AddLastArg(CmdArgs, options::OPT_mcpu_EQ); +normalizeCPUNamesForAssembler(Args, CmdArgs); + break; } case llvm::Triple::mips: Index: cfe/trunk/test/Driver/as-mcpu.c === --- cfe/trunk/test/Driver/as-mcpu.c +++ cfe/trunk/test/Driver/as-mcpu.c @@ -0,0 +1,17 @@ +// == Check that krait is substituted by cortex-a15 when invoking +// the assembler +// RUN: %clang -target arm-linux -mcpu=krait -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A15 %s +// CHECK-CORTEX-A15: as{{(.exe)?}}" "{{.*}}-mcpu=cortex-a15 + +// == Check that kryo is substituted by cortex-a57 when invoking +// the assembler +// RUN: %clang -target arm-linux -mcpu=kryo -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A57 %s +// RUN: %clang -target aarch64-linux -mcpu=kryo -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A57 %s + +// RUN: %clang -target arm-linux -mcpu=falkor -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A57 %s +// RUN: %clang -target aarch64-linux -mcpu=falkor -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A57 %s + +// RUN: %clang -target arm-linux -mcpu=saphira -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A57 %s +// RUN: %clang -target aarch64-linux -mcpu=saphira -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A57 %s + +// CHECK-CORTEX-A57: as{{(.exe)?}}" "{{.*}}-mcpu=cortex-a57 Index: cfe/trunk/lib/Driver/ToolChains/Gnu.cpp === --- cfe/trunk/lib/Driver/ToolChains/Gnu.cpp +++ cfe/trunk/lib/Driver/ToolChains/Gnu.cpp @@ -42,6 +42,24 @@ !O.hasFlag(options::DriverOption) && !O.hasFlag(options::LinkerInput); } +// Switch CPU names not recognized by GNU assembler to a close CPU that it does +// recognize, instead of a lower march from being picked in the absence of a cpu +// flag. +static void normalizeCPUNamesForAssembler(const ArgList , + ArgStringList ) { + if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) { +StringRef CPUArg(A->getValue()); +if (CPUArg.equals_lower("krait")) + CmdArgs.push_back("-mcpu=cortex-a15"); +else if(CPUArg.equals_lower("kryo") || +CPUArg.equals_lower("falkor") || +CPUArg.equals_lower("saphira")) + CmdArgs.push_back("-mcpu=cortex-a57"); +else + Args.AddLastArg(CmdArgs, options::OPT_mcpu_EQ); + } +} + void
[PATCH] D40476: Switch kryo to use -mcpu=cortex-a57 when invoking the assembler
pirama updated this revision to Diff 124417. pirama added a comment. Normalize falkor and saphira as well. https://reviews.llvm.org/D40476 Files: lib/Driver/ToolChains/Gnu.cpp test/Driver/as-mcpu.c Index: test/Driver/as-mcpu.c === --- /dev/null +++ test/Driver/as-mcpu.c @@ -0,0 +1,17 @@ +// == Check that krait is substituted by cortex-a15 when invoking +// the assembler +// RUN: %clang -target arm-linux -mcpu=krait -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A15 %s +// CHECK-CORTEX-A15: as{{(.exe)?}}" "{{.*}}-mcpu=cortex-a15 + +// == Check that kryo is substituted by cortex-a57 when invoking +// the assembler +// RUN: %clang -target arm-linux -mcpu=kryo -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A57 %s +// RUN: %clang -target aarch64-linux -mcpu=kryo -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A57 %s + +// RUN: %clang -target arm-linux -mcpu=falkor -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A57 %s +// RUN: %clang -target aarch64-linux -mcpu=falkor -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A57 %s + +// RUN: %clang -target arm-linux -mcpu=saphira -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A57 %s +// RUN: %clang -target aarch64-linux -mcpu=saphira -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A57 %s + +// CHECK-CORTEX-A57: as{{(.exe)?}}" "{{.*}}-mcpu=cortex-a57 Index: lib/Driver/ToolChains/Gnu.cpp === --- lib/Driver/ToolChains/Gnu.cpp +++ lib/Driver/ToolChains/Gnu.cpp @@ -42,6 +42,24 @@ !O.hasFlag(options::DriverOption) && !O.hasFlag(options::LinkerInput); } +// Switch CPU names not recognized by GNU assembler to a close CPU that it does +// recognize, instead of a lower march from being picked in the absence of a cpu +// flag. +static void normalizeCPUNamesForAssembler(const ArgList , + ArgStringList ) { + if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) { +StringRef CPUArg(A->getValue()); +if (CPUArg.equals_lower("krait")) + CmdArgs.push_back("-mcpu=cortex-a15"); +else if(CPUArg.equals_lower("kryo") || +CPUArg.equals_lower("falkor") || +CPUArg.equals_lower("saphira")) + CmdArgs.push_back("-mcpu=cortex-a57"); +else + Args.AddLastArg(CmdArgs, options::OPT_mcpu_EQ); + } +} + void tools::gcc::Common::ConstructJob(Compilation , const JobAction , const InputInfo , const InputInfoList , @@ -652,23 +670,16 @@ } Args.AddLastArg(CmdArgs, options::OPT_march_EQ); +normalizeCPUNamesForAssembler(Args, CmdArgs); -// FIXME: remove krait check when GNU tools support krait cpu -// for now replace it with -mcpu=cortex-a15 to avoid a lower -// march from being picked in the absence of a cpu flag. -Arg *A; -if ((A = Args.getLastArg(options::OPT_mcpu_EQ)) && -StringRef(A->getValue()).equals_lower("krait")) - CmdArgs.push_back("-mcpu=cortex-a15"); -else - Args.AddLastArg(CmdArgs, options::OPT_mcpu_EQ); Args.AddLastArg(CmdArgs, options::OPT_mfpu_EQ); break; } case llvm::Triple::aarch64: case llvm::Triple::aarch64_be: { Args.AddLastArg(CmdArgs, options::OPT_march_EQ); -Args.AddLastArg(CmdArgs, options::OPT_mcpu_EQ); +normalizeCPUNamesForAssembler(Args, CmdArgs); + break; } case llvm::Triple::mips: Index: test/Driver/as-mcpu.c === --- /dev/null +++ test/Driver/as-mcpu.c @@ -0,0 +1,17 @@ +// == Check that krait is substituted by cortex-a15 when invoking +// the assembler +// RUN: %clang -target arm-linux -mcpu=krait -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A15 %s +// CHECK-CORTEX-A15: as{{(.exe)?}}" "{{.*}}-mcpu=cortex-a15 + +// == Check that kryo is substituted by cortex-a57 when invoking +// the assembler +// RUN: %clang -target arm-linux -mcpu=kryo -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A57 %s +// RUN: %clang -target aarch64-linux -mcpu=kryo -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A57 %s + +// RUN: %clang -target arm-linux -mcpu=falkor -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A57 %s +// RUN: %clang -target aarch64-linux -mcpu=falkor -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A57 %s + +// RUN: %clang -target arm-linux -mcpu=saphira -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A57 %s +// RUN: %clang -target aarch64-linux
[PATCH] D40476: Switch kryo to use -mcpu=cortex-a57 when invoking the assembler
mcrosier added a comment. Am I correct in assuming this is going to be a problem for Falkor and Saphira as well? If so, can you add solutions for those as well? Cortex-a57 should be good enough for those targets as well. https://reviews.llvm.org/D40476 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D40476: Switch kryo to use -mcpu=cortex-a57 when invoking the assembler
pirama updated this revision to Diff 124415. pirama added a comment. Sink 'Arg *' declaration. https://reviews.llvm.org/D40476 Files: lib/Driver/ToolChains/Gnu.cpp test/Driver/as-mcpu.c Index: test/Driver/as-mcpu.c === --- /dev/null +++ test/Driver/as-mcpu.c @@ -0,0 +1,10 @@ +// == Check that krait is substituted by cortex-a15 when invoking +// the assembler +// RUN: %clang -target arm-linux -mcpu=krait -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A15 %s +// CHECK-CORTEX-A15: as{{(.exe)?}}" "{{.*}}-mcpu=cortex-a15 + +// == Check that kryo is substituted by cortex-a57 when invoking +// the assembler +// RUN: %clang -target arm-linux -mcpu=kryo -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A57 %s +// RUN: %clang -target aarch64-linux -mcpu=kryo -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A57 %s +// CHECK-CORTEX-A57: as{{(.exe)?}}" "{{.*}}-mcpu=cortex-a57 Index: lib/Driver/ToolChains/Gnu.cpp === --- lib/Driver/ToolChains/Gnu.cpp +++ lib/Driver/ToolChains/Gnu.cpp @@ -653,22 +653,35 @@ Args.AddLastArg(CmdArgs, options::OPT_march_EQ); -// FIXME: remove krait check when GNU tools support krait cpu -// for now replace it with -mcpu=cortex-a15 to avoid a lower -// march from being picked in the absence of a cpu flag. -Arg *A; -if ((A = Args.getLastArg(options::OPT_mcpu_EQ)) && -StringRef(A->getValue()).equals_lower("krait")) - CmdArgs.push_back("-mcpu=cortex-a15"); -else - Args.AddLastArg(CmdArgs, options::OPT_mcpu_EQ); +// FIXME: remove krait and kryo checks when GNU tools support them. For now +// use -mcpu=cortex-a15 for krait and -mcpu=cortex-a57 for kryo +// -mcpu=cortex-a57 to avoid a lower march from being picked in the absence +// of a cpu flag. +if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) { + StringRef CPUArg(A->getValue()); + if(CPUArg.equals_lower("krait")) +CmdArgs.push_back("-mcpu=cortex-a15"); + else if(CPUArg.equals_lower("kryo")) +CmdArgs.push_back("-mcpu=cortex-a57"); + else +Args.AddLastArg(CmdArgs, options::OPT_mcpu_EQ); +} Args.AddLastArg(CmdArgs, options::OPT_mfpu_EQ); break; } case llvm::Triple::aarch64: case llvm::Triple::aarch64_be: { Args.AddLastArg(CmdArgs, options::OPT_march_EQ); -Args.AddLastArg(CmdArgs, options::OPT_mcpu_EQ); + +// FIXME: remove kryo check when GNU tools support them. For now use +// -mcpu=cortex-a57 to avoid a lower march from being picked in the absence +// of a cpu flag. +Arg *A; +if ((A = Args.getLastArg(options::OPT_mcpu_EQ)) && +(StringRef(A->getValue()).equals_lower("kryo"))) + CmdArgs.push_back("-mcpu=cortex-a57"); +else + Args.AddLastArg(CmdArgs, options::OPT_mcpu_EQ); break; } case llvm::Triple::mips: Index: test/Driver/as-mcpu.c === --- /dev/null +++ test/Driver/as-mcpu.c @@ -0,0 +1,10 @@ +// == Check that krait is substituted by cortex-a15 when invoking +// the assembler +// RUN: %clang -target arm-linux -mcpu=krait -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A15 %s +// CHECK-CORTEX-A15: as{{(.exe)?}}" "{{.*}}-mcpu=cortex-a15 + +// == Check that kryo is substituted by cortex-a57 when invoking +// the assembler +// RUN: %clang -target arm-linux -mcpu=kryo -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A57 %s +// RUN: %clang -target aarch64-linux -mcpu=kryo -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A57 %s +// CHECK-CORTEX-A57: as{{(.exe)?}}" "{{.*}}-mcpu=cortex-a57 Index: lib/Driver/ToolChains/Gnu.cpp === --- lib/Driver/ToolChains/Gnu.cpp +++ lib/Driver/ToolChains/Gnu.cpp @@ -653,22 +653,35 @@ Args.AddLastArg(CmdArgs, options::OPT_march_EQ); -// FIXME: remove krait check when GNU tools support krait cpu -// for now replace it with -mcpu=cortex-a15 to avoid a lower -// march from being picked in the absence of a cpu flag. -Arg *A; -if ((A = Args.getLastArg(options::OPT_mcpu_EQ)) && -StringRef(A->getValue()).equals_lower("krait")) - CmdArgs.push_back("-mcpu=cortex-a15"); -else - Args.AddLastArg(CmdArgs, options::OPT_mcpu_EQ); +// FIXME: remove krait and kryo checks when GNU tools support them. For now +// use -mcpu=cortex-a15 for krait and -mcpu=cortex-a57 for kryo +// -mcpu=cortex-a57 to avoid a lower march from being picked in the absence +// of a cpu flag. +if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) { + StringRef CPUArg(A->getValue()); +
[PATCH] D40476: Switch kryo to use -mcpu=cortex-a57 when invoking the assembler
srhines added inline comments. Comment at: lib/Driver/ToolChains/Gnu.cpp:661 Arg *A; -if ((A = Args.getLastArg(options::OPT_mcpu_EQ)) && -StringRef(A->getValue()).equals_lower("krait")) - CmdArgs.push_back("-mcpu=cortex-a15"); -else - Args.AddLastArg(CmdArgs, options::OPT_mcpu_EQ); +if ((A = Args.getLastArg(options::OPT_mcpu_EQ))) { + StringRef CPUArg(A->getValue()); Arg *A can also get moved here. https://reviews.llvm.org/D40476 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D40476: Switch kryo to use -mcpu=cortex-a57 when invoking the assembler
pirama updated this revision to Diff 124410. pirama added a comment. Address review comments. https://reviews.llvm.org/D40476 Files: lib/Driver/ToolChains/Gnu.cpp test/Driver/as-mcpu.c Index: test/Driver/as-mcpu.c === --- /dev/null +++ test/Driver/as-mcpu.c @@ -0,0 +1,10 @@ +// == Check that krait is substituted by cortex-a15 when invoking +// the assembler +// RUN: %clang -target arm-linux -mcpu=krait -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A15 %s +// CHECK-CORTEX-A15: as{{(.exe)?}}" "{{.*}}-mcpu=cortex-a15 + +// == Check that kryo is substituted by cortex-a57 when invoking +// the assembler +// RUN: %clang -target arm-linux -mcpu=kryo -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A57 %s +// RUN: %clang -target aarch64-linux -mcpu=kryo -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A57 %s +// CHECK-CORTEX-A57: as{{(.exe)?}}" "{{.*}}-mcpu=cortex-a57 Index: lib/Driver/ToolChains/Gnu.cpp === --- lib/Driver/ToolChains/Gnu.cpp +++ lib/Driver/ToolChains/Gnu.cpp @@ -653,22 +653,36 @@ Args.AddLastArg(CmdArgs, options::OPT_march_EQ); -// FIXME: remove krait check when GNU tools support krait cpu -// for now replace it with -mcpu=cortex-a15 to avoid a lower -// march from being picked in the absence of a cpu flag. +// FIXME: remove krait and kryo checks when GNU tools support them. For now +// use -mcpu=cortex-a15 for krait and -mcpu=cortex-a57 for kryo +// -mcpu=cortex-a57 to avoid a lower march from being picked in the absence +// of a cpu flag. Arg *A; -if ((A = Args.getLastArg(options::OPT_mcpu_EQ)) && -StringRef(A->getValue()).equals_lower("krait")) - CmdArgs.push_back("-mcpu=cortex-a15"); -else - Args.AddLastArg(CmdArgs, options::OPT_mcpu_EQ); +if ((A= Args.getLastArg(options::OPT_mcpu_EQ))) { + StringRef CPUArg(A->getValue()); + if(CPUArg.equals_lower("krait")) +CmdArgs.push_back("-mcpu=cortex-a15"); + else if(CPUArg.equals_lower("kryo")) +CmdArgs.push_back("-mcpu=cortex-a57"); + else +Args.AddLastArg(CmdArgs, options::OPT_mcpu_EQ); +} Args.AddLastArg(CmdArgs, options::OPT_mfpu_EQ); break; } case llvm::Triple::aarch64: case llvm::Triple::aarch64_be: { Args.AddLastArg(CmdArgs, options::OPT_march_EQ); -Args.AddLastArg(CmdArgs, options::OPT_mcpu_EQ); + +// FIXME: remove kryo check when GNU tools support them. For now use +// -mcpu=cortex-a57 to avoid a lower march from being picked in the absence +// of a cpu flag. +Arg *A; +if ((A = Args.getLastArg(options::OPT_mcpu_EQ)) && +(StringRef(A->getValue()).equals_lower("kryo"))) + CmdArgs.push_back("-mcpu=cortex-a57"); +else + Args.AddLastArg(CmdArgs, options::OPT_mcpu_EQ); break; } case llvm::Triple::mips: Index: test/Driver/as-mcpu.c === --- /dev/null +++ test/Driver/as-mcpu.c @@ -0,0 +1,10 @@ +// == Check that krait is substituted by cortex-a15 when invoking +// the assembler +// RUN: %clang -target arm-linux -mcpu=krait -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A15 %s +// CHECK-CORTEX-A15: as{{(.exe)?}}" "{{.*}}-mcpu=cortex-a15 + +// == Check that kryo is substituted by cortex-a57 when invoking +// the assembler +// RUN: %clang -target arm-linux -mcpu=kryo -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A57 %s +// RUN: %clang -target aarch64-linux -mcpu=kryo -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A57 %s +// CHECK-CORTEX-A57: as{{(.exe)?}}" "{{.*}}-mcpu=cortex-a57 Index: lib/Driver/ToolChains/Gnu.cpp === --- lib/Driver/ToolChains/Gnu.cpp +++ lib/Driver/ToolChains/Gnu.cpp @@ -653,22 +653,36 @@ Args.AddLastArg(CmdArgs, options::OPT_march_EQ); -// FIXME: remove krait check when GNU tools support krait cpu -// for now replace it with -mcpu=cortex-a15 to avoid a lower -// march from being picked in the absence of a cpu flag. +// FIXME: remove krait and kryo checks when GNU tools support them. For now +// use -mcpu=cortex-a15 for krait and -mcpu=cortex-a57 for kryo +// -mcpu=cortex-a57 to avoid a lower march from being picked in the absence +// of a cpu flag. Arg *A; -if ((A = Args.getLastArg(options::OPT_mcpu_EQ)) && -StringRef(A->getValue()).equals_lower("krait")) - CmdArgs.push_back("-mcpu=cortex-a15"); -else - Args.AddLastArg(CmdArgs, options::OPT_mcpu_EQ); +if ((A= Args.getLastArg(options::OPT_mcpu_EQ))) { + StringRef CPUArg(A->getValue()); +
[PATCH] D40476: Switch kryo to use -mcpu=cortex-a57 when invoking the assembler
srhines added inline comments. Comment at: lib/Driver/ToolChains/Gnu.cpp:660 +// of a cpu flag. +Arg *A = Args.getLastArg(options::OPT_mcpu_EQ); +if (A) { Is it better to sink A into the if condition again? Comment at: test/Driver/as-mcpu.c:1 +// == Check that krait is substituted by cortex-15 when invoking +// the assembler cortex-a15 - this is missing the "a". Comment at: test/Driver/as-mcpu.c:6 + +// == Check that kryo is substituted by cortex-57 when invoking +// the assembler cortex-a57 https://reviews.llvm.org/D40476 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D40476: Switch kryo to use -mcpu=cortex-a57 when invoking the assembler
pirama updated this revision to Diff 124318. pirama added a comment. Few refactorings. https://reviews.llvm.org/D40476 Files: lib/Driver/ToolChains/Gnu.cpp test/Driver/as-mcpu.c Index: test/Driver/as-mcpu.c === --- /dev/null +++ test/Driver/as-mcpu.c @@ -0,0 +1,10 @@ +// == Check that krait is substituted by cortex-15 when invoking +// the assembler +// RUN: %clang -target arm-linux -mcpu=krait -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A15 %s +// CHECK-CORTEX-A15: as{{(.exe)?}}" "{{.*}}-mcpu=cortex-a15 + +// == Check that kryo is substituted by cortex-57 when invoking +// the assembler +// RUN: %clang -target arm-linux -mcpu=kryo -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A57 %s +// RUN: %clang -target aarch64-linux -mcpu=kryo -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A57 %s +// CHECK-CORTEX-A57: as{{(.exe)?}}" "{{.*}}-mcpu=cortex-a57 Index: lib/Driver/ToolChains/Gnu.cpp === --- lib/Driver/ToolChains/Gnu.cpp +++ lib/Driver/ToolChains/Gnu.cpp @@ -653,22 +653,36 @@ Args.AddLastArg(CmdArgs, options::OPT_march_EQ); -// FIXME: remove krait check when GNU tools support krait cpu -// for now replace it with -mcpu=cortex-a15 to avoid a lower -// march from being picked in the absence of a cpu flag. -Arg *A; -if ((A = Args.getLastArg(options::OPT_mcpu_EQ)) && -StringRef(A->getValue()).equals_lower("krait")) - CmdArgs.push_back("-mcpu=cortex-a15"); -else - Args.AddLastArg(CmdArgs, options::OPT_mcpu_EQ); +// FIXME: remove krait and kryo checks when GNU tools support them. For now +// use -mcpu=cortex-a15 for krait and -mcpu=cortex-a57 for kryo +// -mcpu=cortex-a57 to avoid a lower march from being picked in the absence +// of a cpu flag. +Arg *A = Args.getLastArg(options::OPT_mcpu_EQ); +if (A) { + StringRef CPUArg(A->getValue()); + if(CPUArg.equals_lower("krait")) +CmdArgs.push_back("-mcpu=cortex-a15"); + else if(CPUArg.equals_lower("kryo")) +CmdArgs.push_back("-mcpu=cortex-a57"); + else +Args.AddLastArg(CmdArgs, options::OPT_mcpu_EQ); +} Args.AddLastArg(CmdArgs, options::OPT_mfpu_EQ); break; } case llvm::Triple::aarch64: case llvm::Triple::aarch64_be: { Args.AddLastArg(CmdArgs, options::OPT_march_EQ); -Args.AddLastArg(CmdArgs, options::OPT_mcpu_EQ); + +// FIXME: remove kryo check when GNU tools support them. For now use +// -mcpu=cortex-a57 to avoid a lower march from being picked in the absence +// of a cpu flag. +Arg *A; +if ((A = Args.getLastArg(options::OPT_mcpu_EQ)) && +(StringRef(A->getValue()).equals_lower("kryo"))) + CmdArgs.push_back("-mcpu=cortex-a57"); +else + Args.AddLastArg(CmdArgs, options::OPT_mcpu_EQ); break; } case llvm::Triple::mips: Index: test/Driver/as-mcpu.c === --- /dev/null +++ test/Driver/as-mcpu.c @@ -0,0 +1,10 @@ +// == Check that krait is substituted by cortex-15 when invoking +// the assembler +// RUN: %clang -target arm-linux -mcpu=krait -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A15 %s +// CHECK-CORTEX-A15: as{{(.exe)?}}" "{{.*}}-mcpu=cortex-a15 + +// == Check that kryo is substituted by cortex-57 when invoking +// the assembler +// RUN: %clang -target arm-linux -mcpu=kryo -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A57 %s +// RUN: %clang -target aarch64-linux -mcpu=kryo -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A57 %s +// CHECK-CORTEX-A57: as{{(.exe)?}}" "{{.*}}-mcpu=cortex-a57 Index: lib/Driver/ToolChains/Gnu.cpp === --- lib/Driver/ToolChains/Gnu.cpp +++ lib/Driver/ToolChains/Gnu.cpp @@ -653,22 +653,36 @@ Args.AddLastArg(CmdArgs, options::OPT_march_EQ); -// FIXME: remove krait check when GNU tools support krait cpu -// for now replace it with -mcpu=cortex-a15 to avoid a lower -// march from being picked in the absence of a cpu flag. -Arg *A; -if ((A = Args.getLastArg(options::OPT_mcpu_EQ)) && -StringRef(A->getValue()).equals_lower("krait")) - CmdArgs.push_back("-mcpu=cortex-a15"); -else - Args.AddLastArg(CmdArgs, options::OPT_mcpu_EQ); +// FIXME: remove krait and kryo checks when GNU tools support them. For now +// use -mcpu=cortex-a15 for krait and -mcpu=cortex-a57 for kryo +// -mcpu=cortex-a57 to avoid a lower march from being picked in the absence +// of a cpu flag. +Arg *A = Args.getLastArg(options::OPT_mcpu_EQ); +if (A) { + StringRef CPUArg(A->getValue()); +
[PATCH] D40476: Switch kryo to use -mcpu=cortex-a57 when invoking the assembler
pirama created this revision. Using -no-integrated-as causes -mcpu=kryo to fail since GNU assembler doesn't recognize kryo. Cortex-a57 is the closest CPU to kryo that the assembler does recognize. So we should switch the assembler to use that instead. https://reviews.llvm.org/D40476 Files: lib/Driver/ToolChains/Gnu.cpp test/Driver/as-mcpu.c Index: test/Driver/as-mcpu.c === --- /dev/null +++ test/Driver/as-mcpu.c @@ -0,0 +1,10 @@ +// == Check that krait is substituted by cortex-15 when invoking +// the assembler +// RUN: %clang -target arm-linux -mcpu=krait -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A15 %s +// CHECK-CORTEX-A15: bin/as{{.*}}-mcpu=cortex-a15 + +// == Check that kryo is substituted by cortex-57 when invoking +// the assembler +// RUN: %clang -target arm-linux -mcpu=kryo -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A57 %s +// RUN: %clang -target aarch64-linux -mcpu=kryo -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A57 %s +// CHECK-CORTEX-A57: bin/as{{.*}}-mcpu=cortex-a57 Index: lib/Driver/ToolChains/Gnu.cpp === --- lib/Driver/ToolChains/Gnu.cpp +++ lib/Driver/ToolChains/Gnu.cpp @@ -653,22 +653,35 @@ Args.AddLastArg(CmdArgs, options::OPT_march_EQ); -// FIXME: remove krait check when GNU tools support krait cpu -// for now replace it with -mcpu=cortex-a15 to avoid a lower -// march from being picked in the absence of a cpu flag. -Arg *A; -if ((A = Args.getLastArg(options::OPT_mcpu_EQ)) && -StringRef(A->getValue()).equals_lower("krait")) - CmdArgs.push_back("-mcpu=cortex-a15"); -else - Args.AddLastArg(CmdArgs, options::OPT_mcpu_EQ); +// FIXME: remove krait and kryo checks when GNU tools support them. For now +// use -mcpu=cortex-a15 for krait and -mcpu=cortex-a57 for kryo +// -mcpu=cortex-a57 to avoid a lower march from being picked in the absence +// of a cpu flag. +Arg *A = Args.getLastArg(options::OPT_mcpu_EQ); +if (A) { + if(StringRef(A->getValue()).equals_lower("krait")) +CmdArgs.push_back("-mcpu=cortex-a15"); + else if(StringRef(A->getValue()).equals_lower("kryo")) +CmdArgs.push_back("-mcpu=cortex-a57"); + else +Args.AddLastArg(CmdArgs, options::OPT_mcpu_EQ); +} Args.AddLastArg(CmdArgs, options::OPT_mfpu_EQ); break; } case llvm::Triple::aarch64: case llvm::Triple::aarch64_be: { Args.AddLastArg(CmdArgs, options::OPT_march_EQ); -Args.AddLastArg(CmdArgs, options::OPT_mcpu_EQ); + +// FIXME: remove kryo check when GNU tools support them. For now use +// -mcpu=cortex-a57 to avoid a lower march from being picked in the absence +// of a cpu flag. +Arg *A; +if ((A = Args.getLastArg(options::OPT_mcpu_EQ)) && +(StringRef(A->getValue()).equals_lower("kryo"))) + CmdArgs.push_back("-mcpu=cortex-a57"); +else + Args.AddLastArg(CmdArgs, options::OPT_mcpu_EQ); break; } case llvm::Triple::mips: Index: test/Driver/as-mcpu.c === --- /dev/null +++ test/Driver/as-mcpu.c @@ -0,0 +1,10 @@ +// == Check that krait is substituted by cortex-15 when invoking +// the assembler +// RUN: %clang -target arm-linux -mcpu=krait -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A15 %s +// CHECK-CORTEX-A15: bin/as{{.*}}-mcpu=cortex-a15 + +// == Check that kryo is substituted by cortex-57 when invoking +// the assembler +// RUN: %clang -target arm-linux -mcpu=kryo -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A57 %s +// RUN: %clang -target aarch64-linux -mcpu=kryo -### -c %s -v -fno-integrated-as 2>&1 | FileCheck -check-prefix=CHECK-CORTEX-A57 %s +// CHECK-CORTEX-A57: bin/as{{.*}}-mcpu=cortex-a57 Index: lib/Driver/ToolChains/Gnu.cpp === --- lib/Driver/ToolChains/Gnu.cpp +++ lib/Driver/ToolChains/Gnu.cpp @@ -653,22 +653,35 @@ Args.AddLastArg(CmdArgs, options::OPT_march_EQ); -// FIXME: remove krait check when GNU tools support krait cpu -// for now replace it with -mcpu=cortex-a15 to avoid a lower -// march from being picked in the absence of a cpu flag. -Arg *A; -if ((A = Args.getLastArg(options::OPT_mcpu_EQ)) && -StringRef(A->getValue()).equals_lower("krait")) - CmdArgs.push_back("-mcpu=cortex-a15"); -else - Args.AddLastArg(CmdArgs, options::OPT_mcpu_EQ); +// FIXME: remove krait and kryo checks when GNU tools support them. For now +// use -mcpu=cortex-a15 for krait and -mcpu=cortex-a57 for kryo +// -mcpu=cortex-a57 to avoid a lower march from being picked in the absence +// of a