Overview
Comment: | OFMatrix4x4: Remove SSE4.1 due to Clang bugs
Clang fails to correctly align the _values ivar in 32 bit mode, despite |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
7e1dbda4b4998e1308ffc28183f5a351 |
User & Date: | js on 2023-11-03 01:07:38 |
Other Links: | manifest | tags |
Context
2023-11-04
| ||
13:10 | OFMatrix4x4: Restore SSE4.1 code check-in: 0eb97e4612 user: js tags: trunk | |
13:06 | Work around Clang not aligning ivars correctly check-in: 055e14fc75 user: js tags: trunk | |
2023-11-03
| ||
01:07 | OFMatrix4x4: Remove SSE4.1 due to Clang bugs check-in: 7e1dbda4b4 user: js tags: trunk | |
00:16 | OFMatrix4x4: SSE4.1 for -[transformVectors:count:] check-in: 7f304f573b user: js tags: trunk | |
Changes
Modified src/OFMatrix4x4.m from [46f1ac4383] to [740fcdd16f].
︙ | ︙ | |||
26 27 28 29 30 31 32 | { 0, 1, 0, 0 }, { 0, 0, 1, 0 }, { 0, 0, 0, 1 } }; @implementation OFMatrix4x4 #if (defined(OF_AMD64) || defined(OF_X86)) && defined(__GNUC__) | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | { 0, 1, 0, 0 }, { 0, 0, 1, 0 }, { 0, 0, 0, 1 } }; @implementation OFMatrix4x4 #if (defined(OF_AMD64) || defined(OF_X86)) && defined(__GNUC__) # ifndef __clang__ # pragma GCC push_options # pragma GCC target("3dnow,3dnowa") # endif static void multiplyWithMatrix_enhanced3DNow(OFMatrix4x4 *self, SEL _cmd, OFMatrix4x4 *matrix) |
︙ | ︙ | |||
306 307 308 309 310 311 312 | return; # define REPLACE(selector, func) \ typeEncoding = method_getTypeEncoding( \ class_getInstanceMethod(self, selector)); \ class_replaceMethod(self, selector, (IMP)func, typeEncoding); | | < < < | 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 | return; # define REPLACE(selector, func) \ typeEncoding = method_getTypeEncoding( \ class_getInstanceMethod(self, selector)); \ class_replaceMethod(self, selector, (IMP)func, typeEncoding); if ([OFSystemInfo supports3DNow]) { if ([OFSystemInfo supportsEnhanced3DNow]) { REPLACE(@selector(multiplyWithMatrix:), multiplyWithMatrix_enhanced3DNow) REPLACE(@selector(transformVectors:count:), transformVectors_enhanced3DNow) } else { REPLACE(@selector(multiplyWithMatrix:), |
︙ | ︙ |
Modified src/OFObject.h from [ea05d80823] to [53e8f943e6].
︙ | ︙ | |||
345 346 347 348 349 350 351 | } /** * @struct OFVector4D OFObject.h ObjFW/OFObject.h * * @brief A vector in 4D space. */ | | | 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 | } /** * @struct OFVector4D OFObject.h ObjFW/OFObject.h * * @brief A vector in 4D space. */ typedef struct OF_ALIGN(16) OF_BOXABLE OFVector4D { /** The x coordinate of the vector */ float x; /** The y coordinate of the vector */ float y; /** The z coordinate of the vector */ float z; /** The w coordinate of the vector */ |
︙ | ︙ |