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