1# RUN: llc %s -mtriple=m68k -start-after=prologepilog -O0 -filetype=obj -o - \
2# RUN:   | extract-section .text \
3# RUN:   | FileCheck %s -check-prefixes=CMP8KI,CMP32KI,CMP8QI,CMP32QI,CMP8FI,CMP32FI
4# RUN: llc %s -mtriple=m68k -start-after=prologepilog -O0 -filetype=obj -o - \
5# RUN:   | extract-section .text \
6# RUN:   | FileCheck %s -check-prefixes=CMP8PI,CMP32PI,CMP8JI,CMP32JI
7
8#------------------------------------------------------------------------------
9# MxCMP_MI class used for compare operations and operates on memory data and
10# immediate data. It uses MxArithImmEncoding encoding class.
11# NOTE: CMP is calculated by subtracting LHS(Imm) from RHS(Mem)
12#------------------------------------------------------------------------------
13
14
15--- # PCI
16#               -------------------------------+-------+-----------+-----------
17#                F   E   D   C   B   A   9   8 | 7   6 | 5   4   3 | 2   1   0
18#               -------------------------------+-------+-----------+-----------
19#       OPWORD   0   0   0   0   1   1   0   0 |  SIZE |    MODE   |    REG
20#               -------------------------------+-------+-----------+-----------
21# CMP8KI:        0   0   0   0   1   1   0   0 . 0   0   1   1   1   0   1   1
22# CMP8KI-SAME:   0   0   0   0   0   0   0   0 . 0   0   0   0   0   0   0   0
23# CMP8KI-SAME:   0   0   0   1   1   0   0   0 . 1   1   1   1   1   1   1   1
24#               -------------------------------+-------+-----------+-----------
25# CMP8KI-SAME:   0   0   0   0   1   1   0   0 . 0   0   1   1   1   0   1   1
26# CMP8KI-SAME:   0   0   0   0   0   0   0   0 . 1   1   1   1   1   1   1   1
27# CMP8KI-SAME:   0   0   0   0   1   0   0   0 . 0   0   0   0   0   0   0   0
28#               -------------------------------+-------+-----------+-----------
29# CMP32KI-SAME:  0   0   0   0   1   1   0   0 . 1   0   1   1   1   0   1   1
30# CMP32KI-SAME:  1   1   1   1   1   1   1   1 . 1   1   1   1   1   1   1   1
31# CMP32KI-SAME:  1   1   1   1   1   1   1   1 . 1   1   1   1   1   1   1   1
32# CMP32KI-SAME:  0   1   1   1   1   0   0   0 . 0   0   0   0   0   0   0   0
33#               -------------------------------+-------+-----------+-----------
34# CMP32KI-SAME:  0   0   0   0   1   1   0   0 . 1   0   1   1   1   0   1   1
35# CMP32KI-SAME:  0   0   0   0   0   0   0   0 . 0   0   0   0   0   0   0   0
36# CMP32KI-SAME:  0   0   0   0   0   0   0   0 . 0   0   1   0   1   0   1   0
37# CMP32KI-SAME:  0   0   0   1   1   0   0   0 . 1   1   1   1   1   1   1   1
38#               ---+-----------+---+-------+---+-------------------------------
39#        BRIEF  DA |    REG    | L | SCALE | 0 |          DISPLACEMENT
40#               ---+-----------+---+-------+---+-------------------------------
41name: MxCMP_MI_PCI
42body: |
43  bb.0:
44    CMP8ki   0, -1, $d1, implicit-def $ccr
45    CMP8ki  -1,  0, $d0, implicit-def $ccr
46    CMP32ki -1,  0, $d7, implicit-def $ccr
47    CMP32ki 42, -1, $d1, implicit-def $ccr
48
49...
50--- # PCD
51#               -------------------------------+-------+-----------+-----------
52#                F   E   D   C   B   A   9   8 | 7   6 | 5   4   3 | 2   1   0
53#               -------------------------------+-------+-----------+-----------
54#       OPWORD   0   0   0   0   1   1   0   0 |  SIZE |    MODE   |    REG
55#               -------------------------------+-------+-----------+-----------
56# CMP8QI-SAME:   0   0   0   0   1   1   0   0 . 0   0   1   1   1   0   1   0
57# CMP8QI-SAME:   0   0   0   0   0   0   0   0 . 0   0   0   0   0   0   0   0
58# CMP8QI-SAME:   0   0   0   0   0   0   0   0 . 0   0   0   0   0   0   0   0
59#               -------------------------------+-------+-----------+-----------
60# CMP8QI-SAME:   0   0   0   0   1   1   0   0 . 0   0   1   1   1   0   1   0
61# CMP8QI-SAME:   0   0   0   0   0   0   0   0 . 1   1   1   1   1   1   1   1
62# CMP8QI-SAME:   1   1   1   1   1   1   1   1 . 1   1   1   1   1   1   1   1
63#               -------------------------------+-------+-----------+-----------
64# CMP32QI-SAME:  0   0   0   0   1   1   0   0 . 1   0   1   1   1   0   1   0
65# CMP32QI-SAME:  1   1   1   1   1   1   1   1 . 1   1   1   1   1   1   1   1
66# CMP32QI-SAME:  1   1   1   1   1   1   1   1 . 1   1   1   1   1   1   1   1
67# CMP32QI-SAME:  0   0   0   0   0   0   0   0 . 0   0   0   0   0   0   0   0
68#               -------------------------------+-------+-----------+-----------
69# CMP32QI-SAME:  0   0   0   0   1   1   0   0 . 1   0   1   1   1   0   1   0
70# CMP32QI-SAME:  0   0   0   0   0   0   0   0 . 0   0   0   0   0   0   0   0
71# CMP32QI-SAME:  0   0   0   0   0   0   0   0 . 0   0   1   0   1   0   1   0
72# CMP32QI-SAME:  0   0   0   0   0   0   0   0 . 0   0   0   0   0   0   0   0
73name: MxCMP_MI_PCD
74body: |
75  bb.0:
76    CMP8qi   0,  0, implicit-def $ccr
77    CMP8qi  -1, -1, implicit-def $ccr
78    CMP32qi -1,  0, implicit-def $ccr
79    CMP32qi 42,  0, implicit-def $ccr
80
81...
82--- # ARII
83#               -------------------------------+-------+-----------+-----------
84#                F   E   D   C   B   A   9   8 | 7   6 | 5   4   3 | 2   1   0
85#               -------------------------------+-------+-----------+-----------
86#       OPWORD   0   0   0   0   1   1   0   0 |  SIZE |    MODE   |    REG
87#               -------------------------------+-------+-----------+-----------
88# CMP8FI-SAME:   0   0   0   0   1   1   0   0 . 0   0   1   1   0   0   0   1
89# CMP8FI-SAME:   0   0   0   0   0   0   0   0 . 0   0   0   0   0   0   0   0
90# CMP8FI-SAME:   1   0   0   0   1   0   0   0 . 1   1   1   1   1   1   1   1
91#               -------------------------------+-------+-----------+-----------
92# CMP8FI-SAME:   0   0   0   0   1   1   0   0 . 0   0   1   1   0   0   0   0
93# CMP8FI-SAME:   0   0   0   0   0   0   0   0 . 1   1   1   1   1   1   1   1
94# CMP8FI-SAME:   1   0   0   0   1   0   0   0 . 0   0   0   0   0   0   0   0
95#               -------------------------------+-------+-----------+-----------
96# CMP32FI-SAME:  0   0   0   0   1   1   0   0 . 1   0   1   1   0   1   1   0
97# CMP32FI-SAME:  1   1   1   1   1   1   1   1 . 1   1   1   1   1   1   1   1
98# CMP32FI-SAME:  1   1   1   1   1   1   1   1 . 1   1   1   1   1   1   1   1
99# CMP32FI-SAME:  1   0   0   0   1   0   0   0 . 0   0   0   0   0   0   0   0
100#               -------------------------------+-------+-----------+-----------
101# CMP32FI-SAME:  0   0   0   0   1   1   0   0 . 1   0   1   1   0   0   0   1
102# CMP32FI-SAME:  0   0   0   0   0   0   0   0 . 0   0   0   0   0   0   0   0
103# CMP32FI-SAME:  0   0   0   0   0   0   0   0 . 0   0   1   0   1   0   1   0
104# CMP32FI-SAME:  1   0   0   0   1   0   0   0 . 1   1   1   1   1   1   1   1
105#               ---+-----------+---+-------+---+-------------------------------
106#        BRIEF  DA |    REG    | L | SCALE | 0 |          DISPLACEMENT
107#               ---+-----------+---+-------+---+-------------------------------
108name: MxCMP_MI_ARII
109body: |
110  bb.0:
111    CMP8fi   0, -1, $a1, $a0, implicit-def $ccr
112    CMP8fi  -1,  0, $a0, $a0, implicit-def $ccr
113    CMP32fi -1,  0, $a6, $a0, implicit-def $ccr
114    CMP32fi 42, -1, $a1, $a0, implicit-def $ccr
115
116...
117--- # ARID
118#               -------------------------------+-------+-----------+-----------
119#                F   E   D   C   B   A   9   8 | 7   6 | 5   4   3 | 2   1   0
120#               -------------------------------+-------+-----------+-----------
121#       OPWORD   0   0   0   0   1   1   0   0 |  SIZE |    MODE   |    REG
122#               -------------------------------+-------+-----------+-----------
123# CMP8PI:        0   0   0   0   1   1   0   0 . 0   0   1   0   1   0   0   1
124# CMP8PI-SAME:   0   0   0   0   0   0   0   0 . 0   0   0   0   0   0   0   0
125# CMP8PI-SAME:   1   1   1   1   1   1   1   1 . 1   1   1   1   1   1   1   1
126#               -------------------------------+-------+-----------+-----------
127# CMP8PI-SAME:   0   0   0   0   1   1   0   0 . 0   0   1   0   1   0   0   0
128# CMP8PI-SAME:   0   0   0   0   0   0   0   0 . 1   1   1   1   1   1   1   1
129# CMP8PI-SAME:   0   0   0   0   0   0   0   0 . 0   0   0   0   0   0   0   0
130#               -------------------------------+-------+-----------+-----------
131# CMP32PI-SAME:  0   0   0   0   1   1   0   0 . 1   0   1   0   1   1   1   0
132# CMP32PI-SAME:  1   1   1   1   1   1   1   1 . 1   1   1   1   1   1   1   1
133# CMP32PI-SAME:  1   1   1   1   1   1   1   1 . 1   1   1   1   1   1   1   1
134# CMP32PI-SAME:  0   0   0   0   0   0   0   0 . 0   0   0   0   0   0   0   0
135#               -------------------------------+-------+-----------+-----------
136# CMP32PI-SAME:  0   0   0   0   1   1   0   0 . 1   0   1   0   1   0   0   1
137# CMP32PI-SAME:  0   0   0   0   0   0   0   0 . 0   0   0   0   0   0   0   0
138# CMP32PI-SAME:  0   0   0   0   0   0   0   0 . 0   0   1   0   1   0   1   0
139# CMP32PI-SAME:  1   1   1   1   1   1   1   1 . 1   1   1   1   1   1   1   1
140name: MxCMP_MI_ARID
141body: |
142  bb.0:
143    CMP8pi   0, -1, $a1, implicit-def $ccr
144    CMP8pi  -1,  0, $a0, implicit-def $ccr
145    CMP32pi -1,  0, $a6, implicit-def $ccr
146    CMP32pi 42, -1, $a1, implicit-def $ccr
147
148...
149--- # ARI
150#               -------------------------------+-------+-----------+-----------
151#                F   E   D   C   B   A   9   8 | 7   6 | 5   4   3 | 2   1   0
152#               -------------------------------+-------+-----------+-----------
153#       OPWORD   0   0   0   0   1   1   0   0 |  SIZE |    MODE   |    REG
154#               -------------------------------+-------+-----------+-----------
155# CMP8JI-SAME:   0   0   0   0   1   1   0   0 . 0   0   0   1   0   0   0   1
156# CMP8JI-SAME:   0   0   0   0   0   0   0   0 . 0   0   0   0   0   0   0   0
157#               -------------------------------+-------+-----------+-----------
158# CMP8JI-SAME:   0   0   0   0   1   1   0   0 . 0   0   0   1   0   0   0   0
159# CMP8JI-SAME:   0   0   0   0   0   0   0   0 . 1   1   1   1   1   1   1   1
160#               -------------------------------+-------+-----------+-----------
161# CMP32JI-SAME:  0   0   0   0   1   1   0   0 . 1   0   0   1   0   1   1   0
162# CMP32JI-SAME:  1   1   1   1   1   1   1   1 . 1   1   1   1   1   1   1   1
163#               -------------------------------+-------+-----------+-----------
164# CMP32JI-SAME:  0   0   0   0   1   1   0   0 . 1   0   0   1   0   0   0   1
165# CMP32JI-SAME:  0   0   0   0   0   0   0   0 . 0   0   1   0   1   0   1   0
166name: MxCMP_MI_ARI
167body: |
168  bb.0:
169    CMP8ji   0, $a1, implicit-def $ccr
170    CMP8ji  -1, $a0, implicit-def $ccr
171    CMP32ji -1, $a6, implicit-def $ccr
172    CMP32ji 42, $a1, implicit-def $ccr
173
174...
175