From a690147be84ac1c7dd305f6a02d38ad7f430b0dc Mon Sep 17 00:00:00 2001 From: WANG Rui Date: Fri, 20 Mar 2026 10:05:34 +0800 Subject: [PATCH 1/2] stdarch-gen-loongarch: Support marking intrinsics as portable --- crates/stdarch-gen-loongarch/src/main.rs | 23 ++++++++++++++++++- .../src/portable-intrinsics.txt | 2 ++ 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 crates/stdarch-gen-loongarch/src/portable-intrinsics.txt diff --git a/crates/stdarch-gen-loongarch/src/main.rs b/crates/stdarch-gen-loongarch/src/main.rs index 3a946a12d6..8bdee521a3 100644 --- a/crates/stdarch-gen-loongarch/src/main.rs +++ b/crates/stdarch-gen-loongarch/src/main.rs @@ -1,3 +1,4 @@ +use std::collections::HashSet; use std::env; use std::fmt; use std::fs::File; @@ -90,6 +91,14 @@ impl TargetFeature { } } +fn portable_intrinsics() -> HashSet<&'static str> { + include_str!("portable-intrinsics.txt") + .lines() + .map(str::trim) + .filter(|line| !line.is_empty() && !line.starts_with('#')) + .collect() +} + fn gen_spec(in_file: String, ext_name: &str) -> io::Result<()> { let f = File::open(in_file.clone()).unwrap_or_else(|_| panic!("Failed to open {in_file}")); let f = BufReader::new(f); @@ -105,6 +114,7 @@ fn gen_spec(in_file: String, ext_name: &str) -> io::Result<()> { let mut asm_fmts = String::new(); let mut data_types = String::new(); let fn_pat = format!("__{ext_name}_"); + let portable_intrinsics = portable_intrinsics(); for line in f.lines() { let line = line.unwrap(); if line.is_empty() { @@ -121,6 +131,9 @@ fn gen_spec(in_file: String, ext_name: &str) -> io::Result<()> { let e = line.find('(').unwrap(); let name = line.get(s + 2..e).unwrap().trim().to_string(); out.push_str(&format!("/// {name}\n")); + if portable_intrinsics.contains(name.as_str()) { + out.push_str("impl = portable\n"); + } out.push_str(&format!("name = {name}\n")); out.push_str(&format!("asm-fmts = {asm_fmts}\n")); out.push_str(&format!("data-types = {data_types}\n")); @@ -146,6 +159,7 @@ fn gen_bind(in_file: String, ext_name: &str) -> io::Result<()> { let mut link_function_str = String::new(); let mut function_str = String::new(); let mut out = String::new(); + let mut skip = false; out.push_str(&format!( r#"// This code is automatically generated. DO NOT MODIFY. @@ -173,7 +187,9 @@ unsafe extern "unadjusted" { if line.is_empty() { continue; } - if let Some(name) = line.strip_prefix("name = ") { + if line.starts_with("impl = portable") { + skip = true; + } else if let Some(name) = line.strip_prefix("name = ") { current_name = Some(String::from(name)); } else if line.starts_with("asm-fmts = ") { asm_fmts = line[10..] @@ -210,6 +226,11 @@ unsafe extern "unadjusted" { panic!("DEBUG: line: {0} len: {1}", line, data_types.len()); } + if skip { + skip = false; + continue; + } + let (link_function, function) = gen_bind_body(¤t_name, &asm_fmts, &in_t, out_t, para_num, target); link_function_str.push_str(&link_function); diff --git a/crates/stdarch-gen-loongarch/src/portable-intrinsics.txt b/crates/stdarch-gen-loongarch/src/portable-intrinsics.txt new file mode 100644 index 0000000000..b62f7f5f8f --- /dev/null +++ b/crates/stdarch-gen-loongarch/src/portable-intrinsics.txt @@ -0,0 +1,2 @@ +# LSX intrinsics +# LASX intrinsics From b0dcc0033ffc49e3b82bf9e2b7a07fe66c7f2824 Mon Sep 17 00:00:00 2001 From: WANG Rui Date: Thu, 9 Apr 2026 19:45:07 +0800 Subject: [PATCH 2/2] loongarch: Use `intrinsics::simd` for selected LSX/LASX intrinsics This change migrates a subset of LSX/LASX intrinsics to the portable `intrinsics::simd` interface. Only straightforward mappings are converted in this patch. Intrinsics that require more complex transformations or currently result in suboptimal code generation are intentionally left unchanged and will be migrated incrementally in follow-up patches. --- .../src/loongarch64/lasx/generated.rs | 2204 ++------------- crates/core_arch/src/loongarch64/lasx/mod.rs | 7 + .../src/loongarch64/lasx/portable.rs | 201 ++ .../src/loongarch64/lsx/generated.rs | 2396 ++--------------- crates/core_arch/src/loongarch64/lsx/mod.rs | 7 + .../core_arch/src/loongarch64/lsx/portable.rs | 207 ++ crates/core_arch/src/loongarch64/mod.rs | 1 + crates/core_arch/src/loongarch64/simd.rs | 302 +++ crates/stdarch-gen-loongarch/lasx.spec | 186 ++ crates/stdarch-gen-loongarch/lsx.spec | 192 ++ .../src/portable-intrinsics.txt | 379 +++ 11 files changed, 1951 insertions(+), 4131 deletions(-) create mode 100644 crates/core_arch/src/loongarch64/lasx/portable.rs create mode 100644 crates/core_arch/src/loongarch64/lsx/portable.rs create mode 100644 crates/core_arch/src/loongarch64/simd.rs diff --git a/crates/core_arch/src/loongarch64/lasx/generated.rs b/crates/core_arch/src/loongarch64/lasx/generated.rs index 5559c6ad4d..de629914ab 100644 --- a/crates/core_arch/src/loongarch64/lasx/generated.rs +++ b/crates/core_arch/src/loongarch64/lasx/generated.rs @@ -11,38 +11,6 @@ use super::super::*; #[allow(improper_ctypes)] unsafe extern "unadjusted" { - #[link_name = "llvm.loongarch.lasx.xvsll.b"] - fn __lasx_xvsll_b(a: __v32i8, b: __v32i8) -> __v32i8; - #[link_name = "llvm.loongarch.lasx.xvsll.h"] - fn __lasx_xvsll_h(a: __v16i16, b: __v16i16) -> __v16i16; - #[link_name = "llvm.loongarch.lasx.xvsll.w"] - fn __lasx_xvsll_w(a: __v8i32, b: __v8i32) -> __v8i32; - #[link_name = "llvm.loongarch.lasx.xvsll.d"] - fn __lasx_xvsll_d(a: __v4i64, b: __v4i64) -> __v4i64; - #[link_name = "llvm.loongarch.lasx.xvslli.b"] - fn __lasx_xvslli_b(a: __v32i8, b: u32) -> __v32i8; - #[link_name = "llvm.loongarch.lasx.xvslli.h"] - fn __lasx_xvslli_h(a: __v16i16, b: u32) -> __v16i16; - #[link_name = "llvm.loongarch.lasx.xvslli.w"] - fn __lasx_xvslli_w(a: __v8i32, b: u32) -> __v8i32; - #[link_name = "llvm.loongarch.lasx.xvslli.d"] - fn __lasx_xvslli_d(a: __v4i64, b: u32) -> __v4i64; - #[link_name = "llvm.loongarch.lasx.xvsra.b"] - fn __lasx_xvsra_b(a: __v32i8, b: __v32i8) -> __v32i8; - #[link_name = "llvm.loongarch.lasx.xvsra.h"] - fn __lasx_xvsra_h(a: __v16i16, b: __v16i16) -> __v16i16; - #[link_name = "llvm.loongarch.lasx.xvsra.w"] - fn __lasx_xvsra_w(a: __v8i32, b: __v8i32) -> __v8i32; - #[link_name = "llvm.loongarch.lasx.xvsra.d"] - fn __lasx_xvsra_d(a: __v4i64, b: __v4i64) -> __v4i64; - #[link_name = "llvm.loongarch.lasx.xvsrai.b"] - fn __lasx_xvsrai_b(a: __v32i8, b: u32) -> __v32i8; - #[link_name = "llvm.loongarch.lasx.xvsrai.h"] - fn __lasx_xvsrai_h(a: __v16i16, b: u32) -> __v16i16; - #[link_name = "llvm.loongarch.lasx.xvsrai.w"] - fn __lasx_xvsrai_w(a: __v8i32, b: u32) -> __v8i32; - #[link_name = "llvm.loongarch.lasx.xvsrai.d"] - fn __lasx_xvsrai_d(a: __v4i64, b: u32) -> __v4i64; #[link_name = "llvm.loongarch.lasx.xvsrar.b"] fn __lasx_xvsrar_b(a: __v32i8, b: __v32i8) -> __v32i8; #[link_name = "llvm.loongarch.lasx.xvsrar.h"] @@ -59,22 +27,6 @@ unsafe extern "unadjusted" { fn __lasx_xvsrari_w(a: __v8i32, b: u32) -> __v8i32; #[link_name = "llvm.loongarch.lasx.xvsrari.d"] fn __lasx_xvsrari_d(a: __v4i64, b: u32) -> __v4i64; - #[link_name = "llvm.loongarch.lasx.xvsrl.b"] - fn __lasx_xvsrl_b(a: __v32i8, b: __v32i8) -> __v32i8; - #[link_name = "llvm.loongarch.lasx.xvsrl.h"] - fn __lasx_xvsrl_h(a: __v16i16, b: __v16i16) -> __v16i16; - #[link_name = "llvm.loongarch.lasx.xvsrl.w"] - fn __lasx_xvsrl_w(a: __v8i32, b: __v8i32) -> __v8i32; - #[link_name = "llvm.loongarch.lasx.xvsrl.d"] - fn __lasx_xvsrl_d(a: __v4i64, b: __v4i64) -> __v4i64; - #[link_name = "llvm.loongarch.lasx.xvsrli.b"] - fn __lasx_xvsrli_b(a: __v32i8, b: u32) -> __v32i8; - #[link_name = "llvm.loongarch.lasx.xvsrli.h"] - fn __lasx_xvsrli_h(a: __v16i16, b: u32) -> __v16i16; - #[link_name = "llvm.loongarch.lasx.xvsrli.w"] - fn __lasx_xvsrli_w(a: __v8i32, b: u32) -> __v8i32; - #[link_name = "llvm.loongarch.lasx.xvsrli.d"] - fn __lasx_xvsrli_d(a: __v4i64, b: u32) -> __v4i64; #[link_name = "llvm.loongarch.lasx.xvsrlr.b"] fn __lasx_xvsrlr_b(a: __v32i8, b: __v32i8) -> __v32i8; #[link_name = "llvm.loongarch.lasx.xvsrlr.h"] @@ -139,30 +91,6 @@ unsafe extern "unadjusted" { fn __lasx_xvbitrevi_w(a: __v8u32, b: u32) -> __v8u32; #[link_name = "llvm.loongarch.lasx.xvbitrevi.d"] fn __lasx_xvbitrevi_d(a: __v4u64, b: u32) -> __v4u64; - #[link_name = "llvm.loongarch.lasx.xvadd.b"] - fn __lasx_xvadd_b(a: __v32i8, b: __v32i8) -> __v32i8; - #[link_name = "llvm.loongarch.lasx.xvadd.h"] - fn __lasx_xvadd_h(a: __v16i16, b: __v16i16) -> __v16i16; - #[link_name = "llvm.loongarch.lasx.xvadd.w"] - fn __lasx_xvadd_w(a: __v8i32, b: __v8i32) -> __v8i32; - #[link_name = "llvm.loongarch.lasx.xvadd.d"] - fn __lasx_xvadd_d(a: __v4i64, b: __v4i64) -> __v4i64; - #[link_name = "llvm.loongarch.lasx.xvaddi.bu"] - fn __lasx_xvaddi_bu(a: __v32i8, b: u32) -> __v32i8; - #[link_name = "llvm.loongarch.lasx.xvaddi.hu"] - fn __lasx_xvaddi_hu(a: __v16i16, b: u32) -> __v16i16; - #[link_name = "llvm.loongarch.lasx.xvaddi.wu"] - fn __lasx_xvaddi_wu(a: __v8i32, b: u32) -> __v8i32; - #[link_name = "llvm.loongarch.lasx.xvaddi.du"] - fn __lasx_xvaddi_du(a: __v4i64, b: u32) -> __v4i64; - #[link_name = "llvm.loongarch.lasx.xvsub.b"] - fn __lasx_xvsub_b(a: __v32i8, b: __v32i8) -> __v32i8; - #[link_name = "llvm.loongarch.lasx.xvsub.h"] - fn __lasx_xvsub_h(a: __v16i16, b: __v16i16) -> __v16i16; - #[link_name = "llvm.loongarch.lasx.xvsub.w"] - fn __lasx_xvsub_w(a: __v8i32, b: __v8i32) -> __v8i32; - #[link_name = "llvm.loongarch.lasx.xvsub.d"] - fn __lasx_xvsub_d(a: __v4i64, b: __v4i64) -> __v4i64; #[link_name = "llvm.loongarch.lasx.xvsubi.bu"] fn __lasx_xvsubi_bu(a: __v32i8, b: u32) -> __v32i8; #[link_name = "llvm.loongarch.lasx.xvsubi.hu"] @@ -171,150 +99,6 @@ unsafe extern "unadjusted" { fn __lasx_xvsubi_wu(a: __v8i32, b: u32) -> __v8i32; #[link_name = "llvm.loongarch.lasx.xvsubi.du"] fn __lasx_xvsubi_du(a: __v4i64, b: u32) -> __v4i64; - #[link_name = "llvm.loongarch.lasx.xvmax.b"] - fn __lasx_xvmax_b(a: __v32i8, b: __v32i8) -> __v32i8; - #[link_name = "llvm.loongarch.lasx.xvmax.h"] - fn __lasx_xvmax_h(a: __v16i16, b: __v16i16) -> __v16i16; - #[link_name = "llvm.loongarch.lasx.xvmax.w"] - fn __lasx_xvmax_w(a: __v8i32, b: __v8i32) -> __v8i32; - #[link_name = "llvm.loongarch.lasx.xvmax.d"] - fn __lasx_xvmax_d(a: __v4i64, b: __v4i64) -> __v4i64; - #[link_name = "llvm.loongarch.lasx.xvmaxi.b"] - fn __lasx_xvmaxi_b(a: __v32i8, b: i32) -> __v32i8; - #[link_name = "llvm.loongarch.lasx.xvmaxi.h"] - fn __lasx_xvmaxi_h(a: __v16i16, b: i32) -> __v16i16; - #[link_name = "llvm.loongarch.lasx.xvmaxi.w"] - fn __lasx_xvmaxi_w(a: __v8i32, b: i32) -> __v8i32; - #[link_name = "llvm.loongarch.lasx.xvmaxi.d"] - fn __lasx_xvmaxi_d(a: __v4i64, b: i32) -> __v4i64; - #[link_name = "llvm.loongarch.lasx.xvmax.bu"] - fn __lasx_xvmax_bu(a: __v32u8, b: __v32u8) -> __v32u8; - #[link_name = "llvm.loongarch.lasx.xvmax.hu"] - fn __lasx_xvmax_hu(a: __v16u16, b: __v16u16) -> __v16u16; - #[link_name = "llvm.loongarch.lasx.xvmax.wu"] - fn __lasx_xvmax_wu(a: __v8u32, b: __v8u32) -> __v8u32; - #[link_name = "llvm.loongarch.lasx.xvmax.du"] - fn __lasx_xvmax_du(a: __v4u64, b: __v4u64) -> __v4u64; - #[link_name = "llvm.loongarch.lasx.xvmaxi.bu"] - fn __lasx_xvmaxi_bu(a: __v32u8, b: u32) -> __v32u8; - #[link_name = "llvm.loongarch.lasx.xvmaxi.hu"] - fn __lasx_xvmaxi_hu(a: __v16u16, b: u32) -> __v16u16; - #[link_name = "llvm.loongarch.lasx.xvmaxi.wu"] - fn __lasx_xvmaxi_wu(a: __v8u32, b: u32) -> __v8u32; - #[link_name = "llvm.loongarch.lasx.xvmaxi.du"] - fn __lasx_xvmaxi_du(a: __v4u64, b: u32) -> __v4u64; - #[link_name = "llvm.loongarch.lasx.xvmin.b"] - fn __lasx_xvmin_b(a: __v32i8, b: __v32i8) -> __v32i8; - #[link_name = "llvm.loongarch.lasx.xvmin.h"] - fn __lasx_xvmin_h(a: __v16i16, b: __v16i16) -> __v16i16; - #[link_name = "llvm.loongarch.lasx.xvmin.w"] - fn __lasx_xvmin_w(a: __v8i32, b: __v8i32) -> __v8i32; - #[link_name = "llvm.loongarch.lasx.xvmin.d"] - fn __lasx_xvmin_d(a: __v4i64, b: __v4i64) -> __v4i64; - #[link_name = "llvm.loongarch.lasx.xvmini.b"] - fn __lasx_xvmini_b(a: __v32i8, b: i32) -> __v32i8; - #[link_name = "llvm.loongarch.lasx.xvmini.h"] - fn __lasx_xvmini_h(a: __v16i16, b: i32) -> __v16i16; - #[link_name = "llvm.loongarch.lasx.xvmini.w"] - fn __lasx_xvmini_w(a: __v8i32, b: i32) -> __v8i32; - #[link_name = "llvm.loongarch.lasx.xvmini.d"] - fn __lasx_xvmini_d(a: __v4i64, b: i32) -> __v4i64; - #[link_name = "llvm.loongarch.lasx.xvmin.bu"] - fn __lasx_xvmin_bu(a: __v32u8, b: __v32u8) -> __v32u8; - #[link_name = "llvm.loongarch.lasx.xvmin.hu"] - fn __lasx_xvmin_hu(a: __v16u16, b: __v16u16) -> __v16u16; - #[link_name = "llvm.loongarch.lasx.xvmin.wu"] - fn __lasx_xvmin_wu(a: __v8u32, b: __v8u32) -> __v8u32; - #[link_name = "llvm.loongarch.lasx.xvmin.du"] - fn __lasx_xvmin_du(a: __v4u64, b: __v4u64) -> __v4u64; - #[link_name = "llvm.loongarch.lasx.xvmini.bu"] - fn __lasx_xvmini_bu(a: __v32u8, b: u32) -> __v32u8; - #[link_name = "llvm.loongarch.lasx.xvmini.hu"] - fn __lasx_xvmini_hu(a: __v16u16, b: u32) -> __v16u16; - #[link_name = "llvm.loongarch.lasx.xvmini.wu"] - fn __lasx_xvmini_wu(a: __v8u32, b: u32) -> __v8u32; - #[link_name = "llvm.loongarch.lasx.xvmini.du"] - fn __lasx_xvmini_du(a: __v4u64, b: u32) -> __v4u64; - #[link_name = "llvm.loongarch.lasx.xvseq.b"] - fn __lasx_xvseq_b(a: __v32i8, b: __v32i8) -> __v32i8; - #[link_name = "llvm.loongarch.lasx.xvseq.h"] - fn __lasx_xvseq_h(a: __v16i16, b: __v16i16) -> __v16i16; - #[link_name = "llvm.loongarch.lasx.xvseq.w"] - fn __lasx_xvseq_w(a: __v8i32, b: __v8i32) -> __v8i32; - #[link_name = "llvm.loongarch.lasx.xvseq.d"] - fn __lasx_xvseq_d(a: __v4i64, b: __v4i64) -> __v4i64; - #[link_name = "llvm.loongarch.lasx.xvseqi.b"] - fn __lasx_xvseqi_b(a: __v32i8, b: i32) -> __v32i8; - #[link_name = "llvm.loongarch.lasx.xvseqi.h"] - fn __lasx_xvseqi_h(a: __v16i16, b: i32) -> __v16i16; - #[link_name = "llvm.loongarch.lasx.xvseqi.w"] - fn __lasx_xvseqi_w(a: __v8i32, b: i32) -> __v8i32; - #[link_name = "llvm.loongarch.lasx.xvseqi.d"] - fn __lasx_xvseqi_d(a: __v4i64, b: i32) -> __v4i64; - #[link_name = "llvm.loongarch.lasx.xvslt.b"] - fn __lasx_xvslt_b(a: __v32i8, b: __v32i8) -> __v32i8; - #[link_name = "llvm.loongarch.lasx.xvslt.h"] - fn __lasx_xvslt_h(a: __v16i16, b: __v16i16) -> __v16i16; - #[link_name = "llvm.loongarch.lasx.xvslt.w"] - fn __lasx_xvslt_w(a: __v8i32, b: __v8i32) -> __v8i32; - #[link_name = "llvm.loongarch.lasx.xvslt.d"] - fn __lasx_xvslt_d(a: __v4i64, b: __v4i64) -> __v4i64; - #[link_name = "llvm.loongarch.lasx.xvslti.b"] - fn __lasx_xvslti_b(a: __v32i8, b: i32) -> __v32i8; - #[link_name = "llvm.loongarch.lasx.xvslti.h"] - fn __lasx_xvslti_h(a: __v16i16, b: i32) -> __v16i16; - #[link_name = "llvm.loongarch.lasx.xvslti.w"] - fn __lasx_xvslti_w(a: __v8i32, b: i32) -> __v8i32; - #[link_name = "llvm.loongarch.lasx.xvslti.d"] - fn __lasx_xvslti_d(a: __v4i64, b: i32) -> __v4i64; - #[link_name = "llvm.loongarch.lasx.xvslt.bu"] - fn __lasx_xvslt_bu(a: __v32u8, b: __v32u8) -> __v32i8; - #[link_name = "llvm.loongarch.lasx.xvslt.hu"] - fn __lasx_xvslt_hu(a: __v16u16, b: __v16u16) -> __v16i16; - #[link_name = "llvm.loongarch.lasx.xvslt.wu"] - fn __lasx_xvslt_wu(a: __v8u32, b: __v8u32) -> __v8i32; - #[link_name = "llvm.loongarch.lasx.xvslt.du"] - fn __lasx_xvslt_du(a: __v4u64, b: __v4u64) -> __v4i64; - #[link_name = "llvm.loongarch.lasx.xvslti.bu"] - fn __lasx_xvslti_bu(a: __v32u8, b: u32) -> __v32i8; - #[link_name = "llvm.loongarch.lasx.xvslti.hu"] - fn __lasx_xvslti_hu(a: __v16u16, b: u32) -> __v16i16; - #[link_name = "llvm.loongarch.lasx.xvslti.wu"] - fn __lasx_xvslti_wu(a: __v8u32, b: u32) -> __v8i32; - #[link_name = "llvm.loongarch.lasx.xvslti.du"] - fn __lasx_xvslti_du(a: __v4u64, b: u32) -> __v4i64; - #[link_name = "llvm.loongarch.lasx.xvsle.b"] - fn __lasx_xvsle_b(a: __v32i8, b: __v32i8) -> __v32i8; - #[link_name = "llvm.loongarch.lasx.xvsle.h"] - fn __lasx_xvsle_h(a: __v16i16, b: __v16i16) -> __v16i16; - #[link_name = "llvm.loongarch.lasx.xvsle.w"] - fn __lasx_xvsle_w(a: __v8i32, b: __v8i32) -> __v8i32; - #[link_name = "llvm.loongarch.lasx.xvsle.d"] - fn __lasx_xvsle_d(a: __v4i64, b: __v4i64) -> __v4i64; - #[link_name = "llvm.loongarch.lasx.xvslei.b"] - fn __lasx_xvslei_b(a: __v32i8, b: i32) -> __v32i8; - #[link_name = "llvm.loongarch.lasx.xvslei.h"] - fn __lasx_xvslei_h(a: __v16i16, b: i32) -> __v16i16; - #[link_name = "llvm.loongarch.lasx.xvslei.w"] - fn __lasx_xvslei_w(a: __v8i32, b: i32) -> __v8i32; - #[link_name = "llvm.loongarch.lasx.xvslei.d"] - fn __lasx_xvslei_d(a: __v4i64, b: i32) -> __v4i64; - #[link_name = "llvm.loongarch.lasx.xvsle.bu"] - fn __lasx_xvsle_bu(a: __v32u8, b: __v32u8) -> __v32i8; - #[link_name = "llvm.loongarch.lasx.xvsle.hu"] - fn __lasx_xvsle_hu(a: __v16u16, b: __v16u16) -> __v16i16; - #[link_name = "llvm.loongarch.lasx.xvsle.wu"] - fn __lasx_xvsle_wu(a: __v8u32, b: __v8u32) -> __v8i32; - #[link_name = "llvm.loongarch.lasx.xvsle.du"] - fn __lasx_xvsle_du(a: __v4u64, b: __v4u64) -> __v4i64; - #[link_name = "llvm.loongarch.lasx.xvslei.bu"] - fn __lasx_xvslei_bu(a: __v32u8, b: u32) -> __v32i8; - #[link_name = "llvm.loongarch.lasx.xvslei.hu"] - fn __lasx_xvslei_hu(a: __v16u16, b: u32) -> __v16i16; - #[link_name = "llvm.loongarch.lasx.xvslei.wu"] - fn __lasx_xvslei_wu(a: __v8u32, b: u32) -> __v8i32; - #[link_name = "llvm.loongarch.lasx.xvslei.du"] - fn __lasx_xvslei_du(a: __v4u64, b: u32) -> __v4i64; #[link_name = "llvm.loongarch.lasx.xvsat.b"] fn __lasx_xvsat_b(a: __v32i8, b: u32) -> __v32i8; #[link_name = "llvm.loongarch.lasx.xvsat.h"] @@ -419,46 +203,6 @@ unsafe extern "unadjusted" { fn __lasx_xvabsd_wu(a: __v8u32, b: __v8u32) -> __v8u32; #[link_name = "llvm.loongarch.lasx.xvabsd.du"] fn __lasx_xvabsd_du(a: __v4u64, b: __v4u64) -> __v4u64; - #[link_name = "llvm.loongarch.lasx.xvmul.b"] - fn __lasx_xvmul_b(a: __v32i8, b: __v32i8) -> __v32i8; - #[link_name = "llvm.loongarch.lasx.xvmul.h"] - fn __lasx_xvmul_h(a: __v16i16, b: __v16i16) -> __v16i16; - #[link_name = "llvm.loongarch.lasx.xvmul.w"] - fn __lasx_xvmul_w(a: __v8i32, b: __v8i32) -> __v8i32; - #[link_name = "llvm.loongarch.lasx.xvmul.d"] - fn __lasx_xvmul_d(a: __v4i64, b: __v4i64) -> __v4i64; - #[link_name = "llvm.loongarch.lasx.xvmadd.b"] - fn __lasx_xvmadd_b(a: __v32i8, b: __v32i8, c: __v32i8) -> __v32i8; - #[link_name = "llvm.loongarch.lasx.xvmadd.h"] - fn __lasx_xvmadd_h(a: __v16i16, b: __v16i16, c: __v16i16) -> __v16i16; - #[link_name = "llvm.loongarch.lasx.xvmadd.w"] - fn __lasx_xvmadd_w(a: __v8i32, b: __v8i32, c: __v8i32) -> __v8i32; - #[link_name = "llvm.loongarch.lasx.xvmadd.d"] - fn __lasx_xvmadd_d(a: __v4i64, b: __v4i64, c: __v4i64) -> __v4i64; - #[link_name = "llvm.loongarch.lasx.xvmsub.b"] - fn __lasx_xvmsub_b(a: __v32i8, b: __v32i8, c: __v32i8) -> __v32i8; - #[link_name = "llvm.loongarch.lasx.xvmsub.h"] - fn __lasx_xvmsub_h(a: __v16i16, b: __v16i16, c: __v16i16) -> __v16i16; - #[link_name = "llvm.loongarch.lasx.xvmsub.w"] - fn __lasx_xvmsub_w(a: __v8i32, b: __v8i32, c: __v8i32) -> __v8i32; - #[link_name = "llvm.loongarch.lasx.xvmsub.d"] - fn __lasx_xvmsub_d(a: __v4i64, b: __v4i64, c: __v4i64) -> __v4i64; - #[link_name = "llvm.loongarch.lasx.xvdiv.b"] - fn __lasx_xvdiv_b(a: __v32i8, b: __v32i8) -> __v32i8; - #[link_name = "llvm.loongarch.lasx.xvdiv.h"] - fn __lasx_xvdiv_h(a: __v16i16, b: __v16i16) -> __v16i16; - #[link_name = "llvm.loongarch.lasx.xvdiv.w"] - fn __lasx_xvdiv_w(a: __v8i32, b: __v8i32) -> __v8i32; - #[link_name = "llvm.loongarch.lasx.xvdiv.d"] - fn __lasx_xvdiv_d(a: __v4i64, b: __v4i64) -> __v4i64; - #[link_name = "llvm.loongarch.lasx.xvdiv.bu"] - fn __lasx_xvdiv_bu(a: __v32u8, b: __v32u8) -> __v32u8; - #[link_name = "llvm.loongarch.lasx.xvdiv.hu"] - fn __lasx_xvdiv_hu(a: __v16u16, b: __v16u16) -> __v16u16; - #[link_name = "llvm.loongarch.lasx.xvdiv.wu"] - fn __lasx_xvdiv_wu(a: __v8u32, b: __v8u32) -> __v8u32; - #[link_name = "llvm.loongarch.lasx.xvdiv.du"] - fn __lasx_xvdiv_du(a: __v4u64, b: __v4u64) -> __v4u64; #[link_name = "llvm.loongarch.lasx.xvhaddw.h.b"] fn __lasx_xvhaddw_h_b(a: __v32i8, b: __v32i8) -> __v16i16; #[link_name = "llvm.loongarch.lasx.xvhaddw.w.h"] @@ -483,22 +227,6 @@ unsafe extern "unadjusted" { fn __lasx_xvhsubw_wu_hu(a: __v16u16, b: __v16u16) -> __v8i32; #[link_name = "llvm.loongarch.lasx.xvhsubw.du.wu"] fn __lasx_xvhsubw_du_wu(a: __v8u32, b: __v8u32) -> __v4i64; - #[link_name = "llvm.loongarch.lasx.xvmod.b"] - fn __lasx_xvmod_b(a: __v32i8, b: __v32i8) -> __v32i8; - #[link_name = "llvm.loongarch.lasx.xvmod.h"] - fn __lasx_xvmod_h(a: __v16i16, b: __v16i16) -> __v16i16; - #[link_name = "llvm.loongarch.lasx.xvmod.w"] - fn __lasx_xvmod_w(a: __v8i32, b: __v8i32) -> __v8i32; - #[link_name = "llvm.loongarch.lasx.xvmod.d"] - fn __lasx_xvmod_d(a: __v4i64, b: __v4i64) -> __v4i64; - #[link_name = "llvm.loongarch.lasx.xvmod.bu"] - fn __lasx_xvmod_bu(a: __v32u8, b: __v32u8) -> __v32u8; - #[link_name = "llvm.loongarch.lasx.xvmod.hu"] - fn __lasx_xvmod_hu(a: __v16u16, b: __v16u16) -> __v16u16; - #[link_name = "llvm.loongarch.lasx.xvmod.wu"] - fn __lasx_xvmod_wu(a: __v8u32, b: __v8u32) -> __v8u32; - #[link_name = "llvm.loongarch.lasx.xvmod.du"] - fn __lasx_xvmod_du(a: __v4u64, b: __v4u64) -> __v4u64; #[link_name = "llvm.loongarch.lasx.xvrepl128vei.b"] fn __lasx_xvrepl128vei_b(a: __v32i8, b: u32) -> __v32i8; #[link_name = "llvm.loongarch.lasx.xvrepl128vei.h"] @@ -563,20 +291,12 @@ unsafe extern "unadjusted" { fn __lasx_xvshuf_w(a: __v8i32, b: __v8i32, c: __v8i32) -> __v8i32; #[link_name = "llvm.loongarch.lasx.xvshuf.d"] fn __lasx_xvshuf_d(a: __v4i64, b: __v4i64, c: __v4i64) -> __v4i64; - #[link_name = "llvm.loongarch.lasx.xvand.v"] - fn __lasx_xvand_v(a: __v32u8, b: __v32u8) -> __v32u8; #[link_name = "llvm.loongarch.lasx.xvandi.b"] fn __lasx_xvandi_b(a: __v32u8, b: u32) -> __v32u8; - #[link_name = "llvm.loongarch.lasx.xvor.v"] - fn __lasx_xvor_v(a: __v32u8, b: __v32u8) -> __v32u8; #[link_name = "llvm.loongarch.lasx.xvori.b"] fn __lasx_xvori_b(a: __v32u8, b: u32) -> __v32u8; - #[link_name = "llvm.loongarch.lasx.xvnor.v"] - fn __lasx_xvnor_v(a: __v32u8, b: __v32u8) -> __v32u8; #[link_name = "llvm.loongarch.lasx.xvnori.b"] fn __lasx_xvnori_b(a: __v32u8, b: u32) -> __v32u8; - #[link_name = "llvm.loongarch.lasx.xvxor.v"] - fn __lasx_xvxor_v(a: __v32u8, b: __v32u8) -> __v32u8; #[link_name = "llvm.loongarch.lasx.xvxori.b"] fn __lasx_xvxori_b(a: __v32u8, b: u32) -> __v32u8; #[link_name = "llvm.loongarch.lasx.xvbitsel.v"] @@ -589,22 +309,6 @@ unsafe extern "unadjusted" { fn __lasx_xvshuf4i_h(a: __v16i16, b: u32) -> __v16i16; #[link_name = "llvm.loongarch.lasx.xvshuf4i.w"] fn __lasx_xvshuf4i_w(a: __v8i32, b: u32) -> __v8i32; - #[link_name = "llvm.loongarch.lasx.xvreplgr2vr.b"] - fn __lasx_xvreplgr2vr_b(a: i32) -> __v32i8; - #[link_name = "llvm.loongarch.lasx.xvreplgr2vr.h"] - fn __lasx_xvreplgr2vr_h(a: i32) -> __v16i16; - #[link_name = "llvm.loongarch.lasx.xvreplgr2vr.w"] - fn __lasx_xvreplgr2vr_w(a: i32) -> __v8i32; - #[link_name = "llvm.loongarch.lasx.xvreplgr2vr.d"] - fn __lasx_xvreplgr2vr_d(a: i64) -> __v4i64; - #[link_name = "llvm.loongarch.lasx.xvpcnt.b"] - fn __lasx_xvpcnt_b(a: __v32i8) -> __v32i8; - #[link_name = "llvm.loongarch.lasx.xvpcnt.h"] - fn __lasx_xvpcnt_h(a: __v16i16) -> __v16i16; - #[link_name = "llvm.loongarch.lasx.xvpcnt.w"] - fn __lasx_xvpcnt_w(a: __v8i32) -> __v8i32; - #[link_name = "llvm.loongarch.lasx.xvpcnt.d"] - fn __lasx_xvpcnt_d(a: __v4i64) -> __v4i64; #[link_name = "llvm.loongarch.lasx.xvclo.b"] fn __lasx_xvclo_b(a: __v32i8) -> __v32i8; #[link_name = "llvm.loongarch.lasx.xvclo.h"] @@ -613,30 +317,6 @@ unsafe extern "unadjusted" { fn __lasx_xvclo_w(a: __v8i32) -> __v8i32; #[link_name = "llvm.loongarch.lasx.xvclo.d"] fn __lasx_xvclo_d(a: __v4i64) -> __v4i64; - #[link_name = "llvm.loongarch.lasx.xvclz.b"] - fn __lasx_xvclz_b(a: __v32i8) -> __v32i8; - #[link_name = "llvm.loongarch.lasx.xvclz.h"] - fn __lasx_xvclz_h(a: __v16i16) -> __v16i16; - #[link_name = "llvm.loongarch.lasx.xvclz.w"] - fn __lasx_xvclz_w(a: __v8i32) -> __v8i32; - #[link_name = "llvm.loongarch.lasx.xvclz.d"] - fn __lasx_xvclz_d(a: __v4i64) -> __v4i64; - #[link_name = "llvm.loongarch.lasx.xvfadd.s"] - fn __lasx_xvfadd_s(a: __v8f32, b: __v8f32) -> __v8f32; - #[link_name = "llvm.loongarch.lasx.xvfadd.d"] - fn __lasx_xvfadd_d(a: __v4f64, b: __v4f64) -> __v4f64; - #[link_name = "llvm.loongarch.lasx.xvfsub.s"] - fn __lasx_xvfsub_s(a: __v8f32, b: __v8f32) -> __v8f32; - #[link_name = "llvm.loongarch.lasx.xvfsub.d"] - fn __lasx_xvfsub_d(a: __v4f64, b: __v4f64) -> __v4f64; - #[link_name = "llvm.loongarch.lasx.xvfmul.s"] - fn __lasx_xvfmul_s(a: __v8f32, b: __v8f32) -> __v8f32; - #[link_name = "llvm.loongarch.lasx.xvfmul.d"] - fn __lasx_xvfmul_d(a: __v4f64, b: __v4f64) -> __v4f64; - #[link_name = "llvm.loongarch.lasx.xvfdiv.s"] - fn __lasx_xvfdiv_s(a: __v8f32, b: __v8f32) -> __v8f32; - #[link_name = "llvm.loongarch.lasx.xvfdiv.d"] - fn __lasx_xvfdiv_d(a: __v4f64, b: __v4f64) -> __v4f64; #[link_name = "llvm.loongarch.lasx.xvfcvt.h.s"] fn __lasx_xvfcvt_h_s(a: __v8f32, b: __v8f32) -> __v16i16; #[link_name = "llvm.loongarch.lasx.xvfcvt.s.d"] @@ -661,10 +341,6 @@ unsafe extern "unadjusted" { fn __lasx_xvfclass_s(a: __v8f32) -> __v8i32; #[link_name = "llvm.loongarch.lasx.xvfclass.d"] fn __lasx_xvfclass_d(a: __v4f64) -> __v4i64; - #[link_name = "llvm.loongarch.lasx.xvfsqrt.s"] - fn __lasx_xvfsqrt_s(a: __v8f32) -> __v8f32; - #[link_name = "llvm.loongarch.lasx.xvfsqrt.d"] - fn __lasx_xvfsqrt_d(a: __v4f64) -> __v4f64; #[link_name = "llvm.loongarch.lasx.xvfrecip.s"] fn __lasx_xvfrecip_s(a: __v8f32) -> __v8f32; #[link_name = "llvm.loongarch.lasx.xvfrecip.d"] @@ -731,16 +407,6 @@ unsafe extern "unadjusted" { fn __lasx_xvreplve_d(a: __v4i64, b: i32) -> __v4i64; #[link_name = "llvm.loongarch.lasx.xvpermi.w"] fn __lasx_xvpermi_w(a: __v8i32, b: __v8i32, c: u32) -> __v8i32; - #[link_name = "llvm.loongarch.lasx.xvandn.v"] - fn __lasx_xvandn_v(a: __v32u8, b: __v32u8) -> __v32u8; - #[link_name = "llvm.loongarch.lasx.xvneg.b"] - fn __lasx_xvneg_b(a: __v32i8) -> __v32i8; - #[link_name = "llvm.loongarch.lasx.xvneg.h"] - fn __lasx_xvneg_h(a: __v16i16) -> __v16i16; - #[link_name = "llvm.loongarch.lasx.xvneg.w"] - fn __lasx_xvneg_w(a: __v8i32) -> __v8i32; - #[link_name = "llvm.loongarch.lasx.xvneg.d"] - fn __lasx_xvneg_d(a: __v4i64) -> __v4i64; #[link_name = "llvm.loongarch.lasx.xvmuh.b"] fn __lasx_xvmuh_b(a: __v32i8, b: __v32i8) -> __v32i8; #[link_name = "llvm.loongarch.lasx.xvmuh.h"] @@ -867,22 +533,6 @@ unsafe extern "unadjusted" { fn __lasx_xvsigncov_w(a: __v8i32, b: __v8i32) -> __v8i32; #[link_name = "llvm.loongarch.lasx.xvsigncov.d"] fn __lasx_xvsigncov_d(a: __v4i64, b: __v4i64) -> __v4i64; - #[link_name = "llvm.loongarch.lasx.xvfmadd.s"] - fn __lasx_xvfmadd_s(a: __v8f32, b: __v8f32, c: __v8f32) -> __v8f32; - #[link_name = "llvm.loongarch.lasx.xvfmadd.d"] - fn __lasx_xvfmadd_d(a: __v4f64, b: __v4f64, c: __v4f64) -> __v4f64; - #[link_name = "llvm.loongarch.lasx.xvfmsub.s"] - fn __lasx_xvfmsub_s(a: __v8f32, b: __v8f32, c: __v8f32) -> __v8f32; - #[link_name = "llvm.loongarch.lasx.xvfmsub.d"] - fn __lasx_xvfmsub_d(a: __v4f64, b: __v4f64, c: __v4f64) -> __v4f64; - #[link_name = "llvm.loongarch.lasx.xvfnmadd.s"] - fn __lasx_xvfnmadd_s(a: __v8f32, b: __v8f32, c: __v8f32) -> __v8f32; - #[link_name = "llvm.loongarch.lasx.xvfnmadd.d"] - fn __lasx_xvfnmadd_d(a: __v4f64, b: __v4f64, c: __v4f64) -> __v4f64; - #[link_name = "llvm.loongarch.lasx.xvfnmsub.s"] - fn __lasx_xvfnmsub_s(a: __v8f32, b: __v8f32, c: __v8f32) -> __v8f32; - #[link_name = "llvm.loongarch.lasx.xvfnmsub.d"] - fn __lasx_xvfnmsub_d(a: __v4f64, b: __v4f64, c: __v4f64) -> __v4f64; #[link_name = "llvm.loongarch.lasx.xvftintrne.w.s"] fn __lasx_xvftintrne_w_s(a: __v8f32) -> __v8i32; #[link_name = "llvm.loongarch.lasx.xvftintrne.l.d"] @@ -979,8 +629,6 @@ unsafe extern "unadjusted" { fn __lasx_xvssrln_h_w(a: __v8i32, b: __v8i32) -> __v16i16; #[link_name = "llvm.loongarch.lasx.xvssrln.w.d"] fn __lasx_xvssrln_w_d(a: __v4i64, b: __v4i64) -> __v8i32; - #[link_name = "llvm.loongarch.lasx.xvorn.v"] - fn __lasx_xvorn_v(a: __v32u8, b: __v32u8) -> __v32u8; #[link_name = "llvm.loongarch.lasx.xvldi"] fn __lasx_xvldi(a: i32) -> __v4i64; #[link_name = "llvm.loongarch.lasx.xvldx"] @@ -989,10 +637,6 @@ unsafe extern "unadjusted" { fn __lasx_xvstx(a: __v32i8, b: *mut i8, c: i64); #[link_name = "llvm.loongarch.lasx.xvextl.qu.du"] fn __lasx_xvextl_qu_du(a: __v4u64) -> __v4u64; - #[link_name = "llvm.loongarch.lasx.xvinsgr2vr.w"] - fn __lasx_xvinsgr2vr_w(a: __v8i32, b: i32, c: u32) -> __v8i32; - #[link_name = "llvm.loongarch.lasx.xvinsgr2vr.d"] - fn __lasx_xvinsgr2vr_d(a: __v4i64, b: i64, c: u32) -> __v4i64; #[link_name = "llvm.loongarch.lasx.xvreplve0.b"] fn __lasx_xvreplve0_b(a: __v32i8) -> __v32i8; #[link_name = "llvm.loongarch.lasx.xvreplve0.h"] @@ -1041,14 +685,6 @@ unsafe extern "unadjusted" { fn __lasx_xvldrepl_w(a: *const i8, b: i32) -> __v8i32; #[link_name = "llvm.loongarch.lasx.xvldrepl.d"] fn __lasx_xvldrepl_d(a: *const i8, b: i32) -> __v4i64; - #[link_name = "llvm.loongarch.lasx.xvpickve2gr.w"] - fn __lasx_xvpickve2gr_w(a: __v8i32, b: u32) -> i32; - #[link_name = "llvm.loongarch.lasx.xvpickve2gr.wu"] - fn __lasx_xvpickve2gr_wu(a: __v8i32, b: u32) -> u32; - #[link_name = "llvm.loongarch.lasx.xvpickve2gr.d"] - fn __lasx_xvpickve2gr_d(a: __v4i64, b: u32) -> i64; - #[link_name = "llvm.loongarch.lasx.xvpickve2gr.du"] - fn __lasx_xvpickve2gr_du(a: __v4i64, b: u32) -> u64; #[link_name = "llvm.loongarch.lasx.xvaddwev.q.d"] fn __lasx_xvaddwev_q_d(a: __v4i64, b: __v4i64) -> __v4i64; #[link_name = "llvm.loongarch.lasx.xvaddwev.d.w"] @@ -1483,14 +1119,6 @@ unsafe extern "unadjusted" { fn __lasx_xvpickve_d_f(a: __v4f64, b: u32) -> __v4f64; #[link_name = "llvm.loongarch.lasx.xvpickve.w.f"] fn __lasx_xvpickve_w_f(a: __v8f32, b: u32) -> __v8f32; - #[link_name = "llvm.loongarch.lasx.xvrepli.b"] - fn __lasx_xvrepli_b(a: i32) -> __v32i8; - #[link_name = "llvm.loongarch.lasx.xvrepli.d"] - fn __lasx_xvrepli_d(a: i32) -> __v4i64; - #[link_name = "llvm.loongarch.lasx.xvrepli.h"] - fn __lasx_xvrepli_h(a: i32) -> __v16i16; - #[link_name = "llvm.loongarch.lasx.xvrepli.w"] - fn __lasx_xvrepli_w(a: i32) -> __v8i32; #[link_name = "llvm.loongarch.lasx.cast.128.s"] fn __lasx_cast_128_s(a: __v4f32) -> __v8f32; #[link_name = "llvm.loongarch.lasx.cast.128.d"] @@ -1529,134 +1157,6 @@ unsafe extern "unadjusted" { fn __lasx_insert_128_hi(a: __v4i64, b: __v2i64) -> __v4i64; } -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsll_b(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvsll_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsll_h(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvsll_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsll_w(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvsll_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsll_d(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvsll_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvslli_b(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM3, 3); - unsafe { transmute(__lasx_xvslli_b(transmute(a), IMM3)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvslli_h(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM4, 4); - unsafe { transmute(__lasx_xvslli_h(transmute(a), IMM4)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvslli_w(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lasx_xvslli_w(transmute(a), IMM5)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvslli_d(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM6, 6); - unsafe { transmute(__lasx_xvslli_d(transmute(a), IMM6)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsra_b(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvsra_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsra_h(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvsra_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsra_w(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvsra_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsra_d(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvsra_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsrai_b(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM3, 3); - unsafe { transmute(__lasx_xvsrai_b(transmute(a), IMM3)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsrai_h(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM4, 4); - unsafe { transmute(__lasx_xvsrai_h(transmute(a), IMM4)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsrai_w(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lasx_xvsrai_w(transmute(a), IMM5)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsrai_d(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM6, 6); - unsafe { transmute(__lasx_xvsrai_d(transmute(a), IMM6)) } -} - #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] @@ -1721,70 +1221,6 @@ pub fn lasx_xvsrari_d(a: m256i) -> m256i { unsafe { transmute(__lasx_xvsrari_d(transmute(a), IMM6)) } } -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsrl_b(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvsrl_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsrl_h(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvsrl_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsrl_w(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvsrl_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsrl_d(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvsrl_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsrli_b(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM3, 3); - unsafe { transmute(__lasx_xvsrli_b(transmute(a), IMM3)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsrli_h(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM4, 4); - unsafe { transmute(__lasx_xvsrli_h(transmute(a), IMM4)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsrli_w(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lasx_xvsrli_w(transmute(a), IMM5)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsrli_d(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM6, 6); - unsafe { transmute(__lasx_xvsrli_d(transmute(a), IMM6)) } -} - #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] @@ -2043,911 +1479,243 @@ pub fn lasx_xvbitrevi_d(a: m256i) -> m256i { #[inline(always)] #[target_feature(enable = "lasx")] +#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvadd_b(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvadd_b(transmute(a), transmute(b))) } +pub fn lasx_xvsubi_bu(a: m256i) -> m256i { + static_assert_uimm_bits!(IMM5, 5); + unsafe { transmute(__lasx_xvsubi_bu(transmute(a), IMM5)) } } #[inline(always)] #[target_feature(enable = "lasx")] +#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvadd_h(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvadd_h(transmute(a), transmute(b))) } +pub fn lasx_xvsubi_hu(a: m256i) -> m256i { + static_assert_uimm_bits!(IMM5, 5); + unsafe { transmute(__lasx_xvsubi_hu(transmute(a), IMM5)) } } #[inline(always)] #[target_feature(enable = "lasx")] +#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvadd_w(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvadd_w(transmute(a), transmute(b))) } +pub fn lasx_xvsubi_wu(a: m256i) -> m256i { + static_assert_uimm_bits!(IMM5, 5); + unsafe { transmute(__lasx_xvsubi_wu(transmute(a), IMM5)) } } #[inline(always)] #[target_feature(enable = "lasx")] +#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvadd_d(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvadd_d(transmute(a), transmute(b))) } +pub fn lasx_xvsubi_du(a: m256i) -> m256i { + static_assert_uimm_bits!(IMM5, 5); + unsafe { transmute(__lasx_xvsubi_du(transmute(a), IMM5)) } } #[inline(always)] #[target_feature(enable = "lasx")] #[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvaddi_bu(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lasx_xvaddi_bu(transmute(a), IMM5)) } +pub fn lasx_xvsat_b(a: m256i) -> m256i { + static_assert_uimm_bits!(IMM3, 3); + unsafe { transmute(__lasx_xvsat_b(transmute(a), IMM3)) } } #[inline(always)] #[target_feature(enable = "lasx")] #[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvaddi_hu(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lasx_xvaddi_hu(transmute(a), IMM5)) } +pub fn lasx_xvsat_h(a: m256i) -> m256i { + static_assert_uimm_bits!(IMM4, 4); + unsafe { transmute(__lasx_xvsat_h(transmute(a), IMM4)) } } #[inline(always)] #[target_feature(enable = "lasx")] #[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvaddi_wu(a: m256i) -> m256i { +pub fn lasx_xvsat_w(a: m256i) -> m256i { static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lasx_xvaddi_wu(transmute(a), IMM5)) } + unsafe { transmute(__lasx_xvsat_w(transmute(a), IMM5)) } } #[inline(always)] #[target_feature(enable = "lasx")] #[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvaddi_du(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lasx_xvaddi_du(transmute(a), IMM5)) } +pub fn lasx_xvsat_d(a: m256i) -> m256i { + static_assert_uimm_bits!(IMM6, 6); + unsafe { transmute(__lasx_xvsat_d(transmute(a), IMM6)) } } #[inline(always)] #[target_feature(enable = "lasx")] +#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsub_b(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvsub_b(transmute(a), transmute(b))) } +pub fn lasx_xvsat_bu(a: m256i) -> m256i { + static_assert_uimm_bits!(IMM3, 3); + unsafe { transmute(__lasx_xvsat_bu(transmute(a), IMM3)) } } #[inline(always)] #[target_feature(enable = "lasx")] +#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsub_h(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvsub_h(transmute(a), transmute(b))) } +pub fn lasx_xvsat_hu(a: m256i) -> m256i { + static_assert_uimm_bits!(IMM4, 4); + unsafe { transmute(__lasx_xvsat_hu(transmute(a), IMM4)) } } #[inline(always)] #[target_feature(enable = "lasx")] +#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsub_w(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvsub_w(transmute(a), transmute(b))) } +pub fn lasx_xvsat_wu(a: m256i) -> m256i { + static_assert_uimm_bits!(IMM5, 5); + unsafe { transmute(__lasx_xvsat_wu(transmute(a), IMM5)) } } #[inline(always)] #[target_feature(enable = "lasx")] +#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsub_d(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvsub_d(transmute(a), transmute(b))) } +pub fn lasx_xvsat_du(a: m256i) -> m256i { + static_assert_uimm_bits!(IMM6, 6); + unsafe { transmute(__lasx_xvsat_du(transmute(a), IMM6)) } } #[inline(always)] #[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsubi_bu(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lasx_xvsubi_bu(transmute(a), IMM5)) } +pub fn lasx_xvadda_b(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvadda_b(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsubi_hu(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lasx_xvsubi_hu(transmute(a), IMM5)) } +pub fn lasx_xvadda_h(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvadda_h(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsubi_wu(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lasx_xvsubi_wu(transmute(a), IMM5)) } +pub fn lasx_xvadda_w(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvadda_w(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsubi_du(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lasx_xvsubi_du(transmute(a), IMM5)) } +pub fn lasx_xvadda_d(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvadda_d(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmax_b(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvmax_b(transmute(a), transmute(b))) } +pub fn lasx_xvsadd_b(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvsadd_b(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmax_h(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvmax_h(transmute(a), transmute(b))) } +pub fn lasx_xvsadd_h(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvsadd_h(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmax_w(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvmax_w(transmute(a), transmute(b))) } +pub fn lasx_xvsadd_w(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvsadd_w(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmax_d(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvmax_d(transmute(a), transmute(b))) } +pub fn lasx_xvsadd_d(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvsadd_d(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmaxi_b(a: m256i) -> m256i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lasx_xvmaxi_b(transmute(a), IMM_S5)) } +pub fn lasx_xvsadd_bu(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvsadd_bu(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmaxi_h(a: m256i) -> m256i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lasx_xvmaxi_h(transmute(a), IMM_S5)) } +pub fn lasx_xvsadd_hu(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvsadd_hu(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmaxi_w(a: m256i) -> m256i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lasx_xvmaxi_w(transmute(a), IMM_S5)) } +pub fn lasx_xvsadd_wu(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvsadd_wu(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmaxi_d(a: m256i) -> m256i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lasx_xvmaxi_d(transmute(a), IMM_S5)) } +pub fn lasx_xvsadd_du(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvsadd_du(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmax_bu(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvmax_bu(transmute(a), transmute(b))) } +pub fn lasx_xvavg_b(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvavg_b(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmax_hu(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvmax_hu(transmute(a), transmute(b))) } +pub fn lasx_xvavg_h(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvavg_h(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmax_wu(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvmax_wu(transmute(a), transmute(b))) } +pub fn lasx_xvavg_w(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvavg_w(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmax_du(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvmax_du(transmute(a), transmute(b))) } +pub fn lasx_xvavg_d(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvavg_d(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmaxi_bu(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lasx_xvmaxi_bu(transmute(a), IMM5)) } +pub fn lasx_xvavg_bu(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvavg_bu(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmaxi_hu(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lasx_xvmaxi_hu(transmute(a), IMM5)) } +pub fn lasx_xvavg_hu(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvavg_hu(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmaxi_wu(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lasx_xvmaxi_wu(transmute(a), IMM5)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmaxi_du(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lasx_xvmaxi_du(transmute(a), IMM5)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmin_b(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvmin_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmin_h(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvmin_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmin_w(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvmin_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmin_d(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvmin_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmini_b(a: m256i) -> m256i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lasx_xvmini_b(transmute(a), IMM_S5)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmini_h(a: m256i) -> m256i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lasx_xvmini_h(transmute(a), IMM_S5)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmini_w(a: m256i) -> m256i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lasx_xvmini_w(transmute(a), IMM_S5)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmini_d(a: m256i) -> m256i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lasx_xvmini_d(transmute(a), IMM_S5)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmin_bu(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvmin_bu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmin_hu(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvmin_hu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmin_wu(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvmin_wu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmin_du(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvmin_du(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmini_bu(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lasx_xvmini_bu(transmute(a), IMM5)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmini_hu(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lasx_xvmini_hu(transmute(a), IMM5)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmini_wu(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lasx_xvmini_wu(transmute(a), IMM5)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmini_du(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lasx_xvmini_du(transmute(a), IMM5)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvseq_b(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvseq_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvseq_h(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvseq_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvseq_w(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvseq_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvseq_d(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvseq_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvseqi_b(a: m256i) -> m256i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lasx_xvseqi_b(transmute(a), IMM_S5)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvseqi_h(a: m256i) -> m256i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lasx_xvseqi_h(transmute(a), IMM_S5)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvseqi_w(a: m256i) -> m256i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lasx_xvseqi_w(transmute(a), IMM_S5)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvseqi_d(a: m256i) -> m256i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lasx_xvseqi_d(transmute(a), IMM_S5)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvslt_b(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvslt_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvslt_h(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvslt_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvslt_w(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvslt_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvslt_d(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvslt_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvslti_b(a: m256i) -> m256i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lasx_xvslti_b(transmute(a), IMM_S5)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvslti_h(a: m256i) -> m256i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lasx_xvslti_h(transmute(a), IMM_S5)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvslti_w(a: m256i) -> m256i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lasx_xvslti_w(transmute(a), IMM_S5)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvslti_d(a: m256i) -> m256i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lasx_xvslti_d(transmute(a), IMM_S5)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvslt_bu(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvslt_bu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvslt_hu(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvslt_hu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvslt_wu(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvslt_wu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvslt_du(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvslt_du(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvslti_bu(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lasx_xvslti_bu(transmute(a), IMM5)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvslti_hu(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lasx_xvslti_hu(transmute(a), IMM5)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvslti_wu(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lasx_xvslti_wu(transmute(a), IMM5)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvslti_du(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lasx_xvslti_du(transmute(a), IMM5)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsle_b(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvsle_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsle_h(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvsle_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsle_w(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvsle_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsle_d(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvsle_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvslei_b(a: m256i) -> m256i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lasx_xvslei_b(transmute(a), IMM_S5)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvslei_h(a: m256i) -> m256i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lasx_xvslei_h(transmute(a), IMM_S5)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvslei_w(a: m256i) -> m256i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lasx_xvslei_w(transmute(a), IMM_S5)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvslei_d(a: m256i) -> m256i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lasx_xvslei_d(transmute(a), IMM_S5)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsle_bu(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvsle_bu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsle_hu(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvsle_hu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsle_wu(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvsle_wu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsle_du(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvsle_du(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvslei_bu(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lasx_xvslei_bu(transmute(a), IMM5)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvslei_hu(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lasx_xvslei_hu(transmute(a), IMM5)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvslei_wu(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lasx_xvslei_wu(transmute(a), IMM5)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvslei_du(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lasx_xvslei_du(transmute(a), IMM5)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsat_b(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM3, 3); - unsafe { transmute(__lasx_xvsat_b(transmute(a), IMM3)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsat_h(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM4, 4); - unsafe { transmute(__lasx_xvsat_h(transmute(a), IMM4)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsat_w(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lasx_xvsat_w(transmute(a), IMM5)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsat_d(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM6, 6); - unsafe { transmute(__lasx_xvsat_d(transmute(a), IMM6)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsat_bu(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM3, 3); - unsafe { transmute(__lasx_xvsat_bu(transmute(a), IMM3)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsat_hu(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM4, 4); - unsafe { transmute(__lasx_xvsat_hu(transmute(a), IMM4)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsat_wu(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lasx_xvsat_wu(transmute(a), IMM5)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsat_du(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM6, 6); - unsafe { transmute(__lasx_xvsat_du(transmute(a), IMM6)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvadda_b(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvadda_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvadda_h(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvadda_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvadda_w(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvadda_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvadda_d(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvadda_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsadd_b(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvsadd_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsadd_h(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvsadd_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsadd_w(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvsadd_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsadd_d(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvsadd_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsadd_bu(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvsadd_bu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsadd_hu(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvsadd_hu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsadd_wu(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvsadd_wu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvsadd_du(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvsadd_du(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvavg_b(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvavg_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvavg_h(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvavg_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvavg_w(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvavg_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvavg_d(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvavg_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvavg_bu(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvavg_bu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvavg_hu(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvavg_hu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvavg_wu(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvavg_wu(transmute(a), transmute(b))) } +pub fn lasx_xvavg_wu(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvavg_wu(transmute(a), transmute(b))) } } #[inline(always)] @@ -2967,302 +1735,162 @@ pub fn lasx_xvavgr_b(a: m256i, b: m256i) -> m256i { #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvavgr_h(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvavgr_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvavgr_w(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvavgr_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvavgr_d(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvavgr_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvavgr_bu(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvavgr_bu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvavgr_hu(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvavgr_hu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvavgr_wu(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvavgr_wu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvavgr_du(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvavgr_du(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvssub_b(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvssub_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvssub_h(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvssub_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvssub_w(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvssub_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvssub_d(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvssub_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvssub_bu(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvssub_bu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvssub_hu(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvssub_hu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvssub_wu(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvssub_wu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvssub_du(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvssub_du(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvabsd_b(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvabsd_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvabsd_h(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvabsd_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvabsd_w(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvabsd_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvabsd_d(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvabsd_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvabsd_bu(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvabsd_bu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvabsd_hu(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvabsd_hu(transmute(a), transmute(b))) } +pub fn lasx_xvavgr_h(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvavgr_h(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvabsd_wu(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvabsd_wu(transmute(a), transmute(b))) } +pub fn lasx_xvavgr_w(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvavgr_w(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvabsd_du(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvabsd_du(transmute(a), transmute(b))) } +pub fn lasx_xvavgr_d(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvavgr_d(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmul_b(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvmul_b(transmute(a), transmute(b))) } +pub fn lasx_xvavgr_bu(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvavgr_bu(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmul_h(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvmul_h(transmute(a), transmute(b))) } +pub fn lasx_xvavgr_hu(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvavgr_hu(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmul_w(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvmul_w(transmute(a), transmute(b))) } +pub fn lasx_xvavgr_wu(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvavgr_wu(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmul_d(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvmul_d(transmute(a), transmute(b))) } +pub fn lasx_xvavgr_du(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvavgr_du(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmadd_b(a: m256i, b: m256i, c: m256i) -> m256i { - unsafe { transmute(__lasx_xvmadd_b(transmute(a), transmute(b), transmute(c))) } +pub fn lasx_xvssub_b(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvssub_b(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmadd_h(a: m256i, b: m256i, c: m256i) -> m256i { - unsafe { transmute(__lasx_xvmadd_h(transmute(a), transmute(b), transmute(c))) } +pub fn lasx_xvssub_h(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvssub_h(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmadd_w(a: m256i, b: m256i, c: m256i) -> m256i { - unsafe { transmute(__lasx_xvmadd_w(transmute(a), transmute(b), transmute(c))) } +pub fn lasx_xvssub_w(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvssub_w(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmadd_d(a: m256i, b: m256i, c: m256i) -> m256i { - unsafe { transmute(__lasx_xvmadd_d(transmute(a), transmute(b), transmute(c))) } +pub fn lasx_xvssub_d(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvssub_d(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmsub_b(a: m256i, b: m256i, c: m256i) -> m256i { - unsafe { transmute(__lasx_xvmsub_b(transmute(a), transmute(b), transmute(c))) } +pub fn lasx_xvssub_bu(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvssub_bu(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmsub_h(a: m256i, b: m256i, c: m256i) -> m256i { - unsafe { transmute(__lasx_xvmsub_h(transmute(a), transmute(b), transmute(c))) } +pub fn lasx_xvssub_hu(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvssub_hu(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmsub_w(a: m256i, b: m256i, c: m256i) -> m256i { - unsafe { transmute(__lasx_xvmsub_w(transmute(a), transmute(b), transmute(c))) } +pub fn lasx_xvssub_wu(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvssub_wu(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmsub_d(a: m256i, b: m256i, c: m256i) -> m256i { - unsafe { transmute(__lasx_xvmsub_d(transmute(a), transmute(b), transmute(c))) } +pub fn lasx_xvssub_du(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvssub_du(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvdiv_b(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvdiv_b(transmute(a), transmute(b))) } +pub fn lasx_xvabsd_b(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvabsd_b(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvdiv_h(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvdiv_h(transmute(a), transmute(b))) } +pub fn lasx_xvabsd_h(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvabsd_h(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvdiv_w(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvdiv_w(transmute(a), transmute(b))) } +pub fn lasx_xvabsd_w(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvabsd_w(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvdiv_d(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvdiv_d(transmute(a), transmute(b))) } +pub fn lasx_xvabsd_d(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvabsd_d(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvdiv_bu(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvdiv_bu(transmute(a), transmute(b))) } +pub fn lasx_xvabsd_bu(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvabsd_bu(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvdiv_hu(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvdiv_hu(transmute(a), transmute(b))) } +pub fn lasx_xvabsd_hu(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvabsd_hu(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvdiv_wu(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvdiv_wu(transmute(a), transmute(b))) } +pub fn lasx_xvabsd_wu(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvabsd_wu(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvdiv_du(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvdiv_du(transmute(a), transmute(b))) } +pub fn lasx_xvabsd_du(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvabsd_du(transmute(a), transmute(b))) } } #[inline(always)] @@ -3349,62 +1977,6 @@ pub fn lasx_xvhsubw_du_wu(a: m256i, b: m256i) -> m256i { unsafe { transmute(__lasx_xvhsubw_du_wu(transmute(a), transmute(b))) } } -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmod_b(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvmod_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmod_h(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvmod_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmod_w(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvmod_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmod_d(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvmod_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmod_bu(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvmod_bu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmod_hu(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvmod_hu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmod_wu(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvmod_wu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvmod_du(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvmod_du(transmute(a), transmute(b))) } -} - #[inline(always)] #[target_feature(enable = "lasx")] #[rustc_legacy_const_generics(1)] @@ -3521,395 +2093,227 @@ pub fn lasx_xvilvh_w(a: m256i, b: m256i) -> m256i { #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvilvh_d(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvilvh_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvilvl_b(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvilvl_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvilvl_h(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvilvl_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvilvl_w(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvilvl_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvilvl_d(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvilvl_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvpackev_b(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvpackev_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvpackev_h(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvpackev_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvpackev_w(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvpackev_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvpackev_d(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvpackev_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvpackod_b(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvpackod_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvpackod_h(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvpackod_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvpackod_w(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvpackod_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvpackod_d(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvpackod_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvshuf_b(a: m256i, b: m256i, c: m256i) -> m256i { - unsafe { transmute(__lasx_xvshuf_b(transmute(a), transmute(b), transmute(c))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvshuf_h(a: m256i, b: m256i, c: m256i) -> m256i { - unsafe { transmute(__lasx_xvshuf_h(transmute(a), transmute(b), transmute(c))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvshuf_w(a: m256i, b: m256i, c: m256i) -> m256i { - unsafe { transmute(__lasx_xvshuf_w(transmute(a), transmute(b), transmute(c))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvshuf_d(a: m256i, b: m256i, c: m256i) -> m256i { - unsafe { transmute(__lasx_xvshuf_d(transmute(a), transmute(b), transmute(c))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvand_v(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvand_v(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvandi_b(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM8, 8); - unsafe { transmute(__lasx_xvandi_b(transmute(a), IMM8)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvor_v(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvor_v(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvori_b(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM8, 8); - unsafe { transmute(__lasx_xvori_b(transmute(a), IMM8)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvnor_v(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvnor_v(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvnori_b(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM8, 8); - unsafe { transmute(__lasx_xvnori_b(transmute(a), IMM8)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvxor_v(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvxor_v(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvxori_b(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM8, 8); - unsafe { transmute(__lasx_xvxori_b(transmute(a), IMM8)) } +pub fn lasx_xvilvh_d(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvilvh_d(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvbitsel_v(a: m256i, b: m256i, c: m256i) -> m256i { - unsafe { transmute(__lasx_xvbitsel_v(transmute(a), transmute(b), transmute(c))) } +pub fn lasx_xvilvl_b(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvilvl_b(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(2)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvbitseli_b(a: m256i, b: m256i) -> m256i { - static_assert_uimm_bits!(IMM8, 8); - unsafe { transmute(__lasx_xvbitseli_b(transmute(a), transmute(b), IMM8)) } +pub fn lasx_xvilvl_h(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvilvl_h(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvshuf4i_b(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM8, 8); - unsafe { transmute(__lasx_xvshuf4i_b(transmute(a), IMM8)) } +pub fn lasx_xvilvl_w(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvilvl_w(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvshuf4i_h(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM8, 8); - unsafe { transmute(__lasx_xvshuf4i_h(transmute(a), IMM8)) } +pub fn lasx_xvilvl_d(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvilvl_d(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvshuf4i_w(a: m256i) -> m256i { - static_assert_uimm_bits!(IMM8, 8); - unsafe { transmute(__lasx_xvshuf4i_w(transmute(a), IMM8)) } +pub fn lasx_xvpackev_b(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvpackev_b(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvreplgr2vr_b(a: i32) -> m256i { - unsafe { transmute(__lasx_xvreplgr2vr_b(transmute(a))) } +pub fn lasx_xvpackev_h(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvpackev_h(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvreplgr2vr_h(a: i32) -> m256i { - unsafe { transmute(__lasx_xvreplgr2vr_h(transmute(a))) } +pub fn lasx_xvpackev_w(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvpackev_w(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvreplgr2vr_w(a: i32) -> m256i { - unsafe { transmute(__lasx_xvreplgr2vr_w(transmute(a))) } +pub fn lasx_xvpackev_d(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvpackev_d(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvreplgr2vr_d(a: i64) -> m256i { - unsafe { transmute(__lasx_xvreplgr2vr_d(transmute(a))) } +pub fn lasx_xvpackod_b(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvpackod_b(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvpcnt_b(a: m256i) -> m256i { - unsafe { transmute(__lasx_xvpcnt_b(transmute(a))) } +pub fn lasx_xvpackod_h(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvpackod_h(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvpcnt_h(a: m256i) -> m256i { - unsafe { transmute(__lasx_xvpcnt_h(transmute(a))) } +pub fn lasx_xvpackod_w(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvpackod_w(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvpcnt_w(a: m256i) -> m256i { - unsafe { transmute(__lasx_xvpcnt_w(transmute(a))) } +pub fn lasx_xvpackod_d(a: m256i, b: m256i) -> m256i { + unsafe { transmute(__lasx_xvpackod_d(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvpcnt_d(a: m256i) -> m256i { - unsafe { transmute(__lasx_xvpcnt_d(transmute(a))) } +pub fn lasx_xvshuf_b(a: m256i, b: m256i, c: m256i) -> m256i { + unsafe { transmute(__lasx_xvshuf_b(transmute(a), transmute(b), transmute(c))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvclo_b(a: m256i) -> m256i { - unsafe { transmute(__lasx_xvclo_b(transmute(a))) } +pub fn lasx_xvshuf_h(a: m256i, b: m256i, c: m256i) -> m256i { + unsafe { transmute(__lasx_xvshuf_h(transmute(a), transmute(b), transmute(c))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvclo_h(a: m256i) -> m256i { - unsafe { transmute(__lasx_xvclo_h(transmute(a))) } +pub fn lasx_xvshuf_w(a: m256i, b: m256i, c: m256i) -> m256i { + unsafe { transmute(__lasx_xvshuf_w(transmute(a), transmute(b), transmute(c))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvclo_w(a: m256i) -> m256i { - unsafe { transmute(__lasx_xvclo_w(transmute(a))) } +pub fn lasx_xvshuf_d(a: m256i, b: m256i, c: m256i) -> m256i { + unsafe { transmute(__lasx_xvshuf_d(transmute(a), transmute(b), transmute(c))) } } #[inline(always)] #[target_feature(enable = "lasx")] +#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvclo_d(a: m256i) -> m256i { - unsafe { transmute(__lasx_xvclo_d(transmute(a))) } +pub fn lasx_xvandi_b(a: m256i) -> m256i { + static_assert_uimm_bits!(IMM8, 8); + unsafe { transmute(__lasx_xvandi_b(transmute(a), IMM8)) } } #[inline(always)] #[target_feature(enable = "lasx")] +#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvclz_b(a: m256i) -> m256i { - unsafe { transmute(__lasx_xvclz_b(transmute(a))) } +pub fn lasx_xvori_b(a: m256i) -> m256i { + static_assert_uimm_bits!(IMM8, 8); + unsafe { transmute(__lasx_xvori_b(transmute(a), IMM8)) } } #[inline(always)] #[target_feature(enable = "lasx")] +#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvclz_h(a: m256i) -> m256i { - unsafe { transmute(__lasx_xvclz_h(transmute(a))) } +pub fn lasx_xvnori_b(a: m256i) -> m256i { + static_assert_uimm_bits!(IMM8, 8); + unsafe { transmute(__lasx_xvnori_b(transmute(a), IMM8)) } } #[inline(always)] #[target_feature(enable = "lasx")] +#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvclz_w(a: m256i) -> m256i { - unsafe { transmute(__lasx_xvclz_w(transmute(a))) } +pub fn lasx_xvxori_b(a: m256i) -> m256i { + static_assert_uimm_bits!(IMM8, 8); + unsafe { transmute(__lasx_xvxori_b(transmute(a), IMM8)) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvclz_d(a: m256i) -> m256i { - unsafe { transmute(__lasx_xvclz_d(transmute(a))) } +pub fn lasx_xvbitsel_v(a: m256i, b: m256i, c: m256i) -> m256i { + unsafe { transmute(__lasx_xvbitsel_v(transmute(a), transmute(b), transmute(c))) } } #[inline(always)] #[target_feature(enable = "lasx")] +#[rustc_legacy_const_generics(2)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvfadd_s(a: m256, b: m256) -> m256 { - unsafe { transmute(__lasx_xvfadd_s(transmute(a), transmute(b))) } +pub fn lasx_xvbitseli_b(a: m256i, b: m256i) -> m256i { + static_assert_uimm_bits!(IMM8, 8); + unsafe { transmute(__lasx_xvbitseli_b(transmute(a), transmute(b), IMM8)) } } #[inline(always)] #[target_feature(enable = "lasx")] +#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvfadd_d(a: m256d, b: m256d) -> m256d { - unsafe { transmute(__lasx_xvfadd_d(transmute(a), transmute(b))) } +pub fn lasx_xvshuf4i_b(a: m256i) -> m256i { + static_assert_uimm_bits!(IMM8, 8); + unsafe { transmute(__lasx_xvshuf4i_b(transmute(a), IMM8)) } } #[inline(always)] #[target_feature(enable = "lasx")] +#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvfsub_s(a: m256, b: m256) -> m256 { - unsafe { transmute(__lasx_xvfsub_s(transmute(a), transmute(b))) } +pub fn lasx_xvshuf4i_h(a: m256i) -> m256i { + static_assert_uimm_bits!(IMM8, 8); + unsafe { transmute(__lasx_xvshuf4i_h(transmute(a), IMM8)) } } #[inline(always)] #[target_feature(enable = "lasx")] +#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvfsub_d(a: m256d, b: m256d) -> m256d { - unsafe { transmute(__lasx_xvfsub_d(transmute(a), transmute(b))) } +pub fn lasx_xvshuf4i_w(a: m256i) -> m256i { + static_assert_uimm_bits!(IMM8, 8); + unsafe { transmute(__lasx_xvshuf4i_w(transmute(a), IMM8)) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvfmul_s(a: m256, b: m256) -> m256 { - unsafe { transmute(__lasx_xvfmul_s(transmute(a), transmute(b))) } +pub fn lasx_xvclo_b(a: m256i) -> m256i { + unsafe { transmute(__lasx_xvclo_b(transmute(a))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvfmul_d(a: m256d, b: m256d) -> m256d { - unsafe { transmute(__lasx_xvfmul_d(transmute(a), transmute(b))) } +pub fn lasx_xvclo_h(a: m256i) -> m256i { + unsafe { transmute(__lasx_xvclo_h(transmute(a))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvfdiv_s(a: m256, b: m256) -> m256 { - unsafe { transmute(__lasx_xvfdiv_s(transmute(a), transmute(b))) } +pub fn lasx_xvclo_w(a: m256i) -> m256i { + unsafe { transmute(__lasx_xvclo_w(transmute(a))) } } #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvfdiv_d(a: m256d, b: m256d) -> m256d { - unsafe { transmute(__lasx_xvfdiv_d(transmute(a), transmute(b))) } +pub fn lasx_xvclo_d(a: m256i) -> m256i { + unsafe { transmute(__lasx_xvclo_d(transmute(a))) } } #[inline(always)] @@ -3996,20 +2400,6 @@ pub fn lasx_xvfclass_d(a: m256d) -> m256i { unsafe { transmute(__lasx_xvfclass_d(transmute(a))) } } -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvfsqrt_s(a: m256) -> m256 { - unsafe { transmute(__lasx_xvfsqrt_s(transmute(a))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvfsqrt_d(a: m256d) -> m256d { - unsafe { transmute(__lasx_xvfsqrt_d(transmute(a))) } -} - #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] @@ -4243,41 +2633,6 @@ pub fn lasx_xvpermi_w(a: m256i, b: m256i) -> m256i { unsafe { transmute(__lasx_xvpermi_w(transmute(a), transmute(b), IMM8)) } } -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvandn_v(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvandn_v(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvneg_b(a: m256i) -> m256i { - unsafe { transmute(__lasx_xvneg_b(transmute(a))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvneg_h(a: m256i) -> m256i { - unsafe { transmute(__lasx_xvneg_h(transmute(a))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvneg_w(a: m256i) -> m256i { - unsafe { transmute(__lasx_xvneg_w(transmute(a))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvneg_d(a: m256i) -> m256i { - unsafe { transmute(__lasx_xvneg_d(transmute(a))) } -} - #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] @@ -4749,62 +3104,6 @@ pub fn lasx_xvsigncov_d(a: m256i, b: m256i) -> m256i { unsafe { transmute(__lasx_xvsigncov_d(transmute(a), transmute(b))) } } -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvfmadd_s(a: m256, b: m256, c: m256) -> m256 { - unsafe { transmute(__lasx_xvfmadd_s(transmute(a), transmute(b), transmute(c))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvfmadd_d(a: m256d, b: m256d, c: m256d) -> m256d { - unsafe { transmute(__lasx_xvfmadd_d(transmute(a), transmute(b), transmute(c))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvfmsub_s(a: m256, b: m256, c: m256) -> m256 { - unsafe { transmute(__lasx_xvfmsub_s(transmute(a), transmute(b), transmute(c))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvfmsub_d(a: m256d, b: m256d, c: m256d) -> m256d { - unsafe { transmute(__lasx_xvfmsub_d(transmute(a), transmute(b), transmute(c))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvfnmadd_s(a: m256, b: m256, c: m256) -> m256 { - unsafe { transmute(__lasx_xvfnmadd_s(transmute(a), transmute(b), transmute(c))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvfnmadd_d(a: m256d, b: m256d, c: m256d) -> m256d { - unsafe { transmute(__lasx_xvfnmadd_d(transmute(a), transmute(b), transmute(c))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvfnmsub_s(a: m256, b: m256, c: m256) -> m256 { - unsafe { transmute(__lasx_xvfnmsub_s(transmute(a), transmute(b), transmute(c))) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvfnmsub_d(a: m256d, b: m256d, c: m256d) -> m256d { - unsafe { transmute(__lasx_xvfnmsub_d(transmute(a), transmute(b), transmute(c))) } -} - #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] @@ -5165,13 +3464,6 @@ pub fn lasx_xvssrln_w_d(a: m256i, b: m256i) -> m256i { unsafe { transmute(__lasx_xvssrln_w_d(transmute(a), transmute(b))) } } -#[inline(always)] -#[target_feature(enable = "lasx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvorn_v(a: m256i, b: m256i) -> m256i { - unsafe { transmute(__lasx_xvorn_v(transmute(a), transmute(b))) } -} - #[inline(always)] #[target_feature(enable = "lasx")] #[rustc_legacy_const_generics(0)] @@ -5202,24 +3494,6 @@ pub fn lasx_xvextl_qu_du(a: m256i) -> m256i { unsafe { transmute(__lasx_xvextl_qu_du(transmute(a))) } } -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(2)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvinsgr2vr_w(a: m256i, b: i32) -> m256i { - static_assert_uimm_bits!(IMM3, 3); - unsafe { transmute(__lasx_xvinsgr2vr_w(transmute(a), transmute(b), IMM3)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(2)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvinsgr2vr_d(a: m256i, b: i64) -> m256i { - static_assert_uimm_bits!(IMM2, 2); - unsafe { transmute(__lasx_xvinsgr2vr_d(transmute(a), transmute(b), IMM2)) } -} - #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] @@ -5400,42 +3674,6 @@ pub unsafe fn lasx_xvldrepl_d(mem_addr: *const i8) -> m256i { transmute(__lasx_xvldrepl_d(mem_addr, IMM_S9)) } -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvpickve2gr_w(a: m256i) -> i32 { - static_assert_uimm_bits!(IMM3, 3); - unsafe { transmute(__lasx_xvpickve2gr_w(transmute(a), IMM3)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvpickve2gr_wu(a: m256i) -> u32 { - static_assert_uimm_bits!(IMM3, 3); - unsafe { transmute(__lasx_xvpickve2gr_wu(transmute(a), IMM3)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvpickve2gr_d(a: m256i) -> i64 { - static_assert_uimm_bits!(IMM2, 2); - unsafe { transmute(__lasx_xvpickve2gr_d(transmute(a), IMM2)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvpickve2gr_du(a: m256i) -> u64 { - static_assert_uimm_bits!(IMM2, 2); - unsafe { transmute(__lasx_xvpickve2gr_du(transmute(a), IMM2)) } -} - #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] @@ -7063,42 +5301,6 @@ pub fn lasx_xvpickve_w_f(a: m256) -> m256 { unsafe { transmute(__lasx_xvpickve_w_f(transmute(a), IMM3)) } } -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(0)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvrepli_b() -> m256i { - static_assert_simm_bits!(IMM_S10, 10); - unsafe { transmute(__lasx_xvrepli_b(IMM_S10)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(0)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvrepli_d() -> m256i { - static_assert_simm_bits!(IMM_S10, 10); - unsafe { transmute(__lasx_xvrepli_d(IMM_S10)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(0)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvrepli_h() -> m256i { - static_assert_simm_bits!(IMM_S10, 10); - unsafe { transmute(__lasx_xvrepli_h(IMM_S10)) } -} - -#[inline(always)] -#[target_feature(enable = "lasx")] -#[rustc_legacy_const_generics(0)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lasx_xvrepli_w() -> m256i { - static_assert_simm_bits!(IMM_S10, 10); - unsafe { transmute(__lasx_xvrepli_w(IMM_S10)) } -} - #[inline(always)] #[target_feature(enable = "lasx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] diff --git a/crates/core_arch/src/loongarch64/lasx/mod.rs b/crates/core_arch/src/loongarch64/lasx/mod.rs index c3a244e740..cc449e9492 100644 --- a/crates/core_arch/src/loongarch64/lasx/mod.rs +++ b/crates/core_arch/src/loongarch64/lasx/mod.rs @@ -16,6 +16,13 @@ mod generated; #[unstable(feature = "stdarch_loongarch", issue = "117427")] pub use self::generated::*; +#[rustfmt::skip] +mod portable; + +#[rustfmt::skip] +#[unstable(feature = "stdarch_loongarch", issue = "117427")] +pub use self::portable::*; + #[rustfmt::skip] #[cfg(test)] mod tests; diff --git a/crates/core_arch/src/loongarch64/lasx/portable.rs b/crates/core_arch/src/loongarch64/lasx/portable.rs new file mode 100644 index 0000000000..0021d7605f --- /dev/null +++ b/crates/core_arch/src/loongarch64/lasx/portable.rs @@ -0,0 +1,201 @@ +//! LoongArch64 LASX intrinsics - intrinsics::simd implementation + +use super::super::{simd::*, *}; +use crate::core_arch::simd::*; +use crate::intrinsics::simd::*; +use crate::mem::transmute; + +impl_vv!("lasx", lasx_xvpcnt_b, simd_ctpop, m256i, i8x32); +impl_vv!("lasx", lasx_xvpcnt_h, simd_ctpop, m256i, i16x16); +impl_vv!("lasx", lasx_xvpcnt_w, simd_ctpop, m256i, i32x8); +impl_vv!("lasx", lasx_xvpcnt_d, simd_ctpop, m256i, i64x4); +impl_vv!("lasx", lasx_xvclz_b, simd_ctlz, m256i, i8x32); +impl_vv!("lasx", lasx_xvclz_h, simd_ctlz, m256i, i16x16); +impl_vv!("lasx", lasx_xvclz_w, simd_ctlz, m256i, i32x8); +impl_vv!("lasx", lasx_xvclz_d, simd_ctlz, m256i, i64x4); +impl_vv!("lasx", lasx_xvneg_b, simd_neg, m256i, i8x32); +impl_vv!("lasx", lasx_xvneg_h, simd_neg, m256i, i16x16); +impl_vv!("lasx", lasx_xvneg_w, simd_neg, m256i, i32x8); +impl_vv!("lasx", lasx_xvneg_d, simd_neg, m256i, i64x4); +impl_vv!("lasx", lasx_xvfsqrt_s, simd_fsqrt, m256, f32x8); +impl_vv!("lasx", lasx_xvfsqrt_d, simd_fsqrt, m256d, f64x4); + +impl_gv!("lasx", lasx_xvreplgr2vr_b, simdl_splat, m256i, i8x32, i32); +impl_gv!("lasx", lasx_xvreplgr2vr_h, simdl_splat, m256i, i16x16, i32); +impl_gv!("lasx", lasx_xvreplgr2vr_w, simdl_splat, m256i, i32x8, i32); +impl_gv!("lasx", lasx_xvreplgr2vr_d, simdl_splat, m256i, i64x4, i64); + +impl_sv!("lasx", lasx_xvrepli_b, simdl_splat, m256i, i8x32, 10); +impl_sv!("lasx", lasx_xvrepli_h, simdl_splat, m256i, i16x16, 10); +impl_sv!("lasx", lasx_xvrepli_w, simdl_splat, m256i, i32x8, 10); +impl_sv!("lasx", lasx_xvrepli_d, simdl_splat, m256i, i64x4, 10); + +impl_vvv!("lasx", lasx_xvadd_b, simd_add, m256i, i8x32); +impl_vvv!("lasx", lasx_xvadd_h, simd_add, m256i, i16x16); +impl_vvv!("lasx", lasx_xvadd_w, simd_add, m256i, i32x8); +impl_vvv!("lasx", lasx_xvadd_d, simd_add, m256i, i64x4); +impl_vvv!("lasx", lasx_xvsub_b, simd_sub, m256i, i8x32); +impl_vvv!("lasx", lasx_xvsub_h, simd_sub, m256i, i16x16); +impl_vvv!("lasx", lasx_xvsub_w, simd_sub, m256i, i32x8); +impl_vvv!("lasx", lasx_xvsub_d, simd_sub, m256i, i64x4); +impl_vvv!("lasx", lasx_xvmax_b, simd_imax, m256i, i8x32); +impl_vvv!("lasx", lasx_xvmax_h, simd_imax, m256i, i16x16); +impl_vvv!("lasx", lasx_xvmax_w, simd_imax, m256i, i32x8); +impl_vvv!("lasx", lasx_xvmax_d, simd_imax, m256i, i64x4); +impl_vvv!("lasx", lasx_xvmax_bu, simd_imax, m256i, u8x32); +impl_vvv!("lasx", lasx_xvmax_hu, simd_imax, m256i, u16x16); +impl_vvv!("lasx", lasx_xvmax_wu, simd_imax, m256i, u32x8); +impl_vvv!("lasx", lasx_xvmax_du, simd_imax, m256i, u64x4); +impl_vvv!("lasx", lasx_xvmin_b, simd_imin, m256i, i8x32); +impl_vvv!("lasx", lasx_xvmin_h, simd_imin, m256i, i16x16); +impl_vvv!("lasx", lasx_xvmin_w, simd_imin, m256i, i32x8); +impl_vvv!("lasx", lasx_xvmin_d, simd_imin, m256i, i64x4); +impl_vvv!("lasx", lasx_xvmin_bu, simd_imin, m256i, u8x32); +impl_vvv!("lasx", lasx_xvmin_hu, simd_imin, m256i, u16x16); +impl_vvv!("lasx", lasx_xvmin_wu, simd_imin, m256i, u32x8); +impl_vvv!("lasx", lasx_xvmin_du, simd_imin, m256i, u64x4); +impl_vvv!("lasx", lasx_xvseq_b, simd_eq, m256i, i8x32); +impl_vvv!("lasx", lasx_xvseq_h, simd_eq, m256i, i16x16); +impl_vvv!("lasx", lasx_xvseq_w, simd_eq, m256i, i32x8); +impl_vvv!("lasx", lasx_xvseq_d, simd_eq, m256i, i64x4); +impl_vvv!("lasx", lasx_xvslt_b, simd_lt, m256i, i8x32); +impl_vvv!("lasx", lasx_xvslt_h, simd_lt, m256i, i16x16); +impl_vvv!("lasx", lasx_xvslt_w, simd_lt, m256i, i32x8); +impl_vvv!("lasx", lasx_xvslt_d, simd_lt, m256i, i64x4); +impl_vvv!("lasx", lasx_xvslt_bu, simd_lt, m256i, u8x32); +impl_vvv!("lasx", lasx_xvslt_hu, simd_lt, m256i, u16x16); +impl_vvv!("lasx", lasx_xvslt_wu, simd_lt, m256i, u32x8); +impl_vvv!("lasx", lasx_xvslt_du, simd_lt, m256i, u64x4); +impl_vvv!("lasx", lasx_xvsle_b, simd_le, m256i, i8x32); +impl_vvv!("lasx", lasx_xvsle_h, simd_le, m256i, i16x16); +impl_vvv!("lasx", lasx_xvsle_w, simd_le, m256i, i32x8); +impl_vvv!("lasx", lasx_xvsle_d, simd_le, m256i, i64x4); +impl_vvv!("lasx", lasx_xvsle_bu, simd_le, m256i, u8x32); +impl_vvv!("lasx", lasx_xvsle_hu, simd_le, m256i, u16x16); +impl_vvv!("lasx", lasx_xvsle_wu, simd_le, m256i, u32x8); +impl_vvv!("lasx", lasx_xvsle_du, simd_le, m256i, u64x4); +impl_vvv!("lasx", lasx_xvmul_b, simd_mul, m256i, i8x32); +impl_vvv!("lasx", lasx_xvmul_h, simd_mul, m256i, i16x16); +impl_vvv!("lasx", lasx_xvmul_w, simd_mul, m256i, i32x8); +impl_vvv!("lasx", lasx_xvmul_d, simd_mul, m256i, i64x4); +impl_vvv!("lasx", lasx_xvdiv_b, simd_div, m256i, i8x32); +impl_vvv!("lasx", lasx_xvdiv_h, simd_div, m256i, i16x16); +impl_vvv!("lasx", lasx_xvdiv_w, simd_div, m256i, i32x8); +impl_vvv!("lasx", lasx_xvdiv_d, simd_div, m256i, i64x4); +impl_vvv!("lasx", lasx_xvdiv_bu, simd_div, m256i, u8x32); +impl_vvv!("lasx", lasx_xvdiv_hu, simd_div, m256i, u16x16); +impl_vvv!("lasx", lasx_xvdiv_wu, simd_div, m256i, u32x8); +impl_vvv!("lasx", lasx_xvdiv_du, simd_div, m256i, u64x4); +impl_vvv!("lasx", lasx_xvmod_b, simd_rem, m256i, i8x32); +impl_vvv!("lasx", lasx_xvmod_h, simd_rem, m256i, i16x16); +impl_vvv!("lasx", lasx_xvmod_w, simd_rem, m256i, i32x8); +impl_vvv!("lasx", lasx_xvmod_d, simd_rem, m256i, i64x4); +impl_vvv!("lasx", lasx_xvmod_bu, simd_rem, m256i, u8x32); +impl_vvv!("lasx", lasx_xvmod_hu, simd_rem, m256i, u16x16); +impl_vvv!("lasx", lasx_xvmod_wu, simd_rem, m256i, u32x8); +impl_vvv!("lasx", lasx_xvmod_du, simd_rem, m256i, u64x4); +impl_vvv!("lasx", lasx_xvand_v, simd_and, m256i, u8x32); +impl_vvv!("lasx", lasx_xvandn_v, simdl_andn, m256i, u8x32); +impl_vvv!("lasx", lasx_xvor_v, simd_or, m256i, u8x32); +impl_vvv!("lasx", lasx_xvorn_v, simdl_orn, m256i, u8x32); +impl_vvv!("lasx", lasx_xvnor_v, simdl_nor, m256i, u8x32); +impl_vvv!("lasx", lasx_xvxor_v, simd_xor, m256i, u8x32); +impl_vvv!("lasx", lasx_xvfadd_s, simd_add, m256, f32x8); +impl_vvv!("lasx", lasx_xvfadd_d, simd_add, m256d, f64x4); +impl_vvv!("lasx", lasx_xvfsub_s, simd_sub, m256, f32x8); +impl_vvv!("lasx", lasx_xvfsub_d, simd_sub, m256d, f64x4); +impl_vvv!("lasx", lasx_xvfmul_s, simd_mul, m256, f32x8); +impl_vvv!("lasx", lasx_xvfmul_d, simd_mul, m256d, f64x4); +impl_vvv!("lasx", lasx_xvfdiv_s, simd_div, m256, f32x8); +impl_vvv!("lasx", lasx_xvfdiv_d, simd_div, m256d, f64x4); +impl_vvv!("lasx", lasx_xvsll_b, simdl_shl, m256i, i8x32); +impl_vvv!("lasx", lasx_xvsll_h, simdl_shl, m256i, i16x16); +impl_vvv!("lasx", lasx_xvsll_w, simdl_shl, m256i, i32x8); +impl_vvv!("lasx", lasx_xvsll_d, simdl_shl, m256i, i64x4); +impl_vvv!("lasx", lasx_xvsra_b, simdl_shr, m256i, i8x32); +impl_vvv!("lasx", lasx_xvsra_h, simdl_shr, m256i, i16x16); +impl_vvv!("lasx", lasx_xvsra_w, simdl_shr, m256i, i32x8); +impl_vvv!("lasx", lasx_xvsra_d, simdl_shr, m256i, i64x4); +impl_vvv!("lasx", lasx_xvsrl_b, simdl_shr, m256i, u8x32); +impl_vvv!("lasx", lasx_xvsrl_h, simdl_shr, m256i, u16x16); +impl_vvv!("lasx", lasx_xvsrl_w, simdl_shr, m256i, u32x8); +impl_vvv!("lasx", lasx_xvsrl_d, simdl_shr, m256i, u64x4); + +impl_vuv!("lasx", lasx_xvslli_b, simd_shl, m256i, i8x32); +impl_vuv!("lasx", lasx_xvslli_h, simd_shl, m256i, i16x16); +impl_vuv!("lasx", lasx_xvslli_w, simd_shl, m256i, i32x8); +impl_vuv!("lasx", lasx_xvslli_d, simd_shl, m256i, i64x4); +impl_vuv!("lasx", lasx_xvsrai_b, simd_shr, m256i, i8x32); +impl_vuv!("lasx", lasx_xvsrai_h, simd_shr, m256i, i16x16); +impl_vuv!("lasx", lasx_xvsrai_w, simd_shr, m256i, i32x8); +impl_vuv!("lasx", lasx_xvsrai_d, simd_shr, m256i, i64x4); +impl_vuv!("lasx", lasx_xvsrli_b, simd_shr, m256i, u8x32); +impl_vuv!("lasx", lasx_xvsrli_h, simd_shr, m256i, u16x16); +impl_vuv!("lasx", lasx_xvsrli_w, simd_shr, m256i, u32x8); +impl_vuv!("lasx", lasx_xvsrli_d, simd_shr, m256i, u64x4); +impl_vuv!("lasx", lasx_xvaddi_bu, simd_add, m256i, u8x32, 5); +impl_vuv!("lasx", lasx_xvaddi_hu, simd_add, m256i, u16x16, 5); +impl_vuv!("lasx", lasx_xvaddi_wu, simd_add, m256i, u32x8, 5); +impl_vuv!("lasx", lasx_xvaddi_du, simd_add, m256i, u64x4, 5); +impl_vuv!("lasx", lasx_xvslti_bu, simd_lt, m256i, u8x32, 5); +impl_vuv!("lasx", lasx_xvslti_hu, simd_lt, m256i, u16x16, 5); +impl_vuv!("lasx", lasx_xvslti_wu, simd_lt, m256i, u32x8, 5); +impl_vuv!("lasx", lasx_xvslti_du, simd_lt, m256i, u64x4, 5); +impl_vuv!("lasx", lasx_xvslei_bu, simd_le, m256i, u8x32, 5); +impl_vuv!("lasx", lasx_xvslei_hu, simd_le, m256i, u16x16, 5); +impl_vuv!("lasx", lasx_xvslei_wu, simd_le, m256i, u32x8, 5); +impl_vuv!("lasx", lasx_xvslei_du, simd_le, m256i, u64x4, 5); +impl_vuv!("lasx", lasx_xvmaxi_bu, simd_imax, m256i, u8x32, 5); +impl_vuv!("lasx", lasx_xvmaxi_hu, simd_imax, m256i, u16x16, 5); +impl_vuv!("lasx", lasx_xvmaxi_wu, simd_imax, m256i, u32x8, 5); +impl_vuv!("lasx", lasx_xvmaxi_du, simd_imax, m256i, u64x4, 5); +impl_vuv!("lasx", lasx_xvmini_bu, simd_imin, m256i, u8x32, 5); +impl_vuv!("lasx", lasx_xvmini_hu, simd_imin, m256i, u16x16, 5); +impl_vuv!("lasx", lasx_xvmini_wu, simd_imin, m256i, u32x8, 5); +impl_vuv!("lasx", lasx_xvmini_du, simd_imin, m256i, u64x4, 5); + +impl_vug!("lasx", lasx_xvpickve2gr_w, simd_extract, m256i, i32x8, i32, 3); +impl_vug!("lasx", lasx_xvpickve2gr_d, simd_extract, m256i, i64x4, i64, 2); +impl_vug!("lasx", lasx_xvpickve2gr_wu, simd_extract, m256i, u32x8, u32, 3); +impl_vug!("lasx", lasx_xvpickve2gr_du, simd_extract, m256i, u64x4, u64, 2); + +impl_vsv!("lasx", lasx_xvseqi_b, simd_eq, m256i, i8x32, 5); +impl_vsv!("lasx", lasx_xvseqi_h, simd_eq, m256i, i16x16, 5); +impl_vsv!("lasx", lasx_xvseqi_w, simd_eq, m256i, i32x8, 5); +impl_vsv!("lasx", lasx_xvseqi_d, simd_eq, m256i, i64x4, 5); +impl_vsv!("lasx", lasx_xvslti_b, simd_lt, m256i, i8x32, 5); +impl_vsv!("lasx", lasx_xvslti_h, simd_lt, m256i, i16x16, 5); +impl_vsv!("lasx", lasx_xvslti_w, simd_lt, m256i, i32x8, 5); +impl_vsv!("lasx", lasx_xvslti_d, simd_lt, m256i, i64x4, 5); +impl_vsv!("lasx", lasx_xvslei_b, simd_le, m256i, i8x32, 5); +impl_vsv!("lasx", lasx_xvslei_h, simd_le, m256i, i16x16, 5); +impl_vsv!("lasx", lasx_xvslei_w, simd_le, m256i, i32x8, 5); +impl_vsv!("lasx", lasx_xvslei_d, simd_le, m256i, i64x4, 5); +impl_vsv!("lasx", lasx_xvmaxi_b, simd_imax, m256i, i8x32, 5); +impl_vsv!("lasx", lasx_xvmaxi_h, simd_imax, m256i, i16x16, 5); +impl_vsv!("lasx", lasx_xvmaxi_w, simd_imax, m256i, i32x8, 5); +impl_vsv!("lasx", lasx_xvmaxi_d, simd_imax, m256i, i64x4, 5); +impl_vsv!("lasx", lasx_xvmini_b, simd_imin, m256i, i8x32, 5); +impl_vsv!("lasx", lasx_xvmini_h, simd_imin, m256i, i16x16, 5); +impl_vsv!("lasx", lasx_xvmini_w, simd_imin, m256i, i32x8, 5); +impl_vsv!("lasx", lasx_xvmini_d, simd_imin, m256i, i64x4, 5); + +impl_vvvv!("lasx", lasx_xvmadd_b, simdl_madd, m256i, i8x32); +impl_vvvv!("lasx", lasx_xvmadd_h, simdl_madd, m256i, i16x16); +impl_vvvv!("lasx", lasx_xvmadd_w, simdl_madd, m256i, i32x8); +impl_vvvv!("lasx", lasx_xvmadd_d, simdl_madd, m256i, i64x4); +impl_vvvv!("lasx", lasx_xvmsub_b, simdl_msub, m256i, i8x32); +impl_vvvv!("lasx", lasx_xvmsub_h, simdl_msub, m256i, i16x16); +impl_vvvv!("lasx", lasx_xvmsub_w, simdl_msub, m256i, i32x8); +impl_vvvv!("lasx", lasx_xvmsub_d, simdl_msub, m256i, i64x4); +impl_vvvv!("lasx", lasx_xvfmadd_s, simd_fma, m256, f32x8); +impl_vvvv!("lasx", lasx_xvfmadd_d, simd_fma, m256d, f64x4); +impl_vvvv!("lasx", lasx_xvfmsub_s, simdl_fms, m256, f32x8); +impl_vvvv!("lasx", lasx_xvfmsub_d, simdl_fms, m256d, f64x4); +impl_vvvv!("lasx", lasx_xvfnmadd_s, simdl_nfma, m256, f32x8); +impl_vvvv!("lasx", lasx_xvfnmadd_d, simdl_nfma, m256d, f64x4); +impl_vvvv!("lasx", lasx_xvfnmsub_s, simdl_nfms, m256, f32x8); +impl_vvvv!("lasx", lasx_xvfnmsub_d, simdl_nfms, m256d, f64x4); + +impl_vugv!("lasx", lasx_xvinsgr2vr_w, simd_insert, m256i, i32x8, i32, 3); +impl_vugv!("lasx", lasx_xvinsgr2vr_d, simd_insert, m256i, i64x4, i64, 2); diff --git a/crates/core_arch/src/loongarch64/lsx/generated.rs b/crates/core_arch/src/loongarch64/lsx/generated.rs index faa8859eba..d2d77e2f3e 100644 --- a/crates/core_arch/src/loongarch64/lsx/generated.rs +++ b/crates/core_arch/src/loongarch64/lsx/generated.rs @@ -11,38 +11,6 @@ use super::super::*; #[allow(improper_ctypes)] unsafe extern "unadjusted" { - #[link_name = "llvm.loongarch.lsx.vsll.b"] - fn __lsx_vsll_b(a: __v16i8, b: __v16i8) -> __v16i8; - #[link_name = "llvm.loongarch.lsx.vsll.h"] - fn __lsx_vsll_h(a: __v8i16, b: __v8i16) -> __v8i16; - #[link_name = "llvm.loongarch.lsx.vsll.w"] - fn __lsx_vsll_w(a: __v4i32, b: __v4i32) -> __v4i32; - #[link_name = "llvm.loongarch.lsx.vsll.d"] - fn __lsx_vsll_d(a: __v2i64, b: __v2i64) -> __v2i64; - #[link_name = "llvm.loongarch.lsx.vslli.b"] - fn __lsx_vslli_b(a: __v16i8, b: u32) -> __v16i8; - #[link_name = "llvm.loongarch.lsx.vslli.h"] - fn __lsx_vslli_h(a: __v8i16, b: u32) -> __v8i16; - #[link_name = "llvm.loongarch.lsx.vslli.w"] - fn __lsx_vslli_w(a: __v4i32, b: u32) -> __v4i32; - #[link_name = "llvm.loongarch.lsx.vslli.d"] - fn __lsx_vslli_d(a: __v2i64, b: u32) -> __v2i64; - #[link_name = "llvm.loongarch.lsx.vsra.b"] - fn __lsx_vsra_b(a: __v16i8, b: __v16i8) -> __v16i8; - #[link_name = "llvm.loongarch.lsx.vsra.h"] - fn __lsx_vsra_h(a: __v8i16, b: __v8i16) -> __v8i16; - #[link_name = "llvm.loongarch.lsx.vsra.w"] - fn __lsx_vsra_w(a: __v4i32, b: __v4i32) -> __v4i32; - #[link_name = "llvm.loongarch.lsx.vsra.d"] - fn __lsx_vsra_d(a: __v2i64, b: __v2i64) -> __v2i64; - #[link_name = "llvm.loongarch.lsx.vsrai.b"] - fn __lsx_vsrai_b(a: __v16i8, b: u32) -> __v16i8; - #[link_name = "llvm.loongarch.lsx.vsrai.h"] - fn __lsx_vsrai_h(a: __v8i16, b: u32) -> __v8i16; - #[link_name = "llvm.loongarch.lsx.vsrai.w"] - fn __lsx_vsrai_w(a: __v4i32, b: u32) -> __v4i32; - #[link_name = "llvm.loongarch.lsx.vsrai.d"] - fn __lsx_vsrai_d(a: __v2i64, b: u32) -> __v2i64; #[link_name = "llvm.loongarch.lsx.vsrar.b"] fn __lsx_vsrar_b(a: __v16i8, b: __v16i8) -> __v16i8; #[link_name = "llvm.loongarch.lsx.vsrar.h"] @@ -59,22 +27,6 @@ unsafe extern "unadjusted" { fn __lsx_vsrari_w(a: __v4i32, b: u32) -> __v4i32; #[link_name = "llvm.loongarch.lsx.vsrari.d"] fn __lsx_vsrari_d(a: __v2i64, b: u32) -> __v2i64; - #[link_name = "llvm.loongarch.lsx.vsrl.b"] - fn __lsx_vsrl_b(a: __v16i8, b: __v16i8) -> __v16i8; - #[link_name = "llvm.loongarch.lsx.vsrl.h"] - fn __lsx_vsrl_h(a: __v8i16, b: __v8i16) -> __v8i16; - #[link_name = "llvm.loongarch.lsx.vsrl.w"] - fn __lsx_vsrl_w(a: __v4i32, b: __v4i32) -> __v4i32; - #[link_name = "llvm.loongarch.lsx.vsrl.d"] - fn __lsx_vsrl_d(a: __v2i64, b: __v2i64) -> __v2i64; - #[link_name = "llvm.loongarch.lsx.vsrli.b"] - fn __lsx_vsrli_b(a: __v16i8, b: u32) -> __v16i8; - #[link_name = "llvm.loongarch.lsx.vsrli.h"] - fn __lsx_vsrli_h(a: __v8i16, b: u32) -> __v8i16; - #[link_name = "llvm.loongarch.lsx.vsrli.w"] - fn __lsx_vsrli_w(a: __v4i32, b: u32) -> __v4i32; - #[link_name = "llvm.loongarch.lsx.vsrli.d"] - fn __lsx_vsrli_d(a: __v2i64, b: u32) -> __v2i64; #[link_name = "llvm.loongarch.lsx.vsrlr.b"] fn __lsx_vsrlr_b(a: __v16i8, b: __v16i8) -> __v16i8; #[link_name = "llvm.loongarch.lsx.vsrlr.h"] @@ -139,30 +91,6 @@ unsafe extern "unadjusted" { fn __lsx_vbitrevi_w(a: __v4u32, b: u32) -> __v4u32; #[link_name = "llvm.loongarch.lsx.vbitrevi.d"] fn __lsx_vbitrevi_d(a: __v2u64, b: u32) -> __v2u64; - #[link_name = "llvm.loongarch.lsx.vadd.b"] - fn __lsx_vadd_b(a: __v16i8, b: __v16i8) -> __v16i8; - #[link_name = "llvm.loongarch.lsx.vadd.h"] - fn __lsx_vadd_h(a: __v8i16, b: __v8i16) -> __v8i16; - #[link_name = "llvm.loongarch.lsx.vadd.w"] - fn __lsx_vadd_w(a: __v4i32, b: __v4i32) -> __v4i32; - #[link_name = "llvm.loongarch.lsx.vadd.d"] - fn __lsx_vadd_d(a: __v2i64, b: __v2i64) -> __v2i64; - #[link_name = "llvm.loongarch.lsx.vaddi.bu"] - fn __lsx_vaddi_bu(a: __v16i8, b: u32) -> __v16i8; - #[link_name = "llvm.loongarch.lsx.vaddi.hu"] - fn __lsx_vaddi_hu(a: __v8i16, b: u32) -> __v8i16; - #[link_name = "llvm.loongarch.lsx.vaddi.wu"] - fn __lsx_vaddi_wu(a: __v4i32, b: u32) -> __v4i32; - #[link_name = "llvm.loongarch.lsx.vaddi.du"] - fn __lsx_vaddi_du(a: __v2i64, b: u32) -> __v2i64; - #[link_name = "llvm.loongarch.lsx.vsub.b"] - fn __lsx_vsub_b(a: __v16i8, b: __v16i8) -> __v16i8; - #[link_name = "llvm.loongarch.lsx.vsub.h"] - fn __lsx_vsub_h(a: __v8i16, b: __v8i16) -> __v8i16; - #[link_name = "llvm.loongarch.lsx.vsub.w"] - fn __lsx_vsub_w(a: __v4i32, b: __v4i32) -> __v4i32; - #[link_name = "llvm.loongarch.lsx.vsub.d"] - fn __lsx_vsub_d(a: __v2i64, b: __v2i64) -> __v2i64; #[link_name = "llvm.loongarch.lsx.vsubi.bu"] fn __lsx_vsubi_bu(a: __v16i8, b: u32) -> __v16i8; #[link_name = "llvm.loongarch.lsx.vsubi.hu"] @@ -171,150 +99,6 @@ unsafe extern "unadjusted" { fn __lsx_vsubi_wu(a: __v4i32, b: u32) -> __v4i32; #[link_name = "llvm.loongarch.lsx.vsubi.du"] fn __lsx_vsubi_du(a: __v2i64, b: u32) -> __v2i64; - #[link_name = "llvm.loongarch.lsx.vmax.b"] - fn __lsx_vmax_b(a: __v16i8, b: __v16i8) -> __v16i8; - #[link_name = "llvm.loongarch.lsx.vmax.h"] - fn __lsx_vmax_h(a: __v8i16, b: __v8i16) -> __v8i16; - #[link_name = "llvm.loongarch.lsx.vmax.w"] - fn __lsx_vmax_w(a: __v4i32, b: __v4i32) -> __v4i32; - #[link_name = "llvm.loongarch.lsx.vmax.d"] - fn __lsx_vmax_d(a: __v2i64, b: __v2i64) -> __v2i64; - #[link_name = "llvm.loongarch.lsx.vmaxi.b"] - fn __lsx_vmaxi_b(a: __v16i8, b: i32) -> __v16i8; - #[link_name = "llvm.loongarch.lsx.vmaxi.h"] - fn __lsx_vmaxi_h(a: __v8i16, b: i32) -> __v8i16; - #[link_name = "llvm.loongarch.lsx.vmaxi.w"] - fn __lsx_vmaxi_w(a: __v4i32, b: i32) -> __v4i32; - #[link_name = "llvm.loongarch.lsx.vmaxi.d"] - fn __lsx_vmaxi_d(a: __v2i64, b: i32) -> __v2i64; - #[link_name = "llvm.loongarch.lsx.vmax.bu"] - fn __lsx_vmax_bu(a: __v16u8, b: __v16u8) -> __v16u8; - #[link_name = "llvm.loongarch.lsx.vmax.hu"] - fn __lsx_vmax_hu(a: __v8u16, b: __v8u16) -> __v8u16; - #[link_name = "llvm.loongarch.lsx.vmax.wu"] - fn __lsx_vmax_wu(a: __v4u32, b: __v4u32) -> __v4u32; - #[link_name = "llvm.loongarch.lsx.vmax.du"] - fn __lsx_vmax_du(a: __v2u64, b: __v2u64) -> __v2u64; - #[link_name = "llvm.loongarch.lsx.vmaxi.bu"] - fn __lsx_vmaxi_bu(a: __v16u8, b: u32) -> __v16u8; - #[link_name = "llvm.loongarch.lsx.vmaxi.hu"] - fn __lsx_vmaxi_hu(a: __v8u16, b: u32) -> __v8u16; - #[link_name = "llvm.loongarch.lsx.vmaxi.wu"] - fn __lsx_vmaxi_wu(a: __v4u32, b: u32) -> __v4u32; - #[link_name = "llvm.loongarch.lsx.vmaxi.du"] - fn __lsx_vmaxi_du(a: __v2u64, b: u32) -> __v2u64; - #[link_name = "llvm.loongarch.lsx.vmin.b"] - fn __lsx_vmin_b(a: __v16i8, b: __v16i8) -> __v16i8; - #[link_name = "llvm.loongarch.lsx.vmin.h"] - fn __lsx_vmin_h(a: __v8i16, b: __v8i16) -> __v8i16; - #[link_name = "llvm.loongarch.lsx.vmin.w"] - fn __lsx_vmin_w(a: __v4i32, b: __v4i32) -> __v4i32; - #[link_name = "llvm.loongarch.lsx.vmin.d"] - fn __lsx_vmin_d(a: __v2i64, b: __v2i64) -> __v2i64; - #[link_name = "llvm.loongarch.lsx.vmini.b"] - fn __lsx_vmini_b(a: __v16i8, b: i32) -> __v16i8; - #[link_name = "llvm.loongarch.lsx.vmini.h"] - fn __lsx_vmini_h(a: __v8i16, b: i32) -> __v8i16; - #[link_name = "llvm.loongarch.lsx.vmini.w"] - fn __lsx_vmini_w(a: __v4i32, b: i32) -> __v4i32; - #[link_name = "llvm.loongarch.lsx.vmini.d"] - fn __lsx_vmini_d(a: __v2i64, b: i32) -> __v2i64; - #[link_name = "llvm.loongarch.lsx.vmin.bu"] - fn __lsx_vmin_bu(a: __v16u8, b: __v16u8) -> __v16u8; - #[link_name = "llvm.loongarch.lsx.vmin.hu"] - fn __lsx_vmin_hu(a: __v8u16, b: __v8u16) -> __v8u16; - #[link_name = "llvm.loongarch.lsx.vmin.wu"] - fn __lsx_vmin_wu(a: __v4u32, b: __v4u32) -> __v4u32; - #[link_name = "llvm.loongarch.lsx.vmin.du"] - fn __lsx_vmin_du(a: __v2u64, b: __v2u64) -> __v2u64; - #[link_name = "llvm.loongarch.lsx.vmini.bu"] - fn __lsx_vmini_bu(a: __v16u8, b: u32) -> __v16u8; - #[link_name = "llvm.loongarch.lsx.vmini.hu"] - fn __lsx_vmini_hu(a: __v8u16, b: u32) -> __v8u16; - #[link_name = "llvm.loongarch.lsx.vmini.wu"] - fn __lsx_vmini_wu(a: __v4u32, b: u32) -> __v4u32; - #[link_name = "llvm.loongarch.lsx.vmini.du"] - fn __lsx_vmini_du(a: __v2u64, b: u32) -> __v2u64; - #[link_name = "llvm.loongarch.lsx.vseq.b"] - fn __lsx_vseq_b(a: __v16i8, b: __v16i8) -> __v16i8; - #[link_name = "llvm.loongarch.lsx.vseq.h"] - fn __lsx_vseq_h(a: __v8i16, b: __v8i16) -> __v8i16; - #[link_name = "llvm.loongarch.lsx.vseq.w"] - fn __lsx_vseq_w(a: __v4i32, b: __v4i32) -> __v4i32; - #[link_name = "llvm.loongarch.lsx.vseq.d"] - fn __lsx_vseq_d(a: __v2i64, b: __v2i64) -> __v2i64; - #[link_name = "llvm.loongarch.lsx.vseqi.b"] - fn __lsx_vseqi_b(a: __v16i8, b: i32) -> __v16i8; - #[link_name = "llvm.loongarch.lsx.vseqi.h"] - fn __lsx_vseqi_h(a: __v8i16, b: i32) -> __v8i16; - #[link_name = "llvm.loongarch.lsx.vseqi.w"] - fn __lsx_vseqi_w(a: __v4i32, b: i32) -> __v4i32; - #[link_name = "llvm.loongarch.lsx.vseqi.d"] - fn __lsx_vseqi_d(a: __v2i64, b: i32) -> __v2i64; - #[link_name = "llvm.loongarch.lsx.vslti.b"] - fn __lsx_vslti_b(a: __v16i8, b: i32) -> __v16i8; - #[link_name = "llvm.loongarch.lsx.vslt.b"] - fn __lsx_vslt_b(a: __v16i8, b: __v16i8) -> __v16i8; - #[link_name = "llvm.loongarch.lsx.vslt.h"] - fn __lsx_vslt_h(a: __v8i16, b: __v8i16) -> __v8i16; - #[link_name = "llvm.loongarch.lsx.vslt.w"] - fn __lsx_vslt_w(a: __v4i32, b: __v4i32) -> __v4i32; - #[link_name = "llvm.loongarch.lsx.vslt.d"] - fn __lsx_vslt_d(a: __v2i64, b: __v2i64) -> __v2i64; - #[link_name = "llvm.loongarch.lsx.vslti.h"] - fn __lsx_vslti_h(a: __v8i16, b: i32) -> __v8i16; - #[link_name = "llvm.loongarch.lsx.vslti.w"] - fn __lsx_vslti_w(a: __v4i32, b: i32) -> __v4i32; - #[link_name = "llvm.loongarch.lsx.vslti.d"] - fn __lsx_vslti_d(a: __v2i64, b: i32) -> __v2i64; - #[link_name = "llvm.loongarch.lsx.vslt.bu"] - fn __lsx_vslt_bu(a: __v16u8, b: __v16u8) -> __v16i8; - #[link_name = "llvm.loongarch.lsx.vslt.hu"] - fn __lsx_vslt_hu(a: __v8u16, b: __v8u16) -> __v8i16; - #[link_name = "llvm.loongarch.lsx.vslt.wu"] - fn __lsx_vslt_wu(a: __v4u32, b: __v4u32) -> __v4i32; - #[link_name = "llvm.loongarch.lsx.vslt.du"] - fn __lsx_vslt_du(a: __v2u64, b: __v2u64) -> __v2i64; - #[link_name = "llvm.loongarch.lsx.vslti.bu"] - fn __lsx_vslti_bu(a: __v16u8, b: u32) -> __v16i8; - #[link_name = "llvm.loongarch.lsx.vslti.hu"] - fn __lsx_vslti_hu(a: __v8u16, b: u32) -> __v8i16; - #[link_name = "llvm.loongarch.lsx.vslti.wu"] - fn __lsx_vslti_wu(a: __v4u32, b: u32) -> __v4i32; - #[link_name = "llvm.loongarch.lsx.vslti.du"] - fn __lsx_vslti_du(a: __v2u64, b: u32) -> __v2i64; - #[link_name = "llvm.loongarch.lsx.vsle.b"] - fn __lsx_vsle_b(a: __v16i8, b: __v16i8) -> __v16i8; - #[link_name = "llvm.loongarch.lsx.vsle.h"] - fn __lsx_vsle_h(a: __v8i16, b: __v8i16) -> __v8i16; - #[link_name = "llvm.loongarch.lsx.vsle.w"] - fn __lsx_vsle_w(a: __v4i32, b: __v4i32) -> __v4i32; - #[link_name = "llvm.loongarch.lsx.vsle.d"] - fn __lsx_vsle_d(a: __v2i64, b: __v2i64) -> __v2i64; - #[link_name = "llvm.loongarch.lsx.vslei.b"] - fn __lsx_vslei_b(a: __v16i8, b: i32) -> __v16i8; - #[link_name = "llvm.loongarch.lsx.vslei.h"] - fn __lsx_vslei_h(a: __v8i16, b: i32) -> __v8i16; - #[link_name = "llvm.loongarch.lsx.vslei.w"] - fn __lsx_vslei_w(a: __v4i32, b: i32) -> __v4i32; - #[link_name = "llvm.loongarch.lsx.vslei.d"] - fn __lsx_vslei_d(a: __v2i64, b: i32) -> __v2i64; - #[link_name = "llvm.loongarch.lsx.vsle.bu"] - fn __lsx_vsle_bu(a: __v16u8, b: __v16u8) -> __v16i8; - #[link_name = "llvm.loongarch.lsx.vsle.hu"] - fn __lsx_vsle_hu(a: __v8u16, b: __v8u16) -> __v8i16; - #[link_name = "llvm.loongarch.lsx.vsle.wu"] - fn __lsx_vsle_wu(a: __v4u32, b: __v4u32) -> __v4i32; - #[link_name = "llvm.loongarch.lsx.vsle.du"] - fn __lsx_vsle_du(a: __v2u64, b: __v2u64) -> __v2i64; - #[link_name = "llvm.loongarch.lsx.vslei.bu"] - fn __lsx_vslei_bu(a: __v16u8, b: u32) -> __v16i8; - #[link_name = "llvm.loongarch.lsx.vslei.hu"] - fn __lsx_vslei_hu(a: __v8u16, b: u32) -> __v8i16; - #[link_name = "llvm.loongarch.lsx.vslei.wu"] - fn __lsx_vslei_wu(a: __v4u32, b: u32) -> __v4i32; - #[link_name = "llvm.loongarch.lsx.vslei.du"] - fn __lsx_vslei_du(a: __v2u64, b: u32) -> __v2i64; #[link_name = "llvm.loongarch.lsx.vsat.b"] fn __lsx_vsat_b(a: __v16i8, b: u32) -> __v16i8; #[link_name = "llvm.loongarch.lsx.vsat.h"] @@ -419,46 +203,6 @@ unsafe extern "unadjusted" { fn __lsx_vabsd_wu(a: __v4u32, b: __v4u32) -> __v4u32; #[link_name = "llvm.loongarch.lsx.vabsd.du"] fn __lsx_vabsd_du(a: __v2u64, b: __v2u64) -> __v2u64; - #[link_name = "llvm.loongarch.lsx.vmul.b"] - fn __lsx_vmul_b(a: __v16i8, b: __v16i8) -> __v16i8; - #[link_name = "llvm.loongarch.lsx.vmul.h"] - fn __lsx_vmul_h(a: __v8i16, b: __v8i16) -> __v8i16; - #[link_name = "llvm.loongarch.lsx.vmul.w"] - fn __lsx_vmul_w(a: __v4i32, b: __v4i32) -> __v4i32; - #[link_name = "llvm.loongarch.lsx.vmul.d"] - fn __lsx_vmul_d(a: __v2i64, b: __v2i64) -> __v2i64; - #[link_name = "llvm.loongarch.lsx.vmadd.b"] - fn __lsx_vmadd_b(a: __v16i8, b: __v16i8, c: __v16i8) -> __v16i8; - #[link_name = "llvm.loongarch.lsx.vmadd.h"] - fn __lsx_vmadd_h(a: __v8i16, b: __v8i16, c: __v8i16) -> __v8i16; - #[link_name = "llvm.loongarch.lsx.vmadd.w"] - fn __lsx_vmadd_w(a: __v4i32, b: __v4i32, c: __v4i32) -> __v4i32; - #[link_name = "llvm.loongarch.lsx.vmadd.d"] - fn __lsx_vmadd_d(a: __v2i64, b: __v2i64, c: __v2i64) -> __v2i64; - #[link_name = "llvm.loongarch.lsx.vmsub.b"] - fn __lsx_vmsub_b(a: __v16i8, b: __v16i8, c: __v16i8) -> __v16i8; - #[link_name = "llvm.loongarch.lsx.vmsub.h"] - fn __lsx_vmsub_h(a: __v8i16, b: __v8i16, c: __v8i16) -> __v8i16; - #[link_name = "llvm.loongarch.lsx.vmsub.w"] - fn __lsx_vmsub_w(a: __v4i32, b: __v4i32, c: __v4i32) -> __v4i32; - #[link_name = "llvm.loongarch.lsx.vmsub.d"] - fn __lsx_vmsub_d(a: __v2i64, b: __v2i64, c: __v2i64) -> __v2i64; - #[link_name = "llvm.loongarch.lsx.vdiv.b"] - fn __lsx_vdiv_b(a: __v16i8, b: __v16i8) -> __v16i8; - #[link_name = "llvm.loongarch.lsx.vdiv.h"] - fn __lsx_vdiv_h(a: __v8i16, b: __v8i16) -> __v8i16; - #[link_name = "llvm.loongarch.lsx.vdiv.w"] - fn __lsx_vdiv_w(a: __v4i32, b: __v4i32) -> __v4i32; - #[link_name = "llvm.loongarch.lsx.vdiv.d"] - fn __lsx_vdiv_d(a: __v2i64, b: __v2i64) -> __v2i64; - #[link_name = "llvm.loongarch.lsx.vdiv.bu"] - fn __lsx_vdiv_bu(a: __v16u8, b: __v16u8) -> __v16u8; - #[link_name = "llvm.loongarch.lsx.vdiv.hu"] - fn __lsx_vdiv_hu(a: __v8u16, b: __v8u16) -> __v8u16; - #[link_name = "llvm.loongarch.lsx.vdiv.wu"] - fn __lsx_vdiv_wu(a: __v4u32, b: __v4u32) -> __v4u32; - #[link_name = "llvm.loongarch.lsx.vdiv.du"] - fn __lsx_vdiv_du(a: __v2u64, b: __v2u64) -> __v2u64; #[link_name = "llvm.loongarch.lsx.vhaddw.h.b"] fn __lsx_vhaddw_h_b(a: __v16i8, b: __v16i8) -> __v8i16; #[link_name = "llvm.loongarch.lsx.vhaddw.w.h"] @@ -483,22 +227,6 @@ unsafe extern "unadjusted" { fn __lsx_vhsubw_wu_hu(a: __v8u16, b: __v8u16) -> __v4i32; #[link_name = "llvm.loongarch.lsx.vhsubw.du.wu"] fn __lsx_vhsubw_du_wu(a: __v4u32, b: __v4u32) -> __v2i64; - #[link_name = "llvm.loongarch.lsx.vmod.b"] - fn __lsx_vmod_b(a: __v16i8, b: __v16i8) -> __v16i8; - #[link_name = "llvm.loongarch.lsx.vmod.h"] - fn __lsx_vmod_h(a: __v8i16, b: __v8i16) -> __v8i16; - #[link_name = "llvm.loongarch.lsx.vmod.w"] - fn __lsx_vmod_w(a: __v4i32, b: __v4i32) -> __v4i32; - #[link_name = "llvm.loongarch.lsx.vmod.d"] - fn __lsx_vmod_d(a: __v2i64, b: __v2i64) -> __v2i64; - #[link_name = "llvm.loongarch.lsx.vmod.bu"] - fn __lsx_vmod_bu(a: __v16u8, b: __v16u8) -> __v16u8; - #[link_name = "llvm.loongarch.lsx.vmod.hu"] - fn __lsx_vmod_hu(a: __v8u16, b: __v8u16) -> __v8u16; - #[link_name = "llvm.loongarch.lsx.vmod.wu"] - fn __lsx_vmod_wu(a: __v4u32, b: __v4u32) -> __v4u32; - #[link_name = "llvm.loongarch.lsx.vmod.du"] - fn __lsx_vmod_du(a: __v2u64, b: __v2u64) -> __v2u64; #[link_name = "llvm.loongarch.lsx.vreplve.b"] fn __lsx_vreplve_b(a: __v16i8, b: i32) -> __v16i8; #[link_name = "llvm.loongarch.lsx.vreplve.h"] @@ -569,20 +297,12 @@ unsafe extern "unadjusted" { fn __lsx_vshuf_w(a: __v4i32, b: __v4i32, c: __v4i32) -> __v4i32; #[link_name = "llvm.loongarch.lsx.vshuf.d"] fn __lsx_vshuf_d(a: __v2i64, b: __v2i64, c: __v2i64) -> __v2i64; - #[link_name = "llvm.loongarch.lsx.vand.v"] - fn __lsx_vand_v(a: __v16u8, b: __v16u8) -> __v16u8; #[link_name = "llvm.loongarch.lsx.vandi.b"] fn __lsx_vandi_b(a: __v16u8, b: u32) -> __v16u8; - #[link_name = "llvm.loongarch.lsx.vor.v"] - fn __lsx_vor_v(a: __v16u8, b: __v16u8) -> __v16u8; #[link_name = "llvm.loongarch.lsx.vori.b"] fn __lsx_vori_b(a: __v16u8, b: u32) -> __v16u8; - #[link_name = "llvm.loongarch.lsx.vnor.v"] - fn __lsx_vnor_v(a: __v16u8, b: __v16u8) -> __v16u8; #[link_name = "llvm.loongarch.lsx.vnori.b"] fn __lsx_vnori_b(a: __v16u8, b: u32) -> __v16u8; - #[link_name = "llvm.loongarch.lsx.vxor.v"] - fn __lsx_vxor_v(a: __v16u8, b: __v16u8) -> __v16u8; #[link_name = "llvm.loongarch.lsx.vxori.b"] fn __lsx_vxori_b(a: __v16u8, b: u32) -> __v16u8; #[link_name = "llvm.loongarch.lsx.vbitsel.v"] @@ -595,22 +315,6 @@ unsafe extern "unadjusted" { fn __lsx_vshuf4i_h(a: __v8i16, b: u32) -> __v8i16; #[link_name = "llvm.loongarch.lsx.vshuf4i.w"] fn __lsx_vshuf4i_w(a: __v4i32, b: u32) -> __v4i32; - #[link_name = "llvm.loongarch.lsx.vreplgr2vr.b"] - fn __lsx_vreplgr2vr_b(a: i32) -> __v16i8; - #[link_name = "llvm.loongarch.lsx.vreplgr2vr.h"] - fn __lsx_vreplgr2vr_h(a: i32) -> __v8i16; - #[link_name = "llvm.loongarch.lsx.vreplgr2vr.w"] - fn __lsx_vreplgr2vr_w(a: i32) -> __v4i32; - #[link_name = "llvm.loongarch.lsx.vreplgr2vr.d"] - fn __lsx_vreplgr2vr_d(a: i64) -> __v2i64; - #[link_name = "llvm.loongarch.lsx.vpcnt.b"] - fn __lsx_vpcnt_b(a: __v16i8) -> __v16i8; - #[link_name = "llvm.loongarch.lsx.vpcnt.h"] - fn __lsx_vpcnt_h(a: __v8i16) -> __v8i16; - #[link_name = "llvm.loongarch.lsx.vpcnt.w"] - fn __lsx_vpcnt_w(a: __v4i32) -> __v4i32; - #[link_name = "llvm.loongarch.lsx.vpcnt.d"] - fn __lsx_vpcnt_d(a: __v2i64) -> __v2i64; #[link_name = "llvm.loongarch.lsx.vclo.b"] fn __lsx_vclo_b(a: __v16i8) -> __v16i8; #[link_name = "llvm.loongarch.lsx.vclo.h"] @@ -619,54 +323,6 @@ unsafe extern "unadjusted" { fn __lsx_vclo_w(a: __v4i32) -> __v4i32; #[link_name = "llvm.loongarch.lsx.vclo.d"] fn __lsx_vclo_d(a: __v2i64) -> __v2i64; - #[link_name = "llvm.loongarch.lsx.vclz.b"] - fn __lsx_vclz_b(a: __v16i8) -> __v16i8; - #[link_name = "llvm.loongarch.lsx.vclz.h"] - fn __lsx_vclz_h(a: __v8i16) -> __v8i16; - #[link_name = "llvm.loongarch.lsx.vclz.w"] - fn __lsx_vclz_w(a: __v4i32) -> __v4i32; - #[link_name = "llvm.loongarch.lsx.vclz.d"] - fn __lsx_vclz_d(a: __v2i64) -> __v2i64; - #[link_name = "llvm.loongarch.lsx.vpickve2gr.b"] - fn __lsx_vpickve2gr_b(a: __v16i8, b: u32) -> i32; - #[link_name = "llvm.loongarch.lsx.vpickve2gr.h"] - fn __lsx_vpickve2gr_h(a: __v8i16, b: u32) -> i32; - #[link_name = "llvm.loongarch.lsx.vpickve2gr.w"] - fn __lsx_vpickve2gr_w(a: __v4i32, b: u32) -> i32; - #[link_name = "llvm.loongarch.lsx.vpickve2gr.d"] - fn __lsx_vpickve2gr_d(a: __v2i64, b: u32) -> i64; - #[link_name = "llvm.loongarch.lsx.vpickve2gr.bu"] - fn __lsx_vpickve2gr_bu(a: __v16i8, b: u32) -> u32; - #[link_name = "llvm.loongarch.lsx.vpickve2gr.hu"] - fn __lsx_vpickve2gr_hu(a: __v8i16, b: u32) -> u32; - #[link_name = "llvm.loongarch.lsx.vpickve2gr.wu"] - fn __lsx_vpickve2gr_wu(a: __v4i32, b: u32) -> u32; - #[link_name = "llvm.loongarch.lsx.vpickve2gr.du"] - fn __lsx_vpickve2gr_du(a: __v2i64, b: u32) -> u64; - #[link_name = "llvm.loongarch.lsx.vinsgr2vr.b"] - fn __lsx_vinsgr2vr_b(a: __v16i8, b: i32, c: u32) -> __v16i8; - #[link_name = "llvm.loongarch.lsx.vinsgr2vr.h"] - fn __lsx_vinsgr2vr_h(a: __v8i16, b: i32, c: u32) -> __v8i16; - #[link_name = "llvm.loongarch.lsx.vinsgr2vr.w"] - fn __lsx_vinsgr2vr_w(a: __v4i32, b: i32, c: u32) -> __v4i32; - #[link_name = "llvm.loongarch.lsx.vinsgr2vr.d"] - fn __lsx_vinsgr2vr_d(a: __v2i64, b: i64, c: u32) -> __v2i64; - #[link_name = "llvm.loongarch.lsx.vfadd.s"] - fn __lsx_vfadd_s(a: __v4f32, b: __v4f32) -> __v4f32; - #[link_name = "llvm.loongarch.lsx.vfadd.d"] - fn __lsx_vfadd_d(a: __v2f64, b: __v2f64) -> __v2f64; - #[link_name = "llvm.loongarch.lsx.vfsub.s"] - fn __lsx_vfsub_s(a: __v4f32, b: __v4f32) -> __v4f32; - #[link_name = "llvm.loongarch.lsx.vfsub.d"] - fn __lsx_vfsub_d(a: __v2f64, b: __v2f64) -> __v2f64; - #[link_name = "llvm.loongarch.lsx.vfmul.s"] - fn __lsx_vfmul_s(a: __v4f32, b: __v4f32) -> __v4f32; - #[link_name = "llvm.loongarch.lsx.vfmul.d"] - fn __lsx_vfmul_d(a: __v2f64, b: __v2f64) -> __v2f64; - #[link_name = "llvm.loongarch.lsx.vfdiv.s"] - fn __lsx_vfdiv_s(a: __v4f32, b: __v4f32) -> __v4f32; - #[link_name = "llvm.loongarch.lsx.vfdiv.d"] - fn __lsx_vfdiv_d(a: __v2f64, b: __v2f64) -> __v2f64; #[link_name = "llvm.loongarch.lsx.vfcvt.h.s"] fn __lsx_vfcvt_h_s(a: __v4f32, b: __v4f32) -> __v8i16; #[link_name = "llvm.loongarch.lsx.vfcvt.s.d"] @@ -691,10 +347,6 @@ unsafe extern "unadjusted" { fn __lsx_vfclass_s(a: __v4f32) -> __v4i32; #[link_name = "llvm.loongarch.lsx.vfclass.d"] fn __lsx_vfclass_d(a: __v2f64) -> __v2i64; - #[link_name = "llvm.loongarch.lsx.vfsqrt.s"] - fn __lsx_vfsqrt_s(a: __v4f32) -> __v4f32; - #[link_name = "llvm.loongarch.lsx.vfsqrt.d"] - fn __lsx_vfsqrt_d(a: __v2f64) -> __v2f64; #[link_name = "llvm.loongarch.lsx.vfrecip.s"] fn __lsx_vfrecip_s(a: __v4f32) -> __v4f32; #[link_name = "llvm.loongarch.lsx.vfrecip.d"] @@ -751,16 +403,6 @@ unsafe extern "unadjusted" { fn __lsx_vffint_s_wu(a: __v4u32) -> __v4f32; #[link_name = "llvm.loongarch.lsx.vffint.d.lu"] fn __lsx_vffint_d_lu(a: __v2u64) -> __v2f64; - #[link_name = "llvm.loongarch.lsx.vandn.v"] - fn __lsx_vandn_v(a: __v16u8, b: __v16u8) -> __v16u8; - #[link_name = "llvm.loongarch.lsx.vneg.b"] - fn __lsx_vneg_b(a: __v16i8) -> __v16i8; - #[link_name = "llvm.loongarch.lsx.vneg.h"] - fn __lsx_vneg_h(a: __v8i16) -> __v8i16; - #[link_name = "llvm.loongarch.lsx.vneg.w"] - fn __lsx_vneg_w(a: __v4i32) -> __v4i32; - #[link_name = "llvm.loongarch.lsx.vneg.d"] - fn __lsx_vneg_d(a: __v2i64) -> __v2i64; #[link_name = "llvm.loongarch.lsx.vmuh.b"] fn __lsx_vmuh_b(a: __v16i8, b: __v16i8) -> __v16i8; #[link_name = "llvm.loongarch.lsx.vmuh.h"] @@ -887,22 +529,6 @@ unsafe extern "unadjusted" { fn __lsx_vsigncov_w(a: __v4i32, b: __v4i32) -> __v4i32; #[link_name = "llvm.loongarch.lsx.vsigncov.d"] fn __lsx_vsigncov_d(a: __v2i64, b: __v2i64) -> __v2i64; - #[link_name = "llvm.loongarch.lsx.vfmadd.s"] - fn __lsx_vfmadd_s(a: __v4f32, b: __v4f32, c: __v4f32) -> __v4f32; - #[link_name = "llvm.loongarch.lsx.vfmadd.d"] - fn __lsx_vfmadd_d(a: __v2f64, b: __v2f64, c: __v2f64) -> __v2f64; - #[link_name = "llvm.loongarch.lsx.vfmsub.s"] - fn __lsx_vfmsub_s(a: __v4f32, b: __v4f32, c: __v4f32) -> __v4f32; - #[link_name = "llvm.loongarch.lsx.vfmsub.d"] - fn __lsx_vfmsub_d(a: __v2f64, b: __v2f64, c: __v2f64) -> __v2f64; - #[link_name = "llvm.loongarch.lsx.vfnmadd.s"] - fn __lsx_vfnmadd_s(a: __v4f32, b: __v4f32, c: __v4f32) -> __v4f32; - #[link_name = "llvm.loongarch.lsx.vfnmadd.d"] - fn __lsx_vfnmadd_d(a: __v2f64, b: __v2f64, c: __v2f64) -> __v2f64; - #[link_name = "llvm.loongarch.lsx.vfnmsub.s"] - fn __lsx_vfnmsub_s(a: __v4f32, b: __v4f32, c: __v4f32) -> __v4f32; - #[link_name = "llvm.loongarch.lsx.vfnmsub.d"] - fn __lsx_vfnmsub_d(a: __v2f64, b: __v2f64, c: __v2f64) -> __v2f64; #[link_name = "llvm.loongarch.lsx.vftintrne.w.s"] fn __lsx_vftintrne_w_s(a: __v4f32) -> __v4i32; #[link_name = "llvm.loongarch.lsx.vftintrne.l.d"] @@ -1323,8 +949,6 @@ unsafe extern "unadjusted" { fn __lsx_vssrln_h_w(a: __v4i32, b: __v4i32) -> __v8i16; #[link_name = "llvm.loongarch.lsx.vssrln.w.d"] fn __lsx_vssrln_w_d(a: __v2i64, b: __v2i64) -> __v4i32; - #[link_name = "llvm.loongarch.lsx.vorn.v"] - fn __lsx_vorn_v(a: __v16u8, b: __v16u8) -> __v16u8; #[link_name = "llvm.loongarch.lsx.vldi"] fn __lsx_vldi(a: i32) -> __v2i64; #[link_name = "llvm.loongarch.lsx.vshuf.b"] @@ -1443,142 +1067,6 @@ unsafe extern "unadjusted" { fn __lsx_vfcmp_sune_s(a: __v4f32, b: __v4f32) -> __v4i32; #[link_name = "llvm.loongarch.lsx.vfcmp.sun.s"] fn __lsx_vfcmp_sun_s(a: __v4f32, b: __v4f32) -> __v4i32; - #[link_name = "llvm.loongarch.lsx.vrepli.b"] - fn __lsx_vrepli_b(a: i32) -> __v16i8; - #[link_name = "llvm.loongarch.lsx.vrepli.d"] - fn __lsx_vrepli_d(a: i32) -> __v2i64; - #[link_name = "llvm.loongarch.lsx.vrepli.h"] - fn __lsx_vrepli_h(a: i32) -> __v8i16; - #[link_name = "llvm.loongarch.lsx.vrepli.w"] - fn __lsx_vrepli_w(a: i32) -> __v4i32; -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsll_b(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vsll_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsll_h(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vsll_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsll_w(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vsll_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsll_d(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vsll_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vslli_b(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM3, 3); - unsafe { transmute(__lsx_vslli_b(transmute(a), IMM3)) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vslli_h(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM4, 4); - unsafe { transmute(__lsx_vslli_h(transmute(a), IMM4)) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vslli_w(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lsx_vslli_w(transmute(a), IMM5)) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vslli_d(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM6, 6); - unsafe { transmute(__lsx_vslli_d(transmute(a), IMM6)) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsra_b(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vsra_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsra_h(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vsra_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsra_w(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vsra_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsra_d(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vsra_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsrai_b(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM3, 3); - unsafe { transmute(__lsx_vsrai_b(transmute(a), IMM3)) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsrai_h(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM4, 4); - unsafe { transmute(__lsx_vsrai_h(transmute(a), IMM4)) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsrai_w(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lsx_vsrai_w(transmute(a), IMM5)) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsrai_d(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM6, 6); - unsafe { transmute(__lsx_vsrai_d(transmute(a), IMM6)) } } #[inline(always)] @@ -1645,70 +1133,6 @@ pub fn lsx_vsrari_d(a: m128i) -> m128i { unsafe { transmute(__lsx_vsrari_d(transmute(a), IMM6)) } } -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsrl_b(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vsrl_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsrl_h(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vsrl_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsrl_w(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vsrl_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsrl_d(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vsrl_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsrli_b(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM3, 3); - unsafe { transmute(__lsx_vsrli_b(transmute(a), IMM3)) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsrli_h(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM4, 4); - unsafe { transmute(__lsx_vsrli_h(transmute(a), IMM4)) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsrli_w(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lsx_vsrli_w(transmute(a), IMM5)) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsrli_d(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM6, 6); - unsafe { transmute(__lsx_vsrli_d(transmute(a), IMM6)) } -} - #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] @@ -1967,1412 +1391,548 @@ pub fn lsx_vbitrevi_d(a: m128i) -> m128i { #[inline(always)] #[target_feature(enable = "lsx")] +#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vadd_b(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vadd_b(transmute(a), transmute(b))) } +pub fn lsx_vsubi_bu(a: m128i) -> m128i { + static_assert_uimm_bits!(IMM5, 5); + unsafe { transmute(__lsx_vsubi_bu(transmute(a), IMM5)) } } #[inline(always)] #[target_feature(enable = "lsx")] +#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vadd_h(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vadd_h(transmute(a), transmute(b))) } +pub fn lsx_vsubi_hu(a: m128i) -> m128i { + static_assert_uimm_bits!(IMM5, 5); + unsafe { transmute(__lsx_vsubi_hu(transmute(a), IMM5)) } } #[inline(always)] #[target_feature(enable = "lsx")] +#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vadd_w(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vadd_w(transmute(a), transmute(b))) } +pub fn lsx_vsubi_wu(a: m128i) -> m128i { + static_assert_uimm_bits!(IMM5, 5); + unsafe { transmute(__lsx_vsubi_wu(transmute(a), IMM5)) } } #[inline(always)] #[target_feature(enable = "lsx")] +#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vadd_d(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vadd_d(transmute(a), transmute(b))) } +pub fn lsx_vsubi_du(a: m128i) -> m128i { + static_assert_uimm_bits!(IMM5, 5); + unsafe { transmute(__lsx_vsubi_du(transmute(a), IMM5)) } } #[inline(always)] #[target_feature(enable = "lsx")] #[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vaddi_bu(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lsx_vaddi_bu(transmute(a), IMM5)) } +pub fn lsx_vsat_b(a: m128i) -> m128i { + static_assert_uimm_bits!(IMM3, 3); + unsafe { transmute(__lsx_vsat_b(transmute(a), IMM3)) } } #[inline(always)] #[target_feature(enable = "lsx")] #[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vaddi_hu(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lsx_vaddi_hu(transmute(a), IMM5)) } +pub fn lsx_vsat_h(a: m128i) -> m128i { + static_assert_uimm_bits!(IMM4, 4); + unsafe { transmute(__lsx_vsat_h(transmute(a), IMM4)) } } #[inline(always)] #[target_feature(enable = "lsx")] #[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vaddi_wu(a: m128i) -> m128i { +pub fn lsx_vsat_w(a: m128i) -> m128i { static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lsx_vaddi_wu(transmute(a), IMM5)) } + unsafe { transmute(__lsx_vsat_w(transmute(a), IMM5)) } } #[inline(always)] #[target_feature(enable = "lsx")] #[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vaddi_du(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lsx_vaddi_du(transmute(a), IMM5)) } +pub fn lsx_vsat_d(a: m128i) -> m128i { + static_assert_uimm_bits!(IMM6, 6); + unsafe { transmute(__lsx_vsat_d(transmute(a), IMM6)) } } #[inline(always)] #[target_feature(enable = "lsx")] +#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsub_b(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vsub_b(transmute(a), transmute(b))) } +pub fn lsx_vsat_bu(a: m128i) -> m128i { + static_assert_uimm_bits!(IMM3, 3); + unsafe { transmute(__lsx_vsat_bu(transmute(a), IMM3)) } } #[inline(always)] #[target_feature(enable = "lsx")] +#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsub_h(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vsub_h(transmute(a), transmute(b))) } +pub fn lsx_vsat_hu(a: m128i) -> m128i { + static_assert_uimm_bits!(IMM4, 4); + unsafe { transmute(__lsx_vsat_hu(transmute(a), IMM4)) } } #[inline(always)] #[target_feature(enable = "lsx")] +#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsub_w(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vsub_w(transmute(a), transmute(b))) } +pub fn lsx_vsat_wu(a: m128i) -> m128i { + static_assert_uimm_bits!(IMM5, 5); + unsafe { transmute(__lsx_vsat_wu(transmute(a), IMM5)) } } #[inline(always)] #[target_feature(enable = "lsx")] +#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsub_d(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vsub_d(transmute(a), transmute(b))) } +pub fn lsx_vsat_du(a: m128i) -> m128i { + static_assert_uimm_bits!(IMM6, 6); + unsafe { transmute(__lsx_vsat_du(transmute(a), IMM6)) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsubi_bu(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lsx_vsubi_bu(transmute(a), IMM5)) } +pub fn lsx_vadda_b(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vadda_b(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsubi_hu(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lsx_vsubi_hu(transmute(a), IMM5)) } +pub fn lsx_vadda_h(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vadda_h(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsubi_wu(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lsx_vsubi_wu(transmute(a), IMM5)) } +pub fn lsx_vadda_w(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vadda_w(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsubi_du(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lsx_vsubi_du(transmute(a), IMM5)) } +pub fn lsx_vadda_d(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vadda_d(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmax_b(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vmax_b(transmute(a), transmute(b))) } +pub fn lsx_vsadd_b(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vsadd_b(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmax_h(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vmax_h(transmute(a), transmute(b))) } +pub fn lsx_vsadd_h(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vsadd_h(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmax_w(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vmax_w(transmute(a), transmute(b))) } +pub fn lsx_vsadd_w(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vsadd_w(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmax_d(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vmax_d(transmute(a), transmute(b))) } +pub fn lsx_vsadd_d(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vsadd_d(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmaxi_b(a: m128i) -> m128i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lsx_vmaxi_b(transmute(a), IMM_S5)) } +pub fn lsx_vsadd_bu(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vsadd_bu(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmaxi_h(a: m128i) -> m128i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lsx_vmaxi_h(transmute(a), IMM_S5)) } +pub fn lsx_vsadd_hu(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vsadd_hu(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmaxi_w(a: m128i) -> m128i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lsx_vmaxi_w(transmute(a), IMM_S5)) } +pub fn lsx_vsadd_wu(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vsadd_wu(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmaxi_d(a: m128i) -> m128i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lsx_vmaxi_d(transmute(a), IMM_S5)) } +pub fn lsx_vsadd_du(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vsadd_du(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmax_bu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vmax_bu(transmute(a), transmute(b))) } +pub fn lsx_vavg_b(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vavg_b(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmax_hu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vmax_hu(transmute(a), transmute(b))) } +pub fn lsx_vavg_h(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vavg_h(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmax_wu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vmax_wu(transmute(a), transmute(b))) } +pub fn lsx_vavg_w(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vavg_w(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmax_du(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vmax_du(transmute(a), transmute(b))) } +pub fn lsx_vavg_d(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vavg_d(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmaxi_bu(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lsx_vmaxi_bu(transmute(a), IMM5)) } +pub fn lsx_vavg_bu(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vavg_bu(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmaxi_hu(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lsx_vmaxi_hu(transmute(a), IMM5)) } +pub fn lsx_vavg_hu(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vavg_hu(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmaxi_wu(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lsx_vmaxi_wu(transmute(a), IMM5)) } +pub fn lsx_vavg_wu(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vavg_wu(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmaxi_du(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lsx_vmaxi_du(transmute(a), IMM5)) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmin_b(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vmin_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmin_h(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vmin_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmin_w(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vmin_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmin_d(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vmin_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmini_b(a: m128i) -> m128i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lsx_vmini_b(transmute(a), IMM_S5)) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmini_h(a: m128i) -> m128i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lsx_vmini_h(transmute(a), IMM_S5)) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmini_w(a: m128i) -> m128i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lsx_vmini_w(transmute(a), IMM_S5)) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmini_d(a: m128i) -> m128i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lsx_vmini_d(transmute(a), IMM_S5)) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmin_bu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vmin_bu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmin_hu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vmin_hu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmin_wu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vmin_wu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmin_du(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vmin_du(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmini_bu(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lsx_vmini_bu(transmute(a), IMM5)) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmini_hu(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lsx_vmini_hu(transmute(a), IMM5)) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmini_wu(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lsx_vmini_wu(transmute(a), IMM5)) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmini_du(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lsx_vmini_du(transmute(a), IMM5)) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vseq_b(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vseq_b(transmute(a), transmute(b))) } +pub fn lsx_vavg_du(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vavg_du(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vseq_h(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vseq_h(transmute(a), transmute(b))) } +pub fn lsx_vavgr_b(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vavgr_b(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vseq_w(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vseq_w(transmute(a), transmute(b))) } +pub fn lsx_vavgr_h(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vavgr_h(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vseq_d(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vseq_d(transmute(a), transmute(b))) } +pub fn lsx_vavgr_w(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vavgr_w(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vseqi_b(a: m128i) -> m128i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lsx_vseqi_b(transmute(a), IMM_S5)) } +pub fn lsx_vavgr_d(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vavgr_d(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vseqi_h(a: m128i) -> m128i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lsx_vseqi_h(transmute(a), IMM_S5)) } +pub fn lsx_vavgr_bu(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vavgr_bu(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vseqi_w(a: m128i) -> m128i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lsx_vseqi_w(transmute(a), IMM_S5)) } +pub fn lsx_vavgr_hu(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vavgr_hu(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vseqi_d(a: m128i) -> m128i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lsx_vseqi_d(transmute(a), IMM_S5)) } +pub fn lsx_vavgr_wu(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vavgr_wu(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vslti_b(a: m128i) -> m128i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lsx_vslti_b(transmute(a), IMM_S5)) } +pub fn lsx_vavgr_du(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vavgr_du(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vslt_b(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vslt_b(transmute(a), transmute(b))) } +pub fn lsx_vssub_b(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vssub_b(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vslt_h(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vslt_h(transmute(a), transmute(b))) } +pub fn lsx_vssub_h(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vssub_h(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vslt_w(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vslt_w(transmute(a), transmute(b))) } +pub fn lsx_vssub_w(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vssub_w(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vslt_d(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vslt_d(transmute(a), transmute(b))) } +pub fn lsx_vssub_d(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vssub_d(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vslti_h(a: m128i) -> m128i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lsx_vslti_h(transmute(a), IMM_S5)) } +pub fn lsx_vssub_bu(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vssub_bu(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vslti_w(a: m128i) -> m128i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lsx_vslti_w(transmute(a), IMM_S5)) } +pub fn lsx_vssub_hu(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vssub_hu(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vslti_d(a: m128i) -> m128i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lsx_vslti_d(transmute(a), IMM_S5)) } +pub fn lsx_vssub_wu(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vssub_wu(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vslt_bu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vslt_bu(transmute(a), transmute(b))) } +pub fn lsx_vssub_du(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vssub_du(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vslt_hu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vslt_hu(transmute(a), transmute(b))) } +pub fn lsx_vabsd_b(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vabsd_b(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vslt_wu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vslt_wu(transmute(a), transmute(b))) } +pub fn lsx_vabsd_h(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vabsd_h(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vslt_du(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vslt_du(transmute(a), transmute(b))) } +pub fn lsx_vabsd_w(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vabsd_w(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vslti_bu(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lsx_vslti_bu(transmute(a), IMM5)) } +pub fn lsx_vabsd_d(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vabsd_d(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vslti_hu(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lsx_vslti_hu(transmute(a), IMM5)) } +pub fn lsx_vabsd_bu(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vabsd_bu(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vslti_wu(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lsx_vslti_wu(transmute(a), IMM5)) } +pub fn lsx_vabsd_hu(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vabsd_hu(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vslti_du(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lsx_vslti_du(transmute(a), IMM5)) } +pub fn lsx_vabsd_wu(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vabsd_wu(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsle_b(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vsle_b(transmute(a), transmute(b))) } +pub fn lsx_vabsd_du(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vabsd_du(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsle_h(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vsle_h(transmute(a), transmute(b))) } +pub fn lsx_vhaddw_h_b(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vhaddw_h_b(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsle_w(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vsle_w(transmute(a), transmute(b))) } +pub fn lsx_vhaddw_w_h(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vhaddw_w_h(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsle_d(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vsle_d(transmute(a), transmute(b))) } +pub fn lsx_vhaddw_d_w(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vhaddw_d_w(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vslei_b(a: m128i) -> m128i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lsx_vslei_b(transmute(a), IMM_S5)) } +pub fn lsx_vhaddw_hu_bu(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vhaddw_hu_bu(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vslei_h(a: m128i) -> m128i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lsx_vslei_h(transmute(a), IMM_S5)) } +pub fn lsx_vhaddw_wu_hu(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vhaddw_wu_hu(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vslei_w(a: m128i) -> m128i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lsx_vslei_w(transmute(a), IMM_S5)) } +pub fn lsx_vhaddw_du_wu(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vhaddw_du_wu(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vslei_d(a: m128i) -> m128i { - static_assert_simm_bits!(IMM_S5, 5); - unsafe { transmute(__lsx_vslei_d(transmute(a), IMM_S5)) } +pub fn lsx_vhsubw_h_b(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vhsubw_h_b(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsle_bu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vsle_bu(transmute(a), transmute(b))) } +pub fn lsx_vhsubw_w_h(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vhsubw_w_h(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsle_hu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vsle_hu(transmute(a), transmute(b))) } +pub fn lsx_vhsubw_d_w(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vhsubw_d_w(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsle_wu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vsle_wu(transmute(a), transmute(b))) } +pub fn lsx_vhsubw_hu_bu(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vhsubw_hu_bu(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsle_du(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vsle_du(transmute(a), transmute(b))) } +pub fn lsx_vhsubw_wu_hu(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vhsubw_wu_hu(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vslei_bu(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lsx_vslei_bu(transmute(a), IMM5)) } +pub fn lsx_vhsubw_du_wu(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vhsubw_du_wu(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vslei_hu(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lsx_vslei_hu(transmute(a), IMM5)) } +pub fn lsx_vreplve_b(a: m128i, b: i32) -> m128i { + unsafe { transmute(__lsx_vreplve_b(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vslei_wu(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lsx_vslei_wu(transmute(a), IMM5)) } +pub fn lsx_vreplve_h(a: m128i, b: i32) -> m128i { + unsafe { transmute(__lsx_vreplve_h(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vslei_du(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lsx_vslei_du(transmute(a), IMM5)) } +pub fn lsx_vreplve_w(a: m128i, b: i32) -> m128i { + unsafe { transmute(__lsx_vreplve_w(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsat_b(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM3, 3); - unsafe { transmute(__lsx_vsat_b(transmute(a), IMM3)) } +pub fn lsx_vreplve_d(a: m128i, b: i32) -> m128i { + unsafe { transmute(__lsx_vreplve_d(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsat_h(a: m128i) -> m128i { +pub fn lsx_vreplvei_b(a: m128i) -> m128i { static_assert_uimm_bits!(IMM4, 4); - unsafe { transmute(__lsx_vsat_h(transmute(a), IMM4)) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsat_w(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lsx_vsat_w(transmute(a), IMM5)) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsat_d(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM6, 6); - unsafe { transmute(__lsx_vsat_d(transmute(a), IMM6)) } + unsafe { transmute(__lsx_vreplvei_b(transmute(a), IMM4)) } } #[inline(always)] #[target_feature(enable = "lsx")] #[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsat_bu(a: m128i) -> m128i { +pub fn lsx_vreplvei_h(a: m128i) -> m128i { static_assert_uimm_bits!(IMM3, 3); - unsafe { transmute(__lsx_vsat_bu(transmute(a), IMM3)) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsat_hu(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM4, 4); - unsafe { transmute(__lsx_vsat_hu(transmute(a), IMM4)) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsat_wu(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM5, 5); - unsafe { transmute(__lsx_vsat_wu(transmute(a), IMM5)) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsat_du(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM6, 6); - unsafe { transmute(__lsx_vsat_du(transmute(a), IMM6)) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vadda_b(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vadda_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vadda_h(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vadda_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vadda_w(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vadda_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vadda_d(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vadda_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsadd_b(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vsadd_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsadd_h(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vsadd_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsadd_w(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vsadd_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsadd_d(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vsadd_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsadd_bu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vsadd_bu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsadd_hu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vsadd_hu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsadd_wu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vsadd_wu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vsadd_du(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vsadd_du(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vavg_b(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vavg_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vavg_h(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vavg_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vavg_w(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vavg_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vavg_d(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vavg_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vavg_bu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vavg_bu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vavg_hu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vavg_hu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vavg_wu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vavg_wu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vavg_du(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vavg_du(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vavgr_b(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vavgr_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vavgr_h(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vavgr_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vavgr_w(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vavgr_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vavgr_d(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vavgr_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vavgr_bu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vavgr_bu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vavgr_hu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vavgr_hu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vavgr_wu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vavgr_wu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vavgr_du(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vavgr_du(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vssub_b(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vssub_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vssub_h(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vssub_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vssub_w(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vssub_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vssub_d(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vssub_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vssub_bu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vssub_bu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vssub_hu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vssub_hu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vssub_wu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vssub_wu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vssub_du(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vssub_du(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vabsd_b(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vabsd_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vabsd_h(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vabsd_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vabsd_w(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vabsd_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vabsd_d(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vabsd_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vabsd_bu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vabsd_bu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vabsd_hu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vabsd_hu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vabsd_wu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vabsd_wu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vabsd_du(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vabsd_du(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmul_b(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vmul_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmul_h(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vmul_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmul_w(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vmul_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmul_d(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vmul_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmadd_b(a: m128i, b: m128i, c: m128i) -> m128i { - unsafe { transmute(__lsx_vmadd_b(transmute(a), transmute(b), transmute(c))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmadd_h(a: m128i, b: m128i, c: m128i) -> m128i { - unsafe { transmute(__lsx_vmadd_h(transmute(a), transmute(b), transmute(c))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmadd_w(a: m128i, b: m128i, c: m128i) -> m128i { - unsafe { transmute(__lsx_vmadd_w(transmute(a), transmute(b), transmute(c))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmadd_d(a: m128i, b: m128i, c: m128i) -> m128i { - unsafe { transmute(__lsx_vmadd_d(transmute(a), transmute(b), transmute(c))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmsub_b(a: m128i, b: m128i, c: m128i) -> m128i { - unsafe { transmute(__lsx_vmsub_b(transmute(a), transmute(b), transmute(c))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmsub_h(a: m128i, b: m128i, c: m128i) -> m128i { - unsafe { transmute(__lsx_vmsub_h(transmute(a), transmute(b), transmute(c))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmsub_w(a: m128i, b: m128i, c: m128i) -> m128i { - unsafe { transmute(__lsx_vmsub_w(transmute(a), transmute(b), transmute(c))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmsub_d(a: m128i, b: m128i, c: m128i) -> m128i { - unsafe { transmute(__lsx_vmsub_d(transmute(a), transmute(b), transmute(c))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vdiv_b(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vdiv_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vdiv_h(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vdiv_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vdiv_w(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vdiv_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vdiv_d(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vdiv_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vdiv_bu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vdiv_bu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vdiv_hu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vdiv_hu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vdiv_wu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vdiv_wu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vdiv_du(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vdiv_du(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vhaddw_h_b(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vhaddw_h_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vhaddw_w_h(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vhaddw_w_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vhaddw_d_w(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vhaddw_d_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vhaddw_hu_bu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vhaddw_hu_bu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vhaddw_wu_hu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vhaddw_wu_hu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vhaddw_du_wu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vhaddw_du_wu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vhsubw_h_b(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vhsubw_h_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vhsubw_w_h(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vhsubw_w_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vhsubw_d_w(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vhsubw_d_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vhsubw_hu_bu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vhsubw_hu_bu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vhsubw_wu_hu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vhsubw_wu_hu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vhsubw_du_wu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vhsubw_du_wu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmod_b(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vmod_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmod_h(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vmod_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmod_w(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vmod_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmod_d(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vmod_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmod_bu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vmod_bu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmod_hu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vmod_hu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmod_wu(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vmod_wu(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vmod_du(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vmod_du(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vreplve_b(a: m128i, b: i32) -> m128i { - unsafe { transmute(__lsx_vreplve_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vreplve_h(a: m128i, b: i32) -> m128i { - unsafe { transmute(__lsx_vreplve_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vreplve_w(a: m128i, b: i32) -> m128i { - unsafe { transmute(__lsx_vreplve_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vreplve_d(a: m128i, b: i32) -> m128i { - unsafe { transmute(__lsx_vreplve_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vreplvei_b(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM4, 4); - unsafe { transmute(__lsx_vreplvei_b(transmute(a), IMM4)) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vreplvei_h(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM3, 3); - unsafe { transmute(__lsx_vreplvei_h(transmute(a), IMM3)) } + unsafe { transmute(__lsx_vreplvei_h(transmute(a), IMM3)) } } #[inline(always)] @@ -3386,583 +1946,307 @@ pub fn lsx_vreplvei_w(a: m128i) -> m128i { #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vreplvei_d(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM1, 1); - unsafe { transmute(__lsx_vreplvei_d(transmute(a), IMM1)) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vpickev_b(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vpickev_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vpickev_h(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vpickev_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vpickev_w(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vpickev_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vpickev_d(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vpickev_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vpickod_b(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vpickod_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vpickod_h(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vpickod_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vpickod_w(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vpickod_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vpickod_d(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vpickod_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vilvh_b(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vilvh_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vilvh_h(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vilvh_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vilvh_w(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vilvh_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vilvh_d(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vilvh_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vilvl_b(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vilvl_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vilvl_h(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vilvl_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vilvl_w(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vilvl_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vilvl_d(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vilvl_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vpackev_b(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vpackev_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vpackev_h(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vpackev_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vpackev_w(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vpackev_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vpackev_d(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vpackev_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vpackod_b(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vpackod_b(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vpackod_h(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vpackod_h(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vpackod_w(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vpackod_w(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vpackod_d(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vpackod_d(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vshuf_h(a: m128i, b: m128i, c: m128i) -> m128i { - unsafe { transmute(__lsx_vshuf_h(transmute(a), transmute(b), transmute(c))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vshuf_w(a: m128i, b: m128i, c: m128i) -> m128i { - unsafe { transmute(__lsx_vshuf_w(transmute(a), transmute(b), transmute(c))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vshuf_d(a: m128i, b: m128i, c: m128i) -> m128i { - unsafe { transmute(__lsx_vshuf_d(transmute(a), transmute(b), transmute(c))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vand_v(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vand_v(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vandi_b(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM8, 8); - unsafe { transmute(__lsx_vandi_b(transmute(a), IMM8)) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vor_v(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vor_v(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vori_b(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM8, 8); - unsafe { transmute(__lsx_vori_b(transmute(a), IMM8)) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vnor_v(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vnor_v(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vnori_b(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM8, 8); - unsafe { transmute(__lsx_vnori_b(transmute(a), IMM8)) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vxor_v(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vxor_v(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vxori_b(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM8, 8); - unsafe { transmute(__lsx_vxori_b(transmute(a), IMM8)) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] +#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vbitsel_v(a: m128i, b: m128i, c: m128i) -> m128i { - unsafe { transmute(__lsx_vbitsel_v(transmute(a), transmute(b), transmute(c))) } +pub fn lsx_vreplvei_d(a: m128i) -> m128i { + static_assert_uimm_bits!(IMM1, 1); + unsafe { transmute(__lsx_vreplvei_d(transmute(a), IMM1)) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(2)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vbitseli_b(a: m128i, b: m128i) -> m128i { - static_assert_uimm_bits!(IMM8, 8); - unsafe { transmute(__lsx_vbitseli_b(transmute(a), transmute(b), IMM8)) } +pub fn lsx_vpickev_b(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vpickev_b(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vshuf4i_b(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM8, 8); - unsafe { transmute(__lsx_vshuf4i_b(transmute(a), IMM8)) } +pub fn lsx_vpickev_h(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vpickev_h(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vshuf4i_h(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM8, 8); - unsafe { transmute(__lsx_vshuf4i_h(transmute(a), IMM8)) } +pub fn lsx_vpickev_w(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vpickev_w(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vshuf4i_w(a: m128i) -> m128i { - static_assert_uimm_bits!(IMM8, 8); - unsafe { transmute(__lsx_vshuf4i_w(transmute(a), IMM8)) } +pub fn lsx_vpickev_d(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vpickev_d(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vreplgr2vr_b(a: i32) -> m128i { - unsafe { transmute(__lsx_vreplgr2vr_b(transmute(a))) } +pub fn lsx_vpickod_b(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vpickod_b(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vreplgr2vr_h(a: i32) -> m128i { - unsafe { transmute(__lsx_vreplgr2vr_h(transmute(a))) } +pub fn lsx_vpickod_h(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vpickod_h(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vreplgr2vr_w(a: i32) -> m128i { - unsafe { transmute(__lsx_vreplgr2vr_w(transmute(a))) } +pub fn lsx_vpickod_w(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vpickod_w(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vreplgr2vr_d(a: i64) -> m128i { - unsafe { transmute(__lsx_vreplgr2vr_d(transmute(a))) } +pub fn lsx_vpickod_d(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vpickod_d(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vpcnt_b(a: m128i) -> m128i { - unsafe { transmute(__lsx_vpcnt_b(transmute(a))) } +pub fn lsx_vilvh_b(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vilvh_b(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vpcnt_h(a: m128i) -> m128i { - unsafe { transmute(__lsx_vpcnt_h(transmute(a))) } +pub fn lsx_vilvh_h(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vilvh_h(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vpcnt_w(a: m128i) -> m128i { - unsafe { transmute(__lsx_vpcnt_w(transmute(a))) } +pub fn lsx_vilvh_w(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vilvh_w(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vpcnt_d(a: m128i) -> m128i { - unsafe { transmute(__lsx_vpcnt_d(transmute(a))) } +pub fn lsx_vilvh_d(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vilvh_d(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vclo_b(a: m128i) -> m128i { - unsafe { transmute(__lsx_vclo_b(transmute(a))) } +pub fn lsx_vilvl_b(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vilvl_b(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vclo_h(a: m128i) -> m128i { - unsafe { transmute(__lsx_vclo_h(transmute(a))) } +pub fn lsx_vilvl_h(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vilvl_h(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vclo_w(a: m128i) -> m128i { - unsafe { transmute(__lsx_vclo_w(transmute(a))) } +pub fn lsx_vilvl_w(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vilvl_w(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vclo_d(a: m128i) -> m128i { - unsafe { transmute(__lsx_vclo_d(transmute(a))) } +pub fn lsx_vilvl_d(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vilvl_d(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vclz_b(a: m128i) -> m128i { - unsafe { transmute(__lsx_vclz_b(transmute(a))) } +pub fn lsx_vpackev_b(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vpackev_b(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vclz_h(a: m128i) -> m128i { - unsafe { transmute(__lsx_vclz_h(transmute(a))) } +pub fn lsx_vpackev_h(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vpackev_h(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vclz_w(a: m128i) -> m128i { - unsafe { transmute(__lsx_vclz_w(transmute(a))) } +pub fn lsx_vpackev_w(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vpackev_w(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vclz_d(a: m128i) -> m128i { - unsafe { transmute(__lsx_vclz_d(transmute(a))) } +pub fn lsx_vpackev_d(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vpackev_d(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vpickve2gr_b(a: m128i) -> i32 { - static_assert_uimm_bits!(IMM4, 4); - unsafe { transmute(__lsx_vpickve2gr_b(transmute(a), IMM4)) } +pub fn lsx_vpackod_b(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vpackod_b(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vpickve2gr_h(a: m128i) -> i32 { - static_assert_uimm_bits!(IMM3, 3); - unsafe { transmute(__lsx_vpickve2gr_h(transmute(a), IMM3)) } +pub fn lsx_vpackod_h(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vpackod_h(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vpickve2gr_w(a: m128i) -> i32 { - static_assert_uimm_bits!(IMM2, 2); - unsafe { transmute(__lsx_vpickve2gr_w(transmute(a), IMM2)) } +pub fn lsx_vpackod_w(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vpackod_w(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vpickve2gr_d(a: m128i) -> i64 { - static_assert_uimm_bits!(IMM1, 1); - unsafe { transmute(__lsx_vpickve2gr_d(transmute(a), IMM1)) } +pub fn lsx_vpackod_d(a: m128i, b: m128i) -> m128i { + unsafe { transmute(__lsx_vpackod_d(transmute(a), transmute(b))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vpickve2gr_bu(a: m128i) -> u32 { - static_assert_uimm_bits!(IMM4, 4); - unsafe { transmute(__lsx_vpickve2gr_bu(transmute(a), IMM4)) } +pub fn lsx_vshuf_h(a: m128i, b: m128i, c: m128i) -> m128i { + unsafe { transmute(__lsx_vshuf_h(transmute(a), transmute(b), transmute(c))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vpickve2gr_hu(a: m128i) -> u32 { - static_assert_uimm_bits!(IMM3, 3); - unsafe { transmute(__lsx_vpickve2gr_hu(transmute(a), IMM3)) } +pub fn lsx_vshuf_w(a: m128i, b: m128i, c: m128i) -> m128i { + unsafe { transmute(__lsx_vshuf_w(transmute(a), transmute(b), transmute(c))) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vpickve2gr_wu(a: m128i) -> u32 { - static_assert_uimm_bits!(IMM2, 2); - unsafe { transmute(__lsx_vpickve2gr_wu(transmute(a), IMM2)) } +pub fn lsx_vshuf_d(a: m128i, b: m128i, c: m128i) -> m128i { + unsafe { transmute(__lsx_vshuf_d(transmute(a), transmute(b), transmute(c))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vpickve2gr_du(a: m128i) -> u64 { - static_assert_uimm_bits!(IMM1, 1); - unsafe { transmute(__lsx_vpickve2gr_du(transmute(a), IMM1)) } +pub fn lsx_vandi_b(a: m128i) -> m128i { + static_assert_uimm_bits!(IMM8, 8); + unsafe { transmute(__lsx_vandi_b(transmute(a), IMM8)) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(2)] +#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vinsgr2vr_b(a: m128i, b: i32) -> m128i { - static_assert_uimm_bits!(IMM4, 4); - unsafe { transmute(__lsx_vinsgr2vr_b(transmute(a), transmute(b), IMM4)) } +pub fn lsx_vori_b(a: m128i) -> m128i { + static_assert_uimm_bits!(IMM8, 8); + unsafe { transmute(__lsx_vori_b(transmute(a), IMM8)) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(2)] +#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vinsgr2vr_h(a: m128i, b: i32) -> m128i { - static_assert_uimm_bits!(IMM3, 3); - unsafe { transmute(__lsx_vinsgr2vr_h(transmute(a), transmute(b), IMM3)) } +pub fn lsx_vnori_b(a: m128i) -> m128i { + static_assert_uimm_bits!(IMM8, 8); + unsafe { transmute(__lsx_vnori_b(transmute(a), IMM8)) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(2)] +#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vinsgr2vr_w(a: m128i, b: i32) -> m128i { - static_assert_uimm_bits!(IMM2, 2); - unsafe { transmute(__lsx_vinsgr2vr_w(transmute(a), transmute(b), IMM2)) } +pub fn lsx_vxori_b(a: m128i) -> m128i { + static_assert_uimm_bits!(IMM8, 8); + unsafe { transmute(__lsx_vxori_b(transmute(a), IMM8)) } } #[inline(always)] #[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(2)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vinsgr2vr_d(a: m128i, b: i64) -> m128i { - static_assert_uimm_bits!(IMM1, 1); - unsafe { transmute(__lsx_vinsgr2vr_d(transmute(a), transmute(b), IMM1)) } +pub fn lsx_vbitsel_v(a: m128i, b: m128i, c: m128i) -> m128i { + unsafe { transmute(__lsx_vbitsel_v(transmute(a), transmute(b), transmute(c))) } } #[inline(always)] #[target_feature(enable = "lsx")] +#[rustc_legacy_const_generics(2)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vfadd_s(a: m128, b: m128) -> m128 { - unsafe { transmute(__lsx_vfadd_s(transmute(a), transmute(b))) } +pub fn lsx_vbitseli_b(a: m128i, b: m128i) -> m128i { + static_assert_uimm_bits!(IMM8, 8); + unsafe { transmute(__lsx_vbitseli_b(transmute(a), transmute(b), IMM8)) } } #[inline(always)] #[target_feature(enable = "lsx")] +#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vfadd_d(a: m128d, b: m128d) -> m128d { - unsafe { transmute(__lsx_vfadd_d(transmute(a), transmute(b))) } +pub fn lsx_vshuf4i_b(a: m128i) -> m128i { + static_assert_uimm_bits!(IMM8, 8); + unsafe { transmute(__lsx_vshuf4i_b(transmute(a), IMM8)) } } #[inline(always)] #[target_feature(enable = "lsx")] +#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vfsub_s(a: m128, b: m128) -> m128 { - unsafe { transmute(__lsx_vfsub_s(transmute(a), transmute(b))) } +pub fn lsx_vshuf4i_h(a: m128i) -> m128i { + static_assert_uimm_bits!(IMM8, 8); + unsafe { transmute(__lsx_vshuf4i_h(transmute(a), IMM8)) } } #[inline(always)] #[target_feature(enable = "lsx")] +#[rustc_legacy_const_generics(1)] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vfsub_d(a: m128d, b: m128d) -> m128d { - unsafe { transmute(__lsx_vfsub_d(transmute(a), transmute(b))) } +pub fn lsx_vshuf4i_w(a: m128i) -> m128i { + static_assert_uimm_bits!(IMM8, 8); + unsafe { transmute(__lsx_vshuf4i_w(transmute(a), IMM8)) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vfmul_s(a: m128, b: m128) -> m128 { - unsafe { transmute(__lsx_vfmul_s(transmute(a), transmute(b))) } +pub fn lsx_vclo_b(a: m128i) -> m128i { + unsafe { transmute(__lsx_vclo_b(transmute(a))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vfmul_d(a: m128d, b: m128d) -> m128d { - unsafe { transmute(__lsx_vfmul_d(transmute(a), transmute(b))) } +pub fn lsx_vclo_h(a: m128i) -> m128i { + unsafe { transmute(__lsx_vclo_h(transmute(a))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vfdiv_s(a: m128, b: m128) -> m128 { - unsafe { transmute(__lsx_vfdiv_s(transmute(a), transmute(b))) } +pub fn lsx_vclo_w(a: m128i) -> m128i { + unsafe { transmute(__lsx_vclo_w(transmute(a))) } } #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vfdiv_d(a: m128d, b: m128d) -> m128d { - unsafe { transmute(__lsx_vfdiv_d(transmute(a), transmute(b))) } +pub fn lsx_vclo_d(a: m128i) -> m128i { + unsafe { transmute(__lsx_vclo_d(transmute(a))) } } #[inline(always)] @@ -4049,20 +2333,6 @@ pub fn lsx_vfclass_d(a: m128d) -> m128i { unsafe { transmute(__lsx_vfclass_d(transmute(a))) } } -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vfsqrt_s(a: m128) -> m128 { - unsafe { transmute(__lsx_vfsqrt_s(transmute(a))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vfsqrt_d(a: m128d) -> m128d { - unsafe { transmute(__lsx_vfsqrt_d(transmute(a))) } -} - #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] @@ -4259,41 +2529,6 @@ pub fn lsx_vffint_d_lu(a: m128i) -> m128d { unsafe { transmute(__lsx_vffint_d_lu(transmute(a))) } } -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vandn_v(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vandn_v(transmute(a), transmute(b))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vneg_b(a: m128i) -> m128i { - unsafe { transmute(__lsx_vneg_b(transmute(a))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vneg_h(a: m128i) -> m128i { - unsafe { transmute(__lsx_vneg_h(transmute(a))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vneg_w(a: m128i) -> m128i { - unsafe { transmute(__lsx_vneg_w(transmute(a))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vneg_d(a: m128i) -> m128i { - unsafe { transmute(__lsx_vneg_d(transmute(a))) } -} - #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] @@ -4765,62 +3000,6 @@ pub fn lsx_vsigncov_d(a: m128i, b: m128i) -> m128i { unsafe { transmute(__lsx_vsigncov_d(transmute(a), transmute(b))) } } -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vfmadd_s(a: m128, b: m128, c: m128) -> m128 { - unsafe { transmute(__lsx_vfmadd_s(transmute(a), transmute(b), transmute(c))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vfmadd_d(a: m128d, b: m128d, c: m128d) -> m128d { - unsafe { transmute(__lsx_vfmadd_d(transmute(a), transmute(b), transmute(c))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vfmsub_s(a: m128, b: m128, c: m128) -> m128 { - unsafe { transmute(__lsx_vfmsub_s(transmute(a), transmute(b), transmute(c))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vfmsub_d(a: m128d, b: m128d, c: m128d) -> m128d { - unsafe { transmute(__lsx_vfmsub_d(transmute(a), transmute(b), transmute(c))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vfnmadd_s(a: m128, b: m128, c: m128) -> m128 { - unsafe { transmute(__lsx_vfnmadd_s(transmute(a), transmute(b), transmute(c))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vfnmadd_d(a: m128d, b: m128d, c: m128d) -> m128d { - unsafe { transmute(__lsx_vfnmadd_d(transmute(a), transmute(b), transmute(c))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vfnmsub_s(a: m128, b: m128, c: m128) -> m128 { - unsafe { transmute(__lsx_vfnmsub_s(transmute(a), transmute(b), transmute(c))) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vfnmsub_d(a: m128d, b: m128d, c: m128d) -> m128d { - unsafe { transmute(__lsx_vfnmsub_d(transmute(a), transmute(b), transmute(c))) } -} - #[inline(always)] #[target_feature(enable = "lsx")] #[unstable(feature = "stdarch_loongarch", issue = "117427")] @@ -6421,13 +4600,6 @@ pub fn lsx_vssrln_w_d(a: m128i, b: m128i) -> m128i { unsafe { transmute(__lsx_vssrln_w_d(transmute(a), transmute(b))) } } -#[inline(always)] -#[target_feature(enable = "lsx")] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vorn_v(a: m128i, b: m128i) -> m128i { - unsafe { transmute(__lsx_vorn_v(transmute(a), transmute(b))) } -} - #[inline(always)] #[target_feature(enable = "lsx")] #[rustc_legacy_const_generics(0)] @@ -6842,39 +5014,3 @@ pub fn lsx_vfcmp_sune_s(a: m128, b: m128) -> m128i { pub fn lsx_vfcmp_sun_s(a: m128, b: m128) -> m128i { unsafe { transmute(__lsx_vfcmp_sun_s(transmute(a), transmute(b))) } } - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(0)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vrepli_b() -> m128i { - static_assert_simm_bits!(IMM_S10, 10); - unsafe { transmute(__lsx_vrepli_b(IMM_S10)) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(0)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vrepli_d() -> m128i { - static_assert_simm_bits!(IMM_S10, 10); - unsafe { transmute(__lsx_vrepli_d(IMM_S10)) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(0)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vrepli_h() -> m128i { - static_assert_simm_bits!(IMM_S10, 10); - unsafe { transmute(__lsx_vrepli_h(IMM_S10)) } -} - -#[inline(always)] -#[target_feature(enable = "lsx")] -#[rustc_legacy_const_generics(0)] -#[unstable(feature = "stdarch_loongarch", issue = "117427")] -pub fn lsx_vrepli_w() -> m128i { - static_assert_simm_bits!(IMM_S10, 10); - unsafe { transmute(__lsx_vrepli_w(IMM_S10)) } -} diff --git a/crates/core_arch/src/loongarch64/lsx/mod.rs b/crates/core_arch/src/loongarch64/lsx/mod.rs index 67a08985a9..0d353746ea 100644 --- a/crates/core_arch/src/loongarch64/lsx/mod.rs +++ b/crates/core_arch/src/loongarch64/lsx/mod.rs @@ -16,6 +16,13 @@ mod generated; #[unstable(feature = "stdarch_loongarch", issue = "117427")] pub use self::generated::*; +#[rustfmt::skip] +mod portable; + +#[rustfmt::skip] +#[unstable(feature = "stdarch_loongarch", issue = "117427")] +pub use self::portable::*; + #[rustfmt::skip] #[cfg(test)] mod tests; diff --git a/crates/core_arch/src/loongarch64/lsx/portable.rs b/crates/core_arch/src/loongarch64/lsx/portable.rs new file mode 100644 index 0000000000..e33b1758f3 --- /dev/null +++ b/crates/core_arch/src/loongarch64/lsx/portable.rs @@ -0,0 +1,207 @@ +//! LoongArch64 LSX intrinsics - intrinsics::simd implementation + +use super::super::{simd::*, *}; +use crate::core_arch::simd::*; +use crate::intrinsics::simd::*; +use crate::mem::transmute; + +impl_vv!("lsx", lsx_vpcnt_b, simd_ctpop, m128i, i8x16); +impl_vv!("lsx", lsx_vpcnt_h, simd_ctpop, m128i, i16x8); +impl_vv!("lsx", lsx_vpcnt_w, simd_ctpop, m128i, i32x4); +impl_vv!("lsx", lsx_vpcnt_d, simd_ctpop, m128i, i64x2); +impl_vv!("lsx", lsx_vclz_b, simd_ctlz, m128i, i8x16); +impl_vv!("lsx", lsx_vclz_h, simd_ctlz, m128i, i16x8); +impl_vv!("lsx", lsx_vclz_w, simd_ctlz, m128i, i32x4); +impl_vv!("lsx", lsx_vclz_d, simd_ctlz, m128i, i64x2); +impl_vv!("lsx", lsx_vneg_b, simd_neg, m128i, i8x16); +impl_vv!("lsx", lsx_vneg_h, simd_neg, m128i, i16x8); +impl_vv!("lsx", lsx_vneg_w, simd_neg, m128i, i32x4); +impl_vv!("lsx", lsx_vneg_d, simd_neg, m128i, i64x2); +impl_vv!("lsx", lsx_vfsqrt_s, simd_fsqrt, m128, f32x4); +impl_vv!("lsx", lsx_vfsqrt_d, simd_fsqrt, m128d, f64x2); + +impl_gv!("lsx", lsx_vreplgr2vr_b, simdl_splat, m128i, i8x16, i32); +impl_gv!("lsx", lsx_vreplgr2vr_h, simdl_splat, m128i, i16x8, i32); +impl_gv!("lsx", lsx_vreplgr2vr_w, simdl_splat, m128i, i32x4, i32); +impl_gv!("lsx", lsx_vreplgr2vr_d, simdl_splat, m128i, i64x2, i64); + +impl_sv!("lsx", lsx_vrepli_b, simdl_splat, m128i, i8x16, 10); +impl_sv!("lsx", lsx_vrepli_h, simdl_splat, m128i, i16x8, 10); +impl_sv!("lsx", lsx_vrepli_w, simdl_splat, m128i, i32x4, 10); +impl_sv!("lsx", lsx_vrepli_d, simdl_splat, m128i, i64x2, 10); + +impl_vvv!("lsx", lsx_vadd_b, simd_add, m128i, i8x16); +impl_vvv!("lsx", lsx_vadd_h, simd_add, m128i, i16x8); +impl_vvv!("lsx", lsx_vadd_w, simd_add, m128i, i32x4); +impl_vvv!("lsx", lsx_vadd_d, simd_add, m128i, i64x2); +impl_vvv!("lsx", lsx_vsub_b, simd_sub, m128i, i8x16); +impl_vvv!("lsx", lsx_vsub_h, simd_sub, m128i, i16x8); +impl_vvv!("lsx", lsx_vsub_w, simd_sub, m128i, i32x4); +impl_vvv!("lsx", lsx_vsub_d, simd_sub, m128i, i64x2); +impl_vvv!("lsx", lsx_vmax_b, simd_imax, m128i, i8x16); +impl_vvv!("lsx", lsx_vmax_h, simd_imax, m128i, i16x8); +impl_vvv!("lsx", lsx_vmax_w, simd_imax, m128i, i32x4); +impl_vvv!("lsx", lsx_vmax_d, simd_imax, m128i, i64x2); +impl_vvv!("lsx", lsx_vmax_bu, simd_imax, m128i, u8x16); +impl_vvv!("lsx", lsx_vmax_hu, simd_imax, m128i, u16x8); +impl_vvv!("lsx", lsx_vmax_wu, simd_imax, m128i, u32x4); +impl_vvv!("lsx", lsx_vmax_du, simd_imax, m128i, u64x2); +impl_vvv!("lsx", lsx_vmin_b, simd_imin, m128i, i8x16); +impl_vvv!("lsx", lsx_vmin_h, simd_imin, m128i, i16x8); +impl_vvv!("lsx", lsx_vmin_w, simd_imin, m128i, i32x4); +impl_vvv!("lsx", lsx_vmin_d, simd_imin, m128i, i64x2); +impl_vvv!("lsx", lsx_vmin_bu, simd_imin, m128i, u8x16); +impl_vvv!("lsx", lsx_vmin_hu, simd_imin, m128i, u16x8); +impl_vvv!("lsx", lsx_vmin_wu, simd_imin, m128i, u32x4); +impl_vvv!("lsx", lsx_vmin_du, simd_imin, m128i, u64x2); +impl_vvv!("lsx", lsx_vseq_b, simd_eq, m128i, i8x16); +impl_vvv!("lsx", lsx_vseq_h, simd_eq, m128i, i16x8); +impl_vvv!("lsx", lsx_vseq_w, simd_eq, m128i, i32x4); +impl_vvv!("lsx", lsx_vseq_d, simd_eq, m128i, i64x2); +impl_vvv!("lsx", lsx_vslt_b, simd_lt, m128i, i8x16); +impl_vvv!("lsx", lsx_vslt_h, simd_lt, m128i, i16x8); +impl_vvv!("lsx", lsx_vslt_w, simd_lt, m128i, i32x4); +impl_vvv!("lsx", lsx_vslt_d, simd_lt, m128i, i64x2); +impl_vvv!("lsx", lsx_vslt_bu, simd_lt, m128i, u8x16); +impl_vvv!("lsx", lsx_vslt_hu, simd_lt, m128i, u16x8); +impl_vvv!("lsx", lsx_vslt_wu, simd_lt, m128i, u32x4); +impl_vvv!("lsx", lsx_vslt_du, simd_lt, m128i, u64x2); +impl_vvv!("lsx", lsx_vsle_b, simd_le, m128i, i8x16); +impl_vvv!("lsx", lsx_vsle_h, simd_le, m128i, i16x8); +impl_vvv!("lsx", lsx_vsle_w, simd_le, m128i, i32x4); +impl_vvv!("lsx", lsx_vsle_d, simd_le, m128i, i64x2); +impl_vvv!("lsx", lsx_vsle_bu, simd_le, m128i, u8x16); +impl_vvv!("lsx", lsx_vsle_hu, simd_le, m128i, u16x8); +impl_vvv!("lsx", lsx_vsle_wu, simd_le, m128i, u32x4); +impl_vvv!("lsx", lsx_vsle_du, simd_le, m128i, u64x2); +impl_vvv!("lsx", lsx_vmul_b, simd_mul, m128i, i8x16); +impl_vvv!("lsx", lsx_vmul_h, simd_mul, m128i, i16x8); +impl_vvv!("lsx", lsx_vmul_w, simd_mul, m128i, i32x4); +impl_vvv!("lsx", lsx_vmul_d, simd_mul, m128i, i64x2); +impl_vvv!("lsx", lsx_vdiv_b, simd_div, m128i, i8x16); +impl_vvv!("lsx", lsx_vdiv_h, simd_div, m128i, i16x8); +impl_vvv!("lsx", lsx_vdiv_w, simd_div, m128i, i32x4); +impl_vvv!("lsx", lsx_vdiv_d, simd_div, m128i, i64x2); +impl_vvv!("lsx", lsx_vdiv_bu, simd_div, m128i, u8x16); +impl_vvv!("lsx", lsx_vdiv_hu, simd_div, m128i, u16x8); +impl_vvv!("lsx", lsx_vdiv_wu, simd_div, m128i, u32x4); +impl_vvv!("lsx", lsx_vdiv_du, simd_div, m128i, u64x2); +impl_vvv!("lsx", lsx_vmod_b, simd_rem, m128i, i8x16); +impl_vvv!("lsx", lsx_vmod_h, simd_rem, m128i, i16x8); +impl_vvv!("lsx", lsx_vmod_w, simd_rem, m128i, i32x4); +impl_vvv!("lsx", lsx_vmod_d, simd_rem, m128i, i64x2); +impl_vvv!("lsx", lsx_vmod_bu, simd_rem, m128i, u8x16); +impl_vvv!("lsx", lsx_vmod_hu, simd_rem, m128i, u16x8); +impl_vvv!("lsx", lsx_vmod_wu, simd_rem, m128i, u32x4); +impl_vvv!("lsx", lsx_vmod_du, simd_rem, m128i, u64x2); +impl_vvv!("lsx", lsx_vand_v, simd_and, m128i, u8x16); +impl_vvv!("lsx", lsx_vandn_v, simdl_andn, m128i, u8x16); +impl_vvv!("lsx", lsx_vor_v, simd_or, m128i, u8x16); +impl_vvv!("lsx", lsx_vorn_v, simdl_orn, m128i, u8x16); +impl_vvv!("lsx", lsx_vnor_v, simdl_nor, m128i, u8x16); +impl_vvv!("lsx", lsx_vxor_v, simd_xor, m128i, u8x16); +impl_vvv!("lsx", lsx_vfadd_s, simd_add, m128, f32x4); +impl_vvv!("lsx", lsx_vfadd_d, simd_add, m128d, f64x2); +impl_vvv!("lsx", lsx_vfsub_s, simd_sub, m128, f32x4); +impl_vvv!("lsx", lsx_vfsub_d, simd_sub, m128d, f64x2); +impl_vvv!("lsx", lsx_vfmul_s, simd_mul, m128, f32x4); +impl_vvv!("lsx", lsx_vfmul_d, simd_mul, m128d, f64x2); +impl_vvv!("lsx", lsx_vfdiv_s, simd_div, m128, f32x4); +impl_vvv!("lsx", lsx_vfdiv_d, simd_div, m128d, f64x2); +impl_vvv!("lsx", lsx_vsll_b, simdl_shl, m128i, i8x16); +impl_vvv!("lsx", lsx_vsll_h, simdl_shl, m128i, i16x8); +impl_vvv!("lsx", lsx_vsll_w, simdl_shl, m128i, i32x4); +impl_vvv!("lsx", lsx_vsll_d, simdl_shl, m128i, i64x2); +impl_vvv!("lsx", lsx_vsra_b, simdl_shr, m128i, i8x16); +impl_vvv!("lsx", lsx_vsra_h, simdl_shr, m128i, i16x8); +impl_vvv!("lsx", lsx_vsra_w, simdl_shr, m128i, i32x4); +impl_vvv!("lsx", lsx_vsra_d, simdl_shr, m128i, i64x2); +impl_vvv!("lsx", lsx_vsrl_b, simdl_shr, m128i, u8x16); +impl_vvv!("lsx", lsx_vsrl_h, simdl_shr, m128i, u16x8); +impl_vvv!("lsx", lsx_vsrl_w, simdl_shr, m128i, u32x4); +impl_vvv!("lsx", lsx_vsrl_d, simdl_shr, m128i, u64x2); + +impl_vuv!("lsx", lsx_vslli_b, simd_shl, m128i, i8x16); +impl_vuv!("lsx", lsx_vslli_h, simd_shl, m128i, i16x8); +impl_vuv!("lsx", lsx_vslli_w, simd_shl, m128i, i32x4); +impl_vuv!("lsx", lsx_vslli_d, simd_shl, m128i, i64x2); +impl_vuv!("lsx", lsx_vsrai_b, simd_shr, m128i, i8x16); +impl_vuv!("lsx", lsx_vsrai_h, simd_shr, m128i, i16x8); +impl_vuv!("lsx", lsx_vsrai_w, simd_shr, m128i, i32x4); +impl_vuv!("lsx", lsx_vsrai_d, simd_shr, m128i, i64x2); +impl_vuv!("lsx", lsx_vsrli_b, simd_shr, m128i, u8x16); +impl_vuv!("lsx", lsx_vsrli_h, simd_shr, m128i, u16x8); +impl_vuv!("lsx", lsx_vsrli_w, simd_shr, m128i, u32x4); +impl_vuv!("lsx", lsx_vsrli_d, simd_shr, m128i, u64x2); +impl_vuv!("lsx", lsx_vaddi_bu, simd_add, m128i, u8x16, 5); +impl_vuv!("lsx", lsx_vaddi_hu, simd_add, m128i, u16x8, 5); +impl_vuv!("lsx", lsx_vaddi_wu, simd_add, m128i, u32x4, 5); +impl_vuv!("lsx", lsx_vaddi_du, simd_add, m128i, u64x2, 5); +impl_vuv!("lsx", lsx_vslti_bu, simd_lt, m128i, u8x16, 5); +impl_vuv!("lsx", lsx_vslti_hu, simd_lt, m128i, u16x8, 5); +impl_vuv!("lsx", lsx_vslti_wu, simd_lt, m128i, u32x4, 5); +impl_vuv!("lsx", lsx_vslti_du, simd_lt, m128i, u64x2, 5); +impl_vuv!("lsx", lsx_vslei_bu, simd_le, m128i, u8x16, 5); +impl_vuv!("lsx", lsx_vslei_hu, simd_le, m128i, u16x8, 5); +impl_vuv!("lsx", lsx_vslei_wu, simd_le, m128i, u32x4, 5); +impl_vuv!("lsx", lsx_vslei_du, simd_le, m128i, u64x2, 5); +impl_vuv!("lsx", lsx_vmaxi_bu, simd_imax, m128i, u8x16, 5); +impl_vuv!("lsx", lsx_vmaxi_hu, simd_imax, m128i, u16x8, 5); +impl_vuv!("lsx", lsx_vmaxi_wu, simd_imax, m128i, u32x4, 5); +impl_vuv!("lsx", lsx_vmaxi_du, simd_imax, m128i, u64x2, 5); +impl_vuv!("lsx", lsx_vmini_bu, simd_imin, m128i, u8x16, 5); +impl_vuv!("lsx", lsx_vmini_hu, simd_imin, m128i, u16x8, 5); +impl_vuv!("lsx", lsx_vmini_wu, simd_imin, m128i, u32x4, 5); +impl_vuv!("lsx", lsx_vmini_du, simd_imin, m128i, u64x2, 5); + +impl_vug!("lsx", lsx_vpickve2gr_b, simd_extract, m128i, i8x16, i32, 4); +impl_vug!("lsx", lsx_vpickve2gr_h, simd_extract, m128i, i16x8, i32, 3); +impl_vug!("lsx", lsx_vpickve2gr_w, simd_extract, m128i, i32x4, i32, 2); +impl_vug!("lsx", lsx_vpickve2gr_d, simd_extract, m128i, i64x2, i64, 1); +impl_vug!("lsx", lsx_vpickve2gr_bu, simd_extract, m128i, u8x16, u32, 4); +impl_vug!("lsx", lsx_vpickve2gr_hu, simd_extract, m128i, u16x8, u32, 3); +impl_vug!("lsx", lsx_vpickve2gr_wu, simd_extract, m128i, u32x4, u32, 2); +impl_vug!("lsx", lsx_vpickve2gr_du, simd_extract, m128i, u64x2, u64, 1); + +impl_vsv!("lsx", lsx_vseqi_b, simd_eq, m128i, i8x16, 5); +impl_vsv!("lsx", lsx_vseqi_h, simd_eq, m128i, i16x8, 5); +impl_vsv!("lsx", lsx_vseqi_w, simd_eq, m128i, i32x4, 5); +impl_vsv!("lsx", lsx_vseqi_d, simd_eq, m128i, i64x2, 5); +impl_vsv!("lsx", lsx_vslti_b, simd_lt, m128i, i8x16, 5); +impl_vsv!("lsx", lsx_vslti_h, simd_lt, m128i, i16x8, 5); +impl_vsv!("lsx", lsx_vslti_w, simd_lt, m128i, i32x4, 5); +impl_vsv!("lsx", lsx_vslti_d, simd_lt, m128i, i64x2, 5); +impl_vsv!("lsx", lsx_vslei_b, simd_le, m128i, i8x16, 5); +impl_vsv!("lsx", lsx_vslei_h, simd_le, m128i, i16x8, 5); +impl_vsv!("lsx", lsx_vslei_w, simd_le, m128i, i32x4, 5); +impl_vsv!("lsx", lsx_vslei_d, simd_le, m128i, i64x2, 5); +impl_vsv!("lsx", lsx_vmaxi_b, simd_imax, m128i, i8x16, 5); +impl_vsv!("lsx", lsx_vmaxi_h, simd_imax, m128i, i16x8, 5); +impl_vsv!("lsx", lsx_vmaxi_w, simd_imax, m128i, i32x4, 5); +impl_vsv!("lsx", lsx_vmaxi_d, simd_imax, m128i, i64x2, 5); +impl_vsv!("lsx", lsx_vmini_b, simd_imin, m128i, i8x16, 5); +impl_vsv!("lsx", lsx_vmini_h, simd_imin, m128i, i16x8, 5); +impl_vsv!("lsx", lsx_vmini_w, simd_imin, m128i, i32x4, 5); +impl_vsv!("lsx", lsx_vmini_d, simd_imin, m128i, i64x2, 5); + +impl_vvvv!("lsx", lsx_vmadd_b, simdl_madd, m128i, i8x16); +impl_vvvv!("lsx", lsx_vmadd_h, simdl_madd, m128i, i16x8); +impl_vvvv!("lsx", lsx_vmadd_w, simdl_madd, m128i, i32x4); +impl_vvvv!("lsx", lsx_vmadd_d, simdl_madd, m128i, i64x2); +impl_vvvv!("lsx", lsx_vmsub_b, simdl_msub, m128i, i8x16); +impl_vvvv!("lsx", lsx_vmsub_h, simdl_msub, m128i, i16x8); +impl_vvvv!("lsx", lsx_vmsub_w, simdl_msub, m128i, i32x4); +impl_vvvv!("lsx", lsx_vmsub_d, simdl_msub, m128i, i64x2); +impl_vvvv!("lsx", lsx_vfmadd_s, simd_fma, m128, f32x4); +impl_vvvv!("lsx", lsx_vfmadd_d, simd_fma, m128d, f64x2); +impl_vvvv!("lsx", lsx_vfmsub_s, simdl_fms, m128, f32x4); +impl_vvvv!("lsx", lsx_vfmsub_d, simdl_fms, m128d, f64x2); +impl_vvvv!("lsx", lsx_vfnmadd_s, simdl_nfma, m128, f32x4); +impl_vvvv!("lsx", lsx_vfnmadd_d, simdl_nfma, m128d, f64x2); +impl_vvvv!("lsx", lsx_vfnmsub_s, simdl_nfms, m128, f32x4); +impl_vvvv!("lsx", lsx_vfnmsub_d, simdl_nfms, m128d, f64x2); + +impl_vugv!("lsx", lsx_vinsgr2vr_b, simd_insert, m128i, i8x16, i32, 4); +impl_vugv!("lsx", lsx_vinsgr2vr_h, simd_insert, m128i, i16x8, i32, 3); +impl_vugv!("lsx", lsx_vinsgr2vr_w, simd_insert, m128i, i32x4, i32, 2); +impl_vugv!("lsx", lsx_vinsgr2vr_d, simd_insert, m128i, i64x2, i64, 1); diff --git a/crates/core_arch/src/loongarch64/mod.rs b/crates/core_arch/src/loongarch64/mod.rs index 41c21aac2a..f464dbd356 100644 --- a/crates/core_arch/src/loongarch64/mod.rs +++ b/crates/core_arch/src/loongarch64/mod.rs @@ -2,6 +2,7 @@ mod lasx; mod lsx; +mod simd; #[unstable(feature = "stdarch_loongarch", issue = "117427")] pub use self::lasx::*; diff --git a/crates/core_arch/src/loongarch64/simd.rs b/crates/core_arch/src/loongarch64/simd.rs new file mode 100644 index 0000000000..ac98d6ac5d --- /dev/null +++ b/crates/core_arch/src/loongarch64/simd.rs @@ -0,0 +1,302 @@ +//! LoongArch64 SIMD helpers + +pub(super) const trait SimdL: Sized { + type Elem; + + unsafe fn splat(v: i64) -> Self; +} + +macro_rules! impl_simdl { + ($v:ident, $e:ty) => { + #[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")] + impl const SimdL for crate::core_arch::simd::$v { + type Elem = $e; + + #[inline(always)] + unsafe fn splat(v: i64) -> Self { + crate::intrinsics::simd::simd_splat(v as Self::Elem) + } + } + }; +} + +impl_simdl!(i8x16, i8); +impl_simdl!(i8x32, i8); +impl_simdl!(u8x16, u8); +impl_simdl!(u8x32, u8); +impl_simdl!(i16x8, i16); +impl_simdl!(i16x16, i16); +impl_simdl!(u16x8, u16); +impl_simdl!(u16x16, u16); +impl_simdl!(i32x4, i32); +impl_simdl!(i32x8, i32); +impl_simdl!(u32x4, u32); +impl_simdl!(u32x8, u32); +impl_simdl!(i64x2, i64); +impl_simdl!(i64x4, i64); +impl_simdl!(u64x2, u64); +impl_simdl!(u64x4, u64); + +#[inline(always)] +#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")] +pub(super) const unsafe fn simdl_andn(a: T, b: T) -> T { + crate::intrinsics::simd::simd_and(simdl_not(a), b) +} + +#[inline(always)] +#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")] +pub(super) const unsafe fn simdl_fms(a: T, b: T, c: T) -> T { + let c: T = crate::intrinsics::simd::simd_neg(c); + crate::intrinsics::simd::simd_fma(a, b, c) +} + +#[inline(always)] +#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")] +pub(super) const unsafe fn simdl_madd(a: T, b: T, c: T) -> T { + let mul: T = crate::intrinsics::simd::simd_mul(b, c); + crate::intrinsics::simd::simd_add(mul, a) +} + +#[inline(always)] +#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")] +pub(super) const unsafe fn simdl_msub(a: T, b: T, c: T) -> T { + let mul: T = crate::intrinsics::simd::simd_mul(b, c); + crate::intrinsics::simd::simd_sub(a, mul) +} + +#[inline(always)] +#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")] +pub(super) const unsafe fn simdl_nfma(a: T, b: T, c: T) -> T { + let fma: T = crate::intrinsics::simd::simd_fma(a, b, c); + crate::intrinsics::simd::simd_neg(fma) +} + +#[inline(always)] +#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")] +pub(super) const unsafe fn simdl_nfms(a: T, b: T, c: T) -> T { + let fma: T = simdl_fms(a, b, c); + crate::intrinsics::simd::simd_neg(fma) +} + +#[inline(always)] +#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")] +pub(super) const unsafe fn simdl_nor(a: T, b: T) -> T { + let or: T = crate::intrinsics::simd::simd_or(a, b); + simdl_not(or) +} + +#[inline(always)] +#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")] +pub(super) const unsafe fn simdl_not(a: T) -> T { + let not: T = simdl_splat(!0); + crate::intrinsics::simd::simd_xor(a, not) +} + +#[inline(always)] +#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")] +pub(super) const unsafe fn simdl_orn(a: T, b: T) -> T { + crate::intrinsics::simd::simd_or(a, simdl_not(b)) +} + +#[inline(always)] +#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")] +pub(super) const unsafe fn simdl_shl(a: T, b: T) -> T { + let m: T = simdl_splat((size_of::() * 8 - 1) as i64); + let b: T = crate::intrinsics::simd::simd_and(b, m); + crate::intrinsics::simd::simd_shl(a, b) +} + +#[inline(always)] +#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")] +pub(super) const unsafe fn simdl_shr(a: T, b: T) -> T { + let m: T = simdl_splat((size_of::() * 8 - 1) as i64); + let b: T = crate::intrinsics::simd::simd_and(b, m); + crate::intrinsics::simd::simd_shr(a, b) +} + +#[inline(always)] +#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")] +pub(super) const unsafe fn simdl_splat(a: i64) -> T { + T::splat(a) +} + +macro_rules! impl_vv { + ($ft:literal, $name:ident, $op:ident, $oty:ty, $ity:ty) => { + #[inline(always)] + #[target_feature(enable = $ft)] + #[unstable(feature = "stdarch_loongarch", issue = "117427")] + pub fn $name(a: $oty) -> $oty { + unsafe { + let a: $ity = transmute(a); + let r: $ity = $op(a); + transmute(r) + } + } + }; +} + +pub(super) use impl_vv; + +macro_rules! impl_gv { + ($ft:literal, $name:ident, $op:ident, $oty:ty, $ity:ident, $gty:ty) => { + #[inline(always)] + #[target_feature(enable = $ft)] + #[unstable(feature = "stdarch_loongarch", issue = "117427")] + pub fn $name(a: $gty) -> $oty { + unsafe { + let r: $ity = $op(a.into()); + transmute(r) + } + } + }; +} + +pub(super) use impl_gv; + +macro_rules! impl_sv { + ($ft:literal, $name:ident, $op:ident, $oty:ty, $ity:ident, $ibs:expr) => { + #[inline(always)] + #[target_feature(enable = $ft)] + #[rustc_legacy_const_generics(0)] + #[unstable(feature = "stdarch_loongarch", issue = "117427")] + pub fn $name() -> $oty { + static_assert_simm_bits!(IMM, $ibs); + unsafe { + let r: $ity = $op(IMM.into()); + transmute(r) + } + } + }; +} + +pub(super) use impl_sv; + +macro_rules! impl_vvv { + ($ft:literal, $name:ident, $op:ident, $oty:ty, $ity:ty) => { + #[inline(always)] + #[target_feature(enable = $ft)] + #[unstable(feature = "stdarch_loongarch", issue = "117427")] + pub fn $name(a: $oty, b: $oty) -> $oty { + unsafe { + let a: $ity = transmute(a); + let b: $ity = transmute(b); + let r: $ity = $op(a, b); + transmute(r) + } + } + }; +} + +pub(super) use impl_vvv; + +macro_rules! impl_vuv { + ($ft:literal, $name:ident, $op:ident, $oty:ty, $ity:ident) => { + #[inline(always)] + #[target_feature(enable = $ft)] + #[rustc_legacy_const_generics(1)] + #[unstable(feature = "stdarch_loongarch", issue = "117427")] + pub fn $name(a: $oty) -> $oty { + static_assert_uimm_bits!(IMM, (size_of::<<$ity as SimdL>::Elem>() * 8).ilog2()); + unsafe { + let a: $ity = transmute(a); + let b: $ity = simdl_splat(IMM.into()); + let r: $ity = $op(a, b); + transmute(r) + } + } + }; + ($ft:literal, $name:ident, $op:ident, $oty:ty, $ity:ident, $ibs:expr) => { + #[inline(always)] + #[target_feature(enable = $ft)] + #[rustc_legacy_const_generics(1)] + #[unstable(feature = "stdarch_loongarch", issue = "117427")] + pub fn $name(a: $oty) -> $oty { + static_assert_uimm_bits!(IMM, $ibs); + unsafe { + let a: $ity = transmute(a); + let b: $ity = simdl_splat(IMM.into()); + let r: $ity = $op(a, b); + transmute(r) + } + } + }; +} + +pub(super) use impl_vuv; + +macro_rules! impl_vug { + ($ft:literal, $name:ident, $op:ident, $oty:ty, $ity:ident, $gty:ty, $ibs:expr) => { + #[inline(always)] + #[target_feature(enable = $ft)] + #[rustc_legacy_const_generics(1)] + #[unstable(feature = "stdarch_loongarch", issue = "117427")] + pub fn $name(a: $oty) -> $gty { + static_assert_uimm_bits!(IMM, $ibs); + unsafe { + let a: $ity = transmute(a); + let r: <$ity as SimdL>::Elem = $op(a, IMM); + r as $gty + } + } + }; +} + +pub(super) use impl_vug; + +macro_rules! impl_vsv { + ($ft:literal, $name:ident, $op:ident, $oty:ty, $ity:ident, $ibs:expr) => { + #[inline(always)] + #[target_feature(enable = $ft)] + #[rustc_legacy_const_generics(1)] + #[unstable(feature = "stdarch_loongarch", issue = "117427")] + pub fn $name(a: $oty) -> $oty { + static_assert_simm_bits!(IMM, $ibs); + unsafe { + let a: $ity = transmute(a); + let b: $ity = simdl_splat(IMM.into()); + let r: $ity = $op(a, b); + transmute(r) + } + } + }; +} + +pub(super) use impl_vsv; + +macro_rules! impl_vvvv { + ($ft:literal, $name:ident, $op:ident, $oty:ty, $ity:ty) => { + #[inline(always)] + #[target_feature(enable = $ft)] + #[unstable(feature = "stdarch_loongarch", issue = "117427")] + pub fn $name(a: $oty, b: $oty, c: $oty) -> $oty { + unsafe { + let a: $ity = transmute(a); + let b: $ity = transmute(b); + let c: $ity = transmute(c); + let r: $ity = $op(a, b, c); + transmute(r) + } + } + }; +} + +pub(super) use impl_vvvv; + +macro_rules! impl_vugv { + ($ft:literal, $name:ident, $op:ident, $oty:ty, $ity:ident, $gty:ty, $ibs:expr) => { + #[inline(always)] + #[target_feature(enable = $ft)] + #[rustc_legacy_const_generics(1)] + #[unstable(feature = "stdarch_loongarch", issue = "117427")] + pub fn $name(a: $oty, b: $gty) -> $oty { + static_assert_uimm_bits!(IMM, $ibs); + unsafe { + let a: $ity = transmute(a); + let r: $ity = $op(a, IMM, b as <$ity as SimdL>::Elem); + transmute(r) + } + } + }; +} + +pub(super) use impl_vugv; diff --git a/crates/stdarch-gen-loongarch/lasx.spec b/crates/stdarch-gen-loongarch/lasx.spec index ac4203a03f..9a9b1a143e 100644 --- a/crates/stdarch-gen-loongarch/lasx.spec +++ b/crates/stdarch-gen-loongarch/lasx.spec @@ -4,81 +4,97 @@ // ``` /// lasx_xvsll_b +impl = portable name = lasx_xvsll_b asm-fmts = xd, xj, xk data-types = V32QI, V32QI, V32QI /// lasx_xvsll_h +impl = portable name = lasx_xvsll_h asm-fmts = xd, xj, xk data-types = V16HI, V16HI, V16HI /// lasx_xvsll_w +impl = portable name = lasx_xvsll_w asm-fmts = xd, xj, xk data-types = V8SI, V8SI, V8SI /// lasx_xvsll_d +impl = portable name = lasx_xvsll_d asm-fmts = xd, xj, xk data-types = V4DI, V4DI, V4DI /// lasx_xvslli_b +impl = portable name = lasx_xvslli_b asm-fmts = xd, xj, ui3 data-types = V32QI, V32QI, UQI /// lasx_xvslli_h +impl = portable name = lasx_xvslli_h asm-fmts = xd, xj, ui4 data-types = V16HI, V16HI, UQI /// lasx_xvslli_w +impl = portable name = lasx_xvslli_w asm-fmts = xd, xj, ui5 data-types = V8SI, V8SI, UQI /// lasx_xvslli_d +impl = portable name = lasx_xvslli_d asm-fmts = xd, xj, ui6 data-types = V4DI, V4DI, UQI /// lasx_xvsra_b +impl = portable name = lasx_xvsra_b asm-fmts = xd, xj, xk data-types = V32QI, V32QI, V32QI /// lasx_xvsra_h +impl = portable name = lasx_xvsra_h asm-fmts = xd, xj, xk data-types = V16HI, V16HI, V16HI /// lasx_xvsra_w +impl = portable name = lasx_xvsra_w asm-fmts = xd, xj, xk data-types = V8SI, V8SI, V8SI /// lasx_xvsra_d +impl = portable name = lasx_xvsra_d asm-fmts = xd, xj, xk data-types = V4DI, V4DI, V4DI /// lasx_xvsrai_b +impl = portable name = lasx_xvsrai_b asm-fmts = xd, xj, ui3 data-types = V32QI, V32QI, UQI /// lasx_xvsrai_h +impl = portable name = lasx_xvsrai_h asm-fmts = xd, xj, ui4 data-types = V16HI, V16HI, UQI /// lasx_xvsrai_w +impl = portable name = lasx_xvsrai_w asm-fmts = xd, xj, ui5 data-types = V8SI, V8SI, UQI /// lasx_xvsrai_d +impl = portable name = lasx_xvsrai_d asm-fmts = xd, xj, ui6 data-types = V4DI, V4DI, UQI @@ -124,41 +140,49 @@ asm-fmts = xd, xj, ui6 data-types = V4DI, V4DI, UQI /// lasx_xvsrl_b +impl = portable name = lasx_xvsrl_b asm-fmts = xd, xj, xk data-types = V32QI, V32QI, V32QI /// lasx_xvsrl_h +impl = portable name = lasx_xvsrl_h asm-fmts = xd, xj, xk data-types = V16HI, V16HI, V16HI /// lasx_xvsrl_w +impl = portable name = lasx_xvsrl_w asm-fmts = xd, xj, xk data-types = V8SI, V8SI, V8SI /// lasx_xvsrl_d +impl = portable name = lasx_xvsrl_d asm-fmts = xd, xj, xk data-types = V4DI, V4DI, V4DI /// lasx_xvsrli_b +impl = portable name = lasx_xvsrli_b asm-fmts = xd, xj, ui3 data-types = V32QI, V32QI, UQI /// lasx_xvsrli_h +impl = portable name = lasx_xvsrli_h asm-fmts = xd, xj, ui4 data-types = V16HI, V16HI, UQI /// lasx_xvsrli_w +impl = portable name = lasx_xvsrli_w asm-fmts = xd, xj, ui5 data-types = V8SI, V8SI, UQI /// lasx_xvsrli_d +impl = portable name = lasx_xvsrli_d asm-fmts = xd, xj, ui6 data-types = V4DI, V4DI, UQI @@ -324,61 +348,73 @@ asm-fmts = xd, xj, ui6 data-types = UV4DI, UV4DI, UQI /// lasx_xvadd_b +impl = portable name = lasx_xvadd_b asm-fmts = xd, xj, xk data-types = V32QI, V32QI, V32QI /// lasx_xvadd_h +impl = portable name = lasx_xvadd_h asm-fmts = xd, xj, xk data-types = V16HI, V16HI, V16HI /// lasx_xvadd_w +impl = portable name = lasx_xvadd_w asm-fmts = xd, xj, xk data-types = V8SI, V8SI, V8SI /// lasx_xvadd_d +impl = portable name = lasx_xvadd_d asm-fmts = xd, xj, xk data-types = V4DI, V4DI, V4DI /// lasx_xvaddi_bu +impl = portable name = lasx_xvaddi_bu asm-fmts = xd, xj, ui5 data-types = V32QI, V32QI, UQI /// lasx_xvaddi_hu +impl = portable name = lasx_xvaddi_hu asm-fmts = xd, xj, ui5 data-types = V16HI, V16HI, UQI /// lasx_xvaddi_wu +impl = portable name = lasx_xvaddi_wu asm-fmts = xd, xj, ui5 data-types = V8SI, V8SI, UQI /// lasx_xvaddi_du +impl = portable name = lasx_xvaddi_du asm-fmts = xd, xj, ui5 data-types = V4DI, V4DI, UQI /// lasx_xvsub_b +impl = portable name = lasx_xvsub_b asm-fmts = xd, xj, xk data-types = V32QI, V32QI, V32QI /// lasx_xvsub_h +impl = portable name = lasx_xvsub_h asm-fmts = xd, xj, xk data-types = V16HI, V16HI, V16HI /// lasx_xvsub_w +impl = portable name = lasx_xvsub_w asm-fmts = xd, xj, xk data-types = V8SI, V8SI, V8SI /// lasx_xvsub_d +impl = portable name = lasx_xvsub_d asm-fmts = xd, xj, xk data-types = V4DI, V4DI, V4DI @@ -404,361 +440,433 @@ asm-fmts = xd, xj, ui5 data-types = V4DI, V4DI, UQI /// lasx_xvmax_b +impl = portable name = lasx_xvmax_b asm-fmts = xd, xj, xk data-types = V32QI, V32QI, V32QI /// lasx_xvmax_h +impl = portable name = lasx_xvmax_h asm-fmts = xd, xj, xk data-types = V16HI, V16HI, V16HI /// lasx_xvmax_w +impl = portable name = lasx_xvmax_w asm-fmts = xd, xj, xk data-types = V8SI, V8SI, V8SI /// lasx_xvmax_d +impl = portable name = lasx_xvmax_d asm-fmts = xd, xj, xk data-types = V4DI, V4DI, V4DI /// lasx_xvmaxi_b +impl = portable name = lasx_xvmaxi_b asm-fmts = xd, xj, si5 data-types = V32QI, V32QI, QI /// lasx_xvmaxi_h +impl = portable name = lasx_xvmaxi_h asm-fmts = xd, xj, si5 data-types = V16HI, V16HI, QI /// lasx_xvmaxi_w +impl = portable name = lasx_xvmaxi_w asm-fmts = xd, xj, si5 data-types = V8SI, V8SI, QI /// lasx_xvmaxi_d +impl = portable name = lasx_xvmaxi_d asm-fmts = xd, xj, si5 data-types = V4DI, V4DI, QI /// lasx_xvmax_bu +impl = portable name = lasx_xvmax_bu asm-fmts = xd, xj, xk data-types = UV32QI, UV32QI, UV32QI /// lasx_xvmax_hu +impl = portable name = lasx_xvmax_hu asm-fmts = xd, xj, xk data-types = UV16HI, UV16HI, UV16HI /// lasx_xvmax_wu +impl = portable name = lasx_xvmax_wu asm-fmts = xd, xj, xk data-types = UV8SI, UV8SI, UV8SI /// lasx_xvmax_du +impl = portable name = lasx_xvmax_du asm-fmts = xd, xj, xk data-types = UV4DI, UV4DI, UV4DI /// lasx_xvmaxi_bu +impl = portable name = lasx_xvmaxi_bu asm-fmts = xd, xj, ui5 data-types = UV32QI, UV32QI, UQI /// lasx_xvmaxi_hu +impl = portable name = lasx_xvmaxi_hu asm-fmts = xd, xj, ui5 data-types = UV16HI, UV16HI, UQI /// lasx_xvmaxi_wu +impl = portable name = lasx_xvmaxi_wu asm-fmts = xd, xj, ui5 data-types = UV8SI, UV8SI, UQI /// lasx_xvmaxi_du +impl = portable name = lasx_xvmaxi_du asm-fmts = xd, xj, ui5 data-types = UV4DI, UV4DI, UQI /// lasx_xvmin_b +impl = portable name = lasx_xvmin_b asm-fmts = xd, xj, xk data-types = V32QI, V32QI, V32QI /// lasx_xvmin_h +impl = portable name = lasx_xvmin_h asm-fmts = xd, xj, xk data-types = V16HI, V16HI, V16HI /// lasx_xvmin_w +impl = portable name = lasx_xvmin_w asm-fmts = xd, xj, xk data-types = V8SI, V8SI, V8SI /// lasx_xvmin_d +impl = portable name = lasx_xvmin_d asm-fmts = xd, xj, xk data-types = V4DI, V4DI, V4DI /// lasx_xvmini_b +impl = portable name = lasx_xvmini_b asm-fmts = xd, xj, si5 data-types = V32QI, V32QI, QI /// lasx_xvmini_h +impl = portable name = lasx_xvmini_h asm-fmts = xd, xj, si5 data-types = V16HI, V16HI, QI /// lasx_xvmini_w +impl = portable name = lasx_xvmini_w asm-fmts = xd, xj, si5 data-types = V8SI, V8SI, QI /// lasx_xvmini_d +impl = portable name = lasx_xvmini_d asm-fmts = xd, xj, si5 data-types = V4DI, V4DI, QI /// lasx_xvmin_bu +impl = portable name = lasx_xvmin_bu asm-fmts = xd, xj, xk data-types = UV32QI, UV32QI, UV32QI /// lasx_xvmin_hu +impl = portable name = lasx_xvmin_hu asm-fmts = xd, xj, xk data-types = UV16HI, UV16HI, UV16HI /// lasx_xvmin_wu +impl = portable name = lasx_xvmin_wu asm-fmts = xd, xj, xk data-types = UV8SI, UV8SI, UV8SI /// lasx_xvmin_du +impl = portable name = lasx_xvmin_du asm-fmts = xd, xj, xk data-types = UV4DI, UV4DI, UV4DI /// lasx_xvmini_bu +impl = portable name = lasx_xvmini_bu asm-fmts = xd, xj, ui5 data-types = UV32QI, UV32QI, UQI /// lasx_xvmini_hu +impl = portable name = lasx_xvmini_hu asm-fmts = xd, xj, ui5 data-types = UV16HI, UV16HI, UQI /// lasx_xvmini_wu +impl = portable name = lasx_xvmini_wu asm-fmts = xd, xj, ui5 data-types = UV8SI, UV8SI, UQI /// lasx_xvmini_du +impl = portable name = lasx_xvmini_du asm-fmts = xd, xj, ui5 data-types = UV4DI, UV4DI, UQI /// lasx_xvseq_b +impl = portable name = lasx_xvseq_b asm-fmts = xd, xj, xk data-types = V32QI, V32QI, V32QI /// lasx_xvseq_h +impl = portable name = lasx_xvseq_h asm-fmts = xd, xj, xk data-types = V16HI, V16HI, V16HI /// lasx_xvseq_w +impl = portable name = lasx_xvseq_w asm-fmts = xd, xj, xk data-types = V8SI, V8SI, V8SI /// lasx_xvseq_d +impl = portable name = lasx_xvseq_d asm-fmts = xd, xj, xk data-types = V4DI, V4DI, V4DI /// lasx_xvseqi_b +impl = portable name = lasx_xvseqi_b asm-fmts = xd, xj, si5 data-types = V32QI, V32QI, QI /// lasx_xvseqi_h +impl = portable name = lasx_xvseqi_h asm-fmts = xd, xj, si5 data-types = V16HI, V16HI, QI /// lasx_xvseqi_w +impl = portable name = lasx_xvseqi_w asm-fmts = xd, xj, si5 data-types = V8SI, V8SI, QI /// lasx_xvseqi_d +impl = portable name = lasx_xvseqi_d asm-fmts = xd, xj, si5 data-types = V4DI, V4DI, QI /// lasx_xvslt_b +impl = portable name = lasx_xvslt_b asm-fmts = xd, xj, xk data-types = V32QI, V32QI, V32QI /// lasx_xvslt_h +impl = portable name = lasx_xvslt_h asm-fmts = xd, xj, xk data-types = V16HI, V16HI, V16HI /// lasx_xvslt_w +impl = portable name = lasx_xvslt_w asm-fmts = xd, xj, xk data-types = V8SI, V8SI, V8SI /// lasx_xvslt_d +impl = portable name = lasx_xvslt_d asm-fmts = xd, xj, xk data-types = V4DI, V4DI, V4DI /// lasx_xvslti_b +impl = portable name = lasx_xvslti_b asm-fmts = xd, xj, si5 data-types = V32QI, V32QI, QI /// lasx_xvslti_h +impl = portable name = lasx_xvslti_h asm-fmts = xd, xj, si5 data-types = V16HI, V16HI, QI /// lasx_xvslti_w +impl = portable name = lasx_xvslti_w asm-fmts = xd, xj, si5 data-types = V8SI, V8SI, QI /// lasx_xvslti_d +impl = portable name = lasx_xvslti_d asm-fmts = xd, xj, si5 data-types = V4DI, V4DI, QI /// lasx_xvslt_bu +impl = portable name = lasx_xvslt_bu asm-fmts = xd, xj, xk data-types = V32QI, UV32QI, UV32QI /// lasx_xvslt_hu +impl = portable name = lasx_xvslt_hu asm-fmts = xd, xj, xk data-types = V16HI, UV16HI, UV16HI /// lasx_xvslt_wu +impl = portable name = lasx_xvslt_wu asm-fmts = xd, xj, xk data-types = V8SI, UV8SI, UV8SI /// lasx_xvslt_du +impl = portable name = lasx_xvslt_du asm-fmts = xd, xj, xk data-types = V4DI, UV4DI, UV4DI /// lasx_xvslti_bu +impl = portable name = lasx_xvslti_bu asm-fmts = xd, xj, ui5 data-types = V32QI, UV32QI, UQI /// lasx_xvslti_hu +impl = portable name = lasx_xvslti_hu asm-fmts = xd, xj, ui5 data-types = V16HI, UV16HI, UQI /// lasx_xvslti_wu +impl = portable name = lasx_xvslti_wu asm-fmts = xd, xj, ui5 data-types = V8SI, UV8SI, UQI /// lasx_xvslti_du +impl = portable name = lasx_xvslti_du asm-fmts = xd, xj, ui5 data-types = V4DI, UV4DI, UQI /// lasx_xvsle_b +impl = portable name = lasx_xvsle_b asm-fmts = xd, xj, xk data-types = V32QI, V32QI, V32QI /// lasx_xvsle_h +impl = portable name = lasx_xvsle_h asm-fmts = xd, xj, xk data-types = V16HI, V16HI, V16HI /// lasx_xvsle_w +impl = portable name = lasx_xvsle_w asm-fmts = xd, xj, xk data-types = V8SI, V8SI, V8SI /// lasx_xvsle_d +impl = portable name = lasx_xvsle_d asm-fmts = xd, xj, xk data-types = V4DI, V4DI, V4DI /// lasx_xvslei_b +impl = portable name = lasx_xvslei_b asm-fmts = xd, xj, si5 data-types = V32QI, V32QI, QI /// lasx_xvslei_h +impl = portable name = lasx_xvslei_h asm-fmts = xd, xj, si5 data-types = V16HI, V16HI, QI /// lasx_xvslei_w +impl = portable name = lasx_xvslei_w asm-fmts = xd, xj, si5 data-types = V8SI, V8SI, QI /// lasx_xvslei_d +impl = portable name = lasx_xvslei_d asm-fmts = xd, xj, si5 data-types = V4DI, V4DI, QI /// lasx_xvsle_bu +impl = portable name = lasx_xvsle_bu asm-fmts = xd, xj, xk data-types = V32QI, UV32QI, UV32QI /// lasx_xvsle_hu +impl = portable name = lasx_xvsle_hu asm-fmts = xd, xj, xk data-types = V16HI, UV16HI, UV16HI /// lasx_xvsle_wu +impl = portable name = lasx_xvsle_wu asm-fmts = xd, xj, xk data-types = V8SI, UV8SI, UV8SI /// lasx_xvsle_du +impl = portable name = lasx_xvsle_du asm-fmts = xd, xj, xk data-types = V4DI, UV4DI, UV4DI /// lasx_xvslei_bu +impl = portable name = lasx_xvslei_bu asm-fmts = xd, xj, ui5 data-types = V32QI, UV32QI, UQI /// lasx_xvslei_hu +impl = portable name = lasx_xvslei_hu asm-fmts = xd, xj, ui5 data-types = V16HI, UV16HI, UQI /// lasx_xvslei_wu +impl = portable name = lasx_xvslei_wu asm-fmts = xd, xj, ui5 data-types = V8SI, UV8SI, UQI /// lasx_xvslei_du +impl = portable name = lasx_xvslei_du asm-fmts = xd, xj, ui5 data-types = V4DI, UV4DI, UQI @@ -1024,101 +1132,121 @@ asm-fmts = xd, xj, xk data-types = UV4DI, UV4DI, UV4DI /// lasx_xvmul_b +impl = portable name = lasx_xvmul_b asm-fmts = xd, xj, xk data-types = V32QI, V32QI, V32QI /// lasx_xvmul_h +impl = portable name = lasx_xvmul_h asm-fmts = xd, xj, xk data-types = V16HI, V16HI, V16HI /// lasx_xvmul_w +impl = portable name = lasx_xvmul_w asm-fmts = xd, xj, xk data-types = V8SI, V8SI, V8SI /// lasx_xvmul_d +impl = portable name = lasx_xvmul_d asm-fmts = xd, xj, xk data-types = V4DI, V4DI, V4DI /// lasx_xvmadd_b +impl = portable name = lasx_xvmadd_b asm-fmts = xd, xj, xk data-types = V32QI, V32QI, V32QI, V32QI /// lasx_xvmadd_h +impl = portable name = lasx_xvmadd_h asm-fmts = xd, xj, xk data-types = V16HI, V16HI, V16HI, V16HI /// lasx_xvmadd_w +impl = portable name = lasx_xvmadd_w asm-fmts = xd, xj, xk data-types = V8SI, V8SI, V8SI, V8SI /// lasx_xvmadd_d +impl = portable name = lasx_xvmadd_d asm-fmts = xd, xj, xk data-types = V4DI, V4DI, V4DI, V4DI /// lasx_xvmsub_b +impl = portable name = lasx_xvmsub_b asm-fmts = xd, xj, xk data-types = V32QI, V32QI, V32QI, V32QI /// lasx_xvmsub_h +impl = portable name = lasx_xvmsub_h asm-fmts = xd, xj, xk data-types = V16HI, V16HI, V16HI, V16HI /// lasx_xvmsub_w +impl = portable name = lasx_xvmsub_w asm-fmts = xd, xj, xk data-types = V8SI, V8SI, V8SI, V8SI /// lasx_xvmsub_d +impl = portable name = lasx_xvmsub_d asm-fmts = xd, xj, xk data-types = V4DI, V4DI, V4DI, V4DI /// lasx_xvdiv_b +impl = portable name = lasx_xvdiv_b asm-fmts = xd, xj, xk data-types = V32QI, V32QI, V32QI /// lasx_xvdiv_h +impl = portable name = lasx_xvdiv_h asm-fmts = xd, xj, xk data-types = V16HI, V16HI, V16HI /// lasx_xvdiv_w +impl = portable name = lasx_xvdiv_w asm-fmts = xd, xj, xk data-types = V8SI, V8SI, V8SI /// lasx_xvdiv_d +impl = portable name = lasx_xvdiv_d asm-fmts = xd, xj, xk data-types = V4DI, V4DI, V4DI /// lasx_xvdiv_bu +impl = portable name = lasx_xvdiv_bu asm-fmts = xd, xj, xk data-types = UV32QI, UV32QI, UV32QI /// lasx_xvdiv_hu +impl = portable name = lasx_xvdiv_hu asm-fmts = xd, xj, xk data-types = UV16HI, UV16HI, UV16HI /// lasx_xvdiv_wu +impl = portable name = lasx_xvdiv_wu asm-fmts = xd, xj, xk data-types = UV8SI, UV8SI, UV8SI /// lasx_xvdiv_du +impl = portable name = lasx_xvdiv_du asm-fmts = xd, xj, xk data-types = UV4DI, UV4DI, UV4DI @@ -1184,41 +1312,49 @@ asm-fmts = xd, xj, xk data-types = V4DI, UV8SI, UV8SI /// lasx_xvmod_b +impl = portable name = lasx_xvmod_b asm-fmts = xd, xj, xk data-types = V32QI, V32QI, V32QI /// lasx_xvmod_h +impl = portable name = lasx_xvmod_h asm-fmts = xd, xj, xk data-types = V16HI, V16HI, V16HI /// lasx_xvmod_w +impl = portable name = lasx_xvmod_w asm-fmts = xd, xj, xk data-types = V8SI, V8SI, V8SI /// lasx_xvmod_d +impl = portable name = lasx_xvmod_d asm-fmts = xd, xj, xk data-types = V4DI, V4DI, V4DI /// lasx_xvmod_bu +impl = portable name = lasx_xvmod_bu asm-fmts = xd, xj, xk data-types = UV32QI, UV32QI, UV32QI /// lasx_xvmod_hu +impl = portable name = lasx_xvmod_hu asm-fmts = xd, xj, xk data-types = UV16HI, UV16HI, UV16HI /// lasx_xvmod_wu +impl = portable name = lasx_xvmod_wu asm-fmts = xd, xj, xk data-types = UV8SI, UV8SI, UV8SI /// lasx_xvmod_du +impl = portable name = lasx_xvmod_du asm-fmts = xd, xj, xk data-types = UV4DI, UV4DI, UV4DI @@ -1384,6 +1520,7 @@ asm-fmts = xd, xj, xk data-types = V4DI, V4DI, V4DI, V4DI /// lasx_xvand_v +impl = portable name = lasx_xvand_v asm-fmts = xd, xj, xk data-types = UV32QI, UV32QI, UV32QI @@ -1394,6 +1531,7 @@ asm-fmts = xd, xj, ui8 data-types = UV32QI, UV32QI, UQI /// lasx_xvor_v +impl = portable name = lasx_xvor_v asm-fmts = xd, xj, xk data-types = UV32QI, UV32QI, UV32QI @@ -1404,6 +1542,7 @@ asm-fmts = xd, xj, ui8 data-types = UV32QI, UV32QI, UQI /// lasx_xvnor_v +impl = portable name = lasx_xvnor_v asm-fmts = xd, xj, xk data-types = UV32QI, UV32QI, UV32QI @@ -1414,6 +1553,7 @@ asm-fmts = xd, xj, ui8 data-types = UV32QI, UV32QI, UQI /// lasx_xvxor_v +impl = portable name = lasx_xvxor_v asm-fmts = xd, xj, xk data-types = UV32QI, UV32QI, UV32QI @@ -1449,41 +1589,49 @@ asm-fmts = xd, xj, ui8 data-types = V8SI, V8SI, USI /// lasx_xvreplgr2vr_b +impl = portable name = lasx_xvreplgr2vr_b asm-fmts = xd, rj data-types = V32QI, SI /// lasx_xvreplgr2vr_h +impl = portable name = lasx_xvreplgr2vr_h asm-fmts = xd, rj data-types = V16HI, SI /// lasx_xvreplgr2vr_w +impl = portable name = lasx_xvreplgr2vr_w asm-fmts = xd, rj data-types = V8SI, SI /// lasx_xvreplgr2vr_d +impl = portable name = lasx_xvreplgr2vr_d asm-fmts = xd, rj data-types = V4DI, DI /// lasx_xvpcnt_b +impl = portable name = lasx_xvpcnt_b asm-fmts = xd, xj data-types = V32QI, V32QI /// lasx_xvpcnt_h +impl = portable name = lasx_xvpcnt_h asm-fmts = xd, xj data-types = V16HI, V16HI /// lasx_xvpcnt_w +impl = portable name = lasx_xvpcnt_w asm-fmts = xd, xj data-types = V8SI, V8SI /// lasx_xvpcnt_d +impl = portable name = lasx_xvpcnt_d asm-fmts = xd, xj data-types = V4DI, V4DI @@ -1509,61 +1657,73 @@ asm-fmts = xd, xj data-types = V4DI, V4DI /// lasx_xvclz_b +impl = portable name = lasx_xvclz_b asm-fmts = xd, xj data-types = V32QI, V32QI /// lasx_xvclz_h +impl = portable name = lasx_xvclz_h asm-fmts = xd, xj data-types = V16HI, V16HI /// lasx_xvclz_w +impl = portable name = lasx_xvclz_w asm-fmts = xd, xj data-types = V8SI, V8SI /// lasx_xvclz_d +impl = portable name = lasx_xvclz_d asm-fmts = xd, xj data-types = V4DI, V4DI /// lasx_xvfadd_s +impl = portable name = lasx_xvfadd_s asm-fmts = xd, xj, xk data-types = V8SF, V8SF, V8SF /// lasx_xvfadd_d +impl = portable name = lasx_xvfadd_d asm-fmts = xd, xj, xk data-types = V4DF, V4DF, V4DF /// lasx_xvfsub_s +impl = portable name = lasx_xvfsub_s asm-fmts = xd, xj, xk data-types = V8SF, V8SF, V8SF /// lasx_xvfsub_d +impl = portable name = lasx_xvfsub_d asm-fmts = xd, xj, xk data-types = V4DF, V4DF, V4DF /// lasx_xvfmul_s +impl = portable name = lasx_xvfmul_s asm-fmts = xd, xj, xk data-types = V8SF, V8SF, V8SF /// lasx_xvfmul_d +impl = portable name = lasx_xvfmul_d asm-fmts = xd, xj, xk data-types = V4DF, V4DF, V4DF /// lasx_xvfdiv_s +impl = portable name = lasx_xvfdiv_s asm-fmts = xd, xj, xk data-types = V8SF, V8SF, V8SF /// lasx_xvfdiv_d +impl = portable name = lasx_xvfdiv_d asm-fmts = xd, xj, xk data-types = V4DF, V4DF, V4DF @@ -1629,11 +1789,13 @@ asm-fmts = xd, xj data-types = V4DI, V4DF /// lasx_xvfsqrt_s +impl = portable name = lasx_xvfsqrt_s asm-fmts = xd, xj data-types = V8SF, V8SF /// lasx_xvfsqrt_d +impl = portable name = lasx_xvfsqrt_d asm-fmts = xd, xj data-types = V4DF, V4DF @@ -1804,26 +1966,31 @@ asm-fmts = xd, xj, ui8 data-types = V8SI, V8SI, V8SI, USI /// lasx_xvandn_v +impl = portable name = lasx_xvandn_v asm-fmts = xd, xj, xk data-types = UV32QI, UV32QI, UV32QI /// lasx_xvneg_b +impl = portable name = lasx_xvneg_b asm-fmts = xd, xj data-types = V32QI, V32QI /// lasx_xvneg_h +impl = portable name = lasx_xvneg_h asm-fmts = xd, xj data-types = V16HI, V16HI /// lasx_xvneg_w +impl = portable name = lasx_xvneg_w asm-fmts = xd, xj data-types = V8SI, V8SI /// lasx_xvneg_d +impl = portable name = lasx_xvneg_d asm-fmts = xd, xj data-types = V4DI, V4DI @@ -2144,41 +2311,49 @@ asm-fmts = xd, xj, xk data-types = V4DI, V4DI, V4DI /// lasx_xvfmadd_s +impl = portable name = lasx_xvfmadd_s asm-fmts = xd, xj, xk, xa data-types = V8SF, V8SF, V8SF, V8SF /// lasx_xvfmadd_d +impl = portable name = lasx_xvfmadd_d asm-fmts = xd, xj, xk, xa data-types = V4DF, V4DF, V4DF, V4DF /// lasx_xvfmsub_s +impl = portable name = lasx_xvfmsub_s asm-fmts = xd, xj, xk, xa data-types = V8SF, V8SF, V8SF, V8SF /// lasx_xvfmsub_d +impl = portable name = lasx_xvfmsub_d asm-fmts = xd, xj, xk, xa data-types = V4DF, V4DF, V4DF, V4DF /// lasx_xvfnmadd_s +impl = portable name = lasx_xvfnmadd_s asm-fmts = xd, xj, xk, xa data-types = V8SF, V8SF, V8SF, V8SF /// lasx_xvfnmadd_d +impl = portable name = lasx_xvfnmadd_d asm-fmts = xd, xj, xk, xa data-types = V4DF, V4DF, V4DF, V4DF /// lasx_xvfnmsub_s +impl = portable name = lasx_xvfnmsub_s asm-fmts = xd, xj, xk, xa data-types = V8SF, V8SF, V8SF, V8SF /// lasx_xvfnmsub_d +impl = portable name = lasx_xvfnmsub_d asm-fmts = xd, xj, xk, xa data-types = V4DF, V4DF, V4DF, V4DF @@ -2424,6 +2599,7 @@ asm-fmts = xd, xj, xk data-types = V8SI, V4DI, V4DI /// lasx_xvorn_v +impl = portable name = lasx_xvorn_v asm-fmts = xd, xj, xk data-types = UV32QI, UV32QI, UV32QI @@ -2449,11 +2625,13 @@ asm-fmts = xd, xj data-types = UV4DI, UV4DI /// lasx_xvinsgr2vr_w +impl = portable name = lasx_xvinsgr2vr_w asm-fmts = xd, rj, ui3 data-types = V8SI, V8SI, SI, UQI /// lasx_xvinsgr2vr_d +impl = portable name = lasx_xvinsgr2vr_d asm-fmts = xd, rj, ui2 data-types = V4DI, V4DI, DI, UQI @@ -2579,21 +2757,25 @@ asm-fmts = xd, rj, si9 data-types = V4DI, CVPOINTER, SI /// lasx_xvpickve2gr_w +impl = portable name = lasx_xvpickve2gr_w asm-fmts = rd, xj, ui3 data-types = SI, V8SI, UQI /// lasx_xvpickve2gr_wu +impl = portable name = lasx_xvpickve2gr_wu asm-fmts = rd, xj, ui3 data-types = USI, V8SI, UQI /// lasx_xvpickve2gr_d +impl = portable name = lasx_xvpickve2gr_d asm-fmts = rd, xj, ui2 data-types = DI, V4DI, UQI /// lasx_xvpickve2gr_du +impl = portable name = lasx_xvpickve2gr_du asm-fmts = rd, xj, ui2 data-types = UDI, V4DI, UQI @@ -3684,21 +3866,25 @@ asm-fmts = xd, xj, ui3 data-types = V8SF, V8SF, UQI /// lasx_xvrepli_b +impl = portable name = lasx_xvrepli_b asm-fmts = xd, si10 data-types = V32QI, HI /// lasx_xvrepli_d +impl = portable name = lasx_xvrepli_d asm-fmts = xd, si10 data-types = V4DI, HI /// lasx_xvrepli_h +impl = portable name = lasx_xvrepli_h asm-fmts = xd, si10 data-types = V16HI, HI /// lasx_xvrepli_w +impl = portable name = lasx_xvrepli_w asm-fmts = xd, si10 data-types = V8SI, HI diff --git a/crates/stdarch-gen-loongarch/lsx.spec b/crates/stdarch-gen-loongarch/lsx.spec index b5497b6e62..8fd2678899 100644 --- a/crates/stdarch-gen-loongarch/lsx.spec +++ b/crates/stdarch-gen-loongarch/lsx.spec @@ -4,81 +4,97 @@ // ``` /// lsx_vsll_b +impl = portable name = lsx_vsll_b asm-fmts = vd, vj, vk data-types = V16QI, V16QI, V16QI /// lsx_vsll_h +impl = portable name = lsx_vsll_h asm-fmts = vd, vj, vk data-types = V8HI, V8HI, V8HI /// lsx_vsll_w +impl = portable name = lsx_vsll_w asm-fmts = vd, vj, vk data-types = V4SI, V4SI, V4SI /// lsx_vsll_d +impl = portable name = lsx_vsll_d asm-fmts = vd, vj, vk data-types = V2DI, V2DI, V2DI /// lsx_vslli_b +impl = portable name = lsx_vslli_b asm-fmts = vd, vj, ui3 data-types = V16QI, V16QI, UQI /// lsx_vslli_h +impl = portable name = lsx_vslli_h asm-fmts = vd, vj, ui4 data-types = V8HI, V8HI, UQI /// lsx_vslli_w +impl = portable name = lsx_vslli_w asm-fmts = vd, vj, ui5 data-types = V4SI, V4SI, UQI /// lsx_vslli_d +impl = portable name = lsx_vslli_d asm-fmts = vd, vj, ui6 data-types = V2DI, V2DI, UQI /// lsx_vsra_b +impl = portable name = lsx_vsra_b asm-fmts = vd, vj, vk data-types = V16QI, V16QI, V16QI /// lsx_vsra_h +impl = portable name = lsx_vsra_h asm-fmts = vd, vj, vk data-types = V8HI, V8HI, V8HI /// lsx_vsra_w +impl = portable name = lsx_vsra_w asm-fmts = vd, vj, vk data-types = V4SI, V4SI, V4SI /// lsx_vsra_d +impl = portable name = lsx_vsra_d asm-fmts = vd, vj, vk data-types = V2DI, V2DI, V2DI /// lsx_vsrai_b +impl = portable name = lsx_vsrai_b asm-fmts = vd, vj, ui3 data-types = V16QI, V16QI, UQI /// lsx_vsrai_h +impl = portable name = lsx_vsrai_h asm-fmts = vd, vj, ui4 data-types = V8HI, V8HI, UQI /// lsx_vsrai_w +impl = portable name = lsx_vsrai_w asm-fmts = vd, vj, ui5 data-types = V4SI, V4SI, UQI /// lsx_vsrai_d +impl = portable name = lsx_vsrai_d asm-fmts = vd, vj, ui6 data-types = V2DI, V2DI, UQI @@ -124,41 +140,49 @@ asm-fmts = vd, vj, ui6 data-types = V2DI, V2DI, UQI /// lsx_vsrl_b +impl = portable name = lsx_vsrl_b asm-fmts = vd, vj, vk data-types = V16QI, V16QI, V16QI /// lsx_vsrl_h +impl = portable name = lsx_vsrl_h asm-fmts = vd, vj, vk data-types = V8HI, V8HI, V8HI /// lsx_vsrl_w +impl = portable name = lsx_vsrl_w asm-fmts = vd, vj, vk data-types = V4SI, V4SI, V4SI /// lsx_vsrl_d +impl = portable name = lsx_vsrl_d asm-fmts = vd, vj, vk data-types = V2DI, V2DI, V2DI /// lsx_vsrli_b +impl = portable name = lsx_vsrli_b asm-fmts = vd, vj, ui3 data-types = V16QI, V16QI, UQI /// lsx_vsrli_h +impl = portable name = lsx_vsrli_h asm-fmts = vd, vj, ui4 data-types = V8HI, V8HI, UQI /// lsx_vsrli_w +impl = portable name = lsx_vsrli_w asm-fmts = vd, vj, ui5 data-types = V4SI, V4SI, UQI /// lsx_vsrli_d +impl = portable name = lsx_vsrli_d asm-fmts = vd, vj, ui6 data-types = V2DI, V2DI, UQI @@ -324,61 +348,73 @@ asm-fmts = vd, vj, ui6 data-types = UV2DI, UV2DI, UQI /// lsx_vadd_b +impl = portable name = lsx_vadd_b asm-fmts = vd, vj, vk data-types = V16QI, V16QI, V16QI /// lsx_vadd_h +impl = portable name = lsx_vadd_h asm-fmts = vd, vj, vk data-types = V8HI, V8HI, V8HI /// lsx_vadd_w +impl = portable name = lsx_vadd_w asm-fmts = vd, vj, vk data-types = V4SI, V4SI, V4SI /// lsx_vadd_d +impl = portable name = lsx_vadd_d asm-fmts = vd, vj, vk data-types = V2DI, V2DI, V2DI /// lsx_vaddi_bu +impl = portable name = lsx_vaddi_bu asm-fmts = vd, vj, ui5 data-types = V16QI, V16QI, UQI /// lsx_vaddi_hu +impl = portable name = lsx_vaddi_hu asm-fmts = vd, vj, ui5 data-types = V8HI, V8HI, UQI /// lsx_vaddi_wu +impl = portable name = lsx_vaddi_wu asm-fmts = vd, vj, ui5 data-types = V4SI, V4SI, UQI /// lsx_vaddi_du +impl = portable name = lsx_vaddi_du asm-fmts = vd, vj, ui5 data-types = V2DI, V2DI, UQI /// lsx_vsub_b +impl = portable name = lsx_vsub_b asm-fmts = vd, vj, vk data-types = V16QI, V16QI, V16QI /// lsx_vsub_h +impl = portable name = lsx_vsub_h asm-fmts = vd, vj, vk data-types = V8HI, V8HI, V8HI /// lsx_vsub_w +impl = portable name = lsx_vsub_w asm-fmts = vd, vj, vk data-types = V4SI, V4SI, V4SI /// lsx_vsub_d +impl = portable name = lsx_vsub_d asm-fmts = vd, vj, vk data-types = V2DI, V2DI, V2DI @@ -404,361 +440,433 @@ asm-fmts = vd, vj, ui5 data-types = V2DI, V2DI, UQI /// lsx_vmax_b +impl = portable name = lsx_vmax_b asm-fmts = vd, vj, vk data-types = V16QI, V16QI, V16QI /// lsx_vmax_h +impl = portable name = lsx_vmax_h asm-fmts = vd, vj, vk data-types = V8HI, V8HI, V8HI /// lsx_vmax_w +impl = portable name = lsx_vmax_w asm-fmts = vd, vj, vk data-types = V4SI, V4SI, V4SI /// lsx_vmax_d +impl = portable name = lsx_vmax_d asm-fmts = vd, vj, vk data-types = V2DI, V2DI, V2DI /// lsx_vmaxi_b +impl = portable name = lsx_vmaxi_b asm-fmts = vd, vj, si5 data-types = V16QI, V16QI, QI /// lsx_vmaxi_h +impl = portable name = lsx_vmaxi_h asm-fmts = vd, vj, si5 data-types = V8HI, V8HI, QI /// lsx_vmaxi_w +impl = portable name = lsx_vmaxi_w asm-fmts = vd, vj, si5 data-types = V4SI, V4SI, QI /// lsx_vmaxi_d +impl = portable name = lsx_vmaxi_d asm-fmts = vd, vj, si5 data-types = V2DI, V2DI, QI /// lsx_vmax_bu +impl = portable name = lsx_vmax_bu asm-fmts = vd, vj, vk data-types = UV16QI, UV16QI, UV16QI /// lsx_vmax_hu +impl = portable name = lsx_vmax_hu asm-fmts = vd, vj, vk data-types = UV8HI, UV8HI, UV8HI /// lsx_vmax_wu +impl = portable name = lsx_vmax_wu asm-fmts = vd, vj, vk data-types = UV4SI, UV4SI, UV4SI /// lsx_vmax_du +impl = portable name = lsx_vmax_du asm-fmts = vd, vj, vk data-types = UV2DI, UV2DI, UV2DI /// lsx_vmaxi_bu +impl = portable name = lsx_vmaxi_bu asm-fmts = vd, vj, ui5 data-types = UV16QI, UV16QI, UQI /// lsx_vmaxi_hu +impl = portable name = lsx_vmaxi_hu asm-fmts = vd, vj, ui5 data-types = UV8HI, UV8HI, UQI /// lsx_vmaxi_wu +impl = portable name = lsx_vmaxi_wu asm-fmts = vd, vj, ui5 data-types = UV4SI, UV4SI, UQI /// lsx_vmaxi_du +impl = portable name = lsx_vmaxi_du asm-fmts = vd, vj, ui5 data-types = UV2DI, UV2DI, UQI /// lsx_vmin_b +impl = portable name = lsx_vmin_b asm-fmts = vd, vj, vk data-types = V16QI, V16QI, V16QI /// lsx_vmin_h +impl = portable name = lsx_vmin_h asm-fmts = vd, vj, vk data-types = V8HI, V8HI, V8HI /// lsx_vmin_w +impl = portable name = lsx_vmin_w asm-fmts = vd, vj, vk data-types = V4SI, V4SI, V4SI /// lsx_vmin_d +impl = portable name = lsx_vmin_d asm-fmts = vd, vj, vk data-types = V2DI, V2DI, V2DI /// lsx_vmini_b +impl = portable name = lsx_vmini_b asm-fmts = vd, vj, si5 data-types = V16QI, V16QI, QI /// lsx_vmini_h +impl = portable name = lsx_vmini_h asm-fmts = vd, vj, si5 data-types = V8HI, V8HI, QI /// lsx_vmini_w +impl = portable name = lsx_vmini_w asm-fmts = vd, vj, si5 data-types = V4SI, V4SI, QI /// lsx_vmini_d +impl = portable name = lsx_vmini_d asm-fmts = vd, vj, si5 data-types = V2DI, V2DI, QI /// lsx_vmin_bu +impl = portable name = lsx_vmin_bu asm-fmts = vd, vj, vk data-types = UV16QI, UV16QI, UV16QI /// lsx_vmin_hu +impl = portable name = lsx_vmin_hu asm-fmts = vd, vj, vk data-types = UV8HI, UV8HI, UV8HI /// lsx_vmin_wu +impl = portable name = lsx_vmin_wu asm-fmts = vd, vj, vk data-types = UV4SI, UV4SI, UV4SI /// lsx_vmin_du +impl = portable name = lsx_vmin_du asm-fmts = vd, vj, vk data-types = UV2DI, UV2DI, UV2DI /// lsx_vmini_bu +impl = portable name = lsx_vmini_bu asm-fmts = vd, vj, ui5 data-types = UV16QI, UV16QI, UQI /// lsx_vmini_hu +impl = portable name = lsx_vmini_hu asm-fmts = vd, vj, ui5 data-types = UV8HI, UV8HI, UQI /// lsx_vmini_wu +impl = portable name = lsx_vmini_wu asm-fmts = vd, vj, ui5 data-types = UV4SI, UV4SI, UQI /// lsx_vmini_du +impl = portable name = lsx_vmini_du asm-fmts = vd, vj, ui5 data-types = UV2DI, UV2DI, UQI /// lsx_vseq_b +impl = portable name = lsx_vseq_b asm-fmts = vd, vj, vk data-types = V16QI, V16QI, V16QI /// lsx_vseq_h +impl = portable name = lsx_vseq_h asm-fmts = vd, vj, vk data-types = V8HI, V8HI, V8HI /// lsx_vseq_w +impl = portable name = lsx_vseq_w asm-fmts = vd, vj, vk data-types = V4SI, V4SI, V4SI /// lsx_vseq_d +impl = portable name = lsx_vseq_d asm-fmts = vd, vj, vk data-types = V2DI, V2DI, V2DI /// lsx_vseqi_b +impl = portable name = lsx_vseqi_b asm-fmts = vd, vj, si5 data-types = V16QI, V16QI, QI /// lsx_vseqi_h +impl = portable name = lsx_vseqi_h asm-fmts = vd, vj, si5 data-types = V8HI, V8HI, QI /// lsx_vseqi_w +impl = portable name = lsx_vseqi_w asm-fmts = vd, vj, si5 data-types = V4SI, V4SI, QI /// lsx_vseqi_d +impl = portable name = lsx_vseqi_d asm-fmts = vd, vj, si5 data-types = V2DI, V2DI, QI /// lsx_vslti_b +impl = portable name = lsx_vslti_b asm-fmts = vd, vj, si5 data-types = V16QI, V16QI, QI /// lsx_vslt_b +impl = portable name = lsx_vslt_b asm-fmts = vd, vj, vk data-types = V16QI, V16QI, V16QI /// lsx_vslt_h +impl = portable name = lsx_vslt_h asm-fmts = vd, vj, vk data-types = V8HI, V8HI, V8HI /// lsx_vslt_w +impl = portable name = lsx_vslt_w asm-fmts = vd, vj, vk data-types = V4SI, V4SI, V4SI /// lsx_vslt_d +impl = portable name = lsx_vslt_d asm-fmts = vd, vj, vk data-types = V2DI, V2DI, V2DI /// lsx_vslti_h +impl = portable name = lsx_vslti_h asm-fmts = vd, vj, si5 data-types = V8HI, V8HI, QI /// lsx_vslti_w +impl = portable name = lsx_vslti_w asm-fmts = vd, vj, si5 data-types = V4SI, V4SI, QI /// lsx_vslti_d +impl = portable name = lsx_vslti_d asm-fmts = vd, vj, si5 data-types = V2DI, V2DI, QI /// lsx_vslt_bu +impl = portable name = lsx_vslt_bu asm-fmts = vd, vj, vk data-types = V16QI, UV16QI, UV16QI /// lsx_vslt_hu +impl = portable name = lsx_vslt_hu asm-fmts = vd, vj, vk data-types = V8HI, UV8HI, UV8HI /// lsx_vslt_wu +impl = portable name = lsx_vslt_wu asm-fmts = vd, vj, vk data-types = V4SI, UV4SI, UV4SI /// lsx_vslt_du +impl = portable name = lsx_vslt_du asm-fmts = vd, vj, vk data-types = V2DI, UV2DI, UV2DI /// lsx_vslti_bu +impl = portable name = lsx_vslti_bu asm-fmts = vd, vj, ui5 data-types = V16QI, UV16QI, UQI /// lsx_vslti_hu +impl = portable name = lsx_vslti_hu asm-fmts = vd, vj, ui5 data-types = V8HI, UV8HI, UQI /// lsx_vslti_wu +impl = portable name = lsx_vslti_wu asm-fmts = vd, vj, ui5 data-types = V4SI, UV4SI, UQI /// lsx_vslti_du +impl = portable name = lsx_vslti_du asm-fmts = vd, vj, ui5 data-types = V2DI, UV2DI, UQI /// lsx_vsle_b +impl = portable name = lsx_vsle_b asm-fmts = vd, vj, vk data-types = V16QI, V16QI, V16QI /// lsx_vsle_h +impl = portable name = lsx_vsle_h asm-fmts = vd, vj, vk data-types = V8HI, V8HI, V8HI /// lsx_vsle_w +impl = portable name = lsx_vsle_w asm-fmts = vd, vj, vk data-types = V4SI, V4SI, V4SI /// lsx_vsle_d +impl = portable name = lsx_vsle_d asm-fmts = vd, vj, vk data-types = V2DI, V2DI, V2DI /// lsx_vslei_b +impl = portable name = lsx_vslei_b asm-fmts = vd, vj, si5 data-types = V16QI, V16QI, QI /// lsx_vslei_h +impl = portable name = lsx_vslei_h asm-fmts = vd, vj, si5 data-types = V8HI, V8HI, QI /// lsx_vslei_w +impl = portable name = lsx_vslei_w asm-fmts = vd, vj, si5 data-types = V4SI, V4SI, QI /// lsx_vslei_d +impl = portable name = lsx_vslei_d asm-fmts = vd, vj, si5 data-types = V2DI, V2DI, QI /// lsx_vsle_bu +impl = portable name = lsx_vsle_bu asm-fmts = vd, vj, vk data-types = V16QI, UV16QI, UV16QI /// lsx_vsle_hu +impl = portable name = lsx_vsle_hu asm-fmts = vd, vj, vk data-types = V8HI, UV8HI, UV8HI /// lsx_vsle_wu +impl = portable name = lsx_vsle_wu asm-fmts = vd, vj, vk data-types = V4SI, UV4SI, UV4SI /// lsx_vsle_du +impl = portable name = lsx_vsle_du asm-fmts = vd, vj, vk data-types = V2DI, UV2DI, UV2DI /// lsx_vslei_bu +impl = portable name = lsx_vslei_bu asm-fmts = vd, vj, ui5 data-types = V16QI, UV16QI, UQI /// lsx_vslei_hu +impl = portable name = lsx_vslei_hu asm-fmts = vd, vj, ui5 data-types = V8HI, UV8HI, UQI /// lsx_vslei_wu +impl = portable name = lsx_vslei_wu asm-fmts = vd, vj, ui5 data-types = V4SI, UV4SI, UQI /// lsx_vslei_du +impl = portable name = lsx_vslei_du asm-fmts = vd, vj, ui5 data-types = V2DI, UV2DI, UQI @@ -1024,101 +1132,121 @@ asm-fmts = vd, vj, vk data-types = UV2DI, UV2DI, UV2DI /// lsx_vmul_b +impl = portable name = lsx_vmul_b asm-fmts = vd, vj, vk data-types = V16QI, V16QI, V16QI /// lsx_vmul_h +impl = portable name = lsx_vmul_h asm-fmts = vd, vj, vk data-types = V8HI, V8HI, V8HI /// lsx_vmul_w +impl = portable name = lsx_vmul_w asm-fmts = vd, vj, vk data-types = V4SI, V4SI, V4SI /// lsx_vmul_d +impl = portable name = lsx_vmul_d asm-fmts = vd, vj, vk data-types = V2DI, V2DI, V2DI /// lsx_vmadd_b +impl = portable name = lsx_vmadd_b asm-fmts = vd, vj, vk data-types = V16QI, V16QI, V16QI, V16QI /// lsx_vmadd_h +impl = portable name = lsx_vmadd_h asm-fmts = vd, vj, vk data-types = V8HI, V8HI, V8HI, V8HI /// lsx_vmadd_w +impl = portable name = lsx_vmadd_w asm-fmts = vd, vj, vk data-types = V4SI, V4SI, V4SI, V4SI /// lsx_vmadd_d +impl = portable name = lsx_vmadd_d asm-fmts = vd, vj, vk data-types = V2DI, V2DI, V2DI, V2DI /// lsx_vmsub_b +impl = portable name = lsx_vmsub_b asm-fmts = vd, vj, vk data-types = V16QI, V16QI, V16QI, V16QI /// lsx_vmsub_h +impl = portable name = lsx_vmsub_h asm-fmts = vd, vj, vk data-types = V8HI, V8HI, V8HI, V8HI /// lsx_vmsub_w +impl = portable name = lsx_vmsub_w asm-fmts = vd, vj, vk data-types = V4SI, V4SI, V4SI, V4SI /// lsx_vmsub_d +impl = portable name = lsx_vmsub_d asm-fmts = vd, vj, vk data-types = V2DI, V2DI, V2DI, V2DI /// lsx_vdiv_b +impl = portable name = lsx_vdiv_b asm-fmts = vd, vj, vk data-types = V16QI, V16QI, V16QI /// lsx_vdiv_h +impl = portable name = lsx_vdiv_h asm-fmts = vd, vj, vk data-types = V8HI, V8HI, V8HI /// lsx_vdiv_w +impl = portable name = lsx_vdiv_w asm-fmts = vd, vj, vk data-types = V4SI, V4SI, V4SI /// lsx_vdiv_d +impl = portable name = lsx_vdiv_d asm-fmts = vd, vj, vk data-types = V2DI, V2DI, V2DI /// lsx_vdiv_bu +impl = portable name = lsx_vdiv_bu asm-fmts = vd, vj, vk data-types = UV16QI, UV16QI, UV16QI /// lsx_vdiv_hu +impl = portable name = lsx_vdiv_hu asm-fmts = vd, vj, vk data-types = UV8HI, UV8HI, UV8HI /// lsx_vdiv_wu +impl = portable name = lsx_vdiv_wu asm-fmts = vd, vj, vk data-types = UV4SI, UV4SI, UV4SI /// lsx_vdiv_du +impl = portable name = lsx_vdiv_du asm-fmts = vd, vj, vk data-types = UV2DI, UV2DI, UV2DI @@ -1184,41 +1312,49 @@ asm-fmts = vd, vj, vk data-types = V2DI, UV4SI, UV4SI /// lsx_vmod_b +impl = portable name = lsx_vmod_b asm-fmts = vd, vj, vk data-types = V16QI, V16QI, V16QI /// lsx_vmod_h +impl = portable name = lsx_vmod_h asm-fmts = vd, vj, vk data-types = V8HI, V8HI, V8HI /// lsx_vmod_w +impl = portable name = lsx_vmod_w asm-fmts = vd, vj, vk data-types = V4SI, V4SI, V4SI /// lsx_vmod_d +impl = portable name = lsx_vmod_d asm-fmts = vd, vj, vk data-types = V2DI, V2DI, V2DI /// lsx_vmod_bu +impl = portable name = lsx_vmod_bu asm-fmts = vd, vj, vk data-types = UV16QI, UV16QI, UV16QI /// lsx_vmod_hu +impl = portable name = lsx_vmod_hu asm-fmts = vd, vj, vk data-types = UV8HI, UV8HI, UV8HI /// lsx_vmod_wu +impl = portable name = lsx_vmod_wu asm-fmts = vd, vj, vk data-types = UV4SI, UV4SI, UV4SI /// lsx_vmod_du +impl = portable name = lsx_vmod_du asm-fmts = vd, vj, vk data-types = UV2DI, UV2DI, UV2DI @@ -1399,6 +1535,7 @@ asm-fmts = vd, vj, vk data-types = V2DI, V2DI, V2DI, V2DI /// lsx_vand_v +impl = portable name = lsx_vand_v asm-fmts = vd, vj, vk data-types = UV16QI, UV16QI, UV16QI @@ -1409,6 +1546,7 @@ asm-fmts = vd, vj, ui8 data-types = UV16QI, UV16QI, UQI /// lsx_vor_v +impl = portable name = lsx_vor_v asm-fmts = vd, vj, vk data-types = UV16QI, UV16QI, UV16QI @@ -1419,6 +1557,7 @@ asm-fmts = vd, vj, ui8 data-types = UV16QI, UV16QI, UQI /// lsx_vnor_v +impl = portable name = lsx_vnor_v asm-fmts = vd, vj, vk data-types = UV16QI, UV16QI, UV16QI @@ -1429,6 +1568,7 @@ asm-fmts = vd, vj, ui8 data-types = UV16QI, UV16QI, UQI /// lsx_vxor_v +impl = portable name = lsx_vxor_v asm-fmts = vd, vj, vk data-types = UV16QI, UV16QI, UV16QI @@ -1464,41 +1604,49 @@ asm-fmts = vd, vj, ui8 data-types = V4SI, V4SI, USI /// lsx_vreplgr2vr_b +impl = portable name = lsx_vreplgr2vr_b asm-fmts = vd, rj data-types = V16QI, SI /// lsx_vreplgr2vr_h +impl = portable name = lsx_vreplgr2vr_h asm-fmts = vd, rj data-types = V8HI, SI /// lsx_vreplgr2vr_w +impl = portable name = lsx_vreplgr2vr_w asm-fmts = vd, rj data-types = V4SI, SI /// lsx_vreplgr2vr_d +impl = portable name = lsx_vreplgr2vr_d asm-fmts = vd, rj data-types = V2DI, DI /// lsx_vpcnt_b +impl = portable name = lsx_vpcnt_b asm-fmts = vd, vj data-types = V16QI, V16QI /// lsx_vpcnt_h +impl = portable name = lsx_vpcnt_h asm-fmts = vd, vj data-types = V8HI, V8HI /// lsx_vpcnt_w +impl = portable name = lsx_vpcnt_w asm-fmts = vd, vj data-types = V4SI, V4SI /// lsx_vpcnt_d +impl = portable name = lsx_vpcnt_d asm-fmts = vd, vj data-types = V2DI, V2DI @@ -1524,121 +1672,145 @@ asm-fmts = vd, vj data-types = V2DI, V2DI /// lsx_vclz_b +impl = portable name = lsx_vclz_b asm-fmts = vd, vj data-types = V16QI, V16QI /// lsx_vclz_h +impl = portable name = lsx_vclz_h asm-fmts = vd, vj data-types = V8HI, V8HI /// lsx_vclz_w +impl = portable name = lsx_vclz_w asm-fmts = vd, vj data-types = V4SI, V4SI /// lsx_vclz_d +impl = portable name = lsx_vclz_d asm-fmts = vd, vj data-types = V2DI, V2DI /// lsx_vpickve2gr_b +impl = portable name = lsx_vpickve2gr_b asm-fmts = rd, vj, ui4 data-types = SI, V16QI, UQI /// lsx_vpickve2gr_h +impl = portable name = lsx_vpickve2gr_h asm-fmts = rd, vj, ui3 data-types = SI, V8HI, UQI /// lsx_vpickve2gr_w +impl = portable name = lsx_vpickve2gr_w asm-fmts = rd, vj, ui2 data-types = SI, V4SI, UQI /// lsx_vpickve2gr_d +impl = portable name = lsx_vpickve2gr_d asm-fmts = rd, vj, ui1 data-types = DI, V2DI, UQI /// lsx_vpickve2gr_bu +impl = portable name = lsx_vpickve2gr_bu asm-fmts = rd, vj, ui4 data-types = USI, V16QI, UQI /// lsx_vpickve2gr_hu +impl = portable name = lsx_vpickve2gr_hu asm-fmts = rd, vj, ui3 data-types = USI, V8HI, UQI /// lsx_vpickve2gr_wu +impl = portable name = lsx_vpickve2gr_wu asm-fmts = rd, vj, ui2 data-types = USI, V4SI, UQI /// lsx_vpickve2gr_du +impl = portable name = lsx_vpickve2gr_du asm-fmts = rd, vj, ui1 data-types = UDI, V2DI, UQI /// lsx_vinsgr2vr_b +impl = portable name = lsx_vinsgr2vr_b asm-fmts = vd, rj, ui4 data-types = V16QI, V16QI, SI, UQI /// lsx_vinsgr2vr_h +impl = portable name = lsx_vinsgr2vr_h asm-fmts = vd, rj, ui3 data-types = V8HI, V8HI, SI, UQI /// lsx_vinsgr2vr_w +impl = portable name = lsx_vinsgr2vr_w asm-fmts = vd, rj, ui2 data-types = V4SI, V4SI, SI, UQI /// lsx_vinsgr2vr_d +impl = portable name = lsx_vinsgr2vr_d asm-fmts = vd, rj, ui1 data-types = V2DI, V2DI, DI, UQI /// lsx_vfadd_s +impl = portable name = lsx_vfadd_s asm-fmts = vd, vj, vk data-types = V4SF, V4SF, V4SF /// lsx_vfadd_d +impl = portable name = lsx_vfadd_d asm-fmts = vd, vj, vk data-types = V2DF, V2DF, V2DF /// lsx_vfsub_s +impl = portable name = lsx_vfsub_s asm-fmts = vd, vj, vk data-types = V4SF, V4SF, V4SF /// lsx_vfsub_d +impl = portable name = lsx_vfsub_d asm-fmts = vd, vj, vk data-types = V2DF, V2DF, V2DF /// lsx_vfmul_s +impl = portable name = lsx_vfmul_s asm-fmts = vd, vj, vk data-types = V4SF, V4SF, V4SF /// lsx_vfmul_d +impl = portable name = lsx_vfmul_d asm-fmts = vd, vj, vk data-types = V2DF, V2DF, V2DF /// lsx_vfdiv_s +impl = portable name = lsx_vfdiv_s asm-fmts = vd, vj, vk data-types = V4SF, V4SF, V4SF /// lsx_vfdiv_d +impl = portable name = lsx_vfdiv_d asm-fmts = vd, vj, vk data-types = V2DF, V2DF, V2DF @@ -1704,11 +1876,13 @@ asm-fmts = vd, vj data-types = V2DI, V2DF /// lsx_vfsqrt_s +impl = portable name = lsx_vfsqrt_s asm-fmts = vd, vj data-types = V4SF, V4SF /// lsx_vfsqrt_d +impl = portable name = lsx_vfsqrt_d asm-fmts = vd, vj data-types = V2DF, V2DF @@ -1854,26 +2028,31 @@ asm-fmts = vd, vj data-types = V2DF, UV2DI /// lsx_vandn_v +impl = portable name = lsx_vandn_v asm-fmts = vd, vj, vk data-types = UV16QI, UV16QI, UV16QI /// lsx_vneg_b +impl = portable name = lsx_vneg_b asm-fmts = vd, vj data-types = V16QI, V16QI /// lsx_vneg_h +impl = portable name = lsx_vneg_h asm-fmts = vd, vj data-types = V8HI, V8HI /// lsx_vneg_w +impl = portable name = lsx_vneg_w asm-fmts = vd, vj data-types = V4SI, V4SI /// lsx_vneg_d +impl = portable name = lsx_vneg_d asm-fmts = vd, vj data-types = V2DI, V2DI @@ -2194,41 +2373,49 @@ asm-fmts = vd, vj, vk data-types = V2DI, V2DI, V2DI /// lsx_vfmadd_s +impl = portable name = lsx_vfmadd_s asm-fmts = vd, vj, vk, va data-types = V4SF, V4SF, V4SF, V4SF /// lsx_vfmadd_d +impl = portable name = lsx_vfmadd_d asm-fmts = vd, vj, vk, va data-types = V2DF, V2DF, V2DF, V2DF /// lsx_vfmsub_s +impl = portable name = lsx_vfmsub_s asm-fmts = vd, vj, vk, va data-types = V4SF, V4SF, V4SF, V4SF /// lsx_vfmsub_d +impl = portable name = lsx_vfmsub_d asm-fmts = vd, vj, vk, va data-types = V2DF, V2DF, V2DF, V2DF /// lsx_vfnmadd_s +impl = portable name = lsx_vfnmadd_s asm-fmts = vd, vj, vk, va data-types = V4SF, V4SF, V4SF, V4SF /// lsx_vfnmadd_d +impl = portable name = lsx_vfnmadd_d asm-fmts = vd, vj, vk, va data-types = V2DF, V2DF, V2DF, V2DF /// lsx_vfnmsub_s +impl = portable name = lsx_vfnmsub_s asm-fmts = vd, vj, vk, va data-types = V4SF, V4SF, V4SF, V4SF /// lsx_vfnmsub_d +impl = portable name = lsx_vfnmsub_d asm-fmts = vd, vj, vk, va data-types = V2DF, V2DF, V2DF, V2DF @@ -3284,6 +3471,7 @@ asm-fmts = vd, vj, vk data-types = V4SI, V2DI, V2DI /// lsx_vorn_v +impl = portable name = lsx_vorn_v asm-fmts = vd, vj, vk data-types = UV16QI, UV16QI, UV16QI @@ -3584,21 +3772,25 @@ asm-fmts = vd, vj, vk data-types = V4SI, V4SF, V4SF /// lsx_vrepli_b +impl = portable name = lsx_vrepli_b asm-fmts = vd, si10 data-types = V16QI, HI /// lsx_vrepli_d +impl = portable name = lsx_vrepli_d asm-fmts = vd, si10 data-types = V2DI, HI /// lsx_vrepli_h +impl = portable name = lsx_vrepli_h asm-fmts = vd, si10 data-types = V8HI, HI /// lsx_vrepli_w +impl = portable name = lsx_vrepli_w asm-fmts = vd, si10 data-types = V4SI, HI diff --git a/crates/stdarch-gen-loongarch/src/portable-intrinsics.txt b/crates/stdarch-gen-loongarch/src/portable-intrinsics.txt index b62f7f5f8f..2d5e9817a3 100644 --- a/crates/stdarch-gen-loongarch/src/portable-intrinsics.txt +++ b/crates/stdarch-gen-loongarch/src/portable-intrinsics.txt @@ -1,2 +1,381 @@ # LSX intrinsics +lsx_vsll_b +lsx_vsll_h +lsx_vsll_w +lsx_vsll_d +lsx_vslli_b +lsx_vslli_h +lsx_vslli_w +lsx_vslli_d +lsx_vsra_b +lsx_vsra_h +lsx_vsra_w +lsx_vsra_d +lsx_vsrai_b +lsx_vsrai_h +lsx_vsrai_w +lsx_vsrai_d +lsx_vsrl_b +lsx_vsrl_h +lsx_vsrl_w +lsx_vsrl_d +lsx_vsrli_b +lsx_vsrli_h +lsx_vsrli_w +lsx_vsrli_d +lsx_vadd_b +lsx_vadd_h +lsx_vadd_w +lsx_vadd_d +lsx_vaddi_bu +lsx_vaddi_hu +lsx_vaddi_wu +lsx_vaddi_du +lsx_vsub_b +lsx_vsub_h +lsx_vsub_w +lsx_vsub_d +lsx_vmax_b +lsx_vmax_h +lsx_vmax_w +lsx_vmax_d +lsx_vmaxi_b +lsx_vmaxi_h +lsx_vmaxi_w +lsx_vmaxi_d +lsx_vmax_bu +lsx_vmax_hu +lsx_vmax_wu +lsx_vmax_du +lsx_vmaxi_bu +lsx_vmaxi_hu +lsx_vmaxi_wu +lsx_vmaxi_du +lsx_vmin_b +lsx_vmin_h +lsx_vmin_w +lsx_vmin_d +lsx_vmini_b +lsx_vmini_h +lsx_vmini_w +lsx_vmini_d +lsx_vmin_bu +lsx_vmin_hu +lsx_vmin_wu +lsx_vmin_du +lsx_vmini_bu +lsx_vmini_hu +lsx_vmini_wu +lsx_vmini_du +lsx_vseq_b +lsx_vseq_h +lsx_vseq_w +lsx_vseq_d +lsx_vseqi_b +lsx_vseqi_h +lsx_vseqi_w +lsx_vseqi_d +lsx_vslt_b +lsx_vslt_h +lsx_vslt_w +lsx_vslt_d +lsx_vslti_b +lsx_vslti_h +lsx_vslti_w +lsx_vslti_d +lsx_vslt_bu +lsx_vslt_hu +lsx_vslt_wu +lsx_vslt_du +lsx_vslti_bu +lsx_vslti_hu +lsx_vslti_wu +lsx_vslti_du +lsx_vsle_b +lsx_vsle_h +lsx_vsle_w +lsx_vsle_d +lsx_vslei_b +lsx_vslei_h +lsx_vslei_w +lsx_vslei_d +lsx_vsle_bu +lsx_vsle_hu +lsx_vsle_wu +lsx_vsle_du +lsx_vslei_bu +lsx_vslei_hu +lsx_vslei_wu +lsx_vslei_du +lsx_vmul_b +lsx_vmul_h +lsx_vmul_w +lsx_vmul_d +lsx_vdiv_b +lsx_vdiv_h +lsx_vdiv_w +lsx_vdiv_d +lsx_vdiv_bu +lsx_vdiv_hu +lsx_vdiv_wu +lsx_vdiv_du +lsx_vmod_b +lsx_vmod_h +lsx_vmod_w +lsx_vmod_d +lsx_vmod_bu +lsx_vmod_hu +lsx_vmod_wu +lsx_vmod_du +lsx_vmadd_b +lsx_vmadd_h +lsx_vmadd_w +lsx_vmadd_d +lsx_vmsub_b +lsx_vmsub_h +lsx_vmsub_w +lsx_vmsub_d +lsx_vand_v +lsx_vor_v +lsx_vnor_v +lsx_vxor_v +lsx_vpcnt_b +lsx_vpcnt_h +lsx_vpcnt_w +lsx_vpcnt_d +lsx_vclz_b +lsx_vclz_h +lsx_vclz_w +lsx_vclz_d +lsx_vreplgr2vr_b +lsx_vreplgr2vr_h +lsx_vreplgr2vr_w +lsx_vreplgr2vr_d +lsx_vpickve2gr_b +lsx_vpickve2gr_h +lsx_vpickve2gr_w +lsx_vpickve2gr_d +lsx_vpickve2gr_bu +lsx_vpickve2gr_hu +lsx_vpickve2gr_wu +lsx_vpickve2gr_du +lsx_vinsgr2vr_b +lsx_vinsgr2vr_h +lsx_vinsgr2vr_w +lsx_vinsgr2vr_d +lsx_vfadd_s +lsx_vfadd_d +lsx_vfsub_s +lsx_vfsub_d +lsx_vfmul_s +lsx_vfmul_d +lsx_vfdiv_s +lsx_vfdiv_d +lsx_vfsqrt_s +lsx_vfsqrt_d +lsx_vandn_v +lsx_vneg_b +lsx_vneg_h +lsx_vneg_w +lsx_vneg_d +lsx_vfmadd_s +lsx_vfmadd_d +lsx_vfmsub_s +lsx_vfmsub_d +lsx_vfnmadd_s +lsx_vfnmadd_d +lsx_vfnmsub_s +lsx_vfnmsub_d +lsx_vorn_v +lsx_vrepli_b +lsx_vrepli_h +lsx_vrepli_w +lsx_vrepli_d + # LASX intrinsics +lasx_xvsll_b +lasx_xvsll_h +lasx_xvsll_w +lasx_xvsll_d +lasx_xvslli_b +lasx_xvslli_h +lasx_xvslli_w +lasx_xvslli_d +lasx_xvsra_b +lasx_xvsra_h +lasx_xvsra_w +lasx_xvsra_d +lasx_xvsrai_b +lasx_xvsrai_h +lasx_xvsrai_w +lasx_xvsrai_d +lasx_xvsrl_b +lasx_xvsrl_h +lasx_xvsrl_w +lasx_xvsrl_d +lasx_xvsrli_b +lasx_xvsrli_h +lasx_xvsrli_w +lasx_xvsrli_d +lasx_xvadd_b +lasx_xvadd_h +lasx_xvadd_w +lasx_xvadd_d +lasx_xvaddi_bu +lasx_xvaddi_hu +lasx_xvaddi_wu +lasx_xvaddi_du +lasx_xvsub_b +lasx_xvsub_h +lasx_xvsub_w +lasx_xvsub_d +lasx_xvmax_b +lasx_xvmax_h +lasx_xvmax_w +lasx_xvmax_d +lasx_xvmaxi_b +lasx_xvmaxi_h +lasx_xvmaxi_w +lasx_xvmaxi_d +lasx_xvmax_bu +lasx_xvmax_hu +lasx_xvmax_wu +lasx_xvmax_du +lasx_xvmaxi_bu +lasx_xvmaxi_hu +lasx_xvmaxi_wu +lasx_xvmaxi_du +lasx_xvmin_b +lasx_xvmin_h +lasx_xvmin_w +lasx_xvmin_d +lasx_xvmini_b +lasx_xvmini_h +lasx_xvmini_w +lasx_xvmini_d +lasx_xvmin_bu +lasx_xvmin_hu +lasx_xvmin_wu +lasx_xvmin_du +lasx_xvmini_bu +lasx_xvmini_hu +lasx_xvmini_wu +lasx_xvmini_du +lasx_xvseq_b +lasx_xvseq_h +lasx_xvseq_w +lasx_xvseq_d +lasx_xvseqi_b +lasx_xvseqi_h +lasx_xvseqi_w +lasx_xvseqi_d +lasx_xvslt_b +lasx_xvslt_h +lasx_xvslt_w +lasx_xvslt_d +lasx_xvslti_b +lasx_xvslti_h +lasx_xvslti_w +lasx_xvslti_d +lasx_xvslt_bu +lasx_xvslt_hu +lasx_xvslt_wu +lasx_xvslt_du +lasx_xvslti_bu +lasx_xvslti_hu +lasx_xvslti_wu +lasx_xvslti_du +lasx_xvsle_b +lasx_xvsle_h +lasx_xvsle_w +lasx_xvsle_d +lasx_xvslei_b +lasx_xvslei_h +lasx_xvslei_w +lasx_xvslei_d +lasx_xvsle_bu +lasx_xvsle_hu +lasx_xvsle_wu +lasx_xvsle_du +lasx_xvslei_bu +lasx_xvslei_hu +lasx_xvslei_wu +lasx_xvslei_du +lasx_xvmul_b +lasx_xvmul_h +lasx_xvmul_w +lasx_xvmul_d +lasx_xvdiv_b +lasx_xvdiv_h +lasx_xvdiv_w +lasx_xvdiv_d +lasx_xvdiv_bu +lasx_xvdiv_hu +lasx_xvdiv_wu +lasx_xvdiv_du +lasx_xvmod_b +lasx_xvmod_h +lasx_xvmod_w +lasx_xvmod_d +lasx_xvmod_bu +lasx_xvmod_hu +lasx_xvmod_wu +lasx_xvmod_du +lasx_xvmadd_b +lasx_xvmadd_h +lasx_xvmadd_w +lasx_xvmadd_d +lasx_xvmsub_b +lasx_xvmsub_h +lasx_xvmsub_w +lasx_xvmsub_d +lasx_xvand_v +lasx_xvor_v +lasx_xvnor_v +lasx_xvxor_v +lasx_xvpcnt_b +lasx_xvpcnt_h +lasx_xvpcnt_w +lasx_xvpcnt_d +lasx_xvclz_b +lasx_xvclz_h +lasx_xvclz_w +lasx_xvclz_d +lasx_xvreplgr2vr_b +lasx_xvreplgr2vr_h +lasx_xvreplgr2vr_w +lasx_xvreplgr2vr_d +lasx_xvpickve2gr_w +lasx_xvpickve2gr_d +lasx_xvpickve2gr_wu +lasx_xvpickve2gr_du +lasx_xvinsgr2vr_w +lasx_xvinsgr2vr_d +lasx_xvfadd_s +lasx_xvfadd_d +lasx_xvfsub_s +lasx_xvfsub_d +lasx_xvfmul_s +lasx_xvfmul_d +lasx_xvfdiv_s +lasx_xvfdiv_d +lasx_xvfsqrt_s +lasx_xvfsqrt_d +lasx_xvandn_v +lasx_xvneg_b +lasx_xvneg_h +lasx_xvneg_w +lasx_xvneg_d +lasx_xvfmadd_s +lasx_xvfmadd_d +lasx_xvfmsub_s +lasx_xvfmsub_d +lasx_xvfnmadd_s +lasx_xvfnmadd_d +lasx_xvfnmsub_s +lasx_xvfnmsub_d +lasx_xvorn_v +lasx_xvrepli_b +lasx_xvrepli_h +lasx_xvrepli_w +lasx_xvrepli_d