ObjFW  Diff

Differences From Artifact [d9f6837658]:

To Artifact [c4d1f32dd0]:

  • File src/macros.h — part of check-in [7f304f573b] at 2023-11-03 00:16:18 on branch trunk — OFMatrix4x4: SSE4.1 for -[transformVectors:count:]

    This requires the vectors to be 16 byte aligned. In order to achieve
    this, the OFVector4D type is changed to have an alignment of 16 bytes.
    However, this does *not* break ABI because the only method actually
    requiring 16 byte alignment is -[transformVectors:count:], which was not
    in ObjFW 1.0. Hence binaries compiled for ObjFW 1.0 have no 16 byte
    alignment for OFVector4D, but also cannot ever call into any code that
    needs it. (-[transformedVector:] calls into -[transformVectors:count:],
    but creates a properly aligned copy that it passes.) (user: js, size: 19412) [annotate] [blame] [check-ins using]


97
98
99
100
101
102
103




104
105
106
107
108
109
110
111
112
113
114
115
116
117
# define OF_INLINE inline
# define OF_LIKELY(cond) (cond)
# define OF_UNLIKELY(cond) (cond)
# define OF_CONST_FUNC
# define OF_NO_RETURN_FUNC
# define OF_WEAK_REF(sym)
#endif





#if __STDC_VERSION__ >= 201112L
# define OF_ALIGNOF(type) _Alignof(type)
# define OF_ALIGNAS(type) _Alignas(type)
#else
# define OF_ALIGNOF(type) __alignof__(type)
# define OF_ALIGNAS(type) __attribute__((__aligned__(__alignof__(type))))
#endif

#if __STDC_VERSION__ >= 201112L && defined(OF_HAVE_MAX_ALIGN_T)
# define OF_BIGGEST_ALIGNMENT _Alignof(max_align_t)
#else
# ifdef __BIGGEST_ALIGNMENT__
#  define OF_BIGGEST_ALIGNMENT __BIGGEST_ALIGNMENT__







>
>
>
>






|







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
# define OF_INLINE inline
# define OF_LIKELY(cond) (cond)
# define OF_UNLIKELY(cond) (cond)
# define OF_CONST_FUNC
# define OF_NO_RETURN_FUNC
# define OF_WEAK_REF(sym)
#endif

#ifdef __GNUC__
# define OF_ALIGN(alignment) __attribute__((__aligned__(alignment)))
#endif

#if __STDC_VERSION__ >= 201112L
# define OF_ALIGNOF(type) _Alignof(type)
# define OF_ALIGNAS(type) _Alignas(type)
#else
# define OF_ALIGNOF(type) __alignof__(type)
# define OF_ALIGNAS(type) OF_ALIGN(OF_ALIGNOF(type))
#endif

#if __STDC_VERSION__ >= 201112L && defined(OF_HAVE_MAX_ALIGN_T)
# define OF_BIGGEST_ALIGNMENT _Alignof(max_align_t)
#else
# ifdef __BIGGEST_ALIGNMENT__
#  define OF_BIGGEST_ALIGNMENT __BIGGEST_ALIGNMENT__