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