[llvm] r212633 - Make AArch64FastISel::EmitIntExt explicitly check its source and destination types
Louis Gerbarg
lgg at apple.com
Wed Jul 9 10:54:32 PDT 2014
Author: louis
Date: Wed Jul 9 12:54:32 2014
New Revision: 212633
URL: http://llvm.org/viewvc/llvm-project?rev=212633&view=rev
Log:
Make AArch64FastISel::EmitIntExt explicitly check its source and destination types
This is a follow up to r212492. There should be no functional difference, but
this patch makes it clear that SrcVT must be an i1/i8/16/i32 and DestVT must be
an i8/i16/i32/i64.
rdar://17516686
Modified:
llvm/trunk/lib/Target/AArch64/AArch64FastISel.cpp
Modified: llvm/trunk/lib/Target/AArch64/AArch64FastISel.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AArch64FastISel.cpp?rev=212633&r1=212632&r2=212633&view=diff
==============================================================================
--- llvm/trunk/lib/Target/AArch64/AArch64FastISel.cpp (original)
+++ llvm/trunk/lib/Target/AArch64/AArch64FastISel.cpp Wed Jul 9 12:54:32 2014
@@ -1751,9 +1751,14 @@ unsigned AArch64FastISel::EmitIntExt(MVT
bool isZExt) {
assert(DestVT != MVT::i1 && "ZeroExt/SignExt an i1?");
- // FastISel does not have plumbing to deal with an MVT::i128, if we see one
- // so rather than return one we need to bail out to SelectionDAG.
- if (DestVT == MVT::i128)
+ // 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) && (DestVT != MVT::i64)) ||
+ ((SrcVT != MVT::i1) && (SrcVT != MVT::i8) &&
+ (SrcVT != MVT::i16) && (SrcVT != MVT::i32)))
return 0;
unsigned Opc;
More information about the llvm-commits
mailing list