This allows using compiler attributes for aligning the local variables,
in the cases where the compiler supports such alignment for stack variables.
libavutil/internal.h needs to include mem.h, since it uses
the DECLARE_ALIGNED macro.
---
libavcodec/dcadec.c | 4 ++--
libavcodec/lpc.c | 2 +-
libavcodec/ra288.c | 6 +++---
libavutil/internal.h | 1 +
libavutil/tests/float_dsp.c | 46 +++++++++++++++++++++----------------------
libavutil/tests/lls.c | 2 +-
tests/checkasm/audiodsp.c | 16 +++++++--------
tests/checkasm/fmtconvert.c | 6 +++---
tests/checkasm/hevc_add_res.c | 8 ++++----
tests/checkasm/hevc_idct.c | 8 ++++----
tests/checkasm/synth_filter.c | 20 +++++++++----------
tests/checkasm/vp9dsp.c | 12 +++++------
12 files changed, 66 insertions(+), 65 deletions(-)
diff --git a/libavcodec/dcadec.c b/libavcodec/dcadec.c
index fa2a240..c3c88c1 100644
--- a/libavcodec/dcadec.c
+++ b/libavcodec/dcadec.c
@@ -937,7 +937,7 @@ static int dca_filter_channels(DCAContext *s, int
block_index, int upsample)
int k;
if (upsample) {
- LOCAL_ALIGNED(32, float, samples, [DCA_SUBBANDS_X96K],
[SAMPLES_PER_SUBBAND]);
+ LOCAL_ALIGNED_32(float, samples, [DCA_SUBBANDS_X96K],
[SAMPLES_PER_SUBBAND]);
if (!s->qmf64_table) {
s->qmf64_table = qmf64_precompute();
@@ -962,7 +962,7 @@ static int dca_filter_channels(DCAContext *s, int
block_index, int upsample)
}
} else {
/* 32 subbands QMF */
- LOCAL_ALIGNED(32, float, samples, [DCA_SUBBANDS],
[SAMPLES_PER_SUBBAND]);
+ LOCAL_ALIGNED_32(float, samples, [DCA_SUBBANDS],
[SAMPLES_PER_SUBBAND]);
for (k = 0; k < s->audio_header.prim_channels; k++) {
int channel = s->channel_order_tab[k];
diff --git a/libavcodec/lpc.c b/libavcodec/lpc.c
index 1482e57..7305de6 100644
--- a/libavcodec/lpc.c
+++ b/libavcodec/lpc.c
@@ -204,7 +204,7 @@ int ff_lpc_calc_coefs(LPCContext *s,
if (lpc_type == FF_LPC_TYPE_CHOLESKY) {
LLSModel m[2];
- LOCAL_ALIGNED(32, double, var, [FFALIGN(MAX_LPC_ORDER+1,4)]);
+ LOCAL_ALIGNED_32(double, var, [FFALIGN(MAX_LPC_ORDER+1,4)]);
double av_uninit(weight);
memset(var, 0, FFALIGN(MAX_LPC_ORDER+1,4)*sizeof(*var));
diff --git a/libavcodec/ra288.c b/libavcodec/ra288.c
index c457d0c..d43c39c 100644
--- a/libavcodec/ra288.c
+++ b/libavcodec/ra288.c
@@ -136,9 +136,9 @@ static void do_hybrid_window(RA288Context *ractx,
int i;
float buffer1[MAX_BACKWARD_FILTER_ORDER + 1];
float buffer2[MAX_BACKWARD_FILTER_ORDER + 1];
- LOCAL_ALIGNED(32, float, work, [FFALIGN(MAX_BACKWARD_FILTER_ORDER +
- MAX_BACKWARD_FILTER_LEN +
- MAX_BACKWARD_FILTER_NONREC, 16)]);
+ LOCAL_ALIGNED_32(float, work, [FFALIGN(MAX_BACKWARD_FILTER_ORDER +
+ MAX_BACKWARD_FILTER_LEN +
+ MAX_BACKWARD_FILTER_NONREC, 16)]);
ractx->fdsp.vector_fmul(work, window, hist, FFALIGN(order + n + non_rec,
16));
diff --git a/libavutil/internal.h b/libavutil/internal.h
index d96762c..fcec798 100644
--- a/libavutil/internal.h
+++ b/libavutil/internal.h
@@ -38,6 +38,7 @@
#include "attributes.h"
#include "dict.h"
#include "macros.h"
+#include "mem.h"
#include "pixfmt.h"
#if ARCH_X86
diff --git a/libavutil/tests/float_dsp.c b/libavutil/tests/float_dsp.c
index ab6bf6a..17728e0 100644
--- a/libavutil/tests/float_dsp.c
+++ b/libavutil/tests/float_dsp.c
@@ -85,8 +85,8 @@ static int compare_doubles(const double *a, const double *b,
int len,
static int test_vector_fmul(AVFloatDSPContext *fdsp, AVFloatDSPContext *cdsp,
const float *v1, const float *v2)
{
- LOCAL_ALIGNED(32, float, cdst, [LEN]);
- LOCAL_ALIGNED(32, float, odst, [LEN]);
+ LOCAL_ALIGNED_32(float, cdst, [LEN]);
+ LOCAL_ALIGNED_32(float, odst, [LEN]);
int ret;
cdsp->vector_fmul(cdst, v1, v2, LEN);
@@ -102,8 +102,8 @@ static int test_vector_fmul(AVFloatDSPContext *fdsp,
AVFloatDSPContext *cdsp,
static int test_vector_fmac_scalar(AVFloatDSPContext *fdsp, AVFloatDSPContext
*cdsp,
const float *v1, const float *src0, float
scale)
{
- LOCAL_ALIGNED(32, float, cdst, [LEN]);
- LOCAL_ALIGNED(32, float, odst, [LEN]);
+ LOCAL_ALIGNED_32(float, cdst, [LEN]);
+ LOCAL_ALIGNED_32(float, odst, [LEN]);
int ret;
memcpy(cdst, v1, LEN * sizeof(*v1));
@@ -121,8 +121,8 @@ static int test_vector_fmac_scalar(AVFloatDSPContext *fdsp,
AVFloatDSPContext *c
static int test_vector_fmul_scalar(AVFloatDSPContext *fdsp, AVFloatDSPContext
*cdsp,
const float *v1, float scale)
{
- LOCAL_ALIGNED(32, float, cdst, [LEN]);
- LOCAL_ALIGNED(32, float, odst, [LEN]);
+ LOCAL_ALIGNED_32(float, cdst, [LEN]);
+ LOCAL_ALIGNED_32(float, odst, [LEN]);
int ret;
cdsp->vector_fmul_scalar(cdst, v1, scale, LEN);
@@ -137,8 +137,8 @@ static int test_vector_fmul_scalar(AVFloatDSPContext *fdsp,
AVFloatDSPContext *c
static int test_vector_dmul_scalar(AVFloatDSPContext *fdsp, AVFloatDSPContext
*cdsp,
const double *v1, double scale)
{
- LOCAL_ALIGNED(32, double, cdst, [LEN]);
- LOCAL_ALIGNED(32, double, odst, [LEN]);
+ LOCAL_ALIGNED_32(double, cdst, [LEN]);
+ LOCAL_ALIGNED_32(double, odst, [LEN]);
int ret;
cdsp->vector_dmul_scalar(cdst, v1, scale, LEN);
@@ -154,8 +154,8 @@ static int test_vector_dmul_scalar(AVFloatDSPContext *fdsp,
AVFloatDSPContext *c
static int test_vector_fmul_window(AVFloatDSPContext *fdsp, AVFloatDSPContext
*cdsp,
const float *v1, const float *v2, const
float *v3)
{
- LOCAL_ALIGNED(32, float, cdst, [LEN]);
- LOCAL_ALIGNED(32, float, odst, [LEN]);
+ LOCAL_ALIGNED_32(float, cdst, [LEN]);
+ LOCAL_ALIGNED_32(float, odst, [LEN]);
int ret;
cdsp->vector_fmul_window(cdst, v1, v2, v3, LEN / 2);
@@ -171,8 +171,8 @@ static int test_vector_fmul_window(AVFloatDSPContext *fdsp,
AVFloatDSPContext *c
static int test_vector_fmul_add(AVFloatDSPContext *fdsp, AVFloatDSPContext
*cdsp,
const float *v1, const float *v2, const float
*v3)
{
- LOCAL_ALIGNED(32, float, cdst, [LEN]);
- LOCAL_ALIGNED(32, float, odst, [LEN]);
+ LOCAL_ALIGNED_32(float, cdst, [LEN]);
+ LOCAL_ALIGNED_32(float, odst, [LEN]);
int ret;
cdsp->vector_fmul_add(cdst, v1, v2, v3, LEN);
@@ -187,8 +187,8 @@ static int test_vector_fmul_add(AVFloatDSPContext *fdsp,
AVFloatDSPContext *cdsp
static int test_vector_fmul_reverse(AVFloatDSPContext *fdsp, AVFloatDSPContext
*cdsp,
const float *v1, const float *v2)
{
- LOCAL_ALIGNED(32, float, cdst, [LEN]);
- LOCAL_ALIGNED(32, float, odst, [LEN]);
+ LOCAL_ALIGNED_32(float, cdst, [LEN]);
+ LOCAL_ALIGNED_32(float, odst, [LEN]);
int ret;
cdsp->vector_fmul_reverse(cdst, v1, v2, LEN);
@@ -203,10 +203,10 @@ static int test_vector_fmul_reverse(AVFloatDSPContext
*fdsp, AVFloatDSPContext *
static int test_butterflies_float(AVFloatDSPContext *fdsp, AVFloatDSPContext
*cdsp,
const float *v1, const float *v2)
{
- LOCAL_ALIGNED(32, float, cv1, [LEN]);
- LOCAL_ALIGNED(32, float, cv2, [LEN]);
- LOCAL_ALIGNED(32, float, ov1, [LEN]);
- LOCAL_ALIGNED(32, float, ov2, [LEN]);
+ LOCAL_ALIGNED_32(float, cv1, [LEN]);
+ LOCAL_ALIGNED_32(float, cv2, [LEN]);
+ LOCAL_ALIGNED_32(float, ov1, [LEN]);
+ LOCAL_ALIGNED_32(float, ov2, [LEN]);
int ret;
memcpy(cv1, v1, LEN * sizeof(*v1));
@@ -247,11 +247,11 @@ int main(int argc, char **argv)
AVFloatDSPContext fdsp, cdsp;
AVLFG lfg;
- LOCAL_ALIGNED(32, float, src0, [LEN]);
- LOCAL_ALIGNED(32, float, src1, [LEN]);
- LOCAL_ALIGNED(32, float, src2, [LEN]);
- LOCAL_ALIGNED(32, double, dbl_src0, [LEN]);
- LOCAL_ALIGNED(32, double, dbl_src1, [LEN]);
+ LOCAL_ALIGNED_32(float, src0, [LEN]);
+ LOCAL_ALIGNED_32(float, src1, [LEN]);
+ LOCAL_ALIGNED_32(float, src2, [LEN]);
+ LOCAL_ALIGNED_32(double, dbl_src0, [LEN]);
+ LOCAL_ALIGNED_32(double, dbl_src1, [LEN]);
if (argc > 2 && !strcmp(argv[1], "-s"))
seed = strtoul(argv[2], NULL, 10);
diff --git a/libavutil/tests/lls.c b/libavutil/tests/lls.c
index 7866b38..d2bb465 100644
--- a/libavutil/tests/lls.c
+++ b/libavutil/tests/lls.c
@@ -33,7 +33,7 @@ int main(void)
avpriv_init_lls(&m, 3);
for (i = 0; i < 100; i++) {
- LOCAL_ALIGNED(32, double, var, [4]);
+ LOCAL_ALIGNED_32(double, var, [4]);
double eval;
var[0] = (av_lfg_get(&lfg) / (double) UINT_MAX - 0.5) * 2;
diff --git a/tests/checkasm/audiodsp.c b/tests/checkasm/audiodsp.c
index 40fa384..9187769 100644
--- a/tests/checkasm/audiodsp.c
+++ b/tests/checkasm/audiodsp.c
@@ -55,8 +55,8 @@ void checkasm_check_audiodsp(void)
ff_audiodsp_init(&adsp);
if (check_func(adsp.scalarproduct_int16, "audiodsp.scalarproduct_int16")) {
- LOCAL_ALIGNED(32, int16_t, v1, [MAX_SIZE]);
- LOCAL_ALIGNED(32, int16_t, v2, [MAX_SIZE]);
+ LOCAL_ALIGNED_32(int16_t, v1, [MAX_SIZE]);
+ LOCAL_ALIGNED_32(int16_t, v2, [MAX_SIZE]);
unsigned int len_bits_minus4, v1_bits, v2_bits, len;
int32_t res0, res1;
@@ -83,9 +83,9 @@ void checkasm_check_audiodsp(void)
}
if (check_func(adsp.vector_clip_int32, "audiodsp.vector_clip_int32")) {
- LOCAL_ALIGNED(32, int32_t, src, [MAX_SIZE]);
- LOCAL_ALIGNED(32, int32_t, dst0, [MAX_SIZE]);
- LOCAL_ALIGNED(32, int32_t, dst1, [MAX_SIZE]);
+ LOCAL_ALIGNED_32(int32_t, src, [MAX_SIZE]);
+ LOCAL_ALIGNED_32(int32_t, dst0, [MAX_SIZE]);
+ LOCAL_ALIGNED_32(int32_t, dst1, [MAX_SIZE]);
int32_t val1, val2, min, max;
int len;
@@ -113,9 +113,9 @@ void checkasm_check_audiodsp(void)
}
if (check_func(adsp.vector_clipf, "audiodsp.vector_clipf")) {
- LOCAL_ALIGNED(32, float, src, [MAX_SIZE]);
- LOCAL_ALIGNED(32, float, dst0, [MAX_SIZE]);
- LOCAL_ALIGNED(32, float, dst1, [MAX_SIZE]);
+ LOCAL_ALIGNED_32(float, src, [MAX_SIZE]);
+ LOCAL_ALIGNED_32(float, dst0, [MAX_SIZE]);
+ LOCAL_ALIGNED_32(float, dst1, [MAX_SIZE]);
float val1, val2, min, max;
int i, len;
diff --git a/tests/checkasm/fmtconvert.c b/tests/checkasm/fmtconvert.c
index 1a843b0..c4baa47 100644
--- a/tests/checkasm/fmtconvert.c
+++ b/tests/checkasm/fmtconvert.c
@@ -44,9 +44,9 @@
void checkasm_check_fmtconvert(void)
{
FmtConvertContext c;
- LOCAL_ALIGNED(32, float, dst0, [BUF_SIZE]);
- LOCAL_ALIGNED(32, float, dst1, [BUF_SIZE]);
- LOCAL_ALIGNED(32, int32_t, in, [BUF_SIZE]);
+ LOCAL_ALIGNED_32(float, dst0, [BUF_SIZE]);
+ LOCAL_ALIGNED_32(float, dst1, [BUF_SIZE]);
+ LOCAL_ALIGNED_32(int32_t, in, [BUF_SIZE]);
float scale_arr[128];
int length[] = {8, 16, 24, 56, 72, 128, 512, 520, 656, 768, 992};
int i, j;
diff --git a/tests/checkasm/hevc_add_res.c b/tests/checkasm/hevc_add_res.c
index 2cd97ea..b25f2f5 100644
--- a/tests/checkasm/hevc_add_res.c
+++ b/tests/checkasm/hevc_add_res.c
@@ -45,10 +45,10 @@
static void check_add_res(HEVCDSPContext h, int bit_depth)
{
int i;
- LOCAL_ALIGNED(32, int16_t, res0, [32 * 32]);
- LOCAL_ALIGNED(32, int16_t, res1, [32 * 32]);
- LOCAL_ALIGNED(32, uint8_t, dst0, [32 * 32 * 2]);
- LOCAL_ALIGNED(32, uint8_t, dst1, [32 * 32 * 2]);
+ LOCAL_ALIGNED_32(int16_t, res0, [32 * 32]);
+ LOCAL_ALIGNED_32(int16_t, res1, [32 * 32]);
+ LOCAL_ALIGNED_32(uint8_t, dst0, [32 * 32 * 2]);
+ LOCAL_ALIGNED_32(uint8_t, dst1, [32 * 32 * 2]);
for (i = 2; i <= 5; i++) {
int block_size = 1 << i;
diff --git a/tests/checkasm/hevc_idct.c b/tests/checkasm/hevc_idct.c
index dd4dc0d..939c5d8 100644
--- a/tests/checkasm/hevc_idct.c
+++ b/tests/checkasm/hevc_idct.c
@@ -38,8 +38,8 @@
static void check_idct(HEVCDSPContext h, int bit_depth)
{
int i;
- LOCAL_ALIGNED(32, int16_t, coeffs0, [32 * 32]);
- LOCAL_ALIGNED(32, int16_t, coeffs1, [32 * 32]);
+ LOCAL_ALIGNED_32(int16_t, coeffs0, [32 * 32]);
+ LOCAL_ALIGNED_32(int16_t, coeffs1, [32 * 32]);
for (i = 2; i <= 5; i++) {
int block_size = 1 << i;
@@ -62,8 +62,8 @@ static void check_idct(HEVCDSPContext h, int bit_depth)
static void check_idct_dc(HEVCDSPContext h, int bit_depth)
{
int i;
- LOCAL_ALIGNED(32, int16_t, coeffs0, [32 * 32]);
- LOCAL_ALIGNED(32, int16_t, coeffs1, [32 * 32]);
+ LOCAL_ALIGNED_32(int16_t, coeffs0, [32 * 32]);
+ LOCAL_ALIGNED_32(int16_t, coeffs1, [32 * 32]);
for (i = 2; i <= 5; i++) {
int block_size = 1 << i;
diff --git a/tests/checkasm/synth_filter.c b/tests/checkasm/synth_filter.c
index 157400b..5a2a920 100644
--- a/tests/checkasm/synth_filter.c
+++ b/tests/checkasm/synth_filter.c
@@ -50,16 +50,16 @@ void checkasm_check_synth_filter(void)
ff_synth_filter_init(&synth);
if (check_func(synth.synth_filter_float, "synth_filter_float")) {
- LOCAL_ALIGNED(32, float, out0, [BUF_SIZE]);
- LOCAL_ALIGNED(32, float, out1, [BUF_SIZE]);
- LOCAL_ALIGNED(32, float, out_b, [BUF_SIZE]);
- LOCAL_ALIGNED(32, float, in, [BUF_SIZE]);
- LOCAL_ALIGNED(32, float, buf2_0, [BUF_SIZE]);
- LOCAL_ALIGNED(32, float, buf2_1, [BUF_SIZE]);
- LOCAL_ALIGNED(32, float, buf2_b, [BUF_SIZE]);
- LOCAL_ALIGNED(32, float, buf0, [512]);
- LOCAL_ALIGNED(32, float, buf1, [512]);
- LOCAL_ALIGNED(32, float, buf_b, [512]);
+ LOCAL_ALIGNED_32(float, out0, [BUF_SIZE]);
+ LOCAL_ALIGNED_32(float, out1, [BUF_SIZE]);
+ LOCAL_ALIGNED_32(float, out_b, [BUF_SIZE]);
+ LOCAL_ALIGNED_32(float, in, [BUF_SIZE]);
+ LOCAL_ALIGNED_32(float, buf2_0, [BUF_SIZE]);
+ LOCAL_ALIGNED_32(float, buf2_1, [BUF_SIZE]);
+ LOCAL_ALIGNED_32(float, buf2_b, [BUF_SIZE]);
+ LOCAL_ALIGNED_32(float, buf0, [512]);
+ LOCAL_ALIGNED_32(float, buf1, [512]);
+ LOCAL_ALIGNED_32(float, buf_b, [512]);
float scale = 1.0f;
int i, offset0 = 0, offset1 = 0, offset_b = 0;
diff --git a/tests/checkasm/vp9dsp.c b/tests/checkasm/vp9dsp.c
index 39b82e1..4289055 100644
--- a/tests/checkasm/vp9dsp.c
+++ b/tests/checkasm/vp9dsp.c
@@ -248,12 +248,12 @@ static int iszero(const int16_t *c, int sz)
static void check_itxfm(void)
{
LOCAL_ALIGNED_32(uint8_t, src, [32 * 32 * 2]);
- LOCAL_ALIGNED(32, uint8_t, dst, [32 * 32 * 2]);
- LOCAL_ALIGNED(32, uint8_t, dst0, [32 * 32 * 2]);
- LOCAL_ALIGNED(32, uint8_t, dst1, [32 * 32 * 2]);
- LOCAL_ALIGNED(32, int16_t, coef, [32 * 32 * 2]);
- LOCAL_ALIGNED(32, int16_t, subcoef0, [32 * 32 * 2]);
- LOCAL_ALIGNED(32, int16_t, subcoef1, [32 * 32 * 2]);
+ LOCAL_ALIGNED_32(uint8_t, dst, [32 * 32 * 2]);
+ LOCAL_ALIGNED_32(uint8_t, dst0, [32 * 32 * 2]);
+ LOCAL_ALIGNED_32(uint8_t, dst1, [32 * 32 * 2]);
+ LOCAL_ALIGNED_32(int16_t, coef, [32 * 32 * 2]);
+ LOCAL_ALIGNED_32(int16_t, subcoef0, [32 * 32 * 2]);
+ LOCAL_ALIGNED_32(int16_t, subcoef1, [32 * 32 * 2]);
declare_func(void, uint8_t *dst, ptrdiff_t stride, int16_t *block, int
eob);
VP9DSPContext dsp;
int y, x, tx, txtp, sub;
--
2.7.4
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel