brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.8 KiB · a865bc5 Raw
296 lines · c
1// REQUIRES: powerpc-registered-target2// RUN: %clang_cc1 -flax-vector-conversions=none -target-feature +altivec \3// RUN: -target-feature +power8-vector -triple powerpc-unknown-unknown -emit-llvm %s -o - | FileCheck %s4 5#include <altivec.h>6vector signed long long vsll1, vsll2, vsll3;7vector unsigned long long vull1, vull2, vull3;8vector signed char vsc;9vector unsigned char vuc;10vector bool long long vbll;11 12void dummy();13void test() {14  vec_abs(vsll1);15// CHECK: call <2 x i64> @llvm.ppc.altivec.vmaxsd16  dummy();17// CHECK-NEXT: call void @dummy()18  vec_add(vsll1, vsll2);19// CHECK: add <2 x i64>20  dummy();21// CHECK: call void @dummy()22  vec_and(vsll1, vsll2);23// CHECK: and <2 x i64>24  dummy();25// CHECK: call void @dummy()26  vec_vand(vsll1, vsll2);27// CHECK: and <2 x i64>28  dummy();29// CHECK: call void @dummy()30  vec_andc(vsll1, vsll2);31// CHECK: xor <2 x i64>32// CHECK: and <2 x i64>33  dummy();34// CHECK: call void @dummy()35  vec_vandc(vsll1, vsll2);36// CHECK: xor <2 x i64>37// CHECK: and <2 x i64>38  dummy();39// CHECK: call void @dummy()40  vec_cmpeq(vsll1, vsll2);41// CHECK: call <2 x i64> @llvm.ppc.altivec.vcmpequd42  dummy();43// CHECK: call void @dummy()44  vec_cmpne(vsll1, vsll2);45// CHECK: call <2 x i64> @llvm.ppc.altivec.vcmpequd46// CHECK: xor <2 x i64>47  dummy();48// CHECK: call void @dummy()49  vec_cmpgt(vsll1, vsll2);50// CHECK: call <2 x i64> @llvm.ppc.altivec.vcmpgtsd51  dummy();52// CHECK: call void @dummy()53  vec_cmpge(vsll1, vsll2);54// CHECK: call <2 x i64> @llvm.ppc.altivec.vcmpgtsd55// CHECK: xor <2 x i64>56  dummy();57// CHECK: call void @dummy()58  vec_cmple(vsll1, vsll2);59// CHECK: call <2 x i64> @llvm.ppc.altivec.vcmpgtsd60// CHECK: xor <2 x i64>61  dummy();62// CHECK: call void @dummy()63  vec_cmplt(vsll1, vsll2);64// CHECK: call <2 x i64> @llvm.ppc.altivec.vcmpgtsd65  dummy();66// CHECK: call void @dummy()67  vec_popcnt(vsll1);68// CHECK: call <2 x i64> @llvm.ctpop.v2i6469  dummy();70// CHECK: call void @dummy()71  vec_cntlz(vsll1);72// CHECK: call <2 x i64> @llvm.ctlz.v2i6473  dummy();74// CHECK: call void @dummy()75  vec_float2(vsll1, vsll2);76// CHECK: sitofp i64 %{{.*}} to float77  dummy();78// CHECK: call void @dummy()79  vec_floate(vsll1);80// CHECK: call <4 x float> @llvm.ppc.vsx.xvcvsxdsp81  dummy();82// CHECK: call void @dummy()83  vec_floato(vsll1);84// CHECK: call <4 x float> @llvm.ppc.vsx.xvcvsxdsp85  dummy();86// CHECK: call void @dummy()87  vec_double(vsll1);88// CHECK: sitofp <2 x i64> %{{.*}} to <2 x double>89  dummy();90// CHECK: call void @dummy()91  vec_div(vsll1, vsll2);92// CHECK: sdiv <2 x i64>93  dummy();94// CHECK: call void @dummy()95  vec_eqv(vsll1, vsll2);96// CHECK: call <4 x i32> @llvm.ppc.vsx.xxleqv97  dummy();98// CHECK: call void @dummy()99  vec_max(vsll1, vsll2);100// CHECK: call <2 x i64> @llvm.ppc.altivec.vmaxsd101  dummy();102// CHECK: call void @dummy()103  vec_mergeh(vsll1, vsll2);104// CHECK: call <4 x i32> @llvm.ppc.altivec.vperm105  dummy();106// CHECK: call void @dummy()107  vec_mergel(vsll1, vsll2);108// CHECK: call <4 x i32> @llvm.ppc.altivec.vperm109  dummy();110// CHECK: call void @dummy()111  vec_mergee(vsll1, vsll2);112// CHECK: call <4 x i32> @llvm.ppc.altivec.vperm113  dummy();114// CHECK: call void @dummy()115  vec_mergeo(vsll1, vsll2);116// CHECK: call <4 x i32> @llvm.ppc.altivec.vperm117  dummy();118// CHECK: call void @dummy()119  vec_min(vsll1, vsll2);120// CHECK: call <2 x i64> @llvm.ppc.altivec.vminsd121  dummy();122// CHECK: call void @dummy()123  vec_mul(vsll1, vsll2);124// CHECK: mul <2 x i64>125  dummy();126// CHECK: call void @dummy()127  vec_nand(vsll1, vsll2);128// CHECK: and <2 x i64>129// CHECK: xor <2 x i64>130  dummy();131// CHECK: call void @dummy()132  vec_nor(vsll1, vsll2);133// CHECK: or <2 x i64>134// CHECK: xor <2 x i64>135  dummy();136// CHECK: call void @dummy()137  vec_or(vsll1, vsll2);138// CHECK: or <2 x i64>139  dummy();140// CHECK: call void @dummy()141  vec_orc(vsll1, vsll2);142// CHECK: xor <2 x i64>143// CHECK: or <2 x i64>144  dummy();145// CHECK: call void @dummy()146  vec_vor(vsll1, vsll2);147// CHECK: or <2 x i64>148  dummy();149// CHECK: call void @dummy()150  vec_pack(vsll1, vsll2);151// CHECK: call <4 x i32> @llvm.ppc.altivec.vperm152  dummy();153// CHECK: call void @dummy()154  vec_vpkudum(vsll1, vsll2);155// CHECK: call <4 x i32> @llvm.ppc.altivec.vperm156  dummy();157// CHECK: call void @dummy()158  vec_packs(vsll1, vsll2);159// CHECK: call <4 x i32> @llvm.ppc.altivec.vpksdss160  dummy();161// CHECK: call void @dummy()162  vec_vpkudus(vull1, vull2);163// CHECK: call <4 x i32> @llvm.ppc.altivec.vpkudus164  dummy();165// CHECK: call void @dummy()166  vec_packsu(vsll1, vsll2);167// CHECK: call <4 x i32> @llvm.ppc.altivec.vpksdus168  dummy();169// CHECK: call void @dummy()170  vec_rl(vull1, vull2);171// CHECK: call <2 x i64> @llvm.ppc.altivec.vrld172  dummy();173// CHECK: call void @dummy()174  vec_sel(vsll1, vsll2, vbll);175// CHECK: xor <2 x i64>176// CHECK: and <2 x i64>177// CHECK: and <2 x i64>178// CHECK: or <2 x i64>179  dummy();180// CHECK: call void @dummy()181  vec_sl(vull1, vull2);182// CHECK: shl <2 x i64>183  dummy();184// CHECK: call void @dummy()185  vec_sld(vsll1, vsll2, 2);186// CHECK: call <4 x i32> @llvm.ppc.altivec.vperm187  dummy();188// CHECK: call void @dummy()189  vec_sldw(vsll1, vsll2, 2);190// CHECK: call <4 x i32> @llvm.ppc.altivec.vperm191  dummy();192// CHECK: call void @dummy()193  vec_sll(vsll1, vuc);194// CHECK: call <4 x i32> @llvm.ppc.altivec.vsl195  dummy();196// CHECK: call void @dummy()197  vec_slo(vsll1, vsc);198// CHECK: call <4 x i32> @llvm.ppc.altivec.vslo199  dummy();200// CHECK: call void @dummy()201  vec_splat(vsll1, 2);202// CHECK: call <4 x i32> @llvm.ppc.altivec.vperm203  dummy();204// CHECK: call void @dummy()205  vec_sr(vull1, vull2);206// CHECK: lshr <2 x i64>207  dummy();208// CHECK: call void @dummy()209  vec_sra(vsll1, vull2);210// CHECK: ashr <2 x i64>211  dummy();212// CHECK: call void @dummy()213  vec_srl(vsll1, vuc);214// CHECK: call <4 x i32> @llvm.ppc.altivec.vsr215  dummy();216// CHECK: call void @dummy()217  vec_sro(vsll1, vsc);218// CHECK: call <4 x i32> @llvm.ppc.altivec.vsro219  dummy();220// CHECK: call void @dummy()221  vec_sub(vsll1, vsll2);222// CHECK: sub <2 x i64>223  dummy();224// CHECK: call void @dummy()225  vec_xor(vsll1, vsll2);226// CHECK: xor <2 x i64>227  dummy();228// CHECK: call void @dummy()229  vec_vxor(vsll1, vsll2);230// CHECK: xor <2 x i64>231  dummy();232// CHECK: call void @dummy()233  vec_extract(vsll1, 2);234// CHECK: extractelement <2 x i64>235  dummy();236// CHECK: call void @dummy()237  vec_all_eq(vsll1, vsll2);238// CHECK: call i32 @llvm.ppc.altivec.vcmpequd.p239  dummy();240// CHECK: call void @dummy()241  vec_all_ge(vsll1, vsll2);242// CHECK: call i32 @llvm.ppc.altivec.vcmpgtsd.p243  dummy();244// CHECK: call void @dummy()245  vec_all_gt(vsll1, vsll2);246// CHECK: call i32 @llvm.ppc.altivec.vcmpgtsd.p247  dummy();248// CHECK: call void @dummy()249  vec_all_le(vsll1, vsll2);250// CHECK: call i32 @llvm.ppc.altivec.vcmpgtsd.p251  dummy();252// CHECK: call void @dummy()253  vec_all_lt(vsll1, vsll2);254// CHECK: call i32 @llvm.ppc.altivec.vcmpgtsd.p255  dummy();256// CHECK: call void @dummy()257  vec_all_ne(vsll1, vsll2);258// CHECK: call i32 @llvm.ppc.altivec.vcmpequd.p259  dummy();260// CHECK: call void @dummy()261  vec_any_eq(vsll1, vsll2);262// CHECK: call i32 @llvm.ppc.altivec.vcmpequd.p263  dummy();264// CHECK: call void @dummy()265  vec_any_ge(vsll1, vsll2);266// CHECK: call i32 @llvm.ppc.altivec.vcmpgtsd.p267  dummy();268// CHECK: call void @dummy()269  vec_any_gt(vsll1, vsll2);270// CHECK: call i32 @llvm.ppc.altivec.vcmpgtsd.p271  dummy();272// CHECK: call void @dummy()273  vec_any_le(vsll1, vsll2);274// CHECK: call i32 @llvm.ppc.altivec.vcmpgtsd.p275  dummy();276// CHECK: call void @dummy()277  vec_any_lt(vsll1, vsll2);278// CHECK: call i32 @llvm.ppc.altivec.vcmpgtsd.p279  dummy();280// CHECK: call void @dummy()281  vec_any_ne(vsll1, vsll2);282// CHECK: call i32 @llvm.ppc.altivec.vcmpequd.p283  dummy();284// CHECK: call void @dummy()285  vec_gbb(vsll1);286// CHECK: call <16 x i8> @llvm.ppc.altivec.vgbbd287  dummy();288// CHECK: call void @dummy()289  vec_reve(vsll1);290// CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 1, i32 0>291  dummy();292// CHECK: call void @dummy()293  vec_revb(vsll1);294// CHECK: call <4 x i32> @llvm.ppc.altivec.vperm295}296