blob: 586f1133a8dceee8d322440dd65a9446503866e9 [file] [log] [blame]
Chris Lattnerdd173942010-04-14 03:54:58 +00001// RUN: %clang_cc1 -faltivec -triple powerpc-unknown-unknown -emit-llvm %s -o - | FileCheck %s
2
Anton Yartsev05e35552010-08-16 16:22:12 +00003vector bool char vbc = { 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 };
Chris Lattner35b21b82010-06-27 01:06:27 +00004vector signed char vsc = { 1, -2, 3, -4, 5, -6, 7, -8, 9, -10, 11, -12, 13, -14, 15, -16 };
5vector unsigned char vuc = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
Anton Yartsev05e35552010-08-16 16:22:12 +00006vector bool short vbs = { 1, 0, 1, 0, 1, 0, 1, 0 };
Chris Lattner35b21b82010-06-27 01:06:27 +00007vector short vs = { -1, 2, -3, 4, -5, 6, -7, 8 };
8vector unsigned short vus = { 1, 2, 3, 4, 5, 6, 7, 8 };
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00009vector pixel vp = { 1, 2, 3, 4, 5, 6, 7, 8 };
Anton Yartsev05e35552010-08-16 16:22:12 +000010vector bool int vbi = { 1, 0, 1, 0 };
Chris Lattner35b21b82010-06-27 01:06:27 +000011vector int vi = { -1, 2, -3, 4 };
12vector unsigned int vui = { 1, 2, 3, 4 };
13vector float vf = { -1.5, 2.5, -3.5, 4.5 };
Chris Lattnerdd173942010-04-14 03:54:58 +000014
Anton Yartsev05e35552010-08-16 16:22:12 +000015vector bool char res_vbc;
Chris Lattner35b21b82010-06-27 01:06:27 +000016vector signed char res_vsc;
17vector unsigned char res_vuc;
Anton Yartsev05e35552010-08-16 16:22:12 +000018vector bool short res_vbs;
Chris Lattner35b21b82010-06-27 01:06:27 +000019vector short res_vs;
20vector unsigned short res_vus;
Chris Lattner35b21b82010-06-27 01:06:27 +000021vector pixel res_vp;
Anton Yartsev05e35552010-08-16 16:22:12 +000022vector bool int res_vbi;
Chris Lattner35b21b82010-06-27 01:06:27 +000023vector int res_vi;
24vector unsigned int res_vui;
25vector float res_vf;
Chris Lattnerdd173942010-04-14 03:54:58 +000026
Chris Lattner35b21b82010-06-27 01:06:27 +000027signed char param_sc;
28unsigned char param_uc;
29short param_s;
30unsigned short param_us;
31int param_i;
32unsigned int param_ui;
33float param_f;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000034
Anton Yartsev44270d62010-10-14 14:37:46 +000035int res_sc;
36int res_uc;
37int res_s;
38int res_us;
Chris Lattner35b21b82010-06-27 01:06:27 +000039int res_i;
Anton Yartsev44270d62010-10-14 14:37:46 +000040int res_ui;
41int res_f;
Chris Lattner35b21b82010-06-27 01:06:27 +000042
Anton Yartsev05e35552010-08-16 16:22:12 +000043// CHECK: define void @test1
44void test1() {
Chris Lattnerdd173942010-04-14 03:54:58 +000045
46 /* vec_abs */
Chris Lattnere70ffd62010-06-26 20:27:24 +000047 vsc = vec_abs(vsc); // CHECK: sub nsw <16 x i8> zeroinitializer
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000048 // CHECK: @llvm.ppc.altivec.vmaxsb
Chris Lattnerdd173942010-04-14 03:54:58 +000049
Chris Lattnere70ffd62010-06-26 20:27:24 +000050 vs = vec_abs(vs); // CHECK: sub nsw <8 x i16> zeroinitializer
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000051 // CHECK: @llvm.ppc.altivec.vmaxsh
Chris Lattnerdd173942010-04-14 03:54:58 +000052
Chris Lattnere70ffd62010-06-26 20:27:24 +000053 vi = vec_abs(vi); // CHECK: sub nsw <4 x i32> zeroinitializer
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000054 // CHECK: @llvm.ppc.altivec.vmaxsw
Chris Lattnerdd173942010-04-14 03:54:58 +000055
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000056 vf = vec_abs(vf); // CHECK: and <4 x i32>
Chris Lattnerdd173942010-04-14 03:54:58 +000057
58 /* vec_abs */
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000059 vsc = vec_abss(vsc); // CHECK: @llvm.ppc.altivec.vsubsbs
60 // CHECK: @llvm.ppc.altivec.vmaxsb
Chris Lattnerdd173942010-04-14 03:54:58 +000061
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000062 vs = vec_abss(vs); // CHECK: @llvm.ppc.altivec.vsubshs
63 // CHECK: @llvm.ppc.altivec.vmaxsh
Chris Lattnerdd173942010-04-14 03:54:58 +000064
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000065 vi = vec_abss(vi); // CHECK: @llvm.ppc.altivec.vsubsws
66 // CHECK: @llvm.ppc.altivec.vmaxsw
Chris Lattnerdd173942010-04-14 03:54:58 +000067
68 /* vec_add */
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000069 res_vsc = vec_add(vsc, vsc); // CHECK: add nsw <16 x i8>
Anton Yartsev05e35552010-08-16 16:22:12 +000070 res_vsc = vec_add(vbc, vsc); // CHECK: add nsw <16 x i8>
71 res_vsc = vec_add(vsc, vbc); // CHECK: add nsw <16 x i8>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000072 res_vuc = vec_add(vuc, vuc); // CHECK: add <16 x i8>
Anton Yartsev05e35552010-08-16 16:22:12 +000073 res_vuc = vec_add(vbc, vuc); // CHECK: add <16 x i8>
74 res_vuc = vec_add(vuc, vbc); // CHECK: add <16 x i8>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000075 res_vs = vec_add(vs, vs); // CHECK: add nsw <8 x i16>
Anton Yartsev05e35552010-08-16 16:22:12 +000076 res_vs = vec_add(vbs, vs); // CHECK: add nsw <8 x i16>
77 res_vs = vec_add(vs, vbs); // CHECK: add nsw <8 x i16>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000078 res_vus = vec_add(vus, vus); // CHECK: add <8 x i16>
Anton Yartsev05e35552010-08-16 16:22:12 +000079 res_vus = vec_add(vbs, vus); // CHECK: add <8 x i16>
80 res_vus = vec_add(vus, vbs); // CHECK: add <8 x i16>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000081 res_vi = vec_add(vi, vi); // CHECK: add nsw <4 x i32>
Anton Yartsev05e35552010-08-16 16:22:12 +000082 res_vi = vec_add(vbi, vi); // CHECK: add nsw <4 x i32>
83 res_vi = vec_add(vi, vbi); // CHECK: add nsw <4 x i32>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000084 res_vui = vec_add(vui, vui); // CHECK: add <4 x i32>
Anton Yartsev05e35552010-08-16 16:22:12 +000085 res_vui = vec_add(vbi, vui); // CHECK: add <4 x i32>
86 res_vui = vec_add(vui, vbi); // CHECK: add <4 x i32>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000087 res_vf = vec_add(vf, vf); // CHECK: fadd <4 x float>
88 res_vsc = vec_vaddubm(vsc, vsc); // CHECK: add nsw <16 x i8>
Anton Yartsev05e35552010-08-16 16:22:12 +000089 res_vsc = vec_vaddubm(vbc, vsc); // CHECK: add nsw <16 x i8>
90 res_vsc = vec_vaddubm(vsc, vbc); // CHECK: add nsw <16 x i8>
Chris Lattnerdd173942010-04-14 03:54:58 +000091 res_vuc = vec_vaddubm(vuc, vuc); // CHECK: add <16 x i8>
Anton Yartsev05e35552010-08-16 16:22:12 +000092 res_vuc = vec_vaddubm(vbc, vuc); // CHECK: add <16 x i8>
93 res_vuc = vec_vaddubm(vuc, vbc); // CHECK: add <16 x i8>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000094 res_vs = vec_vadduhm(vs, vs); // CHECK: add nsw <8 x i16>
Anton Yartsev05e35552010-08-16 16:22:12 +000095 res_vs = vec_vadduhm(vbs, vs); // CHECK: add nsw <8 x i16>
96 res_vs = vec_vadduhm(vs, vbs); // CHECK: add nsw <8 x i16>
Chris Lattnerdd173942010-04-14 03:54:58 +000097 res_vus = vec_vadduhm(vus, vus); // CHECK: add <8 x i16>
Anton Yartsev05e35552010-08-16 16:22:12 +000098 res_vus = vec_vadduhm(vbs, vus); // CHECK: add <8 x i16>
99 res_vus = vec_vadduhm(vus, vbs); // CHECK: add <8 x i16>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000100 res_vi = vec_vadduwm(vi, vi); // CHECK: add nsw <4 x i32>
Anton Yartsev05e35552010-08-16 16:22:12 +0000101 res_vi = vec_vadduwm(vbi, vi); // CHECK: add nsw <4 x i32>
102 res_vi = vec_vadduwm(vi, vbi); // CHECK: add nsw <4 x i32>
Chris Lattnerdd173942010-04-14 03:54:58 +0000103 res_vui = vec_vadduwm(vui, vui); // CHECK: add <4 x i32>
Anton Yartsev05e35552010-08-16 16:22:12 +0000104 res_vui = vec_vadduwm(vbi, vui); // CHECK: add <4 x i32>
105 res_vui = vec_vadduwm(vui, vbi); // CHECK: add <4 x i32>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000106 res_vf = vec_vaddfp(vf, vf); // CHECK: fadd <4 x float>
Chris Lattnerdd173942010-04-14 03:54:58 +0000107
108 /* vec_addc */
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000109 res_vui = vec_addc(vui, vui); // HECK: @llvm.ppc.altivec.vaddcuw
Chris Lattnerdd173942010-04-14 03:54:58 +0000110 res_vui = vec_vaddcuw(vui, vui); // HECK: @llvm.ppc.altivec.vaddcuw
111
112 /* vec_adds */
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000113 res_vsc = vec_adds(vsc, vsc); // CHECK: @llvm.ppc.altivec.vaddsbs
Anton Yartsev05e35552010-08-16 16:22:12 +0000114 res_vsc = vec_adds(vbc, vsc); // CHECK: @llvm.ppc.altivec.vaddsbs
115 res_vsc = vec_adds(vsc, vbc); // CHECK: @llvm.ppc.altivec.vaddsbs
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000116 res_vuc = vec_adds(vuc, vuc); // CHECK: @llvm.ppc.altivec.vaddubs
Anton Yartsev05e35552010-08-16 16:22:12 +0000117 res_vuc = vec_adds(vbc, vuc); // CHECK: @llvm.ppc.altivec.vaddubs
118 res_vuc = vec_adds(vuc, vbc); // CHECK: @llvm.ppc.altivec.vaddubs
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000119 res_vs = vec_adds(vs, vs); // CHECK: @llvm.ppc.altivec.vaddshs
Anton Yartsev05e35552010-08-16 16:22:12 +0000120 res_vs = vec_adds(vbs, vs); // CHECK: @llvm.ppc.altivec.vaddshs
121 res_vs = vec_adds(vs, vbs); // CHECK: @llvm.ppc.altivec.vaddshs
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000122 res_vus = vec_adds(vus, vus); // CHECK: @llvm.ppc.altivec.vadduhs
Anton Yartsev05e35552010-08-16 16:22:12 +0000123 res_vus = vec_adds(vbs, vus); // CHECK: @llvm.ppc.altivec.vadduhs
124 res_vus = vec_adds(vus, vbs); // CHECK: @llvm.ppc.altivec.vadduhs
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000125 res_vi = vec_adds(vi, vi); // CHECK: @llvm.ppc.altivec.vaddsws
Anton Yartsev05e35552010-08-16 16:22:12 +0000126 res_vi = vec_adds(vbi, vi); // CHECK: @llvm.ppc.altivec.vaddsws
127 res_vi = vec_adds(vi, vbi); // CHECK: @llvm.ppc.altivec.vaddsws
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000128 res_vui = vec_adds(vui, vui); // CHECK: @llvm.ppc.altivec.vadduws
Anton Yartsev05e35552010-08-16 16:22:12 +0000129 res_vui = vec_adds(vbi, vui); // CHECK: @llvm.ppc.altivec.vadduws
130 res_vui = vec_adds(vui, vbi); // CHECK: @llvm.ppc.altivec.vadduws
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000131 res_vsc = vec_vaddsbs(vsc, vsc); // CHECK: @llvm.ppc.altivec.vaddsbs
Anton Yartsev05e35552010-08-16 16:22:12 +0000132 res_vsc = vec_vaddsbs(vbc, vsc); // CHECK: @llvm.ppc.altivec.vaddsbs
133 res_vsc = vec_vaddsbs(vsc, vbc); // CHECK: @llvm.ppc.altivec.vaddsbs
Chris Lattnerdd173942010-04-14 03:54:58 +0000134 res_vuc = vec_vaddubs(vuc, vuc); // CHECK: @llvm.ppc.altivec.vaddubs
Anton Yartsev05e35552010-08-16 16:22:12 +0000135 res_vuc = vec_vaddubs(vbc, vuc); // CHECK: @llvm.ppc.altivec.vaddubs
136 res_vuc = vec_vaddubs(vuc, vbc); // CHECK: @llvm.ppc.altivec.vaddubs
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000137 res_vs = vec_vaddshs(vs, vs); // CHECK: @llvm.ppc.altivec.vaddshs
Anton Yartsev05e35552010-08-16 16:22:12 +0000138 res_vs = vec_vaddshs(vbs, vs); // CHECK: @llvm.ppc.altivec.vaddshs
139 res_vs = vec_vaddshs(vs, vbs); // CHECK: @llvm.ppc.altivec.vaddshs
Chris Lattnerdd173942010-04-14 03:54:58 +0000140 res_vus = vec_vadduhs(vus, vus); // CHECK: @llvm.ppc.altivec.vadduhs
Anton Yartsev05e35552010-08-16 16:22:12 +0000141 res_vus = vec_vadduhs(vbs, vus); // CHECK: @llvm.ppc.altivec.vadduhs
142 res_vus = vec_vadduhs(vus, vbs); // CHECK: @llvm.ppc.altivec.vadduhs
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000143 res_vi = vec_vaddsws(vi, vi); // CHECK: @llvm.ppc.altivec.vaddsws
Anton Yartsev05e35552010-08-16 16:22:12 +0000144 res_vi = vec_vaddsws(vbi, vi); // CHECK: @llvm.ppc.altivec.vaddsws
145 res_vi = vec_vaddsws(vi, vbi); // CHECK: @llvm.ppc.altivec.vaddsws
Chris Lattnerdd173942010-04-14 03:54:58 +0000146 res_vui = vec_vadduws(vui, vui); // CHECK: @llvm.ppc.altivec.vadduws
Anton Yartsev05e35552010-08-16 16:22:12 +0000147 res_vui = vec_vadduws(vbi, vui); // CHECK: @llvm.ppc.altivec.vadduws
148 res_vui = vec_vadduws(vui, vbi); // CHECK: @llvm.ppc.altivec.vadduws
Chris Lattnerdd173942010-04-14 03:54:58 +0000149
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000150 /* vec_and */
151 res_vsc = vec_and(vsc, vsc); // CHECK: and <16 x i8>
Anton Yartsev05e35552010-08-16 16:22:12 +0000152 res_vsc = vec_and(vbc, vsc); // CHECK: and <16 x i8>
153 res_vsc = vec_and(vsc, vbc); // CHECK: and <16 x i8>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000154 res_vuc = vec_and(vuc, vuc); // CHECK: and <16 x i8>
Anton Yartsev05e35552010-08-16 16:22:12 +0000155 res_vuc = vec_and(vbc, vuc); // CHECK: and <16 x i8>
156 res_vuc = vec_and(vuc, vbc); // CHECK: and <16 x i8>
157 res_vbc = vec_and(vbc, vbc); // CHECK: and <16 x i8>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000158 res_vs = vec_and(vs, vs); // CHECK: and <8 x i16>
Anton Yartsev05e35552010-08-16 16:22:12 +0000159 res_vs = vec_and(vbs, vs); // CHECK: and <8 x i16>
160 res_vs = vec_and(vs, vbs); // CHECK: and <8 x i16>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000161 res_vus = vec_and(vus, vus); // CHECK: and <8 x i16>
Anton Yartsev05e35552010-08-16 16:22:12 +0000162 res_vus = vec_and(vbs, vus); // CHECK: and <8 x i16>
163 res_vus = vec_and(vus, vbs); // CHECK: and <8 x i16>
164 res_vbs = vec_and(vbs, vbs); // CHECK: and <8 x i16>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000165 res_vi = vec_and(vi, vi); // CHECK: and <4 x i32>
Anton Yartsev05e35552010-08-16 16:22:12 +0000166 res_vi = vec_and(vbi, vi); // CHECK: and <4 x i32>
167 res_vi = vec_and(vi, vbi); // CHECK: and <4 x i32>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000168 res_vui = vec_and(vui, vui); // CHECK: and <4 x i32>
Anton Yartsev05e35552010-08-16 16:22:12 +0000169 res_vui = vec_and(vbi, vui); // CHECK: and <4 x i32>
170 res_vui = vec_and(vui, vbi); // CHECK: and <4 x i32>
171 res_vbi = vec_and(vbi, vbi); // CHECK: and <4 x i32>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000172 res_vsc = vec_vand(vsc, vsc); // CHECK: and <16 x i8>
Anton Yartsev05e35552010-08-16 16:22:12 +0000173 res_vsc = vec_vand(vbc, vsc); // CHECK: and <16 x i8>
174 res_vsc = vec_vand(vsc, vbc); // CHECK: and <16 x i8>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000175 res_vuc = vec_vand(vuc, vuc); // CHECK: and <16 x i8>
Anton Yartsev05e35552010-08-16 16:22:12 +0000176 res_vuc = vec_vand(vbc, vuc); // CHECK: and <16 x i8>
177 res_vuc = vec_vand(vuc, vbc); // CHECK: and <16 x i8>
178 res_vbc = vec_vand(vbc, vbc); // CHECK: and <16 x i8>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000179 res_vs = vec_vand(vs, vs); // CHECK: and <8 x i16>
Anton Yartsev05e35552010-08-16 16:22:12 +0000180 res_vs = vec_vand(vbs, vs); // CHECK: and <8 x i16>
181 res_vs = vec_vand(vs, vbs); // CHECK: and <8 x i16>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000182 res_vus = vec_vand(vus, vus); // CHECK: and <8 x i16>
Anton Yartsev05e35552010-08-16 16:22:12 +0000183 res_vus = vec_vand(vbs, vus); // CHECK: and <8 x i16>
184 res_vus = vec_vand(vus, vbs); // CHECK: and <8 x i16>
185 res_vbs = vec_vand(vbs, vbs); // CHECK: and <8 x i16>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000186 res_vi = vec_vand(vi, vi); // CHECK: and <4 x i32>
Anton Yartsev05e35552010-08-16 16:22:12 +0000187 res_vi = vec_vand(vbi, vi); // CHECK: and <4 x i32>
188 res_vi = vec_vand(vi, vbi); // CHECK: and <4 x i32>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000189 res_vui = vec_vand(vui, vui); // CHECK: and <4 x i32>
Anton Yartsev05e35552010-08-16 16:22:12 +0000190 res_vui = vec_vand(vbi, vui); // CHECK: and <4 x i32>
191 res_vui = vec_vand(vui, vbi); // CHECK: and <4 x i32>
192 res_vbi = vec_vand(vbi, vbi); // CHECK: and <4 x i32>
Chris Lattnerdd173942010-04-14 03:54:58 +0000193
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000194 /* vec_andc */
195 res_vsc = vec_andc(vsc, vsc); // CHECK: xor <16 x i8>
196 // CHECK: and <16 x i8>
197
Anton Yartsev05e35552010-08-16 16:22:12 +0000198 res_vsc = vec_andc(vbc, vsc); // CHECK: xor <16 x i8>
199 // CHECK: and <16 x i8>
200
201 res_vsc = vec_andc(vsc, vbc); // CHECK: xor <16 x i8>
202 // CHECK: and <16 x i8>
203
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000204 res_vuc = vec_andc(vuc, vuc); // CHECK: xor <16 x i8>
205 // CHECK: and <16 x i8>
206
Anton Yartsev05e35552010-08-16 16:22:12 +0000207 res_vuc = vec_andc(vbc, vuc); // CHECK: xor <16 x i8>
208 // CHECK: and <16 x i8>
209
210 res_vuc = vec_andc(vuc, vbc); // CHECK: xor <16 x i8>
211 // CHECK: and <16 x i8>
212
213 res_vbc = vec_andc(vbc, vbc); // CHECK: xor <16 x i8>
214 // CHECK: and <16 x i8>
215
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000216 res_vs = vec_andc(vs, vs); // CHECK: xor <8 x i16>
217 // CHECK: and <8 x i16>
218
Anton Yartsev05e35552010-08-16 16:22:12 +0000219 res_vs = vec_andc(vbs, vs); // CHECK: xor <8 x i16>
220 // CHECK: and <8 x i16>
221
222 res_vs = vec_andc(vs, vbs); // CHECK: xor <8 x i16>
223 // CHECK: and <8 x i16>
224
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000225 res_vus = vec_andc(vus, vus); // CHECK: xor <8 x i16>
226 // CHECK: and <8 x i16>
227
Anton Yartsev05e35552010-08-16 16:22:12 +0000228 res_vus = vec_andc(vbs, vus); // CHECK: xor <8 x i16>
229 // CHECK: and <8 x i16>
230
231 res_vus = vec_andc(vus, vbs); // CHECK: xor <8 x i16>
232 // CHECK: and <8 x i16>
233
234 res_vbs = vec_andc(vbs, vbs); // CHECK: xor <8 x i16>
235 // CHECK: and <8 x i16>
236
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000237 res_vi = vec_andc(vi, vi); // CHECK: xor <4 x i32>
238 // CHECK: and <4 x i32>
239
Anton Yartsev05e35552010-08-16 16:22:12 +0000240 res_vi = vec_andc(vbi, vi); // CHECK: xor <4 x i32>
241 // CHECK: and <4 x i32>
242
243 res_vi = vec_andc(vi, vbi); // CHECK: xor <4 x i32>
244 // CHECK: and <4 x i32>
245
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000246 res_vui = vec_andc(vui, vui); // CHECK: xor <4 x i32>
247 // CHECK: and <4 x i32>
248
Anton Yartsev05e35552010-08-16 16:22:12 +0000249 res_vui = vec_andc(vbi, vui); // CHECK: xor <4 x i32>
250 // CHECK: and <4 x i32>
251
252 res_vui = vec_andc(vui, vbi); // CHECK: xor <4 x i32>
253 // CHECK: and <4 x i32>
254
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000255 res_vf = vec_andc(vf, vf); // CHECK: xor <4 x i32>
256 // CHECK: and <4 x i32>
257
Anton Yartsev05e35552010-08-16 16:22:12 +0000258 res_vf = vec_andc(vbi, vf); // CHECK: xor <4 x i32>
259 // CHECK: and <4 x i32>
260
261 res_vf = vec_andc(vf, vbi); // CHECK: xor <4 x i32>
262 // CHECK: and <4 x i32>
263
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000264 res_vsc = vec_vandc(vsc, vsc); // CHECK: xor <16 x i8>
265 // CHECK: and <16 x i8>
266
Anton Yartsev05e35552010-08-16 16:22:12 +0000267 res_vsc = vec_vandc(vbc, vsc); // CHECK: xor <16 x i8>
268 // CHECK: and <16 x i8>
269
270 res_vsc = vec_vandc(vsc, vbc); // CHECK: xor <16 x i8>
271 // CHECK: and <16 x i8>
272
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000273 res_vuc = vec_vandc(vuc, vuc); // CHECK: xor <16 x i8>
274 // CHECK: and <16 x i8>
275
Anton Yartsev05e35552010-08-16 16:22:12 +0000276 res_vuc = vec_vandc(vbc, vuc); // CHECK: xor <16 x i8>
277 // CHECK: and <16 x i8>
278
279 res_vuc = vec_vandc(vuc, vbc); // CHECK: xor <16 x i8>
280 // CHECK: and <16 x i8>
281
282 res_vbc = vec_vandc(vbc, vbc); // CHECK: xor <16 x i8>
283 // CHECK: and <16 x i8>
284
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000285 res_vs = vec_vandc(vs, vs); // CHECK: xor <8 x i16>
286 // CHECK: and <8 x i16>
287
Anton Yartsev05e35552010-08-16 16:22:12 +0000288 res_vs = vec_vandc(vbs, vs); // CHECK: xor <8 x i16>
289 // CHECK: and <8 x i16>
290
291 res_vs = vec_vandc(vs, vbs); // CHECK: xor <8 x i16>
292 // CHECK: and <8 x i16>
293
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000294 res_vus = vec_vandc(vus, vus); // CHECK: xor <8 x i16>
295 // CHECK: and <8 x i16>
296
Anton Yartsev05e35552010-08-16 16:22:12 +0000297 res_vus = vec_vandc(vbs, vus); // CHECK: xor <8 x i16>
298 // CHECK: and <8 x i16>
299
300 res_vus = vec_vandc(vus, vbs); // CHECK: xor <8 x i16>
301 // CHECK: and <8 x i16>
302
303 res_vbs = vec_vandc(vbs, vbs); // CHECK: xor <8 x i16>
304 // CHECK: and <8 x i16>
305
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000306 res_vi = vec_vandc(vi, vi); // CHECK: xor <4 x i32>
307 // CHECK: and <4 x i32>
308
Anton Yartsev05e35552010-08-16 16:22:12 +0000309 res_vi = vec_vandc(vbi, vi); // CHECK: xor <4 x i32>
310 // CHECK: and <4 x i32>
311
312 res_vi = vec_vandc(vi, vbi); // CHECK: xor <4 x i32>
313 // CHECK: and <4 x i32>
314
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000315 res_vui = vec_vandc(vui, vui); // CHECK: xor <4 x i32>
316 // CHECK: and <4 x i32>
317
Anton Yartsev05e35552010-08-16 16:22:12 +0000318 res_vui = vec_vandc(vbi, vui); // CHECK: xor <4 x i32>
319 // CHECK: and <4 x i32>
320
321 res_vui = vec_vandc(vui, vbi); // CHECK: xor <4 x i32>
322 // CHECK: and <4 x i32>
323
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000324 res_vf = vec_vandc(vf, vf); // CHECK: xor <4 x i32>
325 // CHECK: and <4 x i32>
Anton Yartsev05e35552010-08-16 16:22:12 +0000326
327 res_vf = vec_vandc(vbi, vf); // CHECK: xor <4 x i32>
328 // CHECK: and <4 x i32>
329
330 res_vf = vec_vandc(vf, vbi); // CHECK: xor <4 x i32>
331 // CHECK: and <4 x i32>
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000332
Chris Lattner35b21b82010-06-27 01:06:27 +0000333}
Chris Lattnerdd173942010-04-14 03:54:58 +0000334
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000335// CHECK: define void @test2
336void test2() {
Chris Lattnerdd173942010-04-14 03:54:58 +0000337 /* vec_avg */
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000338 res_vsc = vec_avg(vsc, vsc); // CHECK: @llvm.ppc.altivec.vavgsb
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000339 res_vuc = vec_avg(vuc, vuc); // CHECK: @llvm.ppc.altivec.vavgub
340 res_vs = vec_avg(vs, vs); // CHECK: @llvm.ppc.altivec.vavgsh
341 res_vus = vec_avg(vus, vus); // CHECK: @llvm.ppc.altivec.vavguh
342 res_vi = vec_avg(vi, vi); // CHECK: @llvm.ppc.altivec.vavgsw
343 res_vui = vec_avg(vui, vui); // CHECK: @llvm.ppc.altivec.vavguw
344 res_vsc = vec_vavgsb(vsc, vsc); // CHECK: @llvm.ppc.altivec.vavgsb
345 res_vuc = vec_vavgub(vuc, vuc); // CHECK: @llvm.ppc.altivec.vavgub
Chris Lattnerdd173942010-04-14 03:54:58 +0000346 res_vs = vec_vavgsh(vs, vs); // CHECK: @llvm.ppc.altivec.vavgsh
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000347 res_vus = vec_vavguh(vus, vus); // CHECK: @llvm.ppc.altivec.vavguh
Chris Lattnerdd173942010-04-14 03:54:58 +0000348 res_vi = vec_vavgsw(vi, vi); // CHECK: @llvm.ppc.altivec.vavgsw
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000349 res_vui = vec_vavguw(vui, vui); // CHECK: @llvm.ppc.altivec.vavguw
Chris Lattnerdd173942010-04-14 03:54:58 +0000350
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000351 /* vec_ceil */
352 res_vf = vec_ceil(vf); // CHECK: @llvm.ppc.altivec.vrfip
353 res_vf = vec_vrfip(vf); // CHECK: @llvm.ppc.altivec.vrfip
Chris Lattnerdd173942010-04-14 03:54:58 +0000354
355 /* vec_cmpb */
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000356 res_vi = vec_cmpb(vf, vf); // CHECK: @llvm.ppc.altivec.vcmpbfp
Chris Lattnerdd173942010-04-14 03:54:58 +0000357 res_vi = vec_vcmpbfp(vf, vf); // CHECK: @llvm.ppc.altivec.vcmpbfp
358
359 /* vec_cmpeq */
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000360 res_vbc = vec_cmpeq(vsc, vsc); // CHECK: @llvm.ppc.altivec.vcmpequb
361 res_vbc = vec_cmpeq(vuc, vuc); // CHECK: @llvm.ppc.altivec.vcmpequb
362 res_vbs = vec_cmpeq(vs, vs); // CHECK: @llvm.ppc.altivec.vcmpequh
363 res_vbs = vec_cmpeq(vus, vus); // CHECK: @llvm.ppc.altivec.vcmpequh
364 res_vbi = vec_cmpeq(vi, vi); // CHECK: @llvm.ppc.altivec.vcmpequw
365 res_vbi = vec_cmpeq(vui, vui); // CHECK: @llvm.ppc.altivec.vcmpequw
366 res_vbi = vec_cmpeq(vf, vf); // CHECK: @llvm.ppc.altivec.vcmpeqfp
Chris Lattnerdd173942010-04-14 03:54:58 +0000367
368 /* vec_cmpge */
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000369 res_vbi = vec_cmpge(vf, vf); // CHECK: @llvm.ppc.altivec.vcmpgefp
370 res_vbi = vec_vcmpgefp(vf, vf); // CHECK: @llvm.ppc.altivec.vcmpgefp
Chris Lattner35b21b82010-06-27 01:06:27 +0000371}
372
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000373// CHECK: define void @test5
374void test5() {
Chris Lattner35b21b82010-06-27 01:06:27 +0000375
Chris Lattnerdd173942010-04-14 03:54:58 +0000376 /* vec_cmpgt */
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000377 res_vbc = vec_cmpgt(vsc, vsc); // CHECK: @llvm.ppc.altivec.vcmpgtsb
378 res_vbc = vec_cmpgt(vuc, vuc); // CHECK: @llvm.ppc.altivec.vcmpgtub
379 res_vbs = vec_cmpgt(vs, vs); // CHECK: @llvm.ppc.altivec.vcmpgtsh
380 res_vbs = vec_cmpgt(vus, vus); // CHECK: @llvm.ppc.altivec.vcmpgtuh
381 res_vbi = vec_cmpgt(vi, vi); // CHECK: @llvm.ppc.altivec.vcmpgtsw
382 res_vbi = vec_cmpgt(vui, vui); // CHECK: @llvm.ppc.altivec.vcmpgtuw
383 res_vbi = vec_cmpgt(vf, vf); // CHECK: @llvm.ppc.altivec.vcmpgtfp
384 res_vbc = vec_vcmpgtsb(vsc, vsc); // CHECK: @llvm.ppc.altivec.vcmpgtsb
385 res_vbc = vec_vcmpgtub(vuc, vuc); // CHECK: @llvm.ppc.altivec.vcmpgtub
386 res_vbs = vec_vcmpgtsh(vs, vs); // CHECK: @llvm.ppc.altivec.vcmpgtsh
387 res_vbs = vec_vcmpgtuh(vus, vus); // CHECK: @llvm.ppc.altivec.vcmpgtuh
388 res_vbi = vec_vcmpgtsw(vi, vi); // CHECK: @llvm.ppc.altivec.vcmpgtsw
389 res_vbi = vec_vcmpgtuw(vui, vui); // CHECK: @llvm.ppc.altivec.vcmpgtuw
390 res_vbi = vec_vcmpgtfp(vf, vf); // CHECK: @llvm.ppc.altivec.vcmpgtfp
Chris Lattnerdd173942010-04-14 03:54:58 +0000391
392 /* vec_cmple */
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000393 res_vbi = vec_cmple(vf, vf); // CHECK: @llvm.ppc.altivec.vcmpgefp
Chris Lattner35b21b82010-06-27 01:06:27 +0000394}
Chris Lattnerdd173942010-04-14 03:54:58 +0000395
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000396// CHECK: define void @test6
397void test6() {
Chris Lattnerdd173942010-04-14 03:54:58 +0000398 /* vec_cmplt */
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000399 res_vbc = vec_cmplt(vsc, vsc); // CHECK: @llvm.ppc.altivec.vcmpgtsb
400 res_vbc = vec_cmplt(vuc, vuc); // CHECK: @llvm.ppc.altivec.vcmpgtub
401 res_vbs = vec_cmplt(vs, vs); // CHECK: @llvm.ppc.altivec.vcmpgtsh
402 res_vbs = vec_cmplt(vus, vus); // CHECK: @llvm.ppc.altivec.vcmpgtuh
403 res_vbi = vec_cmplt(vi, vi); // CHECK: @llvm.ppc.altivec.vcmpgtsw
404 res_vbi = vec_cmplt(vui, vui); // CHECK: @llvm.ppc.altivec.vcmpgtuw
405 res_vbi = vec_cmplt(vf, vf); // CHECK: @llvm.ppc.altivec.vcmpgtfp
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000406
407 /* vec_ctf */
408 res_vf = vec_ctf(vi, param_i); // CHECK: @llvm.ppc.altivec.vcfsx
409 res_vf = vec_ctf(vui, 0); // CHECK: @llvm.ppc.altivec.vcfux
410 res_vf = vec_vcfsx(vi, 0); // CHECK: @llvm.ppc.altivec.vcfsx
411 res_vf = vec_vcfux(vui, 0); // CHECK: @llvm.ppc.altivec.vcfux
412
413 /* vec_cts */
414 res_vi = vec_cts(vf, 0); // CHECK: @llvm.ppc.altivec.vctsxs
415 res_vi = vec_vctsxs(vf, 0); // CHECK: @llvm.ppc.altivec.vctsxs
416
417 /* vec_ctu */
418 res_vui = vec_ctu(vf, 0); // CHECK: @llvm.ppc.altivec.vctuxs
419 res_vui = vec_vctuxs(vf, 0); // CHECK: @llvm.ppc.altivec.vctuxs
420
421 /* vec_dss */
422 vec_dss(param_i); // CHECK: @llvm.ppc.altivec.dss
423
424 /* vec_dssall */
425 vec_dssall(); // CHECK: @llvm.ppc.altivec.dssall
426
427 /* vec_dst */
428 vec_dst(&vsc, 0, 0); // CHECK: @llvm.ppc.altivec.dst
429
430 /* vec_dstst */
431 vec_dstst(&vs, 0, 0); // CHECK: @llvm.ppc.altivec.dstst
432
433 /* vec_dststt */
434 vec_dststt(&param_i, 0, 0); // CHECK: @llvm.ppc.altivec.dststt
435
436 /* vec_dstt */
437 vec_dstt(&vf, 0, 0); // CHECK: @llvm.ppc.altivec.dstt
438
439 /* vec_expte */
440 res_vf = vec_expte(vf); // CHECK: @llvm.ppc.altivec.vexptefp
441 res_vf = vec_vexptefp(vf); // CHECK: @llvm.ppc.altivec.vexptefp
442
443 /* vec_floor */
444 res_vf = vec_floor(vf); // CHECK: @llvm.ppc.altivec.vrfim
445 res_vf = vec_vrfim(vf); // CHECK: @llvm.ppc.altivec.vrfim
446
447 /* vec_ld */
448 res_vsc = vec_ld(0, &vsc); // CHECK: @llvm.ppc.altivec.lvx
449 res_vsc = vec_ld(0, &param_sc); // CHECK: @llvm.ppc.altivec.lvx
450 res_vuc = vec_ld(0, &vuc); // CHECK: @llvm.ppc.altivec.lvx
451 res_vuc = vec_ld(0, &param_uc); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000452 res_vbc = vec_ld(0, &vbc); // CHECK: @llvm.ppc.altivec.lvx
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000453 res_vs = vec_ld(0, &vs); // CHECK: @llvm.ppc.altivec.lvx
454 res_vs = vec_ld(0, &param_s); // CHECK: @llvm.ppc.altivec.lvx
455 res_vus = vec_ld(0, &vus); // CHECK: @llvm.ppc.altivec.lvx
456 res_vus = vec_ld(0, &param_us); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000457 res_vbs = vec_ld(0, &vbs); // CHECK: @llvm.ppc.altivec.lvx
458 res_vp = vec_ld(0, &vp); // CHECK: @llvm.ppc.altivec.lvx
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000459 res_vi = vec_ld(0, &vi); // CHECK: @llvm.ppc.altivec.lvx
460 res_vi = vec_ld(0, &param_i); // CHECK: @llvm.ppc.altivec.lvx
461 res_vui = vec_ld(0, &vui); // CHECK: @llvm.ppc.altivec.lvx
462 res_vui = vec_ld(0, &param_ui); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000463 res_vbi = vec_ld(0, &vbi); // CHECK: @llvm.ppc.altivec.lvx
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000464 res_vf = vec_ld(0, &vf); // CHECK: @llvm.ppc.altivec.lvx
465 res_vf = vec_ld(0, &param_f); // CHECK: @llvm.ppc.altivec.lvx
466 res_vsc = vec_lvx(0, &vsc); // CHECK: @llvm.ppc.altivec.lvx
467 res_vsc = vec_lvx(0, &param_sc); // CHECK: @llvm.ppc.altivec.lvx
468 res_vuc = vec_lvx(0, &vuc); // CHECK: @llvm.ppc.altivec.lvx
469 res_vuc = vec_lvx(0, &param_uc); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000470 res_vbc = vec_lvx(0, &vbc); // CHECK: @llvm.ppc.altivec.lvx
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000471 res_vs = vec_lvx(0, &vs); // CHECK: @llvm.ppc.altivec.lvx
472 res_vs = vec_lvx(0, &param_s); // CHECK: @llvm.ppc.altivec.lvx
473 res_vus = vec_lvx(0, &vus); // CHECK: @llvm.ppc.altivec.lvx
474 res_vus = vec_lvx(0, &param_us); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000475 res_vbs = vec_lvx(0, &vbs); // CHECK: @llvm.ppc.altivec.lvx
476 res_vp = vec_lvx(0, &vp); // CHECK: @llvm.ppc.altivec.lvx
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000477 res_vi = vec_lvx(0, &vi); // CHECK: @llvm.ppc.altivec.lvx
478 res_vi = vec_lvx(0, &param_i); // CHECK: @llvm.ppc.altivec.lvx
479 res_vui = vec_lvx(0, &vui); // CHECK: @llvm.ppc.altivec.lvx
480 res_vui = vec_lvx(0, &param_ui); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000481 res_vbi = vec_lvx(0, &vbi); // CHECK: @llvm.ppc.altivec.lvx
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000482 res_vf = vec_lvx(0, &vf); // CHECK: @llvm.ppc.altivec.lvx
483 res_vf = vec_lvx(0, &param_f); // CHECK: @llvm.ppc.altivec.lvx
484
485 /* vec_lde */
486 res_vsc = vec_lde(0, &vsc); // CHECK: @llvm.ppc.altivec.lvebx
487 res_vuc = vec_lde(0, &vuc); // CHECK: @llvm.ppc.altivec.lvebx
488 res_vs = vec_lde(0, &vs); // CHECK: @llvm.ppc.altivec.lvehx
489 res_vus = vec_lde(0, &vus); // CHECK: @llvm.ppc.altivec.lvehx
490 res_vi = vec_lde(0, &vi); // CHECK: @llvm.ppc.altivec.lvewx
491 res_vui = vec_lde(0, &vui); // CHECK: @llvm.ppc.altivec.lvewx
492 res_vf = vec_lde(0, &vf); // CHECK: @llvm.ppc.altivec.lvewx
493 res_vsc = vec_lvebx(0, &vsc); // CHECK: @llvm.ppc.altivec.lvebx
494 res_vuc = vec_lvebx(0, &vuc); // CHECK: @llvm.ppc.altivec.lvebx
495 res_vs = vec_lvehx(0, &vs); // CHECK: @llvm.ppc.altivec.lvehx
496 res_vus = vec_lvehx(0, &vus); // CHECK: @llvm.ppc.altivec.lvehx
497 res_vi = vec_lvewx(0, &vi); // CHECK: @llvm.ppc.altivec.lvewx
498 res_vui = vec_lvewx(0, &vui); // CHECK: @llvm.ppc.altivec.lvewx
499 res_vf = vec_lvewx(0, &vf); // CHECK: @llvm.ppc.altivec.lvewx
500
501 /* vec_ldl */
502 res_vsc = vec_ldl(0, &vsc); // CHECK: @llvm.ppc.altivec.lvxl
503 res_vsc = vec_ldl(0, &param_sc); // CHECK: @llvm.ppc.altivec.lvxl
504 res_vuc = vec_ldl(0, &vuc); // CHECK: @llvm.ppc.altivec.lvxl
505 res_vuc = vec_ldl(0, &param_uc); // CHECK: @llvm.ppc.altivec.lvxl
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000506 res_vbc = vec_ldl(0, &vbc); // CHECK: @llvm.ppc.altivec.lvxl
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000507 res_vs = vec_ldl(0, &vs); // CHECK: @llvm.ppc.altivec.lvxl
508 res_vs = vec_ldl(0, &param_s); // CHECK: @llvm.ppc.altivec.lvxl
509 res_vus = vec_ldl(0, &vus); // CHECK: @llvm.ppc.altivec.lvxl
510 res_vus = vec_ldl(0, &param_us); // CHECK: @llvm.ppc.altivec.lvxl
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000511 res_vbs = vec_ldl(0, &vbs); // CHECK: @llvm.ppc.altivec.lvxl
512 res_vp = vec_ldl(0, &vp); // CHECK: @llvm.ppc.altivec.lvxl
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000513 res_vi = vec_ldl(0, &vi); // CHECK: @llvm.ppc.altivec.lvxl
514 res_vi = vec_ldl(0, &param_i); // CHECK: @llvm.ppc.altivec.lvxl
515 res_vui = vec_ldl(0, &vui); // CHECK: @llvm.ppc.altivec.lvxl
516 res_vui = vec_ldl(0, &param_ui); // CHECK: @llvm.ppc.altivec.lvxl
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000517 res_vbi = vec_ldl(0, &vbi); // CHECK: @llvm.ppc.altivec.lvxl
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000518 res_vf = vec_ldl(0, &vf); // CHECK: @llvm.ppc.altivec.lvxl
519 res_vf = vec_ldl(0, &param_f); // CHECK: @llvm.ppc.altivec.lvxl
520 res_vsc = vec_lvxl(0, &vsc); // CHECK: @llvm.ppc.altivec.lvxl
521 res_vsc = vec_lvxl(0, &param_sc); // CHECK: @llvm.ppc.altivec.lvxl
522 res_vuc = vec_lvxl(0, &vuc); // CHECK: @llvm.ppc.altivec.lvxl
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000523 res_vbc = vec_lvxl(0, &vbc); // CHECK: @llvm.ppc.altivec.lvxl
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000524 res_vuc = vec_lvxl(0, &param_uc); // CHECK: @llvm.ppc.altivec.lvxl
525 res_vs = vec_lvxl(0, &vs); // CHECK: @llvm.ppc.altivec.lvxl
526 res_vs = vec_lvxl(0, &param_s); // CHECK: @llvm.ppc.altivec.lvxl
527 res_vus = vec_lvxl(0, &vus); // CHECK: @llvm.ppc.altivec.lvxl
528 res_vus = vec_lvxl(0, &param_us); // CHECK: @llvm.ppc.altivec.lvxl
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000529 res_vbs = vec_lvxl(0, &vbs); // CHECK: @llvm.ppc.altivec.lvxl
530 res_vp = vec_lvxl(0, &vp); // CHECK: @llvm.ppc.altivec.lvxl
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000531 res_vi = vec_lvxl(0, &vi); // CHECK: @llvm.ppc.altivec.lvxl
532 res_vi = vec_lvxl(0, &param_i); // CHECK: @llvm.ppc.altivec.lvxl
533 res_vui = vec_lvxl(0, &vui); // CHECK: @llvm.ppc.altivec.lvxl
534 res_vui = vec_lvxl(0, &param_ui); // CHECK: @llvm.ppc.altivec.lvxl
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000535 res_vbi = vec_lvxl(0, &vbi); // CHECK: @llvm.ppc.altivec.lvxl
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000536 res_vf = vec_lvxl(0, &vf); // CHECK: @llvm.ppc.altivec.lvxl
537 res_vf = vec_lvxl(0, &param_f); // CHECK: @llvm.ppc.altivec.lvxl
538
539 /* vec_loge */
540 res_vf = vec_loge(vf); // CHECK: @llvm.ppc.altivec.vlogefp
541 res_vf = vec_vlogefp(vf); // CHECK: @llvm.ppc.altivec.vlogefp
542
543 /* vec_lvsl */
544 res_vuc = vec_lvsl(0, &param_i); // CHECK: @llvm.ppc.altivec.lvsl
545
546 /* vec_lvsr */
547 res_vuc = vec_lvsr(0, &param_i); // CHECK: @llvm.ppc.altivec.lvsr
548
549 /* vec_madd */
550 res_vf =vec_madd(vf, vf, vf); // CHECK: @llvm.ppc.altivec.vmaddfp
551 res_vf = vec_vmaddfp(vf, vf, vf); // CHECK: @llvm.ppc.altivec.vmaddfp
552
553 /* vec_madds */
554 res_vs = vec_madds(vs, vs, vs); // CHECK: @llvm.ppc.altivec.vmhaddshs
555 res_vs = vec_vmhaddshs(vs, vs, vs); // CHECK: @llvm.ppc.altivec.vmhaddshs
Chris Lattnerdd173942010-04-14 03:54:58 +0000556
557 /* vec_max */
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000558 res_vsc = vec_max(vsc, vsc); // CHECK: @llvm.ppc.altivec.vmaxsb
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000559 res_vsc = vec_max(vbc, vsc); // CHECK: @llvm.ppc.altivec.vmaxsb
560 res_vsc = vec_max(vsc, vbc); // CHECK: @llvm.ppc.altivec.vmaxsb
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000561 res_vuc = vec_max(vuc, vuc); // CHECK: @llvm.ppc.altivec.vmaxub
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000562 res_vuc = vec_max(vbc, vuc); // CHECK: @llvm.ppc.altivec.vmaxub
563 res_vuc = vec_max(vuc, vbc); // CHECK: @llvm.ppc.altivec.vmaxub
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000564 res_vs = vec_max(vs, vs); // CHECK: @llvm.ppc.altivec.vmaxsh
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000565 res_vs = vec_max(vbs, vs); // CHECK: @llvm.ppc.altivec.vmaxsh
566 res_vs = vec_max(vs, vbs); // CHECK: @llvm.ppc.altivec.vmaxsh
Chris Lattnerdd173942010-04-14 03:54:58 +0000567 res_vus = vec_max(vus, vus); // CHECK: @llvm.ppc.altivec.vmaxuh
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000568 res_vus = vec_max(vbs, vus); // CHECK: @llvm.ppc.altivec.vmaxuh
569 res_vus = vec_max(vus, vbs); // CHECK: @llvm.ppc.altivec.vmaxuh
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000570 res_vi = vec_max(vi, vi); // CHECK: @llvm.ppc.altivec.vmaxsw
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000571 res_vi = vec_max(vbi, vi); // CHECK: @llvm.ppc.altivec.vmaxsw
572 res_vi = vec_max(vi, vbi); // CHECK: @llvm.ppc.altivec.vmaxsw
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000573 res_vui = vec_max(vui, vui); // CHECK: @llvm.ppc.altivec.vmaxuw
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000574 res_vui = vec_max(vbi, vui); // CHECK: @llvm.ppc.altivec.vmaxuw
575 res_vui = vec_max(vui, vbi); // CHECK: @llvm.ppc.altivec.vmaxuw
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000576 res_vf = vec_max(vf, vf); // CHECK: @llvm.ppc.altivec.vmaxfp
577 res_vsc = vec_vmaxsb(vsc, vsc); // CHECK: @llvm.ppc.altivec.vmaxsb
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000578 res_vsc = vec_vmaxsb(vbc, vsc); // CHECK: @llvm.ppc.altivec.vmaxsb
579 res_vsc = vec_vmaxsb(vsc, vbc); // CHECK: @llvm.ppc.altivec.vmaxsb
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000580 res_vuc = vec_vmaxub(vuc, vuc); // CHECK: @llvm.ppc.altivec.vmaxub
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000581 res_vuc = vec_vmaxub(vbc, vuc); // CHECK: @llvm.ppc.altivec.vmaxub
582 res_vuc = vec_vmaxub(vuc, vbc); // CHECK: @llvm.ppc.altivec.vmaxub
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000583 res_vs = vec_vmaxsh(vs, vs); // CHECK: @llvm.ppc.altivec.vmaxsh
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000584 res_vs = vec_vmaxsh(vbs, vs); // CHECK: @llvm.ppc.altivec.vmaxsh
585 res_vs = vec_vmaxsh(vs, vbs); // CHECK: @llvm.ppc.altivec.vmaxsh
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000586 res_vus = vec_vmaxuh(vus, vus); // CHECK: @llvm.ppc.altivec.vmaxuh
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000587 res_vus = vec_vmaxuh(vbs, vus); // CHECK: @llvm.ppc.altivec.vmaxuh
588 res_vus = vec_vmaxuh(vus, vbs); // CHECK: @llvm.ppc.altivec.vmaxuh
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000589 res_vi = vec_vmaxsw(vi, vi); // CHECK: @llvm.ppc.altivec.vmaxsw
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000590 res_vi = vec_vmaxsw(vbi, vi); // CHECK: @llvm.ppc.altivec.vmaxsw
591 res_vi = vec_vmaxsw(vi, vbi); // CHECK: @llvm.ppc.altivec.vmaxsw
Chris Lattnerdd173942010-04-14 03:54:58 +0000592 res_vui = vec_vmaxuw(vui, vui); // CHECK: @llvm.ppc.altivec.vmaxuw
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000593 res_vui = vec_vmaxuw(vbi, vui); // CHECK: @llvm.ppc.altivec.vmaxuw
594 res_vui = vec_vmaxuw(vui, vbi); // CHECK: @llvm.ppc.altivec.vmaxuw
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000595 res_vf = vec_vmaxfp(vf, vf); // CHECK: @llvm.ppc.altivec.vmaxfp
596
597 /* vec_mergeh */
598 res_vsc = vec_mergeh(vsc, vsc); // CHECK: @llvm.ppc.altivec.vperm
599 res_vuc = vec_mergeh(vuc, vuc); // CHECK: @llvm.ppc.altivec.vperm
Anton Yartsevf54dbfd2010-08-19 03:00:09 +0000600 res_vbc = vec_mergeh(vbc, vbc); // CHECK: @llvm.ppc.altivec.vperm
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000601 res_vs = vec_mergeh(vs, vs); // CHECK: @llvm.ppc.altivec.vperm
Anton Yartsevf54dbfd2010-08-19 03:00:09 +0000602 res_vp = vec_mergeh(vp, vp); // CHECK: @llvm.ppc.altivec.vperm
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000603 res_vus = vec_mergeh(vus, vus); // CHECK: @llvm.ppc.altivec.vperm
Anton Yartsevf54dbfd2010-08-19 03:00:09 +0000604 res_vbs = vec_mergeh(vbs, vbs); // CHECK: @llvm.ppc.altivec.vperm
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000605 res_vi = vec_mergeh(vi, vi); // CHECK: @llvm.ppc.altivec.vperm
606 res_vui = vec_mergeh(vui, vui); // CHECK: @llvm.ppc.altivec.vperm
Anton Yartsevf54dbfd2010-08-19 03:00:09 +0000607 res_vbi = vec_mergeh(vbi, vbi); // CHECK: @llvm.ppc.altivec.vperm
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000608 res_vf = vec_mergeh(vf, vf); // CHECK: @llvm.ppc.altivec.vperm
609 res_vsc = vec_vmrghb(vsc, vsc); // CHECK: @llvm.ppc.altivec.vperm
610 res_vuc = vec_vmrghb(vuc, vuc); // CHECK: @llvm.ppc.altivec.vperm
Anton Yartsevf54dbfd2010-08-19 03:00:09 +0000611 res_vbc = vec_vmrghb(vbc, vbc); // CHECK: @llvm.ppc.altivec.vperm
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000612 res_vs = vec_vmrghh(vs, vs); // CHECK: @llvm.ppc.altivec.vperm
Anton Yartsevf54dbfd2010-08-19 03:00:09 +0000613 res_vp = vec_vmrghh(vp, vp); // CHECK: @llvm.ppc.altivec.vperm
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000614 res_vus = vec_vmrghh(vus, vus); // CHECK: @llvm.ppc.altivec.vperm
Anton Yartsevf54dbfd2010-08-19 03:00:09 +0000615 res_vbs = vec_vmrghh(vbs, vbs); // CHECK: @llvm.ppc.altivec.vperm
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000616 res_vi = vec_vmrghw(vi, vi); // CHECK: @llvm.ppc.altivec.vperm
617 res_vui = vec_vmrghw(vui, vui); // CHECK: @llvm.ppc.altivec.vperm
Anton Yartsevf54dbfd2010-08-19 03:00:09 +0000618 res_vbi = vec_vmrghw(vbi, vbi); // CHECK: @llvm.ppc.altivec.vperm
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000619 res_vf = vec_vmrghw(vf, vf); // CHECK: @llvm.ppc.altivec.vperm
620
621 /* vec_mergel */
622 res_vsc = vec_mergel(vsc, vsc); // CHECK: @llvm.ppc.altivec.vperm
623 res_vuc = vec_mergel(vuc, vuc); // CHECK: @llvm.ppc.altivec.vperm
Anton Yartsevf54dbfd2010-08-19 03:00:09 +0000624 res_vbc = vec_mergel(vbc, vbc); // CHECK: @llvm.ppc.altivec.vperm
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000625 res_vs = vec_mergel(vs, vs); // CHECK: @llvm.ppc.altivec.vperm
Anton Yartsevf54dbfd2010-08-19 03:00:09 +0000626 res_vp = vec_mergeh(vp, vp); // CHECK: @llvm.ppc.altivec.vperm
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000627 res_vus = vec_mergel(vus, vus); // CHECK: @llvm.ppc.altivec.vperm
Anton Yartsevf54dbfd2010-08-19 03:00:09 +0000628 res_vbs = vec_mergel(vbs, vbs); // CHECK: @llvm.ppc.altivec.vperm
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000629 res_vi = vec_mergel(vi, vi); // CHECK: @llvm.ppc.altivec.vperm
630 res_vui = vec_mergel(vui, vui); // CHECK: @llvm.ppc.altivec.vperm
Anton Yartsevf54dbfd2010-08-19 03:00:09 +0000631 res_vbi = vec_mergel(vbi, vbi); // CHECK: @llvm.ppc.altivec.vperm
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000632 res_vf = vec_mergel(vf, vf); // CHECK: @llvm.ppc.altivec.vperm
633 res_vsc = vec_vmrglb(vsc, vsc); // CHECK: @llvm.ppc.altivec.vperm
634 res_vuc = vec_vmrglb(vuc, vuc); // CHECK: @llvm.ppc.altivec.vperm
Anton Yartsevf54dbfd2010-08-19 03:00:09 +0000635 res_vbc = vec_vmrglb(vbc, vbc); // CHECK: @llvm.ppc.altivec.vperm
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000636 res_vs = vec_vmrglh(vs, vs); // CHECK: @llvm.ppc.altivec.vperm
Anton Yartsevf54dbfd2010-08-19 03:00:09 +0000637 res_vp = vec_vmrglh(vp, vp); // CHECK: @llvm.ppc.altivec.vperm
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000638 res_vus = vec_vmrglh(vus, vus); // CHECK: @llvm.ppc.altivec.vperm
Anton Yartsevf54dbfd2010-08-19 03:00:09 +0000639 res_vbs = vec_vmrglh(vbs, vbs); // CHECK: @llvm.ppc.altivec.vperm
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000640 res_vi = vec_vmrglw(vi, vi); // CHECK: @llvm.ppc.altivec.vperm
641 res_vui = vec_vmrglw(vui, vui); // CHECK: @llvm.ppc.altivec.vperm
Anton Yartsevf54dbfd2010-08-19 03:00:09 +0000642 res_vbi = vec_vmrglw(vbi, vbi); // CHECK: @llvm.ppc.altivec.vperm
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000643 res_vf = vec_vmrglw(vf, vf); // CHECK: @llvm.ppc.altivec.vperm
Chris Lattnerdd173942010-04-14 03:54:58 +0000644
645 /* vec_mfvscr */
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000646 vus = vec_mfvscr(); // CHECK: @llvm.ppc.altivec.mfvscr
Chris Lattnerdd173942010-04-14 03:54:58 +0000647
648 /* vec_min */
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000649 res_vsc = vec_min(vsc, vsc); // CHECK: @llvm.ppc.altivec.vminsb
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000650 res_vsc = vec_min(vbc, vsc); // CHECK: @llvm.ppc.altivec.vminsb
651 res_vsc = vec_min(vsc, vbc); // CHECK: @llvm.ppc.altivec.vminsb
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000652 res_vuc = vec_min(vuc, vuc); // CHECK: @llvm.ppc.altivec.vminub
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000653 res_vuc = vec_min(vbc, vuc); // CHECK: @llvm.ppc.altivec.vminub
654 res_vuc = vec_min(vuc, vbc); // CHECK: @llvm.ppc.altivec.vminub
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000655 res_vs = vec_min(vs, vs); // CHECK: @llvm.ppc.altivec.vminsh
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000656 res_vs = vec_min(vbs, vs); // CHECK: @llvm.ppc.altivec.vminsh
657 res_vs = vec_min(vs, vbs); // CHECK: @llvm.ppc.altivec.vminsh
Chris Lattnerdd173942010-04-14 03:54:58 +0000658 res_vus = vec_min(vus, vus); // CHECK: @llvm.ppc.altivec.vminuh
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000659 res_vus = vec_min(vbs, vus); // CHECK: @llvm.ppc.altivec.vminuh
660 res_vus = vec_min(vus, vbs); // CHECK: @llvm.ppc.altivec.vminuh
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000661 res_vi = vec_min(vi, vi); // CHECK: @llvm.ppc.altivec.vminsw
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000662 res_vi = vec_min(vbi, vi); // CHECK: @llvm.ppc.altivec.vminsw
663 res_vi = vec_min(vi, vbi); // CHECK: @llvm.ppc.altivec.vminsw
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000664 res_vui = vec_min(vui, vui); // CHECK: @llvm.ppc.altivec.vminuw
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000665 res_vui = vec_min(vbi, vui); // CHECK: @llvm.ppc.altivec.vminuw
666 res_vui = vec_min(vui, vbi); // CHECK: @llvm.ppc.altivec.vminuw
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000667 res_vf = vec_min(vf, vf); // CHECK: @llvm.ppc.altivec.vminfp
668 res_vsc = vec_vminsb(vsc, vsc); // CHECK: @llvm.ppc.altivec.vminsb
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000669 res_vsc = vec_vminsb(vbc, vsc); // CHECK: @llvm.ppc.altivec.vminsb
670 res_vsc = vec_vminsb(vsc, vbc); // CHECK: @llvm.ppc.altivec.vminsb
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000671 res_vuc = vec_vminub(vuc, vuc); // CHECK: @llvm.ppc.altivec.vminub
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000672 res_vuc = vec_vminub(vbc, vuc); // CHECK: @llvm.ppc.altivec.vminub
673 res_vuc = vec_vminub(vuc, vbc); // CHECK: @llvm.ppc.altivec.vminub
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000674 res_vs = vec_vminsh(vs, vs); // CHECK: @llvm.ppc.altivec.vminsh
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000675 res_vs = vec_vminsh(vbs, vs); // CHECK: @llvm.ppc.altivec.vminsh
676 res_vs = vec_vminsh(vs, vbs); // CHECK: @llvm.ppc.altivec.vminsh
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000677 res_vus = vec_vminuh(vus, vus); // CHECK: @llvm.ppc.altivec.vminuh
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000678 res_vus = vec_vminuh(vbs, vus); // CHECK: @llvm.ppc.altivec.vminuh
679 res_vus = vec_vminuh(vus, vbs); // CHECK: @llvm.ppc.altivec.vminuh
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000680 res_vi = vec_vminsw(vi, vi); // CHECK: @llvm.ppc.altivec.vminsw
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000681 res_vi = vec_vminsw(vbi, vi); // CHECK: @llvm.ppc.altivec.vminsw
682 res_vi = vec_vminsw(vi, vbi); // CHECK: @llvm.ppc.altivec.vminsw
Chris Lattnerdd173942010-04-14 03:54:58 +0000683 res_vui = vec_vminuw(vui, vui); // CHECK: @llvm.ppc.altivec.vminuw
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000684 res_vui = vec_vminuw(vbi, vui); // CHECK: @llvm.ppc.altivec.vminuw
685 res_vui = vec_vminuw(vui, vbi); // CHECK: @llvm.ppc.altivec.vminuw
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000686 res_vf = vec_vminfp(vf, vf); // CHECK: @llvm.ppc.altivec.vminfp
687
688 /* vec_mladd */
689 res_vus = vec_mladd(vus, vus, vus); // CHECK: mul <8 x i16>
690 // CHECK: add <8 x i16>
691
Chris Lattnera4d71452010-06-26 21:25:03 +0000692 res_vs = vec_mladd(vus, vs, vs); // CHECK: mul nsw <8 x i16>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000693 // CHECK: add nsw <8 x i16>
694
Chris Lattnera4d71452010-06-26 21:25:03 +0000695 res_vs = vec_mladd(vs, vus, vus); // CHECK: mul nsw <8 x i16>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000696 // CHECK: add nsw <8 x i16>
697
Chris Lattnera4d71452010-06-26 21:25:03 +0000698 res_vs = vec_mladd(vs, vs, vs); // CHECK: mul nsw <8 x i16>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000699 // CHECK: add nsw <8 x i16>
700
701 /* vec_mradds */
702 res_vs = vec_mradds(vs, vs, vs); // CHECK: @llvm.ppc.altivec.vmhraddshs
703 res_vs = vec_vmhraddshs(vs, vs, vs); // CHECK: @llvm.ppc.altivec.vmhraddshs
704
705 /* vec_msum */
706 res_vi = vec_msum(vsc, vuc, vi); // CHECK: @llvm.ppc.altivec.vmsummbm
707 res_vui = vec_msum(vuc, vuc, vui); // CHECK: @llvm.ppc.altivec.vmsumubm
708 res_vi = vec_msum(vs, vs, vi); // CHECK: @llvm.ppc.altivec.vmsumshm
709 res_vui = vec_msum(vus, vus, vui); // CHECK: @llvm.ppc.altivec.vmsumuhm
710 res_vi = vec_vmsummbm(vsc, vuc, vi); // CHECK: @llvm.ppc.altivec.vmsummbm
711 res_vui = vec_vmsumubm(vuc, vuc, vui); // CHECK: @llvm.ppc.altivec.vmsumubm
712 res_vi = vec_vmsumshm(vs, vs, vi); // CHECK: @llvm.ppc.altivec.vmsumshm
713 res_vui = vec_vmsumuhm(vus, vus, vui); // CHECK: @llvm.ppc.altivec.vmsumuhm
714
715 /* vec_msums */
716 res_vi = vec_msums(vs, vs, vi); // CHECK: @llvm.ppc.altivec.vmsumshs
717 res_vui = vec_msums(vus, vus, vui); // CHECK: @llvm.ppc.altivec.vmsumuhs
718 res_vi = vec_vmsumshs(vs, vs, vi); // CHECK: @llvm.ppc.altivec.vmsumshs
719 res_vui = vec_vmsumuhs(vus, vus, vui); // CHECK: @llvm.ppc.altivec.vmsumuhs
Chris Lattnerdd173942010-04-14 03:54:58 +0000720
721 /* vec_mtvscr */
Chris Lattnerab866b42010-04-14 20:35:39 +0000722 vec_mtvscr(vsc); // CHECK: @llvm.ppc.altivec.mtvscr
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000723 vec_mtvscr(vuc); // CHECK: @llvm.ppc.altivec.mtvscr
724 vec_mtvscr(vbc); // CHECK: @llvm.ppc.altivec.mtvscr
725 vec_mtvscr(vs); // CHECK: @llvm.ppc.altivec.mtvscr
726 vec_mtvscr(vus); // CHECK: @llvm.ppc.altivec.mtvscr
727 vec_mtvscr(vbs); // CHECK: @llvm.ppc.altivec.mtvscr
728 vec_mtvscr(vp); // CHECK: @llvm.ppc.altivec.mtvscr
729 vec_mtvscr(vi); // CHECK: @llvm.ppc.altivec.mtvscr
730 vec_mtvscr(vui); // CHECK: @llvm.ppc.altivec.mtvscr
731 vec_mtvscr(vbi); // CHECK: @llvm.ppc.altivec.mtvscr
Chris Lattnerdd173942010-04-14 03:54:58 +0000732
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000733 /* vec_mule */
734 res_vs = vec_mule(vsc, vsc); // CHECK: @llvm.ppc.altivec.vmulesb
735 res_vus = vec_mule(vuc, vuc); // CHECK: @llvm.ppc.altivec.vmuleub
736 res_vi = vec_mule(vs, vs); // CHECK: @llvm.ppc.altivec.vmulesh
737 res_vui = vec_mule(vus, vus); // CHECK: @llvm.ppc.altivec.vmuleuh
738 res_vs = vec_vmulesb(vsc, vsc); // CHECK: @llvm.ppc.altivec.vmulesb
739 res_vus = vec_vmuleub(vuc, vuc); // CHECK: @llvm.ppc.altivec.vmuleub
740 res_vi = vec_vmulesh(vs, vs); // CHECK: @llvm.ppc.altivec.vmulesh
741 res_vui = vec_vmuleuh(vus, vus); // CHECK: @llvm.ppc.altivec.vmuleuh
Chris Lattnerdd173942010-04-14 03:54:58 +0000742
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000743 /* vec_mulo */
744 res_vs = vec_mulo(vsc, vsc); // CHECK: @llvm.ppc.altivec.vmulosb
745 res_vus = vec_mulo(vuc, vuc); // CHECK: @llvm.ppc.altivec.vmuloub
746 res_vi = vec_mulo(vs, vs); // CHECK: @llvm.ppc.altivec.vmulosh
747 res_vui = vec_mulo(vus, vus); // CHECK: @llvm.ppc.altivec.vmulouh
748 res_vs = vec_vmulosb(vsc, vsc); // CHECK: @llvm.ppc.altivec.vmulosb
749 res_vus = vec_vmuloub(vuc, vuc); // CHECK: @llvm.ppc.altivec.vmuloub
750 res_vi = vec_vmulosh(vs, vs); // CHECK: @llvm.ppc.altivec.vmulosh
751 res_vui = vec_vmulouh(vus, vus); // CHECK: @llvm.ppc.altivec.vmulouh
752
753 /* vec_nmsub */
754 res_vf = vec_nmsub(vf, vf, vf); // CHECK: @llvm.ppc.altivec.vnmsubfp
755 res_vf = vec_vnmsubfp(vf, vf, vf); // CHECK: @llvm.ppc.altivec.vnmsubfp
756
757 /* vec_nor */
758 res_vsc = vec_nor(vsc, vsc); // CHECK: or <16 x i8>
759 // CHECK: xor <16 x i8>
760
761 res_vuc = vec_nor(vuc, vuc); // CHECK: or <16 x i8>
762 // CHECK: xor <16 x i8>
763
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000764 res_vuc = vec_nor(vbc, vbc); // CHECK: or <16 x i8>
765 // CHECK: xor <16 x i8>
766
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000767 res_vs = vec_nor(vs, vs); // CHECK: or <8 x i16>
768 // CHECK: xor <8 x i16>
769
770 res_vus = vec_nor(vus, vus); // CHECK: or <8 x i16>
771 // CHECK: xor <8 x i16>
772
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000773 res_vus = vec_nor(vbs, vbs); // CHECK: or <8 x i16>
774 // CHECK: xor <8 x i16>
775
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000776 res_vi = vec_nor(vi, vi); // CHECK: or <4 x i32>
777 // CHECK: xor <4 x i32>
778
779 res_vui = vec_nor(vui, vui); // CHECK: or <4 x i32>
780 // CHECK: xor <4 x i32>
781
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000782 res_vui = vec_nor(vbi, vbi); // CHECK: or <4 x i32>
783 // CHECK: xor <4 x i32>
784
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000785 res_vf = vec_nor(vf, vf); // CHECK: or <4 x i32>
786 // CHECK: xor <4 x i32>
787
788 res_vsc = vec_vnor(vsc, vsc); // CHECK: or <16 x i8>
789 // CHECK: xor <16 x i8>
790
791 res_vuc = vec_vnor(vuc, vuc); // CHECK: or <16 x i8>
792 // CHECK: xor <16 x i8>
793
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000794 res_vuc = vec_vnor(vbc, vbc); // CHECK: or <16 x i8>
795 // CHECK: xor <16 x i8>
796
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000797 res_vs = vec_vnor(vs, vs); // CHECK: or <8 x i16>
798 // CHECK: xor <8 x i16>
799
800 res_vus = vec_vnor(vus, vus); // CHECK: or <8 x i16>
801 // CHECK: xor <8 x i16>
802
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000803 res_vus = vec_vnor(vbs, vbs); // CHECK: or <8 x i16>
804 // CHECK: xor <8 x i16>
805
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000806 res_vi = vec_vnor(vi, vi); // CHECK: or <4 x i32>
807 // CHECK: xor <4 x i32>
808
809 res_vui = vec_vnor(vui, vui); // CHECK: or <4 x i32>
810 // CHECK: xor <4 x i32>
811
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000812 res_vui = vec_vnor(vbi, vbi); // CHECK: or <4 x i32>
813 // CHECK: xor <4 x i32>
814
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000815 res_vf = vec_vnor(vf, vf); // CHECK: or <4 x i32>
816 // CHECK: xor <4 x i32>
817
818 /* vec_or */
819 res_vsc = vec_or(vsc, vsc); // CHECK: or <16 x i8>
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000820 res_vsc = vec_or(vbc, vsc); // CHECK: or <16 x i8>
821 res_vsc = vec_or(vsc, vbc); // CHECK: or <16 x i8>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000822 res_vuc = vec_or(vuc, vuc); // CHECK: or <16 x i8>
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000823 res_vuc = vec_or(vbc, vuc); // CHECK: or <16 x i8>
824 res_vuc = vec_or(vuc, vbc); // CHECK: or <16 x i8>
825 res_vbc = vec_or(vbc, vbc); // CHECK: or <16 x i8>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000826 res_vs = vec_or(vs, vs); // CHECK: or <8 x i16>
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000827 res_vs = vec_or(vbs, vs); // CHECK: or <8 x i16>
828 res_vs = vec_or(vs, vbs); // CHECK: or <8 x i16>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000829 res_vus = vec_or(vus, vus); // CHECK: or <8 x i16>
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000830 res_vus = vec_or(vbs, vus); // CHECK: or <8 x i16>
831 res_vus = vec_or(vus, vbs); // CHECK: or <8 x i16>
832 res_vbs = vec_or(vbs, vbs); // CHECK: or <8 x i16>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000833 res_vi = vec_or(vi, vi); // CHECK: or <4 x i32>
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000834 res_vi = vec_or(vbi, vi); // CHECK: or <4 x i32>
835 res_vi = vec_or(vi, vbi); // CHECK: or <4 x i32>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000836 res_vui = vec_or(vui, vui); // CHECK: or <4 x i32>
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000837 res_vui = vec_or(vbi, vui); // CHECK: or <4 x i32>
838 res_vui = vec_or(vui, vbi); // CHECK: or <4 x i32>
839 res_vbi = vec_or(vbi, vbi); // CHECK: or <4 x i32>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000840 res_vf = vec_or(vf, vf); // CHECK: or <4 x i32>
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000841 res_vf = vec_or(vbi, vf); // CHECK: or <4 x i32>
842 res_vf = vec_or(vf, vbi); // CHECK: or <4 x i32>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000843 res_vsc = vec_vor(vsc, vsc); // CHECK: or <16 x i8>
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000844 res_vsc = vec_vor(vbc, vsc); // CHECK: or <16 x i8>
845 res_vsc = vec_vor(vsc, vbc); // CHECK: or <16 x i8>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000846 res_vuc = vec_vor(vuc, vuc); // CHECK: or <16 x i8>
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000847 res_vuc = vec_vor(vbc, vuc); // CHECK: or <16 x i8>
848 res_vuc = vec_vor(vuc, vbc); // CHECK: or <16 x i8>
849 res_vbc = vec_vor(vbc, vbc); // CHECK: or <16 x i8>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000850 res_vs = vec_vor(vs, vs); // CHECK: or <8 x i16>
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000851 res_vs = vec_vor(vbs, vs); // CHECK: or <8 x i16>
852 res_vs = vec_vor(vs, vbs); // CHECK: or <8 x i16>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000853 res_vus = vec_vor(vus, vus); // CHECK: or <8 x i16>
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000854 res_vus = vec_vor(vbs, vus); // CHECK: or <8 x i16>
855 res_vus = vec_vor(vus, vbs); // CHECK: or <8 x i16>
856 res_vbs = vec_vor(vbs, vbs); // CHECK: or <8 x i16>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000857 res_vi = vec_vor(vi, vi); // CHECK: or <4 x i32>
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000858 res_vi = vec_vor(vbi, vi); // CHECK: or <4 x i32>
859 res_vi = vec_vor(vi, vbi); // CHECK: or <4 x i32>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000860 res_vui = vec_vor(vui, vui); // CHECK: or <4 x i32>
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000861 res_vui = vec_vor(vbi, vui); // CHECK: or <4 x i32>
862 res_vui = vec_vor(vui, vbi); // CHECK: or <4 x i32>
863 res_vbi = vec_vor(vbi, vbi); // CHECK: or <4 x i32>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000864 res_vf = vec_vor(vf, vf); // CHECK: or <4 x i32>
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000865 res_vf = vec_vor(vbi, vf); // CHECK: or <4 x i32>
866 res_vf = vec_vor(vf, vbi); // CHECK: or <4 x i32>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000867
868 /* vec_pack */
869 res_vsc = vec_pack(vs, vs); // CHECK: @llvm.ppc.altivec.vperm
870 res_vuc = vec_pack(vus, vus); // CHECK: @llvm.ppc.altivec.vperm
Anton Yartsevf54dbfd2010-08-19 03:00:09 +0000871 res_vbc = vec_pack(vbs, vbs); // CHECK: @llvm.ppc.altivec.vperm
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000872 res_vs = vec_pack(vi, vi); // CHECK: @llvm.ppc.altivec.vperm
873 res_vus = vec_pack(vui, vui); // CHECK: @llvm.ppc.altivec.vperm
Anton Yartsevf54dbfd2010-08-19 03:00:09 +0000874 res_vbs = vec_pack(vbi, vbi); // CHECK: @llvm.ppc.altivec.vperm
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000875 res_vsc = vec_vpkuhum(vs, vs); // CHECK: @llvm.ppc.altivec.vperm
876 res_vuc = vec_vpkuhum(vus, vus); // CHECK: @llvm.ppc.altivec.vperm
Anton Yartsevf54dbfd2010-08-19 03:00:09 +0000877 res_vbc = vec_vpkuhum(vbs, vbs); // CHECK: @llvm.ppc.altivec.vperm
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000878 res_vs = vec_vpkuwum(vi, vi); // CHECK: @llvm.ppc.altivec.vperm
879 res_vus = vec_vpkuwum(vui, vui); // CHECK: @llvm.ppc.altivec.vperm
Anton Yartsevf54dbfd2010-08-19 03:00:09 +0000880 res_vbs = vec_vpkuwum(vbi, vbi); // CHECK: @llvm.ppc.altivec.vperm
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000881
882 /* vec_packpx */
883 res_vp = vec_packpx(vui, vui); // CHECK: @llvm.ppc.altivec.vpkpx
884 res_vp = vec_vpkpx(vui, vui); // CHECK: @llvm.ppc.altivec.vpkpx
885
886 /* vec_packs */
887 res_vsc = vec_packs(vs, vs); // CHECK: @llvm.ppc.altivec.vpkshss
888 res_vuc = vec_packs(vus, vus); // CHECK: @llvm.ppc.altivec.vpkuhus
889 res_vs = vec_packs(vi, vi); // CHECK: @llvm.ppc.altivec.vpkswss
890 res_vus = vec_packs(vui, vui); // CHECK: @llvm.ppc.altivec.vpkuwus
891 res_vsc = vec_vpkshss(vs, vs); // CHECK: @llvm.ppc.altivec.vpkshss
892 res_vuc = vec_vpkuhus(vus, vus); // CHECK: @llvm.ppc.altivec.vpkuhus
893 res_vs = vec_vpkswss(vi, vi); // CHECK: @llvm.ppc.altivec.vpkswss
894 res_vus = vec_vpkuwus(vui, vui); // CHECK: @llvm.ppc.altivec.vpkuwus
895
896 /* vec_packsu */
897 res_vuc = vec_packsu(vs, vs); // CHECK: @llvm.ppc.altivec.vpkshus
898 res_vuc = vec_packsu(vus, vus); // CHECK: @llvm.ppc.altivec.vpkuhus
899 res_vus = vec_packsu(vi, vi); // CHECK: @llvm.ppc.altivec.vpkswus
900 res_vus = vec_packsu(vui, vui); // CHECK: @llvm.ppc.altivec.vpkuwus
901 res_vuc = vec_vpkshus(vs, vs); // CHECK: @llvm.ppc.altivec.vpkshus
902 res_vuc = vec_vpkshus(vus, vus); // CHECK: @llvm.ppc.altivec.vpkuhus
903 res_vus = vec_vpkswus(vi, vi); // CHECK: @llvm.ppc.altivec.vpkswus
904 res_vus = vec_vpkswus(vui, vui); // CHECK: @llvm.ppc.altivec.vpkuwus
905
906 /* vec_perm */
907 res_vsc = vec_perm(vsc, vsc, vuc); // CHECK: @llvm.ppc.altivec.vperm
908 res_vuc = vec_perm(vuc, vuc, vuc); // CHECK: @llvm.ppc.altivec.vperm
Anton Yartsevf54dbfd2010-08-19 03:00:09 +0000909 res_vbc = vec_perm(vbc, vbc, vuc); // CHECK: @llvm.ppc.altivec.vperm
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000910 res_vs = vec_perm(vs, vs, vuc); // CHECK: @llvm.ppc.altivec.vperm
911 res_vus = vec_perm(vus, vus, vuc); // CHECK: @llvm.ppc.altivec.vperm
Anton Yartsevf54dbfd2010-08-19 03:00:09 +0000912 res_vbs = vec_perm(vbs, vbs, vuc); // CHECK: @llvm.ppc.altivec.vperm
913 res_vp = vec_perm(vp, vp, vuc); // CHECK: @llvm.ppc.altivec.vperm
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000914 res_vi = vec_perm(vi, vi, vuc); // CHECK: @llvm.ppc.altivec.vperm
915 res_vui = vec_perm(vui, vui, vuc); // CHECK: @llvm.ppc.altivec.vperm
Anton Yartsevf54dbfd2010-08-19 03:00:09 +0000916 res_vbi = vec_perm(vbi, vbi, vuc); // CHECK: @llvm.ppc.altivec.vperm
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000917 res_vf = vec_perm(vf, vf, vuc); // CHECK: @llvm.ppc.altivec.vperm
918 res_vsc = vec_vperm(vsc, vsc, vuc); // CHECK: @llvm.ppc.altivec.vperm
919 res_vuc = vec_vperm(vuc, vuc, vuc); // CHECK: @llvm.ppc.altivec.vperm
Anton Yartsevf54dbfd2010-08-19 03:00:09 +0000920 res_vbc = vec_vperm(vbc, vbc, vuc); // CHECK: @llvm.ppc.altivec.vperm
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000921 res_vs = vec_vperm(vs, vs, vuc); // CHECK: @llvm.ppc.altivec.vperm
922 res_vus = vec_vperm(vus, vus, vuc); // CHECK: @llvm.ppc.altivec.vperm
Anton Yartsevf54dbfd2010-08-19 03:00:09 +0000923 res_vbs = vec_vperm(vbs, vbs, vuc); // CHECK: @llvm.ppc.altivec.vperm
924 res_vp = vec_vperm(vp, vp, vuc); // CHECK: @llvm.ppc.altivec.vperm
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000925 res_vi = vec_vperm(vi, vi, vuc); // CHECK: @llvm.ppc.altivec.vperm
926 res_vui = vec_vperm(vui, vui, vuc); // CHECK: @llvm.ppc.altivec.vperm
Anton Yartsevf54dbfd2010-08-19 03:00:09 +0000927 res_vbi = vec_vperm(vbi, vbi, vuc); // CHECK: @llvm.ppc.altivec.vperm
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000928 res_vf = vec_vperm(vf, vf, vuc); // CHECK: @llvm.ppc.altivec.vperm
929
930 /* vec_re */
931 res_vf = vec_re(vf); // CHECK: @llvm.ppc.altivec.vrefp
932 res_vf = vec_vrefp(vf); // CHECK: @llvm.ppc.altivec.vrefp
933
934 /* vec_rl */
935 res_vsc = vec_rl(vsc, vuc); // CHECK: @llvm.ppc.altivec.vrlb
936 res_vuc = vec_rl(vuc, vuc); // CHECK: @llvm.ppc.altivec.vrlb
937 res_vs = vec_rl(vs, vus); // CHECK: @llvm.ppc.altivec.vrlh
938 res_vus = vec_rl(vus, vus); // CHECK: @llvm.ppc.altivec.vrlh
939 res_vi = vec_rl(vi, vui); // CHECK: @llvm.ppc.altivec.vrlw
940 res_vui = vec_rl(vui, vui); // CHECK: @llvm.ppc.altivec.vrlw
941 res_vsc = vec_vrlb(vsc, vuc); // CHECK: @llvm.ppc.altivec.vrlb
942 res_vuc = vec_vrlb(vuc, vuc); // CHECK: @llvm.ppc.altivec.vrlb
943 res_vs = vec_vrlh(vs, vus); // CHECK: @llvm.ppc.altivec.vrlh
944 res_vus = vec_vrlh(vus, vus); // CHECK: @llvm.ppc.altivec.vrlh
945 res_vi = vec_vrlw(vi, vui); // CHECK: @llvm.ppc.altivec.vrlw
946 res_vui = vec_vrlw(vui, vui); // CHECK: @llvm.ppc.altivec.vrlw
947
948 /* vec_round */
949 res_vf = vec_round(vf); // CHECK: @llvm.ppc.altivec.vrfin
950 res_vf = vec_vrfin(vf); // CHECK: @llvm.ppc.altivec.vrfin
951
952 /* vec_rsqrte */
953 res_vf = vec_rsqrte(vf); // CHECK: @llvm.ppc.altivec.vrsqrtefp
954 res_vf = vec_vrsqrtefp(vf); // CHECK: @llvm.ppc.altivec.vrsqrtefp
955
956 /* vec_sel */
957 res_vsc = vec_sel(vsc, vsc, vuc); // CHECK: xor <16 x i8>
958 // CHECK: and <16 x i8>
959 // CHECK: and <16 x i8>
960 // CHECK: or <16 x i8>
961
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000962 res_vsc = vec_sel(vsc, vsc, vbc); // CHECK: xor <16 x i8>
963 // CHECK: and <16 x i8>
964 // CHECK: and <16 x i8>
965 // CHECK: or <16 x i8>
966
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000967 res_vuc = vec_sel(vuc, vuc, vuc); // CHECK: xor <16 x i8>
968 // CHECK: and <16 x i8>
969 // CHECK: and <16 x i8>
970 // CHECK: or <16 x i8>
971
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000972 res_vuc = vec_sel(vuc, vuc, vbc); // CHECK: xor <16 x i8>
973 // CHECK: and <16 x i8>
974 // CHECK: and <16 x i8>
975 // CHECK: or <16 x i8>
976
977 res_vbc = vec_sel(vbc, vbc, vuc); // CHECK: xor <16 x i8>
978 // CHECK: and <16 x i8>
979 // CHECK: and <16 x i8>
980 // CHECK: or <16 x i8>
981
982 res_vbc = vec_sel(vbc, vbc, vbc); // CHECK: xor <16 x i8>
983 // CHECK: and <16 x i8>
984 // CHECK: and <16 x i8>
985 // CHECK: or <16 x i8>
986
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000987 res_vs = vec_sel(vs, vs, vus); // CHECK: xor <8 x i16>
988 // CHECK: and <8 x i16>
989 // CHECK: and <8 x i16>
990 // CHECK: or <8 x i16>
991
Anton Yartseva2fc0f52010-08-19 03:21:36 +0000992 res_vs = vec_sel(vs, vs, vbs); // CHECK: xor <8 x i16>
993 // CHECK: and <8 x i16>
994 // CHECK: and <8 x i16>
995 // CHECK: or <8 x i16>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000996
997 res_vus = vec_sel(vus, vus, vus); // CHECK: xor <8 x i16>
998 // CHECK: and <8 x i16>
999 // CHECK: and <8 x i16>
1000 // CHECK: or <8 x i16>
1001
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001002 res_vus = vec_sel(vus, vus, vbs); // CHECK: xor <8 x i16>
1003 // CHECK: and <8 x i16>
1004 // CHECK: and <8 x i16>
1005 // CHECK: or <8 x i16>
1006
1007 res_vbs = vec_sel(vbs, vbs, vus); // CHECK: xor <8 x i16>
1008 // CHECK: and <8 x i16>
1009 // CHECK: and <8 x i16>
1010 // CHECK: or <8 x i16>
1011
1012 res_vbs = vec_sel(vbs, vbs, vbs); // CHECK: xor <8 x i16>
1013 // CHECK: and <8 x i16>
1014 // CHECK: and <8 x i16>
1015 // CHECK: or <8 x i16>
1016
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001017 res_vi = vec_sel(vi, vi, vui); // CHECK: xor <4 x i32>
1018 // CHECK: and <4 x i32>
1019 // CHECK: and <4 x i32>
1020 // CHECK: or <4 x i32>
1021
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001022 res_vi = vec_sel(vi, vi, vbi); // CHECK: xor <4 x i32>
1023 // CHECK: and <4 x i32>
1024 // CHECK: and <4 x i32>
1025 // CHECK: or <4 x i32>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001026
1027 res_vui = vec_sel(vui, vui, vui); // CHECK: xor <4 x i32>
1028 // CHECK: and <4 x i32>
1029 // CHECK: and <4 x i32>
1030 // CHECK: or <4 x i32>
1031
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001032 res_vui = vec_sel(vui, vui, vbi); // CHECK: xor <4 x i32>
1033 // CHECK: and <4 x i32>
1034 // CHECK: and <4 x i32>
1035 // CHECK: or <4 x i32>
1036
1037 res_vbi = vec_sel(vbi, vbi, vui); // CHECK: xor <4 x i32>
1038 // CHECK: and <4 x i32>
1039 // CHECK: and <4 x i32>
1040 // CHECK: or <4 x i32>
1041
1042 res_vbi = vec_sel(vbi, vbi, vbi); // CHECK: xor <4 x i32>
1043 // CHECK: and <4 x i32>
1044 // CHECK: and <4 x i32>
1045 // CHECK: or <4 x i32>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001046
1047 res_vf = vec_sel(vf, vf, vui); // CHECK: xor <4 x i32>
1048 // CHECK: and <4 x i32>
1049 // CHECK: and <4 x i32>
1050 // CHECK: or <4 x i32>
1051
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001052 res_vf = vec_sel(vf, vf, vbi); // CHECK: xor <4 x i32>
1053 // CHECK: and <4 x i32>
1054 // CHECK: and <4 x i32>
1055 // CHECK: or <4 x i32>
1056
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001057 res_vsc = vec_vsel(vsc, vsc, vuc); // CHECK: xor <16 x i8>
1058 // CHECK: and <16 x i8>
1059 // CHECK: and <16 x i8>
1060 // CHECK: or <16 x i8>
1061
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001062 res_vsc = vec_vsel(vsc, vsc, vbc); // CHECK: xor <16 x i8>
1063 // CHECK: and <16 x i8>
1064 // CHECK: and <16 x i8>
1065 // CHECK: or <16 x i8>
1066
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001067 res_vuc = vec_vsel(vuc, vuc, vuc); // CHECK: xor <16 x i8>
1068 // CHECK: and <16 x i8>
1069 // CHECK: and <16 x i8>
1070 // CHECK: or <16 x i8>
1071
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001072 res_vuc = vec_vsel(vuc, vuc, vbc); // CHECK: xor <16 x i8>
1073 // CHECK: and <16 x i8>
1074 // CHECK: and <16 x i8>
1075 // CHECK: or <16 x i8>
1076
1077 res_vbc = vec_vsel(vbc, vbc, vuc); // CHECK: xor <16 x i8>
1078 // CHECK: and <16 x i8>
1079 // CHECK: and <16 x i8>
1080 // CHECK: or <16 x i8>
1081
1082 res_vbc = vec_vsel(vbc, vbc, vbc); // CHECK: xor <16 x i8>
1083 // CHECK: and <16 x i8>
1084 // CHECK: and <16 x i8>
1085 // CHECK: or <16 x i8>
1086
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001087 res_vs = vec_vsel(vs, vs, vus); // CHECK: xor <8 x i16>
1088 // CHECK: and <8 x i16>
1089 // CHECK: and <8 x i16>
1090 // CHECK: or <8 x i16>
1091
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001092 res_vs = vec_vsel(vs, vs, vbs); // CHECK: xor <8 x i16>
1093 // CHECK: and <8 x i16>
1094 // CHECK: and <8 x i16>
1095 // CHECK: or <8 x i16>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001096
1097 res_vus = vec_vsel(vus, vus, vus); // CHECK: xor <8 x i16>
1098 // CHECK: and <8 x i16>
1099 // CHECK: and <8 x i16>
1100 // CHECK: or <8 x i16>
1101
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001102 res_vus = vec_vsel(vus, vus, vbs); // CHECK: xor <8 x i16>
1103 // CHECK: and <8 x i16>
1104 // CHECK: and <8 x i16>
1105 // CHECK: or <8 x i16>
1106
1107 res_vbs = vec_vsel(vbs, vbs, vus); // CHECK: xor <8 x i16>
1108 // CHECK: and <8 x i16>
1109 // CHECK: and <8 x i16>
1110 // CHECK: or <8 x i16>
1111
1112 res_vbs = vec_vsel(vbs, vbs, vbs); // CHECK: xor <8 x i16>
1113 // CHECK: and <8 x i16>
1114 // CHECK: and <8 x i16>
1115 // CHECK: or <8 x i16>
1116
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001117 res_vi = vec_vsel(vi, vi, vui); // CHECK: xor <4 x i32>
1118 // CHECK: and <4 x i32>
1119 // CHECK: and <4 x i32>
1120 // CHECK: or <4 x i32>
1121
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001122 res_vi = vec_vsel(vi, vi, vbi); // CHECK: xor <4 x i32>
1123 // CHECK: and <4 x i32>
1124 // CHECK: and <4 x i32>
1125 // CHECK: or <4 x i32>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001126
1127 res_vui = vec_vsel(vui, vui, vui); // CHECK: xor <4 x i32>
1128 // CHECK: and <4 x i32>
1129 // CHECK: and <4 x i32>
1130 // CHECK: or <4 x i32>
1131
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001132 res_vui = vec_vsel(vui, vui, vbi); // CHECK: xor <4 x i32>
1133 // CHECK: and <4 x i32>
1134 // CHECK: and <4 x i32>
1135 // CHECK: or <4 x i32>
1136
1137 res_vbi = vec_vsel(vbi, vbi, vui); // CHECK: xor <4 x i32>
1138 // CHECK: and <4 x i32>
1139 // CHECK: and <4 x i32>
1140 // CHECK: or <4 x i32>
1141
1142 res_vbi = vec_vsel(vbi, vbi, vbi); // CHECK: xor <4 x i32>
1143 // CHECK: and <4 x i32>
1144 // CHECK: and <4 x i32>
1145 // CHECK: or <4 x i32>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001146
1147 res_vf = vec_vsel(vf, vf, vui); // CHECK: xor <4 x i32>
1148 // CHECK: and <4 x i32>
1149 // CHECK: and <4 x i32>
1150 // CHECK: or <4 x i32>
1151
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001152 res_vf = vec_vsel(vf, vf, vbi); // CHECK: xor <4 x i32>
1153 // CHECK: and <4 x i32>
1154 // CHECK: and <4 x i32>
1155 // CHECK: or <4 x i32>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001156
1157 /* vec_sl */
1158 res_vsc = vec_sl(vsc, vuc); // CHECK: shl <16 x i8>
1159 res_vuc = vec_sl(vuc, vuc); // CHECK: shl <16 x i8>
1160 res_vs = vec_sl(vs, vus); // CHECK: shl <8 x i16>
1161 res_vus = vec_sl(vus, vus); // CHECK: shl <8 x i16>
1162 res_vi = vec_sl(vi, vui); // CHECK: shl <4 x i32>
1163 res_vui = vec_sl(vui, vui); // CHECK: shl <4 x i32>
1164 res_vsc = vec_vslb(vsc, vuc); // CHECK: shl <16 x i8>
1165 res_vuc = vec_vslb(vuc, vuc); // CHECK: shl <16 x i8>
1166 res_vs = vec_vslh(vs, vus); // CHECK: shl <8 x i16>
1167 res_vus = vec_vslh(vus, vus); // CHECK: shl <8 x i16>
1168 res_vi = vec_vslw(vi, vui); // CHECK: shl <4 x i32>
1169 res_vui = vec_vslw(vui, vui); // CHECK: shl <4 x i32>
1170
1171 /* vec_sld */
1172 res_vsc = vec_sld(vsc, vsc, 0); // CHECK: @llvm.ppc.altivec.vperm
1173 res_vuc = vec_sld(vuc, vuc, 0); // CHECK: @llvm.ppc.altivec.vperm
1174 res_vs = vec_sld(vs, vs, 0); // CHECK: @llvm.ppc.altivec.vperm
1175 res_vus = vec_sld(vus, vus, 0); // CHECK: @llvm.ppc.altivec.vperm
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00001176 res_vp = vec_sld(vp, vp, 0); // CHECK: @llvm.ppc.altivec.vperm
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001177 res_vi = vec_sld(vi, vi, 0); // CHECK: @llvm.ppc.altivec.vperm
1178 res_vui = vec_sld(vui, vui, 0); // CHECK: @llvm.ppc.altivec.vperm
1179 res_vf = vec_sld(vf, vf, 0); // CHECK: @llvm.ppc.altivec.vperm
1180 res_vsc = vec_vsldoi(vsc, vsc, 0); // CHECK: @llvm.ppc.altivec.vperm
1181 res_vuc = vec_vsldoi(vuc, vuc, 0); // CHECK: @llvm.ppc.altivec.vperm
1182 res_vs = vec_vsldoi(vs, vs, 0); // CHECK: @llvm.ppc.altivec.vperm
1183 res_vus = vec_vsldoi(vus, vus, 0); // CHECK: @llvm.ppc.altivec.vperm
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00001184 res_vp = vec_vsldoi(vp, vp, 0); // CHECK: @llvm.ppc.altivec.vperm
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001185 res_vi = vec_vsldoi(vi, vi, 0); // CHECK: @llvm.ppc.altivec.vperm
1186 res_vui = vec_vsldoi(vui, vui, 0); // CHECK: @llvm.ppc.altivec.vperm
1187 res_vf = vec_vsldoi(vf, vf, 0); // CHECK: @llvm.ppc.altivec.vperm
1188
1189 /* vec_sll */
1190 res_vsc = vec_sll(vsc, vuc); // CHECK: @llvm.ppc.altivec.vsl
1191 res_vsc = vec_sll(vsc, vus); // CHECK: @llvm.ppc.altivec.vsl
1192 res_vsc = vec_sll(vsc, vui); // CHECK: @llvm.ppc.altivec.vsl
1193 res_vuc = vec_sll(vuc, vuc); // CHECK: @llvm.ppc.altivec.vsl
1194 res_vuc = vec_sll(vuc, vus); // CHECK: @llvm.ppc.altivec.vsl
1195 res_vuc = vec_sll(vuc, vui); // CHECK: @llvm.ppc.altivec.vsl
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001196 res_vbc = vec_sll(vbc, vuc); // CHECK: @llvm.ppc.altivec.vsl
1197 res_vbc = vec_sll(vbc, vus); // CHECK: @llvm.ppc.altivec.vsl
1198 res_vbc = vec_sll(vbc, vui); // CHECK: @llvm.ppc.altivec.vsl
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001199 res_vs = vec_sll(vs, vuc); // CHECK: @llvm.ppc.altivec.vsl
1200 res_vs = vec_sll(vs, vus); // CHECK: @llvm.ppc.altivec.vsl
1201 res_vs = vec_sll(vs, vui); // CHECK: @llvm.ppc.altivec.vsl
1202 res_vus = vec_sll(vus, vuc); // CHECK: @llvm.ppc.altivec.vsl
1203 res_vus = vec_sll(vus, vus); // CHECK: @llvm.ppc.altivec.vsl
1204 res_vus = vec_sll(vus, vui); // CHECK: @llvm.ppc.altivec.vsl
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001205 res_vbs = vec_sll(vbs, vuc); // CHECK: @llvm.ppc.altivec.vsl
1206 res_vbs = vec_sll(vbs, vus); // CHECK: @llvm.ppc.altivec.vsl
1207 res_vbs = vec_sll(vbs, vui); // CHECK: @llvm.ppc.altivec.vsl
1208 res_vp = vec_sll(vp, vuc); // CHECK: @llvm.ppc.altivec.vsl
1209 res_vp = vec_sll(vp, vus); // CHECK: @llvm.ppc.altivec.vsl
1210 res_vp = vec_sll(vp, vui); // CHECK: @llvm.ppc.altivec.vsl
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001211 res_vi = vec_sll(vi, vuc); // CHECK: @llvm.ppc.altivec.vsl
1212 res_vi = vec_sll(vi, vus); // CHECK: @llvm.ppc.altivec.vsl
1213 res_vi = vec_sll(vi, vui); // CHECK: @llvm.ppc.altivec.vsl
1214 res_vui = vec_sll(vui, vuc); // CHECK: @llvm.ppc.altivec.vsl
1215 res_vui = vec_sll(vui, vus); // CHECK: @llvm.ppc.altivec.vsl
1216 res_vui = vec_sll(vui, vui); // CHECK: @llvm.ppc.altivec.vsl
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001217 res_vbi = vec_sll(vbi, vuc); // CHECK: @llvm.ppc.altivec.vsl
1218 res_vbi = vec_sll(vbi, vus); // CHECK: @llvm.ppc.altivec.vsl
1219 res_vbi = vec_sll(vbi, vui); // CHECK: @llvm.ppc.altivec.vsl
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001220 res_vsc = vec_vsl(vsc, vuc); // CHECK: @llvm.ppc.altivec.vsl
1221 res_vsc = vec_vsl(vsc, vus); // CHECK: @llvm.ppc.altivec.vsl
1222 res_vsc = vec_vsl(vsc, vui); // CHECK: @llvm.ppc.altivec.vsl
1223 res_vuc = vec_vsl(vuc, vuc); // CHECK: @llvm.ppc.altivec.vsl
1224 res_vuc = vec_vsl(vuc, vus); // CHECK: @llvm.ppc.altivec.vsl
1225 res_vuc = vec_vsl(vuc, vui); // CHECK: @llvm.ppc.altivec.vsl
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001226 res_vbc = vec_vsl(vbc, vuc); // CHECK: @llvm.ppc.altivec.vsl
1227 res_vbc = vec_vsl(vbc, vus); // CHECK: @llvm.ppc.altivec.vsl
1228 res_vbc = vec_vsl(vbc, vui); // CHECK: @llvm.ppc.altivec.vsl
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001229 res_vs = vec_vsl(vs, vuc); // CHECK: @llvm.ppc.altivec.vsl
1230 res_vs = vec_vsl(vs, vus); // CHECK: @llvm.ppc.altivec.vsl
1231 res_vs = vec_vsl(vs, vui); // CHECK: @llvm.ppc.altivec.vsl
1232 res_vus = vec_vsl(vus, vuc); // CHECK: @llvm.ppc.altivec.vsl
1233 res_vus = vec_vsl(vus, vus); // CHECK: @llvm.ppc.altivec.vsl
1234 res_vus = vec_vsl(vus, vui); // CHECK: @llvm.ppc.altivec.vsl
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001235 res_vbs = vec_vsl(vbs, vuc); // CHECK: @llvm.ppc.altivec.vsl
1236 res_vbs = vec_vsl(vbs, vus); // CHECK: @llvm.ppc.altivec.vsl
1237 res_vbs = vec_vsl(vbs, vui); // CHECK: @llvm.ppc.altivec.vsl
1238 res_vp = vec_vsl(vp, vuc); // CHECK: @llvm.ppc.altivec.vsl
1239 res_vp = vec_vsl(vp, vus); // CHECK: @llvm.ppc.altivec.vsl
1240 res_vp = vec_vsl(vp, vui); // CHECK: @llvm.ppc.altivec.vsl
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001241 res_vi = vec_vsl(vi, vuc); // CHECK: @llvm.ppc.altivec.vsl
1242 res_vi = vec_vsl(vi, vus); // CHECK: @llvm.ppc.altivec.vsl
1243 res_vi = vec_vsl(vi, vui); // CHECK: @llvm.ppc.altivec.vsl
1244 res_vui = vec_vsl(vui, vuc); // CHECK: @llvm.ppc.altivec.vsl
1245 res_vui = vec_vsl(vui, vus); // CHECK: @llvm.ppc.altivec.vsl
1246 res_vui = vec_vsl(vui, vui); // CHECK: @llvm.ppc.altivec.vsl
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001247 res_vbi = vec_vsl(vbi, vuc); // CHECK: @llvm.ppc.altivec.vsl
1248 res_vbi = vec_vsl(vbi, vus); // CHECK: @llvm.ppc.altivec.vsl
1249 res_vbi = vec_vsl(vbi, vui); // CHECK: @llvm.ppc.altivec.vsl
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001250
1251 /* vec_slo */
1252 res_vsc = vec_slo(vsc, vsc); // CHECK: @llvm.ppc.altivec.vslo
1253 res_vsc = vec_slo(vsc, vuc); // CHECK: @llvm.ppc.altivec.vslo
1254 res_vuc = vec_slo(vuc, vsc); // CHECK: @llvm.ppc.altivec.vslo
1255 res_vuc = vec_slo(vuc, vuc); // CHECK: @llvm.ppc.altivec.vslo
1256 res_vs = vec_slo(vs, vsc); // CHECK: @llvm.ppc.altivec.vslo
1257 res_vs = vec_slo(vs, vuc); // CHECK: @llvm.ppc.altivec.vslo
1258 res_vus = vec_slo(vus, vsc); // CHECK: @llvm.ppc.altivec.vslo
1259 res_vus = vec_slo(vus, vuc); // CHECK: @llvm.ppc.altivec.vslo
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001260 res_vp = vec_slo(vp, vsc); // CHECK: @llvm.ppc.altivec.vslo
1261 res_vp = vec_slo(vp, vuc); // CHECK: @llvm.ppc.altivec.vslo
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001262 res_vi = vec_slo(vi, vsc); // CHECK: @llvm.ppc.altivec.vslo
1263 res_vi = vec_slo(vi, vuc); // CHECK: @llvm.ppc.altivec.vslo
1264 res_vui = vec_slo(vui, vsc); // CHECK: @llvm.ppc.altivec.vslo
1265 res_vui = vec_slo(vui, vuc); // CHECK: @llvm.ppc.altivec.vslo
1266 res_vf = vec_slo(vf, vsc); // CHECK: @llvm.ppc.altivec.vslo
1267 res_vf = vec_slo(vf, vuc); // CHECK: @llvm.ppc.altivec.vslo
1268 res_vsc = vec_vslo(vsc, vsc); // CHECK: @llvm.ppc.altivec.vslo
1269 res_vsc = vec_vslo(vsc, vuc); // CHECK: @llvm.ppc.altivec.vslo
1270 res_vuc = vec_vslo(vuc, vsc); // CHECK: @llvm.ppc.altivec.vslo
1271 res_vuc = vec_vslo(vuc, vuc); // CHECK: @llvm.ppc.altivec.vslo
1272 res_vs = vec_vslo(vs, vsc); // CHECK: @llvm.ppc.altivec.vslo
1273 res_vs = vec_vslo(vs, vuc); // CHECK: @llvm.ppc.altivec.vslo
1274 res_vus = vec_vslo(vus, vsc); // CHECK: @llvm.ppc.altivec.vslo
1275 res_vus = vec_vslo(vus, vuc); // CHECK: @llvm.ppc.altivec.vslo
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001276 res_vp = vec_vslo(vp, vsc); // CHECK: @llvm.ppc.altivec.vslo
1277 res_vp = vec_vslo(vp, vuc); // CHECK: @llvm.ppc.altivec.vslo
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001278 res_vi = vec_vslo(vi, vsc); // CHECK: @llvm.ppc.altivec.vslo
1279 res_vi = vec_vslo(vi, vuc); // CHECK: @llvm.ppc.altivec.vslo
1280 res_vui = vec_vslo(vui, vsc); // CHECK: @llvm.ppc.altivec.vslo
1281 res_vui = vec_vslo(vui, vuc); // CHECK: @llvm.ppc.altivec.vslo
1282 res_vf = vec_vslo(vf, vsc); // CHECK: @llvm.ppc.altivec.vslo
1283 res_vf = vec_vslo(vf, vuc); // CHECK: @llvm.ppc.altivec.vslo
1284
1285 /* vec_splat */
1286 res_vsc = vec_splat(vsc, 0); // CHECK: @llvm.ppc.altivec.vperm
1287 res_vuc = vec_splat(vuc, 0); // CHECK: @llvm.ppc.altivec.vperm
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00001288 res_vbc = vec_splat(vbc, 0); // CHECK: @llvm.ppc.altivec.vperm
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001289 res_vs = vec_splat(vs, 0); // CHECK: @llvm.ppc.altivec.vperm
1290 res_vus = vec_splat(vus, 0); // CHECK: @llvm.ppc.altivec.vperm
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00001291 res_vbs = vec_splat(vbs, 0); // CHECK: @llvm.ppc.altivec.vperm
1292 res_vp = vec_splat(vp, 0); // CHECK: @llvm.ppc.altivec.vperm
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001293 res_vi = vec_splat(vi, 0); // CHECK: @llvm.ppc.altivec.vperm
1294 res_vui = vec_splat(vui, 0); // CHECK: @llvm.ppc.altivec.vperm
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00001295 res_vbi = vec_splat(vbi, 0); // CHECK: @llvm.ppc.altivec.vperm
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001296 res_vf = vec_splat(vf, 0); // CHECK: @llvm.ppc.altivec.vperm
1297 res_vsc = vec_vspltb(vsc, 0); // CHECK: @llvm.ppc.altivec.vperm
1298 res_vuc = vec_vspltb(vuc, 0); // CHECK: @llvm.ppc.altivec.vperm
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00001299 res_vbc = vec_vspltb(vbc, 0); // CHECK: @llvm.ppc.altivec.vperm
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001300 res_vs = vec_vsplth(vs, 0); // CHECK: @llvm.ppc.altivec.vperm
1301 res_vus = vec_vsplth(vus, 0); // CHECK: @llvm.ppc.altivec.vperm
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00001302 res_vbs = vec_vsplth(vbs, 0); // CHECK: @llvm.ppc.altivec.vperm
1303 res_vp = vec_vsplth(vp, 0); // CHECK: @llvm.ppc.altivec.vperm
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001304 res_vi = vec_vspltw(vi, 0); // CHECK: @llvm.ppc.altivec.vperm
1305 res_vui = vec_vspltw(vui, 0); // CHECK: @llvm.ppc.altivec.vperm
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00001306 res_vbi = vec_vspltw(vbi, 0); // CHECK: @llvm.ppc.altivec.vperm
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001307 res_vf = vec_vspltw(vf, 0); // CHECK: @llvm.ppc.altivec.vperm
1308
1309 /* vec_splat_s8 */
1310 res_vsc = vec_splat_s8(0x09); // TODO: add check
1311 res_vsc = vec_vspltisb(0x09); // TODO: add check
1312
1313 /* vec_splat_s16 */
1314 res_vs = vec_splat_s16(0x09); // TODO: add check
1315 res_vs = vec_vspltish(0x09); // TODO: add check
1316
1317 /* vec_splat_s32 */
1318 res_vi = vec_splat_s32(0x09); // TODO: add check
1319 res_vi = vec_vspltisw(0x09); // TODO: add check
1320
1321 /* vec_splat_u8 */
1322 res_vuc = vec_splat_u8(0x09); // TODO: add check
1323
1324 /* vec_splat_u16 */
1325 res_vus = vec_splat_u16(0x09); // TODO: add check
1326
1327 /* vec_splat_u32 */
1328 res_vui = vec_splat_u32(0x09); // TODO: add check
1329
1330 /* vec_sr */
1331 res_vsc = vec_sr(vsc, vuc); // CHECK: shr <16 x i8>
1332 res_vuc = vec_sr(vuc, vuc); // CHECK: shr <16 x i8>
1333 res_vs = vec_sr(vs, vus); // CHECK: shr <8 x i16>
1334 res_vus = vec_sr(vus, vus); // CHECK: shr <8 x i16>
1335 res_vi = vec_sr(vi, vui); // CHECK: shr <4 x i32>
1336 res_vui = vec_sr(vui, vui); // CHECK: shr <4 x i32>
1337 res_vsc = vec_vsrb(vsc, vuc); // CHECK: shr <16 x i8>
1338 res_vuc = vec_vsrb(vuc, vuc); // CHECK: shr <16 x i8>
1339 res_vs = vec_vsrh(vs, vus); // CHECK: shr <8 x i16>
1340 res_vus = vec_vsrh(vus, vus); // CHECK: shr <8 x i16>
1341 res_vi = vec_vsrw(vi, vui); // CHECK: shr <4 x i32>
1342 res_vui = vec_vsrw(vui, vui); // CHECK: shr <4 x i32>
1343
1344 /* vec_sra */
1345 res_vsc = vec_sra(vsc, vuc); // CHECK: @llvm.ppc.altivec.vsrab
1346 res_vuc = vec_sra(vuc, vuc); // CHECK: @llvm.ppc.altivec.vsrab
1347 res_vs = vec_sra(vs, vus); // CHECK: @llvm.ppc.altivec.vsrah
1348 res_vus = vec_sra(vus, vus); // CHECK: @llvm.ppc.altivec.vsrah
1349 res_vi = vec_sra(vi, vui); // CHECK: @llvm.ppc.altivec.vsraw
1350 res_vui = vec_sra(vui, vui); // CHECK: @llvm.ppc.altivec.vsraw
1351 res_vsc = vec_vsrab(vsc, vuc); // CHECK: @llvm.ppc.altivec.vsrab
1352 res_vuc = vec_vsrab(vuc, vuc); // CHECK: @llvm.ppc.altivec.vsrab
1353 res_vs = vec_vsrah(vs, vus); // CHECK: @llvm.ppc.altivec.vsrah
1354 res_vus = vec_vsrah(vus, vus); // CHECK: @llvm.ppc.altivec.vsrah
1355 res_vi = vec_vsraw(vi, vui); // CHECK: @llvm.ppc.altivec.vsraw
1356 res_vui = vec_vsraw(vui, vui); // CHECK: @llvm.ppc.altivec.vsraw
1357
1358 /* vec_srl */
1359 res_vsc = vec_srl(vsc, vuc); // CHECK: @llvm.ppc.altivec.vsr
1360 res_vsc = vec_srl(vsc, vus); // CHECK: @llvm.ppc.altivec.vsr
1361 res_vsc = vec_srl(vsc, vui); // CHECK: @llvm.ppc.altivec.vsr
1362 res_vuc = vec_srl(vuc, vuc); // CHECK: @llvm.ppc.altivec.vsr
1363 res_vuc = vec_srl(vuc, vus); // CHECK: @llvm.ppc.altivec.vsr
1364 res_vuc = vec_srl(vuc, vui); // CHECK: @llvm.ppc.altivec.vsr
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001365 res_vbc = vec_srl(vbc, vuc); // CHECK: @llvm.ppc.altivec.vsr
1366 res_vbc = vec_srl(vbc, vus); // CHECK: @llvm.ppc.altivec.vsr
1367 res_vbc = vec_srl(vbc, vui); // CHECK: @llvm.ppc.altivec.vsr
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001368 res_vs = vec_srl(vs, vuc); // CHECK: @llvm.ppc.altivec.vsr
1369 res_vs = vec_srl(vs, vus); // CHECK: @llvm.ppc.altivec.vsr
1370 res_vs = vec_srl(vs, vui); // CHECK: @llvm.ppc.altivec.vsr
1371 res_vus = vec_srl(vus, vuc); // CHECK: @llvm.ppc.altivec.vsr
1372 res_vus = vec_srl(vus, vus); // CHECK: @llvm.ppc.altivec.vsr
1373 res_vus = vec_srl(vus, vui); // CHECK: @llvm.ppc.altivec.vsr
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001374 res_vbs = vec_srl(vbs, vuc); // CHECK: @llvm.ppc.altivec.vsr
1375 res_vbs = vec_srl(vbs, vus); // CHECK: @llvm.ppc.altivec.vsr
1376 res_vbs = vec_srl(vbs, vui); // CHECK: @llvm.ppc.altivec.vsr
1377 res_vp = vec_srl(vp, vuc); // CHECK: @llvm.ppc.altivec.vsr
1378 res_vp = vec_srl(vp, vus); // CHECK: @llvm.ppc.altivec.vsr
1379 res_vp = vec_srl(vp, vui); // CHECK: @llvm.ppc.altivec.vsr
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001380 res_vi = vec_srl(vi, vuc); // CHECK: @llvm.ppc.altivec.vsr
1381 res_vi = vec_srl(vi, vus); // CHECK: @llvm.ppc.altivec.vsr
1382 res_vi = vec_srl(vi, vui); // CHECK: @llvm.ppc.altivec.vsr
1383 res_vui = vec_srl(vui, vuc); // CHECK: @llvm.ppc.altivec.vsr
1384 res_vui = vec_srl(vui, vus); // CHECK: @llvm.ppc.altivec.vsr
1385 res_vui = vec_srl(vui, vui); // CHECK: @llvm.ppc.altivec.vsr
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001386 res_vbi = vec_srl(vbi, vuc); // CHECK: @llvm.ppc.altivec.vsr
1387 res_vbi = vec_srl(vbi, vus); // CHECK: @llvm.ppc.altivec.vsr
1388 res_vbi = vec_srl(vbi, vui); // CHECK: @llvm.ppc.altivec.vsr
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001389 res_vsc = vec_vsr(vsc, vuc); // CHECK: @llvm.ppc.altivec.vsr
1390 res_vsc = vec_vsr(vsc, vus); // CHECK: @llvm.ppc.altivec.vsr
1391 res_vsc = vec_vsr(vsc, vui); // CHECK: @llvm.ppc.altivec.vsr
1392 res_vuc = vec_vsr(vuc, vuc); // CHECK: @llvm.ppc.altivec.vsr
1393 res_vuc = vec_vsr(vuc, vus); // CHECK: @llvm.ppc.altivec.vsr
1394 res_vuc = vec_vsr(vuc, vui); // CHECK: @llvm.ppc.altivec.vsr
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001395 res_vbc = vec_vsr(vbc, vuc); // CHECK: @llvm.ppc.altivec.vsr
1396 res_vbc = vec_vsr(vbc, vus); // CHECK: @llvm.ppc.altivec.vsr
1397 res_vbc = vec_vsr(vbc, vui); // CHECK: @llvm.ppc.altivec.vsr
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001398 res_vs = vec_vsr(vs, vuc); // CHECK: @llvm.ppc.altivec.vsr
1399 res_vs = vec_vsr(vs, vus); // CHECK: @llvm.ppc.altivec.vsr
1400 res_vs = vec_vsr(vs, vui); // CHECK: @llvm.ppc.altivec.vsr
1401 res_vus = vec_vsr(vus, vuc); // CHECK: @llvm.ppc.altivec.vsr
1402 res_vus = vec_vsr(vus, vus); // CHECK: @llvm.ppc.altivec.vsr
1403 res_vus = vec_vsr(vus, vui); // CHECK: @llvm.ppc.altivec.vsr
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001404 res_vbs = vec_vsr(vbs, vuc); // CHECK: @llvm.ppc.altivec.vsr
1405 res_vbs = vec_vsr(vbs, vus); // CHECK: @llvm.ppc.altivec.vsr
1406 res_vbs = vec_vsr(vbs, vui); // CHECK: @llvm.ppc.altivec.vsr
1407 res_vp = vec_vsr(vp, vuc); // CHECK: @llvm.ppc.altivec.vsr
1408 res_vp = vec_vsr(vp, vus); // CHECK: @llvm.ppc.altivec.vsr
1409 res_vp = vec_vsr(vp, vui); // CHECK: @llvm.ppc.altivec.vsr
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001410 res_vi = vec_vsr(vi, vuc); // CHECK: @llvm.ppc.altivec.vsr
1411 res_vi = vec_vsr(vi, vus); // CHECK: @llvm.ppc.altivec.vsr
1412 res_vi = vec_vsr(vi, vui); // CHECK: @llvm.ppc.altivec.vsr
1413 res_vui = vec_vsr(vui, vuc); // CHECK: @llvm.ppc.altivec.vsr
1414 res_vui = vec_vsr(vui, vus); // CHECK: @llvm.ppc.altivec.vsr
1415 res_vui = vec_vsr(vui, vui); // CHECK: @llvm.ppc.altivec.vsr
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001416 res_vbi = vec_vsr(vbi, vuc); // CHECK: @llvm.ppc.altivec.vsr
1417 res_vbi = vec_vsr(vbi, vus); // CHECK: @llvm.ppc.altivec.vsr
1418 res_vbi = vec_vsr(vbi, vui); // CHECK: @llvm.ppc.altivec.vsr
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001419
1420 /* vec_sro */
1421 res_vsc = vec_sro(vsc, vsc); // CHECK: @llvm.ppc.altivec.vsro
1422 res_vsc = vec_sro(vsc, vuc); // CHECK: @llvm.ppc.altivec.vsro
1423 res_vuc = vec_sro(vuc, vsc); // CHECK: @llvm.ppc.altivec.vsro
1424 res_vuc = vec_sro(vuc, vuc); // CHECK: @llvm.ppc.altivec.vsro
1425 res_vs = vec_sro(vs, vsc); // CHECK: @llvm.ppc.altivec.vsro
1426 res_vs = vec_sro(vs, vuc); // CHECK: @llvm.ppc.altivec.vsro
1427 res_vus = vec_sro(vus, vsc); // CHECK: @llvm.ppc.altivec.vsro
1428 res_vus = vec_sro(vus, vuc); // CHECK: @llvm.ppc.altivec.vsro
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001429 res_vp = vec_sro(vp, vsc); // CHECK: @llvm.ppc.altivec.vsro
1430 res_vp = vec_sro(vp, vuc); // CHECK: @llvm.ppc.altivec.vsro
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001431 res_vi = vec_sro(vi, vsc); // CHECK: @llvm.ppc.altivec.vsro
1432 res_vi = vec_sro(vi, vuc); // CHECK: @llvm.ppc.altivec.vsro
1433 res_vui = vec_sro(vui, vsc); // CHECK: @llvm.ppc.altivec.vsro
1434 res_vui = vec_sro(vui, vuc); // CHECK: @llvm.ppc.altivec.vsro
1435 res_vf = vec_sro(vf, vsc); // CHECK: @llvm.ppc.altivec.vsro
1436 res_vf = vec_sro(vf, vuc); // CHECK: @llvm.ppc.altivec.vsro
1437 res_vsc = vec_vsro(vsc, vsc); // CHECK: @llvm.ppc.altivec.vsro
1438 res_vsc = vec_vsro(vsc, vuc); // CHECK: @llvm.ppc.altivec.vsro
1439 res_vuc = vec_vsro(vuc, vsc); // CHECK: @llvm.ppc.altivec.vsro
1440 res_vuc = vec_vsro(vuc, vuc); // CHECK: @llvm.ppc.altivec.vsro
1441 res_vs = vec_vsro(vs, vsc); // CHECK: @llvm.ppc.altivec.vsro
1442 res_vs = vec_vsro(vs, vuc); // CHECK: @llvm.ppc.altivec.vsro
1443 res_vus = vec_vsro(vus, vsc); // CHECK: @llvm.ppc.altivec.vsro
1444 res_vus = vec_vsro(vus, vuc); // CHECK: @llvm.ppc.altivec.vsro
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001445 res_vp = vec_vsro(vp, vsc); // CHECK: @llvm.ppc.altivec.vsro
1446 res_vp = vec_vsro(vp, vuc); // CHECK: @llvm.ppc.altivec.vsro
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001447 res_vi = vec_vsro(vi, vsc); // CHECK: @llvm.ppc.altivec.vsro
1448 res_vi = vec_vsro(vi, vuc); // CHECK: @llvm.ppc.altivec.vsro
1449 res_vui = vec_vsro(vui, vsc); // CHECK: @llvm.ppc.altivec.vsro
1450 res_vui = vec_vsro(vui, vuc); // CHECK: @llvm.ppc.altivec.vsro
1451 res_vf = vec_vsro(vf, vsc); // CHECK: @llvm.ppc.altivec.vsro
1452 res_vf = vec_vsro(vf, vuc); // CHECK: @llvm.ppc.altivec.vsro
1453
1454 /* vec_st */
1455 vec_st(vsc, 0, &vsc); // CHECK: @llvm.ppc.altivec.stvx
1456 vec_st(vsc, 0, &param_sc); // CHECK: @llvm.ppc.altivec.stvx
1457 vec_st(vuc, 0, &vuc); // CHECK: @llvm.ppc.altivec.stvx
1458 vec_st(vuc, 0, &param_uc); // CHECK: @llvm.ppc.altivec.stvx
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001459 vec_st(vbc, 0, &param_uc); // CHECK: @llvm.ppc.altivec.stvx
1460 vec_st(vbc, 0, &param_uc); // CHECK: @llvm.ppc.altivec.stvx
1461 vec_st(vbc, 0, &vbc); // CHECK: @llvm.ppc.altivec.stvx
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001462 vec_st(vs, 0, &vs); // CHECK: @llvm.ppc.altivec.stvx
1463 vec_st(vs, 0, &param_s); // CHECK: @llvm.ppc.altivec.stvx
1464 vec_st(vus, 0, &vus); // CHECK: @llvm.ppc.altivec.stvx
1465 vec_st(vus, 0, &param_us); // CHECK: @llvm.ppc.altivec.stvx
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001466 vec_st(vbs, 0, &param_s); // CHECK: @llvm.ppc.altivec.stvx
1467 vec_st(vbs, 0, &param_us); // CHECK: @llvm.ppc.altivec.stvx
1468 vec_st(vbs, 0, &vbs); // CHECK: @llvm.ppc.altivec.stvx
1469 vec_st(vp, 0, &param_s); // CHECK: @llvm.ppc.altivec.stvx
1470 vec_st(vp, 0, &param_us); // CHECK: @llvm.ppc.altivec.stvx
1471 vec_st(vp, 0, &vp); // CHECK: @llvm.ppc.altivec.stvx
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001472 vec_st(vi, 0, &vi); // CHECK: @llvm.ppc.altivec.stvx
1473 vec_st(vi, 0, &param_i); // CHECK: @llvm.ppc.altivec.stvx
1474 vec_st(vui, 0, &vui); // CHECK: @llvm.ppc.altivec.stvx
1475 vec_st(vui, 0, &param_ui); // CHECK: @llvm.ppc.altivec.stvx
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001476 vec_st(vbi, 0, &param_i); // CHECK: @llvm.ppc.altivec.stvx
1477 vec_st(vbi, 0, &param_ui); // CHECK: @llvm.ppc.altivec.stvx
1478 vec_st(vbi, 0, &vbi); // CHECK: @llvm.ppc.altivec.stvx
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001479 vec_st(vf, 0, &vf); // CHECK: @llvm.ppc.altivec.stvx
1480 vec_st(vf, 0, &param_f); // CHECK: @llvm.ppc.altivec.stvx
1481 vec_stvx(vsc, 0, &vsc); // CHECK: @llvm.ppc.altivec.stvx
1482 vec_stvx(vsc, 0, &param_sc); // CHECK: @llvm.ppc.altivec.stvx
1483 vec_stvx(vuc, 0, &vuc); // CHECK: @llvm.ppc.altivec.stvx
1484 vec_stvx(vuc, 0, &param_uc); // CHECK: @llvm.ppc.altivec.stvx
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001485 vec_stvx(vbc, 0, &param_uc); // CHECK: @llvm.ppc.altivec.stvx
1486 vec_stvx(vbc, 0, &param_uc); // CHECK: @llvm.ppc.altivec.stvx
1487 vec_stvx(vbc, 0, &vbc); // CHECK: @llvm.ppc.altivec.stvx
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001488 vec_stvx(vs, 0, &vs); // CHECK: @llvm.ppc.altivec.stvx
1489 vec_stvx(vs, 0, &param_s); // CHECK: @llvm.ppc.altivec.stvx
1490 vec_stvx(vus, 0, &vus); // CHECK: @llvm.ppc.altivec.stvx
1491 vec_stvx(vus, 0, &param_us); // CHECK: @llvm.ppc.altivec.stvx
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001492 vec_stvx(vbs, 0, &param_s); // CHECK: @llvm.ppc.altivec.stvx
1493 vec_stvx(vbs, 0, &param_us); // CHECK: @llvm.ppc.altivec.stvx
1494 vec_stvx(vbs, 0, &vbs); // CHECK: @llvm.ppc.altivec.stvx
1495 vec_stvx(vp, 0, &param_s); // CHECK: @llvm.ppc.altivec.stvx
1496 vec_stvx(vp, 0, &param_us); // CHECK: @llvm.ppc.altivec.stvx
1497 vec_stvx(vp, 0, &vp); // CHECK: @llvm.ppc.altivec.stvx
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001498 vec_stvx(vi, 0, &vi); // CHECK: @llvm.ppc.altivec.stvx
1499 vec_stvx(vi, 0, &param_i); // CHECK: @llvm.ppc.altivec.stvx
1500 vec_stvx(vui, 0, &vui); // CHECK: @llvm.ppc.altivec.stvx
1501 vec_stvx(vui, 0, &param_ui); // CHECK: @llvm.ppc.altivec.stvx
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001502 vec_stvx(vbi, 0, &param_i); // CHECK: @llvm.ppc.altivec.stvx
1503 vec_stvx(vbi, 0, &param_ui); // CHECK: @llvm.ppc.altivec.stvx
1504 vec_stvx(vbi, 0, &vbi); // CHECK: @llvm.ppc.altivec.stvx
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001505 vec_stvx(vf, 0, &vf); // CHECK: @llvm.ppc.altivec.stvx
1506 vec_stvx(vf, 0, &param_f); // CHECK: @llvm.ppc.altivec.stvx
1507
1508 /* vec_ste */
1509 vec_ste(vsc, 0, &param_sc); // CHECK: @llvm.ppc.altivec.stvebx
1510 vec_ste(vuc, 0, &param_uc); // CHECK: @llvm.ppc.altivec.stvebx
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001511 vec_ste(vbc, 0, &param_sc); // CHECK: @llvm.ppc.altivec.stvebx
1512 vec_ste(vbc, 0, &param_uc); // CHECK: @llvm.ppc.altivec.stvebx
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001513 vec_ste(vs, 0, &param_s); // CHECK: @llvm.ppc.altivec.stvehx
1514 vec_ste(vus, 0, &param_us); // CHECK: @llvm.ppc.altivec.stvehx
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001515 vec_ste(vbs, 0, &param_s); // CHECK: @llvm.ppc.altivec.stvehx
1516 vec_ste(vbs, 0, &param_us); // CHECK: @llvm.ppc.altivec.stvehx
1517 vec_ste(vp, 0, &param_s); // CHECK: @llvm.ppc.altivec.stvehx
1518 vec_ste(vp, 0, &param_us); // CHECK: @llvm.ppc.altivec.stvehx
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001519 vec_ste(vi, 0, &param_i); // CHECK: @llvm.ppc.altivec.stvewx
1520 vec_ste(vui, 0, &param_ui); // CHECK: @llvm.ppc.altivec.stvewx
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001521 vec_ste(vbi, 0, &param_i); // CHECK: @llvm.ppc.altivec.stvewx
1522 vec_ste(vbi, 0, &param_ui); // CHECK: @llvm.ppc.altivec.stvewx
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001523 vec_ste(vf, 0, &param_f); // CHECK: @llvm.ppc.altivec.stvewx
1524 vec_stvebx(vsc, 0, &param_sc); // CHECK: @llvm.ppc.altivec.stvebx
1525 vec_stvebx(vuc, 0, &param_uc); // CHECK: @llvm.ppc.altivec.stvebx
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001526 vec_stvebx(vbc, 0, &param_sc); // CHECK: @llvm.ppc.altivec.stvebx
1527 vec_stvebx(vbc, 0, &param_uc); // CHECK: @llvm.ppc.altivec.stvebx
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001528 vec_stvehx(vs, 0, &param_s); // CHECK: @llvm.ppc.altivec.stvehx
1529 vec_stvehx(vus, 0, &param_us); // CHECK: @llvm.ppc.altivec.stvehx
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001530 vec_stvehx(vbs, 0, &param_s); // CHECK: @llvm.ppc.altivec.stvehx
1531 vec_stvehx(vbs, 0, &param_us); // CHECK: @llvm.ppc.altivec.stvehx
1532 vec_stvehx(vp, 0, &param_s); // CHECK: @llvm.ppc.altivec.stvehx
1533 vec_stvehx(vp, 0, &param_us); // CHECK: @llvm.ppc.altivec.stvehx
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001534 vec_stvewx(vi, 0, &param_i); // CHECK: @llvm.ppc.altivec.stvewx
1535 vec_stvewx(vui, 0, &param_ui); // CHECK: @llvm.ppc.altivec.stvewx
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001536 vec_stvewx(vbi, 0, &param_i); // CHECK: @llvm.ppc.altivec.stvewx
1537 vec_stvewx(vbi, 0, &param_ui); // CHECK: @llvm.ppc.altivec.stvewx
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001538 vec_stvewx(vf, 0, &param_f); // CHECK: @llvm.ppc.altivec.stvewx
1539
1540 /* vec_stl */
1541 vec_stl(vsc, 0, &vsc); // CHECK: @llvm.ppc.altivec.stvxl
1542 vec_stl(vsc, 0, &param_sc); // CHECK: @llvm.ppc.altivec.stvxl
1543 vec_stl(vuc, 0, &vuc); // CHECK: @llvm.ppc.altivec.stvxl
1544 vec_stl(vuc, 0, &param_uc); // CHECK: @llvm.ppc.altivec.stvxl
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001545 vec_stl(vbc, 0, &param_sc); // CHECK: @llvm.ppc.altivec.stvxl
1546 vec_stl(vbc, 0, &param_uc); // CHECK: @llvm.ppc.altivec.stvxl
1547 vec_stl(vbc, 0, &vbc); // CHECK: @llvm.ppc.altivec.stvxl
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001548 vec_stl(vs, 0, &vs); // CHECK: @llvm.ppc.altivec.stvxl
1549 vec_stl(vs, 0, &param_s); // CHECK: @llvm.ppc.altivec.stvxl
1550 vec_stl(vus, 0, &vus); // CHECK: @llvm.ppc.altivec.stvxl
1551 vec_stl(vus, 0, &param_us); // CHECK: @llvm.ppc.altivec.stvxl
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001552 vec_stl(vbs, 0, &param_s); // CHECK: @llvm.ppc.altivec.stvxl
1553 vec_stl(vbs, 0, &param_us); // CHECK: @llvm.ppc.altivec.stvxl
1554 vec_stl(vbs, 0, &vbs); // CHECK: @llvm.ppc.altivec.stvxl
1555 vec_stl(vp, 0, &param_s); // CHECK: @llvm.ppc.altivec.stvxl
1556 vec_stl(vp, 0, &param_us); // CHECK: @llvm.ppc.altivec.stvxl
1557 vec_stl(vp, 0, &vp); // CHECK: @llvm.ppc.altivec.stvxl
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001558 vec_stl(vi, 0, &vi); // CHECK: @llvm.ppc.altivec.stvxl
1559 vec_stl(vi, 0, &param_i); // CHECK: @llvm.ppc.altivec.stvxl
1560 vec_stl(vui, 0, &vui); // CHECK: @llvm.ppc.altivec.stvxl
1561 vec_stl(vui, 0, &param_ui); // CHECK: @llvm.ppc.altivec.stvxl
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001562 vec_stl(vbi, 0, &param_i); // CHECK: @llvm.ppc.altivec.stvxl
1563 vec_stl(vbi, 0, &param_ui); // CHECK: @llvm.ppc.altivec.stvxl
1564 vec_stl(vbi, 0, &vbi); // CHECK: @llvm.ppc.altivec.stvxl
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001565 vec_stl(vf, 0, &vf); // CHECK: @llvm.ppc.altivec.stvxl
1566 vec_stl(vf, 0, &param_f); // CHECK: @llvm.ppc.altivec.stvxl
1567 vec_stvxl(vsc, 0, &vsc); // CHECK: @llvm.ppc.altivec.stvxl
1568 vec_stvxl(vsc, 0, &param_sc); // CHECK: @llvm.ppc.altivec.stvxl
1569 vec_stvxl(vuc, 0, &vuc); // CHECK: @llvm.ppc.altivec.stvxl
1570 vec_stvxl(vuc, 0, &param_uc); // CHECK: @llvm.ppc.altivec.stvxl
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001571 vec_stvxl(vbc, 0, &param_sc); // CHECK: @llvm.ppc.altivec.stvxl
1572 vec_stvxl(vbc, 0, &param_uc); // CHECK: @llvm.ppc.altivec.stvxl
1573 vec_stvxl(vbc, 0, &vbc); // CHECK: @llvm.ppc.altivec.stvxl
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001574 vec_stvxl(vs, 0, &vs); // CHECK: @llvm.ppc.altivec.stvxl
1575 vec_stvxl(vs, 0, &param_s); // CHECK: @llvm.ppc.altivec.stvxl
1576 vec_stvxl(vus, 0, &vus); // CHECK: @llvm.ppc.altivec.stvxl
1577 vec_stvxl(vus, 0, &param_us); // CHECK: @llvm.ppc.altivec.stvxl
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001578 vec_stvxl(vbs, 0, &param_s); // CHECK: @llvm.ppc.altivec.stvxl
1579 vec_stvxl(vbs, 0, &param_us); // CHECK: @llvm.ppc.altivec.stvxl
1580 vec_stvxl(vbs, 0, &vbs); // CHECK: @llvm.ppc.altivec.stvxl
1581 vec_stvxl(vp, 0, &param_s); // CHECK: @llvm.ppc.altivec.stvxl
1582 vec_stvxl(vp, 0, &param_us); // CHECK: @llvm.ppc.altivec.stvxl
1583 vec_stvxl(vp, 0, &vp); // CHECK: @llvm.ppc.altivec.stvxl
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001584 vec_stvxl(vi, 0, &vi); // CHECK: @llvm.ppc.altivec.stvxl
1585 vec_stvxl(vi, 0, &param_i); // CHECK: @llvm.ppc.altivec.stvxl
1586 vec_stvxl(vui, 0, &vui); // CHECK: @llvm.ppc.altivec.stvxl
1587 vec_stvxl(vui, 0, &param_ui); // CHECK: @llvm.ppc.altivec.stvxl
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001588 vec_stvxl(vbi, 0, &param_i); // CHECK: @llvm.ppc.altivec.stvxl
1589 vec_stvxl(vbi, 0, &param_ui); // CHECK: @llvm.ppc.altivec.stvxl
1590 vec_stvxl(vbi, 0, &vbi); // CHECK: @llvm.ppc.altivec.stvxl
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001591 vec_stvxl(vf, 0, &vf); // CHECK: @llvm.ppc.altivec.stvxl
1592 vec_stvxl(vf, 0, &param_f); // CHECK: @llvm.ppc.altivec.stvxl
1593
1594 /* vec_sub */
1595 res_vsc = vec_sub(vsc, vsc); // CHECK: sub nsw <16 x i8>
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001596 res_vsc = vec_sub(vbc, vsc); // CHECK: sub nsw <16 x i8>
1597 res_vsc = vec_sub(vsc, vbc); // CHECK: sub nsw <16 x i8>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001598 res_vuc = vec_sub(vuc, vuc); // CHECK: sub <16 x i8>
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001599 res_vuc = vec_sub(vbc, vuc); // CHECK: sub <16 x i8>
1600 res_vuc = vec_sub(vuc, vbc); // CHECK: sub <16 x i8>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001601 res_vs = vec_sub(vs, vs); // CHECK: sub nsw <8 x i16>
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001602 res_vs = vec_sub(vbs, vs); // CHECK: sub nsw <8 x i16>
1603 res_vs = vec_sub(vs, vbs); // CHECK: sub nsw <8 x i16>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001604 res_vus = vec_sub(vus, vus); // CHECK: sub <8 x i16>
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001605 res_vus = vec_sub(vbs, vus); // CHECK: sub <8 x i16>
1606 res_vus = vec_sub(vus, vbs); // CHECK: sub <8 x i16>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001607 res_vi = vec_sub(vi, vi); // CHECK: sub nsw <4 x i32>
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001608 res_vi = vec_sub(vbi, vi); // CHECK: sub nsw <4 x i32>
1609 res_vi = vec_sub(vi, vbi); // CHECK: sub nsw <4 x i32>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001610 res_vui = vec_sub(vui, vui); // CHECK: sub <4 x i32>
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001611 res_vui = vec_sub(vbi, vui); // CHECK: sub <4 x i32>
1612 res_vui = vec_sub(vui, vbi); // CHECK: sub <4 x i32>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001613 res_vf = vec_sub(vf, vf); // CHECK: fsub <4 x float>
1614 res_vsc = vec_vsububm(vsc, vsc); // CHECK: sub nsw <16 x i8>
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001615 res_vsc = vec_vsububm(vbc, vsc); // CHECK: sub nsw <16 x i8>
1616 res_vsc = vec_vsububm(vsc, vbc); // CHECK: sub nsw <16 x i8>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001617 res_vuc = vec_vsububm(vuc, vuc); // CHECK: sub <16 x i8>
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001618 res_vuc = vec_vsububm(vbc, vuc); // CHECK: sub <16 x i8>
1619 res_vuc = vec_vsububm(vuc, vbc); // CHECK: sub <16 x i8>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001620 res_vs = vec_vsubuhm(vs, vs); // CHECK: sub nsw <8 x i16>
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001621 res_vs = vec_vsubuhm(vbs, vus); // CHECK: sub <8 x i16>
1622 res_vs = vec_vsubuhm(vus, vbs); // CHECK: sub <8 x i16>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001623 res_vus = vec_vsubuhm(vus, vus); // CHECK: sub <8 x i16>
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001624 res_vus = vec_vsubuhm(vbs, vus); // CHECK: sub <8 x i16>
1625 res_vus = vec_vsubuhm(vus, vbs); // CHECK: sub <8 x i16>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001626 res_vi = vec_vsubuwm(vi, vi); // CHECK: sub nsw <4 x i32>
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001627 res_vi = vec_vsubuwm(vbi, vi); // CHECK: sub nsw <4 x i32>
1628 res_vi = vec_vsubuwm(vi, vbi); // CHECK: sub nsw <4 x i32>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001629 res_vui = vec_vsubuwm(vui, vui); // CHECK: sub <4 x i32>
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001630 res_vui = vec_vsubuwm(vbi, vui); // CHECK: sub <4 x i32>
1631 res_vui = vec_vsubuwm(vui, vbi); // CHECK: sub <4 x i32>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001632 res_vf = vec_vsubfp(vf, vf); // CHECK: fsub <4 x float>
1633
1634 /* vec_subc */
1635 res_vui = vec_subc(vui, vui); // CHECK: @llvm.ppc.altivec.vsubcuw
1636 res_vui = vec_vsubcuw(vui, vui); // CHECK: @llvm.ppc.altivec.vsubcuw
1637
1638 /* vec_subs */
1639 res_vsc = vec_subs(vsc, vsc); // CHECK: @llvm.ppc.altivec.vsubsbs
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001640 res_vsc = vec_subs(vbc, vsc); // CHECK: @llvm.ppc.altivec.vsubsbs
1641 res_vsc = vec_subs(vsc, vbc); // CHECK: @llvm.ppc.altivec.vsubsbs
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001642 res_vuc = vec_subs(vuc, vuc); // CHECK: @llvm.ppc.altivec.vsububs
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001643 res_vuc = vec_subs(vbc, vuc); // CHECK: @llvm.ppc.altivec.vsububs
1644 res_vuc = vec_subs(vuc, vbc); // CHECK: @llvm.ppc.altivec.vsububs
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001645 res_vs = vec_subs(vs, vs); // CHECK: @llvm.ppc.altivec.vsubshs
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001646 res_vs = vec_subs(vbs, vs); // CHECK: @llvm.ppc.altivec.vsubshs
1647 res_vs = vec_subs(vs, vbs); // CHECK: @llvm.ppc.altivec.vsubshs
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001648 res_vus = vec_subs(vus, vus); // CHECK: @llvm.ppc.altivec.vsubuhs
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001649 res_vus = vec_subs(vbs, vus); // CHECK: @llvm.ppc.altivec.vsubuhs
1650 res_vus = vec_subs(vus, vbs); // CHECK: @llvm.ppc.altivec.vsubuhs
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001651 res_vi = vec_subs(vi, vi); // CHECK: @llvm.ppc.altivec.vsubsws
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001652 res_vi = vec_subs(vbi, vi); // CHECK: @llvm.ppc.altivec.vsubsws
1653 res_vi = vec_subs(vi, vbi); // CHECK: @llvm.ppc.altivec.vsubsws
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001654 res_vui = vec_subs(vui, vui); // CHECK: @llvm.ppc.altivec.vsubuws
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001655 res_vui = vec_subs(vbi, vui); // CHECK: @llvm.ppc.altivec.vsubuws
1656 res_vui = vec_subs(vui, vbi); // CHECK: @llvm.ppc.altivec.vsubuws
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001657 res_vsc = vec_vsubsbs(vsc, vsc); // CHECK: @llvm.ppc.altivec.vsubsbs
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001658 res_vsc = vec_vsubsbs(vbc, vsc); // CHECK: @llvm.ppc.altivec.vsubsbs
1659 res_vsc = vec_vsubsbs(vsc, vbc); // CHECK: @llvm.ppc.altivec.vsubsbs
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001660 res_vuc = vec_vsububs(vuc, vuc); // CHECK: @llvm.ppc.altivec.vsububs
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001661 res_vuc = vec_vsububs(vbc, vuc); // CHECK: @llvm.ppc.altivec.vsububs
1662 res_vuc = vec_vsububs(vuc, vbc); // CHECK: @llvm.ppc.altivec.vsububs
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001663 res_vs = vec_vsubshs(vs, vs); // CHECK: @llvm.ppc.altivec.vsubshs
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001664 res_vs = vec_vsubshs(vbs, vs); // CHECK: @llvm.ppc.altivec.vsubshs
1665 res_vs = vec_vsubshs(vs, vbs); // CHECK: @llvm.ppc.altivec.vsubshs
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001666 res_vus = vec_vsubuhs(vus, vus); // CHECK: @llvm.ppc.altivec.vsubuhs
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001667 res_vus = vec_vsubuhs(vbs, vus); // CHECK: @llvm.ppc.altivec.vsubuhs
1668 res_vus = vec_vsubuhs(vus, vbs); // CHECK: @llvm.ppc.altivec.vsubuhs
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001669 res_vi = vec_vsubsws(vi, vi); // CHECK: @llvm.ppc.altivec.vsubsws
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001670 res_vi = vec_vsubsws(vbi, vi); // CHECK: @llvm.ppc.altivec.vsubsws
1671 res_vi = vec_vsubsws(vi, vbi); // CHECK: @llvm.ppc.altivec.vsubsws
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001672 res_vui = vec_vsubuws(vui, vui); // CHECK: @llvm.ppc.altivec.vsubuws
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001673 res_vui = vec_vsubuws(vbi, vui); // CHECK: @llvm.ppc.altivec.vsubuws
1674 res_vui = vec_vsubuws(vui, vbi); // CHECK: @llvm.ppc.altivec.vsubuws
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001675
1676 /* vec_sum4s */
1677 res_vi = vec_sum4s(vsc, vi); // CHECK: @llvm.ppc.altivec.vsum4sbs
1678 res_vui = vec_sum4s(vuc, vui); // CHECK: @llvm.ppc.altivec.vsum4ubs
1679 res_vi = vec_sum4s(vs, vi); // CHECK: @llvm.ppc.altivec.vsum4shs
1680 res_vi = vec_vsum4sbs(vsc, vi); // CHECK: @llvm.ppc.altivec.vsum4sbs
1681 res_vui = vec_vsum4ubs(vuc, vui); // CHECK: @llvm.ppc.altivec.vsum4ubs
1682 res_vi = vec_vsum4shs(vs, vi); // CHECK: @llvm.ppc.altivec.vsum4shs
1683
1684 /* vec_sum2s */
1685 res_vi = vec_sum2s(vi, vi); // CHECK: @llvm.ppc.altivec.vsum2sws
1686 res_vi = vec_vsum2sws(vi, vi); // CHECK: @llvm.ppc.altivec.vsum2sws
1687
1688 /* vec_sums */
1689 res_vi = vec_sums(vi, vi); // CHECK: @llvm.ppc.altivec.vsumsws
1690 res_vi = vec_vsumsws(vi, vi); // CHECK: @llvm.ppc.altivec.vsumsws
1691
1692 /* vec_trunc */
1693 res_vf = vec_trunc(vf); // CHECK: @llvm.ppc.altivec.vrfiz
1694 res_vf = vec_vrfiz(vf); // CHECK: @llvm.ppc.altivec.vrfiz
1695
1696 /* vec_unpackh */
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001697 res_vs = vec_unpackh(vsc); // CHECK: @llvm.ppc.altivec.vupkhsb
1698 res_vbs = vec_unpackh(vbc); // CHECK: @llvm.ppc.altivec.vupkhsb
1699 res_vi = vec_unpackh(vs); // CHECK: @llvm.ppc.altivec.vupkhsh
1700 res_vbi = vec_unpackh(vbs); // CHECK: @llvm.ppc.altivec.vupkhsh
1701 res_vui = vec_unpackh(vp); // CHECK: @llvm.ppc.altivec.vupkhsh
1702 res_vs = vec_vupkhsb(vsc); // CHECK: @llvm.ppc.altivec.vupkhsb
1703 res_vbs = vec_vupkhsb(vbc); // CHECK: @llvm.ppc.altivec.vupkhsb
1704 res_vi = vec_vupkhsh(vs); // CHECK: @llvm.ppc.altivec.vupkhsh
1705 res_vbi = vec_vupkhsh(vbs); // CHECK: @llvm.ppc.altivec.vupkhsh
1706 res_vui = vec_vupkhsh(vp); // CHECK: @llvm.ppc.altivec.vupkhsh
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001707
1708 /* vec_unpackl */
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001709 res_vs = vec_unpackl(vsc); // CHECK: @llvm.ppc.altivec.vupklsb
1710 res_vbs = vec_unpackl(vbc); // CHECK: @llvm.ppc.altivec.vupklsb
1711 res_vi = vec_unpackl(vs); // CHECK: @llvm.ppc.altivec.vupklsh
1712 res_vbi = vec_unpackl(vbs); // CHECK: @llvm.ppc.altivec.vupklsh
1713 res_vui = vec_unpackl(vp); // CHECK: @llvm.ppc.altivec.vupklsh
1714 res_vs = vec_vupklsb(vsc); // CHECK: @llvm.ppc.altivec.vupklsb
1715 res_vbs = vec_vupklsb(vbc); // CHECK: @llvm.ppc.altivec.vupklsb
1716 res_vi = vec_vupklsh(vs); // CHECK: @llvm.ppc.altivec.vupklsh
1717 res_vbi = vec_vupklsh(vbs); // CHECK: @llvm.ppc.altivec.vupklsh
1718 res_vui = vec_vupklsh(vp); // CHECK: @llvm.ppc.altivec.vupklsh
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001719
1720 /* vec_xor */
1721 res_vsc = vec_xor(vsc, vsc); // CHECK: xor <16 x i8>
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001722 res_vsc = vec_xor(vbc, vsc); // CHECK: xor <16 x i8>
1723 res_vsc = vec_xor(vsc, vbc); // CHECK: xor <16 x i8>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001724 res_vuc = vec_xor(vuc, vuc); // CHECK: xor <16 x i8>
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001725 res_vuc = vec_xor(vbc, vuc); // CHECK: xor <16 x i8>
1726 res_vuc = vec_xor(vuc, vbc); // CHECK: xor <16 x i8>
1727 res_vbc = vec_xor(vbc, vbc); // CHECK: xor <16 x i8>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001728 res_vs = vec_xor(vs, vs); // CHECK: xor <8 x i16>
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001729 res_vs = vec_xor(vbs, vs); // CHECK: xor <8 x i16>
1730 res_vs = vec_xor(vs, vbs); // CHECK: xor <8 x i16>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001731 res_vus = vec_xor(vus, vus); // CHECK: xor <8 x i16>
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001732 res_vus = vec_xor(vbs, vus); // CHECK: xor <8 x i16>
1733 res_vus = vec_xor(vus, vbs); // CHECK: xor <8 x i16>
1734 res_vbs = vec_xor(vbs, vbs); // CHECK: xor <8 x i16>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001735 res_vi = vec_xor(vi, vi); // CHECK: xor <4 x i32>
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001736 res_vi = vec_xor(vbi, vi); // CHECK: xor <4 x i32>
1737 res_vi = vec_xor(vi, vbi); // CHECK: xor <4 x i32>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001738 res_vui = vec_xor(vui, vui); // CHECK: xor <4 x i32>
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001739 res_vui = vec_xor(vbi, vui); // CHECK: xor <4 x i32>
1740 res_vui = vec_xor(vui, vbi); // CHECK: xor <4 x i32>
1741 res_vbi = vec_xor(vbi, vbi); // CHECK: xor <4 x i32>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001742 res_vf = vec_xor(vf, vf); // CHECK: xor <4 x i32>
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001743 res_vf = vec_xor(vbi, vf); // CHECK: xor <4 x i32>
1744 res_vf = vec_xor(vf, vbi); // CHECK: xor <4 x i32>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001745 res_vsc = vec_vxor(vsc, vsc); // CHECK: xor <16 x i8>
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001746 res_vsc = vec_vxor(vbc, vsc); // CHECK: xor <16 x i8>
1747 res_vsc = vec_vxor(vsc, vbc); // CHECK: xor <16 x i8>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001748 res_vuc = vec_vxor(vuc, vuc); // CHECK: xor <16 x i8>
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001749 res_vuc = vec_vxor(vbc, vuc); // CHECK: xor <16 x i8>
1750 res_vuc = vec_vxor(vuc, vbc); // CHECK: xor <16 x i8>
1751 res_vbc = vec_vxor(vbc, vbc); // CHECK: xor <16 x i8>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001752 res_vs = vec_vxor(vs, vs); // CHECK: xor <8 x i16>
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001753 res_vs = vec_vxor(vbs, vs); // CHECK: xor <8 x i16>
1754 res_vs = vec_vxor(vs, vbs); // CHECK: xor <8 x i16>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001755 res_vus = vec_vxor(vus, vus); // CHECK: xor <8 x i16>
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001756 res_vus = vec_vxor(vbs, vus); // CHECK: xor <8 x i16>
1757 res_vus = vec_vxor(vus, vbs); // CHECK: xor <8 x i16>
1758 res_vbs = vec_vxor(vbs, vbs); // CHECK: xor <8 x i16>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001759 res_vi = vec_vxor(vi, vi); // CHECK: xor <4 x i32>
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001760 res_vi = vec_vxor(vbi, vi); // CHECK: xor <4 x i32>
1761 res_vi = vec_vxor(vi, vbi); // CHECK: xor <4 x i32>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001762 res_vui = vec_vxor(vui, vui); // CHECK: xor <4 x i32>
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001763 res_vui = vec_vxor(vbi, vui); // CHECK: xor <4 x i32>
1764 res_vui = vec_vxor(vui, vbi); // CHECK: xor <4 x i32>
1765 res_vbi = vec_vxor(vbi, vbi); // CHECK: xor <4 x i32>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001766 res_vf = vec_vxor(vf, vf); // CHECK: xor <4 x i32>
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001767 res_vf = vec_vxor(vbi, vf); // CHECK: xor <4 x i32>
1768 res_vf = vec_vxor(vf, vbi); // CHECK: xor <4 x i32>
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001769
Anton Yartsev44270d62010-10-14 14:37:46 +00001770 /* ------------------------------ extensions -------------------------------------- */
1771
1772 /* vec_extract */
1773 res_sc = vec_extract(vsc, param_i); // CHECK: extractelement <16 x i8>
1774 res_uc = vec_extract(vuc, param_i); // CHECK: extractelement <16 x i8>
1775 res_s = vec_extract(vs, param_i); // CHECK: extractelement <8 x i16>
1776 res_us = vec_extract(vus, param_i); // CHECK: extractelement <8 x i16>
1777 res_i = vec_extract(vi, param_i); // CHECK: extractelement <4 x i32>
1778 res_ui = vec_extract(vui, param_i); // CHECK: extractelement <4 x i32>
1779 res_f = vec_extract(vf, param_i); // CHECK: extractelement <4 x float>
1780
1781 /* vec_insert */
1782 res_vsc = vec_insert(param_sc, vsc, param_i); // CHECK: insertelement <16 x i8>
1783 res_vuc = vec_insert(param_uc, vuc, param_i); // CHECK: insertelement <16 x i8>
1784 res_vs = vec_insert(param_s, vs, param_i); // CHECK: insertelement <8 x i16>
1785 res_vus = vec_insert(param_us, vus, param_i); // CHECK: insertelement <8 x i16>
1786 res_vi = vec_insert(param_i, vi, param_i); // CHECK: insertelement <4 x i32>
1787 res_vui = vec_insert(param_ui, vui, param_i); // CHECK: insertelement <4 x i32>
1788 res_vf = vec_insert(param_f, vf, param_i); // CHECK: insertelement <4 x float>
1789
1790 /* vec_lvlx */
1791 res_vsc = vec_lvlx(0, &param_sc); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00001792 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00001793 // CHECK: store <16 x i8> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00001794 // CHECK: @llvm.ppc.altivec.vperm
1795
1796 res_vsc = vec_lvlx(0, &vsc); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00001797 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00001798 // CHECK: store <16 x i8> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00001799 // CHECK: @llvm.ppc.altivec.vperm
1800
1801 res_vuc = vec_lvlx(0, &param_uc); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00001802 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00001803 // CHECK: store <16 x i8> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00001804 // CHECK: @llvm.ppc.altivec.vperm
1805
1806 res_vuc = vec_lvlx(0, &vuc); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00001807 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00001808 // CHECK: store <16 x i8> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00001809 // CHECK: @llvm.ppc.altivec.vperm
1810
1811 res_vbc = vec_lvlx(0, &vbc); // CHECK: @llvm.ppc.altivec.lvx
1812 // CHECK: store <16 x i8> zeroinitializer
1813 // CHECK: @llvm.ppc.altivec.lvsl
1814 // CHECK: @llvm.ppc.altivec.vperm
1815
1816 res_vs = vec_lvlx(0, &param_s); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00001817 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00001818 // CHECK: store <8 x i16> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00001819 // CHECK: @llvm.ppc.altivec.vperm
1820
1821 res_vs = vec_lvlx(0, &vs); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00001822 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00001823 // CHECK: store <8 x i16> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00001824 // CHECK: @llvm.ppc.altivec.vperm
1825
1826 res_vus = vec_lvlx(0, &param_us); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00001827 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00001828 // CHECK: store <8 x i16> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00001829 // CHECK: @llvm.ppc.altivec.vperm
1830
1831 res_vus = vec_lvlx(0, &vus); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00001832 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00001833 // CHECK: store <8 x i16> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00001834 // CHECK: @llvm.ppc.altivec.vperm
1835
1836 res_vbs = vec_lvlx(0, &vbs); // CHECK: @llvm.ppc.altivec.lvx
1837 // CHECK: store <8 x i16> zeroinitializer
1838 // CHECK: @llvm.ppc.altivec.lvsl
1839 // CHECK: @llvm.ppc.altivec.vperm
1840
1841 res_vp = vec_lvlx(0, &vp); // CHECK: @llvm.ppc.altivec.lvx
1842 // CHECK: store <8 x i16> zeroinitializer
1843 // CHECK: @llvm.ppc.altivec.lvsl
1844 // CHECK: @llvm.ppc.altivec.vperm
1845
1846 res_vi = vec_lvlx(0, &param_i); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00001847 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00001848 // CHECK: store <4 x i32> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00001849 // CHECK: @llvm.ppc.altivec.vperm
1850
1851 res_vi = vec_lvlx(0, &vi); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00001852 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00001853 // CHECK: store <4 x i32> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00001854 // CHECK: @llvm.ppc.altivec.vperm
1855
1856 res_vui = vec_lvlx(0, &param_ui); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00001857 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00001858 // CHECK: store <4 x i32> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00001859 // CHECK: @llvm.ppc.altivec.vperm
1860
1861 res_vui = vec_lvlx(0, &vui); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00001862 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00001863 // CHECK: store <4 x i32> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00001864 // CHECK: @llvm.ppc.altivec.vperm
1865
1866 res_vbi = vec_lvlx(0, &vbi); // CHECK: @llvm.ppc.altivec.lvx
1867 // CHECK: store <4 x i32> zeroinitializer
1868 // CHECK: @llvm.ppc.altivec.lvsl
1869 // CHECK: @llvm.ppc.altivec.vperm
1870
1871 res_vf = vec_lvlx(0, &vf); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00001872 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00001873 // CHECK: store <4 x float> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00001874 // CHECK: @llvm.ppc.altivec.vperm
1875
1876 /* vec_lvlxl */
1877 res_vsc = vec_lvlxl(0, &param_sc); // CHECK: @llvm.ppc.altivec.lvxl
Anton Yartsev44270d62010-10-14 14:37:46 +00001878 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00001879 // CHECK: store <16 x i8> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00001880 // CHECK: @llvm.ppc.altivec.vperm
1881
1882 res_vsc = vec_lvlxl(0, &vsc); // CHECK: @llvm.ppc.altivec.lvxl
Anton Yartsev44270d62010-10-14 14:37:46 +00001883 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00001884 // CHECK: store <16 x i8> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00001885 // CHECK: @llvm.ppc.altivec.vperm
1886
1887 res_vuc = vec_lvlxl(0, &param_uc); // CHECK: @llvm.ppc.altivec.lvxl
Anton Yartsev44270d62010-10-14 14:37:46 +00001888 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00001889 // CHECK: store <16 x i8> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00001890 // CHECK: @llvm.ppc.altivec.vperm
1891
1892 res_vuc = vec_lvlxl(0, &vuc); // CHECK: @llvm.ppc.altivec.lvxl
Anton Yartsev44270d62010-10-14 14:37:46 +00001893 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00001894 // CHECK: store <16 x i8> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00001895 // CHECK: @llvm.ppc.altivec.vperm
1896
1897 res_vbc = vec_lvlxl(0, &vbc); // CHECK: @llvm.ppc.altivec.lvxl
1898 // CHECK: store <16 x i8> zeroinitializer
1899 // CHECK: @llvm.ppc.altivec.lvsl
1900 // CHECK: @llvm.ppc.altivec.vperm
1901
1902 res_vs = vec_lvlxl(0, &param_s); // CHECK: @llvm.ppc.altivec.lvxl
Anton Yartsev44270d62010-10-14 14:37:46 +00001903 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00001904 // CHECK: store <8 x i16> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00001905 // CHECK: @llvm.ppc.altivec.vperm
1906
1907 res_vs = vec_lvlxl(0, &vs); // CHECK: @llvm.ppc.altivec.lvxl
Anton Yartsev44270d62010-10-14 14:37:46 +00001908 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00001909 // CHECK: store <8 x i16> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00001910 // CHECK: @llvm.ppc.altivec.vperm
1911
1912 res_vus = vec_lvlxl(0, &param_us); // CHECK: @llvm.ppc.altivec.lvxl
Anton Yartsev44270d62010-10-14 14:37:46 +00001913 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00001914 // CHECK: store <8 x i16> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00001915 // CHECK: @llvm.ppc.altivec.vperm
1916
1917 res_vus = vec_lvlxl(0, &vus); // CHECK: @llvm.ppc.altivec.lvxl
Anton Yartsev44270d62010-10-14 14:37:46 +00001918 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00001919 // CHECK: store <8 x i16> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00001920 // CHECK: @llvm.ppc.altivec.vperm
1921
1922 res_vbs = vec_lvlxl(0, &vbs); // CHECK: @llvm.ppc.altivec.lvxl
1923 // CHECK: store <8 x i16> zeroinitializer
1924 // CHECK: @llvm.ppc.altivec.lvsl
1925 // CHECK: @llvm.ppc.altivec.vperm
1926
1927 res_vp = vec_lvlxl(0, &vp); // CHECK: @llvm.ppc.altivec.lvxl
1928 // CHECK: store <8 x i16> zeroinitializer
1929 // CHECK: @llvm.ppc.altivec.lvsl
1930 // CHECK: @llvm.ppc.altivec.vperm
1931
1932 res_vi = vec_lvlxl(0, &param_i); // CHECK: @llvm.ppc.altivec.lvxl
Anton Yartsev44270d62010-10-14 14:37:46 +00001933 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00001934 // CHECK: store <4 x i32> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00001935 // CHECK: @llvm.ppc.altivec.vperm
1936
1937 res_vi = vec_lvlxl(0, &vi); // CHECK: @llvm.ppc.altivec.lvxl
Anton Yartsev44270d62010-10-14 14:37:46 +00001938 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00001939 // CHECK: store <4 x i32> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00001940 // CHECK: @llvm.ppc.altivec.vperm
1941
1942 res_vui = vec_lvlxl(0, &param_ui); // CHECK: @llvm.ppc.altivec.lvxl
Anton Yartsev44270d62010-10-14 14:37:46 +00001943 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00001944 // CHECK: store <4 x i32> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00001945 // CHECK: @llvm.ppc.altivec.vperm
1946
1947 res_vui = vec_lvlxl(0, &vui); // CHECK: @llvm.ppc.altivec.lvxl
Anton Yartsev44270d62010-10-14 14:37:46 +00001948 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00001949 // CHECK: store <4 x i32> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00001950 // CHECK: @llvm.ppc.altivec.vperm
1951
1952 res_vbi = vec_lvlxl(0, &vbi); // CHECK: @llvm.ppc.altivec.lvxl
1953 // CHECK: store <4 x i32> zeroinitializer
1954 // CHECK: @llvm.ppc.altivec.lvsl
1955 // CHECK: @llvm.ppc.altivec.vperm
1956
1957 res_vf = vec_lvlxl(0, &vf); // CHECK: @llvm.ppc.altivec.lvxl
Anton Yartsev44270d62010-10-14 14:37:46 +00001958 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00001959 // CHECK: store <4 x float> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00001960 // CHECK: @llvm.ppc.altivec.vperm
1961
1962 /* vec_lvrx */
Anton Yartsevd06fea82011-03-27 09:32:40 +00001963 res_vsc = vec_lvrx(0, &param_sc); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00001964 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00001965 // CHECK: store <16 x i8> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00001966 // CHECK: @llvm.ppc.altivec.vperm
1967
Anton Yartsevd06fea82011-03-27 09:32:40 +00001968 res_vsc = vec_lvrx(0, &vsc); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00001969 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00001970 // CHECK: store <16 x i8> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00001971 // CHECK: @llvm.ppc.altivec.vperm
1972
Anton Yartsevd06fea82011-03-27 09:32:40 +00001973 res_vuc = vec_lvrx(0, &param_uc); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00001974 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00001975 // CHECK: store <16 x i8> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00001976 // CHECK: @llvm.ppc.altivec.vperm
1977
Anton Yartsevd06fea82011-03-27 09:32:40 +00001978 res_vuc = vec_lvrx(0, &vuc); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00001979 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00001980 // CHECK: store <16 x i8> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00001981 // CHECK: @llvm.ppc.altivec.vperm
1982
1983 res_vbc = vec_lvrx(0, &vbc); // CHECK: store <16 x i8> zeroinitializer
1984 // CHECK: @llvm.ppc.altivec.lvx
1985 // CHECK: @llvm.ppc.altivec.lvsl
1986 // CHECK: @llvm.ppc.altivec.vperm
1987
Anton Yartsevd06fea82011-03-27 09:32:40 +00001988 res_vs = vec_lvrx(0, &param_s); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00001989 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00001990 // CHECK: store <8 x i16> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00001991 // CHECK: @llvm.ppc.altivec.vperm
1992
Anton Yartsevd06fea82011-03-27 09:32:40 +00001993 res_vs = vec_lvrx(0, &vs); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00001994 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00001995 // CHECK: store <8 x i16> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00001996 // CHECK: @llvm.ppc.altivec.vperm
1997
Anton Yartsevd06fea82011-03-27 09:32:40 +00001998 res_vus = vec_lvrx(0, &param_us); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00001999 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002000 // CHECK: store <8 x i16> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002001 // CHECK: @llvm.ppc.altivec.vperm
2002
Anton Yartsevd06fea82011-03-27 09:32:40 +00002003 res_vus = vec_lvrx(0, &vus); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002004 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002005 // CHECK: store <8 x i16> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002006 // CHECK: @llvm.ppc.altivec.vperm
2007
2008 res_vbs = vec_lvrx(0, &vbs); // CHECK: store <8 x i16> zeroinitializer
2009 // CHECK: @llvm.ppc.altivec.lvx
2010 // CHECK: @llvm.ppc.altivec.lvsl
2011 // CHECK: @llvm.ppc.altivec.vperm
2012
2013 res_vp = vec_lvrx(0, &vp); // CHECK: store <8 x i16> zeroinitializer
2014 // CHECK: @llvm.ppc.altivec.lvx
2015 // CHECK: @llvm.ppc.altivec.lvsl
2016 // CHECK: @llvm.ppc.altivec.vperm
2017
Anton Yartsevd06fea82011-03-27 09:32:40 +00002018 res_vi = vec_lvrx(0, &param_i); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002019 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002020 // CHECK: store <4 x i32> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002021 // CHECK: @llvm.ppc.altivec.vperm
2022
Anton Yartsevd06fea82011-03-27 09:32:40 +00002023 res_vi = vec_lvrx(0, &vi); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002024 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002025 // CHECK: store <4 x i32> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002026 // CHECK: @llvm.ppc.altivec.vperm
2027
Anton Yartsevd06fea82011-03-27 09:32:40 +00002028 res_vui = vec_lvrx(0, &param_ui); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002029 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002030 // CHECK: store <4 x i32> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002031 // CHECK: @llvm.ppc.altivec.vperm
2032
Anton Yartsevd06fea82011-03-27 09:32:40 +00002033 res_vui = vec_lvrx(0, &vui); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002034 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002035 // CHECK: store <4 x i32> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002036 // CHECK: @llvm.ppc.altivec.vperm
2037
2038 res_vbi = vec_lvrx(0, &vbi); // CHECK: store <4 x i32> zeroinitializer
2039 // CHECK: @llvm.ppc.altivec.lvx
2040 // CHECK: @llvm.ppc.altivec.lvsl
2041 // CHECK: @llvm.ppc.altivec.vperm
2042
Anton Yartsevd06fea82011-03-27 09:32:40 +00002043 res_vf = vec_lvrx(0, &vf); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002044 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002045 // CHECK: store <4 x float> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002046 // CHECK: @llvm.ppc.altivec.vperm
2047
2048 /* vec_lvrxl */
Anton Yartsevd06fea82011-03-27 09:32:40 +00002049 res_vsc = vec_lvrxl(0, &param_sc); // CHECK: @llvm.ppc.altivec.lvxl
Anton Yartsev44270d62010-10-14 14:37:46 +00002050 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002051 // CHECK: store <16 x i8> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002052 // CHECK: @llvm.ppc.altivec.vperm
2053
Anton Yartsevd06fea82011-03-27 09:32:40 +00002054 res_vsc = vec_lvrxl(0, &vsc); // CHECK: @llvm.ppc.altivec.lvxl
Anton Yartsev44270d62010-10-14 14:37:46 +00002055 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002056 // CHECK: store <16 x i8> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002057 // CHECK: @llvm.ppc.altivec.vperm
2058
Anton Yartsevd06fea82011-03-27 09:32:40 +00002059 res_vuc = vec_lvrxl(0, &param_uc); // CHECK: @llvm.ppc.altivec.lvxl
Anton Yartsev44270d62010-10-14 14:37:46 +00002060 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002061 // CHECK: store <16 x i8> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002062 // CHECK: @llvm.ppc.altivec.vperm
2063
Anton Yartsevd06fea82011-03-27 09:32:40 +00002064 res_vuc = vec_lvrxl(0, &vuc); // CHECK: @llvm.ppc.altivec.lvxl
Anton Yartsev44270d62010-10-14 14:37:46 +00002065 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002066 // CHECK: store <16 x i8> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002067 // CHECK: @llvm.ppc.altivec.vperm
2068
2069 res_vbc = vec_lvrxl(0, &vbc); // CHECK: store <16 x i8> zeroinitializer
2070 // CHECK: @llvm.ppc.altivec.lvxl
2071 // CHECK: @llvm.ppc.altivec.lvsl
2072 // CHECK: @llvm.ppc.altivec.vperm
2073
Anton Yartsevd06fea82011-03-27 09:32:40 +00002074 res_vs = vec_lvrxl(0, &param_s); // CHECK: @llvm.ppc.altivec.lvxl
Anton Yartsev44270d62010-10-14 14:37:46 +00002075 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002076 // CHECK: store <8 x i16> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002077 // CHECK: @llvm.ppc.altivec.vperm
2078
Anton Yartsevd06fea82011-03-27 09:32:40 +00002079 res_vs = vec_lvrxl(0, &vs); // CHECK: @llvm.ppc.altivec.lvxl
Anton Yartsev44270d62010-10-14 14:37:46 +00002080 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002081 // CHECK: store <8 x i16> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002082 // CHECK: @llvm.ppc.altivec.vperm
2083
Anton Yartsevd06fea82011-03-27 09:32:40 +00002084 res_vus = vec_lvrxl(0, &param_us); // CHECK: @llvm.ppc.altivec.lvxl
Anton Yartsev44270d62010-10-14 14:37:46 +00002085 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002086 // CHECK: store <8 x i16> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002087 // CHECK: @llvm.ppc.altivec.vperm
2088
Anton Yartsevd06fea82011-03-27 09:32:40 +00002089 res_vus = vec_lvrxl(0, &vus); // CHECK: @llvm.ppc.altivec.lvxl
Anton Yartsev44270d62010-10-14 14:37:46 +00002090 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002091 // CHECK: store <8 x i16> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002092 // CHECK: @llvm.ppc.altivec.vperm
2093
2094 res_vbs = vec_lvrxl(0, &vbs); // CHECK: store <8 x i16> zeroinitializer
2095 // CHECK: @llvm.ppc.altivec.lvxl
2096 // CHECK: @llvm.ppc.altivec.lvsl
2097 // CHECK: @llvm.ppc.altivec.vperm
2098
2099 res_vp = vec_lvrxl(0, &vp); // CHECK: store <8 x i16> zeroinitializer
2100 // CHECK: @llvm.ppc.altivec.lvxl
2101 // CHECK: @llvm.ppc.altivec.lvsl
2102 // CHECK: @llvm.ppc.altivec.vperm
2103
Anton Yartsevd06fea82011-03-27 09:32:40 +00002104 res_vi = vec_lvrxl(0, &param_i); // CHECK: @llvm.ppc.altivec.lvxl
Anton Yartsev44270d62010-10-14 14:37:46 +00002105 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002106 // CHECK: store <4 x i32> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002107 // CHECK: @llvm.ppc.altivec.vperm
2108
Anton Yartsevd06fea82011-03-27 09:32:40 +00002109 res_vi = vec_lvrxl(0, &vi); // CHECK: @llvm.ppc.altivec.lvxl
Anton Yartsev44270d62010-10-14 14:37:46 +00002110 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002111 // CHECK: store <4 x i32> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002112 // CHECK: @llvm.ppc.altivec.vperm
2113
Anton Yartsevd06fea82011-03-27 09:32:40 +00002114 res_vui = vec_lvrxl(0, &param_ui); // CHECK: @llvm.ppc.altivec.lvxl
Anton Yartsev44270d62010-10-14 14:37:46 +00002115 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002116 // CHECK: store <4 x i32> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002117 // CHECK: @llvm.ppc.altivec.vperm
2118
Anton Yartsevd06fea82011-03-27 09:32:40 +00002119 res_vui = vec_lvrxl(0, &vui); // CHECK: @llvm.ppc.altivec.lvxl
Anton Yartsev44270d62010-10-14 14:37:46 +00002120 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002121 // CHECK: store <4 x i32> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002122 // CHECK: @llvm.ppc.altivec.vperm
2123
2124 res_vbi = vec_lvrxl(0, &vbi); // CHECK: store <4 x i32> zeroinitializer
2125 // CHECK: @llvm.ppc.altivec.lvxl
2126 // CHECK: @llvm.ppc.altivec.lvsl
2127 // CHECK: @llvm.ppc.altivec.vperm
2128
Anton Yartsevd06fea82011-03-27 09:32:40 +00002129 res_vf = vec_lvrxl(0, &vf); // CHECK: @llvm.ppc.altivec.lvxl
Anton Yartsev44270d62010-10-14 14:37:46 +00002130 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002131 // CHECK: store <4 x float> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002132 // CHECK: @llvm.ppc.altivec.vperm
2133
2134 /* vec_stvlx */
Anton Yartsevd06fea82011-03-27 09:32:40 +00002135 vec_stvlx(vsc, 0, &param_sc); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002136 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002137 // CHECK: store <16 x i8> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002138 // CHECK: @llvm.ppc.altivec.vperm
2139 // CHECK: @llvm.ppc.altivec.lvsr
2140 // CHECK: @llvm.ppc.altivec.vperm
2141 // CHECK: @llvm.ppc.altivec.stvx
2142
Anton Yartsevd06fea82011-03-27 09:32:40 +00002143 vec_stvlx(vsc, 0, &vsc); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002144 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002145 // CHECK: store <16 x i8> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002146 // CHECK: @llvm.ppc.altivec.vperm
2147 // CHECK: @llvm.ppc.altivec.lvsr
2148 // CHECK: @llvm.ppc.altivec.vperm
2149 // CHECK: @llvm.ppc.altivec.stvx
2150
Anton Yartsevd06fea82011-03-27 09:32:40 +00002151 vec_stvlx(vuc, 0, &param_uc); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002152 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002153 // CHECK: store <16 x i8> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002154 // CHECK: @llvm.ppc.altivec.vperm
2155 // CHECK: @llvm.ppc.altivec.lvsr
2156 // CHECK: @llvm.ppc.altivec.vperm
2157 // CHECK: @llvm.ppc.altivec.stvx
2158
Anton Yartsevd06fea82011-03-27 09:32:40 +00002159 vec_stvlx(vuc, 0, &vuc); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002160 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002161 // CHECK: store <16 x i8> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002162 // CHECK: @llvm.ppc.altivec.vperm
2163 // CHECK: @llvm.ppc.altivec.lvsr
2164 // CHECK: @llvm.ppc.altivec.vperm
2165 // CHECK: @llvm.ppc.altivec.stvx
2166
2167 vec_stvlx(vbc, 0, &vbc); // CHECK: store <16 x i8> zeroinitializer
2168 // CHECK: @llvm.ppc.altivec.lvx
2169 // CHECK: @llvm.ppc.altivec.lvsl
2170 // CHECK: @llvm.ppc.altivec.vperm
2171 // CHECK: @llvm.ppc.altivec.lvsr
2172 // CHECK: @llvm.ppc.altivec.vperm
2173 // CHECK: @llvm.ppc.altivec.stvx
2174
Anton Yartsevd06fea82011-03-27 09:32:40 +00002175 vec_stvlx(vs, 0, &param_s); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002176 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002177 // CHECK: store <8 x i16> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002178 // CHECK: @llvm.ppc.altivec.vperm
2179 // CHECK: @llvm.ppc.altivec.lvsr
2180 // CHECK: @llvm.ppc.altivec.vperm
2181 // CHECK: @llvm.ppc.altivec.stvx
2182
Anton Yartsevd06fea82011-03-27 09:32:40 +00002183 vec_stvlx(vs, 0, &vs); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002184 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002185 // CHECK: store <8 x i16> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002186 // CHECK: @llvm.ppc.altivec.vperm
2187 // CHECK: @llvm.ppc.altivec.lvsr
2188 // CHECK: @llvm.ppc.altivec.vperm
2189 // CHECK: @llvm.ppc.altivec.stvx
2190
Anton Yartsevd06fea82011-03-27 09:32:40 +00002191 vec_stvlx(vus, 0, &param_us); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002192 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002193 // CHECK: store <8 x i16> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002194 // CHECK: @llvm.ppc.altivec.vperm
2195 // CHECK: @llvm.ppc.altivec.lvsr
2196 // CHECK: @llvm.ppc.altivec.vperm
2197 // CHECK: @llvm.ppc.altivec.stvx
2198
Anton Yartsevd06fea82011-03-27 09:32:40 +00002199 vec_stvlx(vus, 0, &vus); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002200 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002201 // CHECK: store <8 x i16> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002202 // CHECK: @llvm.ppc.altivec.vperm
2203 // CHECK: @llvm.ppc.altivec.lvsr
2204 // CHECK: @llvm.ppc.altivec.vperm
2205 // CHECK: @llvm.ppc.altivec.stvx
2206
2207 vec_stvlx(vbs, 0, &vbs); // CHECK: store <8 x i16> zeroinitializer
2208 // CHECK: @llvm.ppc.altivec.lvx
2209 // CHECK: @llvm.ppc.altivec.lvsl
2210 // CHECK: @llvm.ppc.altivec.vperm
2211 // CHECK: @llvm.ppc.altivec.lvsr
2212 // CHECK: @llvm.ppc.altivec.vperm
2213 // CHECK: @llvm.ppc.altivec.stvx
2214
2215 vec_stvlx(vp, 0, &vp); // CHECK: store <8 x i16> zeroinitializer
2216 // CHECK: @llvm.ppc.altivec.lvx
2217 // CHECK: @llvm.ppc.altivec.lvsl
2218 // CHECK: @llvm.ppc.altivec.vperm
2219 // CHECK: @llvm.ppc.altivec.lvsr
2220 // CHECK: @llvm.ppc.altivec.vperm
2221 // CHECK: @llvm.ppc.altivec.stvx
2222
Anton Yartsevd06fea82011-03-27 09:32:40 +00002223 vec_stvlx(vi, 0, &param_i); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002224 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002225 // CHECK: store <4 x i32> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002226 // CHECK: @llvm.ppc.altivec.vperm
2227 // CHECK: @llvm.ppc.altivec.lvsr
2228 // CHECK: @llvm.ppc.altivec.vperm
2229 // CHECK: @llvm.ppc.altivec.stvx
2230
Anton Yartsevd06fea82011-03-27 09:32:40 +00002231 vec_stvlx(vi, 0, &vi); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002232 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002233 // CHECK: store <4 x i32> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002234 // CHECK: @llvm.ppc.altivec.vperm
2235 // CHECK: @llvm.ppc.altivec.lvsr
2236 // CHECK: @llvm.ppc.altivec.vperm
2237 // CHECK: @llvm.ppc.altivec.stvx
2238
Anton Yartsevd06fea82011-03-27 09:32:40 +00002239 vec_stvlx(vui, 0, &param_ui); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002240 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002241 // CHECK: store <4 x i32> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002242 // CHECK: @llvm.ppc.altivec.vperm
2243 // CHECK: @llvm.ppc.altivec.lvsr
2244 // CHECK: @llvm.ppc.altivec.vperm
2245 // CHECK: @llvm.ppc.altivec.stvx
2246
Anton Yartsevd06fea82011-03-27 09:32:40 +00002247 vec_stvlx(vui, 0, &vui); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002248 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002249 // CHECK: store <4 x i32> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002250 // CHECK: @llvm.ppc.altivec.vperm
2251 // CHECK: @llvm.ppc.altivec.lvsr
2252 // CHECK: @llvm.ppc.altivec.vperm
2253 // CHECK: @llvm.ppc.altivec.stvx
2254
2255 vec_stvlx(vbi, 0, &vbi); // CHECK: store <4 x i32> zeroinitializer
2256 // CHECK: @llvm.ppc.altivec.lvx
2257 // CHECK: @llvm.ppc.altivec.lvsl
2258 // CHECK: @llvm.ppc.altivec.vperm
2259 // CHECK: @llvm.ppc.altivec.lvsr
2260 // CHECK: @llvm.ppc.altivec.vperm
2261 // CHECK: @llvm.ppc.altivec.stvx
2262
Anton Yartsevd06fea82011-03-27 09:32:40 +00002263 vec_stvlx(vf, 0, &vf); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002264 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002265 // CHECK: store <4 x float> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002266 // CHECK: @llvm.ppc.altivec.vperm
2267 // CHECK: @llvm.ppc.altivec.lvsr
2268 // CHECK: @llvm.ppc.altivec.vperm
2269 // CHECK: @llvm.ppc.altivec.stvx
2270
2271 /* vec_stvlxl */
Anton Yartsevd06fea82011-03-27 09:32:40 +00002272 vec_stvlxl(vsc, 0, &param_sc); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002273 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002274 // CHECK: store <16 x i8> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002275 // CHECK: @llvm.ppc.altivec.vperm
2276 // CHECK: @llvm.ppc.altivec.lvsr
2277 // CHECK: @llvm.ppc.altivec.vperm
2278 // CHECK: @llvm.ppc.altivec.stvxl
2279
Anton Yartsevd06fea82011-03-27 09:32:40 +00002280 vec_stvlxl(vsc, 0, &vsc); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002281 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002282 // CHECK: store <16 x i8> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002283 // CHECK: @llvm.ppc.altivec.vperm
2284 // CHECK: @llvm.ppc.altivec.lvsr
2285 // CHECK: @llvm.ppc.altivec.vperm
2286 // CHECK: @llvm.ppc.altivec.stvxl
2287
Anton Yartsevd06fea82011-03-27 09:32:40 +00002288 vec_stvlxl(vuc, 0, &param_uc); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002289 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002290 // CHECK: store <16 x i8> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002291 // CHECK: @llvm.ppc.altivec.vperm
2292 // CHECK: @llvm.ppc.altivec.lvsr
2293 // CHECK: @llvm.ppc.altivec.vperm
2294 // CHECK: @llvm.ppc.altivec.stvxl
2295
Anton Yartsevd06fea82011-03-27 09:32:40 +00002296 vec_stvlxl(vuc, 0, &vuc); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002297 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002298 // CHECK: store <16 x i8> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002299 // CHECK: @llvm.ppc.altivec.vperm
2300 // CHECK: @llvm.ppc.altivec.lvsr
2301 // CHECK: @llvm.ppc.altivec.vperm
2302 // CHECK: @llvm.ppc.altivec.stvxl
2303
2304 vec_stvlxl(vbc, 0, &vbc); // CHECK: store <16 x i8> zeroinitializer
2305 // CHECK: @llvm.ppc.altivec.lvx
2306 // CHECK: @llvm.ppc.altivec.lvsl
2307 // CHECK: @llvm.ppc.altivec.vperm
2308 // CHECK: @llvm.ppc.altivec.lvsr
2309 // CHECK: @llvm.ppc.altivec.vperm
2310 // CHECK: @llvm.ppc.altivec.stvxl
2311
Anton Yartsevd06fea82011-03-27 09:32:40 +00002312 vec_stvlxl(vs, 0, &param_s); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002313 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002314 // CHECK: store <8 x i16> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002315 // CHECK: @llvm.ppc.altivec.vperm
2316 // CHECK: @llvm.ppc.altivec.lvsr
2317 // CHECK: @llvm.ppc.altivec.vperm
2318 // CHECK: @llvm.ppc.altivec.stvxl
2319
Anton Yartsevd06fea82011-03-27 09:32:40 +00002320 vec_stvlxl(vs, 0, &vs); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002321 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002322 // CHECK: store <8 x i16> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002323 // CHECK: @llvm.ppc.altivec.vperm
2324 // CHECK: @llvm.ppc.altivec.lvsr
2325 // CHECK: @llvm.ppc.altivec.vperm
2326 // CHECK: @llvm.ppc.altivec.stvxl
2327
Anton Yartsevd06fea82011-03-27 09:32:40 +00002328 vec_stvlxl(vus, 0, &param_us); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002329 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002330 // CHECK: store <8 x i16> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002331 // CHECK: @llvm.ppc.altivec.vperm
2332 // CHECK: @llvm.ppc.altivec.lvsr
2333 // CHECK: @llvm.ppc.altivec.vperm
2334 // CHECK: @llvm.ppc.altivec.stvxl
2335
Anton Yartsevd06fea82011-03-27 09:32:40 +00002336 vec_stvlxl(vus, 0, &vus); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002337 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002338 // CHECK: store <8 x i16> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002339 // CHECK: @llvm.ppc.altivec.vperm
2340 // CHECK: @llvm.ppc.altivec.lvsr
2341 // CHECK: @llvm.ppc.altivec.vperm
2342 // CHECK: @llvm.ppc.altivec.stvxl
2343
2344 vec_stvlxl(vbs, 0, &vbs); // CHECK: store <8 x i16> zeroinitializer
2345 // CHECK: @llvm.ppc.altivec.lvx
2346 // CHECK: @llvm.ppc.altivec.lvsl
2347 // CHECK: @llvm.ppc.altivec.vperm
2348 // CHECK: @llvm.ppc.altivec.lvsr
2349 // CHECK: @llvm.ppc.altivec.vperm
2350 // CHECK: @llvm.ppc.altivec.stvxl
2351
2352 vec_stvlxl(vp, 0, &vp); // CHECK: store <8 x i16> zeroinitializer
2353 // CHECK: @llvm.ppc.altivec.lvx
2354 // CHECK: @llvm.ppc.altivec.lvsl
2355 // CHECK: @llvm.ppc.altivec.vperm
2356 // CHECK: @llvm.ppc.altivec.lvsr
2357 // CHECK: @llvm.ppc.altivec.vperm
2358 // CHECK: @llvm.ppc.altivec.stvxl
2359
Anton Yartsevd06fea82011-03-27 09:32:40 +00002360 vec_stvlxl(vi, 0, &param_i); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002361 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002362 // CHECK: store <4 x i32> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002363 // CHECK: @llvm.ppc.altivec.vperm
2364 // CHECK: @llvm.ppc.altivec.lvsr
2365 // CHECK: @llvm.ppc.altivec.vperm
2366 // CHECK: @llvm.ppc.altivec.stvxl
2367
Anton Yartsevd06fea82011-03-27 09:32:40 +00002368 vec_stvlxl(vi, 0, &vi); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002369 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002370 // CHECK: store <4 x i32> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002371 // CHECK: @llvm.ppc.altivec.vperm
2372 // CHECK: @llvm.ppc.altivec.lvsr
2373 // CHECK: @llvm.ppc.altivec.vperm
2374 // CHECK: @llvm.ppc.altivec.stvxl
2375
Anton Yartsevd06fea82011-03-27 09:32:40 +00002376 vec_stvlxl(vui, 0, &param_ui); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002377 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002378 // CHECK: store <4 x i32> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002379 // CHECK: @llvm.ppc.altivec.vperm
2380 // CHECK: @llvm.ppc.altivec.lvsr
2381 // CHECK: @llvm.ppc.altivec.vperm
2382 // CHECK: @llvm.ppc.altivec.stvxl
2383
Anton Yartsevd06fea82011-03-27 09:32:40 +00002384 vec_stvlxl(vui, 0, &vui); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002385 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002386 // CHECK: store <4 x i32> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002387 // CHECK: @llvm.ppc.altivec.vperm
2388 // CHECK: @llvm.ppc.altivec.lvsr
2389 // CHECK: @llvm.ppc.altivec.vperm
2390 // CHECK: @llvm.ppc.altivec.stvxl
2391
2392 vec_stvlxl(vbi, 0, &vbi); // CHECK: store <4 x i32> zeroinitializer
2393 // CHECK: @llvm.ppc.altivec.lvx
2394 // CHECK: @llvm.ppc.altivec.lvsl
2395 // CHECK: @llvm.ppc.altivec.vperm
2396 // CHECK: @llvm.ppc.altivec.lvsr
2397 // CHECK: @llvm.ppc.altivec.vperm
2398 // CHECK: @llvm.ppc.altivec.stvxl
2399
Anton Yartsevd06fea82011-03-27 09:32:40 +00002400 vec_stvlxl(vf, 0, &vf); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002401 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002402 // CHECK: store <4 x float> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002403 // CHECK: @llvm.ppc.altivec.vperm
2404 // CHECK: @llvm.ppc.altivec.lvsr
2405 // CHECK: @llvm.ppc.altivec.vperm
2406 // CHECK: @llvm.ppc.altivec.stvxl
2407
2408 /* vec_stvrx */
2409 vec_stvrx(vsc, 0, &param_sc); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002410 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002411 // CHECK: store <16 x i8> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002412 // CHECK: @llvm.ppc.altivec.vperm
2413 // CHECK: @llvm.ppc.altivec.lvsr
2414 // CHECK: @llvm.ppc.altivec.vperm
2415 // CHECK: @llvm.ppc.altivec.stvx
2416
2417 vec_stvrx(vsc, 0, &vsc); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002418 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002419 // CHECK: store <16 x i8> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002420 // CHECK: @llvm.ppc.altivec.vperm
2421 // CHECK: @llvm.ppc.altivec.lvsr
2422 // CHECK: @llvm.ppc.altivec.vperm
2423 // CHECK: @llvm.ppc.altivec.stvx
2424
2425 vec_stvrx(vuc, 0, &param_uc); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002426 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002427 // CHECK: store <16 x i8> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002428 // CHECK: @llvm.ppc.altivec.vperm
2429 // CHECK: @llvm.ppc.altivec.lvsr
2430 // CHECK: @llvm.ppc.altivec.vperm
2431 // CHECK: @llvm.ppc.altivec.stvx
2432
2433 vec_stvrx(vuc, 0, &vuc); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002434 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002435 // CHECK: store <16 x i8> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002436 // CHECK: @llvm.ppc.altivec.vperm
2437 // CHECK: @llvm.ppc.altivec.lvsr
2438 // CHECK: @llvm.ppc.altivec.vperm
2439 // CHECK: @llvm.ppc.altivec.stvx
2440
2441 vec_stvrx(vbc, 0, &vbc); // CHECK: @llvm.ppc.altivec.lvx
2442 // CHECK: store <16 x i8> zeroinitializer
2443 // CHECK: @llvm.ppc.altivec.lvsl
2444 // CHECK: @llvm.ppc.altivec.vperm
2445 // CHECK: @llvm.ppc.altivec.lvsr
2446 // CHECK: @llvm.ppc.altivec.vperm
2447 // CHECK: @llvm.ppc.altivec.stvx
2448
2449 vec_stvrx(vs, 0, &param_s); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002450 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002451 // CHECK: store <8 x i16> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002452 // CHECK: @llvm.ppc.altivec.vperm
2453 // CHECK: @llvm.ppc.altivec.lvsr
2454 // CHECK: @llvm.ppc.altivec.vperm
2455 // CHECK: @llvm.ppc.altivec.stvx
2456
2457 vec_stvrx(vs, 0, &vs); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002458 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002459 // CHECK: store <8 x i16> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002460 // CHECK: @llvm.ppc.altivec.vperm
2461 // CHECK: @llvm.ppc.altivec.lvsr
2462 // CHECK: @llvm.ppc.altivec.vperm
2463 // CHECK: @llvm.ppc.altivec.stvx
2464
2465 vec_stvrx(vus, 0, &param_us); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002466 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002467 // CHECK: store <8 x i16> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002468 // CHECK: @llvm.ppc.altivec.vperm
2469 // CHECK: @llvm.ppc.altivec.lvsr
2470 // CHECK: @llvm.ppc.altivec.vperm
2471 // CHECK: @llvm.ppc.altivec.stvx
2472
2473 vec_stvrx(vus, 0, &vus); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002474 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002475 // CHECK: store <8 x i16> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002476 // CHECK: @llvm.ppc.altivec.vperm
2477 // CHECK: @llvm.ppc.altivec.lvsr
2478 // CHECK: @llvm.ppc.altivec.vperm
2479 // CHECK: @llvm.ppc.altivec.stvx
2480
2481 vec_stvrx(vbs, 0, &vbs); // CHECK: @llvm.ppc.altivec.lvx
2482 // CHECK: store <8 x i16> zeroinitializer
2483 // CHECK: @llvm.ppc.altivec.lvsl
2484 // CHECK: @llvm.ppc.altivec.vperm
2485 // CHECK: @llvm.ppc.altivec.lvsr
2486 // CHECK: @llvm.ppc.altivec.vperm
2487 // CHECK: @llvm.ppc.altivec.stvx
2488
2489 vec_stvrx(vp, 0, &vp); // CHECK: @llvm.ppc.altivec.lvx
2490 // CHECK: store <8 x i16> zeroinitializer
2491 // CHECK: @llvm.ppc.altivec.lvsl
2492 // CHECK: @llvm.ppc.altivec.vperm
2493 // CHECK: @llvm.ppc.altivec.lvsr
2494 // CHECK: @llvm.ppc.altivec.vperm
2495 // CHECK: @llvm.ppc.altivec.stvx
2496
2497 vec_stvrx(vi, 0, &param_i); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002498 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002499 // CHECK: store <4 x i32> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002500 // CHECK: @llvm.ppc.altivec.vperm
2501 // CHECK: @llvm.ppc.altivec.lvsr
2502 // CHECK: @llvm.ppc.altivec.vperm
2503 // CHECK: @llvm.ppc.altivec.stvx
2504
2505 vec_stvrx(vi, 0, &vi); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002506 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002507 // CHECK: store <4 x i32> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002508 // CHECK: @llvm.ppc.altivec.vperm
2509 // CHECK: @llvm.ppc.altivec.lvsr
2510 // CHECK: @llvm.ppc.altivec.vperm
2511 // CHECK: @llvm.ppc.altivec.stvx
2512
2513 vec_stvrx(vui, 0, &param_ui); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002514 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002515 // CHECK: store <4 x i32> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002516 // CHECK: @llvm.ppc.altivec.vperm
2517 // CHECK: @llvm.ppc.altivec.lvsr
2518 // CHECK: @llvm.ppc.altivec.vperm
2519 // CHECK: @llvm.ppc.altivec.stvx
2520
2521 vec_stvrx(vui, 0, &vui); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002522 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002523 // CHECK: store <4 x i32> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002524 // CHECK: @llvm.ppc.altivec.vperm
2525 // CHECK: @llvm.ppc.altivec.lvsr
2526 // CHECK: @llvm.ppc.altivec.vperm
2527 // CHECK: @llvm.ppc.altivec.stvx
2528
2529 vec_stvrx(vbi, 0, &vbi); // CHECK: @llvm.ppc.altivec.lvx
2530 // CHECK: store <4 x i32> zeroinitializer
2531 // CHECK: @llvm.ppc.altivec.lvsl
2532 // CHECK: @llvm.ppc.altivec.vperm
2533 // CHECK: @llvm.ppc.altivec.lvsr
2534 // CHECK: @llvm.ppc.altivec.vperm
2535 // CHECK: @llvm.ppc.altivec.stvx
2536
2537 vec_stvrx(vf, 0, &vf); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002538 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002539 // CHECK: store <4 x float> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002540 // CHECK: @llvm.ppc.altivec.vperm
2541 // CHECK: @llvm.ppc.altivec.lvsr
2542 // CHECK: @llvm.ppc.altivec.vperm
2543 // CHECK: @llvm.ppc.altivec.stvx
2544
2545 /* vec_stvrxl */
2546 vec_stvrxl(vsc, 0, &param_sc); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002547 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002548 // CHECK: store <16 x i8> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002549 // CHECK: @llvm.ppc.altivec.vperm
2550 // CHECK: @llvm.ppc.altivec.lvsr
2551 // CHECK: @llvm.ppc.altivec.vperm
2552 // CHECK: @llvm.ppc.altivec.stvxl
2553
2554 vec_stvrxl(vsc, 0, &vsc); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002555 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002556 // CHECK: store <16 x i8> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002557 // CHECK: @llvm.ppc.altivec.vperm
2558 // CHECK: @llvm.ppc.altivec.lvsr
2559 // CHECK: @llvm.ppc.altivec.vperm
2560 // CHECK: @llvm.ppc.altivec.stvxl
2561
2562 vec_stvrxl(vuc, 0, &param_uc); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002563 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002564 // CHECK: store <16 x i8> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002565 // CHECK: @llvm.ppc.altivec.vperm
2566 // CHECK: @llvm.ppc.altivec.lvsr
2567 // CHECK: @llvm.ppc.altivec.vperm
2568 // CHECK: @llvm.ppc.altivec.stvxl
2569
2570 vec_stvrxl(vuc, 0, &vuc); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002571 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002572 // CHECK: store <16 x i8> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002573 // CHECK: @llvm.ppc.altivec.vperm
2574 // CHECK: @llvm.ppc.altivec.lvsr
2575 // CHECK: @llvm.ppc.altivec.vperm
2576 // CHECK: @llvm.ppc.altivec.stvxl
2577
2578 vec_stvrxl(vbc, 0, &vbc); // CHECK: @llvm.ppc.altivec.lvx
2579 // CHECK: store <16 x i8> zeroinitializer
2580 // CHECK: @llvm.ppc.altivec.lvsl
2581 // CHECK: @llvm.ppc.altivec.vperm
2582 // CHECK: @llvm.ppc.altivec.lvsr
2583 // CHECK: @llvm.ppc.altivec.vperm
2584 // CHECK: @llvm.ppc.altivec.stvxl
2585
2586 vec_stvrxl(vs, 0, &param_s); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002587 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002588 // CHECK: store <8 x i16> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002589 // CHECK: @llvm.ppc.altivec.vperm
2590 // CHECK: @llvm.ppc.altivec.lvsr
2591 // CHECK: @llvm.ppc.altivec.vperm
2592 // CHECK: @llvm.ppc.altivec.stvxl
2593
2594 vec_stvrxl(vs, 0, &vs); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002595 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002596 // CHECK: store <8 x i16> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002597 // CHECK: @llvm.ppc.altivec.vperm
2598 // CHECK: @llvm.ppc.altivec.lvsr
2599 // CHECK: @llvm.ppc.altivec.vperm
2600 // CHECK: @llvm.ppc.altivec.stvxl
2601
2602 vec_stvrxl(vus, 0, &param_us); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002603 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002604 // CHECK: store <8 x i16> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002605 // CHECK: @llvm.ppc.altivec.vperm
2606 // CHECK: @llvm.ppc.altivec.lvsr
2607 // CHECK: @llvm.ppc.altivec.vperm
2608 // CHECK: @llvm.ppc.altivec.stvxl
2609
2610 vec_stvrxl(vus, 0, &vus); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002611 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002612 // CHECK: store <8 x i16> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002613 // CHECK: @llvm.ppc.altivec.vperm
2614 // CHECK: @llvm.ppc.altivec.lvsr
2615 // CHECK: @llvm.ppc.altivec.vperm
2616 // CHECK: @llvm.ppc.altivec.stvxl
2617
2618 vec_stvrxl(vbs, 0, &vbs); // CHECK: @llvm.ppc.altivec.lvx
2619 // CHECK: store <8 x i16> zeroinitializer
2620 // CHECK: @llvm.ppc.altivec.lvsl
2621 // CHECK: @llvm.ppc.altivec.vperm
2622 // CHECK: @llvm.ppc.altivec.lvsr
2623 // CHECK: @llvm.ppc.altivec.vperm
2624 // CHECK: @llvm.ppc.altivec.stvxl
2625
2626 vec_stvrxl(vp, 0, &vp); // CHECK: @llvm.ppc.altivec.lvx
2627 // CHECK: store <8 x i16> zeroinitializer
2628 // CHECK: @llvm.ppc.altivec.lvsl
2629 // CHECK: @llvm.ppc.altivec.vperm
2630 // CHECK: @llvm.ppc.altivec.lvsr
2631 // CHECK: @llvm.ppc.altivec.vperm
2632 // CHECK: @llvm.ppc.altivec.stvxl
2633
2634 vec_stvrxl(vi, 0, &param_i); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002635 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002636 // CHECK: store <4 x i32> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002637 // CHECK: @llvm.ppc.altivec.vperm
2638 // CHECK: @llvm.ppc.altivec.lvsr
2639 // CHECK: @llvm.ppc.altivec.vperm
2640 // CHECK: @llvm.ppc.altivec.stvxl
2641
2642 vec_stvrxl(vi, 0, &vi); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002643 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002644 // CHECK: store <4 x i32> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002645 // CHECK: @llvm.ppc.altivec.vperm
2646 // CHECK: @llvm.ppc.altivec.lvsr
2647 // CHECK: @llvm.ppc.altivec.vperm
2648 // CHECK: @llvm.ppc.altivec.stvxl
2649
2650 vec_stvrxl(vui, 0, &param_ui); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002651 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002652 // CHECK: store <4 x i32> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002653 // CHECK: @llvm.ppc.altivec.vperm
2654 // CHECK: @llvm.ppc.altivec.lvsr
2655 // CHECK: @llvm.ppc.altivec.vperm
2656 // CHECK: @llvm.ppc.altivec.stvxl
2657
2658 vec_stvrxl(vui, 0, &vui); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002659 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002660 // CHECK: store <4 x i32> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002661 // CHECK: @llvm.ppc.altivec.vperm
2662 // CHECK: @llvm.ppc.altivec.lvsr
2663 // CHECK: @llvm.ppc.altivec.vperm
2664 // CHECK: @llvm.ppc.altivec.stvxl
2665
2666 vec_stvrxl(vbi, 0, &vbi); // CHECK: @llvm.ppc.altivec.lvx
2667 // CHECK: store <4 x i32> zeroinitializer
2668 // CHECK: @llvm.ppc.altivec.lvsl
2669 // CHECK: @llvm.ppc.altivec.vperm
2670 // CHECK: @llvm.ppc.altivec.lvsr
2671 // CHECK: @llvm.ppc.altivec.vperm
2672 // CHECK: @llvm.ppc.altivec.stvxl
2673
2674 vec_stvrxl(vf, 0, &vf); // CHECK: @llvm.ppc.altivec.lvx
Anton Yartsev44270d62010-10-14 14:37:46 +00002675 // CHECK: @llvm.ppc.altivec.lvsl
Anton Yartsevd06fea82011-03-27 09:32:40 +00002676 // CHECK: store <4 x float> zeroinitializer
Anton Yartsev44270d62010-10-14 14:37:46 +00002677 // CHECK: @llvm.ppc.altivec.vperm
2678 // CHECK: @llvm.ppc.altivec.lvsr
2679 // CHECK: @llvm.ppc.altivec.vperm
2680 // CHECK: @llvm.ppc.altivec.stvxl
2681
2682 /* vec_promote */
2683 res_vsc = vec_promote(param_sc, 0); // CHECK: store <16 x i8> zeroinitializer
2684 // CHECK: insertelement <16 x i8>
2685
2686 res_vuc = vec_promote(param_uc, 0); // CHECK: store <16 x i8> zeroinitializer
2687 // CHECK: insertelement <16 x i8>
2688
2689 res_vs = vec_promote(param_s, 0); // CHECK: store <8 x i16> zeroinitializer
2690 // CHECK: insertelement <8 x i16>
2691
2692 res_vus = vec_promote(param_us, 0); // CHECK: store <8 x i16> zeroinitializer
2693 // CHECK: insertelement <8 x i16>
2694
2695 res_vi = vec_promote(param_i, 0); // CHECK: store <4 x i32> zeroinitializer
2696 // CHECK: insertelement <4 x i32>
2697
2698 res_vui = vec_promote(param_ui, 0); // CHECK: store <4 x i32> zeroinitializer
2699 // CHECK: insertelement <4 x i32>
2700
2701 res_vf = vec_promote(param_f, 0); // CHECK: store <4 x float> zeroinitializer
2702 // CHECK: insertelement <4 x float>
2703
2704 /* vec_splats */
2705 res_vsc = vec_splats(param_sc); // CHECK: insertelement <16 x i8>
2706
2707 res_vuc = vec_splats(param_uc); // CHECK: insertelement <16 x i8>
2708
2709 res_vs = vec_splats(param_s); // CHECK: insertelement <8 x i16>
2710
2711 res_vus = vec_splats(param_us); // CHECK: insertelement <8 x i16>
2712
2713 res_vi = vec_splats(param_i); // CHECK: insertelement <4 x i32>
2714
2715 res_vui = vec_splats(param_ui); // CHECK: insertelement <4 x i32>
2716
2717 res_vf = vec_splats(param_f); // CHECK: insertelement <4 x float>
2718
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002719 /* ------------------------------ predicates -------------------------------------- */
Chris Lattnerdd173942010-04-14 03:54:58 +00002720
Anton Yartsev44270d62010-10-14 14:37:46 +00002721 /* vec_all_eq */
Chris Lattnerab866b42010-04-14 20:35:39 +00002722 res_i = vec_all_eq(vsc, vsc); // CHECK: @llvm.ppc.altivec.vcmpequb.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002723 res_i = vec_all_eq(vsc, vbc); // CHECK: @llvm.ppc.altivec.vcmpequb.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002724 res_i = vec_all_eq(vuc, vuc); // CHECK: @llvm.ppc.altivec.vcmpequb.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002725 res_i = vec_all_eq(vuc, vbc); // CHECK: @llvm.ppc.altivec.vcmpequb.p
2726 res_i = vec_all_eq(vbc, vsc); // CHECK: @llvm.ppc.altivec.vcmpequb.p
2727 res_i = vec_all_eq(vbc, vuc); // CHECK: @llvm.ppc.altivec.vcmpequb.p
2728 res_i = vec_all_eq(vbc, vbc); // CHECK: @llvm.ppc.altivec.vcmpequb.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002729 res_i = vec_all_eq(vs, vs); // CHECK: @llvm.ppc.altivec.vcmpequh.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002730 res_i = vec_all_eq(vs, vbs); // CHECK: @llvm.ppc.altivec.vcmpequh.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002731 res_i = vec_all_eq(vus, vus); // CHECK: @llvm.ppc.altivec.vcmpequh.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002732 res_i = vec_all_eq(vus, vbs); // CHECK: @llvm.ppc.altivec.vcmpequh.p
2733 res_i = vec_all_eq(vbs, vs); // CHECK: @llvm.ppc.altivec.vcmpequh.p
2734 res_i = vec_all_eq(vbs, vus); // CHECK: @llvm.ppc.altivec.vcmpequh.p
2735 res_i = vec_all_eq(vbs, vbs); // CHECK: @llvm.ppc.altivec.vcmpequh.p
2736 res_i = vec_all_eq(vp, vp); // CHECK: @llvm.ppc.altivec.vcmpequh.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002737 res_i = vec_all_eq(vi, vi); // CHECK: @llvm.ppc.altivec.vcmpequw.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002738 res_i = vec_all_eq(vi, vbi); // CHECK: @llvm.ppc.altivec.vcmpequw.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002739 res_i = vec_all_eq(vui, vui); // CHECK: @llvm.ppc.altivec.vcmpequw.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002740 res_i = vec_all_eq(vui, vbi); // CHECK: @llvm.ppc.altivec.vcmpequw.p
2741 res_i = vec_all_eq(vbi, vi); // CHECK: @llvm.ppc.altivec.vcmpequw.p
2742 res_i = vec_all_eq(vbi, vui); // CHECK: @llvm.ppc.altivec.vcmpequw.p
2743 res_i = vec_all_eq(vbi, vbi); // CHECK: @llvm.ppc.altivec.vcmpequw.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002744 res_i = vec_all_eq(vf, vf); // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
2745
2746 /* vec_all_ge */
Chris Lattnerab866b42010-04-14 20:35:39 +00002747 res_i = vec_all_ge(vsc, vsc); // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002748 res_i = vec_all_ge(vsc, vbc); // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002749 res_i = vec_all_ge(vuc, vuc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002750 res_i = vec_all_ge(vuc, vbc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2751 res_i = vec_all_ge(vbc, vsc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2752 res_i = vec_all_ge(vbc, vuc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2753 res_i = vec_all_ge(vbc, vbc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002754 res_i = vec_all_ge(vs, vs); // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002755 res_i = vec_all_ge(vs, vbs); // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002756 res_i = vec_all_ge(vus, vus); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002757 res_i = vec_all_ge(vus, vbs); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2758 res_i = vec_all_ge(vbs, vs); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2759 res_i = vec_all_ge(vbs, vus); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2760 res_i = vec_all_ge(vbs, vbs); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002761 res_i = vec_all_ge(vi, vi); // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002762 res_i = vec_all_ge(vi, vbi); // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002763 res_i = vec_all_ge(vui, vui); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002764 res_i = vec_all_ge(vui, vbi); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2765 res_i = vec_all_ge(vbi, vi); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2766 res_i = vec_all_ge(vbi, vui); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2767 res_i = vec_all_ge(vbi, vbi); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002768 res_i = vec_all_ge(vf, vf); // CHECK: @llvm.ppc.altivec.vcmpgefp.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002769
2770 /* vec_all_gt */
Chris Lattnerab866b42010-04-14 20:35:39 +00002771 res_i = vec_all_gt(vsc, vsc); // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002772 res_i = vec_all_gt(vsc, vbc); // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002773 res_i = vec_all_gt(vuc, vuc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002774 res_i = vec_all_gt(vuc, vbc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2775 res_i = vec_all_gt(vbc, vsc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2776 res_i = vec_all_gt(vbc, vuc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2777 res_i = vec_all_gt(vbc, vbc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002778 res_i = vec_all_gt(vs, vs); // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002779 res_i = vec_all_gt(vs, vbs); // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002780 res_i = vec_all_gt(vus, vus); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002781 res_i = vec_all_gt(vus, vbs); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2782 res_i = vec_all_gt(vbs, vs); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2783 res_i = vec_all_gt(vbs, vus); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2784 res_i = vec_all_gt(vbs, vbs); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002785 res_i = vec_all_gt(vi, vi); // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002786 res_i = vec_all_gt(vi, vbi); // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002787 res_i = vec_all_gt(vui, vui); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002788 res_i = vec_all_gt(vui, vbi); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2789 res_i = vec_all_gt(vbi, vi); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2790 res_i = vec_all_gt(vbi, vui); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2791 res_i = vec_all_gt(vbi, vbi); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002792 res_i = vec_all_gt(vf, vf); // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
2793
2794 /* vec_all_in */
2795 res_i = vec_all_in(vf, vf); // CHECK: @llvm.ppc.altivec.vcmpbfp.p
2796
2797 /* vec_all_le */
Chris Lattnerab866b42010-04-14 20:35:39 +00002798 res_i = vec_all_le(vsc, vsc); // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002799 res_i = vec_all_le(vsc, vbc); // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002800 res_i = vec_all_le(vuc, vuc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002801 res_i = vec_all_le(vuc, vbc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2802 res_i = vec_all_le(vbc, vsc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2803 res_i = vec_all_le(vbc, vuc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2804 res_i = vec_all_le(vbc, vbc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002805 res_i = vec_all_le(vs, vs); // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002806 res_i = vec_all_le(vs, vbs); // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002807 res_i = vec_all_le(vus, vus); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002808 res_i = vec_all_le(vus, vbs); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2809 res_i = vec_all_le(vbs, vs); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2810 res_i = vec_all_le(vbs, vus); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2811 res_i = vec_all_le(vbs, vbs); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002812 res_i = vec_all_le(vi, vi); // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002813 res_i = vec_all_le(vi, vbi); // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002814 res_i = vec_all_le(vui, vui); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002815 res_i = vec_all_le(vui, vbi); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2816 res_i = vec_all_le(vbi, vi); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2817 res_i = vec_all_le(vbi, vui); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2818 res_i = vec_all_le(vbi, vbi); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002819 res_i = vec_all_le(vf, vf); // CHECK: @llvm.ppc.altivec.vcmpgefp.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002820
Anton Yartseva4f235b2010-08-19 11:57:49 +00002821 /* vec_all_lt */
2822 res_i = vec_all_lt(vsc, vsc); // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
2823 res_i = vec_all_lt(vsc, vbc); // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
2824 res_i = vec_all_lt(vuc, vuc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2825 res_i = vec_all_lt(vuc, vbc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2826 res_i = vec_all_lt(vbc, vsc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2827 res_i = vec_all_lt(vbc, vuc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2828 res_i = vec_all_lt(vbc, vbc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2829 res_i = vec_all_lt(vs, vs); // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
2830 res_i = vec_all_lt(vs, vbs); // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
2831 res_i = vec_all_lt(vus, vus); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2832 res_i = vec_all_lt(vus, vbs); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2833 res_i = vec_all_lt(vbs, vs); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2834 res_i = vec_all_lt(vbs, vus); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2835 res_i = vec_all_lt(vbs, vbs); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2836 res_i = vec_all_lt(vi, vi); // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
2837 res_i = vec_all_lt(vi, vbi); // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
2838 res_i = vec_all_lt(vui, vui); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2839 res_i = vec_all_lt(vui, vbi); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2840 res_i = vec_all_lt(vbi, vi); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2841 res_i = vec_all_lt(vbi, vui); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2842 res_i = vec_all_lt(vbi, vbi); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2843 res_i = vec_all_lt(vf, vf); // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
2844
Chris Lattnerdd173942010-04-14 03:54:58 +00002845 /* vec_all_nan */
2846 res_i = vec_all_nan(vf); // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
2847
2848 /* vec_all_ne */
Chris Lattnerab866b42010-04-14 20:35:39 +00002849 res_i = vec_all_ne(vsc, vsc); // CHECK: @llvm.ppc.altivec.vcmpequb.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002850 res_i = vec_all_ne(vsc, vbc); // CHECK: @llvm.ppc.altivec.vcmpequb.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002851 res_i = vec_all_ne(vuc, vuc); // CHECK: @llvm.ppc.altivec.vcmpequb.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002852 res_i = vec_all_ne(vuc, vbc); // CHECK: @llvm.ppc.altivec.vcmpequb.p
2853 res_i = vec_all_ne(vbc, vsc); // CHECK: @llvm.ppc.altivec.vcmpequb.p
2854 res_i = vec_all_ne(vbc, vuc); // CHECK: @llvm.ppc.altivec.vcmpequb.p
2855 res_i = vec_all_ne(vbc, vbc); // CHECK: @llvm.ppc.altivec.vcmpequb.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002856 res_i = vec_all_ne(vs, vs); // CHECK: @llvm.ppc.altivec.vcmpequh.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002857 res_i = vec_all_ne(vs, vbs); // CHECK: @llvm.ppc.altivec.vcmpequh.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002858 res_i = vec_all_ne(vus, vus); // CHECK: @llvm.ppc.altivec.vcmpequh.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002859 res_i = vec_all_ne(vus, vbs); // CHECK: @llvm.ppc.altivec.vcmpequh.p
2860 res_i = vec_all_ne(vbs, vs); // CHECK: @llvm.ppc.altivec.vcmpequh.p
2861 res_i = vec_all_ne(vbs, vus); // CHECK: @llvm.ppc.altivec.vcmpequh.p
2862 res_i = vec_all_ne(vbs, vbs); // CHECK: @llvm.ppc.altivec.vcmpequh.p
2863 res_i = vec_all_ne(vp, vp); // CHECK: @llvm.ppc.altivec.vcmpequh.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002864 res_i = vec_all_ne(vi, vi); // CHECK: @llvm.ppc.altivec.vcmpequw.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002865 res_i = vec_all_ne(vi, vbi); // CHECK: @llvm.ppc.altivec.vcmpequw.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002866 res_i = vec_all_ne(vui, vui); // CHECK: @llvm.ppc.altivec.vcmpequw.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002867 res_i = vec_all_ne(vui, vbi); // CHECK: @llvm.ppc.altivec.vcmpequw.p
2868 res_i = vec_all_ne(vbi, vi); // CHECK: @llvm.ppc.altivec.vcmpequw.p
2869 res_i = vec_all_ne(vbi, vui); // CHECK: @llvm.ppc.altivec.vcmpequw.p
2870 res_i = vec_all_ne(vbi, vbi); // CHECK: @llvm.ppc.altivec.vcmpequw.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002871 res_i = vec_all_ne(vf, vf); // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
2872
2873 /* vec_all_nge */
2874 res_i = vec_all_nge(vf, vf); // CHECK: @llvm.ppc.altivec.vcmpgefp.p
2875
2876 /* vec_all_ngt */
2877 res_i = vec_all_ngt(vf, vf); // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
2878
2879 /* vec_all_nle */
2880 res_i = vec_all_nle(vf, vf); // CHECK: @llvm.ppc.altivec.vcmpgefp.p
2881
2882 /* vec_all_nlt */
2883 res_i = vec_all_nlt(vf, vf); // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
2884
2885 /* vec_all_numeric */
2886 res_i = vec_all_numeric(vf); // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
2887
2888 /* vec_any_eq */
Chris Lattnerab866b42010-04-14 20:35:39 +00002889 res_i = vec_any_eq(vsc, vsc); // CHECK: @llvm.ppc.altivec.vcmpequb.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002890 res_i = vec_any_eq(vsc, vbc); // CHECK: @llvm.ppc.altivec.vcmpequb.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002891 res_i = vec_any_eq(vuc, vuc); // CHECK: @llvm.ppc.altivec.vcmpequb.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002892 res_i = vec_any_eq(vuc, vbc); // CHECK: @llvm.ppc.altivec.vcmpequb.p
2893 res_i = vec_any_eq(vbc, vsc); // CHECK: @llvm.ppc.altivec.vcmpequb.p
2894 res_i = vec_any_eq(vbc, vuc); // CHECK: @llvm.ppc.altivec.vcmpequb.p
2895 res_i = vec_any_eq(vbc, vbc); // CHECK: @llvm.ppc.altivec.vcmpequb.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002896 res_i = vec_any_eq(vs, vs); // CHECK: @llvm.ppc.altivec.vcmpequh.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002897 res_i = vec_any_eq(vs, vbs); // CHECK: @llvm.ppc.altivec.vcmpequh.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002898 res_i = vec_any_eq(vus, vus); // CHECK: @llvm.ppc.altivec.vcmpequh.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002899 res_i = vec_any_eq(vus, vbs); // CHECK: @llvm.ppc.altivec.vcmpequh.p
2900 res_i = vec_any_eq(vbs, vs); // CHECK: @llvm.ppc.altivec.vcmpequh.p
2901 res_i = vec_any_eq(vbs, vus); // CHECK: @llvm.ppc.altivec.vcmpequh.p
2902 res_i = vec_any_eq(vbs, vbs); // CHECK: @llvm.ppc.altivec.vcmpequh.p
2903 res_i = vec_any_eq(vp, vp); // CHECK: @llvm.ppc.altivec.vcmpequh.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002904 res_i = vec_any_eq(vi, vi); // CHECK: @llvm.ppc.altivec.vcmpequw.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002905 res_i = vec_any_eq(vi, vbi); // CHECK: @llvm.ppc.altivec.vcmpequw.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002906 res_i = vec_any_eq(vui, vui); // CHECK: @llvm.ppc.altivec.vcmpequw.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002907 res_i = vec_any_eq(vui, vbi); // CHECK: @llvm.ppc.altivec.vcmpequw.p
2908 res_i = vec_any_eq(vbi, vi); // CHECK: @llvm.ppc.altivec.vcmpequw.p
2909 res_i = vec_any_eq(vbi, vui); // CHECK: @llvm.ppc.altivec.vcmpequw.p
2910 res_i = vec_any_eq(vbi, vbi); // CHECK: @llvm.ppc.altivec.vcmpequw.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002911 res_i = vec_any_eq(vf, vf); // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
2912
2913 /* vec_any_ge */
Chris Lattnerab866b42010-04-14 20:35:39 +00002914 res_i = vec_any_ge(vsc, vsc); // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002915 res_i = vec_any_ge(vsc, vbc); // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002916 res_i = vec_any_ge(vuc, vuc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002917 res_i = vec_any_ge(vuc, vbc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2918 res_i = vec_any_ge(vbc, vsc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2919 res_i = vec_any_ge(vbc, vuc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2920 res_i = vec_any_ge(vbc, vbc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002921 res_i = vec_any_ge(vs, vs); // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002922 res_i = vec_any_ge(vs, vbs); // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002923 res_i = vec_any_ge(vus, vus); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002924 res_i = vec_any_ge(vus, vbs); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2925 res_i = vec_any_ge(vbs, vs); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2926 res_i = vec_any_ge(vbs, vus); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2927 res_i = vec_any_ge(vbs, vbs); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002928 res_i = vec_any_ge(vi, vi); // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002929 res_i = vec_any_ge(vi, vbi); // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002930 res_i = vec_any_ge(vui, vui); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002931 res_i = vec_any_ge(vui, vbi); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2932 res_i = vec_any_ge(vbi, vi); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2933 res_i = vec_any_ge(vbi, vui); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2934 res_i = vec_any_ge(vbi, vbi); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002935 res_i = vec_any_ge(vf, vf); // CHECK: @llvm.ppc.altivec.vcmpgefp.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002936
2937 /* vec_any_gt */
Chris Lattnerab866b42010-04-14 20:35:39 +00002938 res_i = vec_any_gt(vsc, vsc); // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002939 res_i = vec_any_gt(vsc, vbc); // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002940 res_i = vec_any_gt(vuc, vuc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002941 res_i = vec_any_gt(vuc, vbc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2942 res_i = vec_any_gt(vbc, vsc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2943 res_i = vec_any_gt(vbc, vuc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2944 res_i = vec_any_gt(vbc, vbc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002945 res_i = vec_any_gt(vs, vs); // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002946 res_i = vec_any_gt(vs, vbs); // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002947 res_i = vec_any_gt(vus, vus); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002948 res_i = vec_any_gt(vus, vbs); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2949 res_i = vec_any_gt(vbs, vs); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2950 res_i = vec_any_gt(vbs, vus); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2951 res_i = vec_any_gt(vbs, vbs); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002952 res_i = vec_any_gt(vi, vi); // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002953 res_i = vec_any_gt(vi, vbi); // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002954 res_i = vec_any_gt(vui, vui); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002955 res_i = vec_any_gt(vui, vbi); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2956 res_i = vec_any_gt(vbi, vi); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2957 res_i = vec_any_gt(vbi, vui); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2958 res_i = vec_any_gt(vbi, vbi); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002959 res_i = vec_any_gt(vf, vf); // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
2960
2961 /* vec_any_le */
Chris Lattnerab866b42010-04-14 20:35:39 +00002962 res_i = vec_any_le(vsc, vsc); // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002963 res_i = vec_any_le(vsc, vbc); // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002964 res_i = vec_any_le(vuc, vuc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002965 res_i = vec_any_le(vuc, vbc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2966 res_i = vec_any_le(vbc, vsc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2967 res_i = vec_any_le(vbc, vuc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2968 res_i = vec_any_le(vbc, vbc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002969 res_i = vec_any_le(vs, vs); // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002970 res_i = vec_any_le(vs, vbs); // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002971 res_i = vec_any_le(vus, vus); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002972 res_i = vec_any_le(vus, vbs); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2973 res_i = vec_any_le(vbs, vs); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2974 res_i = vec_any_le(vbs, vus); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2975 res_i = vec_any_le(vbs, vbs); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002976 res_i = vec_any_le(vi, vi); // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002977 res_i = vec_any_le(vi, vbi); // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002978 res_i = vec_any_le(vui, vui); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002979 res_i = vec_any_le(vui, vbi); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2980 res_i = vec_any_le(vbi, vi); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2981 res_i = vec_any_le(vbi, vui); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2982 res_i = vec_any_le(vbi, vbi); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002983 res_i = vec_any_le(vf, vf); // CHECK: @llvm.ppc.altivec.vcmpgefp.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002984
2985 /* vec_any_lt */
Chris Lattnerab866b42010-04-14 20:35:39 +00002986 res_i = vec_any_lt(vsc, vsc); // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002987 res_i = vec_any_lt(vsc, vbc); // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002988 res_i = vec_any_lt(vuc, vuc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002989 res_i = vec_any_lt(vuc, vbc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2990 res_i = vec_any_lt(vbc, vsc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2991 res_i = vec_any_lt(vbc, vuc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2992 res_i = vec_any_lt(vbc, vbc); // CHECK: @llvm.ppc.altivec.vcmpgtub.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002993 res_i = vec_any_lt(vs, vs); // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002994 res_i = vec_any_lt(vs, vbs); // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
Chris Lattnerdd173942010-04-14 03:54:58 +00002995 res_i = vec_any_lt(vus, vus); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00002996 res_i = vec_any_lt(vus, vbs); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2997 res_i = vec_any_lt(vbs, vs); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2998 res_i = vec_any_lt(vbs, vus); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2999 res_i = vec_any_lt(vbs, vbs); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
Chris Lattnerdd173942010-04-14 03:54:58 +00003000 res_i = vec_any_lt(vi, vi); // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00003001 res_i = vec_any_lt(vi, vbi); // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
Chris Lattnerdd173942010-04-14 03:54:58 +00003002 res_i = vec_any_lt(vui, vui); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00003003 res_i = vec_any_lt(vui, vbi); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
3004 res_i = vec_any_lt(vbi, vi); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
3005 res_i = vec_any_lt(vbi, vui); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
3006 res_i = vec_any_lt(vbi, vbi); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
Chris Lattnerdd173942010-04-14 03:54:58 +00003007 res_i = vec_any_lt(vf, vf); // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
3008
3009 /* vec_any_nan */
3010 res_i = vec_any_nan(vf); // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
3011
3012 /* vec_any_ne */
Chris Lattnerab866b42010-04-14 20:35:39 +00003013 res_i = vec_any_ne(vsc, vsc); // CHECK: @llvm.ppc.altivec.vcmpequb.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00003014 res_i = vec_any_ne(vsc, vbc); // CHECK: @llvm.ppc.altivec.vcmpequb.p
Chris Lattnerdd173942010-04-14 03:54:58 +00003015 res_i = vec_any_ne(vuc, vuc); // CHECK: @llvm.ppc.altivec.vcmpequb.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00003016 res_i = vec_any_ne(vuc, vbc); // CHECK: @llvm.ppc.altivec.vcmpequb.p
3017 res_i = vec_any_ne(vbc, vsc); // CHECK: @llvm.ppc.altivec.vcmpequb.p
3018 res_i = vec_any_ne(vbc, vuc); // CHECK: @llvm.ppc.altivec.vcmpequb.p
3019 res_i = vec_any_ne(vbc, vbc); // CHECK: @llvm.ppc.altivec.vcmpequb.p
Chris Lattnerdd173942010-04-14 03:54:58 +00003020 res_i = vec_any_ne(vs, vs); // CHECK: @llvm.ppc.altivec.vcmpequh.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00003021 res_i = vec_any_ne(vs, vbs); // CHECK: @llvm.ppc.altivec.vcmpequh.p
Chris Lattnerdd173942010-04-14 03:54:58 +00003022 res_i = vec_any_ne(vus, vus); // CHECK: @llvm.ppc.altivec.vcmpequh.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00003023 res_i = vec_any_ne(vus, vbs); // CHECK: @llvm.ppc.altivec.vcmpequh.p
3024 res_i = vec_any_ne(vbs, vs); // CHECK: @llvm.ppc.altivec.vcmpequh.p
3025 res_i = vec_any_ne(vbs, vus); // CHECK: @llvm.ppc.altivec.vcmpequh.p
3026 res_i = vec_any_ne(vbs, vbs); // CHECK: @llvm.ppc.altivec.vcmpequh.p
3027 res_i = vec_any_ne(vp, vp); // CHECK: @llvm.ppc.altivec.vcmpequh.p
Chris Lattnerdd173942010-04-14 03:54:58 +00003028 res_i = vec_any_ne(vi, vi); // CHECK: @llvm.ppc.altivec.vcmpequw.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00003029 res_i = vec_any_ne(vi, vbi); // CHECK: @llvm.ppc.altivec.vcmpequw.p
Chris Lattnerdd173942010-04-14 03:54:58 +00003030 res_i = vec_any_ne(vui, vui); // CHECK: @llvm.ppc.altivec.vcmpequw.p
Anton Yartseva4f235b2010-08-19 11:57:49 +00003031 res_i = vec_any_ne(vui, vbi); // CHECK: @llvm.ppc.altivec.vcmpequw.p
3032 res_i = vec_any_ne(vbi, vi); // CHECK: @llvm.ppc.altivec.vcmpequw.p
3033 res_i = vec_any_ne(vbi, vui); // CHECK: @llvm.ppc.altivec.vcmpequw.p
3034 res_i = vec_any_ne(vbi, vbi); // CHECK: @llvm.ppc.altivec.vcmpequw.p
Chris Lattnerdd173942010-04-14 03:54:58 +00003035 res_i = vec_any_ne(vf, vf); // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
3036
3037 /* vec_any_nge */
3038 res_i = vec_any_nge(vf, vf); // CHECK: @llvm.ppc.altivec.vcmpgefp.p
3039
3040 /* vec_any_ngt */
3041 res_i = vec_any_ngt(vf, vf); // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
3042
3043 /* vec_any_nle */
3044 res_i = vec_any_nle(vf, vf); // CHECK: @llvm.ppc.altivec.vcmpgefp.p
3045
3046 /* vec_any_nlt */
3047 res_i = vec_any_nlt(vf, vf); // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
3048
3049 /* vec_any_numeric */
3050 res_i = vec_any_numeric(vf); // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
3051
3052 /* vec_any_out */
3053 res_i = vec_any_out(vf, vf); // CHECK: @llvm.ppc.altivec.vcmpbfp.p
Chris Lattnerdd173942010-04-14 03:54:58 +00003054}
Anton Yartsevaa4fe052010-11-18 03:19:30 +00003055
Anton Yartsevd06fea82011-03-27 09:32:40 +00003056/* ------------------------------ Relational Operators ------------------------------ */
Anton Yartsevaa4fe052010-11-18 03:19:30 +00003057// CHECK: define void @test7
3058void test7() {
3059 vector signed char vsc1 = (vector signed char)(-1);
3060 vector signed char vsc2 = (vector signed char)(-2);
3061 res_i = (vsc1 == vsc2); // CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 2
3062 res_i = (vsc1 != vsc2); // CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 0
3063 res_i = (vsc1 < vsc2); // CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 2
3064 res_i = (vsc1 > vsc2); // CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 2
3065 res_i = (vsc1 <= vsc2); // CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 0
3066 res_i = (vsc1 >= vsc2); // CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 0
3067 vector unsigned char vuc1 = (vector unsigned char)(1);
3068 vector unsigned char vuc2 = (vector unsigned char)(2);
3069 res_i = (vuc1 == vuc2); // CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 2
3070 res_i = (vuc1 != vuc2); // CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 0
3071 res_i = (vuc1 < vuc2); // CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 2
3072 res_i = (vuc1 > vuc2); // CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 2
3073 res_i = (vuc1 <= vuc2); // CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 0
3074 res_i = (vuc1 >= vuc2); // CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 0
3075 vector short vs1 = (vector short)(-1);
3076 vector short vs2 = (vector short)(-2);
3077 res_i = (vs1 == vs2); // CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 2
3078 res_i = (vs1 != vs2); // CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 0
3079 res_i = (vs1 < vs2); // CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 2
3080 res_i = (vs1 > vs2); // CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 2
3081 res_i = (vs1 <= vs2); // CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 0
3082 res_i = (vs1 >= vs2); // CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 0
3083 vector unsigned short vus1 = (vector unsigned short)(1);
3084 vector unsigned short vus2 = (vector unsigned short)(2);
3085 res_i = (vus1 == vus2); // CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 2
3086 res_i = (vus1 != vus2); // CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 0
3087 res_i = (vus1 < vus2); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 2
3088 res_i = (vus1 > vus2); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 2
3089 res_i = (vus1 <= vus2); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 0
3090 res_i = (vus1 >= vus2); // CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 0
3091 vector int vi1 = (vector int)(-1);
3092 vector int vi2 = (vector int)(-2);
3093 res_i = (vi1 == vi2); // CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 2
3094 res_i = (vi1 != vi2); // CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 0
3095 res_i = (vi1 < vi2); // CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 2
3096 res_i = (vi1 > vi2); // CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 2
3097 res_i = (vi1 <= vi2); // CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 0
3098 res_i = (vi1 >= vi2); // CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 0
3099 vector unsigned int vui1 = (vector unsigned int)(1);
3100 vector unsigned int vui2 = (vector unsigned int)(2);
3101 res_i = (vui1 == vui2); // CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 2
3102 res_i = (vui1 != vui2); // CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 0
3103 res_i = (vui1 < vui2); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 2
3104 res_i = (vui1 > vui2); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 2
3105 res_i = (vui1 <= vui2); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 0
3106 res_i = (vui1 >= vui2); // CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 0
3107 vector float vf1 = (vector float)(1.0);
3108 vector float vf2 = (vector float)(2.0);
3109 res_i = (vf1 == vf2); // CHECK: @llvm.ppc.altivec.vcmpeqfp.p(i32 2
3110 res_i = (vf1 != vf2); // CHECK: @llvm.ppc.altivec.vcmpeqfp.p(i32 0
3111 res_i = (vf1 < vf2); // CHECK: @llvm.ppc.altivec.vcmpgtfp.p(i32 2
3112 res_i = (vf1 > vf2); // CHECK: @llvm.ppc.altivec.vcmpgtfp.p(i32 2
3113 res_i = (vf1 <= vf2); // CHECK: @llvm.ppc.altivec.vcmpgefp.p(i32 2
3114 res_i = (vf1 >= vf2); // CHECK: @llvm.ppc.altivec.vcmpgefp.p(i32 2
3115}