This is a resubmission of #1609 which was ruled optional but not
necessary at the time but it's now necessary. These weren't originally
applied as they weren't allowed in a `const` context but that's no
longer applicable. At the same time though be sure to add some small
tests to ensure that these intrinsics can be used in a `const` context.
Simiarly to other functions for `mm` and `mm256` register widths, the
first argument should be a pointer to the pointer type. See e.g.
`_mm256_store_si256` function.
These were previously defined using vector types which is incorrect.
Instead, `{u}int{8x4,16x2}_t` are aliases for `i32` and `u32`.
This also fixes CI since these types don't need to be passed in NEON
registers and this was triggering a newly added compiler warning.
Like the name suggests, this converts to unsigned integers rather than
signed. I assume this was copy pasted from vec_cts.
Signed-off-by: Jens Reidel <adrian@travitia.xyz>
I am not certain why some crates are missing - it might be by accident or on purpose, so feel free to reject. This makes sure no crate is missed by accident,
and also removed the non-existent `wasm-assert-instr-tests` crate.
P.S. Also, added some crate-level lints, but perhaps these should be added to all crates in the workspace?
Adds intrinsic functions to `core_arch::aarch64` for MTE, as per the
ACLE:
- __arm_mte_create_random_tag
- __arm_mte_increment_tag
- __arm_mte_exclude_tag
- __arm_mte_set_tag
- __arm_mte_get_tag
- __arm_mte_ptrdiff
These are unavailable without the `mte` target feature.
This ended up way more annoying than expected, because I needed to refactor the `types!` macro to separate out the stability attributes to put those on the `Debug` impl without also copying all the `#[doc]`s. But I like how it came out in the end, reducing duplication in the macro invocations.
But without it all the C-consistency tests fail.