[PATCH] AArch64: Add command line option to select big or little endian
Reid Kleckner
rnk at google.com
Wed Apr 2 13:02:33 PDT 2014
Looks like -mbig-endian and -mlittle-endian are GCC options. We should
implement them for compatibility.
http://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html
I don't think we should add -EL or -EB. They don't fit in with the set of
flags clang currently accepts.
On Fri, Mar 28, 2014 at 1:14 PM, Christian Pirker <cpirker at a-bix.com> wrote:
> Hi All,
>
> I added -EL to select little endian and -EB to select big endian AArch64.
> I also added -mlittle-endian as alias for -EL and -mbig-endian as alias
> for -EB.
>
> Little endian:
> --target=aarch64
> --target=aarch64 -EL
> --target=aarch64 -mlittle-endian
> --target=aarch64_be -EL
> --target=aarch64_be -mlittle-endian
> Big endian:
> --target=aarch64_be
> --target=aarch64 -EB
> --target=aarch64 -mbig-endian
> --target=aarch64_be -EB
> --target=aarch64_be -mbig-endian
>
> Please review.
>
> Thanks,
> Christian
>
>
> http://llvm-reviews.chandlerc.com/D3215
>
> Files:
> include/clang/Driver/Options.td
> lib/Driver/Driver.cpp
> test/Driver/aarch64-cpus.c
>
> Index: include/clang/Driver/Options.td
> ===================================================================
> --- include/clang/Driver/Options.td
> +++ include/clang/Driver/Options.td
> @@ -987,6 +987,7 @@
> def m64 : Flag<["-"], "m64">, Group<m_Group>, Flags<[DriverOption,
> CoreOption]>;
> def mabi_EQ : Joined<["-"], "mabi=">, Group<m_Group>;
> def march_EQ : Joined<["-"], "march=">, Group<m_Group>;
> +def mbig_endian : Flag<["-"], "mbig-endian">, Alias<EB>;
> def mcmodel_EQ : Joined<["-"], "mcmodel=">, Group<m_Group>;
> def mconstant_cfstrings : Flag<["-"], "mconstant-cfstrings">,
> Group<clang_ignored_m_Group>;
> def mcpu_EQ : Joined<["-"], "mcpu=">, Group<m_Group>;
> @@ -1007,6 +1008,7 @@
> def mkernel : Flag<["-"], "mkernel">, Group<m_Group>;
> def mlinker_version_EQ : Joined<["-"], "mlinker-version=">,
> Flags<[DriverOption]>;
> +def mlittle_endian : Flag<["-"], "mlittle-endian">, Alias<EL>;
> def mllvm : Separate<["-"], "mllvm">, Flags<[CC1Option]>,
> HelpText<"Additional arguments to forward to LLVM's option processing">;
> def mmacosx_version_min_EQ : Joined<["-"], "mmacosx-version-min=">,
> Group<m_Group>;
> Index: lib/Driver/Driver.cpp
> ===================================================================
> --- lib/Driver/Driver.cpp
> +++ lib/Driver/Driver.cpp
> @@ -1870,11 +1870,15 @@
> Target.setArch(llvm::Triple::mipsel);
> else if (Target.getArch() == llvm::Triple::mips64)
> Target.setArch(llvm::Triple::mips64el);
> + else if (Target.getArch() == llvm::Triple::aarch64_be)
> + Target.setArch(llvm::Triple::aarch64);
> } else {
> if (Target.getArch() == llvm::Triple::mipsel)
> Target.setArch(llvm::Triple::mips);
> else if (Target.getArch() == llvm::Triple::mips64el)
> Target.setArch(llvm::Triple::mips64);
> + else if (Target.getArch() == llvm::Triple::aarch64)
> + Target.setArch(llvm::Triple::aarch64_be);
> }
> }
>
> Index: test/Driver/aarch64-cpus.c
> ===================================================================
> --- test/Driver/aarch64-cpus.c
> +++ test/Driver/aarch64-cpus.c
> @@ -1,20 +1,44 @@
> // Check target CPUs are correctly passed.
>
> // RUN: %clang -target aarch64 -### -c %s 2>&1 | FileCheck
> -check-prefix=GENERIC %s
> +// RUN: %clang -target aarch64 -mlittle-endian -### -c %s 2>&1 |
> FileCheck -check-prefix=GENERIC %s
> +// RUN: %clang -target aarch64_be -mlittle-endian -### -c %s 2>&1 |
> FileCheck -check-prefix=GENERIC %s
> +// RUN: %clang -target aarch64 -EL -### -c %s 2>&1 | FileCheck
> -check-prefix=GENERIC %s
> +// RUN: %clang -target aarch64_be -EL -### -c %s 2>&1 | FileCheck
> -check-prefix=GENERIC %s
> // GENERIC: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-cpu" "generic"
>
> // RUN: %clang -target aarch64 -mcpu=cortex-a53 -### -c %s 2>&1 |
> FileCheck -check-prefix=CA53 %s
> +// RUN: %clang -target aarch64 -mlittle-endian -mcpu=cortex-a53 -### -c
> %s 2>&1 | FileCheck -check-prefix=CA53 %s
> +// RUN: %clang -target aarch64_be -mlittle-endian -mcpu=cortex-a53 -###
> -c %s 2>&1 | FileCheck -check-prefix=CA53 %s
> +// RUN: %clang -target aarch64 -EL -mcpu=cortex-a53 -### -c %s 2>&1 |
> FileCheck -check-prefix=CA53 %s
> +// RUN: %clang -target aarch64_be -EL -mcpu=cortex-a53 -### -c %s 2>&1 |
> FileCheck -check-prefix=CA53 %s
> // CA53: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-cpu" "cortex-a53"
>
> // RUN: %clang -target aarch64 -mcpu=cortex-a57 -### -c %s 2>&1 |
> FileCheck -check-prefix=CA57 %s
> +// RUN: %clang -target aarch64 -mlittle-endian -mcpu=cortex-a57 -### -c
> %s 2>&1 | FileCheck -check-prefix=CA57 %s
> +// RUN: %clang -target aarch64_be -mlittle-endian -mcpu=cortex-a57 -###
> -c %s 2>&1 | FileCheck -check-prefix=CA57 %s
> +// RUN: %clang -target aarch64 -EL -mcpu=cortex-a57 -### -c %s 2>&1 |
> FileCheck -check-prefix=CA57 %s
> +// RUN: %clang -target aarch64_be -EL -mcpu=cortex-a57 -### -c %s 2>&1 |
> FileCheck -check-prefix=CA57 %s
> // CA57: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-cpu" "cortex-a57"
>
> // RUN: %clang -target aarch64_be -### -c %s 2>&1 | FileCheck
> -check-prefix=GENERIC-BE %s
> +// RUN: %clang -target aarch64 -mbig-endian -### -c %s 2>&1 | FileCheck
> -check-prefix=GENERIC-BE %s
> +// RUN: %clang -target aarch64_be -mbig-endian -### -c %s 2>&1 |
> FileCheck -check-prefix=GENERIC-BE %s
> +// RUN: %clang -target aarch64 -EB -### -c %s 2>&1 | FileCheck
> -check-prefix=GENERIC-BE %s
> +// RUN: %clang -target aarch64_be -EB -### -c %s 2>&1 | FileCheck
> -check-prefix=GENERIC-BE %s
> // GENERIC-BE: "-cc1"{{.*}} "-triple" "aarch64_be{{.*}}" "-target-cpu"
> "generic"
>
> // RUN: %clang -target aarch64_be -mcpu=cortex-a53 -### -c %s 2>&1 |
> FileCheck -check-prefix=CA53-BE %s
> +// RUN: %clang -target aarch64 -mbig-endian -mcpu=cortex-a53 -### -c %s
> 2>&1 | FileCheck -check-prefix=CA53-BE %s
> +// RUN: %clang -target aarch64_be -mbig-endian -mcpu=cortex-a53 -### -c
> %s 2>&1 | FileCheck -check-prefix=CA53-BE %s
> +// RUN: %clang -target aarch64 -EB -mcpu=cortex-a53 -### -c %s 2>&1 |
> FileCheck -check-prefix=CA53-BE %s
> +// RUN: %clang -target aarch64_be -EB -mcpu=cortex-a53 -### -c %s 2>&1 |
> FileCheck -check-prefix=CA53-BE %s
> // CA53-BE: "-cc1"{{.*}} "-triple" "aarch64_be{{.*}}" "-target-cpu"
> "cortex-a53"
>
> // RUN: %clang -target aarch64_be -mcpu=cortex-a57 -### -c %s 2>&1 |
> FileCheck -check-prefix=CA57-BE %s
> +// RUN: %clang -target aarch64 -mbig-endian -mcpu=cortex-a57 -### -c %s
> 2>&1 | FileCheck -check-prefix=CA57-BE %s
> +// RUN: %clang -target aarch64_be -mbig-endian -mcpu=cortex-a57 -### -c
> %s 2>&1 | FileCheck -check-prefix=CA57-BE %s
> +// RUN: %clang -target aarch64 -EB -mcpu=cortex-a57 -### -c %s 2>&1 |
> FileCheck -check-prefix=CA57-BE %s
> +// RUN: %clang -target aarch64_be -EB -mcpu=cortex-a57 -### -c %s 2>&1 |
> FileCheck -check-prefix=CA57-BE %s
> // CA57-BE: "-cc1"{{.*}} "-triple" "aarch64_be{{.*}}" "-target-cpu"
> "cortex-a57"
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140402/7ff72458/attachment.html>
More information about the cfe-commits
mailing list