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