2016-04-12 23:50:19 +08:00
|
|
|
; REQUIRES: asserts
|
2017-05-26 05:26:32 +08:00
|
|
|
; RUN: llc < %s -mtriple=arm64-linux-gnu -mcpu=cortex-a57 -enable-misched=0 -debug-only=machine-scheduler -o - 2>&1 > /dev/null | FileCheck %s
|
2016-04-12 23:50:19 +08:00
|
|
|
|
|
|
|
|
|
|
|
@G1 = common global [100 x i32] zeroinitializer, align 4
|
|
|
|
@G2 = common global [100 x i32] zeroinitializer, align 4
|
|
|
|
|
|
|
|
; Check that no scheduling dependencies are created between the paired loads and the store during post-RA MI scheduling.
|
|
|
|
;
|
2016-08-20 06:31:45 +08:00
|
|
|
; CHECK-LABEL: # Machine code for function foo:
|
2017-12-13 01:53:59 +08:00
|
|
|
; CHECK: SU(2): renamable %w{{[0-9]+}}, renamable %w{{[0-9]+}} = LDPWi
|
2016-04-12 23:50:19 +08:00
|
|
|
; CHECK: Successors:
|
|
|
|
; CHECK-NOT: ch SU(4)
|
|
|
|
; CHECK: SU(3)
|
2017-12-13 01:53:59 +08:00
|
|
|
; CHECK: SU(4): STRWui %wzr, renamable %x{{[0-9]+}}
|
2016-04-12 23:50:19 +08:00
|
|
|
define i32 @foo() {
|
|
|
|
entry:
|
|
|
|
%0 = load i32, i32* getelementptr inbounds ([100 x i32], [100 x i32]* @G2, i64 0, i64 0), align 4
|
|
|
|
%1 = load i32, i32* getelementptr inbounds ([100 x i32], [100 x i32]* @G2, i64 0, i64 1), align 4
|
|
|
|
store i32 0, i32* getelementptr inbounds ([100 x i32], [100 x i32]* @G1, i64 0, i64 0), align 4
|
|
|
|
%add = add nsw i32 %1, %0
|
|
|
|
ret i32 %add
|
|
|
|
}
|