xref: /llvm-project/clang/test/CodeGen/vector-scalar.c (revision 38fffa630ee80163dc65e759392ad29798905679)
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> {{.*}}, splat (i8 2)
9 uchar4 add2(uchar4 v)
10 {
11   return v + 2;
12 }
13 
14 // CHECK: @sub2
15 // CHECK: sub <4 x i8> {{.*}}, splat (i8 2)
16 uchar4 sub2(uchar4 v)
17 {
18   return v - 2;
19 }
20 
21 // CHECK: @mul2
22 // CHECK: mul <4 x i8> {{.*}}, splat (i8 2)
23 uchar4 mul2(uchar4 v)
24 {
25   return v * 2;
26 }
27 
28 // CHECK: @div2
29 // CHECK: udiv <4 x i8> {{.*}}, splat (i8 2)
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> %{{.*}}, splat (i8 3)
39 uchar4_ext div3_ext(uchar4_ext v)
40 {
41   return v / 3;
42 }
43