Jakob Stoklund Olesen
f106e4266a
Enable the IL verifier by default.
...
Change the default value for the "enable_verifier" setting so the
verifier runs unless it is explicitly disabled.
Most projects using Cretonne are best off running the verifier always
until they start caring about compile time performance. Then they can
easily disable the verifier.
2017-12-06 08:30:48 -08:00
Jakob Stoklund Olesen
c09ad06f96
Stop generating reserved_reg heaps in DummyEnvironment.
...
The reserved register heaps are not implemented in the Cretonne
legalizer, so IR generated by the dummy environment would trip
assertions when compiled.
Use a heap with a vmctx base address instead, and also demonstrate how
vmctx arguments are added to all signatures to achieve this.
2017-12-05 16:31:10 -08:00
Jakob Stoklund Olesen
b8fe6bf0f5
Add a MapCursor::value_mut() method.
...
It's ok to alter a value stored in a map, but not the keys.
2017-12-05 15:07:28 -08:00
Jakob Stoklund Olesen
c64428b698
Add a Map::get_or_less() method.
...
Find the largest (k,v) pair with k <= key.
2017-12-05 15:07:28 -08:00
Tyler McMullen
7988d0c54c
Add 8-bit variation of adjust_sp_imm for 32-bit and 64-bit Intel.
2017-12-05 11:49:12 -08:00
Tyler McMullen
3b937f5917
Add separate spiderwasm prologue/epilogue to intel's abi.rs
2017-12-05 11:49:12 -08:00
Tyler McMullen
5783ea2c9a
Account for return address when reserving stack space for CSRs.
2017-12-05 11:49:12 -08:00
Tyler McMullen
a75248d2cf
Move the initial stack pointer adjustment to after the CSR pushes.
2017-12-05 11:49:12 -08:00
Tyler McMullen
ebcbd54f61
Add 'compile' test and confirm the pro/epilogue is added. Fix regression this revealed.
2017-12-05 11:49:12 -08:00
Tyler McMullen
694658b949
Move entirety of prologue_epilogue logic to abi module.
2017-12-05 11:49:12 -08:00
Tyler McMullen
0fb59dc589
Fix the ordering of return values.
2017-12-05 11:49:12 -08:00
Tyler McMullen
c156eb9ff7
Refactor prologue_epilogue. Break out into functions. Remove Vecs.
2017-12-05 11:49:12 -08:00
Tyler McMullen
c78a191294
Use layout.last_inst to find 'return' opcodes, rather than iterating.
2017-12-05 11:49:12 -08:00
Tyler McMullen
66eccb7859
Use opcode's is_return() rather than pattern-matching.
2017-12-05 11:49:12 -08:00
Tyler McMullen
a26d438b30
Use returned Value from append_ebb_param in prologue_epilogue.
2017-12-05 11:49:12 -08:00
Tyler McMullen
ced39f5186
Fix up adjust_sp_imm instruction.
...
* Use imm64 rather than offset32
* Add predicate to enforce signed 32-bit limit to imm
* Remove AdjustSpImm format
* Add encoding tests for adjust_sp_imm
* Adjust use of adjust_sp_imm in Intel prologue_epilogue to match
2017-12-05 11:49:12 -08:00
Tyler McMullen
1a11c351b5
Add tests and documentation for x86_(push|pop). Fix up encoding issues revealed by tests.
2017-12-05 11:49:12 -08:00
Tyler McMullen
3b1b33e0ac
Add docs and tests for copy_special instruction. Fixes encoding issue that tests revealed.
2017-12-05 11:49:12 -08:00
Tyler McMullen
4eb9a54096
Convert x86_(push|pop) operations to be explicitly limited to 32-bit and 64-bit values.
2017-12-05 11:49:12 -08:00
Tyler McMullen
2f3edc1bc6
Fix issue in which CSR returns were incorrectly ordered.
2017-12-05 11:49:12 -08:00
Tyler McMullen
6ec4bfc4ca
Fix up the encodings for new instructions, both expected and actual. Make the test more accurate.
2017-12-05 11:49:12 -08:00
Tyler McMullen
daa7a21d05
Adjust prologue/epilogue generation to work with 32-bit Intel arch.
2017-12-05 11:49:12 -08:00
Tyler McMullen
e6481bb4eb
Add 32-bit encodings for x86_push, x86_pop, copy_special, and adjust_sp_imm.
2017-12-05 11:49:12 -08:00
Tyler McMullen
c92d49963a
Simplify x86_(push|pop) encodings.
2017-12-05 11:49:12 -08:00
Tyler McMullen
cf9d287bea
Pop the callee-saved registers in the function epilogue(s).
2017-12-05 11:49:12 -08:00
Tyler McMullen
f31a764fc8
Save all callee-saved registers in prologue.
2017-12-05 11:49:12 -08:00
Tyler McMullen
b049916d35
Move %rsp to %rbp, not the reverse.
...
This also takes away %rsp and %rbp from regalloc again. This may cause
tests to fail temporarily.
2017-12-05 11:49:12 -08:00
Tyler McMullen
e0c8ab49e1
Only emit an adjust_sp_imm if the stack_size is non-zero.
2017-12-05 11:49:12 -08:00
Tyler McMullen
d12587f218
Assign explicit register location to result of frame-pointer pop.
2017-12-05 11:49:12 -08:00
Tyler McMullen
544c148b25
Fix the stack slots, so the locations of local var slots are correct.
2017-12-05 11:49:12 -08:00
Tyler McMullen
c1a64a5dc7
Insert a basic epilogue.
2017-12-05 11:49:12 -08:00
Tyler McMullen
60b6bc3ab7
Sketch of prologue generation
2017-12-05 11:49:12 -08:00
Tyler McMullen
fdfe24760a
Add missing newline to prologue epilogue test
2017-12-05 11:49:12 -08:00
Tyler McMullen
d4311d2b1d
Add prologue-epilogue test that exercises new instructions and binary emission.
2017-12-05 11:49:12 -08:00
Tyler McMullen
ffab87318e
Add adjust_sp_imm instruction. Note: This enables using rsp and rbp as normal registers. Which is... wrong.
2017-12-05 11:49:12 -08:00
Tyler McMullen
32509ebacd
Fix push/pop encoding for extended registers. Add copy_special encoding.
2017-12-05 11:49:12 -08:00
Tyler McMullen
b8275f5713
Add (some) encodings for x86_push/pop instructions. Simple uses actually pass the legalizer now.
2017-12-05 11:49:12 -08:00
Tyler McMullen
cdf70ccb77
Add copy_special instruction.
2017-12-05 11:49:12 -08:00
Tyler McMullen
8ed37e352e
Add x86_push and x86_pop instructions.
2017-12-05 11:49:12 -08:00
Jakob Stoklund Olesen
04f6ccabe5
Allow filecheck directives with "test compile".
...
Things like inserted prologues and epilogues in #201 can be tested this
way.
2017-12-04 09:44:06 -08:00
Pat Hickey
919de82e9c
rename wasm testsuite to wasm_testsuite
...
this makes it a lot more obvious in the travis build output
2017-12-01 09:00:23 -08:00
Pat Hickey
8e0110b076
add wat2wasm note to readme
2017-12-01 09:00:23 -08:00
Pat Hickey
0676e8cbd7
install wasm-toolchain build 26619 from deb
2017-12-01 09:00:23 -08:00
Dan Gohman
27f0b29188
Replace hex with "0x%x" % ... to fix a trailing 'L' on 32-bit python2
...
This test was failing because the hash computes values greater than
0x7fffffff, which 32-bit python2 promotes to long, which `hex` formats
with a trailing 'L'. The code that uses it appears to be ok with a
long value, so it's just the test that needs to handle it.
Fix as suggested here:
https://stackoverflow.com/questions/5917203/python-trailing-l-problem
2017-12-01 06:44:37 -08:00
Pat Hickey
cced2c8b0c
Fix wat syntax so wasm tests pass ( #199 )
...
* wasm testsuite: ignore hidden files in test dir
and report a rejected file. it was picking up vim .swp files
* wasmtests: correct wat syntax in icall.wat
2017-11-27 12:46:53 -08:00
Pat Hickey
b5601d57c8
filetests: change hex function names to user function numbers
2017-11-23 14:08:47 -08:00
Pat Hickey
9108725b74
extname: extend testcases to 16 chars
...
this is sufficient for all filetests to pass without truncating
2017-11-23 14:08:47 -08:00
Pat Hickey
eb49d9f8bf
tests: update ExternalName api
2017-11-23 14:08:47 -08:00
Pat Hickey
803b83c87a
wasm: change to new externalname api
2017-11-23 14:08:47 -08:00
Pat Hickey
1216f81b90
parser: replace binary function name test case with user names
2017-11-23 14:08:47 -08:00