xref: /llvm-project/llvm/test/CodeGen/RISCV/rda-stack.mir (revision 3c3c850a45c8f1ea1e9d6aa514e2b6076d1a4534)
1*3c3c850aSMikhail Gudim# RUN: llc %s -mtriple=riscv64 -run-pass=reaching-defs-analysis -print-all-reaching-defs -o - 2>&1 | FileCheck %s
2*3c3c850aSMikhail Gudim
3*3c3c850aSMikhail Gudim---
4*3c3c850aSMikhail Gudimname:            test0
5*3c3c850aSMikhail GudimtracksRegLiveness: true
6*3c3c850aSMikhail Gudimstack:
7*3c3c850aSMikhail Gudim  - { id: 0, name: '', type: default, offset: 0, size: 4, alignment: 4,
8*3c3c850aSMikhail Gudim      stack-id: default, callee-saved-register: '', callee-saved-restored: true,
9*3c3c850aSMikhail Gudim      debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
10*3c3c850aSMikhail Gudimbody:             |
11*3c3c850aSMikhail Gudim  ; CHECK-LABEL: RDA results for test0
12*3c3c850aSMikhail Gudim  ; CHECK-NEXT: %stack.0:{ }
13*3c3c850aSMikhail Gudim  ; CHECK-NEXT:0: $x10 = LD %stack.0, 0 :: (load (s64))
14*3c3c850aSMikhail Gudim  ; CHECK-EMPTY:
15*3c3c850aSMikhail Gudim  ; CHECK-NEXT: implicit $x10:{ 0 }
16*3c3c850aSMikhail Gudim  ; CHECK-NEXT:1: PseudoRET implicit $x10
17*3c3c850aSMikhail Gudim
18*3c3c850aSMikhail Gudim  bb.0.entry:
19*3c3c850aSMikhail Gudim    $x10 = LD %stack.0, 0 :: (load (s64))
20*3c3c850aSMikhail Gudim    PseudoRET implicit $x10
21*3c3c850aSMikhail Gudim
22*3c3c850aSMikhail Gudim...
23*3c3c850aSMikhail Gudim---
24*3c3c850aSMikhail Gudimname:            test1
25*3c3c850aSMikhail GudimtracksRegLiveness: true
26*3c3c850aSMikhail Gudimstack:
27*3c3c850aSMikhail Gudim  - { id: 0, name: '', type: default, offset: 0, size: 4, alignment: 4,
28*3c3c850aSMikhail Gudim      stack-id: default, callee-saved-register: '', callee-saved-restored: true,
29*3c3c850aSMikhail Gudim      debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
30*3c3c850aSMikhail Gudim  - { id: 1, name: '', type: default, offset: 0, size: 4, alignment: 4,
31*3c3c850aSMikhail Gudim      stack-id: default, callee-saved-register: '', callee-saved-restored: true,
32*3c3c850aSMikhail Gudim      debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
33*3c3c850aSMikhail Gudimbody:             |
34*3c3c850aSMikhail Gudim  ; CHECK-LABEL: RDA results for test1
35*3c3c850aSMikhail Gudim  ; CHECK-NEXT: %stack.0:{ }
36*3c3c850aSMikhail Gudim  ; CHECK-NEXT: 0: $x10 = LD %stack.0, 0 :: (load (s64))
37*3c3c850aSMikhail Gudim  ; CHECK-EMPTY:
38*3c3c850aSMikhail Gudim  ; CHECK-NEXT: %stack.1:{ }
39*3c3c850aSMikhail Gudim  ; CHECK-NEXT: 1: $x11 = LD %stack.1, 0 :: (load (s64))
40*3c3c850aSMikhail Gudim  ; CHECK-EMPTY:
41*3c3c850aSMikhail Gudim  ; CHECK-NEXT: $x10:{ 0 }
42*3c3c850aSMikhail Gudim  ; CHECK-NEXT: $x11:{ 1 }
43*3c3c850aSMikhail Gudim  ; CHECK-NEXT: 2: $x10 = ADD $x10, $x11
44*3c3c850aSMikhail Gudim  ; CHECK-EMPTY:
45*3c3c850aSMikhail Gudim  ; CHECK-NEXT: implicit $x10:{ 2 }
46*3c3c850aSMikhail Gudim  ; CHECK-NEXT: 3: PseudoRET implicit $x10
47*3c3c850aSMikhail Gudim
48*3c3c850aSMikhail Gudim  bb.0.entry:
49*3c3c850aSMikhail Gudim    $x10 = LD %stack.0, 0 :: (load (s64))
50*3c3c850aSMikhail Gudim    $x11 = LD %stack.1, 0 :: (load (s64))
51*3c3c850aSMikhail Gudim    $x10 = ADD $x10, $x11
52*3c3c850aSMikhail Gudim    PseudoRET implicit $x10
53*3c3c850aSMikhail Gudim
54*3c3c850aSMikhail Gudim...
55*3c3c850aSMikhail Gudim---
56*3c3c850aSMikhail Gudimname:            test2
57*3c3c850aSMikhail GudimtracksRegLiveness: true
58*3c3c850aSMikhail Gudimstack:
59*3c3c850aSMikhail Gudim  - { id: 0, name: '', type: default, offset: 0, size: 4, alignment: 4,
60*3c3c850aSMikhail Gudim      stack-id: default, callee-saved-register: '', callee-saved-restored: true,
61*3c3c850aSMikhail Gudim      debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
62*3c3c850aSMikhail Gudim  - { id: 1, name: '', type: default, offset: 0, size: 4, alignment: 4,
63*3c3c850aSMikhail Gudim      stack-id: default, callee-saved-register: '', callee-saved-restored: true,
64*3c3c850aSMikhail Gudim      debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
65*3c3c850aSMikhail Gudimbody:             |
66*3c3c850aSMikhail Gudim  ; CHECK-LABEL: RDA results for test2
67*3c3c850aSMikhail Gudim  ; CHECK-NEXT: %stack.0:{ }
68*3c3c850aSMikhail Gudim  ; CHECK-NEXT: 0: $x10 = LD %stack.0, 0 :: (load (s64))
69*3c3c850aSMikhail Gudim  ; CHECK-EMPTY:
70*3c3c850aSMikhail Gudim  ; CHECK-NEXT: %stack.1:{ }
71*3c3c850aSMikhail Gudim  ; CHECK-NEXT: 1: $x11 = LD %stack.1, 0 :: (load (s64))
72*3c3c850aSMikhail Gudim  ; CHECK-EMPTY:
73*3c3c850aSMikhail Gudim  ; CHECK-NEXT: $x10:{ 0 }
74*3c3c850aSMikhail Gudim  ; CHECK-NEXT: $x11:{ 1 }
75*3c3c850aSMikhail Gudim  ; CHECK-NEXT: 2: $x10 = ADD $x10, $x11
76*3c3c850aSMikhail Gudim  ; CHECK-EMPTY:
77*3c3c850aSMikhail Gudim  ; CHECK-NEXT: $x10:{ 2 }
78*3c3c850aSMikhail Gudim  ; CHECK-NEXT: %stack.0:{ }
79*3c3c850aSMikhail Gudim  ; CHECK-NEXT: 3: SD $x10, %stack.0, 0 :: (store (s64))
80*3c3c850aSMikhail Gudim  ; CHECK-EMPTY:
81*3c3c850aSMikhail Gudim  ; CHECK-NEXT: %stack.0:{ 3 }
82*3c3c850aSMikhail Gudim  ; CHECK-NEXT: 4: $x10 = LD %stack.0, 0 :: (load (s64))
83*3c3c850aSMikhail Gudim  ; CHECK-EMPTY:
84*3c3c850aSMikhail Gudim  ; CHECK-NEXT: implicit $x10:{ 4 }
85*3c3c850aSMikhail Gudim  ; CHECK-NEXT: 5: PseudoRET implicit $x10
86*3c3c850aSMikhail Gudim
87*3c3c850aSMikhail Gudim  bb.0.entry:
88*3c3c850aSMikhail Gudim    $x10 = LD %stack.0, 0 :: (load (s64))
89*3c3c850aSMikhail Gudim    $x11 = LD %stack.1, 0 :: (load (s64))
90*3c3c850aSMikhail Gudim    $x10 = ADD $x10, $x11
91*3c3c850aSMikhail Gudim    SD $x10, %stack.0, 0 :: (store (s64))
92*3c3c850aSMikhail Gudim    $x10 = LD %stack.0, 0 :: (load (s64))
93*3c3c850aSMikhail Gudim    PseudoRET implicit $x10
94*3c3c850aSMikhail Gudim
95*3c3c850aSMikhail Gudim...
96*3c3c850aSMikhail Gudim---
97*3c3c850aSMikhail Gudimname:            test3
98*3c3c850aSMikhail GudimtracksRegLiveness: true
99*3c3c850aSMikhail Gudimstack:
100*3c3c850aSMikhail Gudim  - { id: 0, name: '', type: default, offset: 0, size: 4, alignment: 4,
101*3c3c850aSMikhail Gudim      stack-id: default, callee-saved-register: '', callee-saved-restored: true,
102*3c3c850aSMikhail Gudim      debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
103*3c3c850aSMikhail Gudimbody:             |
104*3c3c850aSMikhail Gudim  ; CHECK-LABEL: RDA results for test3
105*3c3c850aSMikhail Gudim  ; CHECK-NEXT: $x10:{ }
106*3c3c850aSMikhail Gudim  ; CHECK-NEXT: $x0:{ }
107*3c3c850aSMikhail Gudim  ; CHECK-NEXT: 0: BEQ $x10, $x0, %bb.2
108*3c3c850aSMikhail Gudim  ; CHECK-EMPTY:
109*3c3c850aSMikhail Gudim  ; CHECK-NEXT: $x10:{ }
110*3c3c850aSMikhail Gudim  ; CHECK-NEXT: 1: $x10 = ADDI $x10, 1
111*3c3c850aSMikhail Gudim  ; CHECK-EMPTY:
112*3c3c850aSMikhail Gudim  ; CHECK-NEXT: $x10:{ 1 }
113*3c3c850aSMikhail Gudim  ; CHECK-NEXT: %stack.0:{ }
114*3c3c850aSMikhail Gudim  ; CHECK-NEXT: 2: SD $x10, %stack.0, 0 :: (store (s64))
115*3c3c850aSMikhail Gudim  ; CHECK-EMPTY:
116*3c3c850aSMikhail Gudim  ; CHECK-NEXT: $x0:{ }
117*3c3c850aSMikhail Gudim  ; CHECK-NEXT: $x0:{ }
118*3c3c850aSMikhail Gudim  ; CHECK-NEXT: 3: BEQ $x0, $x0, %bb.3
119*3c3c850aSMikhail Gudim  ; CHECK-EMPTY:
120*3c3c850aSMikhail Gudim  ; CHECK-NEXT: $x10:{ 1 }
121*3c3c850aSMikhail Gudim  ; CHECK-NEXT: 4: $x10 = ADDI $x10, 2
122*3c3c850aSMikhail Gudim  ; CHECK-EMPTY:
123*3c3c850aSMikhail Gudim  ; CHECK-NEXT: $x10:{ 4 }
124*3c3c850aSMikhail Gudim  ; CHECK-NEXT: %stack.0:{ 2 }
125*3c3c850aSMikhail Gudim  ; CHECK-NEXT: 5: SD $x10, %stack.0, 0 :: (store (s64))
126*3c3c850aSMikhail Gudim  ; CHECK-EMPTY:
127*3c3c850aSMikhail Gudim  ; CHECK-NEXT: %stack.0:{ 2 5 }
128*3c3c850aSMikhail Gudim  ; CHECK-NEXT: 6: $x10 = LD %stack.0, 0 :: (load (s64))
129*3c3c850aSMikhail Gudim  ; CHECK-EMPTY:
130*3c3c850aSMikhail Gudim  ; CHECK-NEXT: implicit $x10:{ 6 }
131*3c3c850aSMikhail Gudim  ; CHECK-NEXT: 7: PseudoRET implicit $x10
132*3c3c850aSMikhail Gudim
133*3c3c850aSMikhail Gudim  bb.0.entry:
134*3c3c850aSMikhail Gudim    liveins: $x10
135*3c3c850aSMikhail Gudim    BEQ $x10, $x0, %bb.2
136*3c3c850aSMikhail Gudim
137*3c3c850aSMikhail Gudim  bb.1:
138*3c3c850aSMikhail Gudim    liveins: $x10
139*3c3c850aSMikhail Gudim    $x10 = ADDI $x10, 1
140*3c3c850aSMikhail Gudim    SD $x10, %stack.0, 0 :: (store (s64))
141*3c3c850aSMikhail Gudim    BEQ $x0, $x0, %bb.3
142*3c3c850aSMikhail Gudim
143*3c3c850aSMikhail Gudim  bb.2:
144*3c3c850aSMikhail Gudim    liveins: $x10
145*3c3c850aSMikhail Gudim    $x10 = ADDI $x10, 2
146*3c3c850aSMikhail Gudim    SD $x10, %stack.0, 0 :: (store (s64))
147*3c3c850aSMikhail Gudim
148*3c3c850aSMikhail Gudim  bb.3:
149*3c3c850aSMikhail Gudim    $x10 = LD %stack.0, 0 :: (load (s64))
150*3c3c850aSMikhail Gudim    PseudoRET implicit $x10
151*3c3c850aSMikhail Gudim...
152