mirror of
https://github.com/rust-lang/rust.git
synced 2026-07-27 01:55:11 -04:00
Merge stdarch-gen-hexagon-scalar into stdarch-gen-hexagon
This commit is contained in:
+2
-6
@@ -318,7 +318,7 @@ jobs:
|
||||
# Check that the generated files agree with the checked-in versions.
|
||||
check-stdarch-gen:
|
||||
needs: [style]
|
||||
name: Check stdarch-gen-{arm, loongarch, hexagon, hexagon-scalar} output
|
||||
name: Check stdarch-gen-{arm, loongarch, hexagon} output
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
@@ -342,11 +342,7 @@ jobs:
|
||||
run: |
|
||||
cargo run -p stdarch-gen-hexagon --release
|
||||
git diff --exit-code
|
||||
- name: Check hexagon scalar
|
||||
run: |
|
||||
cargo run -p stdarch-gen-hexagon-scalar --release
|
||||
git diff --exit-code
|
||||
|
||||
|
||||
# Run some tests with Miri. Most stdarch functions use platform-specific intrinsics
|
||||
# that Miri does not support. Also Miri is reltively slow.
|
||||
#
|
||||
|
||||
@@ -849,13 +849,6 @@ dependencies = [
|
||||
"stdarch-gen-common",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "stdarch-gen-hexagon-scalar"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"regex",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "stdarch-gen-loongarch"
|
||||
version = "0.1.0"
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// This code is automatically generated. DO NOT MODIFY.
|
||||
//! Hexagon scalar intrinsics
|
||||
//!
|
||||
//! This module provides intrinsics for scalar (non-HVX) Hexagon DSP operations,
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
[package]
|
||||
name = "stdarch-gen-hexagon-scalar"
|
||||
version = "0.1.0"
|
||||
authors = ["The Rust Project Developers"]
|
||||
license = "MIT OR Apache-2.0"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
regex = "1.10"
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+7
-21
@@ -21,6 +21,7 @@ use std::collections::HashMap;
|
||||
use std::fs::File;
|
||||
use std::io::Write;
|
||||
use std::path::Path;
|
||||
use stdarch_gen_common::GENERATED_MARKER;
|
||||
|
||||
/// Extract the instruction mnemonic from the assembly syntax string.
|
||||
///
|
||||
@@ -630,6 +631,7 @@ fn generate_scalar_file(intrinsics: &[ScalarIntrinsic], output_path: &Path) -> R
|
||||
let mut output =
|
||||
File::create(output_path).map_err(|e| format!("Failed to create output: {}", e))?;
|
||||
|
||||
writeln!(output, "{}", GENERATED_MARKER).map_err(|e| e.to_string())?;
|
||||
writeln!(output, "{}", generate_module_doc()).map_err(|e| e.to_string())?;
|
||||
writeln!(output, "").map_err(|e| e.to_string())?;
|
||||
writeln!(output, "{}", generate_extern_block(intrinsics)).map_err(|e| e.to_string())?;
|
||||
@@ -651,28 +653,12 @@ fn generate_scalar_file(intrinsics: &[ScalarIntrinsic], output_path: &Path) -> R
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn main() -> Result<(), String> {
|
||||
println!("=== Hexagon Scalar Code Generator ===\n");
|
||||
|
||||
let crate_dir = std::env::var("CARGO_MANIFEST_DIR")
|
||||
.map(std::path::PathBuf::from)
|
||||
.unwrap_or_else(|_| std::env::current_dir().unwrap());
|
||||
|
||||
let header_content = read_header(&crate_dir)?;
|
||||
println!("Read {} bytes", header_content.len());
|
||||
|
||||
/// Parse the scalar header in `crate_dir` and write `scalar.rs` into `out_dir`.
|
||||
pub fn generate(crate_dir: &std::path::Path, out_dir: &std::path::Path) -> Result<(), String> {
|
||||
let header_content = read_header(crate_dir)?;
|
||||
let intrinsics = parse_header(&header_content);
|
||||
println!("Parsed {} scalar intrinsics", intrinsics.len());
|
||||
|
||||
let hexagon_dir = std::env::args()
|
||||
.nth(1)
|
||||
.map(std::path::PathBuf::from)
|
||||
.unwrap_or_else(|| crate_dir.join("../core_arch/src/hexagon"));
|
||||
std::fs::create_dir_all(&hexagon_dir).map_err(|e| e.to_string())?;
|
||||
let scalar_path = hexagon_dir.join("scalar.rs");
|
||||
|
||||
std::fs::create_dir_all(out_dir).map_err(|e| e.to_string())?;
|
||||
let scalar_path = out_dir.join("scalar.rs");
|
||||
generate_scalar_file(&intrinsics, &scalar_path)?;
|
||||
println!("Generated scalar.rs at {}", scalar_path.display());
|
||||
|
||||
Ok(())
|
||||
}
|
||||
Reference in New Issue
Block a user