1 This file is the short summary of the API changes:
3 16.06.2022 - Non-backward compatible
4 Remove SLJIT_ENTER_CDECL and SLJIT_CALL_CDECL.
5 The default calling mode is cdecl now.
7 21.04.2022 - Non-backward compatible
8 Floating point comparison types are renamed.
10 01.03.2022 - Non-backward compatible
11 Remove SLJIT_NEG. Instead substraction from
12 immedate 0 is preferred.
14 31.01.2022 - Non-backward compatible
15 The SLJIT_CURRENT_FLAGS_ADD_SUB option is
16 split into SLJIT_CURRENT_FLAGS_ADD and
17 SLJIT_CURRENT_FLAGS_SUB.
19 27.02.2022 - Non-backward compatible
20 The SLJIT_F64_ALIGNMENT option is removed.
22 17.02.2022 - Non-backward compatible
23 Many floating point operations may destroy flags.
25 06.02.2022 - Non-backward compatible
26 The SLJIT_FUNC_OFFSET macro is renamed to SLJIT_FUNC_ADDR.
27 Furthermore a new SLJIT_FUNC_UADDR macro is added which
28 returns with an unsigned address.
30 01.02.2022 - Non-backward compatible
31 Rework function argument list descriptor macros used by
32 sljit_emit_enter, sljit_set_context, sljit_emit_call,
33 and sljit_emit_icall functions.
35 25.01.2022 - Non-backward compatible
36 Change SLJIT_I32_OP and SLJIT_F32_OP to SLJIT_32.
38 24.01.2022 - Non-backward compatible
39 The SLJIT_UNUSED value is replaced by sljit_emit_op2u and
40 sljit_emit_return_void functions.
42 27.05.2021 - Non-backward compatible
43 The comparison types with the 32 suffix are removed from the
44 project. The sljit_set_current_flags has a new flag which
45 must be set when the flags are set by a 32 bit operation.
47 04.05.2021 - Non-backward compatible
48 The mul overflow comparison type is removed from the project
49 and the normal overflow type should be used instead.
51 28.04.2021 - Non-backward compatible
52 The current_flags argument of sljit_set_current_flags must
53 provide information about the instructions which set the CPU
56 16.08.2020 - Non-backward compatible
57 A second parameter has been added to sljit_create_compiler()
58 and sljit_free_code() to pass some data to the executable
61 24.01.2020 - Non-backward compatible
62 The SLJIT_MOV instructions does not support SLJIT_UNDEFINED
63 as destination. New prefetch instructions has been added
66 20.01.2019 - Non-backward compatible
67 The check_sljit_emit_fast_return function is removed, and
68 this operation is available through check_sljit_emit_op_src.
70 16.01.2019 - Backward compatible
71 A new opcode (SLJIT_ENDBR) is added to support
72 Intel Control-flow Enforcement Technology (CET).
74 08.01.2018 - Non-backward compatible
75 Fields of sljit_stack are renamed to fit a
76 top-down stack better.
78 02.01.2018 - Non-backward compatible
79 Immediate source argument has not been supported
80 for NOT, NEG, CLZ, and fast_return instructions
81 anymore. No CPU supports immedate arguments for
84 26.12.2017 - Non-backward compatible
85 The MOVU opcodes are removed because the emulation
86 is inefficient. The sljit_emit_mem() operation is
89 18.10.2017 - Non-backward compatible
90 The SLJIT_CALL0 - SLJIT_CALL3 jump types are
91 replaced by sljit_emit_call and sljit_emit_icall
92 function calls. These functions allows declaring
95 06.05.2017 - Non-backward compatible
96 Src argument is removed from sljit_emit_op_flags.
98 24.04.2017 - Non-backward compatible
99 The sljit_is_fpu_available function is replaced
100 by sljit_has_cpu_feature.
102 20.04.2017 - Non-backward compatible
103 x86 specific cmov is changed to a general function
105 27.03.2017 - Non-backward compatible
106 JIT stack is changed from bottom-up to top-town.
108 15.01.2017 - Non-backward compatible
109 Move with update may modifiy flags, the base register
110 can only be used once and [reg+reg<<shift] addressing
111 mode where shift > 0 is not supported anymore.
113 12.01.2017 - Non-backward compatible
114 Introducing a new flag mechanism which provides better
115 compatibility with CPUs without flags. Only two flags
116 remain: zero and variable. The current type of the
117 variable flag is specified by the arithmetic operator.
118 The SLJIT_KEEP_FLAGS is removed.
120 29.02.2016 - Non-backward compatible
121 Several types and instructions are renamed to improve
122 readability. In general byte, half, and int are renamed
123 to 8, 16, and 32. Floating point types are also renamed
124 from d and s to f64 and f32.
126 [s|u]b -> [s|u]8 (8 bit values)
127 [s|u]h -> [s|u]16 (16 bit values)
128 [s|u]i -> [s|u]32 (32 bit values)
129 d -> f64 (64 bit floating point value)
130 s -> f32 (32 bit floating point value)
132 18.05.2015 - Non-backward compatible
133 SLJIT_[I|]L[U|S]DIV is renamed to SLJIT_[I|][U|S]DIVMOD
135 29.09.2014 - Non-backward compatible
136 The sljit_create_compiler, sljit_allocate_stack, and
137 sljit_free_stack functions have an allocator_data
140 19.09.2014 - Non-backward compatible
141 Using I, D, S prefixes in conditional and floating
142 point operations. And an L prefix to long multiplication
143 and division (op0 opcodes).
145 11.08.2014 - Non-backward compatible
146 A currently unused options parameter is added to sljit_emit_enter
147 and sljit_set_context.
149 06.07.2014 - Non-backward compatible
150 SCRATCH registers are renamed to Rx and SAVED registers
151 are renamed to Sx. See the explanation of these registers
154 31.05.2014 - Non-backward compatible
155 SLJIT_TEMPORARY_EREGx registers were not renamed to
156 SLJIT_SCRATCH_EREGx when the change was done on 08.11.2012
158 05.03.2014 - Backward compatible
159 The sljit_set_target now supports those jumps, which
160 does not created with SLJIT_REWRITABLE_JUMP flag.
161 Reason: sljit_emit_ijump does not support conditional
164 03.03.2014 - Non-backward compatible
165 SLJIT_MOV_UI cannot be combined with SLJIT_INT_OP.
166 Reason: SLJIT_INT_OP flag is not recommended to use
167 directly, and SLJIT_IMOV has no sign bit.
169 29.01.2014 - Backward compatible
170 Bits assigned to SLJIT_MEM and SLJIT_IMM flags are changed.
171 Reason: the most common cases are fits into one byte now,
172 and more registers can be supported in the future.
174 08.11.2012 - Non-backward compatible
175 SLJIT_TEMPORARY_REGx registers are renamed to SLJIT_SCRATCH_REGx.
177 07.11.2012 - Non-backward compatible
178 sljit_emit_cond_value is renamed to sljit_emit_op_flags. An
179 extra source argument is added which will be used in the future.
181 05.11.2012 - Backward compatible
182 sljit_emit_cond_value now supports SLJIT_AND and SLJIT_INT_OP
183 flags, which makes this function complete.
185 01.11.2012 - Non-backward compatible
186 SLJIT_F* opcodes are renamed to SLJIT_*D to show that
187 they are double precision operators. Furthermore
188 SLJIT_*S single precision opcodes are added.
190 01.11.2012 - Non-backward compatible
191 Register arguments of operations with SLJIT_INT_OP flag
192 must be computed by another operation with SLJIT_INT_OP flag.
193 The same way as SLJIT_SINGLE_OP flag works with floating point
194 numbers. See the description of SLJIT_INT_OP.
196 01.11.2012 - Backward compatible
197 All operations whose support the SLJIT_INT_OP flag, have an
198 alternate name now, which includes the SLJIT_INT_OP. These
199 names starting with I.
201 31.10.2012 - Non-backward compatible
202 Renaming sljit_w to sljit_sw, sljit_i to sljit_si, sljit_h
203 to sljit_sh, and sljit_b to sljit_sb. Reason: their sign
204 bit is part of the type now.
206 20.10.2012 - Non-backward compatible
207 Renaming SLJIT_C_FLOAT_NAN to SLJIT_C_FLOAT_UNORDERED.
208 Reason: all architectures call these unordered comparions.