Mercurial > hg > CbC > CbC_llvm
comparison test/CodeGen/X86/avx2-shift.ll @ 77:54457678186b LLVM3.6
LLVM 3.6
author | Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 08 Sep 2014 22:06:00 +0900 |
parents | 95c75e76d11b |
children | afa8332a0e37 |
comparison
equal
deleted
inserted
replaced
34:e874dbf0ad9d | 77:54457678186b |
---|---|
264 define <8 x i32> @sext_v8i32(<8 x i32> %a) nounwind { | 264 define <8 x i32> @sext_v8i32(<8 x i32> %a) nounwind { |
265 %b = trunc <8 x i32> %a to <8 x i16> | 265 %b = trunc <8 x i32> %a to <8 x i16> |
266 %c = sext <8 x i16> %b to <8 x i32> | 266 %c = sext <8 x i16> %b to <8 x i32> |
267 ret <8 x i32> %c | 267 ret <8 x i32> %c |
268 } | 268 } |
269 | |
270 define <8 x i16> @variable_shl16(<8 x i16> %lhs, <8 x i16> %rhs) { | |
271 ; CHECK-LABEL: variable_shl16: | |
272 ; CHECK-DAG: vpmovzxwd %xmm1, [[AMT:%ymm[0-9]+]] | |
273 ; CHECK-DAG: vpmovzxwd %xmm0, [[LHS:%ymm[0-9]+]] | |
274 ; CHECK: vpsllvd [[AMT]], [[LHS]], {{%ymm[0-9]+}} | |
275 ; CHECK: vpshufb | |
276 ; CHECK: vpermq | |
277 %res = shl <8 x i16> %lhs, %rhs | |
278 ret <8 x i16> %res | |
279 } | |
280 | |
281 define <8 x i16> @variable_ashr16(<8 x i16> %lhs, <8 x i16> %rhs) { | |
282 ; CHECK-LABEL: variable_ashr16: | |
283 ; CHECK-DAG: vpmovzxwd %xmm1, [[AMT:%ymm[0-9]+]] | |
284 ; CHECK-DAG: vpmovsxwd %xmm0, [[LHS:%ymm[0-9]+]] | |
285 ; CHECK: vpsravd [[AMT]], [[LHS]], {{%ymm[0-9]+}} | |
286 ; CHECK: vpshufb | |
287 ; CHECK: vpermq | |
288 %res = ashr <8 x i16> %lhs, %rhs | |
289 ret <8 x i16> %res | |
290 } | |
291 | |
292 define <8 x i16> @variable_lshr16(<8 x i16> %lhs, <8 x i16> %rhs) { | |
293 ; CHECK-LABEL: variable_lshr16: | |
294 ; CHECK-DAG: vpmovzxwd %xmm1, [[AMT:%ymm[0-9]+]] | |
295 ; CHECK-DAG: vpmovzxwd %xmm0, [[LHS:%ymm[0-9]+]] | |
296 ; CHECK: vpsrlvd [[AMT]], [[LHS]], {{%ymm[0-9]+}} | |
297 ; CHECK: vpshufb | |
298 ; CHECK: vpermq | |
299 %res = lshr <8 x i16> %lhs, %rhs | |
300 ret <8 x i16> %res | |
301 } |