1*67e74705SXin Li // RUN: %clang_cc1 -faltivec -triple powerpc64-unknown-linux-gnu -emit-llvm -o - %s | FileCheck %s 2*67e74705SXin Li 3*67e74705SXin Li typedef short v2i16 __attribute__((vector_size (4))); 4*67e74705SXin Li typedef short v3i16 __attribute__((vector_size (6))); 5*67e74705SXin Li typedef short v4i16 __attribute__((vector_size (8))); 6*67e74705SXin Li typedef short v6i16 __attribute__((vector_size (12))); 7*67e74705SXin Li typedef short v8i16 __attribute__((vector_size (16))); 8*67e74705SXin Li typedef short v16i16 __attribute__((vector_size (32))); 9*67e74705SXin Li 10*67e74705SXin Li struct v16i16 { v16i16 x; }; 11*67e74705SXin Li 12*67e74705SXin Li // CHECK: define i32 @test_v2i16(i32 %x.coerce) test_v2i16(v2i16 x)13*67e74705SXin Liv2i16 test_v2i16(v2i16 x) 14*67e74705SXin Li { 15*67e74705SXin Li return x; 16*67e74705SXin Li } 17*67e74705SXin Li 18*67e74705SXin Li // CHECK: define i64 @test_v3i16(i64 %x.coerce) test_v3i16(v3i16 x)19*67e74705SXin Liv3i16 test_v3i16(v3i16 x) 20*67e74705SXin Li { 21*67e74705SXin Li return x; 22*67e74705SXin Li } 23*67e74705SXin Li 24*67e74705SXin Li // CHECK: define i64 @test_v4i16(i64 %x.coerce) test_v4i16(v4i16 x)25*67e74705SXin Liv4i16 test_v4i16(v4i16 x) 26*67e74705SXin Li { 27*67e74705SXin Li return x; 28*67e74705SXin Li } 29*67e74705SXin Li 30*67e74705SXin Li // CHECK: define <6 x i16> @test_v6i16(<6 x i16> %x) test_v6i16(v6i16 x)31*67e74705SXin Liv6i16 test_v6i16(v6i16 x) 32*67e74705SXin Li { 33*67e74705SXin Li return x; 34*67e74705SXin Li } 35*67e74705SXin Li 36*67e74705SXin Li // CHECK: define <8 x i16> @test_v8i16(<8 x i16> %x) test_v8i16(v8i16 x)37*67e74705SXin Liv8i16 test_v8i16(v8i16 x) 38*67e74705SXin Li { 39*67e74705SXin Li return x; 40*67e74705SXin Li } 41*67e74705SXin Li 42*67e74705SXin Li // CHECK: define void @test_v16i16(<16 x i16>* noalias sret %agg.result, <16 x i16>*) test_v16i16(v16i16 x)43*67e74705SXin Liv16i16 test_v16i16(v16i16 x) 44*67e74705SXin Li { 45*67e74705SXin Li return x; 46*67e74705SXin Li } 47*67e74705SXin Li 48*67e74705SXin Li // CHECK: define void @test_struct_v16i16(%struct.v16i16* noalias sret %agg.result, [2 x i128] %x.coerce) test_struct_v16i16(struct v16i16 x)49*67e74705SXin Listruct v16i16 test_struct_v16i16(struct v16i16 x) 50*67e74705SXin Li { 51*67e74705SXin Li return x; 52*67e74705SXin Li } 53