1 // RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
2 
3 // PR27085
4 
5 typedef unsigned char uchar4  __attribute__ ((vector_size (4)));
6 
7 // CHECK: @add2
8 // CHECK: add <4 x i8> {{.*}}, <i8 2, i8 2, i8 2, i8 2>
add2(uchar4 v)9 uchar4 add2(uchar4 v)
10 {
11   return v + 2;
12 }
13 
14 // CHECK: @sub2
15 // CHECK: sub <4 x i8> {{.*}}, <i8 2, i8 2, i8 2, i8 2>
sub2(uchar4 v)16 uchar4 sub2(uchar4 v)
17 {
18   return v - 2;
19 }
20 
21 // CHECK: @mul2
22 // CHECK: mul <4 x i8> {{.*}}, <i8 2, i8 2, i8 2, i8 2>
mul2(uchar4 v)23 uchar4 mul2(uchar4 v)
24 {
25   return v * 2;
26 }
27 
28 // CHECK: @div2
29 // CHECK: udiv <4 x i8> {{.*}}, <i8 2, i8 2, i8 2, i8 2>
div2(uchar4 v)30 uchar4 div2(uchar4 v)
31 {
32   return v / 2;
33 }
34 
35 typedef __attribute__(( ext_vector_type(4) )) unsigned char uchar4_ext;
36 
37 // CHECK: @div3_ext
38 // CHECK: udiv <4 x i8> %{{.*}}, <i8 3, i8 3, i8 3, i8 3>
div3_ext(uchar4_ext v)39 uchar4_ext div3_ext(uchar4_ext v)
40 {
41   return v / 3;
42 }
43