forked from OSchip/llvm-project
[mips][FastISel] Specify which types we handle for integer extension.
Summary: Perform integer extension only when the destination type is one of i8, i16 & i32 and when the source type is i1, i8 or i16. For other combinations we fall back to SelectionDAG. This fixes the test MultiSource/Benchmarks/7zip that was failing in our out-of-tree MIPS buildbots. Reviewers: dsanders Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D9243 llvm-svn: 235718
This commit is contained in:
parent
5e90906c0d
commit
1202f36b10
|
@ -1394,6 +1394,13 @@ bool MipsFastISel::emitIntZExt(MVT SrcVT, unsigned SrcReg, MVT DestVT,
|
|||
|
||||
bool MipsFastISel::emitIntExt(MVT SrcVT, unsigned SrcReg, MVT DestVT,
|
||||
unsigned DestReg, bool IsZExt) {
|
||||
// FastISel does not have plumbing to deal with extensions where the SrcVT or
|
||||
// DestVT are odd things, so test to make sure that they are both types we can
|
||||
// handle (i1/i8/i16/i32 for SrcVT and i8/i16/i32/i64 for DestVT), otherwise
|
||||
// bail out to SelectionDAG.
|
||||
if (((DestVT != MVT::i8) && (DestVT != MVT::i16) && (DestVT != MVT::i32)) ||
|
||||
((SrcVT != MVT::i1) && (SrcVT != MVT::i8) && (SrcVT != MVT::i16)))
|
||||
return false;
|
||||
if (IsZExt)
|
||||
return emitIntZExt(SrcVT, SrcReg, DestVT, DestReg);
|
||||
return emitIntSExt(SrcVT, SrcReg, DestVT, DestReg);
|
||||
|
|
Loading…
Reference in New Issue