diff options
Diffstat (limited to 'test/CodeGen/vector-scalar.c')
-rw-r--r-- | test/CodeGen/vector-scalar.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/test/CodeGen/vector-scalar.c b/test/CodeGen/vector-scalar.c new file mode 100644 index 000000000000..0c973cd41ee4 --- /dev/null +++ b/test/CodeGen/vector-scalar.c @@ -0,0 +1,42 @@ +// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s + +// PR27085 + +typedef unsigned char uchar4 __attribute__ ((vector_size (4))); + +// CHECK: @add2 +// CHECK: add <4 x i8> {{.*}}, <i8 2, i8 2, i8 2, i8 2> +uchar4 add2(uchar4 v) +{ + return v + 2; +} + +// CHECK: @sub2 +// CHECK: sub <4 x i8> {{.*}}, <i8 2, i8 2, i8 2, i8 2> +uchar4 sub2(uchar4 v) +{ + return v - 2; +} + +// CHECK: @mul2 +// CHECK: mul <4 x i8> {{.*}}, <i8 2, i8 2, i8 2, i8 2> +uchar4 mul2(uchar4 v) +{ + return v * 2; +} + +// CHECK: @div2 +// CHECK: udiv <4 x i8> {{.*}}, <i8 2, i8 2, i8 2, i8 2> +uchar4 div2(uchar4 v) +{ + return v / 2; +} + +typedef __attribute__(( ext_vector_type(4) )) unsigned char uchar4_ext; + +// CHECK: @div3_ext +// CHECK: udiv <4 x i8> %{{.*}}, <i8 3, i8 3, i8 3, i8 3> +uchar4_ext div3_ext(uchar4_ext v) +{ + return v / 3; +} |