Commit rL347861 introduced an unintentional change in the behaviour when compiling for AArch64 at -O0 with -global-isel=0. Previously, explicitly disabling GlobalISel resulted in using FastISel but an updated condition in the commit changed it to using SelectionDAG. The patch fixes this condition and slightly better organizes the code that chooses the instruction selector. Fixes PR40131. Differential Revision: https://reviews.llvm.org/D56266 llvm-svn: 350626
36 lines
1.3 KiB
LLVM
36 lines
1.3 KiB
LLVM
; REQUIRES: asserts
|
|
|
|
; RUN: llc -mtriple=aarch64-- -debug-pass=Structure %s -o /dev/null 2>&1 \
|
|
; RUN: -verify-machineinstrs=0 -O0 -global-isel=false -debug-only=isel \
|
|
; RUN: | FileCheck %s --check-prefixes=DISABLED,FASTISEL
|
|
|
|
; RUN: llc -mtriple=aarch64-- -debug-pass=Structure %s -o /dev/null 2>&1 \
|
|
; RUN: -verify-machineinstrs=0 -O1 -global-isel=false -debug-only=isel \
|
|
; RUN: | FileCheck %s --check-prefixes=DISABLED,NOFASTISEL
|
|
|
|
; RUN: llc -mtriple=aarch64-- -debug-pass=Structure %s -o /dev/null 2>&1 \
|
|
; RUN: -verify-machineinstrs=0 -O0 -fast-isel=false -global-isel=false \
|
|
; RUN: -debug-only=isel \
|
|
; RUN: | FileCheck %s --check-prefixes=DISABLED,NOFASTISEL
|
|
|
|
; RUN: llc -mtriple=aarch64-- -debug-pass=Structure %s -o /dev/null 2>&1 \
|
|
; RUN: -verify-machineinstrs=0 -O1 -fast-isel=false -global-isel=false \
|
|
; RUN: -debug-only=isel \
|
|
; RUN: | FileCheck %s --check-prefixes=DISABLED,NOFASTISEL
|
|
|
|
; Check that the right instruction selector is chosen when using
|
|
; -global-isel=false. FastISel should be used at -O0 (unless -fast-isel=false is
|
|
; also present) and SelectionDAG otherwise.
|
|
|
|
; DISABLED-NOT: IRTranslator
|
|
|
|
; DISABLED: AArch64 Instruction Selection
|
|
; DISABLED: Expand ISel Pseudo-instructions
|
|
|
|
; FASTISEL: Enabling fast-isel
|
|
; NOFASTISEL-NOT: Enabling fast-isel
|
|
|
|
define void @empty() {
|
|
ret void
|
|
}
|