659 Commits

Author SHA1 Message Date
Sparrow Li
88e98e9c60
Stabilize armv8 neon instruction set on aarch64 (#1266) 2021-12-13 01:52:20 +00:00
Amanieu d'Antras
39849dd6c6
Import the asm! macro from core::arch (#1265) 2021-12-09 23:50:37 +00:00
Luo Jia
935d5297e3
Fix avx512f build on x86-32; fix avx512gfni test fail (#1264) 2021-12-09 12:30:22 +00:00
Luo Jia
3d0bdfeeb1
Add RISC-V platform and PAUSE instruction (#1262) 2021-12-05 02:57:53 +00:00
Eric Huss
0256736d2f
Fix _mm_extract_ps example. (#1261) 2021-12-04 13:04:09 +00:00
Jörn Horstmann
54d690dc70
Implement avx512 masked load and store intrinsics (#1254) 2021-12-04 13:03:40 +00:00
Amanieu d'Antras
937978eeef
Update the intrinsic checker tool (#1258) 2021-12-04 13:03:30 +00:00
Amanieu d'Antras
ca1f7cc1a6
Add missing vtst_p16 and vtstq_p16 intrinsics (#1257) 2021-11-20 20:51:37 +00:00
Sparrow Li
7c3bd04537
complete armv8 instructions (#1256) 2021-11-19 01:24:36 +00:00
Eric Huss
1e2dcdcbd4
Fix i8mm feature with bootstrap compiler. (#1252) 2021-11-15 03:12:25 +00:00
Eric Huss
a7d3ae0d6b
Fix unused link_name attribute. (#1251) 2021-11-13 19:20:11 +00:00
Sparrow Li
be5e1be224
Add remaining insturctions (#1250)
* add vmmla vusmmla vsm4e vsm3 vrax1 vxar vsha512 vbcax veor3 neon instructions

* update runtime feature detect

* correct tests

* add `vrnd32x` `vrnd64x`

* add MISSING.md
2021-11-10 15:19:59 +00:00
senevoldsen
46d0e8d519
Remove that _mm256_set_epi8 sets in reversed order. (#1248) 2021-11-08 00:58:47 +00:00
Amanieu d'Antras
023a926d39
Make the wasm and wasm64 modules unstable (#1247) 2021-11-05 02:50:23 +00:00
Jamie Cunliffe
b04e740f24
Handle intrinsics with constraints in the test tool. (#1237) 2021-11-05 01:47:31 +00:00
Jamie Cunliffe
8d6f3f36b3
Correct the vqrdmlah intrinsics. (#1246) 2021-11-04 14:16:26 +00:00
Alex Crichton
157d273c5c
Fix parsing a doc block for _mm_extract_ps (#1242) 2021-11-01 23:00:59 +00:00
devsnek
d98a902f20
expose wasm intrinsics using target_family = "wasm" (#1241) 2021-10-31 18:12:24 +00:00
Alex Crichton
05aad76b58
Add a rudimentary wasm64 module with intrinsics (#1240) 2021-10-30 22:14:54 +01:00
Jamie Cunliffe
813530237d
Do not emit undefined lshr/ashr for Neon shifts (#1238) 2021-10-22 20:24:54 +01:00
Sparrow Li
9df48f1e57
Complete the remaining neon instructions (#1230) 2021-10-21 10:52:05 +01:00
Jubilee
b86a083d10
Add example to _mm_extract_ps (#1228) 2021-10-06 10:34:54 +01:00
Sparrow Li
68e35d306f
Complete vld* and vst* neon instructions (#1224) 2021-09-29 04:28:10 +01:00
Sparrow Li
bdea403c54
Complete vst1 neon instructions (#1221) 2021-09-24 13:26:29 +01:00
Hans Kratz
26cce19427
Make dedup guard optional (#1215) 2021-09-20 17:19:05 +01:00
Hans Kratz
504b0cf68b
Arm Fused Multiply-Add fixes (#1219) 2021-09-20 17:18:20 +01:00
Sparrow Li
328553ef64
Complete vld1 instructions with some corrections (#1216) 2021-09-18 14:13:24 +01:00
Hans Kratz
00f611f305
Change aarch64 vld1* instructions to not cause individual loads (#1207) 2021-09-08 23:40:49 +01:00
Sparrow Li
9e34c6d4c8
Add vst neon instructions (#1205)
* add vst neon instructions

* modify the instruction limit
2021-08-31 21:35:30 +01:00
Joshua Liebow-Feeser
c9e0420448
powerpc::vector_bool_long is a vector of two i64s (#1204) 2021-08-27 17:33:23 +01:00
Sparrow Li
4baf95fddd
add vldx neon instructions (#1200) 2021-08-24 19:51:30 +01:00
Alex Crichton
b10d00cae0
Update codegen for simd wasm intrinsics with LLVM 13 (#1203) 2021-08-23 01:45:59 +01:00
Frank Steffahn
870cf5751d Fix typos “an”→“a” 2021-08-22 18:55:49 +01:00
Frank Steffahn
5b5df599d3 Fix typos “a”→“an” 2021-08-22 18:55:49 +01:00
Pierre Krieger
78bef173f4 Fix "it's purpose" -> "its purpose" 2021-08-14 17:44:03 +01:00
Ömer Sinan Ağacan
103e90de1d Rewording in Wasm all_true SIMD instruction docs
- Use "true" and "false" instead of "1" and "0"
- "nonzero" -> "non-zero"
- "returns true if ... or false if ..." -> "returns true ..., false
  otherwise"
2021-08-14 09:28:29 +01:00
Aleksey Kladov
e91f80fc22 mark core::arch::wasm32::unreachable as safe
This intrinsic doesn't have any preconditions and is always safe to
call, so it can be safe.

This function is already stable, but dropping `unsafe` is a backwards
compatible change.

Note tha we already have a precedent for wasm intrinsics being safe --
wasm simd is safe.

It is relatively practically important to mark this safe --
wasm32::unreachable is directly useful in practice as more codesize
efficient `panic!()`.
2021-08-12 11:09:05 +01:00
Mara Bos
685e8d906d Remove references to the crates on crates.io.
They haven't been published in years. This removes the suggestion that
the crates on crates.io are actively updated/maintained.
2021-08-12 00:24:32 +01:00
Jamie Cunliffe
0285e513e0 Update arm vcvt intrinsics to use llvm.fpto(su)i.sat
Those intrinsics have the correct semantics for the desired fcvtz instruction,
without any undefined behaviour. The previous simd_cast was undefined for
infinite and NaN which could cause issues.
2021-08-11 13:13:19 +01:00
Amanieu d'Antras
52dae87319 Remove unused wasm feature 2021-08-11 11:46:45 +01:00
Alex Crichton
b5c437e119 Add tests for remaining wasm simd intrinsics
Wasmtime now supports all of the simd proposal, so this commit
uncomments instruction assertions and tests, while also adding more
tests, for all wasm simd instructions. This means that all wasm simd
instructions should be tested and have running instruction assertions,
except for `i64x2.abs`, which will require an LLVM upgrade to LLVM 13.
2021-08-03 00:46:38 +01:00
Adam Gemmell
3347e8cc98 Remove the bootstrap directive for cryptographic target_features 2021-08-02 23:38:57 +01:00
Adam Gemmell
8cb8cd2142 Replace the crypto feature with aes in generated intrinsics for aarch64
This allows us to deprecate the crypto target_feature in favour of its
subfeatures.

We cannot do this yet for ARM targets as LLVM requires the crypto
feature. This was fixed in
b8baa2a913
2021-08-02 23:38:57 +01:00
Alex Crichton
5800a3624a Remove stabilized features 2021-07-30 12:52:55 +02:00
Alex Crichton
8e8879ddd9 Mark f32x4 and f64x2 as const-stable on wasm
Now that `transmute` can be flagged as `const`-stable this commit
updates the `f32x4` and `f64x2` constructors as `const`-stable as well.
This also additionally rewrites the other integer constructors in a more
readable fashion now that the general `v128()` method is `const`-stable.
2021-07-30 12:52:55 +02:00
Amanieu d'Antras
335bc49609
Force the use of sysv64 calling convention in x86_64 disassembly tests (#1187)
This ensures that results are consistent across windows/linux tests.
2021-07-20 20:02:22 +01:00
bstrie
bfb3f78b6b
Revert "Move asm! and global_asm! to core::arch (#1183)" (#1185)
This reverts commit 9437b11cd4f42c5995eb41aa92ead877b9b7823a.
2021-07-20 09:49:59 +01:00
Alex Crichton
487db3bf1b
Document unsafety of wasm simd intrinsics (#1184)
Since most intrinsics are safe it likely makes sense to explicitly
document why there are a few intrinsics that are not safe. These
intrinsics are all unsafe for the same reason, which is that they're
dealing with a raw pointer that must be valid to load/store memory to.
Note that the are no alignment requirements on any of these intrinsics.
2021-07-16 17:40:14 +01:00
bstrie
4b8c2e5376
Move asm! and global_asm! to core::arch (#1183) 2021-07-15 05:21:50 +01:00
Yuki Okushi
069adbcc4c
Fix the stabilized version for simd_x86_bittest (#1182) 2021-06-12 18:25:16 +01:00