forked from zherczeg/sljit
-
Notifications
You must be signed in to change notification settings - Fork 0
/
API_CHANGES
284 lines (220 loc) · 9.79 KB
/
API_CHANGES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
This file is the short summary of the API changes:
21.06.2024 - Non-backward compatible
Atomic instructions are reworked.
Different forms are optional now.
10.06.2024 - Non-backward compatible
The sljit_emit_simd_op2() has a generic
second operand.
20.03.2024 - Non-backward compatible
The sljit_p type is renamed to sljit_up.
26.02.2024 - Non-backward compatible
Arguments of sljit_create_compiler() and
sljit_generate_code() are changed and
sljit_get_exec_allocator_data() is removed.
The sljit_get_allocator_data() is renamed
to sljit_compiler_get_allocator_data().
21.02.2024 - Non-backward compatible
The sljit_set_put_label() function is renamed
to sljit_emit_mov_addr() and sljit_put_label
is merged into sljit_jump and removed.
01.11.2023 - Non-backward compatible
The SLJIT_ARG_TYPE_VOID definition is changed
to SLJIT_ARG_TYPE_RET_VOID to improve Windows
compatibility.
05.09.2023 - Non-backward compatible
Turn SLJIT_IMM from a flag to a single value.
10.08.2023 - Non-backward compatible
Rename SLJIT_INT_REGISTER to SLJIT_GP_REGISTER.
01.08.2023 - Non-backward compatible
A type argument is added to sljit_get_register_index
and sljit_get_float_register_index is removed.
19.07.2023 - Non-backward compatible
SLJIT_MEM_UNALIGNED_16/32 options are renamed
to SLJIT_MEM_ALIGNED_16/32 and a type argument
is added to sljit_get_float_register_index.
16.02.2022 - Non-backward compatible
The sljit_emit_cmov operation is replaced
by sljit_emit_select.
11.02.2022 - Non-backward compatible
All floating point comparisons are supported,
sljit_cmp_info return value is changed.
02.02.2022 - Backward compatible
All SLJIT_SET_* constants are
even numbers.
27.01.2022 - Non-backward compatible
The arguments of sljit_emit_shift_into
are changed.
17.12.2022 - Non-backward compatible
Replace sljit_emit_fast_enter and
sljit_get_return_address with
sljit_emit_op_dst.
13.12.2022 - Non-backward compatible
Replace SLJIT_NOT with SLJIT_XOR.
10.11.2022 - Non-backward compatible
Extract the pre/post update operations from
sljit_emit_mem to sljit_emit_mem_update
and sljit_emit_fmem to sljit_emit_fmem_update.
04.11.2022 - Non-backward compatible
The SLJIT_32 flag is combined with the type
argument of cmov, not the dst_reg.
16.06.2022 - Non-backward compatible
Remove SLJIT_ENTER_CDECL and SLJIT_CALL_CDECL.
The default calling mode is cdecl now.
21.04.2022 - Non-backward compatible
Floating point comparison types are renamed.
01.03.2022 - Non-backward compatible
Remove SLJIT_NEG. Instead subtraction from
immedate 0 is preferred.
31.01.2022 - Non-backward compatible
The SLJIT_CURRENT_FLAGS_ADD_SUB option is
split into SLJIT_CURRENT_FLAGS_ADD and
SLJIT_CURRENT_FLAGS_SUB.
27.02.2022 - Non-backward compatible
The SLJIT_F64_ALIGNMENT option is removed.
17.02.2022 - Non-backward compatible
Many floating point operations may destroy flags.
06.02.2022 - Non-backward compatible
The SLJIT_FUNC_OFFSET macro is renamed to SLJIT_FUNC_ADDR.
Furthermore a new SLJIT_FUNC_UADDR macro is added which
returns with an unsigned address.
01.02.2022 - Non-backward compatible
Rework function argument list descriptor macros used by
sljit_emit_enter, sljit_set_context, sljit_emit_call,
and sljit_emit_icall functions.
25.01.2022 - Non-backward compatible
Change SLJIT_I32_OP and SLJIT_F32_OP to SLJIT_32.
24.01.2022 - Non-backward compatible
The SLJIT_UNUSED value is replaced by sljit_emit_op2u and
sljit_emit_return_void functions.
27.05.2021 - Non-backward compatible
The comparison types with the 32 suffix are removed from the
project. The sljit_set_current_flags has a new flag which
must be set when the flags are set by a 32 bit operation.
04.05.2021 - Non-backward compatible
The mul overflow comparison type is removed from the project
and the normal overflow type should be used instead.
28.04.2021 - Non-backward compatible
The current_flags argument of sljit_set_current_flags must
provide information about the instructions which set the CPU
status flags.
16.08.2020 - Non-backward compatible
A second parameter has been added to sljit_create_compiler()
and sljit_free_code() to pass some data to the executable
allocator functions.
24.01.2020 - Non-backward compatible
The SLJIT_MOV instructions does not support SLJIT_UNDEFINED
as destination. New prefetch instructions has been added
instead.
20.01.2019 - Non-backward compatible
The check_sljit_emit_fast_return function is removed, and
this operation is available through check_sljit_emit_op_src.
16.01.2019 - Backward compatible
A new opcode (SLJIT_ENDBR) is added to support
Intel Control-flow Enforcement Technology (CET).
08.01.2018 - Non-backward compatible
Fields of sljit_stack are renamed to fit a
top-down stack better.
02.01.2018 - Non-backward compatible
Immediate source argument has not been supported
for NOT, NEG, CLZ, and fast_return instructions
anymore. No CPU supports immedate arguments for
these opcodes.
26.12.2017 - Non-backward compatible
The MOVU opcodes are removed because the emulation
is inefficient. The sljit_emit_mem() operation is
added instead.
18.10.2017 - Non-backward compatible
The SLJIT_CALL0 - SLJIT_CALL3 jump types are
replaced by sljit_emit_call and sljit_emit_icall
function calls. These functions allows declaring
the argument types.
06.05.2017 - Non-backward compatible
Src argument is removed from sljit_emit_op_flags.
24.04.2017 - Non-backward compatible
The sljit_is_fpu_available function is replaced
by sljit_has_cpu_feature.
20.04.2017 - Non-backward compatible
x86 specific cmov is changed to a general function
27.03.2017 - Non-backward compatible
JIT stack is changed from bottom-up to top-town.
15.01.2017 - Non-backward compatible
Move with update may modifiy flags, the base register
can only be used once and [reg+reg<<shift] addressing
mode where shift > 0 is not supported anymore.
12.01.2017 - Non-backward compatible
Introducing a new flag mechanism which provides better
compatibility with CPUs without flags. Only two flags
remain: zero and variable. The current type of the
variable flag is specified by the arithmetic operator.
The SLJIT_KEEP_FLAGS is removed.
29.02.2016 - Non-backward compatible
Several types and instructions are renamed to improve
readability. In general byte, half, and int are renamed
to 8, 16, and 32. Floating point types are also renamed
from d and s to f64 and f32.
[s|u]b -> [s|u]8 (8 bit values)
[s|u]h -> [s|u]16 (16 bit values)
[s|u]i -> [s|u]32 (32 bit values)
d -> f64 (64 bit floating point value)
s -> f32 (32 bit floating point value)
18.05.2015 - Non-backward compatible
SLJIT_[I|]L[U|S]DIV is renamed to SLJIT_[I|][U|S]DIVMOD
29.09.2014 - Non-backward compatible
The sljit_create_compiler, sljit_allocate_stack, and
sljit_free_stack functions have an allocator_data
argument now.
19.09.2014 - Non-backward compatible
Using I, D, S prefixes in conditional and floating
point operations. And an L prefix to long multiplication
and division (op0 opcodes).
11.08.2014 - Non-backward compatible
A currently unused options parameter is added to sljit_emit_enter
and sljit_set_context.
06.07.2014 - Non-backward compatible
SCRATCH registers are renamed to Rx and SAVED registers
are renamed to Sx. See the explanation of these registers
in sljitLir.h.
31.05.2014 - Non-backward compatible
SLJIT_TEMPORARY_EREGx registers were not renamed to
SLJIT_SCRATCH_EREGx when the change was done on 08.11.2012
05.03.2014 - Backward compatible
The sljit_set_target now supports those jumps, which
does not created with SLJIT_REWRITABLE_JUMP flag.
Reason: sljit_emit_ijump does not support conditional
jumps.
03.03.2014 - Non-backward compatible
SLJIT_MOV_UI cannot be combined with SLJIT_INT_OP.
Reason: SLJIT_INT_OP flag is not recommended to use
directly, and SLJIT_IMOV has no sign bit.
29.01.2014 - Backward compatible
Bits assigned to SLJIT_MEM and SLJIT_IMM flags are changed.
Reason: the most common cases are fits into one byte now,
and more registers can be supported in the future.
08.11.2012 - Non-backward compatible
SLJIT_TEMPORARY_REGx registers are renamed to SLJIT_SCRATCH_REGx.
07.11.2012 - Non-backward compatible
sljit_emit_cond_value is renamed to sljit_emit_op_flags. An
extra source argument is added which will be used in the future.
05.11.2012 - Backward compatible
sljit_emit_cond_value now supports SLJIT_AND and SLJIT_INT_OP
flags, which makes this function complete.
01.11.2012 - Non-backward compatible
SLJIT_F* opcodes are renamed to SLJIT_*D to show that
they are double precision operators. Furthermore
SLJIT_*S single precision opcodes are added.
01.11.2012 - Non-backward compatible
Register arguments of operations with SLJIT_INT_OP flag
must be computed by another operation with SLJIT_INT_OP flag.
The same way as SLJIT_SINGLE_OP flag works with floating point
numbers. See the description of SLJIT_INT_OP.
01.11.2012 - Backward compatible
All operations whose support the SLJIT_INT_OP flag, have an
alternate name now, which includes the SLJIT_INT_OP. These
names starting with I.
31.10.2012 - Non-backward compatible
Renaming sljit_w to sljit_sw, sljit_i to sljit_si, sljit_h
to sljit_sh, and sljit_b to sljit_sb. Reason: their sign
bit is part of the type now.
20.10.2012 - Non-backward compatible
Renaming SLJIT_C_FLOAT_NAN to SLJIT_C_FLOAT_UNORDERED.
Reason: all architectures call these unordered comparions.