Nicolas B. Pierron
f0d7438728
Properly legalize with empty jump tables.
2019-08-01 13:47:28 +02:00
iximeow
6e57e3f8f3
preopt: use replaced arg after having replaced BinaryImm
...
when replacing BinaryImm, we use the prior arg, but later use the arg
that was replaced when writing an alias if we can determine the new op
is actually equivalent to a simple copy
2019-08-01 11:00:37 +02:00
Benjamin Bouvier
057d4f6e3c
Simple preopt: Fold (imm OP x) into (OP_IMM x imm) whenever possible;
2019-07-31 17:42:05 +02:00
Benjamin Bouvier
23ac723d4c
Simple preopt: fold instructions using simple algebraic identities;
2019-07-31 17:42:05 +02:00
Benjamin Bouvier
2fef2eef67
Simple preopt: try to fold right-shift of left-shift into an extended move;
2019-07-31 17:42:05 +02:00
Benjamin Bouvier
141b45e0e1
Simple preopt: fold binary opcodes chains together;
2019-07-31 17:42:05 +02:00
Benjamin Bouvier
dc58a5fc5c
Simple preopt: use the immediate form for adjust_sp_down/ifcmp whenever possible;
2019-07-31 17:42:05 +02:00
bjorn3
6042ee6f2d
Improve graphviz rendering
2019-07-31 15:20:08 +02:00
Andrew Brown
4074ce2f5d
Add a unit test for ir::Type::lane_type() for a vector type
...
Closes #834
2019-07-29 11:13:39 +02:00
Dan Gohman
16e16c49a7
Bump version to 0.37.0
2019-07-27 04:50:19 -07:00
Nicolas B. Pierron
feecd23967
Assert if newly added instructions break the Basic Block invariant.
2019-07-25 14:33:25 +02:00
Dan Gohman
4641fdd302
Bump version to 0.36.0
2019-07-19 16:28:40 -07:00
Sean Stangl
8efaeec502
Verify that FunctionBuilder blocks are basic blocks in debug mode ( #857 )
...
To use, enable the "basic-blocks" feature on cranelift-frontend.
2019-07-19 09:52:05 -06:00
Sean Stangl
9b97ddf29a
Enable basic block checks through a feature. ( #856 )
...
This allows prefixing BB-specific code with "#[cfg(feature = "basic-blocks")]",
which avoids having to reference an environment variable across the codebase.
The easiest way to enable the feature locally is to add the arguments
'features = ["basic-blocks"]' to the workspace Cargo.toml, where it defines
the cranelift-codegen dependency.
2019-07-18 09:59:28 -06:00
Andrew Brown
084e279def
Add x86 implementation of splat instruction
2019-07-16 17:07:44 -07:00
Andrew Brown
3b36a1d1d8
Add x86 implementation of insertlane instruction
2019-07-16 17:07:44 -07:00
Andrew Brown
683e7c75a3
Add x86-specific shuffle instructions
...
This includes both PSHUFD and PSHUFB; these are necessary to legalize future SIMD instructions.
2019-07-16 17:07:44 -07:00
Andrew Brown
61772e9775
Add raw_bitcast instruction
...
Casts bits as a different type of the same width with no change to the data (unlike bitcast)
2019-07-16 17:07:44 -07:00
Andrew Brown
5f0e5567c1
Add scalar_to_vector instruction
...
Moves scalar values in a GPR register to an FPR register
2019-07-16 17:07:44 -07:00
Andrew Brown
356e6dafe2
Allow CDSL instructions to bind to vector types
2019-07-16 17:07:44 -07:00
Andrew Brown
c39a9b4e3f
Assign vector arguments to FPR registers
2019-07-16 17:07:44 -07:00
Andrew Brown
659725b465
Add x86-specific SIMD settings, e.g. SSE2
...
Also, ties SIMD ISA predicates to the shared enable_simd setting
2019-07-16 17:07:44 -07:00
Andrew Brown
f2c48009e8
Disable SIMD features by default
2019-07-16 17:07:44 -07:00
Andrew Brown
8378297f33
Prepare legalizer codegen for SIMD features
...
Contains fixes from @bnjbvr to codegen as a part of https://github.com/bnjbvr/cranelift/pull/2 ; necessary for SIMD features to work
2019-07-16 17:07:44 -07:00
Dan Gohman
67dd0b5015
Bump version to 0.35.0
2019-07-12 15:48:19 -07:00
Artur Jamro
9e884b4433
Add support for some serde serialization ( #847 )
...
* Add support for some serde serialization
2019-07-12 15:30:50 -07:00
Nicolas B. Pierron
8edc40cb49
BB-like manual legalization for x86 ISA
2019-07-12 14:20:26 +02:00
Mark McCaskey
f856b124fd
Use Default trait for Position and DisplayFunctionAnnotations ( #843 )
2019-07-12 11:21:00 +02:00
Benjamin Bouvier
bfc1468688
[docs] Don't accidentally generate doc tests;
2019-07-11 11:48:45 +02:00
Benjamin Bouvier
062ed8f6ea
[docs] Remove rst annotations in instructions doc comments;
2019-07-11 11:48:45 +02:00
Benjamin Bouvier
d5b80b2803
[meta] Generate full documentation for instructions in InstBuilder;
2019-07-11 11:48:45 +02:00
Benjamin Bouvier
84a6795873
[meta] Riscv: add back stacknull encodings for copy_nop;
2019-07-10 17:51:09 +02:00
Dan Gohman
59f6c81e4f
Bump version to 0.34.0
2019-07-09 12:31:58 -07:00
Benjamin Bouvier
41a3d88b37
Fixes #837 : Use an u64 comparison instead of a usize comparison in meta;
2019-07-09 18:15:30 +02:00
Sean Stangl
237d48477a
Fix an outdated comment referring to FunctionLayout instead of Layout
2019-07-09 18:05:36 +02:00
Nicolas B. Pierron
3ac7466cab
Legalize br_table to a BB-like format.
2019-07-09 16:48:54 +02:00
Nicolas B. Pierron
1963c223b1
Legalize trapz/trapnz to a BB-like format.
2019-07-09 16:02:49 +02:00
Benjamin Bouvier
f11fc34066
Build fix: add crates::predicates to the Riscv enc_tables file;
2019-07-09 11:31:21 +02:00
Benjamin Bouvier
56f6908020
[meta] Legalization: Don't generate a variable for replaced instructions;
...
(since they're unused)
2019-07-09 10:56:50 +02:00
Benjamin Bouvier
cd4c28ad97
[meta] Legalization: Unprefix some module paths to make code neater;
2019-07-09 10:56:50 +02:00
Benjamin Bouvier
15d8b95e72
[meta] Legalization: remove spurious Option wrapping for type variables;
2019-07-09 10:56:50 +02:00
Benjamin Bouvier
f1222dce10
[meta] Legalization: emit typeof type variables for results in all the cases;
2019-07-09 10:56:50 +02:00
Benjamin Bouvier
3545363006
Add ir::Types::lane_of as an alias of lane_type to be used in typevar constraints;
2019-07-09 10:56:50 +02:00
Benjamin Bouvier
4fef03f5f8
[meta] Legalization: remove spurious assert;
...
This assert was added when porting legalization from Python to Rust and
doesn't hold when we have derived type variables.
2019-07-09 10:56:50 +02:00
Benjamin Bouvier
563525b090
[meta] Remove mentions to Python in comments of the non-meta crate;
2019-07-05 17:50:17 +02:00
Benjamin Bouvier
f29a26de14
[meta] Remove the Python DSL
...
KILL THE SNAKE WITH FIRE.
2019-07-05 17:50:17 +02:00
Benjamin Bouvier
88307f693a
[meta] Generate the encodings files;
2019-07-05 17:50:17 +02:00
Benjamin Bouvier
f574ab8703
[meta] Generate the binemits files;
...
Co-authored-by: Benjamin Bouvier <public@benj.me >
Co-authored-by: bjorn3 <bjorn3@users.noreply.github.com >
2019-07-05 17:50:17 +02:00
Benjamin Bouvier
fd03677292
[meta] Recipes and encodings descriptions for x86;
2019-07-05 11:38:51 +02:00
Benjamin Bouvier
ca277422bb
[meta] Recipes and encodings descriptions for RiscV;
2019-07-05 11:38:51 +02:00