forked from OSchip/llvm-project
105 lines
5.9 KiB
ArmAsm
105 lines
5.9 KiB
ArmAsm
/// These tests make sure that options passed to the assembler
|
|
/// via -Wa or -Xassembler are applied correctly to assembler inputs.
|
|
/// Also we check that the same priority rules apply to compiler and
|
|
/// assembler options.
|
|
///
|
|
/// Note that the cortex-a8 is armv7-a, the cortex-a32 is armv8-a
|
|
/// and clang's default Arm architecture is armv4t.
|
|
|
|
/// Basic correctness check for how the options behave when passed to the compiler
|
|
// RUN: %clang -target arm-linux-gnueabi -### -c -march=armv7-a %s 2>&1 | \
|
|
// RUN: FileCheck --check-prefix=TRIPLE-ARMV7 %s
|
|
// RUN: %clang -target arm-linux-gnueabi -### -c -march=armv7-a+crc %s 2>&1 | \
|
|
// RUN: FileCheck --check-prefixes=TRIPLE-ARMV7,EXT-CRC %s
|
|
|
|
/// -Wa/-Xassembler doesn't apply to non assembly files
|
|
// RUN: %clang -target arm-linux-gnueabi -### -c -Wa,-march=armv7-a \
|
|
// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck --check-prefix=TRIPLE-ARMV4 %s
|
|
// RUN: %clang -target arm-linux-gnueabi -### -c -Xassembler -march=armv7-a \
|
|
// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck --check-prefix=TRIPLE-ARMV4 %s
|
|
|
|
/// -Wa/-Xassembler does apply to assembler input
|
|
// RUN: %clang -target arm-linux-gnueabi -### -c -Wa,-march=armv7-a %s 2>&1 | \
|
|
// RUN: FileCheck --check-prefix=TRIPLE-ARMV7 %s
|
|
// RUN: %clang -target arm-linux-gnueabi -### -c -Wa,-march=armv7-a+crc %s 2>&1 | \
|
|
// RUN: FileCheck --check-prefixes=TRIPLE-ARMV7,EXT-CRC %s
|
|
// RUN: %clang -target arm-linux-gnueabi -### -c -Xassembler -march=armv7-a %s 2>&1 | \
|
|
// RUN: FileCheck --check-prefix=TRIPLE-ARMV7 %s
|
|
// RUN: %clang -target arm-linux-gnueabi -### -c -Xassembler -march=armv7-a+crc %s 2>&1 | \
|
|
// RUN: FileCheck --check-prefixes=TRIPLE-ARMV7,EXT-CRC %s
|
|
|
|
/// Check that arch name is still canonicalised
|
|
// RUN: %clang -target arm-linux-gnueabi -### -c -Wa,-march=armv7a %s 2>&1 | \
|
|
// RUN: FileCheck --check-prefix=TRIPLE-ARMV7 %s
|
|
// RUN: %clang -target arm-linux-gnueabi -### -c -Xassembler -march=armv7 %s 2>&1 | \
|
|
// RUN: FileCheck --check-prefix=TRIPLE-ARMV7 %s
|
|
|
|
/// march to compiler and assembler, we choose the one suited to the input file type
|
|
// RUN: %clang -target arm-linux-gnueabi -### -c -march=armv8-a -Wa,-march=armv7a %s 2>&1 | \
|
|
// RUN: FileCheck --check-prefix=TRIPLE-ARMV7 %s
|
|
// RUN: %clang -target arm-linux-gnueabi -### -c -march=armv7-a -Wa,-march=armv8-a \
|
|
// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck --check-prefix=TRIPLE-ARMV7 %s
|
|
|
|
/// mcpu to compiler and march to assembler, we use the assembler's architecture for assembly files.
|
|
/// We use the target CPU for both.
|
|
// RUN: %clang -target arm-linux-gnueabi -### -c -mcpu=cortex-a8 -Wa,-march=armv8a %s 2>&1 | \
|
|
// RUN: FileCheck --check-prefixes=TRIPLE-ARMV8,CPU-A8 %s
|
|
// RUN: %clang -target arm-linux-gnueabi -### -c -mcpu=cortex-a8 -Wa,-march=armv8-a \
|
|
// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck --check-prefixes=TRIPLE-ARMV7,CPU-A8 %s
|
|
|
|
/// march to compiler and mcpu to assembler, we use the one that matches the file type
|
|
/// (again both get the target-cpu option either way)
|
|
// RUN: %clang -target arm-linux-gnueabi -### -c -march=armv8a -Wa,-mcpu=cortex-a8 %s 2>&1 | \
|
|
// RUN: FileCheck --check-prefixes=TRIPLE-ARMV7,CPU-A8 %s
|
|
// RUN: %clang -target arm-linux-gnueabi -### -c -march=armv8a -Wa,-mcpu=cortex-a8 \
|
|
// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck --check-prefix=TRIPLE-ARMV8 %s
|
|
|
|
/// march and mcpu to the compiler, mcpu wins
|
|
// RUN: %clang -target arm-linux-gnueabi -### -c -mcpu=cortex-a8 -march=armv8-a %s 2>&1 | \
|
|
// RUN: FileCheck --check-prefixes=TRIPLE-ARMV7,CPU-A8 %s
|
|
/// not dependent on order
|
|
// RUN: %clang -target arm-linux-gnueabi -### -c -march=armv8-a -mcpu=cortex-a8 %s 2>&1 | \
|
|
// RUN: FileCheck --check-prefixes=TRIPLE-ARMV7,CPU-A8 %s
|
|
/// or file type
|
|
// RUN: %clang -target arm-linux-gnueabi -### -c -march=armv8a -mcpu=cortex-a8 \
|
|
// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck --check-prefixes=TRIPLE-ARMV7,CPU-A8 %s
|
|
|
|
/// If we pass mcpu and march to the assembler then mcpu's arch wins
|
|
/// (matches the compiler behaviour)
|
|
// RUN: %clang -target arm-linux-gnueabi -### -c -Wa,-mcpu=cortex-a8 -Wa,-march=armv8-a %s 2>&1 | \
|
|
// RUN: FileCheck --check-prefixes=TRIPLE-ARMV7,CPU-A8 %s
|
|
// RUN: %clang -target arm-linux-gnueabi -### -c -Wa,-mcpu=cortex-a8,-march=armv8-a %s 2>&1 | \
|
|
// RUN: FileCheck --check-prefixes=TRIPLE-ARMV7,CPU-A8 %s
|
|
// RUN: %clang -target arm-linux-gnueabi -### -c -Xassembler -march=armv8-a -Xassembler -mcpu=cortex-a8 \
|
|
// RUN: %s 2>&1 | FileCheck --check-prefixes=TRIPLE-ARMV7,CPU-A8 %s
|
|
|
|
/// Last mcpu to assembler wins
|
|
// RUN: %clang -target arm-linux-gnueabi -### -c -Wa,-mcpu=cortex-a32,-mcpu=cortex-a8 %s 2>&1 | \
|
|
// RUN: FileCheck --check-prefixes=TRIPLE-ARMV7,CPU-A8 %s
|
|
// RUN: %clang -target arm-linux-gnueabi -### -c -Wa,-mcpu=cortex-a32 -Wa,-mcpu=cortex-a8 %s 2>&1 | \
|
|
// RUN: FileCheck --check-prefix=TRIPLE-ARMV7 --check-prefix=CPU-A8 %s
|
|
// RUN: %clang -target arm-linux-gnueabi -### -c -Xassembler -mcpu=cortex-a32 -Xassembler -mcpu=cortex-a8 \
|
|
// RUN: %s 2>&1 | FileCheck --check-prefixes=TRIPLE-ARMV7,CPU-A8 %s
|
|
|
|
/// Last mcpu to compiler wins
|
|
// RUN: %clang -target arm-linux-gnueabi -### -c -mcpu=cortex-a32 -mcpu=cortex-a8 %s 2>&1 | \
|
|
// RUN: FileCheck --check-prefixes=TRIPLE-ARMV7,CPU-A8 %s
|
|
|
|
/// Last march to assembler wins
|
|
// RUN: %clang -target arm-linux-gnueabi -### -c -Wa,-march=armv8-a,-march=armv7-a %s 2>&1 | \
|
|
// RUN: FileCheck --check-prefix=TRIPLE-ARMV7 %s
|
|
// RUN: %clang -target arm-linux-gnueabi -### -c -Wa,-march=armv8-a -Wa,-march=armv7-a %s 2>&1 | \
|
|
// RUN: FileCheck --check-prefix=TRIPLE-ARMV7 %s
|
|
// RUN: %clang -target arm-linux-gnueabi -### -c -Xassembler -march=armv8-a -Xassembler -march=armv7-a \
|
|
// RUN: %s 2>&1 | FileCheck --check-prefix=TRIPLE-ARMV7 %s
|
|
|
|
/// Last march to compiler wins
|
|
// RUN: %clang -target arm-linux-gnueabi -### -c -march=armv8-a -march=armv7-a %s 2>&1 | \
|
|
// RUN: FileCheck --check-prefix=TRIPLE-ARMV7 %s
|
|
|
|
// TRIPLE-ARMV4: "-triple" "armv4t-unknown-linux-gnueabi"
|
|
// TRIPLE-ARMV7: "-triple" "armv7-unknown-linux-gnueabi"
|
|
// TRIPLE-ARMV8: "-triple" "armv8-unknown-linux-gnueabi"
|
|
// CPU-A8: "-target-cpu" "cortex-a8"
|
|
// EXT-CRC: "-target-feature" "+crc"
|