History

avcodec/mpegvideo: Provide alignment hint to compiler

The underlying element type has always a size of 32B, so that the pointer is always at least 16B aligned. Clang uses this to upgrade the (inlined) memset to aligned stores. GCC doesn't (it does it only when the alignment hint is provided via __builtin_assume_aligned).

Andreas Rheinhardt committed 1 year ago

Commit dcd74081 parent 32cbadc1 file · +6 −4Browse files

Unified · Split

libavcodec/mpegvideo.c+6−4
@@ -504,11 +504,13 @@ void ff_clean_intra_table_entries(MpegEncContext *s) · 503 unmodified lines
504 dc_val[uxy] =504 dc_val[uxy] =
505 dc_val[vxy] = 1024;505 dc_val[vxy] = 1024;
506 /* ac pred */506 /* ac pred */
507 memset(s->ac_val[0][xy ], 0, 32 * sizeof(int16_t));507 int16_t (*ac_val)[16] = s->ac_val[0];
508 memset(s->ac_val[0][xy + wrap], 0, 32 * sizeof(int16_t));508 av_assume(!((uintptr_t)ac_val & 0xF));
509 memset(ac_val[xy ], 0, 2 * sizeof(*ac_val));
510 memset(ac_val[xy + wrap], 0, 2 * sizeof(*ac_val));
509 /* ac pred */511 /* ac pred */
510 memset(s->ac_val[0][uxy], 0, 16 * sizeof(int16_t));512 memset(ac_val[uxy], 0, sizeof(*ac_val));
511 memset(s->ac_val[0][vxy], 0, 16 * sizeof(int16_t));513 memset(ac_val[vxy], 0, sizeof(*ac_val));
512}514}
513 515
514void ff_init_block_index(MpegEncContext *s){ //FIXME maybe rename516void ff_init_block_index(MpegEncContext *s){ //FIXME maybe rename

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t