xref: /aosp_15_r20/external/llvm/test/MC/PowerPC/ppc64-operands.s (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker
2*9880d681SAndroid Build Coastguard Worker# RUN: llvm-mc -triple powerpc64-unknown-unknown --show-encoding %s | FileCheck -check-prefix=CHECK-BE %s
3*9880d681SAndroid Build Coastguard Worker# RUN: llvm-mc -triple powerpc64le-unknown-unknown --show-encoding %s | FileCheck -check-prefix=CHECK-LE %s
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Worker# Register operands
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Worker# CHECK-BE: add 1, 2, 3                     # encoding: [0x7c,0x22,0x1a,0x14]
8*9880d681SAndroid Build Coastguard Worker# CHECK-LE: add 1, 2, 3                     # encoding: [0x14,0x1a,0x22,0x7c]
9*9880d681SAndroid Build Coastguard Worker            add 1, 2, 3
10*9880d681SAndroid Build Coastguard Worker
11*9880d681SAndroid Build Coastguard Worker# CHECK-BE: add 1, 2, 3                     # encoding: [0x7c,0x22,0x1a,0x14]
12*9880d681SAndroid Build Coastguard Worker# CHECK-LE: add 1, 2, 3                     # encoding: [0x14,0x1a,0x22,0x7c]
13*9880d681SAndroid Build Coastguard Worker            add %r1, %r2, %r3
14*9880d681SAndroid Build Coastguard Worker
15*9880d681SAndroid Build Coastguard Worker# CHECK-BE: add 0, 0, 0                     # encoding: [0x7c,0x00,0x02,0x14]
16*9880d681SAndroid Build Coastguard Worker# CHECK-LE: add 0, 0, 0                     # encoding: [0x14,0x02,0x00,0x7c]
17*9880d681SAndroid Build Coastguard Worker            add 0, 0, 0
18*9880d681SAndroid Build Coastguard Worker
19*9880d681SAndroid Build Coastguard Worker# CHECK-BE: add 31, 31, 31                  # encoding: [0x7f,0xff,0xfa,0x14]
20*9880d681SAndroid Build Coastguard Worker# CHECK-LE: add 31, 31, 31                  # encoding: [0x14,0xfa,0xff,0x7f]
21*9880d681SAndroid Build Coastguard Worker            add 31, 31, 31
22*9880d681SAndroid Build Coastguard Worker
23*9880d681SAndroid Build Coastguard Worker# CHECK-BE: addi 1, 0, 0                    # encoding: [0x38,0x20,0x00,0x00]
24*9880d681SAndroid Build Coastguard Worker# CHECK-LE: addi 1, 0, 0                    # encoding: [0x00,0x00,0x20,0x38]
25*9880d681SAndroid Build Coastguard Worker            addi 1, 0, 0
26*9880d681SAndroid Build Coastguard Worker
27*9880d681SAndroid Build Coastguard Worker# CHECK-BE: addi 1, 0, 0                    # encoding: [0x38,0x20,0x00,0x00]
28*9880d681SAndroid Build Coastguard Worker# CHECK-LE: addi 1, 0, 0                    # encoding: [0x00,0x00,0x20,0x38]
29*9880d681SAndroid Build Coastguard Worker            addi 1, %r0, 0
30*9880d681SAndroid Build Coastguard Worker
31*9880d681SAndroid Build Coastguard Worker# Signed 16-bit immediate operands
32*9880d681SAndroid Build Coastguard Worker
33*9880d681SAndroid Build Coastguard Worker# CHECK-BE: addi 1, 2, 0                    # encoding: [0x38,0x22,0x00,0x00]
34*9880d681SAndroid Build Coastguard Worker# CHECK-LE: addi 1, 2, 0                    # encoding: [0x00,0x00,0x22,0x38]
35*9880d681SAndroid Build Coastguard Worker            addi 1, 2, 0
36*9880d681SAndroid Build Coastguard Worker
37*9880d681SAndroid Build Coastguard Worker# CHECK-BE: addi 1, 0, -32768               # encoding: [0x38,0x20,0x80,0x00]
38*9880d681SAndroid Build Coastguard Worker# CHECK-LE: addi 1, 0, -32768               # encoding: [0x00,0x80,0x20,0x38]
39*9880d681SAndroid Build Coastguard Worker            addi 1, 0, -32768
40*9880d681SAndroid Build Coastguard Worker
41*9880d681SAndroid Build Coastguard Worker# CHECK-BE: addi 1, 0, 32767                # encoding: [0x38,0x20,0x7f,0xff]
42*9880d681SAndroid Build Coastguard Worker# CHECK-LE: addi 1, 0, 32767                # encoding: [0xff,0x7f,0x20,0x38]
43*9880d681SAndroid Build Coastguard Worker            addi 1, 0, 32767
44*9880d681SAndroid Build Coastguard Worker
45*9880d681SAndroid Build Coastguard Worker# Unsigned 16-bit immediate operands
46*9880d681SAndroid Build Coastguard Worker
47*9880d681SAndroid Build Coastguard Worker# CHECK-BE: ori 1, 2, 0                     # encoding: [0x60,0x41,0x00,0x00]
48*9880d681SAndroid Build Coastguard Worker# CHECK-LE: ori 1, 2, 0                     # encoding: [0x00,0x00,0x41,0x60]
49*9880d681SAndroid Build Coastguard Worker            ori 1, 2, 0
50*9880d681SAndroid Build Coastguard Worker
51*9880d681SAndroid Build Coastguard Worker# CHECK-BE: ori 1, 2, 65535                 # encoding: [0x60,0x41,0xff,0xff]
52*9880d681SAndroid Build Coastguard Worker# CHECK-LE: ori 1, 2, 65535                 # encoding: [0xff,0xff,0x41,0x60]
53*9880d681SAndroid Build Coastguard Worker            ori 1, 2, 65535
54*9880d681SAndroid Build Coastguard Worker
55*9880d681SAndroid Build Coastguard Worker# Signed 16-bit immediate operands (extended range for addis)
56*9880d681SAndroid Build Coastguard Worker
57*9880d681SAndroid Build Coastguard Worker# CHECK-BE: addis 1, 0, 0                   # encoding: [0x3c,0x20,0x00,0x00]
58*9880d681SAndroid Build Coastguard Worker# CHECK-LE: addis 1, 0, 0                   # encoding: [0x00,0x00,0x20,0x3c]
59*9880d681SAndroid Build Coastguard Worker            addis 1, 0, -65536
60*9880d681SAndroid Build Coastguard Worker
61*9880d681SAndroid Build Coastguard Worker# CHECK-BE: addis 1, 0, -1                  # encoding: [0x3c,0x20,0xff,0xff]
62*9880d681SAndroid Build Coastguard Worker# CHECK-LE: addis 1, 0, -1                  # encoding: [0xff,0xff,0x20,0x3c]
63*9880d681SAndroid Build Coastguard Worker            addis 1, 0, 65535
64*9880d681SAndroid Build Coastguard Worker
65*9880d681SAndroid Build Coastguard Worker# D-Form memory operands
66*9880d681SAndroid Build Coastguard Worker
67*9880d681SAndroid Build Coastguard Worker# CHECK-BE: lwz 1, 0(0)                     # encoding: [0x80,0x20,0x00,0x00]
68*9880d681SAndroid Build Coastguard Worker# CHECK-LE: lwz 1, 0(0)                     # encoding: [0x00,0x00,0x20,0x80]
69*9880d681SAndroid Build Coastguard Worker            lwz 1, 0(0)
70*9880d681SAndroid Build Coastguard Worker
71*9880d681SAndroid Build Coastguard Worker# CHECK-BE: lwz 1, 0(0)                     # encoding: [0x80,0x20,0x00,0x00]
72*9880d681SAndroid Build Coastguard Worker# CHECK-LE: lwz 1, 0(0)                     # encoding: [0x00,0x00,0x20,0x80]
73*9880d681SAndroid Build Coastguard Worker            lwz 1, 0(%r0)
74*9880d681SAndroid Build Coastguard Worker
75*9880d681SAndroid Build Coastguard Worker# CHECK-BE: lwz 1, 0(31)                    # encoding: [0x80,0x3f,0x00,0x00]
76*9880d681SAndroid Build Coastguard Worker# CHECK-LE: lwz 1, 0(31)                    # encoding: [0x00,0x00,0x3f,0x80]
77*9880d681SAndroid Build Coastguard Worker            lwz 1, 0(31)
78*9880d681SAndroid Build Coastguard Worker
79*9880d681SAndroid Build Coastguard Worker# CHECK-BE: lwz 1, 0(31)                    # encoding: [0x80,0x3f,0x00,0x00]
80*9880d681SAndroid Build Coastguard Worker# CHECK-LE: lwz 1, 0(31)                    # encoding: [0x00,0x00,0x3f,0x80]
81*9880d681SAndroid Build Coastguard Worker            lwz 1, 0(%r31)
82*9880d681SAndroid Build Coastguard Worker
83*9880d681SAndroid Build Coastguard Worker# CHECK-BE: lwz 1, -32768(2)                # encoding: [0x80,0x22,0x80,0x00]
84*9880d681SAndroid Build Coastguard Worker# CHECK-LE: lwz 1, -32768(2)                # encoding: [0x00,0x80,0x22,0x80]
85*9880d681SAndroid Build Coastguard Worker            lwz 1, -32768(2)
86*9880d681SAndroid Build Coastguard Worker
87*9880d681SAndroid Build Coastguard Worker# CHECK-BE: lwz 1, 32767(2)                 # encoding: [0x80,0x22,0x7f,0xff]
88*9880d681SAndroid Build Coastguard Worker# CHECK-LE: lwz 1, 32767(2)                 # encoding: [0xff,0x7f,0x22,0x80]
89*9880d681SAndroid Build Coastguard Worker            lwz 1, 32767(2)
90*9880d681SAndroid Build Coastguard Worker
91*9880d681SAndroid Build Coastguard Worker
92*9880d681SAndroid Build Coastguard Worker# CHECK-BE: ld 1, 0(0)                      # encoding: [0xe8,0x20,0x00,0x00]
93*9880d681SAndroid Build Coastguard Worker# CHECK-LE: ld 1, 0(0)                      # encoding: [0x00,0x00,0x20,0xe8]
94*9880d681SAndroid Build Coastguard Worker            ld 1, 0(0)
95*9880d681SAndroid Build Coastguard Worker
96*9880d681SAndroid Build Coastguard Worker# CHECK-BE: ld 1, 0(0)                      # encoding: [0xe8,0x20,0x00,0x00]
97*9880d681SAndroid Build Coastguard Worker# CHECK-LE: ld 1, 0(0)                      # encoding: [0x00,0x00,0x20,0xe8]
98*9880d681SAndroid Build Coastguard Worker            ld 1, 0(%r0)
99*9880d681SAndroid Build Coastguard Worker
100*9880d681SAndroid Build Coastguard Worker# CHECK-BE: ld 1, 0(31)                     # encoding: [0xe8,0x3f,0x00,0x00]
101*9880d681SAndroid Build Coastguard Worker# CHECK-LE: ld 1, 0(31)                     # encoding: [0x00,0x00,0x3f,0xe8]
102*9880d681SAndroid Build Coastguard Worker            ld 1, 0(31)
103*9880d681SAndroid Build Coastguard Worker
104*9880d681SAndroid Build Coastguard Worker# CHECK-BE: ld 1, 0(31)                     # encoding: [0xe8,0x3f,0x00,0x00]
105*9880d681SAndroid Build Coastguard Worker# CHECK-LE: ld 1, 0(31)                     # encoding: [0x00,0x00,0x3f,0xe8]
106*9880d681SAndroid Build Coastguard Worker            ld 1, 0(%r31)
107*9880d681SAndroid Build Coastguard Worker
108*9880d681SAndroid Build Coastguard Worker# CHECK-BE: ld 1, -32768(2)                 # encoding: [0xe8,0x22,0x80,0x00]
109*9880d681SAndroid Build Coastguard Worker# CHECK-LE: ld 1, -32768(2)                 # encoding: [0x00,0x80,0x22,0xe8]
110*9880d681SAndroid Build Coastguard Worker            ld 1, -32768(2)
111*9880d681SAndroid Build Coastguard Worker
112*9880d681SAndroid Build Coastguard Worker# CHECK-BE: ld 1, 32764(2)                  # encoding: [0xe8,0x22,0x7f,0xfc]
113*9880d681SAndroid Build Coastguard Worker# CHECK-LE: ld 1, 32764(2)                  # encoding: [0xfc,0x7f,0x22,0xe8]
114*9880d681SAndroid Build Coastguard Worker            ld 1, 32764(2)
115*9880d681SAndroid Build Coastguard Worker
116*9880d681SAndroid Build Coastguard Worker# CHECK-BE: ld 1, 4(2)                      # encoding: [0xe8,0x22,0x00,0x04]
117*9880d681SAndroid Build Coastguard Worker# CHECK-LE: ld 1, 4(2)                      # encoding: [0x04,0x00,0x22,0xe8]
118*9880d681SAndroid Build Coastguard Worker            ld 1, 4(2)
119*9880d681SAndroid Build Coastguard Worker
120*9880d681SAndroid Build Coastguard Worker# CHECK-BE: ld 1, -4(2)                     # encoding: [0xe8,0x22,0xff,0xfc]
121*9880d681SAndroid Build Coastguard Worker# CHECK-LE: ld 1, -4(2)                     # encoding: [0xfc,0xff,0x22,0xe8]
122*9880d681SAndroid Build Coastguard Worker            ld 1, -4(2)
123*9880d681SAndroid Build Coastguard Worker
124*9880d681SAndroid Build Coastguard Worker
125*9880d681SAndroid Build Coastguard Worker# Immediate branch operands
126*9880d681SAndroid Build Coastguard Worker
127*9880d681SAndroid Build Coastguard Worker# CHECK-BE: b .+1024                        # encoding: [0x48,0x00,0x04,0x00]
128*9880d681SAndroid Build Coastguard Worker# CHECK-LE: b .+1024                        # encoding: [0x00,0x04,0x00,0x48]
129*9880d681SAndroid Build Coastguard Worker            b 1024
130*9880d681SAndroid Build Coastguard Worker
131*9880d681SAndroid Build Coastguard Worker# CHECK-BE: ba 1024                         # encoding: [0x48,0x00,0x04,0x02]
132*9880d681SAndroid Build Coastguard Worker# CHECK-LE: ba 1024                         # encoding: [0x02,0x04,0x00,0x48]
133*9880d681SAndroid Build Coastguard Worker            ba 1024
134*9880d681SAndroid Build Coastguard Worker
135*9880d681SAndroid Build Coastguard Worker# CHECK-BE: beq 0, .+1024                   # encoding: [0x41,0x82,0x04,0x00]
136*9880d681SAndroid Build Coastguard Worker# CHECK-LE: beq 0, .+1024                   # encoding: [0x00,0x04,0x82,0x41]
137*9880d681SAndroid Build Coastguard Worker            beq 1024
138*9880d681SAndroid Build Coastguard Worker
139*9880d681SAndroid Build Coastguard Worker# CHECK-BE: beqa 0, 1024                    # encoding: [0x41,0x82,0x04,0x02]
140*9880d681SAndroid Build Coastguard Worker# CHECK-LE: beqa 0, 1024                    # encoding: [0x02,0x04,0x82,0x41]
141*9880d681SAndroid Build Coastguard Worker            beqa 1024
142*9880d681SAndroid Build Coastguard Worker
143*9880d681SAndroid Build Coastguard Worker# CHECK-BE:                                 # encoding: [0x42,0x9f,A,0bAAAAAA01]
144*9880d681SAndroid Build Coastguard Worker# CHECK-LE:                                 # encoding: [0bAAAAAA01,A,0x9f,0x42]
145*9880d681SAndroid Build Coastguard Worker            bcl 20, 31, $+4
146*9880d681SAndroid Build Coastguard Worker
147*9880d681SAndroid Build Coastguard Worker# CHECK-BE:                                 # encoding: [0x42,0x00,A,0bAAAAAA00]
148*9880d681SAndroid Build Coastguard Worker# CHECK-LE:                                 # encoding: [0bAAAAAA00,A,0x00,0x42]
149*9880d681SAndroid Build Coastguard Worker            bdnz $-8
150*9880d681SAndroid Build Coastguard Worker
151*9880d681SAndroid Build Coastguard Worker# CHECK-BE: andi. 0, 3, 32767               # encoding: [0x70,0x60,0x7f,0xff]
152*9880d681SAndroid Build Coastguard Worker# CHECK-LE: andi. 0, 3, 32767               # encoding: [0xff,0x7f,0x60,0x70]
153*9880d681SAndroid Build Coastguard Worker            andi. %r0,%r3,~0x8000@l
154*9880d681SAndroid Build Coastguard Worker
155*9880d681SAndroid Build Coastguard Worker# CHECK-BE: andi. 0, 3, 0                   # encoding: [0x70,0x60,0x00,0x00]
156*9880d681SAndroid Build Coastguard Worker# CHECK-LE: andi. 0, 3, 0                   # encoding: [0x00,0x00,0x60,0x70]
157*9880d681SAndroid Build Coastguard Worker            andi. %r0,%r3,!0x8000@l
158*9880d681SAndroid Build Coastguard Worker
159