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: Rewrite platform intrinsics crate #57048

Closed

Conversation

alexcrichton
Copy link
Member

This commit rewrites (updates) the rustc_platform_intrinsics crate
in this repository. This crate was previously procedurally generated
from a number of JSON files and was intended to be the basis for how we
bind SIMD in Rust. This crate is quite old at this point and is actually
only used very little. The stdsimd crate and std::arch modules are
the "new" way for stabilizing SIMD intrinsics.

Despite this, however, the crate isn't useless! Most LLVM intrinsics are
called directly in the stdsimd crate using the link_llvm_intrinsics
feature, but not all intrinsics can be expressed directly in Rust.
Instead some intrinsics, notably those that return LLVM aggregates, need
to be compiler-defined to ensure they're declared with the correct
signature.

A good example of this is the x86 rdrand/rdseed family of LLVM
intrinsics, all of which return an aggregate of some form. The stdsimd
functions which provide these x86 intrinsics link to functions defined
by this crate, so we need to keep those!

Adding all that together, this commit performs the following tasks:

  • Deletes the now-outdated src/etc/platform-intrinsics infrastructure
  • Deletes all src/librustc_platform_intrinsics/* intrinsics that are
    otherwise compatible to be defined in Rust itself. This includes
    everything that doesn't deal with aggregates basically. Empty
    architecture files are removed.
  • The style of src/librustc_platform_intrinsics/ was updated slightly
    to make it a bit easier to handwrite. The x86 rdrand/rdseed
    intrinsics and some aarch64 intrinsics which return aggregates have
    all survived to continue to be defined by this crate.

Closes #41885

This commit rewrites (updates) the `rustc_platform_intrinsics` crate
in this repository. This crate was previously procedurally generated
from a number of JSON files and was intended to be the basis for how we
bind SIMD in Rust. This crate is quite old at this point and is actually
only used very little. The `stdsimd` crate and `std::arch` modules are
the "new" way for stabilizing SIMD intrinsics.

Despite this, however, the crate isn't useless! Most LLVM intrinsics are
called directly in the `stdsimd` crate using the `link_llvm_intrinsics`
feature, but not all intrinsics can be expressed directly in Rust.
Instead some intrinsics, notably those that return LLVM aggregates, need
to be compiler-defined to ensure they're declared with the correct
signature.

A good example of this is the x86 rdrand/rdseed family of LLVM
intrinsics, all of which return an aggregate of some form. The stdsimd
functions which provide these x86 intrinsics link to functions defined
by this crate, so we need to keep those!

Adding all that together, this commit performs the following tasks:

* Deletes the now-outdated `src/etc/platform-intrinsics` infrastructure
* Deletes all `src/librustc_platform_intrinsics/*` intrinsics that are
  otherwise compatible to be defined in Rust itself. This includes
  everything that doesn't deal with aggregates basically. Empty
  architecture files are removed.
* The style of `src/librustc_platform_intrinsics/` was updated slightly
  to make it a bit easier to handwrite. The `x86` rdrand/rdseed
  intrinsics and some `aarch64` intrinsics which return aggregates have
  all survived to continue to be defined by this crate.

Closes rust-lang#41885
@rust-highfive
Copy link
Collaborator

r? @varkor

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

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Dec 21, 2018
@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:06a3a6c8:start=1545412693253990473,finish=1545412755950567688,duration=62696577215
$ 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
---

[00:03:00] travis_fold:start:tidy
travis_time:start:tidy
tidy check
[00:03:00] tidy error: /checkout/src/librustc_platform_intrinsics/nvptx.rs: empty file
[00:03:02] some tidy checks failed
[00:03:02] 
[00:03:02] 
[00:03:02] command did not execute successfully: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-tools-bin/tidy" "/checkout/src" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0/bin/cargo" "--no-vendor" "--quiet"
[00:03:02] 
[00:03:02] 
[00:03:02] failed to run: /checkout/obj/build/bootstrap/debug/bootstrap test src/tools/tidy
[00:03:02] Build completed unsuccessfully in 0:00:44
[00:03:02] Build completed unsuccessfully in 0:00:44
[00:03:02] make: *** [tidy] Error 1
[00:03:02] Makefile:79: recipe for target 'tidy' failed
The command "stamp sh -x -c "$RUN_SCRIPT"" exited with 2.
travis_time:start:030a2948
$ date && (curl -fs --head https://google.com | grep ^Date: | sed 's/Date: //g' || true)
Fri Dec 21 17:22:27 UTC 2018
---
travis_time:end:057f261c:start=1545412947939345194,finish=1545412947944474525,duration=5129331
travis_fold:end:after_failure.3
travis_fold:start:after_failure.4
travis_time:start:0f073c56
$ ln -s . checkout && for CORE in obj/cores/core.*; do EXE=$(echo $CORE | sed 's|obj/cores/core\.[0-9]*\.!checkout!\(.*\)|\1|;y|!|/|'); if [ -f "$EXE" ]; then printf travis_fold":start:crashlog\n\033[31;1m%s\033[0m\n" "$CORE"; gdb --batch -q -c "$CORE" "$EXE" -iex 'set auto-load off' -iex 'dir src/' -iex 'set sysroot .' -ex bt -ex q; echo travis_fold":"end:crashlog; fi; done || true
travis_fold:end:after_failure.4
travis_fold:start:after_failure.5
travis_time:start:03ac2e04
travis_time:start:03ac2e04
$ cat ./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers || true
cat: ./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers: No such file or directory
travis_fold:end:after_failure.5
travis_fold:start:after_failure.6
travis_time:start:01d764c6
$ dmesg | grep -i kill

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)

@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:2ce92a6a:start=1545413630882355772,finish=1545413685513722042,duration=54631366270
$ 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
---
[00:56:41] ......i...............i............................................................................. 900/5192
[00:56:44] ..............................iiiii................................................................. 1000/5192
[00:56:47] .................................................................................................... 1100/5192
[00:56:49] .................................................................................................... 1200/5192
[00:56:51] .........F.FFF...................................................................................... 1300/5192
[00:56:56] .................................................................................................... 1500/5192
[00:56:59] ................................i................................................................... 1600/5192
[00:57:02] .i.................................................................................................. 1700/5192
[00:57:02] .i.................................................................................................. 1700/5192
[00:57:05] ........................................................................................F........... 1800/5192
[00:57:12] ............................................i....................................................... 2000/5192
[00:57:15] .................................................................................................... 2100/5192
[00:57:19] .................................................................................................... 2200/5192
[00:57:23] .................................................................................................... 2300/5192
---
[00:58:07] ..........................................ii........................................................ 3600/5192
[00:58:09] ............................................................i....................................... 3700/5192
[00:58:11] .................................................................................................... 3800/5192
[00:58:12] ................i................................................................................... 3900/5192
[00:58:15] ...........................................F........................................................ 4000/5192
[00:58:27] .................................................................................................... 4200/5192
[00:58:30] .................................................................................................... 4300/5192
[00:58:34] .......................................................i............................................ 4400/5192
[00:58:40] .................................................................................................... 4500/5192
[00:58:40] .................................................................................................... 4500/5192
[00:58:43] ......F....F........................................................................................ 4600/5192
[00:58:50] .................................................................................................... 4800/5192
[00:58:53] .................................................................................................... 4900/5192
[00:58:56] .................................................................................................... 5000/5192
[00:58:59] .................................................................................................... 5100/5192
[00:58:59] .................................................................................................... 5100/5192
[00:59:01] ...............................i............................................................
[00:59:01] failures:
[00:59:01] 
[00:59:01] ---- [ui] ui/error-codes/E0440.rs stdout ----
[00:59:01] diff of stderr:
[00:59:01] 
[00:59:01] - error[E0440]: platform-specific intrinsic has wrong number of type parameters: found 1, expected 0
[00:59:01] + error[E0441]: unrecognized platform-specific intrinsic function: `x86_mm_movemask_pd`
[00:59:01] 2   --> $DIR/E0440.rs:18:5
[00:59:01] 3    |
[00:59:01] 4 LL |     fn x86_mm_movemask_pd<T>(x: f64x2) -> i32; //~ ERROR E0440
[00:59:01] 6 
[00:59:01] 6 
[00:59:01] 7 error: amessage":"For more information about this error, try `rustc --explain E0441`.","code":null,"level":"","spans":[],"children":[],"rendered":"For more information about this error, try `rustc --explain E0441`.\n"}
[00:59:01] ------------------------------------------
[00:59:01] 
[00:59:01] thread '[ui] ui/error-codes/E0440.rs' panicked at 'explicit panic', src/tools/compiletest/src/runtest.rs:3255:9
[00:59:01] note: Run with `RUST_BACKTRACE=1` for a backtrace.
[00:59:01] note: Run with `RUST_BACKTRACE=1` for a backtrace.
[00:59:01] 
[00:59:01] ---- [ui] ui/error-codes/E0442.rs stdout ----
[00:59:01] diff of stderr:
[00:59:01] 
[00:59:01] - error[E0442]: intrinsic argument 1 has wrong type: found vector with length 16, expected length 8
[00:59:01] + error[E0441]: unrecognized platform-specific intrinsic function: `x86_mm_adds_epi16`
[00:59:01] 2   --> $DIR/E0442.rs:23:5
[00:59:01] 3    |
[00:59:01] 4 LL |     fn x86_mm_adds_epi16(x: i8x16, y: i32x4) -> i64x2;
[00:59:01] 5    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[00:59:01] 6 
[00:59:01] 6 
[00:59:01] - error[E0442]: intrinsic argument 2 has wrong type: found vector with length 4, expected length 8
[00:59:01] -   --> $DIR/E0442.rs:23:5
[00:59:01] -    |
[00:59:01] - LL |     fn x86_mm_adds_epi16(x: i8x16, y: i32x4) -> i64x2;
[00:59:01] + error: aborting due to previous error
[00:59:01] 12 
[00:59:01] 12 
[00:59:01] - error[E0442]: intrinsic return value has wrong type: found vector with length 2, expected length 8
[00:59:01] -   --> $DIR/E0442.rs:23:5
[00:59:01] -    |
[00:59:01] - LL |     fn x86_mm_adds_epi16(x: i8x16, y: i32x4) -> i64x2;
[00:59:01] - 
[00:59:01] - error: aborting due to 3 previous errors
[00:59:01] - 
[00:59:01] - For more information about this error, try `rustc --explain E0442`.
[00:59:01] - For more information about this error, try `rustc --explain E0442`.
[00:59:01] + For more information about this error, try `rustc --explain E0441`.
[00:59:01] 22 
[00:59:01] 
[00:59:01] 
[00:59:01] The actual stderr differed from the expected stderr.
[00:59:01] Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/error-codes/E0442/E0442.stderr
[00:59:01] To update references, rerun the tests and pass the `--bless` flag
[00:59:01] To only update this specific test, also pass `--test-args error-codes/E0442.rs`
[00:59:01] error: 1 errors occurred comparing output.
[00:59:01] status: exit code: 1
[00:59:01] status: exit code: 1
[00:59:01] command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/src/test/ui/error-codes/E0442.rs" "--target=x86_64-unknown-linux-gnu" "--error-format" "json" "-Zui-testing" "-C" "prefer-dynamic" "-o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/error-codes/E0442/a" "-Crpath" "-O" "-Zunstable-options" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/error-codes/E0442/auxiliary" "-A" "unused"
[00:59:01] ------------------------------------------
[00:59:01] 
[00:59:01] ------------------------------------------
[00:59:01] stderr:
[00:59:01] stderr:
[00:59:01] ------------------------------------------
[00:59:01] {"message":"unrecognized platform-specific intrinsic function: `x86_mm_adds_epi16`","code":{"code":"E0441","explanation":"\nAn unknown platform-specific intrinsic function was used. Erroneous\ncode example:\n\n```compile_fail,E0441\n#![feature(repr_simd)]\n#![feature(platform_intrinsics)]\n\n#[repr(simd)]\nstruct i16x8(i16, i16, i16, i16, i16, i16, i16, i16);\n\nextern \"platform-intrinsic\" {\n    fn x86_mm_adds_ep16(x: i16x8, y: i16x8) -> i16x8;\n    // error: unrecognized platform-specific intrinsic function\n}\n```\n\nPlease verify that the function name wasn't misspelled, and ensure\nthat it is declared in the rust source code (in the file\nsrc/librustc_platform_intrinsics/x86.rs). Example:\n\n```\n#![feature(repr_simd)]\n#![feature(platform_intrinsics)]\n\n#[repr(simd)]\nstruct i16x8(i16, i16, i16, i16, i16, i16, i16, i16);\n\nextern \"platform-intrinsic\" {\n    fn x86_mm_adds_epi16(x: i16x8, y: i16x8) -> i16x8; // ok!\n}\n```\n"},"level":"error","spans":[{"file_name":"/checkout/src/test/ui/error-codes/E0442.rs","byte_start":750,"byte_end":800,"line_start":23,"line_end":23,"column_start":5,"column_end":55,"is_primary":true,"text":[{"text":"    fn x86_mm_adds_epi16(x: i8x16, y: i32x4) -> i64x2;","highlight_start":5,"highlight_end":55}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"error[E0441]: unrecognized platform-specific intrinsic function: `x86_mm_adds_epi16`\n  --> /checkout/src/test/ui/error-codes/E0442.rs:23:5\n   |\nLL |     fn x86_mm_adds_epi16(x: i8x16, y: i32x4) -> i64x2;\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:59:01] {"message":"aborting due to previous error","code"ecific test, also pass `--test-args error-codes/E0443.rs`
[00:59:01] error: 1 errors occurred comparing output.
[00:59:01] status: exit code: 1
[00:59:01] status: exit code: 1
[00:59:01] command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/src/test/ui/error-codes/E0443.rs" "--target=x86_64-unknown-linux-gnu" "--error-format" "json" "-Zui-testing" "-C" "prefer-dynamic" "-o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/error-codes/E0443/a" "-Crpath" "-O" "-Zunstable-options" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/error-codes/E0443/auxiliary" "-A" "unused"
[00:59:01] ------------------------------------------
[00:59:01] 
[00:59:01] ------------------------------------------
[00:59:01] stderr:
[00:59:01] stderr:
[00:59:01] ------------------------------------------
[00:59:01] {"message":"unrecognized platform-specific intrinsic function: `x86_mm_adds_epi16`","code":{"code":"E0441","explanation":"\nAn unknown platform-specific intrinsic function was used. Erroneous\ncode example:\n\n```compile_fail,E0441\n#![feature(repr_simd)]\n#![feature(platform_intrinsics)]\n\n#[repr(simd)]\nstruct i16x8(i16, i16, i16, i16, i16, i16, i16, i16);\n\nextern \"platform-intrinsic\" {\n    fn x86_mm_adds_ep16(x: i16x8, y: i16x8) -> i16x8;\n    // error: unrecognized platform-specific intrinsic function\n}\n```\n\nPlease verify that the function name wasn't misspelled, and ensure\nthat it is declared in the rust source code (in the file\nsrc/librustc_platform_intrinsics/x86.rs). Example:\n\n```\n#![feature(repr_simd)]\n#![feature(platform_intrinsics)]\n\n#[repr(simd)]\nstruct i16x8(i16, i16, i16, i16, i16, i16, i16, i16);\n\nextern \"platform-intrinsic\" {\n    fn x86_mm_adds_epi16(x: i16x8, y: i16x8) -> i16x8; // ok!\n}\n```\n"},"level":"error","spans":[{"file_name":"/checkout/src/test/ui/error-codes/E0443.rs","byte_start":695,"byte_end":745,"line_start":20,"line_end":20,"column_start":5,"column_end":55,"is_primary":true,"text":[{"text":"    fn x86_mm_adds_epi16(x: i16x8, y: i16x8) -> i64x8; //~ ERROR E0443","highlight_start":5,"highlight_end":55}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"error[E0441]: unrecognized platform-specific intrinsic function: `x86_mm_adds_epi16`\n  --> /checkout/src/test/ui/error-codes/E0443.rs:20:5\n   |\nLL |     fn x86_mm_adds_epi16(x: i16x8, y: i16x8) -> i64x8; //~ ERROR E0443\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:59:01] {"message":"aborting due to previous error","code":null,"level":"error","spans":[],"children":[],"rendered":"error: aborting due to previous error\n\n"}
[00:59:01] {"message":"For more information about this error, try `rustc --explain E0441`.","code":null,"level":"","spans":[],"children":[],"rendered":"For more information about this error, try `rustc --explain E0441`.\n"}
[00:59:01] ------------------------------------------
[00:59:01] 
[00:59:01] thread '[ui] ui/error-codes/E0443.rs' panicked at 'explicit panic', src/tools/compiletest/src/runtest.rs:3255:9
[00:59:01] 
[00:59:01] 
[00:59:01] ---- [ui] ui/error-codes/E0444.rs stdout ----
[00:59:01] diff of stderr:
[00:59:01] 
[00:59:01] - error[E0444]: platform-specific intrinsic has invalid number of arguments: found 3, expected 1
[00:59:01] + error[E0441]: unrecognized platform-specific intrinsic function: `x86_mm_movemask_pd`
[00:59:01] 2   --> $DIR/E0444.rs:18:5
[00:59:01] 3    |
[00:59:01] 4 LL |     fn x86_mm_movemask_pd(x: f64x2, y: f64x2, z: f64x2) -> i32; //~ ERROR E0444
[00:59:01] 6 
[00:59:01] 7 error: aborting due to previous error
[00:59:01] 8 
[00:59:01] - For more information about this error, try `rustc --explain E0444`.
[00:59:01] - For more information about this error, try `rustc --explain E0444`.
[00:59:01] + For more information about this error, try `rustc --explain E0441`.
[00:59:01] 10 
[00:59:01] 
[00:59:01] 
[00:59:01] The actual stderr differed from the expected stderr.
[00:59:01] Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/error-codes/E0444/E0444.stderr
[00:59:01] To update references, rerun the tests and pass the `--bless` flag
[00:59:01] To only update this specific test, also pass `--test-args error-codes/E0444.rs`
[00:59:01] error: 1 errors occurred comparing output.
[00:59:01] status: exit code: 1
[00:59:01] status: exit code: 1
[00:59:01] command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/src/test/ui/error-codes/E0444.rs" "--target=x86_64-unknown-linux-gnu" "--error-format" "json" "-Zui-testing" "-C" "prefer-dynamic" "-o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/error-codes/E0444/a" "-Crpath" "-O" "-Zunstable-options" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/error-codes/E0444/auxiliary" "-A" "unused"
[cognized platform-specific intrinsic function: `x86_mm_movemask_pd`\n  --> /checkout/src/test/ui/error-codes/E0444.rs:18:5\n   |\nLL |     fn x86_mm_movemask_pd(x: f64x2, y: f64x2, z: f64x2) -> i32; //~ ERROR E0444\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:59:01] {"message":"aborting due to previous error","code":null,"level":"error","spans":[],"children":[],"rendered":"error: aborting due to previous error\n\n"}
[00:59:01] {"message":"For more information about this error, try `rustc --explain E0441`.","code":null,"level":"","spans":[],"children":[],"rendered":"For more information about this error, try `rustc --explain E0441`.\n"}
[00:59:01] ------------------------------------------
[00:59:01] 
[00:59:01] thread '[ui] ui/error-codes/E0444.rs' panicked at 'explicit panic', src/tools/compiletest/src/runtest.rs:3255:9
[00:59:01] 
[00:59:01] 
[00:59:01] ---- [ui] ui/intrinsic-invalid-number-of-arguments.rs stdout ----
[00:59:01] diff of stderr:
[00:59:01] 
[00:59:01] - error[E0444]: platform-specific intrinsic has invalid number of arguments: found 3, expected 1
[00:59:01] + error[E0441]: unrecognized platform-specific intrinsic function: `x86_mm_movemask_pd`
[00:59:01] 3    |
[00:59:01] 3    |
[00:59:01] 4 LL |     fn x86_mm_movemask_pd(x: f64x2, y: f64x2, z: f64x2) -> i32; //~ platform-specific intrinsic
[00:59:01] 6 
[00:59:01] 7 error: aborting due to previous error
[00:59:01] 8 
[00:59:01] - For more information about this error, try `rustc --explain E0444`.
[00:59:01] - For more information about this error, try `rustc --explain E0444`.
[00:59:01] + For more information about thi41\n#![feature(repr_simd)]\n#![feature(platform_intrinsics)]\n\n#[repr(simd)]\nstruct i16x8(i16, i16, i16, i16, i16, i16, i16, i16);\n\nextern \"platform-intrinsic\" {\n    fn x86_mm_adds_ep16(x: i16x8, y: i16x8) -> i16x8;\n    // error: unrecognized platform-specific intrinsic function\n}\n```\n\nPlease verify that the function name wasn't misspelled, and ensure\nthat it is declared in the rust source code (in the file\nsrc/librustc_platform_intrinsics/x86.rs). Example:\n\n```\n#![feature(repr_simd)]\n#![feature(platform_intrinsics)]\n\n#[repr(simd)]\nstruct i16x8(i16, i16, i16, i16, i16, i16, i16, i16);\n\nextern \"platform-intrinsic\" {\n    fn x86_mm_adds_epi16(x: i16x8, y: i16x8) -> i16x8; // ok!\n}\n```\n"},"level":"error","spans":[{"file_name":"/checkout/src/test/ui/intrinsic-invalid-number-of-arguments.rs","byte_start":681,"byte_end":740,"line_start":20,"line_end":20,"column_start":5,"column_end":64,"is_primary":true,"text":[{"text":"    fn x86_mm_movemask_pd(x: f64x2, y: f64x2, z: f64x2) -> i32; //~ platform-specific intrinsic","highlight_start":5,"highlight_end":64}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"error[E0441]: unrecognized platform-specific intrinsic function: `x86_mm_movemask_pd`\n  --> /checkout/src/test/ui/intrinsic-invalid-number-of-arguments.rs:20:5\n   |\nLL |     fn x86_mm_movemask_pd(x: f64x2, y: f64x2, z: f64x2) -> i32; //~ platform-specific intrinsic\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:59:01] {"message":"aborting due to previous error","code":null,"level":"error","spans":[], pass `--test-args platform-intrinsic-params.rs`
[00:59:01] error: 1 errors occurred comparing output.
[00:59:01] status: exit code: 1
[00:59:01] status: exit code: 1
[00:59:01] command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/src/test/ui/platform-intrinsic-params.rs" "--target=x86_64-unknown-linux-gnu" "--error-format" "json" "-Zui-testing" "-C" "prefer-dynamic" "-o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/platform-intrinsic-params/a" "-Crpath" "-O" "-Zunstable-options" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/platform-intrinsic-params/auxiliary" "-A" "unused"
[00:59:01] ------------------------------------------
[00:59:01] 
[00:59:01] ------------------------------------------
[00:59:01] stderr:
[00:59:01] stderr:
[00:59:01] ------------------------------------------
[00:59:01] {"message":"unrecognized platform-specific intrinsic function: `x86_mm_movemask_ps`","code":{"code":"E0441","explanation":"\nAn unknown platform-specific intrinsic function was used. Erroneous\ncode example:\n\n```compile_fail,E0441\n#![feature(repr_simd)]\n#![feature(platform_intrinsics)]\n\n#[repr(simd)]\nstruct i16x8(i16, i16, i16, i16, i16, i16, i16, i16);\n\nextern \"platform-intrinsic\" {\n    fn x86_mm_adds_ep16(x: i16x8, y: i16x8) -> i16x8;\n    // error: unrecognized platform-specific intrinsic function\n}\n```\n\nPlease verify that the function name wasn't misspelled, and ensure\nthat it is declared in the rust source code (in the file\nsrc/librustc_platform_intrinsics/x86.rs). Example:\n\n```\n#![featur^^^^^^^
[00:59:01] 42 
[00:59:01] - error[E0442]: intrinsic argument 2 has wrong type: found vector with length 4, expected length 8
[00:59:01] -    |
[00:59:01] -    |
[00:59:01] - LL |     fn x86_mm_adds_epi16(x: i8x16, y: i32x4) -> i64x2;
[00:59:01] - 
[00:59:01] - 
[00:59:01] - error[E0442]: intrinsic return value has wrong type: found vector with length 2, expected length 8
[00:59:01] -    |
[00:59:01] -    |
[00:59:01] - LL |     fn x86_mm_adds_epi16(x: i8x16, y: i32x4) -> i64x2;
[00:59:01] - 
[00:59:01] - 
[00:59:01] - error[E0442]: intrinsic argument 1 has wrong type: found `i32`, expected `f32`
[00:59:01] + error[E0441]: unrecognized platform-specific intrinsic function: `x86_mm_max_ps`
[00:59:01] 57    |
[00:59:01] 57    |
[00:59:01] 58 LL |     fn x86_mm_max_ps(x: i32x4, y: i32x4) -> i32x4;
[00:59:01] 59    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[00:59:01] 60 
[00:59:01] 60 
[00:59:01] - error[E0442]: intrinsic argument 2 has wrong type: found `i32`, expected `f32`
[00:59:01] -    |
[00:59:01] -    |
[00:59:01] - LL |     fn x86_mm_max_ps(x: i32x4, y: i32x4) -> i32x4;
[00:59:01] + error: aborting due to 6 previous errors
[00:59:01] 66 
[00:59:01] 66 
[00:59:01] - error[E0442]: intrinsic return value has wrong type: found `i32`, expected `f32`
[00:59:01] -    |
[00:59:01] -    |
[00:59:01] - LL |     fn x86_mm_max_ps(x: i32x4, y: i32x4) -> i32x4;
[00:59:01] - 
[00:59:01] - error: aborting due to 12 previous errors
[00:59:01] - 
[00:59:01] - For more information about this error, try `rustc --explain E0442`.
[00:59:01] - For more information about this error, try `rustc --explain E0442`.
[00:59:01] + For more information about this error, try `rustc --explain E0441`.
[00:59:01] 76 
[00:59:01] 
[00:59:01] 
[00:59:01] The actual stderr differed from the expected stderr.
[00:59:01] Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/simd-intrinsic/simd-intrinsic-declaration-type/simd-intrinsic-declaration-type.stderr
[00:59:01] To update references, rerun the tests and pass the `--bless` flag
[00:59:01] To only update this specific test, also pass `--test-args simd-intrinsic/simd-intrinsic-declaration-type.rs`
[00:59:01] error: 1 errors occurred comparing output.
[00:59:01] status: exit code: 1
[00:59:01] status: exit code: 1
[00:59:01] command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/src/test/ui/simd-intrinsic/simd-intrinsic-declaration-type.rs" "--target=x86_64-unknown-linux-gnu" "--error-format" "json" "-Zui-testing" "-C" "prefer-dynamic" "-o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/simd-intrinsic/simd-intrinsic-declaration-type/a" "-Crpath" "-O" "-Zunstable-options" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/simd-intrinsic/simd-intrinsic-declaration-type/auxiliary" "-A" "unused"
[00:59:01] ------------------------------------------
[00:59:01] 
[00:59:01] ------------------------------------------
[00:59:01] stderr:
[00:59:01] stderr:
[00:59:01] ------------------------------------------
[00:59:01] {"message":"unrecognized platform-specific intrinsic function: `x86_mm_adds_epi16`","code":{"code":"E0441","explanation":"\nAn unknown platform-specific intrinsic function was used. Erroneous\ncode example:\n\n```compile_fail,E0441\n#![feature(repr_simd)]\n#![feature(platform_intrinsics)]\n\n#[repr(simd)]\nstruct i16x8(i16, i16, i16, i16, i16, i16, i16, i16);\n\nextern \"platform-intrinsic\" {\n    fn x86_mm_adds_ep16(x: i16x8, y: i16x8) -> i16x8;\n    // error: unrecognized platform-specific intrinsic function\n}\n```\n\nPlease verify that the function name wasn't misspelled, and ensure\nthat it is declared in the rust source code (in the file\nsrc/librustc_platform_intrinsics/x86.rs). Example:\n\n```\n#![feature(repr_simd)]\n#![feature(platform_intrinsics)]\n\n#[repr(simd)]\nstruct i16x8(i16, i16, i16, i16, i16, i16, i16, i16);\n\nextern \"platform-intrinsic\" {\n    fn x86_mm_adds_epi16(x: i16x8, y: i16x8) -> i16x8; // ok!\n}\n```\n"},"level":"error","spans":[{"file_name":"/checkout/src/test/ui/simd-intrinsic/simd-intrinsic-declaration-type.rs","byte_start":999,"byte_end":1049,"line_start":32,"line_end":32,"column_start":9,"column_end":59,"is_primary":true,"text":[{"text":"        fn x86_mm_adds_epi16(x: i16x8, y: i16x8) -> i16x8;","highlight_start":9,"highlight_end":59}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"error[E0441]: unrecognized platform-specific intrinsic function: `x86_mm_adds_epi16`\n  --> /checkout/src/test/ui/simd-intrinsic/simd-intrinsic-declaration-type.rs:32:9\n   |\nLL |         fn x86_mm_adds_epi16(x: i16x8, y: i16x8) -> i16x8;\n   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:59:01] {"message":"unrecognized platform-specific intrinsic function: `x86_mm_adds_epu16`","code":{"code":"E0441","explanation":"\nAn unknown platform-specific intrinsic function was used. Erroneous\ncode example:\n\n```compile_fail,E0441\n#![feature(repr_simd)]\n#![feature(platform_intrinsics)]\n\n#[repr(simd)]\nstruct i16x8(i16, i16, i16, i16, i16, i16, i16, i16);\n\nextern \"platform-intrinsic\" {\n    fn x86_mm_adds_ep16(x: i16x8, y: i16x8) -> i16x8;\n    // error: unrecognized platform-specific intrinsic function\n}\n```\n\nPlease verify that the function name wasn't misspelled, and ensure\nthat it is declared in the rust source code (in the file\nsrc/librustc_platform_intrinsics/x86.rs). Example:\n\n```\n#![feature(repr_simd)]\n#![feature(platform_intrinsics)]\n\n#[repr(simd)]\nstruct i16x8(i16, i16, i16, i16, i16, i16, i16, i16);\n\nextern \"platform-intrinsic\" {\n    fn x86_mm_adds_epi16(x: i16x8, y: i16x8) -> i16x8; // ok!\n}\n```\n"},"level":"error","spans":[{"file_name":"/checkout/src/test/ui/simd-intrinsic/simd-intrinsic-declaration-type.rs","byte_start":1058,"byte_end":1108,"line_start":33,"line_end":33,"column_start":9,"column_end":59,"is_primary":true,"text":[{"text":"        fn x86_mm_adds_epu16(x: u16x8, y: u16x8) -> u16x8;","highlight_start":9,"highlight_end":59}],"label":npi16(x: u16x8, y: u16x8) -> u16x8;","highlight_start":9,"highlight_end":59}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"error[E0441]: unrecognized platform-specific intrinsic function: `x86_mm_adds_epi16`\n  --> /checkout/src/test/ui/simd-intrinsic/simd-intrinsic-declaration-type.rs:42:9\n   |\nLL |         fn x86_mm_adds_epi16(x: u16x8, y: u16x8) -> u16x8;\n   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:59:01] {"message":"unrecognized platform-specific intrinsic function: `x86_mm_adds_epu16`","code":{"code":"E0441","explanation":"\nAn unknown platform-specific intrinsic function was used. Erroneous\ncode example:\n\n```compile_fail,E0441\n#![feature(repr_simd)]\n#![feature(platform_intrinsics)]\n\n#[repr(simd)]\nstruct i16x8(i16, i16, i16, i16, i16, i16, i16, i16);\n\nextern \"platform-intrinsic\" {\n    fn x86_mm_adds_ep16(x: i16x8, y: i16x8) -> i16x8;\n    // error: unrecognized platform-specific intrinsic function\n}\n```\n\nPlease verify that the function name wasn't misspelled, and ensure\nthat it is declared in the rust source code (in the file\nsrc/librustc_platform_intrinsics/x86.rs). Example:\n\n```\n#![feature(repr_simd)]\n#![feature(platform_intrinsics)]\n\n#[repr(simd)]\nstruct i16x8(i16, i16, i16, i16, i16, i16, i16, i16);\n\nextern \"platform-intrinsic\" {\n    fn x86_mm_adds_epi16(x: i16x8, y: i16x8) -> i16x8; // ok!\n}\n```\n"},"level":"error","spans":[{"file_name":"/checkout/src/test/ui/simd-intrinsic/simd-intrinsic-declaration-type.rs","byte_start":1485,"byte_end":1535,"line_start":46,"line_end":46,"column_start":9,"column_end":59,"is_primary":true,"text":[{"text":"        fn x86_mm_adds_epu16(x: i16x8, y: i16x8) -> i16x8;","highlight_start":9,"highlight_end":59}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"error[E0441]: unrecognized platform-specific intrinsic function: `x86_mm_adds_epu16`\n  --> /checkout/src/test/ui/simd-intrinsic/simd-intrinsic-declaration-type.rs:46:9\n   |\nLL |         fn x86_mm_adds_epu16(x: i16x8, y: i16x8) -> i16x8;\n   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:59:01] {"message":"unrecognized platform-specific intrinsic function: `x86_mm_adds_epi16`","code":{"code":"E0441","explanation":"\nAn unknown platform-specific intrinsic function was used. Erroneous\ncode example:\n\n```compile_fail,E0441\n#![feature(repr_simd)]\n#![feature(platform_intrinsics)]\n\n#[repr(simd)]\nstruct i16x8(i16, i16, i16, i16, i16, i16, i16, i16);\n\nextern \"platform-intrinsic\" {\n    fn x86_mm_adds_ep16(x: i16x8, y: i16x8) -> i16x8;\n    // error: unrecognized platform-specific intrinsic function\n}\n```\n\nPlease verify that the function name wasn't misspelled, and ensure\nthat it is declared in the rust source code (in the file\nsrc/librustc_platform_intrinsics/x86.rs). Example:\n\n```\n#![feature(repr_simd)]\n#![feature(platform_intrinsics)]\n\n#[repr(simd)]\nstruct i16x8(i16, i16, i16, i16, i16, i16, i16, i16);\n\nextern \"platform-intrinsic\" {\n    fn x86_mm_adds_epi16(x: i16x8, y: i16x8) -> i16x8; // ok!\n}\n```\n"},"level":"error","spans":[{"file_name":"/checkout/src/test/ui/simd-intrinsic/simd-intrinsic-declaration-type.rs","byte_start":1765,"byte_end":1815,"line_start":54,"line_end":54,"column_start":5,"column_end":55,"is_primary":true,"text":[{"text":"    fn x86_mm_adds_epi16(x: i8x16, y: i32x4) -> i64x2;","highlight_start":5,"highlight_end":55}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"error[E0441]: unrecognized platform-specific intrinsic function: `x86_mm_adds_epi16`\n  --> /checkout/src/test/ui/simd-intrinsic/simd-intrinsic-declaration-type.rs:54:5\n   |\nLL |     fn x86_mm_adds_epi16(x: i8x16, y: i32x4) -> i64x2;\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:59:01] {"message":"unrecognized platform-specific intrinsic function: `x86_mm_max_ps`","code":{"code":"E0441","explanation":"\nAn unknown platform-specific intrinsic function was used. Erroneous\ncode example:\n\n```compile_fail,E0441\n#![feature(repr_simd)]\n#![feature(platform_intrinsics)]\n\n#[repr(simd)]\nstruct i16x8(i16, i16, i16, i16, i16, i16, i16, i16);\n\nextern \"platform-intrinsic\" {\n    fn x86_mm_adds_ep16(x: i16x8, y: i16x8) -> i16x8;\n    // error: unrecognized platform-specific intrinsic function\n}\n```\n\nPlease verify that the function name wasn't misspelled, and ensure\nthat it is declared in the rust source code (in the file\nsrc/librustc_platform_intrinsics/x86.rs). Example:\n\n```\n#![feature(repr_simd)]\n#![feature(platform_intrinsics)]\n\n#[repr(simd)]\nstruct i16x8(i16, i16, i16, i16, i16, i16, i16, i16);\n\nextern \"platform-intrinsic\" {\n    fn x86_mm_adds_epi16(x: i16x8, y: i16x8) -> i16x8; // ok!\n}\n```\n"},"level":"error","spans":[{00:59:01] + error[E0441]: unrecognized platform-specific intrinsic function: `x86_mm_adds_epi16`
[00:59:01] 3    |
[00:59:01] 3    |
[00:59:01] 4 LL |     fn x86_mm_adds_epi16(x: A, y: A) -> B;
[00:59:01] 5    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[00:59:01] 6 
[00:59:01] 6 
[00:59:01] - error[E0443]: intrinsic argument 2 has wrong type: found `B`, expected `A` which was used for this vector type previously in this signature
[00:59:01] + error[E0441]: unrecognized platform-specific intrinsic function: `x86_mm_subs_epi16`
[00:59:01] 9    |
[00:59:01] 9    |
[00:59:01] 10 LL |     fn x86_mm_subs_epi16(x: A, y: B) -> A;
[00:59:01] 11    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[00:59:01] 12 
[00:59:01] - error: aborting due to 2 previous errors
[00:59:01] - error: aborting due to 2 previous errors
[00:59:01] + error[E0441]: unrecognized platform-specific intrinsic function: `x86_mm_max_epi16`
[00:59:01] +   --> $DIR/simd-intrinsic-single-nominal-type.rs:29:5
[00:59:01] +    |
[00:59:01] + LL |     fn x86_mm_max_epi16(x: B, y: B) -> B;
[00:59:01] 14 
[00:59:01] - For more information about this error, try `rustc --explain E0443`.
[00:59:01] - For more information about this error, try `rustc --explain E0443`.
[00:59:01] + error[E0441]: unrecognized platform-specific intrinsic function: `x86_mm_min_epi16`
[00:59:01] +   --> $DIR/simd-intrinsic-single-nominal-type.rs:30:5
[00:59:01] +    |
[00:59:01] + LL |     fn x86_mm_min_epi16(x: A, y: A) -> A;
[00:59:01] + 
[00:59:01] + 
[00:59:01] + error: aborting due to 4 p"E0441","explanation":"\nAn unknown platform-specific intrinsic function was used. Erroneous\ncode example:\n\n```compile_fail,E0441\n#![feature(repr_simd)]\n#![feature(platform_intrinsics)]\n\n#[repr(simd)]\nstruct i16x8(i16, i16, i16, i16, i16, i16, i16, i16);\n\nextern \"platform-intrinsic\" {\n    fn x86_mm_adds_ep16(x: i16x8, y: i16x8) -> i16x8;\n    // error: unrecognized platform-specific intrinsic function\n}\n```\n\nPlease verify that the function name wasn't misspelled, and ensure\nthat it is declared in the rust source code (in the file\nsrc/librustc_platform_intrinsics/x86.rs). Example:\n\n```\n#![feature(repr_simd)]\n#![feature(platform_intrinsics)]\n\n#[repr(simd)]\nstruct i16x8(i16, i16, i16, i16, i16, i16, i16, i16);\n\nextern \"platform-intrinsic\" {\n    fn x86_mm_adds_epi16(x: i16x8, y: i16x8) -> i16x8; // ok!\n}\n```\n"},"level":"error","spans":[{"file_name":"/checkout/src/test/ui/simd-intrinsic/simd-intrinsic-single-nominal-type.rs","byte_start":873,"byte_end":911,"line_start":23,"line_end":23,"column_start":5,"column_end":43,"is_primary":true,"text":[{"text":"    fn x86_mm_adds_epi16(x: A, y: A) -> B;","highlight_start":5,"highlight_end":43}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"error[E0441]: unrecognized platform-specific intrinsic function: `x86_mm_adds_epi16`\n  --> /checkout/src/test/ui/simd-intrinsic/simd-intrinsic-single-nominal-type.rs:23:5\n   |\nLL |     fn x86_mm_adds_epi16(x: A, y: A) -> B;\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:59:01] {"message":"unrecognized platform-specific intrinsic funcrecognized platform-specific intrinsic function: `x86_mm_max_epi16`","code":{"code":"E0441","explanation":"\nAn unknown platform-specific intrinsic function was used. Erroneous\ncode example:\n\n```compile_fail,E0441\n#![feature(repr_simd)]\n#![feature(platform_intrinsics)]\n\n#[repr(simd)]\nstruct i16x8(i16, i16, i16, i16, i16, i16, i16, i16);\n\nextern \"platform-intrinsic\" {\n    fn x86_mm_adds_ep16(x: i16x8, y: i16x8) -> i16x8;\n    // error: unrecognized platform-specific intrinsic function\n}\n```\n\nPlease verify that the function name wasn't misspelled, and ensure\nthat it is declared in the rust source code (in the file\nsrc/librustc_platform_intrinsics/x86.rs). Example:\n\n```\n#![feature(repr_simd)]\n#![feature(platform_intrinsics)]\n\n#[repr(simd)]\nstruct i16x8(i16, i16, i16, i16, i16, i16, i16, i16);\n\nextern \"platform-intrinsic\" {\n    fn x86_mm_adds_epi16(x: i16x8, y: i16x8) -> i16x8; // ok!\n}\n```\n"},"level":"error","spans":[{"file_name":"/checkout/src/test/ui/simd-intrinsic/simd-intrinsic-single-nominal-type.rs","byte_start":1125,"byte_end":1162,"line_start":29,"line_end":29,"column_start":5,"column_end":42,"is_primary":true,"text":[{"text":"    fn x86_mm_max_epi16(x: B, y: B) -> B;","highlight_start":5,"highlight_end":42}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"error[E0441]: unrecognized platform-specific intrinsic function: `x86_mm_max_epi16`\n  --> /checkout/src/test/ui/simd-intrinsic/simd-intrinsic-single-nominal-type.rs:29:5\n   |\nLL |     fn x86_mm_max_epi16(x: B, y: B) -> B;\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^travis_time:end:24da720d:start=1545413696276156963,finish=1545417238208879371,duration=3541932722408
travis_time:start:04953d83
$ date && (curl -fs --head https://google.com | grep ^Date: | sed 's/Date: //g' || true)
Fri Dec 21 18:33:58 UTC 2018
Fri, 21 Dec 2018 18:33:58 GMT

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)

@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:0d0ea7fd:start=1545420625983944096,finish=1545420699002662928,duration=73018718832
$ 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:03:59] 
[01:03:59] running 118 tests
[01:04:21] .iiiii...i.....i..i...i..i.i..i.ii..i.....i..i....i..........iiii..........i...ii...i.......ii.i.i.i 100/118
[01:04:25] ......iii.i.....ii
[01:04:25] 
[01:04:25]  finished in 26.621
[01:04:25] travis_fold:end:test_debuginfo

---
[01:29:34] 
[01:29:34] failures:
[01:29:34] 
[01:29:34] ---- /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0440 (line 7180) stdout ----
[01:29:34] error[E0441]: unrecognized platform-specific intrinsic function: `x86_mm_movemask_pd`
[01:29:34]   --> /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md:7188:5
[01:29:34]    |
[01:29:34] 10 |     fn x86_mm_movemask_pd<T>(x: f64x2) -> i32;
[01:29:34] 
[01:29:34] 
[01:29:34] thread '/checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0440 (line 7180)' panicked at 'Some expected error codes were not found: ["E0440"]', src/librustdoc/test.rs:331:9
[01:29:34] 
[01:29:34] ---- /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0440 (line 7197) stdout ----
[01:29:34] ---- /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0440 (line 7197) stdout ----
[01:29:34] error[E0441]: unrecognized platform-specific intrinsic function: `x86_mm_movemask_pd`
[01:29:34]   --> /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md:7205:5
[01:29:34]    |
[01:29:34] 10 |     fn x86_mm_movemask_pd(x: f64x2) -> i32;
[01:29:34] 
[01:29:34] 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:326:13
[01:29:34] 
[01:29:34] ---- /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0441 (line 7231) stdout ----
[01:29:34] ---- /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0441 (line 7231) stdout ----
[01:29:34] error[E0441]: unrecognized platform-specific intrinsic function: `x86_mm_adds_epi16`
[01:29:34]   --> /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md:7239:5
[01:29:34]    |
[01:29:34] 10 |     fn x86_mm_adds_epi16(x: i16x8, y: i16x8) -> i16x8; // ok!
[01:29:34] 
[01:29:34] 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:326:13
[01:29:34] 
[01:29:34] ---- /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0442 (line 7248) stdout ----
[01:29:34] ---- /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0442 (line 7248) stdout ----
[01:29:34] error[E0441]: unrecognized platform-specific intrinsic function: `x86_mm_adds_epi16`
[01:29:34]   --> /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md:7261:5
[01:29:34]    |
[01:29:34] 15 |     fn x86_mm_adds_epi16(x: i8x16, y: i32x4) -> i64x2;
[01:29:34] 
[01:29:34] 
[01:29:34] 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:331:9
[01:29:34] 
[01:29:34] ---- /checkout/oction: `x86_mm_adds_epi16`
[01:29:34]   --> /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md:7312:5
[01:29:34]    |
[01:29:34] 10 |     fn x86_mm_adds_epi16(x: i16x8, y: i16x8) -> i16x8; // ok!
[01:29:34] 
[01:29:34] 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:326:13
[01:29:34] 
[01:29:34] ---- /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0444 (line 7321) stdout ----
[01:29:34] ---- /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0444 (line 7321) stdout ----
[01:29:34] error[E0441]: unrecognized platform-specific intrinsic function: `x86_mm_movemask_pd`
[01:29:34]   --> /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md:7329:5
[01:29:34]    |
[01:29:34] 10 |     fn x86_mm_movemask_pd(x: f64x2, y: f64x2, z: f64x2) -> i32;
[01:29:34] 
[01:29:34] 
[01:29:34] 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:331:9
[01:29:34] ---- /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0444 (line 7337) stdout ----
[01:29:34] ---- /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0444 (line 7337) stdout ----
[01:29:34] error[E0441]: unrecognized platform-specific intrinsic function: `x86_mm_movemask_pd`
[01:29:34]   --> /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md:7345:5
[01:29:34]    |
[01:29:34] 10 |     fn x86_mm_movemask_pd(x: f64x2) -> i32; // ok!
[01:29:34] 
[01:29:34] 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:326:13
[01:29:34] 
[01:29:34] 
---
[01:29:34] 
[01:29:34] 
[01:29:34] failed to run: /checkout/obj/build/bootstrap/debug/bootstrap test
[01:29:34] Build completed unsuccessfully in 0:36:14
[01:29:34] make: *** [check] Error 1
[01:29:34] Makefile:58: recipe for target 'check' failed
The command "stamp sh -x -c "$RUN_SCRIPT"" exited with 2.
travis_time:start:025e539c
$ date && (curl -fs --head https://google.com | grep ^Date: | sed 's/Date: //g' || true)
Fri Dec 21 21:01:22 UTC 2018
---
travis_time:end:07820d78:start=1545426085335545838,finish=1545426085341159379,duration=5613541
travis_fold:end:after_failure.3
travis_fold:start:after_failure.4
travis_time:start:01703504
$ ln -s . checkout && for CORE in obj/cores/core.*; do EXE=$(echo $CORE | sed 's|obj/cores/core\.[0-9]*\.!checkout!\(.*\)|\1|;y|!|/|'); if [ -f "$EXE" ]; then printf travis_fold":start:crashlog\n\033[31;1m%s\033[0m\n" "$CORE"; gdb --batch -q -c "$CORE" "$EXE" -iex 'set auto-load off' -iex 'dir src/' -iex 'set sysroot .' -ex bt -ex q; echo travis_fold":"end:crashlog; fi; done || true
travis_fold:end:after_failure.4
travis_fold:start:after_failure.5
travis_time:start:3e40dfda
travis_time:start:3e40dfda
$ cat ./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers || true
cat: ./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers: No such file or directory
travis_fold:end:after_failure.5
travis_fold:start:after_failure.6
travis_time:start:0293639d
$ dmesg | grep -i kill

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)

@nagisa
Copy link
Member

nagisa commented Dec 21, 2018

A good example of this is the x86 rdrand/rdseed family of LLVM
intrinsics, all of which return an aggregate of some form. The stdsimd
functions which provide these x86 intrinsics link to functions defined
by this crate, so we need to keep those!

We can definitely make something work out here with a special ABI like the unadjusted that we introduced as an implementation detail for compiler-rt...

All of these LLVM intrinsics return aggregates, so they need to be
compiler defined!
@alexcrichton
Copy link
Member Author

@nagisa indeed! And whomever implements that will have the please of deleting this whole crate!

@Centril
Copy link
Contributor

Centril commented Dec 24, 2018

r? @nagisa

@rust-highfive rust-highfive assigned nagisa and unassigned varkor Dec 24, 2018
@nikic
Copy link
Contributor

nikic commented Dec 24, 2018

What LLVM version is this targeting? I think the used addcarry/subborrow signatures are only valid since LLVM 8, previously those used an out parameter rather than an aggregate return.

It's generally okay to keep using old signatures on new LLVM versions, because LLVM will autoupgrade them. But of course, it doesn't work the other way around ^^

@alexcrichton
Copy link
Member Author

In general all std::arch intrinsics target the LLVM used by rustc itself, and we haven't seen any requests to get compatibility with older ones. If that comes up though auto-upgrading is good to know!

@nagisa
Copy link
Member

nagisa commented Dec 24, 2018

@bors r+

Some back-story. This crate, I believe, was intended to become some sort of a public stable API for SIMD and other instructions. Since we now have decided on stdsimd approach, it seems fine to me to remove most of this crate. In fact, stdsimd could also replace uses of e.g. rdrand intrinsic with "unadjusted" (yes, it works, cc @gnzlbg) as well. Unless that happens, however, this crate cannot be removed entirely quite yet.

@bors
Copy link
Contributor

bors commented Dec 24, 2018

📌 Commit 54cfe35 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 Dec 24, 2018
@alexcrichton
Copy link
Member Author

Oh nice! If unadjusted works I'll update stdsimd to stop using platform-intrinsics and then I'll send a PR to completely delete this crate. Thanks for checking!

@alexcrichton alexcrichton deleted the remove-platform-intrinsics branch December 25, 2018 04:54
@gnzlbg
Copy link
Contributor

gnzlbg commented Dec 25, 2018 via email

@bjorn3
Copy link
Member

bjorn3 commented Dec 25, 2018

bjorn3/rustc_codegen_cranelift#171 is the conversation you mean @gnzlbg I think.

alexcrichton added a commit to alexcrichton/stdarch that referenced this pull request Jan 4, 2019
alexcrichton added a commit to alexcrichton/stdarch that referenced this pull request Jan 4, 2019
alexcrichton added a commit to rust-lang/stdarch that referenced this pull request Jan 4, 2019
@alexcrichton
Copy link
Member Author

I've reopened a new version of this at #57416

alexcrichton added a commit to alexcrichton/rust that referenced this pull request Jan 14, 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!
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!
VardhanThigle pushed a commit to jethrogb/rust that referenced this pull request Jan 31, 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!
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.

None yet

9 participants