Tyler McMullen
4d427d7c71
Remove old commented out code
2019-04-17 13:15:41 +02:00
Tyler McMullen
5596b5fadc
Address code review comments, simplifying some bits of branch_opt.
2019-04-17 13:15:41 +02:00
Tyler McMullen
402d0d9c83
Add comments to branch folding and reordering functions in simple_preopt.
2019-04-17 13:15:41 +02:00
Tyler McMullen
fd6940baaf
Switch branch order opt from brif/brff to br_icmp, as that's what frontends should produce.
2019-04-17 13:15:41 +02:00
Tyler McMullen
571b87414f
Switch ifcmp+brif folding to be icmp+brz folding, which is what frontends actually produce.
2019-04-17 13:15:41 +02:00
Tyler McMullen
67cc5aafec
Refactoring of branch ordering and zero-check optimization based on PR feedback.
2019-04-17 13:15:41 +02:00
Tyler McMullen
947130be81
Add branch order optimization to simple_preopt to encourage fallthroughs.
2019-04-17 13:15:41 +02:00
Tyler McMullen
57f087c9da
Add note to simple_preopt differentiating its use from the preopt crate.
2019-04-17 13:15:41 +02:00
Tyler McMullen
fc6876c68e
Fold 'ifcmp_imm' + 'brif' where imm is zero and cond is 'eq' or 'ne', into 'brz' or 'brnz'.
2019-04-17 13:15:41 +02:00
Benjamin Bouvier
9b156fd9bb
[meta] Use the Rust crate for opcodes/inst_builder code generation;
2019-04-09 15:42:28 +02:00
Benjamin Bouvier
b5595aadd2
[meta] Generate opcodes.rs/inst_builder.rs with the Rust crate;
2019-04-09 15:42:28 +02:00
Lars T Hansen
aa926e9097
Allow readonly nontrapping loads to be hoisted by licm ( #727 )
2019-04-09 11:40:23 +02:00
carolinecullen
0166d6507a
Adding comment about copying RiscV abi file into ARM32.
2019-04-08 17:06:08 -07:00
carolinecullen
8ab7170a07
Updated comments.
2019-04-08 17:06:08 -07:00
carolinecullen
72bc035d70
Beginnings of arm32 backend.
2019-04-08 17:06:08 -07:00
Philip Craig
b74b49f7c6
Fix x86-64 encoding of uextend.i64.i8
...
The non-REX encoding of movzbl requires one of the ABCD registers as input.
2019-04-08 05:50:59 -07:00
Benjamin Bouvier
84fede890c
[meta] Optimize the sequence table to use whole table suffix prefixing;
2019-04-05 11:59:09 -07:00
Benjamin Bouvier
e6249b541d
Update target-lexicon to 0.4.0;
2019-04-05 08:23:42 -07:00
Benjamin Bouvier
cd8a42e01f
Fix #686 : Allow code shrink in relaxation if the shrinking pass hasn't been run;
...
Also:
- make sure to apply diversions when determining offsets for code
relaxation.
- select the smallest encoding when selecting a relaxed branch
instruction.
2019-04-03 11:42:38 +02:00
Benjamin Bouvier
2dd1552369
[meta] Make Typevar::type_set private, and add a second getter to read it directly;
...
There might be a silent bug in the Python module which directly reads
from this type_set field; in particular, it does so when reading all
controlling type variables, which all seem to be free variables (i.e. no
parent typevar). So imitate this behavior here, until we're sure there
are no other meta generators that rely on this.
2019-04-02 17:30:50 +02:00
Benjamin Bouvier
5edee84f67
[meta] Port TypeVar's test_functions to Rust;
...
Fixes two issues:
- name of derived type variables wasn't correct. (This is used during
code generation.)
- the TypeVar::derived() function wasn't creating the correct type set
(and would instead propagate the parent's one).
2019-04-02 17:30:50 +02:00
Benjamin Bouvier
dd63ebfb68
[meta] Port typeset_singleton tests to the Rust crate;
2019-04-02 17:30:50 +02:00
Benjamin Bouvier
ac37cb9bf5
[meta] Add test for {half/double}_{vector/width} and as_bool;
2019-04-02 17:30:50 +02:00
Benjamin Bouvier
6053201128
[meta] Move the TypeSet building out of the TypeVar builder so as to test it;
2019-04-02 17:30:50 +02:00
Benjamin Bouvier
3e7543df79
[meta] Introduce the num_set! macro to create NumSet as vec! does;
2019-04-02 17:30:50 +02:00
Benjamin Bouvier
86430abc4c
[meta] Port all the Cranelift instructions to the meta crate;
2019-03-28 14:13:29 +01:00
Benjamin Bouvier
3c31eac48c
[meta] Port Instruction/InstructionGroup to the Rust meta crate;
2019-03-28 14:13:29 +01:00
Benjamin Bouvier
d59bef1902
[meta] Port Formats and Operands to the Rust crate;
2019-03-27 14:43:27 +01:00
Benjamin Bouvier
146e0bd2f5
[meta] Port Typevar to the Rust crate;
2019-03-27 14:43:27 +01:00
Benjamin Bouvier
f3f449b45b
[meta] Tweak generation of settings/registers;
2019-03-27 14:43:27 +01:00
Benjamin Bouvier
393b88af6e
[meta] Implement UniqueTable in the Rust crate;
...
... and also rename the previously-named UniqueTable to UniqueSeqTable,
which is the name used in the Python code.
2019-03-27 14:43:27 +01:00
Benjamin Bouvier
72b0d26ee9
[meta] Add features to srcgen;
...
- Adds a compiler warning when the fmtln! macro isn't correctly used.
- Allow to add an empty line.
- Make the output of generated matches more beautiful, by having one
struct per line on the clause.
- Add a method to add match with doesn't read any data from fields.
- Make sure that the placeholder clause of a match is put at the end.
2019-03-27 14:43:27 +01:00
Benjamin Bouvier
68bda3a42d
[meta-python] Fix typos;
2019-03-27 14:43:27 +01:00
Lars T Hansen
141ccb9e9d
Add a --disasm option to clif-util wasm and compile ( #713 )
...
- Both the `wasm` and `compile` commands get this new subcommand, and it defaults to false. This means that test runs with `wasm` can request disassembly (the main reason I am doing this) while test runs with `compile` now must request it, this changes current behavior.
- Switch to using context.compile_and_emit directly, and make the reloc and trap printers just accumulate output, not print it. This allows us to factor the printing code into the disasm module.
2019-03-27 12:57:13 +01:00
Dan Gohman
82c6867155
Work around Cargo #4866 . ( #699 )
...
* Work around Cargo build #4866 .
This fixes #697 .
* Rename "cargo4866workaround" to "core" per review feedback.
2019-03-26 11:28:39 -07:00
Dan Gohman
ec0b10cd34
Bump version to 0.30.0
2019-03-26 09:36:22 -07:00
Dan Gohman
6b854381bb
Fix a documentation-comment warning.
2019-03-26 09:11:57 -07:00
Dan Gohman
975b7f2e8d
Put a space between "//!" and "```".
2019-03-26 08:40:25 -07:00
Yury Delendik
5e12f4f2b8
Add missing use_srcloc in postopt and regalloc passes
2019-03-25 15:06:41 +01:00
Benjamin Bouvier
b7dfe8aaa6
Fix build warnings for cranelift-codegen tests;
2019-03-12 09:53:36 +01:00
Steffen Butzer
92b3987e54
windows/x64 call convention: only use XMM0 for float return values ( #691 )
2019-03-11 11:44:44 +01:00
bjorn3
75312a6456
Update faerie to 0.9.1
2019-03-08 17:01:36 +01:00
Dan Gohman
34aba7fe66
Bump version to 0.29.0
2019-03-05 06:36:34 -08:00
Steffen Butzer
2a519092a0
Use single index for param register allocation for windows callconv (… ( #693 )
...
* Use single index for param register allocation for windows callconv (#691 )
The used registers depend entirely on the parameter index (1st, 2nd, 3rd, 4th, ... param)
and we cannot shift unused registers to other indexes, if they are not designated for
the use for that parameter index.
2019-03-05 12:17:41 +01:00
bjorn3
6267e1ded9
Implement sshr_imm.i8 ( #687 )
2019-02-25 19:04:32 +01:00
bjorn3
166c11af11
Fix global value colocated printing
...
It used to print `gv0 = colocated symbol u1:1` while cranelift-reader
expects `gv0 = symbol colocated u1:1`.
2019-02-25 18:01:05 +01:00
robojumper
851f125eda
Fix bitrev intrinsic
2019-02-22 16:55:15 -08:00
Benjamin Bouvier
603d80615f
[meta] Introduce the fmtln! macro to ease writing formatted strings;
2019-02-20 11:31:38 +01:00
Benjamin Bouvier
c8e09cb37f
[meta] Use AsRef<str> to allow passing String or &str to Formatter functions;
2019-02-20 11:31:38 +01:00
YISH
90028a6d0d
impl Ieee64::from(f64) and Ieee32::from(f32)
2019-02-19 14:03:21 -08:00