Improve arm code generator.
[sljit.git] / API_CHANGES
blobcc3b87a1bcbfecf101b5c393cf90f3215407c5b3
1 This file is the short summary of the API changes:
3 24.01.2022 - Non-backward compatible
4     The SLJIT_UNUSED value is replaced by sljit_emit_op2u and
5     sljit_emit_return_void functions.
7 27.05.2021 - Non-backward compatible
8     The comparison types with the 32 suffix are removed from the
9     project. The sljit_set_current_flags has a new flag which
10     must be set when the flags are set by a 32 bit operation.
12 04.05.2021 - Non-backward compatible
13     The mul overflow comparison type is removed from the project
14     and the normal overflow type should be used instead.
16 28.04.2021 - Non-backward compatible
17     The current_flags argument of sljit_set_current_flags must
18     provide information about the instructions which set the CPU
19     status flags.
21 16.08.2020 - Non-backward compatible
22     A second parameter has been added to sljit_create_compiler()
23     and sljit_free_code() to pass some data to the executable
24     allocator functions.
26 24.01.2020 - Non-backward compatible
27     The SLJIT_MOV instructions does not support SLJIT_UNDEFINED
28     as destination. New prefetch instructions has been added
29     instead.
31 20.01.2019 - Non-backward compatible
32     The check_sljit_emit_fast_return function is removed, and
33     this operation is available through check_sljit_emit_op_src.
35 16.01.2019 - Backward compatible
36     A new opcode (SLJIT_ENDBR) is added to support
37     Intel Control-flow Enforcement Technology (CET).
39 08.01.2018 - Non-backward compatible
40     Fields of sljit_stack are renamed to fit a
41     top-down stack better.
43 02.01.2018 - Non-backward compatible
44     Immediate source argument has not been supported
45     for NOT, NEG, CLZ, and fast_return instructions
46     anymore. No CPU supports immedate arguments for
47     these opcodes.
49 26.12.2017 - Non-backward compatible
50     The MOVU opcodes are removed because the emulation
51     is inefficient. The sljit_emit_mem() operation is
52     added instead.
54 18.10.2017 - Non-backward compatible
55     The SLJIT_CALL0 - SLJIT_CALL3 jump types are
56     replaced by sljit_emit_call and sljit_emit_icall
57     function calls. These functions allows declaring
58     the argument types.
60 06.05.2017 - Non-backward compatible
61     Src argument is removed from sljit_emit_op_flags.
63 24.04.2017 - Non-backward compatible
64     The sljit_is_fpu_available function is replaced
65     by sljit_has_cpu_feature.
67 20.04.2017 - Non-backward compatible
68     x86 specific cmov is changed to a general function
70 27.03.2017 - Non-backward compatible
71     JIT stack is changed from bottom-up to top-town.
73 15.01.2017 - Non-backward compatible
74     Move with update may modifiy flags, the base register
75     can only be used once and [reg+reg<<shift] addressing
76     mode where shift > 0 is not supported anymore.
78 12.01.2017 - Non-backward compatible
79     Introducing a new flag mechanism which provides better
80     compatibility with CPUs without flags. Only two flags
81     remain: zero and variable. The current type of the
82     variable flag is specified by the arithmetic operator.
83     The SLJIT_KEEP_FLAGS is removed.
85 29.02.2016 - Non-backward compatible
86     Several types and instructions are renamed to improve
87     readability. In general byte, half, and int are renamed
88     to 8, 16, and 32. Floating point types are also renamed
89     from d and s to f64 and f32.
91       [s|u]b -> [s|u]8    (8 bit values)
92       [s|u]h -> [s|u]16   (16 bit values)
93       [s|u]i -> [s|u]32   (32 bit values)
94       d -> f64            (64 bit floating point value)
95       s -> f32            (32 bit floating point value)
97 18.05.2015 - Non-backward compatible
98     SLJIT_[I|]L[U|S]DIV is renamed to SLJIT_[I|][U|S]DIVMOD
100 29.09.2014 - Non-backward compatible
101     The sljit_create_compiler, sljit_allocate_stack, and
102     sljit_free_stack functions have an allocator_data
103     argument now.
105 19.09.2014 - Non-backward compatible
106     Using I, D, S prefixes in conditional and floating
107     point operations. And an L prefix to long multiplication
108     and division (op0 opcodes).
110 11.08.2014 - Non-backward compatible
111     A currently unused options parameter is added to sljit_emit_enter
112     and sljit_set_context.
114 06.07.2014 - Non-backward compatible
115     SCRATCH registers are renamed to Rx and SAVED registers
116     are renamed to Sx. See the explanation of these registers
117     in sljitLir.h.
119 31.05.2014 - Non-backward compatible
120     SLJIT_TEMPORARY_EREGx registers were not renamed to
121     SLJIT_SCRATCH_EREGx when the change was done on 08.11.2012
123 05.03.2014 - Backward compatible
124     The sljit_set_target now supports those jumps, which
125     does not created with SLJIT_REWRITABLE_JUMP flag.
126     Reason: sljit_emit_ijump does not support conditional
127     jumps.
129 03.03.2014 - Non-backward compatible
130     SLJIT_MOV_UI cannot be combined with SLJIT_INT_OP.
131     Reason: SLJIT_INT_OP flag is not recommended to use
132     directly, and SLJIT_IMOV has no sign bit.
134 29.01.2014 - Backward compatible
135     Bits assigned to SLJIT_MEM and SLJIT_IMM flags are changed.
136     Reason: the most common cases are fits into one byte now,
137     and more registers can be supported in the future.
139 08.11.2012 - Non-backward compatible
140     SLJIT_TEMPORARY_REGx registers are renamed to SLJIT_SCRATCH_REGx.
142 07.11.2012 - Non-backward compatible
143     sljit_emit_cond_value is renamed to sljit_emit_op_flags. An
144     extra source argument is added which will be used in the future.
146 05.11.2012 - Backward compatible
147     sljit_emit_cond_value now supports SLJIT_AND and SLJIT_INT_OP
148     flags, which makes this function complete.
150 01.11.2012 - Non-backward compatible
151     SLJIT_F* opcodes are renamed to SLJIT_*D to show that
152     they are double precision operators. Furthermore
153     SLJIT_*S single precision opcodes are added.
155 01.11.2012 - Non-backward compatible
156     Register arguments of operations with SLJIT_INT_OP flag
157     must be computed by another operation with SLJIT_INT_OP flag.
158     The same way as SLJIT_SINGLE_OP flag works with floating point
159     numbers. See the description of SLJIT_INT_OP.
161 01.11.2012 - Backward compatible
162     All operations whose support the SLJIT_INT_OP flag, have an
163     alternate name now, which includes the SLJIT_INT_OP. These
164     names starting with I.
166 31.10.2012 - Non-backward compatible
167     Renaming sljit_w to sljit_sw, sljit_i to sljit_si, sljit_h
168     to sljit_sh, and sljit_b to sljit_sb. Reason: their sign
169     bit is part of the type now.
171 20.10.2012 - Non-backward compatible
172     Renaming SLJIT_C_FLOAT_NAN to SLJIT_C_FLOAT_UNORDERED.
173     Reason: all architectures call these unordered comparions.