Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
c19a49e5
F
Ffmpeg
项目概览
小白菜888
/
Ffmpeg
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
Ffmpeg
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
c19a49e5
编写于
8月 28, 2014
作者:
L
Luca Barbato
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ppc: Support little endian intreadwrite
上级
7968059e
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
40 addition
and
24 deletion
+40
-24
libavutil/ppc/intreadwrite.h
libavutil/ppc/intreadwrite.h
+40
-24
未找到文件。
libavutil/ppc/intreadwrite.h
浏览文件 @
c19a49e5
...
...
@@ -24,56 +24,81 @@
#include <stdint.h>
#include "config.h"
/*
* -O0 would compile the packed struct version, which is used by
* default, in an overly verbose fashion, so we override it here.
*/
#if HAVE_BIGENDIAN
#define AV_RB64(p) (*(const uint64_t *)(p))
#define AV_WB64(p, v) (*(uint64_t *)(p) = (v))
#else
#define AV_RL64(p) (*(const uint64_t *)(p))
#define AV_WL64(p, v) (*(uint64_t *)(p) = (v))
#endif
#if HAVE_XFORM_ASM
#define AV_RL16 AV_RL16
static
av_always_inline
uint16_t
AV_RL16
(
const
void
*
p
)
#if HAVE_BIGENDIAN
#define AV_RL16 av_read_bswap16
#define AV_WL16 av_write_bswap16
#define AV_RL32 av_read_bswap32
#define AV_WL32 av_write_bswap32
#define AV_RL64 av_read_bswap64
#define AV_WL64 av_write_bswap64
#else
#define AV_RB16 av_read_bswap16
#define AV_WB16 av_write_bswap16
#define AV_RB32 av_read_bswap32
#define AV_WB32 av_write_bswap32
#define AV_RB64 av_read_bswap64
#define AV_WB64 av_write_bswap64
#endif
static
av_always_inline
uint16_t
av_read_bswap16
(
const
void
*
p
)
{
uint16_t
v
;
__asm__
(
"lhbrx %0, %y1"
:
"=r"
(
v
)
:
"Z"
(
*
(
const
uint16_t
*
)
p
));
return
v
;
}
#define AV_WL16 AV_WL16
static
av_always_inline
void
AV_WL16
(
void
*
p
,
uint16_t
v
)
static
av_always_inline
void
av_write_bswap16
(
void
*
p
,
uint16_t
v
)
{
__asm__
(
"sthbrx %1, %y0"
:
"=Z"
(
*
(
uint16_t
*
)
p
)
:
"r"
(
v
));
}
#define AV_RL32 AV_RL32
static
av_always_inline
uint32_t
AV_RL32
(
const
void
*
p
)
static
av_always_inline
uint32_t
av_read_bswap32
(
const
void
*
p
)
{
uint32_t
v
;
__asm__
(
"lwbrx %0, %y1"
:
"=r"
(
v
)
:
"Z"
(
*
(
const
uint32_t
*
)
p
));
return
v
;
}
#define AV_WL32 AV_WL32
static
av_always_inline
void
AV_WL32
(
void
*
p
,
uint32_t
v
)
static
av_always_inline
void
av_write_bswap32
(
void
*
p
,
uint32_t
v
)
{
__asm__
(
"stwbrx %1, %y0"
:
"=Z"
(
*
(
uint32_t
*
)
p
)
:
"r"
(
v
));
}
#if HAVE_LDBRX
#define AV_RL64 AV_RL64
static
av_always_inline
uint64_t
AV_RL64
(
const
void
*
p
)
static
av_always_inline
uint64_t
av_read_bswap64
(
const
void
*
p
)
{
uint64_t
v
;
__asm__
(
"ldbrx %0, %y1"
:
"=r"
(
v
)
:
"Z"
(
*
(
const
uint64_t
*
)
p
));
return
v
;
}
#define AV_WL64 AV_WL64
static
av_always_inline
void
AV_WL64
(
void
*
p
,
uint64_t
v
)
static
av_always_inline
void
av_write_bswap64
(
void
*
p
,
uint64_t
v
)
{
__asm__
(
"stdbrx %1, %y0"
:
"=Z"
(
*
(
uint64_t
*
)
p
)
:
"r"
(
v
));
}
#else
#define AV_RL64 AV_RL64
static
av_always_inline
uint64_t
AV_RL64
(
const
void
*
p
)
static
av_always_inline
uint64_t
av_read_bswap64
(
const
void
*
p
)
{
union
{
uint64_t
v
;
uint32_t
hl
[
2
];
}
v
;
__asm__
(
"lwbrx %0, %y2
\n\t
"
...
...
@@ -83,8 +108,7 @@ static av_always_inline uint64_t AV_RL64(const void *p)
return
v
.
v
;
}
#define AV_WL64 AV_WL64
static
av_always_inline
void
AV_WL64
(
void
*
p
,
uint64_t
v
)
static
av_always_inline
void
av_write_bswap64
(
void
*
p
,
uint64_t
v
)
{
union
{
uint64_t
v
;
uint32_t
hl
[
2
];
}
vv
=
{
v
};
__asm__
(
"stwbrx %2, %y0
\n\t
"
...
...
@@ -97,12 +121,4 @@ static av_always_inline void AV_WL64(void *p, uint64_t v)
#endif
/* HAVE_XFORM_ASM */
/*
* GCC fails miserably on the packed struct version which is used by
* default, so we override it here.
*/
#define AV_RB64(p) (*(const uint64_t *)(p))
#define AV_WB64(p, v) (*(uint64_t *)(p) = (v))
#endif
/* AVUTIL_PPC_INTREADWRITE_H */
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录