diff --git a/common/VectorIntrin.h b/common/VectorIntrin.h index 9451726b24..7f4f24d784 100644 --- a/common/VectorIntrin.h +++ b/common/VectorIntrin.h @@ -38,6 +38,16 @@ #include #elif defined(ARCH_ARM64) + +// AArch64 has no aligned/unaligned load distinction to begin with: LDR Q and LD1 +// take any address, and GSVector4i::load ignores its own parameter and +// emits the same instruction either way. Leaving this undefined made the callers +// pay for a distinction that does not exist — a runtime address-and-pitch test +// per texture upload, dispatching into three template instantiations that +// compile to identical code, and for 32/16-bit columns a worse load strategy +// (eight combining 64-bit loads instead of four 128-bit loads and a swizzle). +#define FAST_UNALIGNED 1 + #include #endif