OSDN Git Service

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)
commite7f8191b1863defb50c28a2b41a9d368d9ad6384
tree1bbff1e4e3617b6b0d2152e2ca52c7fe1dc8db97
parent80c193dec7cca361a473c6aa3484321d69cc90d3
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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@212492 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/AArch64/AArch64FastISel.cpp
test/CodeGen/AArch64/i128-fast-isel-fallback.ll [new file with mode: 0644]