From 7ee228562569a307a7ff8608a9c010ea2a9d41a8 Mon Sep 17 00:00:00 2001 From: Simon Pilgrim Date: Fri, 4 Jan 2019 14:56:10 +0000 Subject: [PATCH] [X86] Split immediate shifts tests. NFCI. A future patch will combine logical shifts more aggressively. llvm-svn: 350396 --- llvm/test/CodeGen/X86/avx512-shift.ll | 93 +++++++++++++++++++++++++---------- 1 file changed, 67 insertions(+), 26 deletions(-) diff --git a/llvm/test/CodeGen/X86/avx512-shift.ll b/llvm/test/CodeGen/X86/avx512-shift.ll index eda27c2..8cf08b8 100644 --- a/llvm/test/CodeGen/X86/avx512-shift.ll +++ b/llvm/test/CodeGen/X86/avx512-shift.ll @@ -1,52 +1,93 @@ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py -;RUN: llc < %s -mtriple=x86_64-unknown-unknown -mcpu=knl | FileCheck %s --check-prefix=CHECK --check-prefix=KNL -;RUN: llc < %s -mtriple=x86_64-unknown-unknown -mcpu=skx | FileCheck %s --check-prefix=CHECK --check-prefix=SKX +;RUN: llc < %s -mtriple=x86_64-unknown-unknown -mcpu=knl | FileCheck %s --check-prefixes=CHECK,KNL +;RUN: llc < %s -mtriple=x86_64-unknown-unknown -mcpu=skx | FileCheck %s --check-prefixes=CHECK,SKX -define <16 x i32> @shift_16_i32(<16 x i32> %a) { -; CHECK-LABEL: shift_16_i32: +define <16 x i32> @ashr_16_i32(<16 x i32> %a) { +; CHECK-LABEL: ashr_16_i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vpsrld $1, %zmm0, %zmm0 -; CHECK-NEXT: vpslld $12, %zmm0, %zmm0 ; CHECK-NEXT: vpsrad $12, %zmm0, %zmm0 ; CHECK-NEXT: retq + %b = ashr <16 x i32> %a, + ret <16 x i32> %b +} + +define <16 x i32> @lshr_16_i32(<16 x i32> %a) { +; CHECK-LABEL: lshr_16_i32: +; CHECK: # %bb.0: +; CHECK-NEXT: vpsrld $1, %zmm0, %zmm0 +; CHECK-NEXT: retq %b = lshr <16 x i32> %a, - %c = shl <16 x i32> %b, - %d = ashr <16 x i32> %c, - ret <16 x i32> %d; + ret <16 x i32> %b } -define <8 x i64> @shift_8_i64(<8 x i64> %a) { -; CHECK-LABEL: shift_8_i64: +define <16 x i32> @shl_16_i32(<16 x i32> %a) { +; CHECK-LABEL: shl_16_i32: +; CHECK: # %bb.0: +; CHECK-NEXT: vpslld $12, %zmm0, %zmm0 +; CHECK-NEXT: retq + %b = shl <16 x i32> %a, + ret <16 x i32> %b +} + +define <8 x i64> @ashr_8_i64(<8 x i64> %a) { +; CHECK-LABEL: ashr_8_i64: ; CHECK: # %bb.0: -; CHECK-NEXT: vpsrlq $1, %zmm0, %zmm0 -; CHECK-NEXT: vpsllq $12, %zmm0, %zmm0 ; CHECK-NEXT: vpsraq $12, %zmm0, %zmm0 ; CHECK-NEXT: retq + %b = ashr <8 x i64> %a, + ret <8 x i64> %b +} + +define <8 x i64> @lshr_8_i64(<8 x i64> %a) { +; CHECK-LABEL: lshr_8_i64: +; CHECK: # %bb.0: +; CHECK-NEXT: vpsrlq $1, %zmm0, %zmm0 +; CHECK-NEXT: retq %b = lshr <8 x i64> %a, - %c = shl <8 x i64> %b, - %d = ashr <8 x i64> %c, - ret <8 x i64> %d; + ret <8 x i64> %b +} + +define <8 x i64> @shl_8_i64(<8 x i64> %a) { +; CHECK-LABEL: shl_8_i64: +; CHECK: # %bb.0: +; CHECK-NEXT: vpsllq $12, %zmm0, %zmm0 +; CHECK-NEXT: retq + %b = shl <8 x i64> %a, + ret <8 x i64> %b } -define <4 x i64> @shift_4_i64(<4 x i64> %a) { -; KNL-LABEL: shift_4_i64: +define <4 x i64> @ashr_4_i64(<4 x i64> %a) { +; KNL-LABEL: ashr_4_i64: ; KNL: # %bb.0: -; KNL-NEXT: vpsrlq $1, %ymm0, %ymm0 -; KNL-NEXT: vpsllq $12, %ymm0, %ymm0 +; KNL-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 ; KNL-NEXT: vpsraq $12, %zmm0, %zmm0 ; KNL-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; KNL-NEXT: retq ; -; SKX-LABEL: shift_4_i64: +; SKX-LABEL: ashr_4_i64: ; SKX: # %bb.0: -; SKX-NEXT: vpsrlq $1, %ymm0, %ymm0 -; SKX-NEXT: vpsllq $12, %ymm0, %ymm0 ; SKX-NEXT: vpsraq $12, %ymm0, %ymm0 ; SKX-NEXT: retq + %b = ashr <4 x i64> %a, + ret <4 x i64> %b +} + +define <4 x i64> @lshr_4_i64(<4 x i64> %a) { +; CHECK-LABEL: lshr_4_i64: +; CHECK: # %bb.0: +; CHECK-NEXT: vpsrlq $1, %ymm0, %ymm0 +; CHECK-NEXT: retq %b = lshr <4 x i64> %a, - %c = shl <4 x i64> %b, - %d = ashr <4 x i64> %c, - ret <4 x i64> %d; + ret <4 x i64> %b +} + +define <4 x i64> @shl_4_i64(<4 x i64> %a) { +; CHECK-LABEL: shl_4_i64: +; CHECK: # %bb.0: +; CHECK-NEXT: vpsllq $12, %ymm0, %ymm0 +; CHECK-NEXT: retq + %b = shl <4 x i64> %a, + ret <4 x i64> %b } define <8 x i64> @variable_shl4(<8 x i64> %x, <8 x i64> %y) { -- 2.7.4