1b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// REQUIRES: powerpc-registered-target
2b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// RUN: %clang_cc1 -faltivec -target-feature +power8-vector \
3b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// RUN: -triple powerpc64-unknown-unknown -emit-llvm %s -o - | FileCheck %s
4b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar
5b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// RUN: %clang_cc1 -faltivec -target-feature +power8-vector \
6b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// RUN: -triple powerpc64le-unknown-unknown -emit-llvm %s -o - \
7b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// RUN: | FileCheck %s -check-prefix=CHECK-LE
8b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar
9b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// RUN: not %clang_cc1 -faltivec -triple powerpc-unknown-unknown \
10b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// RUN: -emit-llvm %s -o - 2>&1 | FileCheck %s -check-prefix=CHECK-PPC
114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#include <altivec.h>
12b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar
13b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-PPC: error: __int128 is not supported on this target
14b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainarvector signed __int128 vlll = { -1 };
15b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-PPC: error: __int128 is not supported on this target
16b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainarvector unsigned __int128 vulll = { 1 };
17b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar
18b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-PPC: error: __int128 is not supported on this target
19b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainarvector signed __int128 res_vlll;
20b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-PPC: error: __int128 is not supported on this target
21b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainarvector unsigned __int128 res_vulll;
22b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar
23b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar
24b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-LABEL: define void @test1
25b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainarvoid test1() {
26b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar
27b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  /* vec_add */
28b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  res_vlll = vec_add(vlll, vlll);
29b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: add <1 x i128>
30b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-LE: add <1 x i128>
31b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-PPC: error: call to 'vec_add' is ambiguous
32b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar
33b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  res_vulll = vec_add(vulll, vulll);
34b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: add <1 x i128>
35b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-LE: add <1 x i128>
36b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-PPC: error: call to 'vec_add' is ambiguous
37b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar
38b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  /* vec_vadduqm */
39b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  res_vlll = vec_vadduqm(vlll, vlll);
40b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: add <1 x i128>
41b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-LE: add <1 x i128>
42b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-PPC: error: assigning to '__vector __int128' (vector of 1 '__int128' value) from incompatible type 'int'
43b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar
44b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  res_vulll = vec_vadduqm(vulll, vulll);
45b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: add <1 x i128>
46b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-LE: add <1 x i128>
47b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-PPC: error: assigning to '__vector unsigned __int128' (vector of 1 'unsigned __int128' value) from incompatible type 'int'
48b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar
49b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  /* vec_vaddeuqm */
50b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  res_vlll = vec_vaddeuqm(vlll, vlll, vlll);
51b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.vaddeuqm
52b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-LE: @llvm.ppc.altivec.vaddeuqm
53b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-PPC: error: assigning to '__vector __int128' (vector of 1 '__int128' value) from incompatible type 'int'
54b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar
55b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  res_vulll = vec_vaddeuqm(vulll, vulll, vulll);
56b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.vaddeuqm
57b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-LE: @llvm.ppc.altivec.vaddeuqm
58b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-PPC: error: assigning to '__vector unsigned __int128' (vector of 1 'unsigned __int128' value) from incompatible type 'int'
59b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar
60b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  /* vec_addc */
61b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  res_vlll = vec_addc(vlll, vlll);
62b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.vaddcuq
63b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-LE: @llvm.ppc.altivec.vaddcuq
64b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// KCHECK-PPC: error: call to 'vec_addc' is ambiguous
65b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar
66b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  res_vulll = vec_addc(vulll, vulll);
67b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.vaddcuq
68b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-LE: @llvm.ppc.altivec.vaddcuq
69b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// KCHECK-PPC: error: call to 'vec_addc' is ambiguous
70b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar
71b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar
72b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  /* vec_vaddcuq */
73b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  res_vlll = vec_vaddcuq(vlll, vlll);
74b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.vaddcuq
75b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-LE: @llvm.ppc.altivec.vaddcuq
76b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-PPC: error: assigning to '__vector __int128' (vector of 1 '__int128' value) from incompatible type 'int'
77b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar
78b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  res_vulll = vec_vaddcuq(vulll, vulll);
79b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.vaddcuq
80b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-LE: @llvm.ppc.altivec.vaddcuq
81b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-PPC: error: assigning to '__vector unsigned __int128' (vector of 1 'unsigned __int128' value) from incompatible type 'int'
82b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar
83b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  /* vec_vaddecuq */
84b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  res_vlll = vec_vaddecuq(vlll, vlll, vlll);
85b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.vaddecuq
86b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-LE: @llvm.ppc.altivec.vaddecuq
87b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-PPC: error: assigning to '__vector __int128' (vector of 1 '__int128' value) from incompatible type 'int'
88b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar
89b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  res_vulll = vec_vaddecuq(vulll, vulll, vulll);
90b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.vaddecuq
91b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-LE: @llvm.ppc.altivec.vaddecuq
92b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-PPC: error: assigning to '__vector unsigned __int128' (vector of 1 'unsigned __int128' value) from incompatible type 'int'
93b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar
94b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  /* vec_sub */
95b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  res_vlll = vec_sub(vlll, vlll);
96b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: sub <1 x i128>
97b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-LE: sub <1 x i128>
98b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-PPC: error: call to 'vec_sub' is ambiguous
99b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar
100b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  res_vulll = vec_sub(vulll, vulll);
101b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: sub <1 x i128>
102b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-LE: sub <1 x i128>
103b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-PPC: error: call to 'vec_sub' is ambiguous
104b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar
105b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  /* vec_vsubuqm */
106b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  res_vlll = vec_vsubuqm(vlll, vlll);
107b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: sub <1 x i128>
108b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-LE: sub <1 x i128>
109b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-PPC: error: assigning to '__vector __int128' (vector of 1 '__int128' value) from incompatible type 'int'
110b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar
111b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  res_vulll = vec_vsubuqm(vulll, vulll);
112b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: sub <1 x i128>
113b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-LE: sub <1 x i128>
114b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-PPC: error: assigning to '__vector unsigned __int128' (vector of 1 'unsigned __int128' value) from incompatible type 'int'
115b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar
116b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  /* vec_vsubeuqm */
117b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  res_vlll = vec_vsubeuqm(vlll, vlll, vlll);
118b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.vsubeuqm
119b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-LE: @llvm.ppc.altivec.vsubeuqm
120b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-PPC: error: assigning to '__vector __int128' (vector of 1 '__int128' value) from incompatible type 'int'
121b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar
122b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  res_vulll = vec_vsubeuqm(vulll, vulll, vulll);
123b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.vsubeuqm
124b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-LE: @llvm.ppc.altivec.vsubeuqm
125b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-PPC: error: assigning to '__vector unsigned __int128' (vector of 1 'unsigned __int128' value) from incompatible type 'int'
126b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar
127b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  /* vec_subc */
128b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  res_vlll = vec_subc(vlll, vlll);
129b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.vsubcuq
130b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-LE: @llvm.ppc.altivec.vsubcuq
131b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// KCHECK-PPC: error: call to 'vec_subc' is ambiguous
132b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar
133b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  res_vulll = vec_subc(vulll, vulll);
134b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.vsubcuq
135b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-LE: @llvm.ppc.altivec.vsubcuq
136b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// KCHECK-PPC: error: call to 'vec_subc' is ambiguous
137b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar
138b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  /* vec_vsubcuq */
139b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  res_vlll = vec_vsubcuq(vlll, vlll);
140b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.vsubcuq
141b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-LE: @llvm.ppc.altivec.vsubcuq
142b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-PPC: error: assigning to '__vector __int128' (vector of 1 '__int128' value) from incompatible type 'int'
143b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar
144b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  res_vulll = vec_vsubcuq(vulll, vulll);
145b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.vsubcuq
146b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-LE: @llvm.ppc.altivec.vsubcuq
147b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-PPC: error: assigning to '__vector unsigned __int128' (vector of 1 'unsigned __int128' value) from incompatible type 'int'
148b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar
149b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  /* vec_vsubecuq */
150b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  res_vlll = vec_vsubecuq(vlll, vlll, vlll);
151b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.vsubecuq
152b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-LE: @llvm.ppc.altivec.vsubecuq
153b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-PPC: error: assigning to '__vector __int128' (vector of 1 '__int128' value) from incompatible type 'int'
154b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar
155b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar  res_vulll = vec_vsubecuq(vulll, vulll, vulll);
156b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK: @llvm.ppc.altivec.vsubecuq
157b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-LE: @llvm.ppc.altivec.vsubecuq
158b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// CHECK-PPC: error: assigning to '__vector unsigned __int128' (vector of 1 'unsigned __int128' value) from incompatible type 'int'
159b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar
160b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar}
161