mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-10-02 02:55:35 +00:00
Legalizer: Make bswap promotion safe for vectors.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209202 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
6943f62a41
commit
51af588366
@ -268,9 +268,9 @@ SDValue DAGTypeLegalizer::PromoteIntRes_BSWAP(SDNode *N) {
|
||||
EVT NVT = Op.getValueType();
|
||||
SDLoc dl(N);
|
||||
|
||||
unsigned DiffBits = NVT.getSizeInBits() - OVT.getSizeInBits();
|
||||
unsigned DiffBits = NVT.getScalarSizeInBits() - OVT.getScalarSizeInBits();
|
||||
return DAG.getNode(ISD::SRL, dl, NVT, DAG.getNode(ISD::BSWAP, dl, NVT, Op),
|
||||
DAG.getConstant(DiffBits, TLI.getPointerTy()));
|
||||
DAG.getConstant(DiffBits, TLI.getShiftAmountTy(NVT)));
|
||||
}
|
||||
|
||||
SDValue DAGTypeLegalizer::PromoteIntRes_BUILD_PAIR(SDNode *N) {
|
||||
|
@ -122,6 +122,23 @@ entry:
|
||||
; CHECK-AVX2-NEXT: retq
|
||||
}
|
||||
|
||||
declare <4 x i16> @llvm.bswap.v4i16(<4 x i16>)
|
||||
|
||||
define <4 x i16> @test7(<4 x i16> %v) #0 {
|
||||
entry:
|
||||
%r = call <4 x i16> @llvm.bswap.v4i16(<4 x i16> %v)
|
||||
ret <4 x i16> %r
|
||||
|
||||
; CHECK-SSSE3-LABEL: @test7
|
||||
; CHECK-SSSE3: pshufb
|
||||
; CHECK-SSSE3: psrld $16
|
||||
; CHECK-SSSE3-NEXT: retq
|
||||
|
||||
; CHECK-AVX2-LABEL: @test7
|
||||
; CHECK-AVX2: vpshufb
|
||||
; CHECK-AVX2: vpsrld $16
|
||||
; CHECK-AVX2-NEXT: retq
|
||||
}
|
||||
|
||||
attributes #0 = { nounwind uwtable }
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user