Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
cc4efd13
R
Rust
项目概览
int
/
Rust
大约 1 年 前同步成功
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
Rust
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
cc4efd13
编写于
4月 18, 2017
作者:
M
Michael Wu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add support for Hexagon v60 HVX intrinsics
上级
8d19877e
变更
4
展开全部
隐藏空白更改
内联
并排
Showing
4 changed file
with
4288 addition
and
1 deletion
+4288
-1
src/etc/platform-intrinsics/hexagon/hvx_v60.json
src/etc/platform-intrinsics/hexagon/hvx_v60.json
+1326
-0
src/librustc_driver/target_features.rs
src/librustc_driver/target_features.rs
+3
-0
src/librustc_platform_intrinsics/hexagon.rs
src/librustc_platform_intrinsics/hexagon.rs
+2937
-0
src/librustc_platform_intrinsics/lib.rs
src/librustc_platform_intrinsics/lib.rs
+22
-1
未找到文件。
src/etc/platform-intrinsics/hexagon/hvx_v60.json
0 → 100644
浏览文件 @
cc4efd13
此差异已折叠。
点击以展开。
src/librustc_driver/target_features.rs
浏览文件 @
cc4efd13
...
...
@@ -27,6 +27,8 @@
"ssse3
\0
"
,
"tbm
\0
"
,
"lzcnt
\0
"
,
"popcnt
\0
"
,
"sse4a
\0
"
,
"rdrnd
\0
"
,
"rdseed
\0
"
,
"fma
\0
"
];
const
HEXAGON_WHITELIST
:
&
'static
[
&
'static
str
]
=
&
[
"hvx
\0
"
,
"hvx-double
\0
"
];
/// Add `target_feature = "..."` cfgs for a variety of platform
/// specific features (SSE, NEON etc.).
///
...
...
@@ -38,6 +40,7 @@ pub fn add_configuration(cfg: &mut ast::CrateConfig, sess: &Session) {
let
whitelist
=
match
&*
sess
.target.target.arch
{
"arm"
=>
ARM_WHITELIST
,
"x86"
|
"x86_64"
=>
X86_WHITELIST
,
"hexagon"
=>
HEXAGON_WHITELIST
,
_
=>
&
[],
};
...
...
src/librustc_platform_intrinsics/hexagon.rs
0 → 100644
浏览文件 @
cc4efd13
此差异已折叠。
点击以展开。
src/librustc_platform_intrinsics/lib.rs
浏览文件 @
cc4efd13
...
...
@@ -29,7 +29,7 @@ pub enum Type {
Integer
(
/* signed */
bool
,
u8
,
/* llvm width */
u8
),
Float
(
u8
),
Pointer
(
&
'static
Type
,
Option
<&
'static
Type
>
,
/* const */
bool
),
Vector
(
&
'static
Type
,
Option
<&
'static
Type
>
,
u
8
),
Vector
(
&
'static
Type
,
Option
<&
'static
Type
>
,
u
16
),
Aggregate
(
bool
,
&
'static
[
&
'static
Type
]),
}
...
...
@@ -56,6 +56,12 @@ pub enum IntrinsicDef {
static
U8x16
:
Type
=
Type
::
Vector
(
&
U8
,
None
,
16
);
static
I8x32
:
Type
=
Type
::
Vector
(
&
I8
,
None
,
32
);
static
U8x32
:
Type
=
Type
::
Vector
(
&
U8
,
None
,
32
);
static
I8x64
:
Type
=
Type
::
Vector
(
&
I8
,
None
,
64
);
static
U8x64
:
Type
=
Type
::
Vector
(
&
U8
,
None
,
64
);
static
I8x128
:
Type
=
Type
::
Vector
(
&
I8
,
None
,
128
);
static
U8x128
:
Type
=
Type
::
Vector
(
&
U8
,
None
,
128
);
static
I8x256
:
Type
=
Type
::
Vector
(
&
I8
,
None
,
256
);
static
U8x256
:
Type
=
Type
::
Vector
(
&
U8
,
None
,
256
);
static
I16x4
:
Type
=
Type
::
Vector
(
&
I16
,
None
,
4
);
static
U16x4
:
Type
=
Type
::
Vector
(
&
U16
,
None
,
4
);
...
...
@@ -63,6 +69,12 @@ pub enum IntrinsicDef {
static
U16x8
:
Type
=
Type
::
Vector
(
&
U16
,
None
,
8
);
static
I16x16
:
Type
=
Type
::
Vector
(
&
I16
,
None
,
16
);
static
U16x16
:
Type
=
Type
::
Vector
(
&
U16
,
None
,
16
);
static
I16x32
:
Type
=
Type
::
Vector
(
&
I16
,
None
,
32
);
static
U16x32
:
Type
=
Type
::
Vector
(
&
U16
,
None
,
32
);
static
I16x64
:
Type
=
Type
::
Vector
(
&
I16
,
None
,
64
);
static
U16x64
:
Type
=
Type
::
Vector
(
&
U16
,
None
,
64
);
static
I16x128
:
Type
=
Type
::
Vector
(
&
I16
,
None
,
128
);
static
U16x128
:
Type
=
Type
::
Vector
(
&
U16
,
None
,
128
);
static
I32x2
:
Type
=
Type
::
Vector
(
&
I32
,
None
,
2
);
static
U32x2
:
Type
=
Type
::
Vector
(
&
U32
,
None
,
2
);
...
...
@@ -70,6 +82,12 @@ pub enum IntrinsicDef {
static
U32x4
:
Type
=
Type
::
Vector
(
&
U32
,
None
,
4
);
static
I32x8
:
Type
=
Type
::
Vector
(
&
I32
,
None
,
8
);
static
U32x8
:
Type
=
Type
::
Vector
(
&
U32
,
None
,
8
);
static
I32x16
:
Type
=
Type
::
Vector
(
&
I32
,
None
,
16
);
static
U32x16
:
Type
=
Type
::
Vector
(
&
U32
,
None
,
16
);
static
I32x32
:
Type
=
Type
::
Vector
(
&
I32
,
None
,
32
);
static
U32x32
:
Type
=
Type
::
Vector
(
&
U32
,
None
,
32
);
static
I32x64
:
Type
=
Type
::
Vector
(
&
I32
,
None
,
64
);
static
U32x64
:
Type
=
Type
::
Vector
(
&
U32
,
None
,
64
);
static
I64x1
:
Type
=
Type
::
Vector
(
&
I64
,
None
,
1
);
static
U64x1
:
Type
=
Type
::
Vector
(
&
U64
,
None
,
1
);
...
...
@@ -96,6 +114,7 @@ pub enum IntrinsicDef {
mod
arm
;
mod
aarch64
;
mod
nvptx
;
mod
hexagon
;
impl
Intrinsic
{
pub
fn
find
(
name
:
&
str
)
->
Option
<
Intrinsic
>
{
...
...
@@ -107,6 +126,8 @@ pub fn find(name: &str) -> Option<Intrinsic> {
aarch64
::
find
(
name
)
}
else
if
name
.starts_with
(
"nvptx_"
)
{
nvptx
::
find
(
name
)
}
else
if
name
.starts_with
(
"Q6_"
)
{
hexagon
::
find
(
name
)
}
else
{
None
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录