update libchdr
[pcsx_rearmed.git] / deps / libchdr / deps / lzma-22.01 / src / Asm / arm64 / 7zAsm.S
CommitLineData
9e052883 1// 7zAsm.S -- ASM macros for arm64\r
2// 2021-04-25 : Igor Pavlov : Public domain\r
3\r
4#define r0 x0\r
5#define r1 x1\r
6#define r2 x2\r
7#define r3 x3\r
8#define r4 x4\r
9#define r5 x5\r
10#define r6 x6\r
11#define r7 x7\r
12#define r8 x8\r
13#define r9 x9\r
14#define r10 x10\r
15#define r11 x11\r
16#define r12 x12\r
17#define r13 x13\r
18#define r14 x14\r
19#define r15 x15\r
20#define r16 x16\r
21#define r17 x17\r
22#define r18 x18\r
23#define r19 x19\r
24#define r20 x20\r
25#define r21 x21\r
26#define r22 x22\r
27#define r23 x23\r
28#define r24 x24\r
29#define r25 x25\r
30#define r26 x26\r
31#define r27 x27\r
32#define r28 x28\r
33#define r29 x29\r
34#define r30 x30\r
35\r
36#define REG_ABI_PARAM_0 r0\r
37#define REG_ABI_PARAM_1 r1\r
38#define REG_ABI_PARAM_2 r2\r
39\r
40\r
41.macro p2_add reg:req, param:req\r
42 add \reg, \reg, \param\r
43.endm\r
44\r
45.macro p2_sub reg:req, param:req\r
46 sub \reg, \reg, \param\r
47.endm\r
48\r
49.macro p2_sub_s reg:req, param:req\r
50 subs \reg, \reg, \param\r
51.endm\r
52\r
53.macro p2_and reg:req, param:req\r
54 and \reg, \reg, \param\r
55.endm\r
56\r
57.macro xor reg:req, param:req\r
58 eor \reg, \reg, \param\r
59.endm\r
60\r
61.macro or reg:req, param:req\r
62 orr \reg, \reg, \param\r
63.endm\r
64\r
65.macro shl reg:req, param:req\r
66 lsl \reg, \reg, \param\r
67.endm\r
68\r
69.macro shr reg:req, param:req\r
70 lsr \reg, \reg, \param\r
71.endm\r
72\r
73.macro sar reg:req, param:req\r
74 asr \reg, \reg, \param\r
75.endm\r
76\r
77.macro p1_neg reg:req\r
78 neg \reg, \reg\r
79.endm\r
80\r
81.macro dec reg:req\r
82 sub \reg, \reg, 1\r
83.endm\r
84\r
85.macro dec_s reg:req\r
86 subs \reg, \reg, 1\r
87.endm\r
88\r
89.macro inc reg:req\r
90 add \reg, \reg, 1\r
91.endm\r
92\r
93.macro inc_s reg:req\r
94 adds \reg, \reg, 1\r
95.endm\r
96\r
97\r
98.macro imul reg:req, param:req\r
99 mul \reg, \reg, \param\r
100.endm\r
101\r
102/*\r
103arm64 and arm use reverted c flag after subs/cmp instructions:\r
104 arm64-arm : x86\r
105 b.lo / b.cc : jb / jc\r
106 b.hs / b.cs : jae / jnc\r
107*/ \r
108\r
109.macro jmp lab:req\r
110 b \lab\r
111.endm\r
112\r
113.macro je lab:req\r
114 b.eq \lab\r
115.endm\r
116\r
117.macro jz lab:req\r
118 b.eq \lab\r
119.endm\r
120\r
121.macro jnz lab:req\r
122 b.ne \lab\r
123.endm\r
124\r
125.macro jne lab:req\r
126 b.ne \lab\r
127.endm\r
128\r
129.macro jb lab:req\r
130 b.lo \lab\r
131.endm\r
132\r
133.macro jbe lab:req\r
134 b.ls \lab\r
135.endm\r
136\r
137.macro ja lab:req\r
138 b.hi \lab\r
139.endm\r
140\r
141.macro jae lab:req\r
142 b.hs \lab\r
143.endm\r
144\r
145\r
146.macro cmove dest:req, srcTrue:req\r
147 csel \dest, \srcTrue, \dest, eq\r
148.endm\r
149\r
150.macro cmovne dest:req, srcTrue:req\r
151 csel \dest, \srcTrue, \dest, ne\r
152.endm\r
153\r
154.macro cmovs dest:req, srcTrue:req\r
155 csel \dest, \srcTrue, \dest, mi\r
156.endm\r
157\r
158.macro cmovns dest:req, srcTrue:req\r
159 csel \dest, \srcTrue, \dest, pl\r
160.endm\r
161\r
162.macro cmovb dest:req, srcTrue:req\r
163 csel \dest, \srcTrue, \dest, lo\r
164.endm\r
165\r
166.macro cmovae dest:req, srcTrue:req\r
167 csel \dest, \srcTrue, \dest, hs\r
168.endm\r
169\r
170\r
171.macro MY_ALIGN_16 macro\r
172 .p2align 4,, (1 << 4) - 1\r
173.endm\r
174\r
175.macro MY_ALIGN_32 macro\r
176 .p2align 5,, (1 << 5) - 1\r
177.endm\r
178\r
179.macro MY_ALIGN_64 macro\r
180 .p2align 6,, (1 << 6) - 1\r
181.endm\r