brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.6 KiB · 01fa6c6 Raw
268 lines · c
1// REQUIRES: powerpc-registered-target2// RUN: %clang_cc1 -flax-vector-conversions=none -target-feature +altivec -target-feature +power8-vector \3// RUN: -triple powerpc64-unknown-unknown -emit-llvm %s -o - | FileCheck %s4 5// RUN: %clang_cc1 -flax-vector-conversions=none -target-feature +altivec -target-feature +power8-vector \6// RUN: -triple powerpc64le-unknown-unknown -emit-llvm %s -o - \7// RUN: | FileCheck %s -check-prefix=CHECK-LE8 9// RUN: not %clang_cc1 -target-feature +altivec -triple powerpc-unknown-unknown \10// RUN: -emit-llvm %s -o - 2>&1 | FileCheck %s -check-prefix=CHECK-PPC11#include <altivec.h>12 13// CHECK-PPC: error: __int128 is not supported on this target14vector signed __int128 vlll = { -1 };15// CHECK-PPC: error: __int128 is not supported on this target16vector unsigned __int128 vulll = { 1 };17vector unsigned char vuc;18 19signed long long param_sll;20// CHECK-PPC: error: __int128 is not supported on this target21signed __int128 param_lll;22// CHECK-PPC: error: __int128 is not supported on this target23unsigned __int128 param_ulll;24 25// CHECK-PPC: error: __int128 is not supported on this target26vector signed __int128 res_vlll;27// CHECK-PPC: error: __int128 is not supported on this target28vector unsigned __int128 res_vulll;29vector unsigned char res_vuc;30 31 32// CHECK-LABEL: define{{.*}} void @test133void test1() {34 35  /* vec_add */36  res_vlll = vec_add(vlll, vlll);37// CHECK: add <1 x i128>38// CHECK-LE: add <1 x i128> 39// CHECK-PPC: error: call to 'vec_add' is ambiguous40 41  res_vulll = vec_add(vulll, vulll);42// CHECK: add <1 x i128> 43// CHECK-LE: add <1 x i128> 44// CHECK-PPC: error: call to 'vec_add' is ambiguous45 46  /* vec_vadduqm */47  res_vlll = vec_vadduqm(vlll, vlll);48// CHECK: add <1 x i128> 49// CHECK-LE: add <1 x i128> 50// CHECK-PPC: error: assigning to '__vector __int128' (vector of 1 '__int128' value) from incompatible type 'int'51 52  res_vulll = vec_vadduqm(vulll, vulll);53// CHECK: add <1 x i128> 54// CHECK-LE: add <1 x i128> 55// CHECK-PPC: error: assigning to '__vector unsigned __int128' (vector of 1 'unsigned __int128' value) from incompatible type 'int'56 57  /* vec_vaddeuqm */58  res_vlll = vec_vaddeuqm(vlll, vlll, vlll);59// CHECK: @llvm.ppc.altivec.vaddeuqm60// CHECK-LE: @llvm.ppc.altivec.vaddeuqm61// CHECK-PPC: error: assigning to '__vector __int128' (vector of 1 '__int128' value) from incompatible type 'int'62  63  res_vulll = vec_vaddeuqm(vulll, vulll, vulll);64// CHECK: @llvm.ppc.altivec.vaddeuqm65// CHECK-LE: @llvm.ppc.altivec.vaddeuqm66// CHECK-PPC: error: assigning to '__vector unsigned __int128' (vector of 1 'unsigned __int128' value) from incompatible type 'int'67 68  /* vec_addc */69  res_vlll = vec_addc(vlll, vlll);70// CHECK: @llvm.ppc.altivec.vaddcuq71// CHECK-LE: @llvm.ppc.altivec.vaddcuq72// KCHECK-PPC: error: call to 'vec_addc' is ambiguous73 74  res_vulll = vec_addc(vulll, vulll);75// CHECK: @llvm.ppc.altivec.vaddcuq76// CHECK-LE: @llvm.ppc.altivec.vaddcuq77// KCHECK-PPC: error: call to 'vec_addc' is ambiguous78 79 80  /* vec_vaddcuq */81  res_vlll = vec_vaddcuq(vlll, vlll);82// CHECK: @llvm.ppc.altivec.vaddcuq83// CHECK-LE: @llvm.ppc.altivec.vaddcuq84// CHECK-PPC: error: assigning to '__vector __int128' (vector of 1 '__int128' value) from incompatible type 'int'85  86  res_vulll = vec_vaddcuq(vulll, vulll);87// CHECK: @llvm.ppc.altivec.vaddcuq88// CHECK-LE: @llvm.ppc.altivec.vaddcuq89// CHECK-PPC: error: assigning to '__vector unsigned __int128' (vector of 1 'unsigned __int128' value) from incompatible type 'int'90 91  /* vec_vaddecuq */92  res_vlll = vec_vaddecuq(vlll, vlll, vlll);93// CHECK: @llvm.ppc.altivec.vaddecuq94// CHECK-LE: @llvm.ppc.altivec.vaddecuq95// CHECK-PPC: error: assigning to '__vector __int128' (vector of 1 '__int128' value) from incompatible type 'int'96 97  res_vulll = vec_vaddecuq(vulll, vulll, vulll);98// CHECK: @llvm.ppc.altivec.vaddecuq99// CHECK-LE: @llvm.ppc.altivec.vaddecuq100// CHECK-PPC: error: assigning to '__vector unsigned __int128' (vector of 1 'unsigned __int128' value) from incompatible type 'int'101 102  /* vec_sub */103  res_vlll = vec_sub(vlll, vlll);104// CHECK: sub <1 x i128>105// CHECK-LE: sub <1 x i128> 106// CHECK-PPC: error: call to 'vec_sub' is ambiguous107  108  res_vulll = vec_sub(vulll, vulll);109// CHECK: sub <1 x i128> 110// CHECK-LE: sub <1 x i128> 111// CHECK-PPC: error: call to 'vec_sub' is ambiguous112 113  /* vec_vsubuqm */114  res_vlll = vec_vsubuqm(vlll, vlll);115// CHECK: sub <1 x i128> 116// CHECK-LE: sub <1 x i128> 117// CHECK-PPC: error: assigning to '__vector __int128' (vector of 1 '__int128' value) from incompatible type 'int'118  119  res_vulll = vec_vsubuqm(vulll, vulll);120// CHECK: sub <1 x i128> 121// CHECK-LE: sub <1 x i128> 122// CHECK-PPC: error: assigning to '__vector unsigned __int128' (vector of 1 'unsigned __int128' value) from incompatible type 'int'123  124  res_vuc = vec_sub_u128(vuc, vuc);125// CHECK: sub <1 x i128>126// CHECK-LE: sub <1 x i128>127 128  /* vec_vsubeuqm */129  res_vlll = vec_vsubeuqm(vlll, vlll, vlll);130// CHECK: @llvm.ppc.altivec.vsubeuqm131// CHECK-LE: @llvm.ppc.altivec.vsubeuqm132// CHECK-PPC: error: assigning to '__vector __int128' (vector of 1 '__int128' value) from incompatible type 'int'133  134  /* vec_sube */135  res_vlll = vec_sube(vlll, vlll, vlll);136// CHECK: @llvm.ppc.altivec.vsubeuqm137// CHECK-LE: @llvm.ppc.altivec.vsubeuqm138// CHECK-PPC: error: call to 'vec_sube' is ambiguous139  140  res_vulll = vec_sube(vulll, vulll, vulll);141// CHECK: @llvm.ppc.altivec.vsubeuqm142// CHECK-LE: @llvm.ppc.altivec.vsubeuqm143// CHECK-PPC: error: call to 'vec_sube' is ambiguous144  145  res_vlll = vec_sube(vlll, vlll, vlll);146// CHECK: @llvm.ppc.altivec.vsubeuqm147// CHECK-LE: @llvm.ppc.altivec.vsubeuqm148// CHECK-PPC: error: call to 'vec_sube' is ambiguous149  150  res_vulll = vec_vsubeuqm(vulll, vulll, vulll);151// CHECK: @llvm.ppc.altivec.vsubeuqm152// CHECK-LE: @llvm.ppc.altivec.vsubeuqm153// CHECK-PPC: error: assigning to '__vector unsigned __int128' (vector of 1 'unsigned __int128' value) from incompatible type 'int'154  155  res_vulll = vec_sube(vulll, vulll, vulll);156// CHECK: @llvm.ppc.altivec.vsubeuqm157// CHECK-LE: @llvm.ppc.altivec.vsubeuqm158// CHECK-PPC: error: call to 'vec_sube' is ambiguous159 160  res_vuc = vec_sube_u128(vuc, vuc, vuc);161// CHECK: @llvm.ppc.altivec.vsubeuqm162// CHECK-LE: @llvm.ppc.altivec.vsubeuqm163 164  /* vec_subc */165  res_vlll = vec_subc(vlll, vlll);166// CHECK: @llvm.ppc.altivec.vsubcuq167// CHECK-LE: @llvm.ppc.altivec.vsubcuq168// KCHECK-PPC: error: call to 'vec_subc' is ambiguous169 170  res_vulll = vec_subc(vulll, vulll);171// CHECK: @llvm.ppc.altivec.vsubcuq172// CHECK-LE: @llvm.ppc.altivec.vsubcuq173// KCHECK-PPC: error: call to 'vec_subc' is ambiguous174 175  res_vuc = vec_subc_u128(vuc, vuc);176// CHECK: @llvm.ppc.altivec.vsubcuq177// CHECK-LE: @llvm.ppc.altivec.vsubcuq178 179  /* vec_vsubcuq */180  res_vlll = vec_vsubcuq(vlll, vlll);181// CHECK: @llvm.ppc.altivec.vsubcuq182// CHECK-LE: @llvm.ppc.altivec.vsubcuq183// CHECK-PPC: error: assigning to '__vector __int128' (vector of 1 '__int128' value) from incompatible type 'int'184  185  res_vulll = vec_vsubcuq(vulll, vulll);186// CHECK: @llvm.ppc.altivec.vsubcuq187// CHECK-LE: @llvm.ppc.altivec.vsubcuq188// CHECK-PPC: error: assigning to '__vector unsigned __int128' (vector of 1 'unsigned __int128' value) from incompatible type 'int'189 190  /* vec_vsubecuq */191  res_vlll = vec_vsubecuq(vlll, vlll, vlll);192// CHECK: @llvm.ppc.altivec.vsubecuq193// CHECK-LE: @llvm.ppc.altivec.vsubecuq194// CHECK-PPC: error: assigning to '__vector __int128' (vector of 1 '__int128' value) from incompatible type 'int'195 196  res_vulll = vec_vsubecuq(vulll, vulll, vulll);197// CHECK: @llvm.ppc.altivec.vsubecuq198// CHECK-LE: @llvm.ppc.altivec.vsubecuq199// CHECK-PPC: error: assigning to '__vector unsigned __int128' (vector of 1 'unsigned __int128' value) from incompatible type 'int'200 201  res_vlll = vec_subec(vlll, vlll, vlll);202// CHECK: @llvm.ppc.altivec.vsubecuq203// CHECK-LE: @llvm.ppc.altivec.vsubecuq204// CHECK-PPC: error: assigning to '__vector __int128' (vector of 1 '__int128' value) from incompatible type 'int'  205 206  res_vulll = vec_subec(vulll, vulll, vulll);207// CHECK: @llvm.ppc.altivec.vsubecuq208// CHECK-LE: @llvm.ppc.altivec.vsubecuq209// CHECK-PPC: error: assigning to '__vector unsigned __int128' (vector of 1 'unsigned __int128' value) from incompatible type 'int'  210 211  res_vuc = vec_subec_u128(vuc, vuc, vuc);212// CHECK: @llvm.ppc.altivec.vsubecuq213// CHECK-LE: @llvm.ppc.altivec.vsubecuq214 215  res_vulll = vec_revb(vulll);216// CHECK: store <16 x i8> <i8 15, i8 14, i8 13, i8 12, i8 11, i8 10, i8 9, i8 8, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>, ptr {{%.+}}, align 16217// CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})218// CHECK-LE: store <16 x i8> <i8 15, i8 14, i8 13, i8 12, i8 11, i8 10, i8 9, i8 8, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>, ptr {{%.+}}, align 16219// CHECK-LE: store <16 x i8> splat (i8 -1), ptr {{%.+}}, align 16220// CHECK-LE: xor <16 x i8>221// CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})222// CHECK_PPC: error: call to 'vec_revb' is ambiguous223 224  /* vec_xl */225  res_vlll = vec_xl(param_sll, &param_lll);226  // CHECK: load <1 x i128>, ptr %{{[0-9]+}}, align 1227  // CHECK-LE: load <1 x i128>, ptr %{{[0-9]+}}, align 1228  // CHECK-PPC: error: call to 'vec_xl' is ambiguous229 230  res_vulll = vec_xl(param_sll, &param_ulll);231  // CHECK: load <1 x i128>, ptr %{{[0-9]+}}, align 1232  // CHECK-LE: load <1 x i128>, ptr %{{[0-9]+}}, align 1233  // CHECK-PPC: error: call to 'vec_xl' is ambiguous234 235  /* vec_xst */236   vec_xst(vlll, param_sll, &param_lll);237  // CHECK: store <1 x i128> %{{[0-9]+}}, ptr %{{[0-9]+}}, align 1238  // CHECK-LE: store <1 x i128> %{{[0-9]+}}, ptr %{{[0-9]+}}, align 1239  // CHECK-PPC: error: call to 'vec_xst' is ambiguous240 241   vec_xst(vulll, param_sll, &param_ulll);242  // CHECK: store <1 x i128> %{{[0-9]+}}, ptr %{{[0-9]+}}, align 1243  // CHECK-LE: store <1 x i128> %{{[0-9]+}}, ptr %{{[0-9]+}}, align 1244  // CHECK-PPC: error: call to 'vec_xst' is ambiguous245 246  /* vec_xl_be */247  res_vlll = vec_xl_be(param_sll, &param_lll);248  // CHECK: load <1 x i128>, ptr %{{[0-9]+}}, align 1249  // CHECK-LE: load <1 x i128>, ptr %{{[0-9]+}}, align 1250  // CHECK-PPC: error: call to 'vec_xl' is ambiguous251 252  res_vulll = vec_xl_be(param_sll, &param_ulll);253  // CHECK: load <1 x i128>, ptr %{{[0-9]+}}, align 1254  // CHECK-LE: load <1 x i128>, ptr %{{[0-9]+}}, align 1255  // CHECK-PPC: error: call to 'vec_xl' is ambiguous256 257  /* vec_xst_be  */258   vec_xst_be(vlll, param_sll, &param_lll);259  // CHECK: store <1 x i128> %{{[0-9]+}}, ptr %{{[0-9]+}}, align 1260  // CHECK-LE: store <1 x i128> %{{[0-9]+}}, ptr %{{[0-9]+}}, align 1261  // CHECK-PPC: error: call to 'vec_xst' is ambiguous262 263   vec_xst_be(vulll, param_sll, &param_ulll);264  // CHECK: store <1 x i128> %{{[0-9]+}}, ptr %{{[0-9]+}}, align 1265  // CHECK-LE: store <1 x i128> %{{[0-9]+}}, ptr %{{[0-9]+}}, align 1266  // CHECK-PPC: error: call to 'vec_xst' is ambiguous267}268