2028 Commits

Author SHA1 Message Date
Folkert de Vries
0645ac31cb
extract s390x vector and friends to their own rust feature 2025-11-06 12:49:04 +01:00
Jakub Beránek
3c9656c4f4
Merge ref '73e6c9ebd912' from rust-lang/rust
Pull recent changes from https://github.com/rust-lang/rust via Josh.

Upstream ref: 73e6c9ebd9123154a196300ef58e30ec8928e74e
Filtered ref: e8bb3cae4cd2b04bdc252cdf79102717db2b2d8d
Upstream diff: 32e7a4b92b...73e6c9ebd9

This merge was created using https://github.com/rust-lang/josh-sync.
2025-11-02 14:45:26 +01:00
Alisa Sireneva
420544a34a Move wasm throw intrinsic back to unwind
rustc assumes that regular `extern "Rust"` functions unwind only if the
`unwind` panic runtime is linked. `throw` was annotated as such, but
unwound unconditionally. This could cause UB when a crate built with `-C
panic=abort` called `throw` from `core` built with `-C panic=unwind`,
since no terminator was added to handle the panic arising from calling an
allegedly non-unwinding `extern "Rust"` function.

rustc was taught to recognize this condition since
https://github.com/rust-lang/rust/pull/144225 and prevented such
linkage, but this caused regressions in
https://github.com/rust-lang/rust/issues/148246, since this meant that
Emscripten projects could not be built with `-C panic=abort` without
recompiling std.

The most straightforward solution would be to move `throw` into the
`panic_unwind` crate, so that it's only compiled if the panic runtime is
guaranteed to be `unwind`, but this is messy due to our architecture.
Instead, move it into `unwind::wasm`, which is only compiled for
bare-metal targets that default to `panic = "abort"`, rendering the
issue moot.
2025-10-30 15:13:32 +03:00
Sayantan Chakraborty
92f7cb4948
Merge pull request #1946 from folkertdev/intrinsic-test-dedup-constants
`intrinsic-test`: dedup constants
2025-10-30 11:25:53 +00:00
Noa
a4638e3d25
Enable assert_instr for wasm32 throw 2025-10-27 12:12:52 -05:00
sayantn
4c6e879326
Make the fence intrinsics and _mm_pause safe 2025-10-26 23:57:47 +05:30
sayantn
22f169f844
Make _mm_prefetch safe 2025-10-26 23:57:42 +05:30
sayantn
8bff8b6849
Make all TBM intrinsics safe 2025-10-26 23:52:45 +05:30
sayantn
f2eb88b0bb
Make RDRAND/RDSEED safe 2025-10-26 23:52:45 +05:30
sayantn
5dcd3046c8
Make _bswap{,64} safe 2025-10-26 23:52:45 +05:30
sayantn
cfb36829a9
Make _mm512_reduce_mul_ph safe (missed) 2025-10-26 23:52:45 +05:30
sayantn
788d1826e9
Make ADC/ADX intrinsics safe 2025-10-26 23:52:44 +05:30
Folkert de Vries
f4d4218fc4
intrinsic test: fix formatting (a bit, at least) 2025-10-26 16:42:34 +01:00
Folkert de Vries
22ca86d8e8
intrinsic test: deduplicate rust constants 2025-10-26 16:39:05 +01:00
Madhav Madhusoodanan
5b02cc070a feat: fixing Rust's print mechanism for _mm512_conj_pch 2025-10-26 17:51:35 +05:30
Madhav Madhusoodanan
c85e978c7d fix: remove the PATH update in ci/run.sh 2025-10-26 17:51:35 +05:30
Madhav Madhusoodanan
e4fcae1ef0 chore: make names in config.rs files uniform across architectures 2025-10-26 17:51:35 +05:30
Madhav Madhusoodanan
3d17cea576 feat: code cleanup 1. changing array bracket prefixes from &'static str
to char 2. including variable names in template strings instead of
passing them as arguments to macros
2025-10-26 17:51:35 +05:30
Madhav Madhusoodanan
ad53cca967 chore: convert println! logging to trace! logging during compilation
step
2025-10-26 17:51:35 +05:30
Madhav Madhusoodanan
a44a2c7e1a chore: move from random testing to testing only the first N intrinsics 2025-10-26 17:51:35 +05:30
Madhav Madhusoodanan
fcaf610615 chore: remove x86-intel.xml from stdarch-verify crate 2025-10-26 17:51:35 +05:30
Madhav Madhusoodanan
09be05e467 feat: updated exclusion list with more intrinsics, that can be fixed
immediately
2025-10-26 17:51:33 +05:30
Madhav Madhusoodanan
06ab6d7cb2 feat: explicitly casting the result of the lane function to unsigned
variants for compatibility with the Rust version
2025-10-26 17:51:07 +05:30
Madhav Madhusoodanan
a5926b3ede Feat: allow downcasting (useful for certain cases where uint32_t needs
to be cast to float16_t because the bits are stored in the lower half of
the type)
2025-10-26 17:51:07 +05:30
Madhav Madhusoodanan
1eed14abdc Feat: Compile C++ testfiles using C++23 standard 2025-10-26 17:51:07 +05:30
Madhav Madhusoodanan
e6f4153526 feat: update cast<> function to reduce spurious cast functions (cases
like integer to float or vice versa)
2025-10-26 17:51:07 +05:30
Madhav Madhusoodanan
b567c62fd7 Explicitly cast bits instead of allowing C++ to automatically cast the
same (during typecasting)
2025-10-26 17:51:07 +05:30
Madhav Madhusoodanan
c9ae1f47dd fix: update the display of uint8_t type in C++ 2025-10-26 17:51:07 +05:30
Madhav Madhusoodanan
928baef9fc feat: casting the results of the lane function by preserving the bits
instead of letting C++ do it (and potentially change the bits)
2025-10-26 17:51:07 +05:30
Madhav Madhusoodanan
5bd9531fa1 feat: make the debug_i16 into a generic debug_as function that adapts to
base type
2025-10-26 17:51:07 +05:30
Madhav Madhusoodanan
a2f64b368c feat: add formatting for __m128i, __m256i, __m512i types that is similar
to C++ version of the same.
2025-10-26 17:51:07 +05:30
Madhav Madhusoodanan
0606f2421b feat: display __mmask8 values so that non-utf8 values are not displayed 2025-10-26 17:51:07 +05:30
Madhav Madhusoodanan
12510bfbb1 feat: add c_programs to PATH and increase chunk size to 400 2025-10-26 17:51:07 +05:30
Madhav Madhusoodanan
08bb69e186 feat: attempting compilation of smaller chunks for faster parallel
processing
2025-10-26 17:51:07 +05:30
Madhav Madhusoodanan
98f4db287f fix: making compilation step run one by one to prevent the process from
being killed. Also separated declarations and definitions for C++
testfiles.
2025-10-26 17:51:07 +05:30
Madhav Madhusoodanan
11263b7358 chore: add verbose cli option to C++ compiler 2025-10-26 17:51:07 +05:30
Madhav Madhusoodanan
33894358d2 chore: add more compiler flags for compiling x86 intrinsics in C++ 2025-10-26 17:51:07 +05:30
Madhav Madhusoodanan
057e645d5c feat: added custom helper functions (that helped load intrinsic
arguments in Rust) to C++ testfiles. Also added extra compilation flags
2025-10-26 17:51:07 +05:30
Madhav Madhusoodanan
89130019e9 feat: add missing_x86.txt to filter out intrinsics that cannot be tested
currently
2025-10-26 17:51:07 +05:30
Madhav Madhusoodanan
afcc241301 make std::ostream& operator<<(std::ostream& os, float16_t value);
definition available for armv7 also
2025-10-26 17:51:07 +05:30
Madhav Madhusoodanan
62182b5466 fix: remove extra brackets for cast definition in arm/config.rs 2025-10-26 17:51:07 +05:30
Madhav Madhusoodanan
c16d05191c feat: moved cast<T1, T2> to architecture-specific definitions 2025-10-26 17:51:07 +05:30
Madhav Madhusoodanan
c2c3de09a7 chore: clean up unused variables 2025-10-26 17:51:07 +05:30
Madhav Madhusoodanan
1a2aacb46e chore: corrected the imm-width correction location for _mm_mpsadbw_epu8
intrinsic
2025-10-26 17:50:38 +05:30
Madhav Madhusoodanan
e00cfd2f67 feat: defined more load functions that are natively not defined (such as
arguments with UI16 etype and __m128d type)
2025-10-26 17:50:38 +05:30
Madhav Madhusoodanan
115dc3c298 chore: accomodate for immwidth field for constraints
extras: 1. call update_simd_len() after inferring bit_len for arguments
of certain intrinsics

2. handle the effective bit_len for _mm_mpsadbw_epu8 intrinsic's `imm8`
argument which has only 3 bits that are used
2025-10-26 17:50:38 +05:30
Madhav Madhusoodanan
fbe9a25287 chore: vector types cannot be the type of an individual element in an
array.

Extra: 1. Added better load fuctions 2. Added an update_simd_len()
function to support cases where the bit_len of the element need to be
inferred from its partner arguments before calculating the simd_len
2025-10-26 17:50:38 +05:30
Madhav Madhusoodanan
9c2dd24bb6 feat: filter for duplicates in the definition of intrinsics 2025-10-26 17:50:38 +05:30
Madhav Madhusoodanan
4cbca6c247 chore: corrected the legal range of values for constrained arguments
such as _MM_FROUND_SAE and _MM_ROUND_MODE
2025-10-26 17:50:38 +05:30
Madhav Madhusoodanan
c59e6702d3 feat: updated with debug printing and ostream implementation for vector
types
2025-10-26 17:50:38 +05:30