Commit Graph

1084 Commits

Author SHA1 Message Date
Thom Chiovoloni
08a70f96fe Work-around buggy Intel chips erroneously reporting BMI1/BMI2 support (#1249) 2021-11-19 01:29:04 +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
Taiki Endo
42ae943ab4 Fix error message of is_*_feature_detected on nort_feature (#1232) 2021-10-16 22:22:47 +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
4f8ed0335c Check inlining and instruction count for assert_instr(nop) as well (#1218) 2021-09-18 01:53:32 +01:00
Jamie Cunliffe
bd0e352338 Intrinsic test tool to compare neon intrinsics with C (#1170) 2021-09-09 19:16:45 +01:00
Hans Kratz
5cd6850171 Normalize [us]shll.* ..., #0 aarch64 disassembly to the preferred [us]xtl.* (#1213) 2021-09-08 23:41:31 +01:00
Hans Kratz
00f611f305 Change aarch64 vld1* instructions to not cause individual loads (#1207) 2021-09-08 23:40:49 +01:00
Hans Kratz
bf2122753a Disable arm inlining check again for now as some tests are still failing. 2021-09-09 00:22:33 +02:00
Hans Kratz
5995d769ad Use a lighter dedup guard in the assert_instr test shims. 2021-09-09 00:22:33 +02:00
Hans Kratz
755e622d17 Implement proper subroutine call detection for x86, x86_64, aarch64 and wasm32. 2021-09-08 19:14:13 +02:00
Hans Kratz
03fa985cf0 remove assembly parsing special case for otool output (no longer needed) 2021-09-08 19:14:13 +02:00
Hans Kratz
999d954aa4 using v8.6a target feature to cover more instructions 2021-09-08 19:14:13 +02:00
Hans Kratz
f5af9d15a9 Use objdump on Macos x86_64 as well. 2021-09-08 19:14:13 +02:00
Hans Kratz
f15c851517 Use LLVM objdump on Macos ARM64 because it is not possible to enable TME support with otool 2021-09-08 19:14:13 +02: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