Revert " [LoongArch][ISel] Check the number of sign bits in `PatGprGpr_32` (#107432)"
[llvm-project.git] / llvm / test / CodeGen / M68k / CollapseMOVEM.mir
blobac281cd5772fe599d72a32de4b089561a5beb37b
1 # NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 # RUN: llc %s -mtriple=m68k -start-after=prologepilog -O0 -filetype=asm -o - \
3 # RUN:   | FileCheck %s
5 #------------------------------------------------------------------------------
6 # CollapseMOVEM pass finds sequences of MOVEM instructions and collapse them
7 # into a single instruciton with merged masks. This only works with stack data
8 #------------------------------------------------------------------------------
10 --- # CollapseMOVEM_RM
12 # CHECK-LABEL: CollapseMOVEM_RM
13 # CHECK:       movem.l (0,%sp), %d0-%d2/%d7/%a1-%a3/%a5
14 name: CollapseMOVEM_RM
15 body: |
16   bb.0:
17     MOVM32mp 1,     0, $sp
18     MOVM32mp 2,     4, $sp
19     MOVM32mp 4,     8, $sp
20     MOVM32mp 128,  12, $sp
21     MOVM32mp 512,  16, $sp
22     MOVM32mp 1024, 20, $sp
23     MOVM32mp 2048, 24, $sp
24     MOVM32mp 8192, 28, $sp
26 ...
28 # CHECK-LABEL: CollapseMOVEM_RM_Reversed
29 # CHECK:       movem.l (0,%sp), %d0-%d2/%d7/%a1-%a3/%a5
30 name: CollapseMOVEM_RM_Reversed
31 body: |
32   bb.0:
33     MOVM32mp 8192, 28, $sp
34     MOVM32mp 2048, 24, $sp
35     MOVM32mp 1024, 20, $sp
36     MOVM32mp 512,  16, $sp
37     MOVM32mp 128,  12, $sp
38     MOVM32mp 4,     8, $sp
39     MOVM32mp 2,     4, $sp
40     MOVM32mp 1,     0, $sp
42 ...
43 # This async reg/mem order is impossible to store with MOVEM
44 # CHECK-LABEL: CollapseMOVEM_RM_ReversedStoreOrder
45 # CHECK:       movem.l (0,%sp), %a5
46 # CHECK:       movem.l (4,%sp), %a3
47 # CHECK:       movem.l (8,%sp), %a2
48 # CHECK:       movem.l (12,%sp), %a1
49 # CHECK:       movem.l (16,%sp), %d7
50 # CHECK:       movem.l (20,%sp), %d2
51 # CHECK:       movem.l (24,%sp), %d1
52 # CHECK:       movem.l (28,%sp), %d0
53 name: CollapseMOVEM_RM_ReversedStoreOrder
54 body: |
55   bb.0:
56     MOVM32mp 8192,  0, $sp
57     MOVM32mp 2048,  4, $sp
58     MOVM32mp 1024,  8, $sp
59     MOVM32mp 512,  12, $sp
60     MOVM32mp 128,  16, $sp
61     MOVM32mp 4,    20, $sp
62     MOVM32mp 2,    24, $sp
63     MOVM32mp 1,    28, $sp
65 ...
66 --- # CollapseMOVEM_MR
68 # CHECK-LABEL: CollapseMOVEM_MR
69 # CHECK:       movem.l %d0-%d2/%d7/%a1-%a3/%a5, (0,%sp)
70 name: CollapseMOVEM_MR
71 body: |
72   bb.0:
73     MOVM32pm   0, $sp, 1
74     MOVM32pm   4, $sp, 2
75     MOVM32pm   8, $sp, 4
76     MOVM32pm  12, $sp, 128
77     MOVM32pm  16, $sp, 512
78     MOVM32pm  20, $sp, 1024
79     MOVM32pm  24, $sp, 2048
80     MOVM32pm  28, $sp, 8192
82 ...
83 --- # CollapseMOVEM_Mixed
85 # CHECK-LABEL: CollapseMOVEM_Mixed
86 # CHECK:       movem.l %d0-%d1, (0,%sp)
87 # CHECK:       movem.l (8,%sp), %d2/%d7
88 # CHECK:       movem.l %a1-%a2, (16,%sp)
89 # CHECK:       movem.l (24,%sp), %a3
90 # CHECK:       movem.l %a5, (28,%sp)
91 name: CollapseMOVEM_Mixed
92 body: |
93   bb.0:
94     MOVM32pm  0, $sp, 1
95     MOVM32pm  4, $sp, 2
96     MOVM32mp  4, 8, $sp
97     MOVM32mp  128, 12, $sp
98     MOVM32pm  16, $sp, 512
99     MOVM32pm  20, $sp, 1024
100     MOVM32mp  2048, 24, $sp
101     MOVM32pm  28, $sp, 8192
104 --- # CollapseMOVEM_Zero
106 # CHECK-LABEL: CollapseMOVEM_Zero
107 # CHECK:       movem.l %d0-%d4, (-8,%sp)
108 name: CollapseMOVEM_Zero
109 body: |
110   bb.0:
111     MOVM32pm -8, $sp,  1
112     MOVM32pm -4, $sp,  2
113     MOVM32pm  0, $sp,  4
114     MOVM32pm  4, $sp,  8
115     MOVM32pm  8, $sp, 16
119 # CHECK-LABEL: CollapseMOVEM_Zero_Mixed
120 # CHECK:       movem.l %d3, (4,%sp)
121 # CHECK:       movem.l %d0-%d2, (-8,%sp)
122 # CHECK:       movem.l %d4, (8,%sp)
123 name: CollapseMOVEM_Zero_Mixed
124 body: |
125   bb.0:
126     MOVM32pm  4, $sp,  8
127     MOVM32pm -4, $sp,  2
128     MOVM32pm -8, $sp,  1
129     MOVM32pm  0, $sp,  4
130     MOVM32pm  8, $sp, 16
133 --- # CollapseMOVEM_Zero_Reversed
135 # CHECK-LABEL: CollapseMOVEM_Zero_Reversed
136 # CHECK:       movem.l %d0-%d4, (-8,%sp)
137 name: CollapseMOVEM_Zero_Reversed
138 body: |
139   bb.0:
140     MOVM32pm  8, $sp, 16
141     MOVM32pm  4, $sp,  8
142     MOVM32pm  0, $sp,  4
143     MOVM32pm -4, $sp,  2
144     MOVM32pm -8, $sp,  1
148 # CHECK-LABEL: CollapseMOVEM_Zero_ReversedStoreOrder
149 # CHECK:       movem.l %d0, (8,%sp)
150 # CHECK:       movem.l %d1, (4,%sp)
151 # CHECK:       movem.l %d2, (0,%sp)
152 # CHECK:       movem.l %d3, (-4,%sp)
153 # CHECK:       movem.l %d4, (-8,%sp)
154 name: CollapseMOVEM_Zero_ReversedStoreOrder
155 body: |
156   bb.0:
157     MOVM32pm  8, $sp,  1
158     MOVM32pm  4, $sp,  2
159     MOVM32pm  0, $sp,  4
160     MOVM32pm -4, $sp,  8
161     MOVM32pm -8, $sp, 16