The Pseudo{CALL, LA*}_LARGE instruction patterns specified in psABI
v2.30 cannot be reordered. This patch sets scheduling boundaries for
these instructions to prevent reordering. The Pseudo{CALL, LA*}_LARGE
instruction is moved back to Pre-RA expansion, which will help with
subsequent address calculation optimizations.
17 lines
562 B
LLVM
17 lines
562 B
LLVM
; RUN: llc --mtriple=loongarch64 -mattr=+d --stop-before loongarch-prera-expand-pseudo \
|
|
; RUN: --verify-machineinstrs < %s | FileCheck %s --check-prefix=NOEXPAND
|
|
; RUN: llc --mtriple=loongarch64 --stop-after loongarch-prera-expand-pseudo \
|
|
; RUN: --verify-machineinstrs < %s | FileCheck %s --check-prefix=EXPAND
|
|
|
|
declare void @callee()
|
|
|
|
define void @caller() nounwind {
|
|
; NOEXPAND-LABEL: name: caller
|
|
; NOEXPAND: PseudoCALL target-flags{{.*}}callee
|
|
;
|
|
; EXPAND-LABEL: name: caller
|
|
; EXPAND: BL target-flags{{.*}}callee
|
|
call void @callee()
|
|
ret void
|
|
}
|