Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rustc: Remove platform intrinsics crate #57416

Merged
merged 1 commit into from
Jan 16, 2019

Conversation

alexcrichton
Copy link
Member

This was originally attempted in #57048 but it was realized that we
could fully remove the crate via the "unadjusted" ABI on intrinsics.
This means that all intrinsics in stdsimd are implemented directly
against LLVM rather than using the abstraction layer provided here. That
ends up meaning that this crate is no longer used at all.

This crate developed long ago to implement the SIMD intrinsics, but we
didn't end up using it in the long run. In that case let's remove it!

@rust-highfive
Copy link
Collaborator

r? @eddyb

(rust_highfive has picked a reviewer for you, use r? to override)

@rust-highfive
Copy link
Collaborator

⚠️ Warning ⚠️

  • These commits modify submodules.

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Jan 7, 2019
@alexcrichton
Copy link
Member Author

cc @nagisa

@nagisa
Copy link
Member

nagisa commented Jan 7, 2019

cc @rust-lang/compiler just so it does not go through without anybody noticing.

@bors r+

@bors
Copy link
Contributor

bors commented Jan 7, 2019

📌 Commit 22481e603766ac42f3bf07940205e42029005c22 has been approved by nagisa

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jan 7, 2019
@rust-highfive
Copy link
Collaborator

The job x86_64-gnu-llvm-6.0 of your PR failed on Travis (raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
travis_time:end:03779520:start=1546889285199012584,finish=1546889286327383863,duration=1128371279
$ git checkout -qf FETCH_HEAD
travis_fold:end:git.checkout

Encrypted environment variables have been removed for security reasons.
See https://docs.travis-ci.com/user/pull-requests/#pull-requests-and-security-restrictions
$ export SCCACHE_BUCKET=rust-lang-ci-sccache2
$ export SCCACHE_REGION=us-west-1
Setting environment variables from .travis.yml
$ export IMAGE=x86_64-gnu-llvm-6.0
---
travis_time:start:test_debuginfo
Check compiletest suite=debuginfo mode=debuginfo-both (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
[01:07:07] 
[01:07:07] running 118 tests
[01:07:31] .iiiii...i.....i..i...i..i.i..i.ii..i.....i..i....i..........iiii..........i...ii...i.......ii.i.i.i 100/118
[01:07:35] ......iii.i.....ii
[01:07:35] 
[01:07:35]  finished in 28.214
[01:07:35] travis_fold:end:test_debuginfo

---
[01:33:59] test /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0692 (line 11303) ... ok
[01:33:59] test /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0699 (line 11389) ... ignored
[01:33:59] test /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0695 (line 11335) ... ok
[01:33:59] test /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0701 (line 11457) ... ok
[01:33:59] test /checkout/oknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0440 (line 7197) stdout ----
[01:33:59] warning: type `f64x2` should have a camel case name such as `F64x2`
[01:33:59]  --> /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md:7202:1
[01:33:59]   |
[01:33:59] 7 | struct f64x2(f64, f64);
[01:33:59]   |
[01:33:59]   = note: #[warn(non_camel_case_types)] on by default
[01:33:59] 
[01:33:59] 
[01:33:59] error[E0441]: unrecognized platform-specific intrinsic function: `x86_mm_movemask_pd`
[01:33:59]   --> /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md:7205:5
[01:33:59]    |
[01:33:59] 10 |     fn x86_mm_movemask_pd(x: f64x2) -> i32;
[01:33:59] 
[01:33:59] thread '/checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0440 (line 7197)' panicked at 'couldn't compile the test', src/librustdoc/test.rs:321:13
[01:33:59] 
[01:33:59] ---- /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0441 (line 7231) stdout ----
[01:33:59] ---- /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0441 (line 7231) stdout ----
[01:33:59] warning: type `i16x8` should have a camel case name such as `I16x8`
[01:33:59]  --> /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md:7236:1
[01:33:59]   |
[01:33:59] 7 | struct i16x8(i16, i16, i16, i16, i16, i16, i16, i16);
[01:33:59]   |
[01:33:59]   = note: #[warn(non_camel_case_types)] on by default
[01:33:59] 
[01:33:59] 
[01:33:59] error[E0441]: unrecognized platform-specific intrinsic function: `x86_mm_adds_epi16`
[01:33:59]   --> /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md:7239:5
[01:33:59]    |
[01:33:59] 10 |     fn x86_mm_adds_epi16(x: i16x8, y: i16x8) -> i16x8; // ok!
[01:33:59] 
[01:33:59] thread '/checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0441 (line 7231)' panicked at 'couldn't compile the test', src/librustdoc/test.rs:321:13
[01:33:59] 
[01:33:59] ---- /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0442 (line 7269) stdout ----
[01:33:59] ---- /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0442 (line 7269) stdout ----
[01:33:59] warning: type `i16x8` should have a camel case name such as `I16x8`
[01:33:59]  --> /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md:7274:1
[01:33:59]   |
[01:33:59] 7 | struct i16x8(i16, i16, i16, i16, i16, i16, i16, i16);
[01:33:59]   |
[01:33:59]   = note: #[warn(non_camel_case_types)] on by default
[01:33:59] 
[01:33:59] 
[01:33:59] error[E0441]: unrecognized platform-specific intrinsic function: `x86_mm_adds_epi16`
[01:33:59]   --> /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md:7277:5
[01:33:59]    |
[01:33:59] 10 |     fn x86_mm_adds_epi16(x: i16x8, y: i16x8) -> i16x8; // ok!
[01:33:59] 
[01:33:59] thread '/checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0442 (line 7269)' panicked at 'couldn't compile the test', src/librustdoc/test.rs:321:13
[01:33:59] 
[01:33:59] ---- /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0442 (line 7248) stdout ----
[01:33:59] ---- /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0442 (line 7248) stdout ----
[01:33:59] warning: type `i8x16` should have a camel case name such as `I8x16`
[01:33:59]  --> /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md:7253:1
[01:33:59]   |
[01:33:59] 7 | / struct i8x16(i8, i8, i8, i8, i8, i8, i8, i8,
[01:33:59] 8 | |              i8, i8, i8, i8, i8, i8, i8, i8);
[01:33:59]   |
[01:33:59]   = note: #[warn(non_camel_case_types)] on by default
[01:33:59] 
[01:33:59] 
[01:33:59] warning: type `i32x4` should have a camel case name such as `I32x4`
[01:33:59]   --> /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md:7256:1
[01:33:59]    |
[01:33:59] 10 | struct i32x4(i32, i32, i32, i32);
[01:33:59] 
[01:33:59] 
[01:33:59] warning: type `i64x2` should have a camel case name such as `I64x2`
[01:33:59]   --> /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md:7258:1
[01:33:59]    |
[01:33:59] 12 | struct i64x2(i64, i64);
[01:33:59] 
[01:33:59] 
[01:33:59] error[E0441]: unrecognized platform-specific intrinsic function: `x86_mm_adds_epi16`
[01:33:59]   --> /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md:7261:5
[01:33:59]    |
[01:33:59] 15 |     fn x86_mm_adds_epi16(x: i8x16, y: i32x4) -> i64x2;
[01:33:59] 
[01:33:59] 
[01:33:59] thread '/checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0442 (line 7248)' panicked at 'Some expected error codes were not found: ["E0442"]', src/librustdoc/test.rs:326:9
[01:33:59] ---- /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0443 (line 7304) stdout ----
[01:33:59] ---- /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0443 (line 7304) stdout ----
[01:33:59] warning: type `i16x8` should have a camel case name such as `I16x8`
[01:33:59]  --> /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md:7309:1
[01:33:59]   |
[01:33:59] 7 | struct i16x8(i16, i16, i16, i16, i16, i16, i16, i16);
[01:33:59]   |
[01:33:59]   = note: #[warn(non_camel_case_types)] on by default
[01:33:59] 
[01:33:59] 
[01:33:59] error[E0441]: unrecognized platform-specific intrinsic function: `x86_mm_adds_epi16`
[01:33:59]   --> /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md:7312:5
[01:33:59]    |
[01:33:59] 10 |     fn x86_mm_adds_epi16(x: i16x8, y: i16x8) -> i16x8; // ok!
[01:33:59] 
[01:33:59] thread '/checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0443 (line 7304)' panicked at 'couldn't compile the test', src/librustdoc/test.rs:321:13
[01:33:59] 
[01:33:59] ---- /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0443 (line 7286) stdout ----
[01:33:59] ---- /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0443 (line 7286) stdout ----
[01:33:59] warning: type `i16x8` should have a camel case name such as `I16x8`
[01:33:59]  --> /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md:7291:1
[01:33:59]   |
[01:33:59] 7 | struct i16x8(i16, i16, i16, i16, i16, i16, i16, i16);
[01:33:59]   |
[01:33:59]   = note: #[warn(non_camel_case_types)] on by default
[01:33:59] 
[01:33:59] 
[01:33:59] warning: type `i64x8` should have a camel case name such as `I64x8`
[01:33:59]  --> /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md:7293:1
[01:33:59]   |
[01:33:59] 9 | struct i64x8(i64, i64, i64, i64, i64, i64, i64, i64);
[01:33:59] 
[01:33:59] 
[01:33:59] error[E0441]: unrecognized platform-specific intrinsic function: `x86_mm_adds_epi16`
[01:33:59]   --> /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md:7296:5
[01:33:59]    |
[01:33:59] 12 |     fn x86_mm_adds_epi16(x: i16x8, y: i16x8) -> i64x8;
[01:33:59] 
[01:33:59] 
[01:33:59] thread '/checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0443 (line 7286)' panicked at 'Some expected error codes were not found: ["E0443"]', src/librustdoc/test.rs:326:9
[01:33:59] ---- /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0444 (line 7321) stdout ----
[01:33:59] ---- /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0444 (line 7321) stdout ----
[01:33:59] warning: type `f64x2` should have a camel case name such as `F64x2`
[01:33:59]  --> /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md:7326:1
[01:33:59]   |
[01:33:59] 7 | struct f64x2(f64, f64);
[01:33:59]   |
[01:33:59]   = note: #[warn(non_camel_case_types)] on by default
[01:33:59] 
[01:33:59] 
[01:33:59] error[E0441]: unrecognized platform-specific intrinsic function: `x86_mm_movemask_pd`
[01:33:59]   --> /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md:7329:5
[01:33:59]    |
[01:33:59] 10 |     fn x86_mm_movemask_pd(x: f64x2, y: f64x2, z: f64x2) -> i32;
[01:33:59] 
[01:33:59] 
[01:33:59] thread '/checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0444 (line 7321)' panicked at 'Some expected error codes were not found: ["E0444"]', src/librustdoc/test.rs:326:9
[01:33:59] ---- /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0444 (line 7337) stdout ----
[01:33:59] ---- /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0444 (line 7337) stdout ----
[01:33:59] warning: type `f64x2` should have a camel case name such as `F64x2`
[01:33:59]  --> /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md:7342:1
[01:33:59]   |
[01:33:59] 7 | struct f64x2(f64, f64);
[01:33:59]   |
[01:33:59]   = note: #[warn(non_camel_case_types)] on by default
[01:33:59] 
[01:33:59] 
[01:33:59] error[E0441]: unrecognized platform-specific intrinsic function: `x86_mm_movemask_pd`
[01:33:59]   --> /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md:7345:5
[01:33:59]    |
[01:33:59] 10 |     fn x86_mm_movemask_pd(x: f64x2) -> i32; // ok!
[01:33:59] 
[01:33:59] thread '/checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0444 (line 7337)' panicked at 'couldn't compile the test', src/librustdoc/test.rs:321:13
[01:33:59] 
[01:33:59] 
---
[01:33:59] 
[01:33:59] 
[01:33:59] failed to run: /checkout/obj/build/bootstrap/debug/bootstrap test
[01:33:59] Build completed unsuccessfully in 0:38:01
[01:33:59] Makefile:48: recipe for target 'check' failed
[01:33:59] make: *** [check] Error 1
134116 ./obj/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps
127404 ./obj/build/x86_64-unknown-linux-gnu/stage0-bootstrap-tools/x86_64-unknown-linux-gnu
127400 ./obj/build/x86_64-unknown-linux-gnu/stage0-bootstrap-tools/x86_64-unknown-linux-gnu/release
124452 ./obj/build/x86_64-unknown-linux-gnu/stage0-bootstrap-tools/x86_64-unknown-linux-gnu/release/deps

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

@alexcrichton
Copy link
Member Author

@bors: r=nagisa

@bors
Copy link
Contributor

bors commented Jan 7, 2019

📌 Commit f00f9ebe8e12c68de01ed83fa06224ca9007b81c has been approved by nagisa

@bors
Copy link
Contributor

bors commented Jan 10, 2019

🔒 Merge conflict

This pull request and the master branch diverged in a way that cannot be automatically merged. Please rebase on top of the latest master branch, and let the reviewer approve again.

How do I rebase?

Assuming self is your fork and upstream is this repository, you can resolve the conflict following these steps:

  1. git checkout remove-platform-intrinsics (switch to your branch)
  2. git fetch upstream master (retrieve the latest master)
  3. git rebase upstream/master -p (rebase on top of it)
  4. Follow the on-screen instruction to resolve conflicts (check git status if you got lost).
  5. git push self remove-platform-intrinsics --force-with-lease (update this PR)

You may also read Git Rebasing to Resolve Conflicts by Drew Blessing for a short tutorial.

Please avoid the "Resolve conflicts" button on GitHub. It uses git merge instead of git rebase which makes the PR commit history more difficult to read.

Sometimes step 4 will complete without asking for resolution. This is usually due to difference between how Cargo.lock conflict is handled during merge and rebase. This is normal, and you should still perform step 5 to update this PR.

Error message
warning: Failed to merge submodule src/stdsimd (not checked out)
warning: Cannot merge binary files: Cargo.lock (HEAD vs. heads/homu-tmp)
Removing src/test/ui/simd-intrinsic/simd-intrinsic-single-nominal-type.stderr
Removing src/test/ui/simd-intrinsic/simd-intrinsic-single-nominal-type.rs
Removing src/test/ui/simd-intrinsic/simd-intrinsic-declaration-type.stderr
Removing src/test/ui/simd-intrinsic/simd-intrinsic-declaration-type.rs
Removing src/test/ui/platform-intrinsic-params.stderr
Removing src/test/ui/platform-intrinsic-params.rs
Removing src/test/ui/intrinsic-invalid-number-of-arguments.stderr
Removing src/test/ui/intrinsic-invalid-number-of-arguments.rs
Removing src/test/ui/error-codes/E0444.stderr
Removing src/test/ui/error-codes/E0444.rs
Removing src/test/ui/error-codes/E0443.stderr
Removing src/test/ui/error-codes/E0443.rs
Removing src/test/ui/error-codes/E0442.stderr
Removing src/test/ui/error-codes/E0442.rs
Removing src/test/ui/error-codes/E0441.stderr
Removing src/test/ui/error-codes/E0441.rs
Removing src/test/ui/error-codes/E0440.stderr
Removing src/test/ui/error-codes/E0440.rs
Removing src/test/run-pass/simd/simd-upgraded.rs
Auto-merging src/stdsimd
CONFLICT (submodule): Merge conflict in src/stdsimd
Removing src/librustc_platform_intrinsics/x86.rs
Removing src/librustc_platform_intrinsics/powerpc.rs
Removing src/librustc_platform_intrinsics/nvptx.rs
Removing src/librustc_platform_intrinsics/lib.rs
Removing src/librustc_platform_intrinsics/hexagon.rs
Removing src/librustc_platform_intrinsics/arm.rs
Removing src/librustc_platform_intrinsics/aarch64.rs
Removing src/librustc_platform_intrinsics/Cargo.toml
Removing src/etc/platform-intrinsics/x86/tbm.json
Removing src/etc/platform-intrinsics/x86/ssse3.json
Removing src/etc/platform-intrinsics/x86/sse42.json
Removing src/etc/platform-intrinsics/x86/sse41.json
Removing src/etc/platform-intrinsics/x86/sse3.json
Removing src/etc/platform-intrinsics/x86/sse2.json
Removing src/etc/platform-intrinsics/x86/sse.json
Removing src/etc/platform-intrinsics/x86/rdseed.json
Removing src/etc/platform-intrinsics/x86/rdrand.json
Removing src/etc/platform-intrinsics/x86/info.json
Removing src/etc/platform-intrinsics/x86/fma.json
Removing src/etc/platform-intrinsics/x86/bmi2.json
Removing src/etc/platform-intrinsics/x86/bmi.json
Removing src/etc/platform-intrinsics/x86/avx2.json
Removing src/etc/platform-intrinsics/x86/avx.json
Removing src/etc/platform-intrinsics/powerpc.json
Removing src/etc/platform-intrinsics/nvptx/sreg.json
Removing src/etc/platform-intrinsics/nvptx/info.json
Removing src/etc/platform-intrinsics/nvptx/cuda.json
Removing src/etc/platform-intrinsics/hexagon/hvx_v60.json
Removing src/etc/platform-intrinsics/generator.py
Removing src/etc/platform-intrinsics/arm.json
Removing src/etc/platform-intrinsics/aarch64.json
Auto-merging Cargo.lock
CONFLICT (content): Merge conflict in Cargo.lock
Automatic merge failed; fix conflicts and then commit the result.

@bors bors added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Jan 10, 2019
@alexcrichton
Copy link
Member Author

@bors: r=nagisa

@bors
Copy link
Contributor

bors commented Jan 10, 2019

📌 Commit 3ddfdb8a5d8c1fc1b96c24d850d4890c1f354b14 has been approved by nagisa

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Jan 10, 2019
@bors
Copy link
Contributor

bors commented Jan 13, 2019

☔ The latest upstream changes (presumably #51487) made this pull request unmergeable. Please resolve the merge conflicts.

@bors bors added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Jan 13, 2019
This was originally attempted in rust-lang#57048 but it was realized that we
could fully remove the crate via the `"unadjusted"` ABI on intrinsics.
This means that all intrinsics in stdsimd are implemented directly
against LLVM rather than using the abstraction layer provided here. That
ends up meaning that this crate is no longer used at all.

This crate developed long ago to implement the SIMD intrinsics, but we
didn't end up using it in the long run. In that case let's remove it!
@alexcrichton
Copy link
Member Author

@bors: r=nagisa

@bors
Copy link
Contributor

bors commented Jan 14, 2019

📌 Commit 7616daa has been approved by nagisa

@bors bors removed the S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. label Jan 14, 2019
@bors
Copy link
Contributor

bors commented Jan 16, 2019

⌛ Testing commit 7616daa with merge 2b32ed1289c57a3bb1516c6afbba868a066adbce...

@alexcrichton
Copy link
Member Author

@bors: retry

@bors
Copy link
Contributor

bors commented Jan 16, 2019

⌛ Testing commit 7616daa with merge 99dbd8b6c7131e112a93f6aa5514d5dce481d89e...

@bors
Copy link
Contributor

bors commented Jan 16, 2019

💔 Test failed - status-appveyor

@bors bors added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Jan 16, 2019
@alexcrichton
Copy link
Member Author

@bors: retry

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jan 16, 2019
@bors
Copy link
Contributor

bors commented Jan 16, 2019

⌛ Testing commit 7616daa with merge 7077898d88b9a69ffd3e56497a677a9b489ca5ff...

@kennytm

This comment has been minimized.

@Centril

This comment has been minimized.

@kennytm

This comment has been minimized.

@bors
Copy link
Contributor

bors commented Jan 16, 2019

⌛ Testing commit 7616daa with merge cccaf9a...

bors added a commit that referenced this pull request Jan 16, 2019
rustc: Remove platform intrinsics crate

This was originally attempted in #57048 but it was realized that we
could fully remove the crate via the `"unadjusted"` ABI on intrinsics.
This means that all intrinsics in stdsimd are implemented directly
against LLVM rather than using the abstraction layer provided here. That
ends up meaning that this crate is no longer used at all.

This crate developed long ago to implement the SIMD intrinsics, but we
didn't end up using it in the long run. In that case let's remove it!
@bors
Copy link
Contributor

bors commented Jan 16, 2019

☀️ Test successful - checks-travis, status-appveyor
Approved by: nagisa
Pushing cccaf9a to master...

@eddyb
Copy link
Member

eddyb commented Jan 30, 2019

It's really sad to me that we've made this step backwards from a somewhat-declarative notion of platform intrinsics to hardcoding LLVM's particular interface to them.

stdsimd should have never been developed out-of-tree, the only reason it had to be reflects major issues with the general development process of the Rust project, particularly its (low) speed, in both local builds and merging changes. Some are alleviated by incremental compilation, but it's overall still quite suboptimal.

RLS, to some extent, also suffers from similar effects, but it doesn't directly feed back into the language itself, like stdsimd does, so its main impact is on the compiler architecture (or lack thereof).

cc @rust-lang/compiler @rust-lang/core
What is the best venue to discuss such large-scale process issues and develop policies regarding approaches to solving problems that span the library/compiler/backend stack?
We should at least put this on the All Hands agenda.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants