diff options
| author | Ahmed Bougacha <ahmed.bougacha@gmail.com> | 2015-08-27 22:30:38 +0000 |
|---|---|---|
| committer | Ahmed Bougacha <ahmed.bougacha@gmail.com> | 2015-08-27 22:30:38 +0000 |
| commit | 82b619ea680d46bf64f077dfe2041907a5dfc2be (patch) | |
| tree | fbb9215e9619100493279a1662e54dc335045474 /clang/test/CodeGen/vector-alignment.c | |
| parent | 68bf64e302b5fb87a1943101828a489b5ca1fc46 (diff) | |
| download | bcm5719-llvm-82b619ea680d46bf64f077dfe2041907a5dfc2be.tar.gz bcm5719-llvm-82b619ea680d46bf64f077dfe2041907a5dfc2be.zip | |
[X86] Conditionalize Darwin MaxVectorAlign on the presence of AVX.
There's no point in using a larger alignment if we have no instructions
that would benefit from it.
Differential Revision: http://reviews.llvm.org/D12389
llvm-svn: 246229
Diffstat (limited to 'clang/test/CodeGen/vector-alignment.c')
| -rw-r--r-- | clang/test/CodeGen/vector-alignment.c | 39 |
1 files changed, 26 insertions, 13 deletions
diff --git a/clang/test/CodeGen/vector-alignment.c b/clang/test/CodeGen/vector-alignment.c index 92d1ae73f9e..f8211d8e5e7 100644 --- a/clang/test/CodeGen/vector-alignment.c +++ b/clang/test/CodeGen/vector-alignment.c @@ -1,38 +1,51 @@ -// RUN: %clang_cc1 -w -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s +// RUN: %clang_cc1 -w -triple x86_64-apple-darwin10 \ +// RUN: -emit-llvm -o - %s | FileCheck %s --check-prefix=ALL --check-prefix=SSE +// RUN: %clang_cc1 -w -triple i386-apple-darwin10 \ +// RUN: -emit-llvm -o - %s | FileCheck %s --check-prefix=ALL --check-prefix=SSE +// RUN: %clang_cc1 -w -triple x86_64-apple-darwin10 -target-feature +avx \ +// RUN: -emit-llvm -o - %s | FileCheck %s --check-prefix=ALL --check-prefix=AVX +// RUN: %clang_cc1 -w -triple i386-apple-darwin10 -target-feature +avx \ +// RUN: -emit-llvm -o - %s | FileCheck %s --check-prefix=ALL --check-prefix=AVX // rdar://11759609 // At or below target max alignment with no aligned attribute should align based // on the size of vector. double __attribute__((vector_size(16))) v1; -// CHECK: @v1 {{.*}}, align 16 +// SSE: @v1 {{.*}}, align 16 +// AVX: @v1 {{.*}}, align 16 double __attribute__((vector_size(32))) v2; -// CHECK: @v2 {{.*}}, align 32 +// SSE: @v2 {{.*}}, align 16 +// AVX: @v2 {{.*}}, align 32 // Alignment above target max alignment with no aligned attribute should align // based on the target max. double __attribute__((vector_size(64))) v3; -// CHECK: @v3 {{.*}}, align 32 +// SSE: @v3 {{.*}}, align 16 +// AVX: @v3 {{.*}}, align 32 double __attribute__((vector_size(1024))) v4; -// CHECK: @v4 {{.*}}, align 32 +// SSE: @v4 {{.*}}, align 16 +// AVX: @v4 {{.*}}, align 32 // Aliged attribute should always override. double __attribute__((vector_size(16), aligned(16))) v5; -// CHECK: @v5 {{.*}}, align 16 +// ALL: @v5 {{.*}}, align 16 double __attribute__((vector_size(16), aligned(64))) v6; -// CHECK: @v6 {{.*}}, align 64 +// ALL: @v6 {{.*}}, align 64 double __attribute__((vector_size(32), aligned(16))) v7; -// CHECK: @v7 {{.*}}, align 16 +// ALL: @v7 {{.*}}, align 16 double __attribute__((vector_size(32), aligned(64))) v8; -// CHECK: @v8 {{.*}}, align 64 +// ALL: @v8 {{.*}}, align 64 // Check non-power of 2 widths. double __attribute__((vector_size(24))) v9; -// CHECK: @v9 {{.*}}, align 32 +// SSE: @v9 {{.*}}, align 16 +// AVX: @v9 {{.*}}, align 32 double __attribute__((vector_size(40))) v10; -// CHECK: @v10 {{.*}}, align 32 +// SSE: @v10 {{.*}}, align 16 +// AVX: @v10 {{.*}}, align 32 // Check non-power of 2 widths with aligned attribute. double __attribute__((vector_size(24), aligned(64))) v11; -// CHECK: @v11 {{.*}}, align 64 +// ALL: @v11 {{.*}}, align 64 double __attribute__((vector_size(80), aligned(16))) v12; -// CHECK: @v12 {{.*}}, align 16 +// ALL: @v12 {{.*}}, align 16 |

