5#include <private/qimage_p.h>
6#include <private/qsimd_p.h>
8#if defined(__ARM_NEON__)
20 const int offsetToAlignOn16Bytes = (
reinterpret_cast<quintptr>(
dst) >> 2) & 0x3;
21 for (
int i = 0;
i <
qMin(
len, offsetToAlignOn16Bytes); ++
i) {
26 if ((
len - offsetToAlignOn16Bytes) >= 16) {
28 uint8x16x4_t dstVector;
29#if Q_BYTE_ORDER == Q_BIG_ENDIAN
30 dstVector.val[0] = vdupq_n_u8(0xff);
32 dstVector.val[3] = vdupq_n_u8(0xff);
35 uint8x16x3_t srcVector = vld3q_u8(
src);
37#if Q_BYTE_ORDER == Q_BIG_ENDIAN
38 dstVector.val[1] = srcVector.val[0];
39 dstVector.val[2] = srcVector.val[1];
40 dstVector.val[3] = srcVector.val[2];
42 dstVector.val[0] = srcVector.val[2];
43 dstVector.val[1] = srcVector.val[1];
44 dstVector.val[2] = srcVector.val[0];
46 vst4q_u8(
reinterpret_cast<uint8_t*
>(
dst), dstVector);
48 }
while (
dst < simdEnd);
69 for (
int i = 0;
i <
src->height; ++
i) {
71 src_data +=
src->bytes_per_line;
72 dest_data = (
quint32 *)((
uchar*)dest_data + dest->bytes_per_line);
@ Format_ARGB32_Premultiplied
Combined button and popup list for selecting options.
Q_GUI_EXPORT void QT_FASTCALL qt_convert_rgb888_to_rgb32_neon(quint32 *dst, const uchar *src, int len)
constexpr const T & qMin(const T &a, const T &b)
GLenum GLuint GLenum GLsizei length
constexpr QRgb qRgb(int r, int g, int b)
#define SIMD_EPILOGUE(i, length, max)