Commit Graph

2945 Commits

Author SHA1 Message Date
Benjamin Bouvier
dca168f350 [meta] Switch to the Rust crate to generate legalizations and remove Python code; 2019-05-02 10:08:53 +02:00
bjorn3
abf0048972 Merge data alignment 2019-04-30 14:06:34 +02:00
bjorn3
8216b83c65 Make alignment magic number constants 2019-04-30 14:06:34 +02:00
bjorn3
556d5d45e9 Rustfmt 2019-04-30 14:06:34 +02:00
bjorn3
cb6268118c Make it possible to define data alignment 2019-04-30 14:06:34 +02:00
Benjamin Bouvier
443e48aee1 [wasm] Raise an error instead of panicking for unhandled function local types; 2019-04-30 13:58:18 +02:00
Benjamin Bouvier
3ce5d2057d [wasm] Add the ability to provide a user-defined error; 2019-04-30 13:58:18 +02:00
Benjamin Bouvier
02e114cf3d [wasm] Make FuncEnvironment functions fallible (fixes #752); 2019-04-30 13:58:18 +02:00
Benjamin Bouvier
efdb7d86b3 Fixes #607: Use a wrapping multiply when computing div/rem magic numbers; (#757) 2019-04-30 11:46:54 +02:00
antoyo
79d6978e29 cranelift-simplejit: add a translation mechanism for LibCalls (#747) 2019-04-29 16:58:39 +02:00
Antoni Boucher
d8d573208b Remove unwrap() for branch folding 2019-04-28 16:32:01 -07:00
Antoni Boucher
4ee2747c5b Fix cranelift_preopt panic
Fix #611
2019-04-28 16:32:01 -07:00
Pat Hickey
75ec950a12 Merge pull request #743 from CraneStation/expose-function-definitions
Expose function definitions, populate FaerieCompiledFunction
2019-04-25 14:58:36 -07:00
Benjamin Bouvier
95e6fc9efc Avoid inserting checks during div/rem legalization when the input is a constant immediate; 2019-04-25 16:58:41 +02:00
Benjamin Bouvier
e3e66acfb1 [meta] Generate legalizations in the Rust crate; 2019-04-25 11:44:56 +02:00
Benjamin Bouvier
1f21349c4b [meta] Add CPU modes to the meta crate; 2019-04-25 11:44:56 +02:00
Benjamin Bouvier
d00e42ede3 [meta] Port shared and x86 legalizations to the Rust crate; 2019-04-25 11:44:56 +02:00
Benjamin Bouvier
494f3abf1d [meta] Add type inference, transforms and AST helpers for legalization; 2019-04-25 11:44:56 +02:00
Benjamin Bouvier
dfb27c3402 [meta] Make TypeVar shareable and mutable;
... since its type set can change over time during type inference. Use a
Rc<RefCell> to achieve this.
2019-04-25 11:44:56 +02:00
Benjamin Bouvier
b85146e945 [meta] Add helper methods and tests to TypeSet; 2019-04-25 11:44:56 +02:00
Benjamin Bouvier
e71ae7b02f [meta] Add instruction predicates; 2019-04-25 11:44:56 +02:00
Benjamin Bouvier
d92778a19e [meta] Add Instruction helpers and change its representation to make it easily copiable;
- adds helpers used by other parts of the code
- allows cheap copies by having Instruction be a lightweight ref-cloned
wrapper of the actual instruction's content.
2019-04-25 11:44:56 +02:00
iximeow
45013a1d2b Expose function definitions and populate FaerieCompiledFunction with function lengths 2019-04-24 14:54:29 -07:00
Benjamin Bouvier
6acf9be540 Refactor simple-preopt to make it slightly simpler to read;
- don't use camel case but snake casing;
- longer variable names;
- more whitespace;
- add/wrap comments;
2019-04-24 14:14:44 +02:00
Benjamin Bouvier
00429ebe99 [meta] Fix outdented_line in srcgen; 2019-04-24 10:47:26 +02:00
Benjamin Bouvier
d2d2cdcd78 [meta] Rejigger comments in cdsl/formats; 2019-04-24 10:47:26 +02:00
Benjamin Bouvier
faa9b25691 [meta-python] Simplify Var ctor since it never is given a typevar argument; 2019-04-24 10:47:26 +02:00
Benjamin Bouvier
b3a950b589 [meta] Fix condition codes in immediates; 2019-04-24 10:47:26 +02:00
Benjamin Bouvier
274415d5ee Fixes #738: Check ebbs used in jump tables in the verifier; 2019-04-17 15:37:27 +02:00
Tyler McMullen
3b1583ebb7 Style changes in response to code review. 2019-04-17 13:15:41 +02:00
Tyler McMullen
4d427d7c71 Remove old commented out code 2019-04-17 13:15:41 +02:00
Tyler McMullen
1090dc5069 Switch from fallthrough back to jump. 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
861ef3a2e5 Questionable change: Remove domtree generation from simple_preopt testing. 2019-04-17 13:15:41 +02:00
Tyler McMullen
89a2dd9414 Add tests for branch order and branch comparison folding. 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
Benjamin Bouvier
9062810c34 Fix the publish script to include the remote when pushing the tag; 2019-04-09 11:12:52 +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