Allow AArch64FastISel to degrade graceully in the presence of an MVT::i128
authorLouis Gerbarg <lgg@apple.com>
Mon, 7 Jul 2014 21:37:51 +0000 (21:37 +0000)
committerLouis Gerbarg <lgg@apple.com>
Mon, 7 Jul 2014 21:37:51 +0000 (21:37 +0000)
commit4c5b4054b215cd66aaeca4485a3c24c4496b8a0e
tree3f93f82cf5205c717eaa566ae90038cb1c15134d
parent8bb347350a0b87062b5a88f5f97dd285734a942a
Allow AArch64FastISel to degrade graceully in the presence of an MVT::i128

Currently AArch64FastISel crashes if it tries to extend an integer into an
MVT::i128. This can happen by creating 128 bit integers like so:

  typedef unsigned int uint128_t __attribute__((mode(TI)));
  typedef int sint128_t __attribute__((mode(TI)));

This patch makes EmitIntExt check for their presence and then falls back to
SelectionDAG.

Tests included.

rdar://17516686

llvm-svn: 212492
llvm/lib/Target/AArch64/AArch64FastISel.cpp
llvm/test/CodeGen/AArch64/i128-fast-isel-fallback.ll [new file with mode: 0644]