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

Invalid bitcast error or SIGILL during compilation of portable simd mask operations #110722

Open
jhorstmann opened this issue Apr 23, 2023 · 3 comments
Labels
A-simd Area: SIMD (Single Instruction Multiple Data) C-bug Category: This is a bug. E-needs-test Call for participation: An issue has been fixed and does not reproduce, but no test has been added. PG-portable-simd Project group: Portable SIMD (https://github.com/rust-lang/project-portable-simd)

Comments

@jhorstmann
Copy link
Contributor

I updated some benchmark code using portable simd to a current nightly (which included the llvm version bump from 15 to 16) and ran into the compiler getting killed with SIGILL, or when trying to simplify the code, an LLVM error about an invalid bitcast. It is likely that the problem is inside llvm itself, but so far I was not able to reduce the code to a minimal LLVM IR example.

The initial problematic code involved gather_select_unchecked:

use std::simd::*;

pub unsafe fn gather_to_array(mask: u8, indices: &[u32; 8], data: &[u32]) -> [u32; 8] {
    let mut output = [0_u32; 8];
    let m = masksizex8::from_bitmask(mask);
    let i = u32x8::from_slice(indices);
    let g = u32x8::gather_select_unchecked(data, m, i.cast(), u32x8::splat(0));
    output.copy_from_slice(&g.to_array());
    output
}

I could later reproduce it also with casting masks between bitmask, isize and i32:

pub unsafe fn mask_to_array(mask: u8) -> [i32; 8] {
    let mut output = [0; 8];
    let m = masksizex8::from_bitmask(mask);
    output.copy_from_slice(&m.to_int().cast::<i32>().to_array());
    output
}

In compiler explorer, with arguments -C opt-level=3 -Ctarget-cpu=skx the output is the following:

Invalid bitcast
  %5 = bitcast <8 x i32> %4 to [8 x i32], !dbg !36
in function _ZN7example13mask_to_array17he21e4210be9ff5c1E
LLVM ERROR: Broken function found, compilation aborted!
Compiler returned: 101

Compiling the same function, with an added main function in the rust playground (in release mode) leads to the compiler receiving a SIGILL

pub fn main() {
    unsafe {
        let output = gather_to_array(0b1010101, &[0, 9999, 1, 9999, 2, 9999, 3, 9999], &[10, 20, 30, 40]);
        std::intrinsics::black_box(output);
    }
}

Caused by:
  process didn't exit successfully: `rustc --crate-name playground --edition=2021 src/main.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --crate-type bin --emit=dep-info,link -C opt-level=3 -C embed-bitcode=no -C codegen-units=1 -o /playground-result/compilation --emit=llvm-ir -C metadata=c7721375404840a2 -C extra-filename=-c7721375404840a2 --out-dir /playground/target/release/deps -L dependency=/playground/target/release/deps --extern addr2line=/playground/target/release/deps/libaddr2line-ace5f2bd4695e4f2.rlib --extern adler=/playground/target/release/deps/libadler-df9c652492206daf.rlib --extern ahash_0_7_6=/playground/target/release/deps/libahash-a84a465bf3dd23a6.rlib --extern ahash=/playground/target/release/deps/libahash-9d129c87ab25f9cb.rlib --extern aho_corasick_0_7_20=/playground/target/release/deps/libaho_corasick-8416f0b076829da2.rlib --extern aho_corasick=/playground/target/release/deps/libaho_corasick-f856003f520cc319.rlib --extern ansi_term=/playground/target/release/deps/libansi_term-2f6097f643ab45f5.rlib --extern anstream=/playground/target/release/deps/libanstream-a39ddbb1117a8d2c.rlib --extern anstyle=/playground/target/release/deps/libanstyle-3437d84cccbf956f.rlib --extern anstyle_parse=/playground/target/release/deps/libanstyle_parse-12c3ca6717895308.rlib --extern anstyle_query=/playground/target/release/deps/libanstyle_query-45a892cdc2c50846.rlib --extern anyhow=/playground/target/release/deps/libanyhow-b6df2db0809c54a5.rlib --extern approx=/playground/target/release/deps/libapprox-83e7003a13a4dcb8.rlib --extern arc_swap=/playground/target/release/deps/libarc_swap-b5d2d0408fe24314.rlib --extern arrayvec=/playground/target/release/deps/libarrayvec-9a4652b449c5ad85.rlib --extern async_recursion=/playground/target/release/deps/libasync_recursion-bb5312b4a854712e.so --extern async_trait=/playground/target/release/deps/libasync_trait-80454061fbf23e90.so --extern atomic=/playground/target/release/deps/libatomic-4755e60f7314b8ce.rlib --extern atty=/playground/target/release/deps/libatty-42c7edf51b37e510.rlib --extern autocfg=/playground/target/release/deps/libautocfg-eed3943f7cbe080a.rlib --extern backtrace=/playground/target/release/deps/libbacktrace-c113e2baba7f5ff1.rlib --extern base64=/playground/target/release/deps/libbase64-a88212b60a6dbe5e.rlib --extern bit_set=/playground/target/release/deps/libbit_set-89bfa81cca0a9e17.rlib --extern bit_vec=/playground/target/release/deps/libbit_vec-2e1a1faf78b84248.rlib --extern bit_field=/playground/target/release/deps/libbit_field-1cbf518aa440d6c6.rlib --extern bitflags_1_3_2=/playground/target/release/deps/libbitflags-af0aeff3661eef1e.rlib --extern bitflags=/playground/target/release/deps/libbitflags-8fdc421ed5bd50a0.rlib --extern block_buffer=/playground/target/release/deps/libblock_buffer-002bba2fb9eef782.rlib --extern bytemuck=/playground/target/release/deps/libbytemuck-d8f69d4b39afebb5.rlib --extern bytemuck_derive=/playground/target/release/deps/libbytemuck_derive-a8232703532d791d.so --extern byteorder=/playground/target/release/deps/libbyteorder-7b339b56d4e207aa.rlib --extern bytes_0_4_12=/playground/target/release/deps/libbytes-12078f743ee35a64.rlib --extern bytes=/playground/target/release/deps/libbytes-4e70d54bf1bd21db.rlib --extern cc=/playground/target/release/deps/libcc-8589188c1b5999bc.rlib --extern cfg_if=/playground/target/release/deps/libcfg_if-db5b73ce8caae957.rlib --extern chrono=/playground/target/release/deps/libchrono-32ae1f3e92a379f8.rlib --extern clap=/playground/target/release/deps/libclap-64957953a36f8dfe.rlib --extern clap_builder=/playground/target/release/deps/libclap_builder-4bae680a0df79188.rlib --extern clap_derive=/playground/target/release/deps/libclap_derive-8a17b11abcbc0546.so --extern clap_lex=/playground/target/release/deps/libclap_lex-d7874deb00af211d.rlib --extern color_quant=/playground/target/release/deps/libcolor_quant-41fffc66bd3bd793.rlib --extern colorchoice=/playground/target/release/deps/libcolorchoice-1d9559169ff86a31.rlib --extern cookie=/playground/target/release/deps/libcookie-c130ed2639020f1f.rlib --extern cookie_store=/playground/target/release/deps/libcookie_store-0f0dbd30321599bc.rlib --extern cpufeatures=/playground/target/release/deps/libcpufeatures-e4dda575d018f9c8.rlib --extern crc32fast=/playground/target/release/deps/libcrc32fast-c0c6a3f93f6e2115.rlib --extern crossbeam=/playground/target/release/deps/libcrossbeam-59b619c92cd35569.rlib --extern crossbeam_channel=/playground/target/release/deps/libcrossbeam_channel-cc3756425937bef6.rlib --extern crossbeam_deque=/playground/target/release/deps/libcrossbeam_deque-fbd17a160be6db4e.rlib --extern crossbeam_epoch=/playground/target/release/deps/libcrossbeam_epoch-2d0d4e8a11a59d5b.rlib --extern crossbeam_queue=/playground/target/release/deps/libcrossbeam_queue-cf20c444ed74e5bc.rlib --extern crossbeam_utils=/playground/target/release/deps/libcrossbeam_utils-c43f42760043dd04.rlib --extern crypto_common=/playground/target/release/deps/libcrypto_common-0886dd46d49f68ea.rlib --extern csv=/playground/target/release/deps/libcsv-3c1a8ed384a2293d.rlib --extern csv_core=/playground/target/release/deps/libcsv_core-741b862824ecfe38.rlib --extern data_encoding=/playground/target/release/deps/libdata_encoding-00f4758584e48705.rlib --extern derivative=/playground/target/release/deps/libderivative-2815caa8dd797718.so --extern destructure_traitobject=/playground/target/release/deps/libdestructure_traitobject-4a32ae2da95de679.rlib --extern digest=/playground/target/release/deps/libdigest-609593bf18c8d35e.rlib --extern either=/playground/target/release/deps/libeither-71b7d7136c8346a2.rlib --extern encoding_rs=/playground/target/release/deps/libencoding_rs-e802a0c1c6b944a9.rlib --extern env_logger=/playground/target/release/deps/libenv_logger-caf47400cfe0e36e.rlib --extern error_chain=/playground/target/release/deps/liberror_chain-f8be49dc92f1dea8.rlib --extern exr=/playground/target/release/deps/libexr-210b6190d3a10d1a.rlib --extern fallible_iterator=/playground/target/release/deps/libfallible_iterator-b3d53329000b5e1c.rlib --extern fallible_streaming_iterator=/playground/target/release/deps/libfallible_streaming_iterator-709d1f60b4119d76.rlib --extern fastrand=/playground/target/release/deps/libfastrand-1f11c8453c5f3589.rlib --extern fdeflate=/playground/target/release/deps/libfdeflate-c614d005f66789d5.rlib --extern filetime=/playground/target/release/deps/libfiletime-7c007f27a9fca800.rlib --extern fixedbitset=/playground/target/release/deps/libfixedbitset-c1f65693cf24e94a.rlib --extern flate2=/playground/target/release/deps/libflate2-63e60b2d57ccf631.rlib --extern flume=/playground/target/release/deps/libflume-0989fc0792c8cd2e.rlib --extern fnv=/playground/target/release/deps/libfnv-0cae160679939b75.rlib --extern foreign_types=/playground/target/release/deps/libforeign_types-1b692e09d1e3f386.rlib --extern foreign_types_shared=/playground/target/release/deps/libforeign_types_shared-885e90c7fe7e8127.rlib --extern form_urlencoded=/playground/target/release/deps/libform_urlencoded-b0c51a95ed26fab5.rlib --extern futf=/playground/target/release/deps/libfutf-d23cf6f603330170.rlib --extern futures_0_1_31=/playground/target/release/deps/libfutures-3a207b71778a02b6.rlib --extern futures=/playground/target/release/deps/libfutures-ee4d8484503f4f3b.rlib --extern futures_channel=/playground/target/release/deps/libfutures_channel-60b514814ce41312.rlib --extern futures_core=/playground/target/release/deps/libfutures_core-b09976adbf8bc21c.rlib --extern futures_executor=/playground/target/release/deps/libfutures_executor-2769d1c06f655c37.rlib --extern futures_io=/playground/target/release/deps/libfutures_io-c9dfde80416a9d4f.rlib --extern futures_macro=/playground/target/release/deps/libfutures_macro-cd518a631a559637.so --extern futures_sink=/playground/target/release/deps/libfutures_sink-d2e42f7ec6257545.rlib --extern futures_task=/playground/target/release/deps/libfutures_task-e9e2c3c4082451ac.rlib --extern futures_util=/playground/target/release/deps/libfutures_util-42caffc4d083e147.rlib --extern generic_array=/playground/target/release/deps/libgeneric_array-096203e03ebd48df.rlib --extern getrandom=/playground/target/release/deps/libgetrandom-a065ca3ea83c9d15.rlib --extern gif=/playground/target/release/deps/libgif-842d5cbbaf012b56.rlib --extern gimli=/playground/target/release/deps/libgimli-fa043e15bbf94968.rlib --extern glob=/playground/target/release/deps/libglob-88de2a3b3aae4a2c.rlib --extern h2=/playground/target/release/deps/libh2-1709c688a9f82ad8.rlib --extern half=/playground/target/release/deps/libhalf-7e41bd997925ce85.rlib --extern hashbrown_0_12_3=/playground/target/release/deps/libhashbrown-928b99a6509da0f2.rlib --extern hashbrown=/playground/target/release/deps/libhashbrown-2acdd3e683d362bf.rlib --extern hashlink=/playground/target/release/deps/libhashlink-2c855f5516a030fe.rlib --extern heck=/playground/target/release/deps/libheck-e60a4cd10210daf1.rlib --extern hmac=/playground/target/release/deps/libhmac-f75279cdc09615b3.rlib --extern html5ever=/playground/target/release/deps/libhtml5ever-e8776ceb3f10dabc.rlib --extern http=/playground/target/release/deps/libhttp-d257d352f7745ce6.rlib --extern http_body=/playground/target/release/deps/libhttp_body-65225f67a81edf3a.rlib --extern httparse=/playground/target/release/deps/libhttparse-e48d7c1486949c0d.rlib --extern httpdate=/playground/target/release/deps/libhttpdate-e7f3255d63108174.rlib --extern humantime=/playground/target/release/deps/libhumantime-1bb2af0334246b9e.rlib --extern hyper=/playground/target/release/deps/libhyper-a3c0da5dccd63b6d.rlib --extern hyper_tls=/playground/target/release/deps/libhyper_tls-1a39505599b5c09f.rlib --extern iana_time_zone=/playground/target/release/deps/libiana_time_zone-3be604d5a2e880e2.rlib --extern idna_0_2_3=/playground/target/release/deps/libidna-c7b1affbabe8263e.rlib --extern idna=/playground/target/release/deps/libidna-5f7f93c49aa639d6.rlib --extern image=/playground/target/release/deps/libimage-6aac1d518ccbc42b.rlib --extern indexmap=/playground/target/release/deps/libindexmap-9f4e3979b5b91e00.rlib --extern io_lifetimes=/playground/target/release/deps/libio_lifetimes-43b78caa38c5f569.rlib --extern iovec=/playground/target/release/deps/libiovec-fb83b21e96740379.rlib --extern ipnet=/playground/target/release/deps/libipnet-24213b6431c0aaa9.rlib --extern is_terminal=/playground/target/release/deps/libis_terminal-a4cf1a95763ee853.rlib --extern itertools=/playground/target/release/deps/libitertools-3935680e9f0b1935.rlib --extern itoa=/playground/target/release/deps/libitoa-4dc58cbc744d0ffe.rlib --extern jpeg_decoder=/playground/target/release/deps/libjpeg_decoder-b019d230cf15ee71.rlib --extern lazy_static=/playground/target/release/deps/liblazy_static-25849574e427e32a.rlib --extern lebe=/playground/target/release/deps/liblebe-2d6956979a19891e.rlib --extern libc=/playground/target/release/deps/liblibc-6ba7f02c6856e799.rlib --extern libm=/playground/target/release/deps/liblibm-abdcbcc9d090e1b9.rlib --extern libsqlite3_sys=/playground/target/release/deps/liblibsqlite3_sys-994d6c644ec76788.rlib --extern linked_hash_map=/playground/target/release/deps/liblinked_hash_map-214585b49cb0db44.rlib --extern linux_raw_sys=/playground/target/release/deps/liblinux_raw_sys-0d5603b05dd53192.rlib --extern lock_api=/playground/target/release/deps/liblock_api-db9340c58966c9c8.rlib --extern log=/playground/target/release/deps/liblog-06837ea91fa5a110.rlib --extern log_mdc=/playground/target/release/deps/liblog_mdc-3be9fa29cf9dd977.rlib --extern log4rs=/playground/target/release/deps/liblog4rs-2ce6ee362291afa1.rlib --extern mac=/playground/target/release/deps/libmac-04fde95f6db96b4b.rlib --extern markup5ever=/playground/target/release/deps/libmarkup5ever-5ef7d45f21714039.rlib --extern markup5ever_rcdom=/playground/target/release/deps/libmarkup5ever_rcdom-2a990cdb8609df73.rlib --extern matches=/playground/target/release/deps/libmatches-357c08e7c5156761.rlib --extern matrixmultiply=/playground/target/release/deps/libmatrixmultiply-6393045e232d1934.rlib --extern md5=/playground/target/release/deps/libmd5-8cbfdae514b179a5.rlib --extern memchr=/playground/target/release/deps/libmemchr-a021ff23686c0d1e.rlib --extern memmap=/playground/target/release/deps/libmemmap-768121cf1f52dabe.rlib --extern memoffset=/playground/target/release/deps/libmemoffset-a8789c0bd31ae97f.rlib --extern mime=/playground/target/release/deps/libmime-a3f1e58bc1ab5e07.rlib --extern mime_guess=/playground/target/release/deps/libmime_guess-3fc21b7b00ace0e4.rlib --extern minimal_lexical=/playground/target/release/deps/libminimal_lexical-4301ef91c13f103b.rlib --extern miniz_oxide_0_6_2=/playground/target/release/deps/libminiz_oxide-f99c8f998c62a254.rlib --extern miniz_oxide=/playground/target/release/deps/libminiz_oxide-e86a52b61a0a1530.rlib --extern mio=/playground/target/release/deps/libmio-d99160ddef7ec415.rlib --extern nalgebra=/playground/target/release/deps/libnalgebra-984279e85c2e1778.rlib --extern nalgebra_macros=/playground/target/release/deps/libnalgebra_macros-8043301563a003e5.so --extern nanorand=/playground/target/release/deps/libnanorand-3d9831b81660b166.rlib --extern native_tls=/playground/target/release/deps/libnative_tls-8e7078d18e650785.rlib --extern ndarray=/playground/target/release/deps/libndarray-541cc8aa3361e943.rlib --extern debug_unreachable=/playground/target/release/deps/libdebug_unreachable-659eb51a02cfdaee.rlib --extern nom=/playground/target/release/deps/libnom-43ee3fdef6af85cb.rlib --extern num=/playground/target/release/deps/libnum-f259dc4d1607bd93.rlib --extern num_bigint=/playground/target/release/deps/libnum_bigint-6ef27feaa6fd4ba9.rlib --extern num_complex=/playground/target/release/deps/libnum_complex-54ab888fe8e9dad7.rlib --extern num_integer=/playground/target/release/deps/libnum_integer-001602674d7409fc.rlib --extern num_iter=/playground/target/release/deps/libnum_iter-483e9ee5b0a8ab92.rlib --extern num_rational=/playground/target/release/deps/libnum_rational-9ca9738f155006d4.rlib --extern num_traits=/playground/target/release/deps/libnum_traits-eea399a48af5c24a.rlib --extern num_cpus=/playground/target/release/deps/libnum_cpus-b7fa40a053107100.rlib --extern object=/playground/target/release/deps/libobject-3b3096cceb3e95bc.rlib --extern once_cell=/playground/target/release/deps/libonce_cell-90a9e09b87a562d5.rlib --extern openssl=/playground/target/release/deps/libopenssl-86b76de4a83b58e5.rlib --extern openssl_macros=/playground/target/release/deps/libopenssl_macros-052bd53635515a17.so --extern openssl_probe=/playground/target/release/deps/libopenssl_probe-f580d046549a385d.rlib --extern openssl_sys=/playground/target/release/deps/libopenssl_sys-d0594551acbf7e90.rlib --extern ordered_float=/playground/target/release/deps/libordered_float-b13d47ac8fed9394.rlib --extern parking_lot=/playground/target/release/deps/libparking_lot-56b9b46d4a2ef60d.rlib --extern parking_lot_core=/playground/target/release/deps/libparking_lot_core-1224d1367f5d9352.rlib --extern paste=/playground/target/release/deps/libpaste-11066bed02ed3b1b.so --extern percent_encoding=/playground/target/release/deps/libpercent_encoding-fe344a551803765c.rlib --extern petgraph=/playground/target/release/deps/libpetgraph-50b9f6e85d31e52d.rlib --extern phf_0_10_1=/playground/target/release/deps/libphf-4ea835e61e6bda4f.rlib --extern phf=/playground/target/release/deps/libphf-b8c45854c7917d77.rlib --extern phf_codegen=/playground/target/release/deps/libphf_codegen-87fd2404b211c2f3.rlib --extern phf_generator=/playground/target/release/deps/libphf_generator-7f268a3c1923e352.rlib --extern phf_shared_0_10_0=/playground/target/release/deps/libphf_shared-824e7a98cdb24b96.rlib --extern phf_shared=/playground/target/release/deps/libphf_shared-780f4fa2fb68cc5d.rlib --extern pin_project=/playground/target/release/deps/libpin_project-9b7f2d8221ea3e65.rlib --extern pin_project_internal=/playground/target/release/deps/libpin_project_internal-51763c15c5f152ba.so --extern pin_project_lite=/playground/target/release/deps/libpin_project_lite-1ab514f619da5806.rlib --extern pin_utils=/playground/target/release/deps/libpin_utils-7f827300fdede682.rlib --extern pkg_config=/playground/target/release/deps/libpkg_config-ec97210bf97f7af2.rlib --extern png=/playground/target/release/deps/libpng-b668e6d78b85798e.rlib --extern postgres=/playground/target/release/deps/libpostgres-04cf5896ec4cc383.rlib --extern postgres_protocol=/playground/target/release/deps/libpostgres_protocol-fb1d24f8ebeb7bf3.rlib --extern postgres_types=/playground/target/release/deps/libpostgres_types-315b20c7f25d155e.rlib --extern ppv_lite86=/playground/target/release/deps/libppv_lite86-a6fb7015aa765730.rlib --extern precomputed_hash=/playground/target/release/deps/libprecomputed_hash-cb7c0ee33683bd92.rlib --extern proc_macro2=/playground/target/release/deps/libproc_macro2-b638566a24a255c1.rlib --extern psl_types=/playground/target/release/deps/libpsl_types-277e7bb6d6bea7e8.rlib --extern publicsuffix=/playground/target/release/deps/libpublicsuffix-3ffa07d9d22d5224.rlib --extern qoi=/playground/target/release/deps/libqoi-95b922136aca3ddb.rlib --extern quote=/playground/target/release/deps/libquote-e8721c2da508065d.rlib --extern rand=/playground/target/release/deps/librand-b39274e3d4acfad9.rlib --extern rand_chacha=/playground/target/release/deps/librand_chacha-8d8e3cb10bd5f13d.rlib --extern rand_core=/playground/target/release/deps/librand_core-c2f5c9e2f77f26d4.rlib --extern rand_distr=/playground/target/release/deps/librand_distr-8193ea95f870447b.rlib --extern rawpointer=/playground/target/release/deps/librawpointer-c90267617c83202b.rlib --extern rayon=/playground/target/release/deps/librayon-6bc37dc91bcd4d0e.rlib --extern rayon_core=/playground/target/release/deps/librayon_core-516d12efa29e2970.rlib --extern regex=/playground/target/release/deps/libregex-dd72e90a8e054d1f.rlib --extern regex_syntax=/playground/target/release/deps/libregex_syntax-296f67d7f085c051.rlib --extern reqwest=/playground/target/release/deps/libreqwest-5c88b64f2167fb17.rlib --extern ring=/playground/target/release/deps/libring-4f38a0dba30065c8.rlib --extern rusqlite=/playground/target/release/deps/librusqlite-6b12cf77a43d0476.rlib --extern rustc_demangle=/playground/target/release/deps/librustc_demangle-497219e2c85c8445.rlib --extern rustc_version=/playground/target/release/deps/librustc_version-eb38d83c13ebfdc5.rlib --extern rustix=/playground/target/release/deps/librustix-dada6957b82c15c6.rlib --extern ryu=/playground/target/release/deps/libryu-ac5b3933920441f4.rlib --extern safe_arch=/playground/target/release/deps/libsafe_arch-c9c21432f662edc5.rlib --extern same_file=/playground/target/release/deps/libsame_file-da2e44574eac362e.rlib --extern scopeguard=/playground/target/release/deps/libscopeguard-68c113c8227b2659.rlib --extern select=/playground/target/release/deps/libselect-11bb47850375371b.rlib --extern semver=/playground/target/release/deps/libsemver-49edfbd2966a8b36.rlib --extern serde=/playground/target/release/deps/libserde-11f1c737537873fb.rlib --extern serde_value=/playground/target/release/deps/libserde_value-ea42a09705c6c49e.rlib --extern serde_derive=/playground/target/release/deps/libserde_derive-80bf5c1511cfc325.so --extern serde_json=/playground/target/release/deps/libserde_json-af8835745ad59c6e.rlib --extern serde_spanned=/playground/target/release/deps/libserde_spanned-ee2c69cddf5dbf31.rlib --extern serde_urlencoded=/playground/target/release/deps/libserde_urlencoded-6a831913d7f3764c.rlib --extern serde_yaml=/playground/target/release/deps/libserde_yaml-20c35dd085b77032.rlib --extern sha1_smol=/playground/target/release/deps/libsha1_smol-cbd836adf89f05a5.rlib --extern sha2=/playground/target/release/deps/libsha2-13c77e1596e0de3b.rlib --extern signal_hook_registry=/playground/target/release/deps/libsignal_hook_registry-ac2c9542cfddd66f.rlib --extern simba=/playground/target/release/deps/libsimba-fa3311d1999ec49c.rlib --extern simd_adler32=/playground/target/release/deps/libsimd_adler32-4eede3e6c6330f49.rlib --extern siphasher=/playground/target/release/deps/libsiphasher-75e3221122d50613.rlib --extern slab=/playground/target/release/deps/libslab-38f2a69c371a59bf.rlib --extern smallvec=/playground/target/release/deps/libsmallvec-b76ba6d4ad44a0f4.rlib --extern smawk=/playground/target/release/deps/libsmawk-7fb5c2e376652b9b.rlib --extern socket2_0_4_9=/playground/target/release/deps/libsocket2-ed594ac0effb7009.rlib --extern socket2=/playground/target/release/deps/libsocket2-6febf6cd738a9c23.rlib --extern spin_0_5_2=/playground/target/release/deps/libspin-d2f1b85287e41307.rlib --extern spin=/playground/target/release/deps/libspin-f4d060b193983b38.rlib --extern string_cache=/playground/target/release/deps/libstring_cache-2ef2c0c686ffd954.rlib --extern string_cache_codegen=/playground/target/release/deps/libstring_cache_codegen-6cee04beb090e99c.rlib --extern stringprep=/playground/target/release/deps/libstringprep-1cb7824e4989c112.rlib --extern strsim=/playground/target/release/deps/libstrsim-18c0aa890e4bb1b8.rlib --extern subtle=/playground/target/release/deps/libsubtle-5aa23a67ea55613c.rlib --extern syn_1_0_109=/playground/target/release/deps/libsyn-1589a1dd33dd5a35.rlib --extern syn=/playground/target/release/deps/libsyn-cb2d5a2fa4e018b5.rlib --extern tar=/playground/target/release/deps/libtar-ef2f2173e081e1bb.rlib --extern tempfile=/playground/target/release/deps/libtempfile-27c8b0323010c79e.rlib --extern tendril=/playground/target/release/deps/libtendril-b9d20facbba0eeaa.rlib --extern termcolor=/playground/target/release/deps/libtermcolor-c934d88618c4829d.rlib --extern terminal_size=/playground/target/release/deps/libterminal_size-5bd2378ceae429f5.rlib --extern textwrap=/playground/target/release/deps/libtextwrap-0bc244cb1ae87293.rlib --extern thiserror=/playground/target/release/deps/libthiserror-6cbd4c3eb04333f2.rlib --extern thiserror_impl=/playground/target/release/deps/libthiserror_impl-2974218a13dd2753.so --extern thread_id=/playground/target/release/deps/libthread_id-f9769398630148d5.rlib --extern thread_local=/playground/target/release/deps/libthread_local-97117c42d8a10540.rlib --extern threadpool=/playground/target/release/deps/libthreadpool-ad243595a0d31df6.rlib --extern tiff=/playground/target/release/deps/libtiff-d7e765dab75a55e0.rlib --extern time_0_1_45=/playground/target/release/deps/libtime-1f73616e3924f497.rlib --extern time=/playground/target/release/deps/libtime-c5f2e83b348f5e0a.rlib --extern time_core=/playground/target/release/deps/libtime_core-7d1552da3138deba.rlib --extern time_macros=/playground/target/release/deps/libtime_macros-58ee6441f6258ee9.so --extern tinyvec=/playground/target/release/deps/libtinyvec-17c0504a1d991b9d.rlib --extern tinyvec_macros=/playground/target/release/deps/libtinyvec_macros-32b8f4d92d02b946.rlib --extern tokio=/playground/target/release/deps/libtokio-c1b6ba5fa6266345.rlib --extern tokio_io=/playground/target/release/deps/libtokio_io-684fd8c9493ddbd2.rlib --extern tokio_macros=/playground/target/release/deps/libtokio_macros-fe57cd27eb723e20.so --extern tokio_native_tls=/playground/target/release/deps/libtokio_native_tls-71c16031ec1a6f3a.rlib --extern tokio_postgres=/playground/target/release/deps/libtokio_postgres-e9ad8e634a5a0fec.rlib --extern tokio_util=/playground/target/release/deps/libtokio_util-f330dc8a4eac4ea1.rlib --extern toml=/playground/target/release/deps/libtoml-5caf2f10fa3df76e.rlib --extern toml_datetime=/playground/target/release/deps/libtoml_datetime-af32633c05497588.rlib --extern toml_edit=/playground/target/release/deps/libtoml_edit-52e2f8a316c85c44.rlib --extern tower_service=/playground/target/release/deps/libtower_service-80f1308cd81c0be6.rlib --extern tracing=/playground/target/release/deps/libtracing-0e86711f49788b42.rlib --extern tracing_attributes=/playground/target/release/deps/libtracing_attributes-cb09941660e571dd.so --extern tracing_core=/playground/target/release/deps/libtracing_core-10f420b030e79a59.rlib --extern try_lock=/playground/target/release/deps/libtry_lock-ce3623e261b08fba.rlib --extern typemap_ors=/playground/target/release/deps/libtypemap_ors-e1fb67e88c748d0e.rlib --extern typenum=/playground/target/release/deps/libtypenum-e670fe614bc76121.rlib --extern unicase=/playground/target/release/deps/libunicase-544426b63dcef091.rlib --extern unicode_bidi=/playground/target/release/deps/libunicode_bidi-c40195b7de540c61.rlib --extern unicode_ident=/playground/target/release/deps/libunicode_ident-e1dd3138cd7860c8.rlib --extern unicode_linebreak=/playground/target/release/deps/libunicode_linebreak-216f630e01fe7626.rlib --extern unicode_normalization=/playground/target/release/deps/libunicode_normalization-fa01da443e24b01c.rlib --extern unicode_segmentation=/playground/target/release/deps/libunicode_segmentation-b08939ccce10bde8.rlib --extern unicode_width=/playground/target/release/deps/libunicode_width-cd6f01df46f9fcc2.rlib --extern unicode_xid=/playground/target/release/deps/libunicode_xid-02553c4ee8d386fd.rlib --extern unsafe_any_ors=/playground/target/release/deps/libunsafe_any_ors-be5c02510e6a8a65.rlib --extern untrusted=/playground/target/release/deps/libuntrusted-545953d28018b422.rlib --extern url=/playground/target/release/deps/liburl-fd4b068564b19c06.rlib --extern utf8=/playground/target/release/deps/libutf8-f62d7190f3814e1e.rlib --extern utf8parse=/playground/target/release/deps/libutf8parse-14441e9ac611ff3f.rlib --extern uuid=/playground/target/release/deps/libuuid-3904a42fd1eaae92.rlib --extern vcpkg=/playground/target/release/deps/libvcpkg-01bdb53bc495bc1d.rlib --extern version_check=/playground/target/release/deps/libversion_check-6059b04b354c3ce0.rlib --extern walkdir=/playground/target/release/deps/libwalkdir-328da00c06bf3c4c.rlib --extern want=/playground/target/release/deps/libwant-3d5a91cff3b49cc0.rlib --extern weezl=/playground/target/release/deps/libweezl-e2da43e7e0260060.rlib --extern wide=/playground/target/release/deps/libwide-08d39592479dbd8f.rlib --extern winapi=/playground/target/release/deps/libwinapi-9fba6dad38212cbb.rlib --extern winnow=/playground/target/release/deps/libwinnow-7d9407f2e318e218.rlib --extern xattr=/playground/target/release/deps/libxattr-74f9970d3d5c6e34.rlib --extern xml5ever=/playground/target/release/deps/libxml5ever-81ed9e72aa7a483e.rlib --extern yaml_rust=/playground/target/release/deps/libyaml_rust-af698fd5706f1c0e.rlib --extern zune_inflate=/playground/target/release/deps/libzune_inflate-d905dcc5f5bea869.rlib -L native=/playground/target/release/build/libsqlite3-sys-2813b7f16761fa66/out -L native=/playground/target/release/build/ring-208fbe0e57fc1bdc/out` (signal: 4, SIGILL: illegal instruction)

Meta

rustc --version --verbose:

rustc 1.71.0-nightly (b628260df 2023-04-22)
binary: rustc
commit-hash: b628260df0587ae559253d8640ecb8738d3de613
commit-date: 2023-04-22
host: x86_64-unknown-linux-gnu
release: 1.71.0-nightly
LLVM version: 16.0.2
Compiler returned: 0
@saethlin
Copy link
Member

Duplicate of #110707

@saethlin saethlin marked this as a duplicate of #110707 Apr 23, 2023
@NightEule5
Copy link

Not sure if this should be a separate issue, but I've also encountered the error with the PartialOrd trait:

pub fn invalid_bitcast(value: i32x16) -> i32x16 {
    value.clamp(i32x16::splat(-8), i32x16::splat(8))
}

https://rust.godbolt.org/z/M471avs37

Invalid bitcast
  %5 = bitcast <16 x i32> %4 to [16 x i32], !dbg !251
in function _ZN84_$LT$core..core_simd..vector..Simd$LT$T$C$_$GT$$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h93287bcc7091ff2bE
LLVM ERROR: Broken function found, compilation aborted!
Compiler returned: 101

Using SimdPartialOrd instead works

@workingjubilee workingjubilee added the E-needs-test Call for participation: An issue has been fixed and does not reproduce, but no test has been added. label May 15, 2023
@workingjubilee
Copy link
Contributor

Resolved on latest nightlies. Needs a regression test.

@workingjubilee workingjubilee added A-simd Area: SIMD (Single Instruction Multiple Data) PG-portable-simd Project group: Portable SIMD (https://github.com/rust-lang/project-portable-simd) labels May 15, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-simd Area: SIMD (Single Instruction Multiple Data) C-bug Category: This is a bug. E-needs-test Call for participation: An issue has been fixed and does not reproduce, but no test has been added. PG-portable-simd Project group: Portable SIMD (https://github.com/rust-lang/project-portable-simd)
Projects
None yet
Development

No branches or pull requests

4 participants