mirror of
https://github.com/llvm/llvm-project.git
synced 2025-05-17 13:06:09 +00:00

This patch adds support for the z13 architecture type. For compatibility with GCC, a pair of options -mvx / -mno-vx can be used to selectively enable/disable use of the vector facility. When the vector facility is present, we default to the new vector ABI. This is characterized by two major differences: - Vector types are passed/returned in vector registers (except for unnamed arguments of a variable-argument list function). - Vector types are at most 8-byte aligned. The reason for the choice of 8-byte vector alignment is that the hardware is able to efficiently load vectors at 8-byte alignment, and the ABI only guarantees 8-byte alignment of the stack pointer, so requiring any higher alignment for vectors would require dynamic stack re-alignment code. However, for compatibility with old code that may use vector types, when *not* using the vector facility, the old alignment rules (vector types are naturally aligned) remain in use. These alignment rules are not only implemented at the C language level, but also at the LLVM IR level. This is done by selecting a different DataLayout string depending on whether the vector ABI is in effect or not. Based on a patch by Richard Sandiford. llvm-svn: 236531
27 lines
1.7 KiB
C++
27 lines
1.7 KiB
C++
|
|
// RUN: %clang -target s390x-unknown-linux-gnu %s -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-DEFAULT %s
|
|
// CHECK-DEFAULT-NOT: "-target-feature" "+transactional-execution"
|
|
// CHECK-DEFAULT-NOT: "-target-feature" "-transactional-execution"
|
|
// CHECK-DEFAULT-NOT: "-target-feature" "+vector"
|
|
// CHECK-DEFAULT-NOT: "-target-feature" "-vector"
|
|
|
|
// RUN: %clang -target s390x-unknown-linux-gnu %s -mhtm -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-HTM %s
|
|
// RUN: %clang -target s390x-unknown-linux-gnu %s -mno-htm -mhtm -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-HTM %s
|
|
// CHECK-HTM: "-target-feature" "+transactional-execution"
|
|
// CHECK-HTM-NOT: "-target-feature" "-transactional-execution"
|
|
|
|
// RUN: %clang -target s390x-unknown-linux-gnu %s -mno-htm -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-NOHTM %s
|
|
// RUN: %clang -target s390x-unknown-linux-gnu %s -mhtm -mno-htm -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-NOHTM %s
|
|
// CHECK-NOHTM: "-target-feature" "-transactional-execution"
|
|
// CHECK-NOHTM-NOT: "-target-feature" "+transactional-execution"
|
|
|
|
// RUN: %clang -target s390x-unknown-linux-gnu %s -mvx -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-VX %s
|
|
// RUN: %clang -target s390x-unknown-linux-gnu %s -mno-vx -mvx -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-VX %s
|
|
// CHECK-VX: "-target-feature" "+vector"
|
|
// CHECK-VX-NOT: "-target-feature" "-vector"
|
|
//
|
|
// RUN: %clang -target s390x-unknown-linux-gnu %s -mno-vx -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-NOVX %s
|
|
// RUN: %clang -target s390x-unknown-linux-gnu %s -mvx -mno-vx -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-NOVX %s
|
|
// CHECK-NOVX: "-target-feature" "-vector"
|
|
// CHECK-NOVX-NOT: "-target-feature" "+vector"
|