Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 9 additions & 5 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,17 @@ env:

jobs:
build:
runs-on: ubuntu-24.04
runs-on: ${{ matrix.os.image }}

strategy:
fail-fast: false
matrix:
os:
- { image: ubuntu-24.04, asset_name_suffix: "" }
- { image: ubuntu-24.04-arm, asset_name_suffix: "-aarch64" }
libgccjit_version:
- { gcc: "gcc-15.deb" }
- { gcc: "gcc-15-without-int128.deb" }
- { gcc: "gcc-15" }
- { gcc: "gcc-15-without-int128" }
commands: [
"--std-tests",
# FIXME: re-enable asm tests when GCC can emit in the right syntax.
Expand Down Expand Up @@ -56,17 +59,18 @@ jobs:
run: rustup component add rustfmt clippy

- name: Download artifact
run: curl -LO https://github.com/rust-lang/gcc/releases/latest/download/${{ matrix.libgccjit_version.gcc }}
run: curl -LO https://github.com/rust-lang/gcc/releases/latest/download/${{ matrix.libgccjit_version.gcc }}${{ matrix.os.asset_name_suffix }}.deb

- name: Setup path to libgccjit
run: |
sudo dpkg --force-overwrite -i ${{ matrix.libgccjit_version.gcc }}
sudo dpkg --force-overwrite -i ${{ matrix.libgccjit_version.gcc }}${{ matrix.os.asset_name_suffix }}.deb
echo 'gcc-path = "/usr/lib/"' > config.toml

# Some run-make tests fail if we use our forked GCC because it doesn't
# bundle libstdc++, so we switch to gcc-14 to have a GCC that has
# libstdc++.
- name: Set default GCC to gcc-14
if: ${{ matrix.os.image == 'ubuntu-24.04' }} # TODO: check why this breaks the CI on Aarch64.
run: sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc-14 30

- name: Set env
Expand Down
2 changes: 1 addition & 1 deletion libgccjit.version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
28b84db392ac0a572f1a2a2a1317aa5f2bc742cb
2a958ef3631207f0f02872ad7b950101b774f9b9
2 changes: 2 additions & 0 deletions src/intrinsic/llvm.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1567,6 +1567,8 @@ pub fn intrinsic<'gcc, 'tcx>(name: &str, cx: &CodegenCx<'gcc, 'tcx>) -> Function
"llvm.x86.avx512.uitofp.round.v8f32.v8i64" => "__builtin_ia32_cvtuqq2ps512_mask",
"llvm.x86.avx512.uitofp.round.v4f32.v4i64" => "__builtin_ia32_cvtuqq2ps256_mask",

"llvm.aarch64.neon.umaxp.v16i8" => "__builtin_aarch64_umaxpv16qi",

// TODO: support the tile builtins:
"llvm.x86.ldtilecfg" => "__builtin_trap",
"llvm.x86.sttilecfg" => "__builtin_trap",
Expand Down
4 changes: 0 additions & 4 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -479,10 +479,6 @@ fn to_gcc_opt_level(optlevel: Option<OptLevel>) -> OptimizationLevel {
/// Returns the features that should be set in `cfg(target_feature)`.
fn target_config(sess: &Session, target_info: &LockedTargetInfo) -> TargetConfig {
let (unstable_target_features, target_features) = cfg_target_feature(sess, |feature| {
// TODO: we disable Neon for now since we don't support the LLVM intrinsics for it.
if feature == "neon" {
return false;
}
target_info.cpu_supports(feature)
// cSpell:disable
/*
Expand Down
Loading