Commit Graph

919 Commits

Author SHA1 Message Date
Edwin Smith
045c28aa3f Bug 559973 - Rename LOpcode enums in NativePPC.cpp (r=nnethercote+)
--HG--
extra : convert_revision : d65d7a51c661d49274ee4707eb0b478f6e7b6ec9
2010-05-07 08:39:56 -04:00
Nicholas Nethercote
2a2687bf69 ARM bustage fix for bug 564080. r=me.
--HG--
extra : convert_revision : 98eb4dff32af55697aac78f7c89c4a3b56cb01fa
2010-05-06 16:18:51 -07:00
Nicholas Nethercote
93fba42127 Bug 564080 - nanojit: merge LIR_alloc[iq]. r=edwsmith.
--HG--
extra : convert_revision : bf229d93127ae64ffa62f4c872c2319bbc4dc59b
2010-05-06 16:13:11 -07:00
Edwin Smith
279460658a Bug 559971 - Rename LOpcode enums in NativeARM.cpp (r=nnethercote+ f=jacob.bramley+)
--HG--
extra : convert_revision : f7a0d7ffe0739ce2e2b2c259d7b8d3d9b77f78d5
2010-05-06 09:32:06 -04:00
Edwin Smith
8b43bd915d Change the PPC isS14 macro to an inline function (bug 560370 r=rreitmai+)
Fixes two problems:
1. macro incorrectly referred directly to "bd" instead of its argument "i"
2. logic wasn't 64-bit safe (incorrect 32/64bit comparison)

--HG--
extra : convert_revision : 9b65dfcae9f7d70788806afc4f3b989e32c601fe
2010-05-05 10:47:36 -04:00
Edwin Smith
1024e26d57 Bug 559975 - Rename LOpcode enums in NativeX64.cpp (r=nnetercote+)
Also includes a few renames of qxor -> xorq from other files.
(qxor was missing from the rename script).

--HG--
extra : convert_revision : b49dd62330e017769dfdea9c87a74698179c7f45
2010-04-29 15:34:40 -04:00
Ginn Chen
1ffaf7e1a0 Bug 562001 nanojit failed to compile on Solaris x86_64 r=gal 2010-04-28 17:36:04 +08:00
Nicholas Nethercote
3b86611069 Bug 560712 - nanojit: give immediates names when printing LIR. r=edwsmith.
--HG--
extra : convert_revision : 53522168256873ff92a5cf1668d3ef8e65a87f38
2010-04-27 18:40:51 -07:00
Edwin Smith
842b6c912b Rename LIR opcodes in Nativei386.cpp (bug 559977 r=nnethercote+)
--HG--
extra : convert_revision : 62e0adc4d69e1d2246ee9336afd555ee3f6766a0
2010-04-27 20:05:58 -04:00
Nicholas Nethercote
42510923d1 Fix ARM bustage caused by bug 555255. r=me.
--HG--
extra : convert_revision : fd2a6c5b65a0f4fd4e09fa0366a626e97850f39b
2010-04-27 15:41:17 -07:00
Nicholas Nethercote
03c04769c0 Bug 518267 - nanojit: some instructions not printed with TMFLAGS=assembly. r=edwsmith.
--HG--
extra : convert_revision : 118664704b902286b9b21a35e3a998685980066a
2010-04-27 15:31:31 -07:00
Edwin Smith
3394d89548 Rematerialize add(r,imm) operations on x64 and i386 (bug 555255 r=nnethercote+)
This patch detects when LEA can be used to rematerialize an add operation
instead of spilling it.  Sub and lsh could be supported too, if it would
help (see notes in canRematLEA()).

--HG--
extra : convert_revision : e5db9525afbc8bd03444c66d8ded420f4696dce8
2010-04-27 10:00:27 -04:00
Edwin Smith
583621bba8 Rematerialize ALU+IMM operations on ARM (bug 555255 r=jbramley+)
The ARM backend already supported single-instruction folding of immediates into
add/sub/and/or/xor instructions.  This patch enables the same instructions to
be rematerialized without spilling them.

--HG--
extra : convert_revision : c5fca9078e37d7d79f66cf6023fcbf707d11d57b
2010-04-27 09:38:27 -04:00
Nicholas Nethercote
756a66a5ce Follow-up to bug 561182: move CseFilter methods together. r=rreitmai.
--HG--
extra : convert_revision : 8632b24edcba6eb08afe5002611fbea782d1f435
2010-04-26 21:59:48 -07:00
Nicholas Nethercote
05c2de7b5b Bug 561182 - nanojit: merge LInsHashSet into CseFilter. r=rreitmai.
--HG--
extra : convert_revision : 5a687f2ed6268d873a011f13da912ebb8bfb03e4
2010-04-26 21:59:32 -07:00
Edwin Smith
069062a9f7 Fixed whitespace drift.
--HG--
extra : convert_revision : e2770eef5208a99078207d999ba2d84346651db8
2010-04-26 10:53:32 -04:00
Rick Reitmaier
f4ea1cc587 fix PPC debug-only build breakage
--HG--
extra : convert_revision : 6b99983c6b88ce05809d05e4e2b24836a1c2724e
2010-04-23 10:49:32 -07:00
Rick Reitmaier
d61f88a164 Bug 560370 - PPC cmov handling logic incorrect (r+edwsmith)
On PPC the cmov logic is generating incorrect code due to
instruction and register lifetimes are not being correctly
handled.

This patch mirrors the code used on the x86 which was fixed
a while back to address this issue.  See bug 535705

--HG--
extra : convert_revision : 8047bc5db3b14ddc3588378c7f4c6fef76de7d98
2010-04-23 09:24:00 -07:00
Edwin Smith
e927108ae7 Bug 560578 - canRemat() and asm_restore() should agree (r=nnethercote+)
Added comments clarifying the contract between canRemat() and asm_restore(),
and fixed the ARM, MIPS, PPC, and Sparc backends so canRemat() doesn't
return true for instructions that asm_restore() doesn't handle.

--HG--
extra : convert_revision : f4d4243db4cf3b8d7149012d5503c5441058f58e
2010-04-23 10:26:12 -04:00
Edwin Smith
3633f63957 Revert rename bustage in NativePPC.cpp (bug 560160 r=me)
--HG--
extra : convert_revision : cc043e6b70383762025e239896cbd70d5ece8697
2010-04-22 13:04:24 -04:00
Nicholas Nethercote
0ca74ddded Bug 560160 - nanojit: rename LOpcode-related names. r=edwsmith.
--HG--
extra : convert_revision : 234af92683dad306d03911975b0e9afc57936cf5
2010-04-21 19:34:46 -07:00
Nicholas Nethercote
42b15a4cbf Avoid compiler warnings. r=me.
--HG--
extra : convert_revision : a33a817354bebed12877a0e6ab4c42729ec3c8c7
2010-04-21 18:28:35 -07:00
Edwin Smith
c25f6733ba Rename LIR opcodes once more, using new C convention (bugs 555633, bug 557877 r=nnethercote+)
This patch un-does the intel names that have been used so far within
nanojit, updates the aliases in LIR.h, and fixes the names used in
lirasm tests.

Host VM's will need to run rename_LIR.pl from bug 504506 if they have
already begun using the intel names; aliases are not provided for them in LIR.h.

--HG--
extra : convert_revision : 2787af46329c72796954ddb68f53326f0de661e4
2010-04-21 21:13:17 -04:00
Chris Dearman
48ef0e6d48 Bug 558813 - [MIPS] running tamarin as3/Vector/ acceptance testcases produces an assert (r=edwsmith)
--HG--
extra : convert_revision : 25449d23ba02a99a502c06ffc0565f87376a3e7e
2010-04-21 09:16:18 -04:00
Chris Dearman
e3c19557be Bug 551165 - Unable to compile MIPS nanojit backend (r=edwsmith+)
--HG--
extra : convert_revision : 7d9635ba36b214f707cf426b7b414cde99738048
2010-04-21 09:14:14 -04:00
Nicholas Nethercote
dba392140f Bug 559719 - nanojit: tweak LIns::lastWord. r=edwsmith.
--HG--
extra : convert_revision : 3f81d8a5f0515f891eac0c8821370d4309787483
2010-04-20 17:51:50 -07:00
Edwin Smith
560294a5e2 Bug 559969 - Rename LOpcode enums in Assembler.cpp/h (r=nnethercote+)
--HG--
extra : convert_revision : ccc892912055b7da35ff7a8bafa7c3cd0bc060d5
2010-04-19 20:42:41 -04:00
Edwin Smith
a0649c37c8 Remove unnecessary clearReg() calls from asm_restore(). (bug 555255 r=nnethercote+)
This patch does two things, neither of which should affect generated code.

1. In case LIR_alloc in gen(), replace inlined code with a call to evict(),
since evict() does exactly what the inlined code does.

2. In backends, remove ins->clearReg() or deprecated_markAsClear() calls from
asm_restore(), since evict() takes care of the same thing as soon as
asm_restore() returns.

--HG--
extra : convert_revision : e89860f89d85e6d0a4ef538c5f19f0ae55e360da
2010-04-19 20:28:22 -04:00
Edwin Smith
4f9e499d66 Removes NJ_PROFILE and related code, since it's all dead. (bug 560300 r=nnethercote+)
Host VM's should remove #define NJ_PROFILE and NJ_PROFILE_DISABLED

--HG--
extra : convert_revision : 02bc396c1339e7ed0ac17f77b074d5edcb1517f7
2010-04-19 20:22:56 -04:00
Edwin Smith
c87d59e4d3 Move canRemat() from Assembler.cpp to each backend. (bug 555255 r=nnethercote+)
--HG--
extra : convert_revision : c12082c4c489498061d8b505f7dae1bf626d849f
2010-04-19 20:16:09 -04:00
Nicholas Nethercote
a9ce7676df Fix compiler warning. r=me.
--HG--
extra : convert_revision : 4baf0bdb53dfdc39a1a6b1cf9ee78c0c42be8a6f
2010-04-18 16:15:25 -07:00
Edwin Smith
fa948f7ddd Bug 559968 - Rename LOpcode enums in LIR.cpp. r=nnethercote.
--HG--
extra : convert_revision : 34789fd8cb4bd5f3d3eed6b6a44ae1a158620f8d
2010-04-18 16:05:53 -07:00
Edwin Smith
b0c60c31a3 Rename LIR opcodes in LIR.h (bug 557887, r=nnethercote+)
Mechanically renamed using rename_LIR.pl, backed out the alias patch hunks,
and updated the pointer-sized aliases to use the new opcodes instead of
PTR_SIZE macros using old opcodes.

--HG--
extra : convert_revision : 944433df375988c65313759440ed1de757ab4ea8
2010-04-16 19:20:24 -04:00
Nicholas Nethercote
6503b1d42e Bug 558814 - nanojit: handle const conditions for LIR_jt/LIR_jf. r=edwsmith.
--HG--
extra : convert_revision : b57f94e988db5cdd0278bd3b1eca1a664bfcf937
2010-04-15 16:48:07 -07:00
Edwin Smith
b73e463983 Rename LIR_stw->stl2w, stb->stl2b, add aliases (bug 555633, r=nnethercote+)
--HG--
extra : convert_revision : 2eae88cd4859b3f82d003f1cfd42153c45a14bdf
2010-04-15 09:15:53 -04:00
Edwin Smith
327efa9892 Only perform the disp32->disp8 addressing mode optimization on valid instructions (bug 543440 r=dvander+)
RIP-relative addressing uses mod 00 "disp32" encoding, but mod_disp32() assumes
all instructions passed in can be optimized to disp8 encoding if the actual
displacement is 8-bit.  This is invalid for mode 00 modes, including RIP addressing.

mod_disp32() can still do the right thing in the other arm of its branch; this
patch removes the assert and tightens the check for the disp8 case.

--HG--
extra : convert_revision : b534b9289ca8a111f16fbf0b0711b5277be440f4
2010-04-14 16:22:14 -04:00
Edwin Smith
f2aa7bdbe7 Lower ARM MIPS NJ_MAX_STACK_ENTRY to 1024 as a workaround for asm_spill() limitations (bug 556175)
Fixme's added, explaining why.

--HG--
extra : convert_revision : 7d102db403b76739c69fbf1e5b1e35bdbeb4b3c6
2010-04-14 09:15:56 -04:00
Edwin Smith
b87fa948ab Use AvmAssertFail instead of NanoAssertFail to implement NanoAssert (Bug 473188 r=gal+)
--HG--
extra : convert_revision : 7c682d3836f7587225a2f8dce73039d10a972318
2010-04-13 15:41:15 -04:00
Edwin Smith
6e97b7399c Add support for LIR_stb on PPC (bug 558597 r=leon.sha pending)
Pushing this in advance of review; It appears to run fine in the tamarin-redux
acceptance suite, and i tested it also by stopping in asm_store32() with dbx,
and disassembling the generated STB instruction.  Looked fine to the naked eye.

--HG--
extra : convert_revision : 1e26f7116dc4435461b56900454b02fa821a9e54
2010-04-13 14:39:49 -04:00
Edwin Smith
c527a87132 Allow i386 JCC() instruction to emit patchable jumps (bug 557705 r=me, nnethercote=pending)
TR needs to support patching, the assert is too restrictive.
Support target == 0 with an explicit check instead of letting
it just work by accident.

--HG--
extra : convert_revision : 5f12e1da6b7f3b76116ccf2ffd878969e103f557
2010-04-13 11:42:42 -04:00
Edwin Smith
577472fd60 Raise ARM and MIPS NJ_MAX_STACK_ENTRY to 4096 (bug 556175 r=Jacob.Bramley+)
--HG--
extra : convert_revision : 7a068ed450bb6ba47d8a5ab2586487a1b37ba8db
2010-04-13 11:14:49 -04:00
Edwin Smith
176d926d8c Implement LIR_stb on PPC32/64 (bug 558597 r=rreitmai+)
Patch also fixes an invalid assert that required load/store
displacements to be multiples of 4 on PPC.

--HG--
extra : convert_revision : e2a7f626b35179db953469ea94cdb39d16b10f7c
2010-04-12 21:27:19 -04:00
Rick Reitmaier
4634603bd4 Bug 557706 - Allow LogControl printf method to be overridden (r=nnethercote,edwsmith)
Issues with prior patch not compiling with tamarin due to missing vtable,
so make sure printf isn't available unless verbose is enabled.

--HG--
extra : convert_revision : 147e02ce8790c9e09f4c91b29b1bcc5d16862ee1
2010-04-12 11:51:00 -07:00
Nicholas Nethercote
3a4a3d6046 Bug 557991 - nanojit: remove dead code from CodeAlloc. r=edwsmith.
--HG--
extra : convert_revision : 335ca0fff2a7ac451d0fa1c11594f6dbacada648
2010-04-08 18:33:21 -07:00
Edwin Smith
e802c1ac07 Suppress unused arg warnings for bug 557843 (r=me.)
Took the opportunity to add a few asserts to ensure the implit RHS
register for x86 shift instructions is always ECX.

--HG--
extra : convert_revision : 6baccc0354a87ece92ccff6ff138986bf4d19a2c
2010-04-08 12:58:49 -04:00
Rick Reitmaier
8e2e572dea Bug 557706 - Allow LogControl printf method to be overridden (r=nnethercote)
if LogControl.printf is made a virtual method then consumers of nanojit can
more easily control how the output is managed.

--HG--
extra : convert_revision : 7fa9ad2e2d57661e4290df0b3902fd809f19d768
2010-04-07 09:54:30 -07:00
Nicholas Nethercote
76b149adce Bug 557705 - nanojit: clean up codegen of i386 jumps. r=edwsmith.
--HG--
extra : convert_revision : ec93bc283385c4e19bfbfda1aa1ecf94aef932ec
2010-04-06 20:09:32 -07:00
Nicholas Nethercote
6968bfc5ba Windows bustage fix for bug 557483. r=me.
--HG--
extra : convert_revision : 3607404c8ab95af0866fd073ed5d6d51322198b6
2010-04-06 16:04:32 -07:00
Nicholas Nethercote
07fe6e6c98 Bug 557483 - nanojit: convert i386 codegen macros to functions. r=edwsmith.
--HG--
extra : convert_revision : 4062fae8baf26ee9fcdf5c8d1125b2a1fa806515
2010-04-06 15:55:43 -07:00
Nicholas Nethercote
fcb616851a Bustage fix for bug 545295. r=me.
--HG--
extra : convert_revision : 54edfaf7f89566f86822155e90d43ec6198228c4
2010-04-05 18:12:38 -07:00