Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Implement VSX Intrinsics

未关闭
#463 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
5/5
预计耗时
一周以上
新手友好度
25/100
Issue 类型
功能
描述清晰度
基本清楚
活跃度
停滞
技术栈
rust
领域
backend

调研方向

该 issue 未指定任何文件或测试。首先将列出的 VSX intrinsic 与 stdarch 中现有的供应商特定 intrinsic 实现及其测试进行比较;要完成此工作,需要实现完整的检查清单,并验证最终得到的 API 集合。

由索引模型根据 Issue 内容生成。

描述

A-powerpc

VSX introduces 64bits-2lanes vector types.

note: some altivec instructions have alternate encodings in VSX.

  • fn vec_abs(vector_double) -> vector_double
  • fn vec_add(vector_double, vector_double) -> vector_double
  • fn vec_and(vector_double, vector_double) -> vector_double
  • fn vec_and(vector_double, vector_bool_long) -> vector_double
  • fn vec_and(vector_bool_long, vector_double) -> vector_double
  • fn vec_and(vector_long, vector_long) -> vector_long
  • fn vec_and(vector_long, vector_bool_long) -> vector_long
  • fn vec_and(vector_bool_long, vector_long) -> vector_long
  • fn vec_and(vector_unsigned_long, vector_unsigned_long) -> vector_unsigned_long
  • fn vec_and(vector_unsigned_long, vector_bool_long) -> vector_unsigned_long
  • fn vec_and(vector_bool_long, vector_unsigned_long) -> vector_unsigned_long
  • fn vec_andc(vector_double, vector_double) -> vector_double
  • fn vec_andc(vector_double, vector_bool_long) -> vector_double
  • fn vec_andc(vector_bool_long, vector_double) -> vector_double
  • fn vec_andc(vector_long, vector_long) -> vector_long
  • fn vec_andc(vector_long, vector_bool_long) -> vector_long
  • fn vec_andc(vector_bool_long, vector_long) -> vector_long
  • fn vec_andc(vector_unsigned_long, vector_unsigned_long) -> vector_unsigned_long
  • fn vec_andc(vector_unsigned_long, vector_bool_long) -> vector_unsigned_long
  • fn vec_andc(vector_bool_long, vector_unsigned_long) -> vector_unsigned_long
  • fn vec_ceil(vector_double) -> vector_double
  • fn vec_cmpeq(vector_double, vector_double) -> vector_bool_long
  • fn vec_cmpge(vector_double, vector_double) -> vector_bool_long
  • fn vec_cmpgt(vector_double, vector_double) -> vector_bool_long
  • fn vec_cmple(vector_double, vector_double) -> vector_bool_long
  • fn vec_cmplt(vector_double, vector_double) -> vector_bool_long
  • fn vec_cpsgn(vector_double, vector_double) -> vector_double
  • fn vec_div(vector_float, vector_float) -> vector_float
  • fn vec_div(vector_double, vector_double) -> vector_double
  • fn vec_div(vector_long, vector_long) -> vector_long
  • fn vec_div(vector_unsigned_long, vector_unsigned_long) -> vector_unsigned_long
  • fn vec_floor(vector_double) -> vector_double
  • fn vec_ld(&mut i32, &vector___int128) -> vector___int128
  • fn vec_ld(&mut i32, &vector_unsigned___int128) -> vector_unsigned___int128
  • fn vec_ld(&mut i32, &i__int128) -> vector___int128
  • fn vec_ld(&mut i32, &u__int128) -> vector_unsigned___int128
  • fn vec_ld(&mut i32, &vector_double) -> vector_double
  • fn vec_ld(&mut i32, &f64) -> vector_double
  • fn vec_ldl(&mut i32, &vector_double) -> vector_double
  • fn vec_ldl(&mut i32, &f64) -> vector_double
  • fn vec_lvsl(&mut i32, &f64) -> vector_unsigned_char
  • fn vec_lvsr(&mut i32, &f64) -> vector_unsigned_char
  • fn vec_madd(vector_double, vector_double, vector_double) -> vector_double
  • fn vec_max(vector_double, vector_double) -> vector_double
  • fn vec_mergeh(vector_signed_long, vector_signed_long) -> vector_signed_long
  • fn vec_mergeh(vector_signed_long, vector_bool_long) -> vector_signed_long
  • fn vec_mergeh(vector_bool_long, vector_signed_long) -> vector_signed_long
  • fn vec_mergeh(vector_unsigned_long, vector_unsigned_long) -> vector_unsigned_long
  • fn vec_mergeh(vector_unsigned_long, vector_bool_long) -> vector_unsigned_long
  • fn vec_mergeh(vector_bool_long, vector_unsigned_long) -> vector_unsigned_long
  • fn vec_mergel(vector_signed_long, vector_signed_long) -> vector_signed_long
  • fn vec_mergel(vector_signed_long, vector_bool_long) -> vector_signed_long
  • fn vec_mergel(vector_bool_long, vector_signed_long) -> vector_signed_long
  • fn vec_mergel(vector_unsigned_long, vector_unsigned_long) -> vector_unsigned_long
  • fn vec_mergel(vector_unsigned_long, vector_bool_long) -> vector_unsigned_long
  • fn vec_mergel(vector_bool_long, vector_unsigned_long) -> vector_unsigned_long
  • fn vec_min(vector_double, vector_double) -> vector_double
  • fn vec_msub(vector_float, vector_float, vector_float) -> vector_float
  • fn vec_msub(vector_double, vector_double, vector_double) -> vector_double
  • fn vec_mul(vector_float, vector_float) -> vector_float
  • fn vec_mul(vector_double, vector_double) -> vector_double
  • fn vec_mul(vector_long, vector_long) -> vector_long
  • fn vec_mul(vector_unsigned_long, vector_unsigned_long) -> vector_unsigned_long
  • fn vec_nearbyint(vector_float) -> vector_float
  • fn vec_nearbyint(vector_double) -> vector_double
  • fn vec_nmadd(vector_float, vector_float, vector_float) -> vector_float
  • fn vec_nmadd(vector_double, vector_double, vector_double) -> vector_double
  • fn vec_nmsub(vector_double, vector_double, vector_double) -> vector_double
  • fn vec_nor(vector_double, vector_double) -> vector_double
  • fn vec_nor(vector_long, vector_long) -> vector_long
  • fn vec_nor(vector_long, vector_bool_long) -> vector_long
  • fn vec_nor(vector_bool_long, vector_long) -> vector_long
  • fn vec_nor(vector_unsigned_long, vector_unsigned_long) -> vector_unsigned_long
  • fn vec_nor(vector_unsigned_long, vector_bool_long) -> vector_unsigned_long
  • fn vec_nor(vector_bool_long, vector_unsigned_long) -> vector_unsigned_long
  • fn vec_or(vector_double, vector_double) -> vector_double
  • fn vec_or(vector_double, vector_bool_long) -> vector_double
  • fn vec_or(vector_bool_long, vector_double) -> vector_double
  • fn vec_or(vector_long, vector_long) -> vector_long
  • fn vec_or(vector_long, vector_bool_long) -> vector_long
  • fn vec_or(vector_bool_long, vector_long) -> vector_long
  • fn vec_or(vector_unsigned_long, vector_unsigned_long) -> vector_unsigned_long
  • fn vec_or(vector_unsigned_long, vector_bool_long) -> vector_unsigned_long
  • fn vec_or(vector_bool_long, vector_unsigned_long) -> vector_unsigned_long
  • fn vec_perm(vector_double, vector_double, vector_unsigned_char) -> vector_double
  • fn vec_perm(vector_long, vector_long, vector_unsigned_char) -> vector_long
  • fn vec_perm(vector_unsigned_long, vector_unsigned_long, vector_unsigned_char) -> vector_unsigned_long
  • fn vec_permxor(vector_bool_char, vector_bool_char, vector_bool_char) -> vector_bool_char
  • fn vec_permxor(vector_signed_char, vector_signed_char, vector_signed_char) -> vector_unsigned_char
  • fn vec_permxor(vector_unsigned_char, vector_unsigned_char, vector_unsigned_char) -> vector_unsigned_char
  • fn vec_rint(vector_double) -> vector_double
  • fn vec_recip(vector_double, vector_double) -> vector_double
  • fn vec_rsqrt(vector_double) -> vector_double
  • fn vec_rsqrte(vector_double) -> vector_double
  • fn vec_sel(vector_double, vector_double, vector_bool_long) -> vector_double
  • fn vec_sel(vector_double, vector_double, vector_unsigned_long) -> vector_double
  • fn vec_sel(vector_long, vector_long, vector_long) -> vector_long
  • fn vec_sel(vector_long, vector_long, vector_unsigned_long) -> vector_long
  • fn vec_sel(vector_long, vector_long, vector_bool_long) -> vector_long
  • fn vec_sel(vector_unsigned_long, vector_unsigned_long, vector_long) -> vector_unsigned_long
  • fn vec_sel(vector_unsigned_long, vector_unsigned_long, vector_unsigned_long) -> vector_unsigned_long
  • fn vec_sel(vector_unsigned_long, vector_unsigned_long, vector_bool_long) -> vector_unsigned_long
  • fn vec_splats(&mut f64) -> vector_double
  • fn vec_splats(&mut i64) -> vector_signed_long
  • fn vec_splats(&mut u64) -> vector_unsigned_long
  • fn vec_sqrt(vector_float) -> vector_float
  • fn vec_sqrt(vector_double) -> vector_double
  • fn vec_st(vector_double, &mut i32, vector_double) -> ()
  • fn vec_st(vector_double, &mut i32, &mut f64) -> ()
  • fn vec_sub(vector_double, vector_double) -> vector_double
  • fn vec_trunc(vector_double) -> vector_double
  • fn vec_xl(&mut i32, vector_double) -> vector_double
  • fn vec_xl(&mut i32, &mut f64) -> vector_double
  • fn vec_xl(&mut i32, vector_long_long) -> vector_long_long
  • fn vec_xl(&mut i32, &mut i64) -> vector_long_long
  • fn vec_xl(&mut i32, vector_unsigned_long_long) -> vector_unsigned_long_long
  • fn vec_xl(&mut i32, &mut u128) -> vector_unsigned_long_long
  • fn vec_xl(&mut i32, vector_float) -> vector_float
  • fn vec_xl(&mut i32, &mut i32) -> vector_float
  • fn vec_xl(&mut i32, vector_int) -> vector_int
  • fn vec_xl(&mut i32, &mut i32) -> vector_int
  • fn vec_xl(&mut i32, vector_unsigned_int) -> vector_unsigned_int
  • fn vec_xl(&mut i32, &mut u32) -> vector_unsigned_int
  • fn vec_xor(vector_double, vector_double) -> vector_double
  • fn vec_xor(vector_double, vector_bool_long) -> vector_double
  • fn vec_xor(vector_bool_long, vector_double) -> vector_double
  • fn vec_xor(vector_long, vector_long) -> vector_long
  • fn vec_xor(vector_long, vector_bool_long) -> vector_long
  • fn vec_xor(vector_bool_long, vector_long) -> vector_long
  • fn vec_xor(vector_unsigned_long, vector_unsigned_long) -> vector_unsigned_long
  • fn vec_xor(vector_unsigned_long, vector_bool_long) -> vector_unsigned_long
  • fn vec_xor(vector_bool_long, vector_unsigned_long) -> vector_unsigned_long
  • fn vec_xst(vector_double, &mut i32, vector_double) -> ()
  • fn vec_xst(vector_double, &mut i32, &mut f64) -> ()
  • fn vec_xst(vector_long_long, &mut i32, vector_long_long) -> ()
  • fn vec_xst(vector_long_long, &mut i32, &mut i64) -> ()
  • fn vec_xst(vector_unsigned_long_long, &mut i32, vector_unsigned_long_long) -> ()
  • fn vec_xst(vector_unsigned_long_long, &mut i32, &mut u128) -> ()
  • fn vec_xst(vector_float, &mut i32, vector_float) -> ()
  • fn vec_xst(vector_float, &mut i32, &mut i32) -> ()
  • fn vec_xst(vector_int, &mut i32, vector_int) -> ()
  • fn vec_xst(vector_int, &mut i32, &mut i32) -> ()
  • fn vec_xst(vector_unsigned_int, &mut i32, vector_unsigned_int) -> ()
  • fn vec_xst(vector_unsigned_int, &mut i32, &mut u32) -> ()
  • fn vec_all_eq(vector_double, vector_double) -> &mut i32
  • fn vec_all_ge(vector_double, vector_double) -> &mut i32
  • fn vec_all_gt(vector_double, vector_double) -> &mut i32
  • fn vec_all_le(vector_double, vector_double) -> &mut i32
  • fn vec_all_lt(vector_double, vector_double) -> &mut i32
  • fn vec_all_nan(vector_double) -> &mut i32
  • fn vec_all_ne(vector_double, vector_double) -> &mut i32
  • fn vec_all_nge(vector_double, vector_double) -> &mut i32
  • fn vec_all_ngt(vector_double, vector_double) -> &mut i32
  • fn vec_all_nle(vector_double, vector_double) -> &mut i32
  • fn vec_all_nlt(vector_double, vector_double) -> &mut i32
  • fn vec_all_numeric(vector_double) -> &mut i32
  • fn vec_any_eq(vector_double, vector_double) -> &mut i32
  • fn vec_any_ge(vector_double, vector_double) -> &mut i32
  • fn vec_any_gt(vector_double, vector_double) -> &mut i32
  • fn vec_any_le(vector_double, vector_double) -> &mut i32
  • fn vec_any_lt(vector_double, vector_double) -> &mut i32
  • fn vec_any_nan(vector_double) -> &mut i32
  • fn vec_any_ne(vector_double, vector_double) -> &mut i32
  • fn vec_any_nge(vector_double, vector_double) -> &mut i32
  • fn vec_any_ngt(vector_double, vector_double) -> &mut i32
  • fn vec_any_nle(vector_double, vector_double) -> &mut i32
  • fn vec_any_nlt(vector_double, vector_double) -> &mut i32
  • fn vec_any_numeric(vector_double) -> &mut i32
  • fn vec_vsx_ld(&mut i32, &vector_double) -> vector_double
  • fn vec_vsx_ld(&mut i32, &f64) -> vector_double
  • fn vec_vsx_ld(&mut i32, &vector_float) -> vector_float
  • fn vec_vsx_ld(&mut i32, &i32) -> vector_float
  • fn vec_vsx_ld(&mut i32, &vector_bool_int) -> vector_bool_int
  • fn vec_vsx_ld(&mut i32, &vector_signed_int) -> vector_signed_int
  • fn vec_vsx_ld(&mut i32, &i32) -> vector_signed_int
  • fn vec_vsx_ld(&mut i32, &i64) -> vector_signed_int
  • fn vec_vsx_ld(&mut i32, &vector_unsigned_int) -> vector_unsigned_int
  • fn vec_vsx_ld(&mut i32, &u32) -> vector_unsigned_int
  • fn vec_vsx_ld(&mut i32, &u64) -> vector_unsigned_int
  • fn vec_vsx_ld(&mut i32, &vector_bool_short) -> vector_bool_short
  • fn vec_vsx_ld(&mut i32, &vector_pixel) -> vector_pixel
  • fn vec_vsx_ld(&mut i32, &vector_signed_short) -> vector_signed_short
  • fn vec_vsx_ld(&mut i32, &i16) -> vector_signed_short
  • fn vec_vsx_ld(&mut i32, &vector_unsigned_short) -> vector_unsigned_short
  • fn vec_vsx_ld(&mut i32, &u16) -> vector_unsigned_short
  • fn vec_vsx_ld(&mut i32, &vector_bool_char) -> vector_bool_char
  • fn vec_vsx_ld(&mut i32, &vector_signed_char) -> vector_signed_char
  • fn vec_vsx_ld(&mut i32, &i8) -> vector_signed_char
  • fn vec_vsx_ld(&mut i32, &vector_unsigned_char) -> vector_unsigned_char
  • fn vec_vsx_ld(&mut i32, &u8) -> vector_unsigned_char
  • fn vec_vsx_st(vector_double, &mut i32, vector_double) -> ()
  • fn vec_vsx_st(vector_double, &mut i32, &mut f64) -> ()
  • fn vec_vsx_st(vector_float, &mut i32, vector_float) -> ()
  • fn vec_vsx_st(vector_float, &mut i32, &mut i32) -> ()
  • fn vec_vsx_st(vector_signed_int, &mut i32, vector_signed_int) -> ()
  • fn vec_vsx_st(vector_signed_int, &mut i32, &mut i32) -> ()
  • fn vec_vsx_st(vector_unsigned_int, &mut i32, vector_unsigned_int) -> ()
  • fn vec_vsx_st(vector_unsigned_int, &mut i32, &mut u32) -> ()
  • fn vec_vsx_st(vector_bool_int, &mut i32, vector_bool_int) -> ()
  • fn vec_vsx_st(vector_bool_int, &mut i32, &mut u32) -> ()
  • fn vec_vsx_st(vector_bool_int, &mut i32, &mut i32) -> ()
  • fn vec_vsx_st(vector_signed_short, &mut i32, vector_signed_short) -> ()
  • fn vec_vsx_st(vector_signed_short, &mut i32, &mut i16) -> ()
  • fn vec_vsx_st(vector_unsigned_short, &mut i32, vector_unsigned_short) -> ()
  • fn vec_vsx_st(vector_unsigned_short, &mut i32, &mut u16) -> ()
  • fn vec_vsx_st(vector_bool_short, &mut i32, vector_bool_short) -> ()
  • fn vec_vsx_st(vector_bool_short, &mut i32, &mut u16) -> ()
  • fn vec_vsx_st(vector_pixel, &mut i32, vector_pixel) -> ()
  • fn vec_vsx_st(vector_pixel, &mut i32, &mut u16) -> ()
  • fn vec_vsx_st(vector_pixel, &mut i32, &mut i16) -> ()
  • fn vec_vsx_st(vector_bool_short, &mut i32, &mut i16) -> ()
  • fn vec_vsx_st(vector_signed_char, &mut i32, vector_signed_char) -> ()
  • fn vec_vsx_st(vector_signed_char, &mut i32, &mut i8) -> ()
  • fn vec_vsx_st(vector_unsigned_char, &mut i32, vector_unsigned_char) -> ()
  • fn vec_vsx_st(vector_unsigned_char, &mut i32, &mut u8) -> ()
  • fn vec_vsx_st(vector_bool_char, &mut i32, vector_bool_char) -> ()
  • fn vec_vsx_st(vector_bool_char, &mut i32, &mut u8) -> ()
  • fn vec_vsx_st(vector_bool_char, &mut i32, &mut i8) -> ()
  • fn vec_xxpermdi(vector_double, vector_double, i32) -> vector_double
  • fn vec_xxpermdi(vector_float, vector_float, i32) -> vector_float
  • fn vec_xxpermdi(vector_long_long, vector_long_long, i32) -> vector_long_long
  • fn vec_xxpermdi(vector_unsigned_long_long, vector_unsigned_long_long, i32) -> vector_unsigned_long_long
  • fn vec_xxpermdi(vector_int, vector_int, i32) -> vector_int
  • fn vec_xxpermdi(vector_unsigned_int, vector_unsigned_int, i32) -> vector_unsigned_int
  • fn vec_xxpermdi(vector_short, vector_short, i32) -> vector_short
  • fn vec_xxpermdi(vector_unsigned_short, vector_unsigned_short, i32) -> vector_unsigned_short
  • fn vec_xxpermdi(vector_signed_char, vector_signed_char, i32) -> vector_signed_char
  • fn vec_xxpermdi(vector_unsigned_char, vector_unsigned_char, i32) -> vector_unsigned_char
  • fn vec_xxsldi(vector_double, vector_double, &mut i32) -> vector_double
  • fn vec_xxsldi(vector_float, vector_float, &mut i32) -> vector_float
  • fn vec_xxsldi(vector_long_long, vector_long_long, &mut i32) -> vector_long_long
  • fn vec_xxsldi(vector_unsigned_long_long, vector_unsigned_long_long, &mut i32) -> vector_unsigned_long_long
  • fn vec_xxsldi(vector_int, vector_int, &mut i32) -> vector_int
  • fn vec_xxsldi(vector_unsigned_int, vector_unsigned_int, &mut i32) -> vector_unsigned_int
  • fn vec_xxsldi(vector_short, vector_short, &mut i32) -> vector_short
  • fn vec_xxsldi(vector_unsigned_short, vector_unsigned_short, &mut i32) -> vector_unsigned_short
  • fn vec_xxsldi(vector_signed_char, vector_signed_char, &mut i32) -> vector_signed_char
  • fn vec_xxsldi(vector_unsigned_char, vector_unsigned_char, &mut i32) -> vector_unsigned_char
主要语言
Rust
星标
694
派生
341
平均合并
3 天 2 小时
30 天内合并 PR
14

环境准备

  • 没有 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

rust-lang/stdarch 的其他 Issue

查看 rust-lang/stdarch 的全部 Issue

相似的 Issue

更多 Rust Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。