Skip to content

Implement VSX Intrinsics #463

Open
Open
@lu-zero

Description

@lu-zero

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions