Andrew Brown
c932f9b2b5
Add parsing of 16-bit signed integers
2019-09-30 13:54:30 -07:00
Joshua Nelson
a1f6457e8a
Allow building without std ( #1069 )
...
Closes https://github.com/CraneStation/cranelift/issues/1067
2019-09-26 18:00:03 +02:00
Benjamin Bouvier
59f5f12c60
[codegen] Rename GenLiveRange to GenericLiveRange;
...
(to avoid confuson with Gen interpreted as Generator)
2019-09-25 11:43:29 +02:00
Artur Jamro
1431ab5201
Derive serde traits for TrapCode
2019-09-24 10:50:52 -07:00
Andrew Brown
c648fa3d06
Move condcodes.rs to a new crate, cranelift-codegen-shared
...
This move allows the `IntCC`/`FloatCC` enums to be used in both meta (for predicate matching) and in codegen. To avoid breaking any code dependent on the previous location of condcodes.rs (`cranelift-codegen/src/condcodes.rs`), the module is re-exported under `cranelift_codegen::ir`.
2019-09-24 09:33:07 -07:00
Benjamin Bouvier
3ab8eed7d3
Remove unused core::mem import;
2019-09-23 14:41:07 +02:00
Anthony Ramine
26accbadf8
Use f32::to_bits and f64::to_bits
2019-09-23 10:36:03 +02:00
Anthony Ramine
178241625c
Use slice::from_ref and slice::from_mut
2019-09-23 10:36:03 +02:00
Andrew Brown
cd426cb7bc
Rename Uimm128 to V128Imm
2019-09-19 12:04:14 -07:00
Andrew Brown
af1499ce99
Add x86 implementation of shuffle
2019-09-19 10:53:40 -07:00
Joshua Nelson
59139c6c46
Add more documentation for entities, fixes #1038 ( #1041 )
...
Also fixes broken links to point to docs.rs; see
https://github.com/CraneStation/cranelift/pull/1041#issuecomment-532356880 ,
there doesn't currently seem to be a way to link to a type in a
dependent crate.
2019-09-18 16:48:57 -07:00
Ujjwal Sharma
3418fb6e18
[codegen] reintroduce support for carry and borrow instructions in RI… ( #1005 )
...
Reintroduce support for iadd carry variants and isub borrow variants for
RISC ISAs which had been removed in
https://github.com/CraneStation/cranelift/pull/961 and
https://github.com/CraneStation/cranelift/pull/962 because of the lack
of a proper flags register in RISC architectures.
2019-09-13 17:27:49 +02:00
Sean Stangl
4b085b9cf7
Avoid unnecessary reallocations in domtree::with_function() ( #1011 )
2019-09-10 08:18:06 -06:00
Philip Craig
3293ca6b69
Add cranelift-object
2019-09-09 21:54:20 -07:00
bjorn3
67593d997b
Add b128 type to fix tests
2019-09-07 09:55:09 -07:00
bjorn3
c1553194a7
Fix WideInt max size in insturctions.py
2019-09-07 09:55:09 -07:00
bjorn3
c9a25abbc4
Basic i128 support
2019-09-07 09:55:09 -07:00
Benjamin Bouvier
8a9384f869
Tweak comments;
2019-09-05 17:55:03 +02:00
Ujjwal Sharma
ea919489ee
[codegen] add encodings for iadd carry variants ( #961 )
...
* [codegen] add encodings for iadd carry variants
Add encodings for iadd carry variants (iadd_cout, iadd_cin, iadd_carry)
for x86_32, enabling the legalization for iadd.i64 to work.
* [codegen] remove support for iadd carry variants on riscv
Previously, the carry variants of iadd (iadd_cin, iadd_cout and
iadd_carry) were being legalized for isa/riscv since RISC architectures
lack a flags register.
This forced us to return and accept booleans for these operations, which
proved to be problematic and inconvenient, especially for x86.
This commit removes support for said statements and all dependent
statements for isa/riscv so that we can work on a better legalization
strategy in the future.
* [codegen] change operand type from bool to iflag for iadd carry variants
The type of the carry operands for the carry variants of the iadd
instruction (iadd_cin, iadd_cout, iadd_carry) was bool for compatibility
reasons for isa/riscv. Since support for these instructions on RISC
architectures has been temporarily suspended, we can safely change the
type to iflags.
2019-09-05 15:03:13 +02:00
Andrew Brown
d64e454004
Improve uimm128 parsing
...
This commit changes 128-bit constant parsing in two ways:
- it adds the ability to use underscores to separate digits when writing a 128-bit constant in hexadecimal; e.g. `0x00010203...` can now be written as `0x0001_0203_...`
- it adds a new mechanism for parsing 128-bit constants using integer/float/boolean literals; e.g. `vconst.i32x4 [1 2 3 4]`. Note that currently the controlling type of the instruction dictates how many literals to parse inside the brackets.
2019-09-04 07:16:04 -07:00
Nicolas B. Pierron
bb87f1a54a
Add EntryRegDiversions to record diversions for each block entry.
2019-08-30 14:48:08 +02:00
Andrew Brown
4e7226ddca
Fix documentation warnings in ConstantPool
2019-08-29 11:08:29 +02:00
Andrew Brown
020e5987d3
Use little-endian ordering for CLIF vconst immediate
...
Examining wasm-objdump revealed that it stores SIMD constants in little-endian order, e.g.:
000071 func[2] <test_const>:
000072: fd 02 01 00 00 00 02 00 00 | v128.const 0x00000001 0x00000002 0x00000003 0x00000004
00007b: 00 03 00 00 00 04 00 00 00 |
000084: fd 0d 03 | i32x4.extract_lane 3
000087: 0b | end
This change avoids confusion by making the CLIF representation use little-endian order as well.
2019-08-26 16:12:06 -07:00
Andrew Brown
5ded38ce3e
Add unsigned 128-bit immediate
2019-08-26 16:12:06 -07:00
Andrew Brown
c20b13d5a9
Add ConstantPool
2019-08-26 16:12:06 -07:00
Andrew Brown
ea9ee202bb
Clear jump tables when function data is cleared
2019-08-26 16:12:06 -07:00
julian-seward1
b8fb52446c
Cranelift: implement redundant fill removal on tree-shaped CFG regions. Mozilla bug 1570584. ( #906 )
2019-08-25 19:37:34 +02:00
Artur Jamro
d3815a0399
Implement serde and equality traits for SecondaryMap
2019-08-22 15:54:10 -07:00
Carmen Kwan
19257f80c1
Add reference types R32 and R64
...
-Add resumable_trap, safepoint, isnull, and null instructions
-Add Stackmap struct and StackmapSink trait
Co-authored-by: Mir Ahmed <mirahmed753@gmail.com >
Co-authored-by: Dan Gohman <sunfish@mozilla.com >
2019-08-16 11:35:16 -07:00
Benjamin Bouvier
2ee35b7ea1
Implement a Windows Baldrdash calling convention;
2019-08-16 14:25:15 +02:00
Benjamin Bouvier
d8d3602257
Adds the libcall_call_conv setting and use it for libcall calls expansion;
2019-08-12 16:12:00 -07:00
Sean Stangl
c7b4b98cac
Add a fold_redundant_jumps() pass to the branch relaxation phase. ( #887 )
2019-08-09 15:30:11 -06:00
Yury Delendik
29b32b3062
Serialize ValueLabel and StackSlots ( #888 )
2019-08-05 08:31:00 -05: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
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
Andrew Brown
084e279def
Add x86 implementation of splat instruction
2019-07-16 17:07:44 -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
Mark McCaskey
f856b124fd
Use Default trait for Position and DisplayFunctionAnnotations ( #843 )
2019-07-12 11:21:00 +02:00
Sean Stangl
237d48477a
Fix an outdated comment referring to FunctionLayout instead of Layout
2019-07-09 18:05:36 +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
563525b090
[meta] Remove mentions to Python in comments of the non-meta crate;
2019-07-05 17:50:17 +02:00
Benjamin Bouvier
d7d48d5cc6
Add the dyn keyword before trait objects;
2019-06-24 11:42:26 +02:00
bjorn3
edd2bf12fd
Export ValueLocRange and DisplayFunctionAnnotations::default()
2019-05-15 09:18:45 +02:00
Yury Delendik
8f95c51730
Reconstruct locations of the original source variable
2019-05-09 00:35:44 -07: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
YISH
90028a6d0d
impl Ieee64::from(f64) and Ieee32::from(f32)
2019-02-19 14:03:21 -08:00
lazypassion
747ad3c4c5
moved crates in lib/ to src/, renamed crates, modified some files' text ( #660 )
...
moved crates in lib/ to src/, renamed crates, modified some files' text (#660 )
2019-01-28 15:56:54 -08:00