In review of bbde6b, I had originally proposed that we support the legacy text format. As review evolved, it bacame clear this had been a bad idea (too much complexity), but in order to let that patch finally move forward, I approved the change with the variant. This change undoes the variant, and updates all the tests to just use the array form.
221 lines
7.9 KiB
YAML
221 lines
7.9 KiB
YAML
# NOTE: This test verifies disable/enable instruction hoisting to hot blocks
|
|
# based on non-profile data
|
|
# RUN: llc -run-pass early-machinelicm -mtriple=powerpc64le-unknown-linux-gnu \
|
|
# RUN: -verify-machineinstrs -disable-hoisting-to-hotter-blocks=all \
|
|
# RUN: -block-freq-ratio-threshold=100 %s -o - | FileCheck %s \
|
|
# RUN: --check-prefix=CHECK-NO-HOIST
|
|
# RUN: llc -run-pass early-machinelicm -mtriple=powerpc64le-unknown-linux-gnu \
|
|
# RUN: -verify-machineinstrs -disable-hoisting-to-hotter-blocks=all \
|
|
# RUN: -block-freq-ratio-threshold=100000000 %s -o - | FileCheck %s \
|
|
# RUN: --check-prefix=CHECK-HOIST
|
|
# RUN: llc -run-pass early-machinelicm -mtriple=powerpc64le-unknown-linux-gnu \
|
|
# RUN: -verify-machineinstrs -disable-hoisting-to-hotter-blocks=pgo \
|
|
# RUN: -block-freq-ratio-threshold=100 %s -o - | FileCheck %s \
|
|
# RUN: --check-prefix=CHECK-HOIST
|
|
# RUN: llc -run-pass early-machinelicm -mtriple=powerpc64le-unknown-linux-gnu \
|
|
# RUN: -verify-machineinstrs -disable-hoisting-to-hotter-blocks=none \
|
|
# RUN: -block-freq-ratio-threshold=100 %s -o - | FileCheck %s \
|
|
# RUN: --check-prefix=CHECK-HOIST
|
|
# Tests for new pass manager
|
|
# RUN: llc -passes early-machinelicm -mtriple=powerpc64le-unknown-linux-gnu \
|
|
# RUN: -disable-hoisting-to-hotter-blocks=all \
|
|
# RUN: -block-freq-ratio-threshold=100 %s -o - | FileCheck %s \
|
|
# RUN: --check-prefix=CHECK-NO-HOIST
|
|
# RUN: llc -passes early-machinelicm -mtriple=powerpc64le-unknown-linux-gnu \
|
|
# RUN: -disable-hoisting-to-hotter-blocks=all \
|
|
# RUN: -block-freq-ratio-threshold=100000000 %s -o - | FileCheck %s \
|
|
# RUN: --check-prefix=CHECK-HOIST
|
|
# RUN: llc -passes early-machinelicm -mtriple=powerpc64le-unknown-linux-gnu \
|
|
# RUN: -disable-hoisting-to-hotter-blocks=pgo \
|
|
# RUN: -block-freq-ratio-threshold=100 %s -o - | FileCheck %s \
|
|
# RUN: --check-prefix=CHECK-HOIST
|
|
# RUN: llc -passes early-machinelicm -mtriple=powerpc64le-unknown-linux-gnu \
|
|
# RUN: -disable-hoisting-to-hotter-blocks=none \
|
|
# RUN: -block-freq-ratio-threshold=100 %s -o - | FileCheck %s \
|
|
# RUN: --check-prefix=CHECK-HOIST
|
|
--- |
|
|
target datalayout = "e-m:e-i64:64-n32:64"
|
|
|
|
define dso_local void @test(ptr nocapture %fp, i32 signext %Arg, i32 signext %Len, ptr nocapture %Ptr) {
|
|
entry:
|
|
tail call void asm sideeffect "#NOTHING", "~{r2}"()
|
|
%cmp6 = icmp sgt i32 %Len, 0
|
|
br i1 %cmp6, label %for.body.lr.ph, label %for.cond.cleanup
|
|
|
|
for.body.lr.ph: ; preds = %entry
|
|
%cmp1 = icmp sgt i32 %Arg, 10
|
|
br label %for.body
|
|
|
|
for.cond.cleanup: ; preds = %for.inc, %entry
|
|
ret void
|
|
|
|
for.body: ; preds = %for.inc, %for.body.lr.ph
|
|
%i.07 = phi i32 [ 0, %for.body.lr.ph ], [ %inc, %for.inc ]
|
|
%0 = load i32, ptr %Ptr, align 4
|
|
%1 = add i32 %i.07, %0
|
|
store i32 %1, ptr %Ptr, align 4
|
|
br i1 %cmp1, label %if.then, label %for.inc
|
|
|
|
if.then: ; preds = %for.body
|
|
tail call void asm sideeffect "#NOTHING", "~{r2}"()
|
|
tail call void %fp(i32 signext %Arg)
|
|
br label %for.inc
|
|
|
|
for.inc: ; preds = %if.then, %for.body
|
|
%inc = add nuw nsw i32 %i.07, 1
|
|
%exitcond = icmp eq i32 %Len, %inc
|
|
br i1 %exitcond, label %for.cond.cleanup, label %for.body
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @llvm.stackprotector(ptr, ptr) #0
|
|
|
|
attributes #0 = { nounwind }
|
|
|
|
...
|
|
---
|
|
name: test
|
|
alignment: 4
|
|
exposesReturnsTwice: false
|
|
legalized: false
|
|
regBankSelected: false
|
|
selected: false
|
|
failedISel: false
|
|
tracksRegLiveness: true
|
|
hasWinCFI: false
|
|
registers:
|
|
- { id: 0, class: crbitrc, preferred-register: '' }
|
|
- { id: 1, class: gprc_and_gprc_nor0, preferred-register: '' }
|
|
- { id: 2, class: gprc, preferred-register: '' }
|
|
- { id: 3, class: g8rc, preferred-register: '' }
|
|
- { id: 4, class: g8rc, preferred-register: '' }
|
|
- { id: 5, class: g8rc, preferred-register: '' }
|
|
- { id: 6, class: g8rc_and_g8rc_nox0, preferred-register: '' }
|
|
- { id: 7, class: gprc, preferred-register: '' }
|
|
- { id: 8, class: gprc, preferred-register: '' }
|
|
- { id: 9, class: crrc, preferred-register: '' }
|
|
- { id: 10, class: gprc, preferred-register: '' }
|
|
- { id: 11, class: crrc, preferred-register: '' }
|
|
- { id: 12, class: gprc, preferred-register: '' }
|
|
- { id: 13, class: gprc, preferred-register: '' }
|
|
- { id: 14, class: g8rc, preferred-register: '' }
|
|
- { id: 15, class: g8rc, preferred-register: '' }
|
|
- { id: 16, class: crrc, preferred-register: '' }
|
|
liveins:
|
|
- { reg: '$x3', virtual-reg: '%3' }
|
|
- { reg: '$x4', virtual-reg: '%4' }
|
|
- { reg: '$x5', virtual-reg: '%5' }
|
|
- { reg: '$x6', virtual-reg: '%6' }
|
|
frameInfo:
|
|
isFrameAddressTaken: false
|
|
isReturnAddressTaken: false
|
|
hasStackMap: false
|
|
hasPatchPoint: false
|
|
stackSize: 0
|
|
offsetAdjustment: 0
|
|
maxAlignment: 0
|
|
adjustsStack: false
|
|
hasCalls: true
|
|
stackProtector: ''
|
|
maxCallFrameSize: 4294967295
|
|
cvBytesOfCalleeSavedRegisters: 0
|
|
hasOpaqueSPAdjustment: false
|
|
hasVAStart: false
|
|
hasMustTailInVarArgFunc: false
|
|
localFrameSize: 0
|
|
savePoint: []
|
|
restorePoint: []
|
|
fixedStack: []
|
|
stack: []
|
|
constants: []
|
|
machineFunctionInfo: {}
|
|
body: |
|
|
bb.0.entry:
|
|
successors: %bb.1(0x7ecade30), %bb.2(0x013521d0)
|
|
liveins: $x3, $x4, $x5, $x6
|
|
|
|
%6:g8rc_and_g8rc_nox0 = COPY $x6
|
|
%5:g8rc = COPY $x5
|
|
%4:g8rc = COPY $x4
|
|
%3:g8rc = COPY $x3
|
|
%7:gprc = COPY %4.sub_32
|
|
%8:gprc = COPY %5.sub_32
|
|
INLINEASM &"#NOTHING", 1, 12, implicit-def early-clobber $r2
|
|
%9:crrc = CMPWI %8, 1
|
|
BCC 12, killed %9, %bb.2
|
|
B %bb.1
|
|
|
|
bb.1.for.body.lr.ph:
|
|
successors: %bb.3(0x80000000)
|
|
|
|
INLINEASM &"#NOTHING", 1, 12, implicit-def early-clobber $r2
|
|
%11:crrc = CMPWI %7, 10
|
|
%0:crbitrc = COPY %11.sub_gt
|
|
%10:gprc = LI 0
|
|
B %bb.3
|
|
|
|
bb.2.for.cond.cleanup:
|
|
BLR8 implicit $lr8, implicit $rm
|
|
|
|
bb.3.for.body:
|
|
successors: %bb.4(0x00000002), %bb.5(0x7ffffffe)
|
|
|
|
%1:gprc_and_gprc_nor0 = PHI %10, %bb.1, %2, %bb.5
|
|
%12:gprc = LWZ 0, %6 :: (load (s32) from %ir.Ptr)
|
|
%13:gprc = ADD4 %1, killed %12
|
|
STW killed %13, 0, %6 :: (store (s32) into %ir.Ptr)
|
|
BCn %0, %bb.5
|
|
B %bb.4
|
|
|
|
bb.4.if.then:
|
|
successors: %bb.5(0x80000000)
|
|
|
|
INLINEASM &"#NOTHING", 1, 12, implicit-def early-clobber $r2
|
|
ADJCALLSTACKDOWN 32, 0, implicit-def dead $r1, implicit $r1
|
|
%14:g8rc = COPY $x2
|
|
STD %14, 24, $x1 :: (store (s64) into stack + 24)
|
|
%15:g8rc = EXTSW_32_64 %7
|
|
$x3 = COPY %15
|
|
$x12 = COPY %3
|
|
MTCTR8 %3, implicit-def $ctr8
|
|
BCTRL8_LDinto_toc 24, $x1, csr_ppc64_altivec, implicit-def dead $lr8, implicit-def dead $x2, implicit $ctr8, implicit $rm, implicit $x3, implicit $x12, implicit $x2, implicit-def $r1
|
|
ADJCALLSTACKUP 32, 0, implicit-def dead $r1, implicit $r1
|
|
|
|
bb.5.for.inc:
|
|
successors: %bb.2(0x013521d0), %bb.3(0x7ecade30)
|
|
|
|
%2:gprc = nuw nsw ADDI %1, 1
|
|
%16:crrc = CMPLW %8, %2
|
|
BCC 76, killed %16, %bb.2
|
|
B %bb.3
|
|
|
|
...
|
|
|
|
# CHECK for enabling instruction hoisting
|
|
#CHECK-LABEL: test
|
|
#CHECK-HOIST: bb.1.for.body.lr.ph:
|
|
#CHECK-HOIST: %14:g8rc = COPY $x2
|
|
#CHECK-HOIST: STD %14, 24, $x1 :: (store (s64) into stack + 24)
|
|
#CHECK-HOIST: %15:g8rc = EXTSW_32_64 %7
|
|
#CHECK-HOIST: B %bb.3
|
|
|
|
#CHECK-HOIST: bb.4.if.then:
|
|
#CHECK-HOIST-NOT: %14:g8rc = COPY $x2
|
|
#CHECK-HOIST-NOT: STD %14, 24, $x1 :: (store (s64) into stack + 24)
|
|
#CHECK-HOIST-NOT: %15:g8rc = EXTSW_32_64 %7
|
|
#CHECK-HOIST: bb.5.for.inc:
|
|
|
|
# CHECK for disabling instruction hoisting due to block hotness
|
|
#CHECK-LABEL: test
|
|
#CHECK-NO-HOIST: bb.1.for.body.lr.ph:
|
|
#CHECK-NO-HOIST-NOT: %14:g8rc = COPY $x2
|
|
#CHECK-NO-HOIST-NOT: STD %14, 24, $x1 :: (store (s64) into stack + 24)
|
|
#CHECK-NO-HOIST-NOT: %15:g8rc = EXTSW_32_64 %7
|
|
#CHECK-NO-HOIST: B %bb.3
|
|
|
|
#CHECK-NO-HOIST: bb.4.if.then:
|
|
#CHECK-NO-HOIST: %14:g8rc = COPY $x2
|
|
#CHECK-NO-HOIST: STD %14, 24, $x1 :: (store (s64) into stack + 24)
|
|
#CHECK-NO-HOIST: %15:g8rc = EXTSW_32_64 %7
|
|
#CHECK-NO-HOIST: bb.5.for.inc:
|