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