aboutsummaryrefslogtreecommitdiff
path: root/llvm/test/CodeGen/RISCV/misched-mem-clustering.mir
blob: 21398d315ec93a2b1276059cd5be19239fea74e6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 5
# RUN: llc -mtriple=riscv64 -x mir -mcpu=sifive-p470 -verify-misched -enable-post-misched=false \
# RUN:     -riscv-postmisched-load-store-clustering=false -debug-only=machine-scheduler \
# RUN:     -start-before=machine-scheduler -stop-after=postmisched -misched-regpressure=false -o - 2>&1 < %s \
# RUN:   | FileCheck -check-prefix=NOPOSTMISCHED %s
# RUN: llc -mtriple=riscv64 -x mir -mcpu=sifive-p470 -mattr=+use-postra-scheduler -verify-misched -enable-post-misched=true \
# RUN:     -riscv-postmisched-load-store-clustering=false -debug-only=machine-scheduler \
# RUN:     -start-before=machine-scheduler -stop-after=postmisched -misched-regpressure=false -o - 2>&1 < %s \
# RUN:   | FileCheck -check-prefix=NOCLUSTER %s
# RUN: llc -mtriple=riscv64 -x mir -mcpu=sifive-p470 -mattr=+use-postra-scheduler -verify-misched -enable-post-misched=true \
# RUN:     -debug-only=machine-scheduler \
# RUN:     -start-before=machine-scheduler -stop-after=postmisched -misched-regpressure=false -o - 2>&1 < %s \
# RUN:   | FileCheck -check-prefix=MEMCLUSTER %s

# REQUIRES: asserts

...
---
name:            mem_clustering_1
tracksRegLiveness: true
body:             |
  bb.0:
    liveins: $x6, $x10, $x14, $x15, $x16, $x17
    ; NOPOSTMISCHED-LABEL: name: mem_clustering_1
    ; NOPOSTMISCHED: liveins: $x6, $x10, $x14, $x15, $x16, $x17
    ; NOPOSTMISCHED-NEXT: {{  $}}
    ; NOPOSTMISCHED-NEXT: renamable $x5 = LW renamable $x15, 0 :: (load (s32))
    ; NOPOSTMISCHED-NEXT: renamable $x7 = LW renamable $x15, 8 :: (load (s32))
    ; NOPOSTMISCHED-NEXT: renamable $x28 = LW renamable $x15, 16 :: (load (s32))
    ; NOPOSTMISCHED-NEXT: renamable $x29 = LW renamable $x15, 24 :: (load (s32))
    ; NOPOSTMISCHED-NEXT: renamable $x11 = ADDW renamable $x6, killed renamable $x5
    ; NOPOSTMISCHED-NEXT: renamable $x13 = ADDW killed renamable $x7, killed renamable $x28
    ; NOPOSTMISCHED-NEXT: renamable $x11 = ADDW killed renamable $x11, killed renamable $x13
    ; NOPOSTMISCHED-NEXT: renamable $x6 = ADDW killed renamable $x11, killed renamable $x29
    ; NOPOSTMISCHED-NEXT: SW renamable $x14, renamable $x15, 0 :: (store (s32))
    ; NOPOSTMISCHED-NEXT: SW renamable $x14, renamable $x15, 8 :: (store (s32))
    ; NOPOSTMISCHED-NEXT: SW renamable $x14, renamable $x15, 16 :: (store (s32))
    ; NOPOSTMISCHED-NEXT: SW renamable $x14, renamable $x15, 24 :: (store (s32))
    ; NOPOSTMISCHED-NEXT: PseudoRET
    ;
    ; NOCLUSTER-LABEL: name: mem_clustering_1
    ; NOCLUSTER: liveins: $x6, $x10, $x14, $x15, $x16, $x17
    ; NOCLUSTER-NEXT: {{  $}}
    ; NOCLUSTER-NEXT: renamable $x5 = LW renamable $x15, 0 :: (load (s32))
    ; NOCLUSTER-NEXT: SW renamable $x14, renamable $x15, 0 :: (store (s32))
    ; NOCLUSTER-NEXT: renamable $x11 = ADDW killed renamable $x6, killed renamable $x5
    ; NOCLUSTER-NEXT: renamable $x7 = LW renamable $x15, 8 :: (load (s32))
    ; NOCLUSTER-NEXT: renamable $x28 = LW renamable $x15, 16 :: (load (s32))
    ; NOCLUSTER-NEXT: renamable $x29 = LW renamable $x15, 24 :: (load (s32))
    ; NOCLUSTER-NEXT: renamable $x13 = ADDW killed renamable $x7, killed renamable $x28
    ; NOCLUSTER-NEXT: SW renamable $x14, renamable $x15, 8 :: (store (s32))
    ; NOCLUSTER-NEXT: SW renamable $x14, renamable $x15, 16 :: (store (s32))
    ; NOCLUSTER-NEXT: SW killed renamable $x14, killed renamable $x15, 24 :: (store (s32))
    ; NOCLUSTER-NEXT: renamable $x11 = ADDW killed renamable $x11, killed renamable $x13
    ; NOCLUSTER-NEXT: renamable $x6 = ADDW killed renamable $x11, killed renamable $x29
    ; NOCLUSTER-NEXT: PseudoRET
    ;
    ; MEMCLUSTER-LABEL: name: mem_clustering_1
    ; MEMCLUSTER: liveins: $x6, $x10, $x14, $x15, $x16, $x17
    ; MEMCLUSTER-NEXT: {{  $}}
    ; MEMCLUSTER-NEXT: renamable $x5 = LW renamable $x15, 0 :: (load (s32))
    ; MEMCLUSTER-NEXT: renamable $x7 = LW renamable $x15, 8 :: (load (s32))
    ; MEMCLUSTER-NEXT: renamable $x28 = LW renamable $x15, 16 :: (load (s32))
    ; MEMCLUSTER-NEXT: renamable $x29 = LW renamable $x15, 24 :: (load (s32))
    ; MEMCLUSTER-NEXT: SW renamable $x14, renamable $x15, 0 :: (store (s32))
    ; MEMCLUSTER-NEXT: SW renamable $x14, renamable $x15, 8 :: (store (s32))
    ; MEMCLUSTER-NEXT: SW renamable $x14, renamable $x15, 16 :: (store (s32))
    ; MEMCLUSTER-NEXT: SW killed renamable $x14, killed renamable $x15, 24 :: (store (s32))
    ; MEMCLUSTER-NEXT: renamable $x11 = ADDW killed renamable $x6, killed renamable $x5
    ; MEMCLUSTER-NEXT: renamable $x13 = ADDW killed renamable $x7, killed renamable $x28
    ; MEMCLUSTER-NEXT: renamable $x11 = ADDW killed renamable $x11, killed renamable $x13
    ; MEMCLUSTER-NEXT: renamable $x6 = ADDW killed renamable $x11, killed renamable $x29
    ; MEMCLUSTER-NEXT: PseudoRET
    renamable $x5 = LW renamable $x15, 0 :: (load (s32))
    renamable $x7 = LW renamable $x15, 8 :: (load (s32))
    renamable $x28 = LW renamable $x15, 16 :: (load (s32))
    renamable $x29 = LW renamable $x15, 24 :: (load (s32))
    renamable $x11 = ADDW killed renamable $x6, killed renamable $x5
    renamable $x13 = ADDW killed renamable $x7, killed renamable $x28
    renamable $x11 = ADDW killed renamable $x11, killed renamable $x13
    renamable $x6 = ADDW killed renamable $x11, killed renamable $x29
    SW renamable $x14, renamable $x15, 0 :: (store (s32))
    SW renamable $x14, renamable $x15, 8 :: (store (s32))
    SW renamable $x14, renamable $x15, 16 :: (store (s32))
    SW renamable $x14, renamable $x15, 24 :: (store (s32))
    PseudoRET
...