1*f4a2713aSLionel Sambuc // RUN: %clang_cc1 -w -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s 2*f4a2713aSLionel Sambuc // rdar://11759609 3*f4a2713aSLionel Sambuc 4*f4a2713aSLionel Sambuc // At or below target max alignment with no aligned attribute should align based 5*f4a2713aSLionel Sambuc // on the size of vector. 6*f4a2713aSLionel Sambuc double __attribute__((vector_size(16))) v1; 7*f4a2713aSLionel Sambuc // CHECK: @v1 {{.*}}, align 16 8*f4a2713aSLionel Sambuc double __attribute__((vector_size(32))) v2; 9*f4a2713aSLionel Sambuc // CHECK: @v2 {{.*}}, align 32 10*f4a2713aSLionel Sambuc 11*f4a2713aSLionel Sambuc // Alignment above target max alignment with no aligned attribute should align 12*f4a2713aSLionel Sambuc // based on the target max. 13*f4a2713aSLionel Sambuc double __attribute__((vector_size(64))) v3; 14*f4a2713aSLionel Sambuc // CHECK: @v3 {{.*}}, align 32 15*f4a2713aSLionel Sambuc double __attribute__((vector_size(1024))) v4; 16*f4a2713aSLionel Sambuc // CHECK: @v4 {{.*}}, align 32 17*f4a2713aSLionel Sambuc 18*f4a2713aSLionel Sambuc // Aliged attribute should always override. 19*f4a2713aSLionel Sambuc double __attribute__((vector_size(16), aligned(16))) v5; 20*f4a2713aSLionel Sambuc // CHECK: @v5 {{.*}}, align 16 21*f4a2713aSLionel Sambuc double __attribute__((vector_size(16), aligned(64))) v6; 22*f4a2713aSLionel Sambuc // CHECK: @v6 {{.*}}, align 64 23*f4a2713aSLionel Sambuc double __attribute__((vector_size(32), aligned(16))) v7; 24*f4a2713aSLionel Sambuc // CHECK: @v7 {{.*}}, align 16 25*f4a2713aSLionel Sambuc double __attribute__((vector_size(32), aligned(64))) v8; 26*f4a2713aSLionel Sambuc // CHECK: @v8 {{.*}}, align 64 27*f4a2713aSLionel Sambuc 28*f4a2713aSLionel Sambuc // Check non-power of 2 widths. 29*f4a2713aSLionel Sambuc double __attribute__((vector_size(24))) v9; 30*f4a2713aSLionel Sambuc // CHECK: @v9 {{.*}}, align 32 31*f4a2713aSLionel Sambuc double __attribute__((vector_size(40))) v10; 32*f4a2713aSLionel Sambuc // CHECK: @v10 {{.*}}, align 32 33*f4a2713aSLionel Sambuc 34*f4a2713aSLionel Sambuc // Check non-power of 2 widths with aligned attribute. 35*f4a2713aSLionel Sambuc double __attribute__((vector_size(24), aligned(64))) v11; 36*f4a2713aSLionel Sambuc // CHECK: @v11 {{.*}}, align 64 37*f4a2713aSLionel Sambuc double __attribute__((vector_size(80), aligned(16))) v12; 38*f4a2713aSLionel Sambuc // CHECK: @v12 {{.*}}, align 16 39