mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 11:13:28 +01:00
[GlobalISel] Disable GISel for big endian.
This is due to PR26161 needing to be resolved before we can fix big endian bugs like PR35359. The work to split aggregates into smaller LLTs instead of using one large scalar will take some time, so in the mean time we'll fall back to SDAG. Some ARM BE tests xfailed for now as a result. Differential Revision: https://reviews.llvm.org/D40789 llvm-svn: 320388
This commit is contained in:
parent
4a6ce24da7
commit
82b85ea49c
@ -1253,6 +1253,15 @@ bool IRTranslator::runOnMachineFunction(MachineFunction &CurMF) {
|
||||
|
||||
assert(PendingPHIs.empty() && "stale PHIs");
|
||||
|
||||
if (!DL->isLittleEndian()) {
|
||||
// Currently we don't properly handle big endian code.
|
||||
OptimizationRemarkMissed R("gisel-irtranslator", "GISelFailure",
|
||||
MF->getFunction()->getSubprogram(),
|
||||
&MF->getFunction()->getEntryBlock());
|
||||
R << "unable to translate in big endian mode";
|
||||
reportTranslationError(*MF, *TPC, *ORE, R);
|
||||
}
|
||||
|
||||
// Release the per-function state when we return, whether we succeeded or not.
|
||||
auto FinalizeOnReturn = make_scope_exit([this]() { finalizeFunction(); });
|
||||
|
||||
|
@ -3,6 +3,7 @@
|
||||
; RUN: llc -O0 -global-isel -global-isel-abort=2 -pass-remarks-missed='gisel*' -verify-machineinstrs %s -o %t.out 2> %t.err
|
||||
; RUN: FileCheck %s --check-prefix=FALLBACK-WITH-REPORT-OUT < %t.out
|
||||
; RUN: FileCheck %s --check-prefix=FALLBACK-WITH-REPORT-ERR < %t.err
|
||||
; RUN: not llc -global-isel -mtriple aarch64_be %s -o - 2>&1 | FileCheck %s --check-prefix=BIG-ENDIAN
|
||||
; This file checks that the fallback path to selection dag works.
|
||||
; The test is fragile in the sense that it must be updated to expose
|
||||
; something that fails with global-isel.
|
||||
@ -12,6 +13,8 @@
|
||||
target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
|
||||
target triple = "aarch64--"
|
||||
|
||||
; BIG-ENDIAN: unable to translate in big endian mode
|
||||
|
||||
; We use __fixunstfti as the common denominator for __fixunstfti on Linux and
|
||||
; ___fixunstfti on iOS
|
||||
; ERROR: unable to lower arguments: i128 (i128)* (in function: ABIi128)
|
||||
|
@ -1,5 +1,6 @@
|
||||
; RUN: llc -mtriple arm-unknown -mattr=+vfp2,+v4t -global-isel -stop-after=irtranslator -verify-machineinstrs %s -o - | FileCheck %s -check-prefix=CHECK -check-prefix=LITTLE
|
||||
; RUN: llc -mtriple armeb-unknown -mattr=+vfp2,+v4t -global-isel -stop-after=irtranslator -verify-machineinstrs %s -o - | FileCheck %s -check-prefix=CHECK -check-prefix=BIG
|
||||
; RUN: llc -mtriple armeb-unknown -mattr=+vfp2,+v4t -global-isel -global-isel-abort=0 -stop-after=irtranslator -verify-machineinstrs %s -o - | FileCheck %s -check-prefix=CHECK -check-prefix=BIG
|
||||
; XFAIL: armeb
|
||||
|
||||
define void @test_void_return() {
|
||||
; CHECK-LABEL: name: test_void_return
|
||||
|
@ -1,5 +1,6 @@
|
||||
; RUN: llc -mtriple arm-unknown -mattr=+vfp2,+v4t -global-isel -stop-after=irtranslator -verify-machineinstrs %s -o - | FileCheck %s -check-prefix=CHECK -check-prefix=LITTLE
|
||||
; RUN: llc -mtriple armeb-unknown -mattr=+vfp2,+v4t -global-isel -stop-after=irtranslator -verify-machineinstrs %s -o - | FileCheck %s -check-prefix=CHECK -check-prefix=BIG
|
||||
; RUN: llc -mtriple armeb-unknown -mattr=+vfp2,+v4t -global-isel -global-isel-abort=0 -stop-after=irtranslator -verify-machineinstrs %s -o - | FileCheck %s -check-prefix=CHECK -check-prefix=BIG
|
||||
; XFAIL: armeb
|
||||
|
||||
declare arm_aapcscc i32* @simple_reg_params_target(i32, i32*)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user