mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-29 14:40:25 +00:00
Clean up some of the shuffle decoding code for UNPCK instructions. Add instruction commenting for AVX/AVX2 forms for integer UNPCKs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145924 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
23261af193
commit
3d8c2ce3e4
@ -106,28 +106,92 @@ void llvm::EmitAnyX86InstComments(const MCInst *MI, raw_ostream &OS,
|
||||
// FALL THROUGH.
|
||||
case X86::PUNPCKHBWrm:
|
||||
Src1Name = getRegName(MI->getOperand(0).getReg());
|
||||
DecodePUNPCKHMask(16, ShuffleMask);
|
||||
DecodeUNPCKHMask(MVT::v16i8, ShuffleMask);
|
||||
break;
|
||||
case X86::VPUNPCKHBWrr:
|
||||
Src2Name = getRegName(MI->getOperand(2).getReg());
|
||||
// FALL THROUGH.
|
||||
case X86::VPUNPCKHBWrm:
|
||||
Src1Name = getRegName(MI->getOperand(1).getReg());
|
||||
DestName = getRegName(MI->getOperand(0).getReg());
|
||||
DecodeUNPCKHMask(MVT::v16i8, ShuffleMask);
|
||||
break;
|
||||
case X86::VPUNPCKHBWYrr:
|
||||
Src2Name = getRegName(MI->getOperand(2).getReg());
|
||||
// FALL THROUGH.
|
||||
case X86::VPUNPCKHBWYrm:
|
||||
Src1Name = getRegName(MI->getOperand(1).getReg());
|
||||
DestName = getRegName(MI->getOperand(0).getReg());
|
||||
DecodeUNPCKHMask(MVT::v32i8, ShuffleMask);
|
||||
break;
|
||||
case X86::PUNPCKHWDrr:
|
||||
Src2Name = getRegName(MI->getOperand(2).getReg());
|
||||
// FALL THROUGH.
|
||||
case X86::PUNPCKHWDrm:
|
||||
Src1Name = getRegName(MI->getOperand(0).getReg());
|
||||
DecodePUNPCKHMask(8, ShuffleMask);
|
||||
DecodeUNPCKHMask(MVT::v8i16, ShuffleMask);
|
||||
break;
|
||||
case X86::VPUNPCKHWDrr:
|
||||
Src2Name = getRegName(MI->getOperand(2).getReg());
|
||||
// FALL THROUGH.
|
||||
case X86::VPUNPCKHWDrm:
|
||||
Src1Name = getRegName(MI->getOperand(1).getReg());
|
||||
DestName = getRegName(MI->getOperand(0).getReg());
|
||||
DecodeUNPCKHMask(MVT::v8i16, ShuffleMask);
|
||||
break;
|
||||
case X86::VPUNPCKHWDYrr:
|
||||
Src2Name = getRegName(MI->getOperand(2).getReg());
|
||||
// FALL THROUGH.
|
||||
case X86::VPUNPCKHWDYrm:
|
||||
Src1Name = getRegName(MI->getOperand(1).getReg());
|
||||
DestName = getRegName(MI->getOperand(0).getReg());
|
||||
DecodeUNPCKHMask(MVT::v16i16, ShuffleMask);
|
||||
break;
|
||||
case X86::PUNPCKHDQrr:
|
||||
Src2Name = getRegName(MI->getOperand(2).getReg());
|
||||
// FALL THROUGH.
|
||||
case X86::PUNPCKHDQrm:
|
||||
Src1Name = getRegName(MI->getOperand(0).getReg());
|
||||
DecodePUNPCKHMask(4, ShuffleMask);
|
||||
DecodeUNPCKHMask(MVT::v4i32, ShuffleMask);
|
||||
break;
|
||||
case X86::VPUNPCKHDQrr:
|
||||
Src2Name = getRegName(MI->getOperand(2).getReg());
|
||||
// FALL THROUGH.
|
||||
case X86::VPUNPCKHDQrm:
|
||||
Src1Name = getRegName(MI->getOperand(1).getReg());
|
||||
DestName = getRegName(MI->getOperand(0).getReg());
|
||||
DecodeUNPCKHMask(MVT::v4i32, ShuffleMask);
|
||||
break;
|
||||
case X86::VPUNPCKHDQYrr:
|
||||
Src2Name = getRegName(MI->getOperand(2).getReg());
|
||||
// FALL THROUGH.
|
||||
case X86::VPUNPCKHDQYrm:
|
||||
Src1Name = getRegName(MI->getOperand(1).getReg());
|
||||
DestName = getRegName(MI->getOperand(0).getReg());
|
||||
DecodeUNPCKHMask(MVT::v8i32, ShuffleMask);
|
||||
break;
|
||||
case X86::PUNPCKHQDQrr:
|
||||
Src2Name = getRegName(MI->getOperand(2).getReg());
|
||||
// FALL THROUGH.
|
||||
case X86::PUNPCKHQDQrm:
|
||||
Src1Name = getRegName(MI->getOperand(0).getReg());
|
||||
DecodePUNPCKHMask(2, ShuffleMask);
|
||||
DecodeUNPCKHMask(MVT::v2i64, ShuffleMask);
|
||||
break;
|
||||
case X86::VPUNPCKHQDQrr:
|
||||
Src2Name = getRegName(MI->getOperand(2).getReg());
|
||||
// FALL THROUGH.
|
||||
case X86::VPUNPCKHQDQrm:
|
||||
Src1Name = getRegName(MI->getOperand(1).getReg());
|
||||
DestName = getRegName(MI->getOperand(0).getReg());
|
||||
DecodeUNPCKHMask(MVT::v2i64, ShuffleMask);
|
||||
break;
|
||||
case X86::VPUNPCKHQDQYrr:
|
||||
Src2Name = getRegName(MI->getOperand(2).getReg());
|
||||
// FALL THROUGH.
|
||||
case X86::VPUNPCKHQDQYrm:
|
||||
Src1Name = getRegName(MI->getOperand(1).getReg());
|
||||
DestName = getRegName(MI->getOperand(0).getReg());
|
||||
DecodeUNPCKHMask(MVT::v4i64, ShuffleMask);
|
||||
break;
|
||||
|
||||
case X86::PUNPCKLBWrr:
|
||||
@ -135,28 +199,92 @@ void llvm::EmitAnyX86InstComments(const MCInst *MI, raw_ostream &OS,
|
||||
// FALL THROUGH.
|
||||
case X86::PUNPCKLBWrm:
|
||||
Src1Name = getRegName(MI->getOperand(0).getReg());
|
||||
DecodePUNPCKLBWMask(16, ShuffleMask);
|
||||
DecodeUNPCKLMask(MVT::v16i8, ShuffleMask);
|
||||
break;
|
||||
case X86::VPUNPCKLBWrr:
|
||||
Src2Name = getRegName(MI->getOperand(2).getReg());
|
||||
// FALL THROUGH.
|
||||
case X86::VPUNPCKLBWrm:
|
||||
Src1Name = getRegName(MI->getOperand(1).getReg());
|
||||
DestName = getRegName(MI->getOperand(0).getReg());
|
||||
DecodeUNPCKLMask(MVT::v16i8, ShuffleMask);
|
||||
break;
|
||||
case X86::VPUNPCKLBWYrr:
|
||||
Src2Name = getRegName(MI->getOperand(2).getReg());
|
||||
// FALL THROUGH.
|
||||
case X86::VPUNPCKLBWYrm:
|
||||
Src1Name = getRegName(MI->getOperand(1).getReg());
|
||||
DestName = getRegName(MI->getOperand(0).getReg());
|
||||
DecodeUNPCKLMask(MVT::v32i8, ShuffleMask);
|
||||
break;
|
||||
case X86::PUNPCKLWDrr:
|
||||
Src2Name = getRegName(MI->getOperand(2).getReg());
|
||||
// FALL THROUGH.
|
||||
case X86::PUNPCKLWDrm:
|
||||
Src1Name = getRegName(MI->getOperand(0).getReg());
|
||||
DecodePUNPCKLWDMask(8, ShuffleMask);
|
||||
DecodeUNPCKLMask(MVT::v8i16, ShuffleMask);
|
||||
break;
|
||||
case X86::VPUNPCKLWDrr:
|
||||
Src2Name = getRegName(MI->getOperand(2).getReg());
|
||||
// FALL THROUGH.
|
||||
case X86::VPUNPCKLWDrm:
|
||||
Src1Name = getRegName(MI->getOperand(1).getReg());
|
||||
DestName = getRegName(MI->getOperand(0).getReg());
|
||||
DecodeUNPCKLMask(MVT::v8i16, ShuffleMask);
|
||||
break;
|
||||
case X86::VPUNPCKLWDYrr:
|
||||
Src2Name = getRegName(MI->getOperand(2).getReg());
|
||||
// FALL THROUGH.
|
||||
case X86::VPUNPCKLWDYrm:
|
||||
Src1Name = getRegName(MI->getOperand(1).getReg());
|
||||
DestName = getRegName(MI->getOperand(0).getReg());
|
||||
DecodeUNPCKLMask(MVT::v16i16, ShuffleMask);
|
||||
break;
|
||||
case X86::PUNPCKLDQrr:
|
||||
Src2Name = getRegName(MI->getOperand(2).getReg());
|
||||
// FALL THROUGH.
|
||||
case X86::PUNPCKLDQrm:
|
||||
Src1Name = getRegName(MI->getOperand(0).getReg());
|
||||
DecodePUNPCKLDQMask(4, ShuffleMask);
|
||||
DecodeUNPCKLMask(MVT::v4i32, ShuffleMask);
|
||||
break;
|
||||
case X86::VPUNPCKLDQrr:
|
||||
Src2Name = getRegName(MI->getOperand(2).getReg());
|
||||
// FALL THROUGH.
|
||||
case X86::VPUNPCKLDQrm:
|
||||
Src1Name = getRegName(MI->getOperand(1).getReg());
|
||||
DestName = getRegName(MI->getOperand(0).getReg());
|
||||
DecodeUNPCKLMask(MVT::v4i32, ShuffleMask);
|
||||
break;
|
||||
case X86::VPUNPCKLDQYrr:
|
||||
Src2Name = getRegName(MI->getOperand(2).getReg());
|
||||
// FALL THROUGH.
|
||||
case X86::VPUNPCKLDQYrm:
|
||||
Src1Name = getRegName(MI->getOperand(1).getReg());
|
||||
DestName = getRegName(MI->getOperand(0).getReg());
|
||||
DecodeUNPCKLMask(MVT::v8i32, ShuffleMask);
|
||||
break;
|
||||
case X86::PUNPCKLQDQrr:
|
||||
Src2Name = getRegName(MI->getOperand(2).getReg());
|
||||
// FALL THROUGH.
|
||||
case X86::PUNPCKLQDQrm:
|
||||
Src1Name = getRegName(MI->getOperand(0).getReg());
|
||||
DecodePUNPCKLQDQMask(2, ShuffleMask);
|
||||
DecodeUNPCKLMask(MVT::v2i64, ShuffleMask);
|
||||
break;
|
||||
case X86::VPUNPCKLQDQrr:
|
||||
Src2Name = getRegName(MI->getOperand(2).getReg());
|
||||
// FALL THROUGH.
|
||||
case X86::VPUNPCKLQDQrm:
|
||||
Src1Name = getRegName(MI->getOperand(1).getReg());
|
||||
DestName = getRegName(MI->getOperand(0).getReg());
|
||||
DecodeUNPCKLMask(MVT::v2i64, ShuffleMask);
|
||||
break;
|
||||
case X86::VPUNPCKLQDQYrr:
|
||||
Src2Name = getRegName(MI->getOperand(2).getReg());
|
||||
// FALL THROUGH.
|
||||
case X86::VPUNPCKLQDQYrm:
|
||||
Src1Name = getRegName(MI->getOperand(1).getReg());
|
||||
DestName = getRegName(MI->getOperand(0).getReg());
|
||||
DecodeUNPCKLMask(MVT::v4i64, ShuffleMask);
|
||||
break;
|
||||
|
||||
case X86::SHUFPDrri:
|
||||
@ -217,14 +345,14 @@ void llvm::EmitAnyX86InstComments(const MCInst *MI, raw_ostream &OS,
|
||||
Src2Name = getRegName(MI->getOperand(2).getReg());
|
||||
// FALL THROUGH.
|
||||
case X86::UNPCKLPDrm:
|
||||
DecodeUNPCKLPMask(MVT::v2f64, ShuffleMask);
|
||||
DecodeUNPCKLMask(MVT::v2f64, ShuffleMask);
|
||||
Src1Name = getRegName(MI->getOperand(0).getReg());
|
||||
break;
|
||||
case X86::VUNPCKLPDrr:
|
||||
Src2Name = getRegName(MI->getOperand(2).getReg());
|
||||
// FALL THROUGH.
|
||||
case X86::VUNPCKLPDrm:
|
||||
DecodeUNPCKLPMask(MVT::v2f64, ShuffleMask);
|
||||
DecodeUNPCKLMask(MVT::v2f64, ShuffleMask);
|
||||
Src1Name = getRegName(MI->getOperand(1).getReg());
|
||||
DestName = getRegName(MI->getOperand(0).getReg());
|
||||
break;
|
||||
@ -232,7 +360,7 @@ void llvm::EmitAnyX86InstComments(const MCInst *MI, raw_ostream &OS,
|
||||
Src2Name = getRegName(MI->getOperand(2).getReg());
|
||||
// FALL THROUGH.
|
||||
case X86::VUNPCKLPDYrm:
|
||||
DecodeUNPCKLPMask(MVT::v4f64, ShuffleMask);
|
||||
DecodeUNPCKLMask(MVT::v4f64, ShuffleMask);
|
||||
Src1Name = getRegName(MI->getOperand(1).getReg());
|
||||
DestName = getRegName(MI->getOperand(0).getReg());
|
||||
break;
|
||||
@ -240,14 +368,14 @@ void llvm::EmitAnyX86InstComments(const MCInst *MI, raw_ostream &OS,
|
||||
Src2Name = getRegName(MI->getOperand(2).getReg());
|
||||
// FALL THROUGH.
|
||||
case X86::UNPCKLPSrm:
|
||||
DecodeUNPCKLPMask(MVT::v4f32, ShuffleMask);
|
||||
DecodeUNPCKLMask(MVT::v4f32, ShuffleMask);
|
||||
Src1Name = getRegName(MI->getOperand(0).getReg());
|
||||
break;
|
||||
case X86::VUNPCKLPSrr:
|
||||
Src2Name = getRegName(MI->getOperand(2).getReg());
|
||||
// FALL THROUGH.
|
||||
case X86::VUNPCKLPSrm:
|
||||
DecodeUNPCKLPMask(MVT::v4f32, ShuffleMask);
|
||||
DecodeUNPCKLMask(MVT::v4f32, ShuffleMask);
|
||||
Src1Name = getRegName(MI->getOperand(1).getReg());
|
||||
DestName = getRegName(MI->getOperand(0).getReg());
|
||||
break;
|
||||
@ -255,7 +383,7 @@ void llvm::EmitAnyX86InstComments(const MCInst *MI, raw_ostream &OS,
|
||||
Src2Name = getRegName(MI->getOperand(2).getReg());
|
||||
// FALL THROUGH.
|
||||
case X86::VUNPCKLPSYrm:
|
||||
DecodeUNPCKLPMask(MVT::v8f32, ShuffleMask);
|
||||
DecodeUNPCKLMask(MVT::v8f32, ShuffleMask);
|
||||
Src1Name = getRegName(MI->getOperand(1).getReg());
|
||||
DestName = getRegName(MI->getOperand(0).getReg());
|
||||
break;
|
||||
@ -263,14 +391,14 @@ void llvm::EmitAnyX86InstComments(const MCInst *MI, raw_ostream &OS,
|
||||
Src2Name = getRegName(MI->getOperand(2).getReg());
|
||||
// FALL THROUGH.
|
||||
case X86::UNPCKHPDrm:
|
||||
DecodeUNPCKHPMask(MVT::v2f64, ShuffleMask);
|
||||
DecodeUNPCKHMask(MVT::v2f64, ShuffleMask);
|
||||
Src1Name = getRegName(MI->getOperand(0).getReg());
|
||||
break;
|
||||
case X86::VUNPCKHPDrr:
|
||||
Src2Name = getRegName(MI->getOperand(2).getReg());
|
||||
// FALL THROUGH.
|
||||
case X86::VUNPCKHPDrm:
|
||||
DecodeUNPCKHPMask(MVT::v2f64, ShuffleMask);
|
||||
DecodeUNPCKHMask(MVT::v2f64, ShuffleMask);
|
||||
Src1Name = getRegName(MI->getOperand(1).getReg());
|
||||
DestName = getRegName(MI->getOperand(0).getReg());
|
||||
break;
|
||||
@ -278,7 +406,7 @@ void llvm::EmitAnyX86InstComments(const MCInst *MI, raw_ostream &OS,
|
||||
Src2Name = getRegName(MI->getOperand(2).getReg());
|
||||
// FALL THROUGH.
|
||||
case X86::VUNPCKHPDYrm:
|
||||
DecodeUNPCKLPMask(MVT::v4f64, ShuffleMask);
|
||||
DecodeUNPCKHMask(MVT::v4f64, ShuffleMask);
|
||||
Src1Name = getRegName(MI->getOperand(1).getReg());
|
||||
DestName = getRegName(MI->getOperand(0).getReg());
|
||||
break;
|
||||
@ -286,14 +414,14 @@ void llvm::EmitAnyX86InstComments(const MCInst *MI, raw_ostream &OS,
|
||||
Src2Name = getRegName(MI->getOperand(2).getReg());
|
||||
// FALL THROUGH.
|
||||
case X86::UNPCKHPSrm:
|
||||
DecodeUNPCKHPMask(MVT::v4f32, ShuffleMask);
|
||||
DecodeUNPCKHMask(MVT::v4f32, ShuffleMask);
|
||||
Src1Name = getRegName(MI->getOperand(0).getReg());
|
||||
break;
|
||||
case X86::VUNPCKHPSrr:
|
||||
Src2Name = getRegName(MI->getOperand(2).getReg());
|
||||
// FALL THROUGH.
|
||||
case X86::VUNPCKHPSrm:
|
||||
DecodeUNPCKHPMask(MVT::v4f32, ShuffleMask);
|
||||
DecodeUNPCKHMask(MVT::v4f32, ShuffleMask);
|
||||
Src1Name = getRegName(MI->getOperand(1).getReg());
|
||||
DestName = getRegName(MI->getOperand(0).getReg());
|
||||
break;
|
||||
@ -301,7 +429,7 @@ void llvm::EmitAnyX86InstComments(const MCInst *MI, raw_ostream &OS,
|
||||
Src2Name = getRegName(MI->getOperand(2).getReg());
|
||||
// FALL THROUGH.
|
||||
case X86::VUNPCKHPSYrm:
|
||||
DecodeUNPCKHPMask(MVT::v8f32, ShuffleMask);
|
||||
DecodeUNPCKHMask(MVT::v8f32, ShuffleMask);
|
||||
Src1Name = getRegName(MI->getOperand(1).getReg());
|
||||
DestName = getRegName(MI->getOperand(0).getReg());
|
||||
break;
|
||||
|
@ -95,39 +95,6 @@ void DecodePSHUFLWMask(unsigned Imm,
|
||||
ShuffleMask.push_back(7);
|
||||
}
|
||||
|
||||
void DecodePUNPCKLBWMask(unsigned NElts,
|
||||
SmallVectorImpl<unsigned> &ShuffleMask) {
|
||||
DecodeUNPCKLPMask(MVT::getVectorVT(MVT::i8, NElts), ShuffleMask);
|
||||
}
|
||||
|
||||
void DecodePUNPCKLWDMask(unsigned NElts,
|
||||
SmallVectorImpl<unsigned> &ShuffleMask) {
|
||||
DecodeUNPCKLPMask(MVT::getVectorVT(MVT::i16, NElts), ShuffleMask);
|
||||
}
|
||||
|
||||
void DecodePUNPCKLDQMask(unsigned NElts,
|
||||
SmallVectorImpl<unsigned> &ShuffleMask) {
|
||||
DecodeUNPCKLPMask(MVT::getVectorVT(MVT::i32, NElts), ShuffleMask);
|
||||
}
|
||||
|
||||
void DecodePUNPCKLQDQMask(unsigned NElts,
|
||||
SmallVectorImpl<unsigned> &ShuffleMask) {
|
||||
DecodeUNPCKLPMask(MVT::getVectorVT(MVT::i64, NElts), ShuffleMask);
|
||||
}
|
||||
|
||||
void DecodePUNPCKLMask(EVT VT,
|
||||
SmallVectorImpl<unsigned> &ShuffleMask) {
|
||||
DecodeUNPCKLPMask(VT, ShuffleMask);
|
||||
}
|
||||
|
||||
void DecodePUNPCKHMask(unsigned NElts,
|
||||
SmallVectorImpl<unsigned> &ShuffleMask) {
|
||||
for (unsigned i = 0; i != NElts/2; ++i) {
|
||||
ShuffleMask.push_back(i+NElts/2);
|
||||
ShuffleMask.push_back(i+NElts+NElts/2);
|
||||
}
|
||||
}
|
||||
|
||||
void DecodeSHUFPMask(EVT VT, unsigned Imm,
|
||||
SmallVectorImpl<unsigned> &ShuffleMask) {
|
||||
unsigned NumElts = VT.getVectorNumElements();
|
||||
@ -152,7 +119,7 @@ void DecodeSHUFPMask(EVT VT, unsigned Imm,
|
||||
}
|
||||
}
|
||||
|
||||
void DecodeUNPCKHPMask(EVT VT, SmallVectorImpl<unsigned> &ShuffleMask) {
|
||||
void DecodeUNPCKHMask(EVT VT, SmallVectorImpl<unsigned> &ShuffleMask) {
|
||||
unsigned NumElts = VT.getVectorNumElements();
|
||||
|
||||
// Handle 128 and 256-bit vector lengths. AVX defines UNPCK* to operate
|
||||
@ -171,10 +138,10 @@ void DecodeUNPCKHPMask(EVT VT, SmallVectorImpl<unsigned> &ShuffleMask) {
|
||||
}
|
||||
}
|
||||
|
||||
/// DecodeUNPCKLPMask - This decodes the shuffle masks for unpcklps/unpcklpd
|
||||
/// DecodeUNPCKLMask - This decodes the shuffle masks for unpcklps/unpcklpd
|
||||
/// etc. VT indicates the type of the vector allowing it to handle different
|
||||
/// datatypes and vector widths.
|
||||
void DecodeUNPCKLPMask(EVT VT, SmallVectorImpl<unsigned> &ShuffleMask) {
|
||||
void DecodeUNPCKLMask(EVT VT, SmallVectorImpl<unsigned> &ShuffleMask) {
|
||||
unsigned NumElts = VT.getVectorNumElements();
|
||||
|
||||
// Handle 128 and 256-bit vector lengths. AVX defines UNPCK* to operate
|
||||
|
@ -46,36 +46,18 @@ void DecodePSHUFHWMask(unsigned Imm,
|
||||
void DecodePSHUFLWMask(unsigned Imm,
|
||||
SmallVectorImpl<unsigned> &ShuffleMask);
|
||||
|
||||
void DecodePUNPCKLBWMask(unsigned NElts,
|
||||
SmallVectorImpl<unsigned> &ShuffleMask);
|
||||
|
||||
void DecodePUNPCKLWDMask(unsigned NElts,
|
||||
SmallVectorImpl<unsigned> &ShuffleMask);
|
||||
|
||||
void DecodePUNPCKLDQMask(unsigned NElts,
|
||||
SmallVectorImpl<unsigned> &ShuffleMask);
|
||||
|
||||
void DecodePUNPCKLQDQMask(unsigned NElts,
|
||||
SmallVectorImpl<unsigned> &ShuffleMask);
|
||||
|
||||
void DecodePUNPCKLMask(EVT VT,
|
||||
SmallVectorImpl<unsigned> &ShuffleMask);
|
||||
|
||||
void DecodePUNPCKHMask(unsigned NElts,
|
||||
SmallVectorImpl<unsigned> &ShuffleMask);
|
||||
|
||||
void DecodeSHUFPMask(EVT VT, unsigned Imm,
|
||||
SmallVectorImpl<unsigned> &ShuffleMask);
|
||||
|
||||
/// DecodeUNPCKHPMask - This decodes the shuffle masks for unpckhps/unpckhpd
|
||||
/// DecodeUNPCKHMask - This decodes the shuffle masks for unpckhps/unpckhpd
|
||||
/// etc. VT indicates the type of the vector allowing it to handle different
|
||||
/// datatypes and vector widths.
|
||||
void DecodeUNPCKHPMask(EVT VT, SmallVectorImpl<unsigned> &ShuffleMask);
|
||||
void DecodeUNPCKHMask(EVT VT, SmallVectorImpl<unsigned> &ShuffleMask);
|
||||
|
||||
/// DecodeUNPCKLPMask - This decodes the shuffle masks for unpcklps/unpcklpd
|
||||
/// DecodeUNPCKLMask - This decodes the shuffle masks for unpcklps/unpcklpd
|
||||
/// etc. VT indicates the type of the vector allowing it to handle different
|
||||
/// datatypes and vector widths.
|
||||
void DecodeUNPCKLPMask(EVT VT, SmallVectorImpl<unsigned> &ShuffleMask);
|
||||
void DecodeUNPCKLMask(EVT VT, SmallVectorImpl<unsigned> &ShuffleMask);
|
||||
|
||||
|
||||
// DecodeVPERMILPMask - Decodes VPERMILPS/ VPERMILPD permutes for any 128-bit
|
||||
|
@ -4461,16 +4461,12 @@ static SDValue getShuffleScalarElt(SDNode *N, int Index, SelectionDAG &DAG,
|
||||
ShuffleMask);
|
||||
break;
|
||||
case X86ISD::PUNPCKH:
|
||||
DecodePUNPCKHMask(NumElems, ShuffleMask);
|
||||
break;
|
||||
case X86ISD::UNPCKHP:
|
||||
DecodeUNPCKHPMask(VT, ShuffleMask);
|
||||
DecodeUNPCKHMask(VT, ShuffleMask);
|
||||
break;
|
||||
case X86ISD::PUNPCKL:
|
||||
DecodePUNPCKLMask(VT, ShuffleMask);
|
||||
break;
|
||||
case X86ISD::UNPCKLP:
|
||||
DecodeUNPCKLPMask(VT, ShuffleMask);
|
||||
DecodeUNPCKLMask(VT, ShuffleMask);
|
||||
break;
|
||||
case X86ISD::MOVHLPS:
|
||||
DecodeMOVHLPSMask(NumElems, ShuffleMask);
|
||||
|
Loading…
Reference in New Issue
Block a user