mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-05 13:26:55 +00:00
AVX-512, X86: Added lowering for shift operations for SKX.
The other changes in the LowerShift() are not functional, just to make the code more convenient. So, the functional changes for SKX only. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237129 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
;RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=knl | FileCheck %s
|
||||
;RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=skx | FileCheck --check-prefix=SKX %s
|
||||
|
||||
;CHECK-LABEL: shift_16_i32
|
||||
;CHECK: vpsrld
|
||||
@@ -24,6 +25,18 @@ define <8 x i64> @shift_8_i64(<8 x i64> %a) {
|
||||
ret <8 x i64> %d;
|
||||
}
|
||||
|
||||
;SKX-LABEL: shift_4_i64
|
||||
;SKX: vpsrlq
|
||||
;SKX: vpsllq
|
||||
;SKX: vpsraq
|
||||
;SKX: ret
|
||||
define <4 x i64> @shift_4_i64(<4 x i64> %a) {
|
||||
%b = lshr <4 x i64> %a, <i64 1, i64 1, i64 1, i64 1>
|
||||
%c = shl <4 x i64> %b, <i64 12, i64 12, i64 12, i64 12>
|
||||
%d = ashr <4 x i64> %c, <i64 12, i64 12, i64 12, i64 12>
|
||||
ret <4 x i64> %d;
|
||||
}
|
||||
|
||||
; CHECK-LABEL: variable_shl4
|
||||
; CHECK: vpsllvq %zmm
|
||||
; CHECK: ret
|
||||
@@ -72,6 +85,22 @@ define <8 x i64> @variable_sra2(<8 x i64> %x, <8 x i64> %y) {
|
||||
ret <8 x i64> %k
|
||||
}
|
||||
|
||||
; SKX-LABEL: variable_sra3
|
||||
; SKX: vpsravq %ymm
|
||||
; SKX: ret
|
||||
define <4 x i64> @variable_sra3(<4 x i64> %x, <4 x i64> %y) {
|
||||
%k = ashr <4 x i64> %x, %y
|
||||
ret <4 x i64> %k
|
||||
}
|
||||
|
||||
; SKX-LABEL: variable_sra4
|
||||
; SKX: vpsravw %xmm
|
||||
; SKX: ret
|
||||
define <8 x i16> @variable_sra4(<8 x i16> %x, <8 x i16> %y) {
|
||||
%k = ashr <8 x i16> %x, %y
|
||||
ret <8 x i16> %k
|
||||
}
|
||||
|
||||
; CHECK-LABEL: variable_sra01_load
|
||||
; CHECK: vpsravd (%
|
||||
; CHECK: ret
|
||||
|
Reference in New Issue
Block a user