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 }