OSDN Git Service

android-x86/external-swiftshader.git
8 years agoSubzero. ARM32. Enable hwdiv-arm crosstests.
John Porto [Thu, 18 Feb 2016 16:02:10 +0000 (08:02 -0800)]
Subzero. ARM32. Enable hwdiv-arm crosstests.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4076
R=eholk@chromium.org, stichnot@chromium.org

Review URL: https://codereview.chromium.org/1708753002 .

8 years agoSubzero. ARM32. Enable more crosstests.
Eric Holk [Wed, 17 Feb 2016 23:47:22 +0000 (15:47 -0800)]
Subzero. ARM32. Enable more crosstests.

This removes most of the #ifndef ARM32 directives so we get more
thorough testing. It still uses fewer iterations due to running on
Qemu, but I did manually check to be sure that the tests pass without
any special casing at all.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4076
R=jpp@chromium.org, kschimpf@google.com

Review URL: https://codereview.chromium.org/1708903002 .

8 years agoARM32 vector lowering: fabs, scalarize remaining arithmetic operations.
Eric Holk [Wed, 17 Feb 2016 21:03:29 +0000 (13:03 -0800)]
ARM32 vector lowering: fabs, scalarize remaining arithmetic operations.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4076
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1685253003 .

8 years agoARM32 Vector lowering - scalarize select
Eric Holk [Wed, 17 Feb 2016 19:09:48 +0000 (11:09 -0800)]
ARM32 Vector lowering - scalarize select

With this change, we pass the select crosstest.

Since this would have introduced a three-argument version of
scalarizeInstruction, I decided to generalize it using templates.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4076
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1683243003 .

8 years agoSubzero. Removes X8664_STACK_HACK from the crosstests.
John Porto [Wed, 17 Feb 2016 18:16:12 +0000 (10:16 -0800)]
Subzero. Removes X8664_STACK_HACK from the crosstests.

X8664_STACK_HACK was an intrusive way to get the crosstests to run
while x32 support was not implemented in llvm. The hack is longer
needed.

R=eholk@chromium.org

Review URL: https://codereview.chromium.org/1706883003 .

8 years agoAdd fabs(<4 x float>) to the integrated ARM assembler.
Karl Schimpf [Wed, 17 Feb 2016 17:51:23 +0000 (09:51 -0800)]
Add fabs(<4 x float>) to the integrated ARM assembler.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4334
R=eholk@chromium.org, stichnot@chromium.org

Review URL: https://codereview.chromium.org/1697263007 .

8 years agoThis would eliminate a lot of repetitive coding in subzero.
Reed Kotler [Wed, 17 Feb 2016 13:37:01 +0000 (05:37 -0800)]
This would eliminate a lot of repetitive coding in subzero.
It's troublesome that we have to type (this) in several places
but I don't see a away around it yet and it does not add to the line
of code count at all to have to do this; it's just not aesthetic to me.

If this idea is okay, I can make all the similar changes
in the Mips Subzero port.

BUG=

Review URL: https://codereview.chromium.org/1661233002 .

Patch from Reed Kotler <rkotlerimgtec@gmail.com>.

8 years agoSubzero. ARM32. Refactors atomic intrinsics lowering.
John Porto [Wed, 17 Feb 2016 13:00:59 +0000 (05:00 -0800)]
Subzero. ARM32. Refactors atomic intrinsics lowering.

BUG=  https://bugs.chromium.org/p/nativeclient/issues/detail?id=4076
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1409863006 .

8 years agoSubzero: Set the correct target arch in the browser hookup.
Jim Stichnoth [Tue, 16 Feb 2016 13:47:32 +0000 (05:47 -0800)]
Subzero: Set the correct target arch in the browser hookup.

The original implementation hard-coded the target to x86-32.

The new implementation mirrors pnacl-llc by probing the architecture it is running on.

Continues the plumbing work in https://codereview.chromium.org/1698523003/ , toward the goal of enabling sandboxed translator tests for x86-64, particularly on the spec bots.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4077
R=jpp@chromium.org

Review URL: https://codereview.chromium.org/1696123003 .

8 years agoSubzero: Avoid explicit references to RegNumT sentinel value.
Reed Kotler [Tue, 16 Feb 2016 04:01:24 +0000 (20:01 -0800)]
Subzero: Avoid explicit references to RegNumT sentinel value.

There are many occurrences of if (RegNum == RegNumT::NoRegister).

This patch eliminates NoRegister and provides a simpler mechanism for declaring and testing RegNumT values to see if they are undefined.

BUG= none
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1691193002 .

Patch from Reed Kotler <rkotlerimgtec@gmail.com>.

8 years agoAdd move vector to the integrated ARM assembler.
Karl Schimpf [Thu, 11 Feb 2016 23:20:49 +0000 (15:20 -0800)]
Add move vector to the integrated ARM assembler.

Implements a vector move as a vector orr on the corresponding Q
registers.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4334
R=eholk@chromium.org

Review URL: https://codereview.chromium.org/1694533002 .

8 years agoSubzero. ARM32. Nonsfi.
John Porto [Wed, 10 Feb 2016 23:57:16 +0000 (15:57 -0800)]
Subzero. ARM32. Nonsfi.

Adds nonsfi support to the ARM32 backend.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4076
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1665263003 .

8 years agoFix missing register class.
Karl Schimpf [Wed, 10 Feb 2016 21:38:10 +0000 (13:38 -0800)]
Fix missing register class.

Adds class name for the "QtoS" register class.

BUG=None
R=eholk@chromium.org

Review URL: https://codereview.chromium.org/1687163002 .

8 years agoAdd insert/extract element to the integrated ARM assembler.
Karl Schimpf [Wed, 10 Feb 2016 21:30:48 +0000 (13:30 -0800)]
Add insert/extract element to the integrated ARM assembler.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4334
R=jpp@chromium.org

Review URL: https://codereview.chromium.org/1679023008 .

8 years agoARM32 vector ops - scalarize icmp, fcmp and cast.
Eric Holk [Wed, 10 Feb 2016 21:07:06 +0000 (13:07 -0800)]
ARM32 vector ops - scalarize icmp, fcmp and cast.

This is part of a sequence of patches to quickly fill out vector
support by scalarizing the remaining operations. Later we can work to
generate better code.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4076
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1683153003 .

8 years agoSubzero: Use a proper RegNumT type instead of int32_t/SizeT.
Jim Stichnoth [Wed, 10 Feb 2016 19:20:30 +0000 (11:20 -0800)]
Subzero: Use a proper RegNumT type instead of int32_t/SizeT.

Originally, register numbers were represented explicitly as int32_t, particularly so that -1 (or negative values in general) could be used as a NoRegister sentinel value.  This created two problems:

1. It would be better to use a unique name for the type, to distinguish from other explicit int32_t uses such as stack offsets.

2. Apart from NoRegister, register number values ultimately come from unsigned sources like enum values and bitvector positions.  This results in a number of clumsy casts to remove compiler warnings.

This creates a simple RegNumT class to manage this.  It also deletes ordered comparison operators to help catch errors where particular register number orderings are assumed (as opposed to orderings of the encoded register values).

In addition, it creates a RegNumBitVector wrapper class that makes it much cleaner to do range-based for loops over bit vectors that represent RegNumT sets.

BUG= none
R=eholk@chromium.org, jpp@chromium.org

Review URL: https://codereview.chromium.org/1676123002 .

8 years agoFix bug in arith.ll (ARM) tests.
Karl Schimpf [Wed, 10 Feb 2016 18:30:46 +0000 (10:30 -0800)]
Fix bug in arith.ll (ARM) tests.

CL https://codereview.chromium.org/1687553002 introduced a bug when
running:

   make -f Makefile.standalone check-lit FORCEASM=1

The cause of the problem is the way options "--asemble --disassemble"
work in run-pnacl-sz.py. When compiling using "--filetype=asm", the
assembler writes:

   .word 0xe7fedef0

The output after assembly/disassembly is the same as above.

On the other hand, when compiling using "--filetype=iasm", the assembler
writes:

   .byte 0xe7
   .byte 0xfe
   .byte 0xde
   .byte 0xf0

While the same sequence of bytes is assembled, the dissassembly for the
latter generates assembly instruction:

    udf #60896 ; 0xede0

The fix is to not check the generated disassembled instructions. Rather,
have it check if the same word is associated with the assembly
instruction.

Longer term, we should fix the several different ways --filetype=asm
introduces this instruction to match the "udf ..." output.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4076
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1682253003 .

8 years agoARM32 vector division lowering.
Eric Holk [Wed, 10 Feb 2016 01:47:58 +0000 (17:47 -0800)]
ARM32 vector division lowering.

Enables vector division by scalarization.

Also, removed an assert as suggested by Karl in a previous CL:
https://codereview.chromium.org/1646033002/diff/1/src/IceInstARM32.cpp#newcode717

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4076
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1681003002 .

8 years agoSubzero: Fix trailing whitespace errors.
Jim Stichnoth [Wed, 10 Feb 2016 01:25:02 +0000 (17:25 -0800)]
Subzero: Fix trailing whitespace errors.

To view the non-whitespace changes in this CL:

  git cl patch -b testbranch 1678133003
  git diff -w --ignore-blank-lines -b master

Such changes are only in gen_arm32_reg_tables.py and IceInst.cpp.

There are lots of tab characters in .ll files that shouldn't be there, but fixing them would require some thought about how to do consistent formatting, so that's left for later.

BUG= none
R=eholk@chromium.org, kschimpf@google.com

Review URL: https://codereview.chromium.org/1678133003 .

8 years agoChange ARM calls into indirect calls.
Karl Schimpf [Tue, 9 Feb 2016 21:20:38 +0000 (13:20 -0800)]
Change ARM calls into indirect calls.

This is done by putting far pointers (for calls) into a
register and then do an indirect call.

This was done to guarantee that we aren't putting a size limit on ARM32 executables.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4076
R=jpp@chromium.org

Review URL: https://codereview.chromium.org/1687553002 .

8 years agoAdd NOP to ARM IR lowering.
Karl Schimpf [Tue, 9 Feb 2016 21:09:23 +0000 (13:09 -0800)]
Add NOP to ARM IR lowering.

This change allows pnacl-sz to randomly insert NOPs into the generated
code, as is already done with X86.

BUG=None
R=eholk@chromium.org, stichnot@chromium.org

Review URL: https://codereview.chromium.org/1670413002 .

8 years agoFix ARM assembler to pop registers in reverse order of pushes.
Karl Schimpf [Tue, 9 Feb 2016 20:23:55 +0000 (12:23 -0800)]
Fix ARM assembler to pop registers in reverse order of pushes.

BUG=None
R=jpp@chromium.org, stichnot@chromium.org

Review URL: https://codereview.chromium.org/1669973002 .

8 years agoSubzero: ARM32: lowering of vector insert and extract.
Eric Holk [Mon, 8 Feb 2016 23:22:18 +0000 (15:22 -0800)]
Subzero: ARM32: lowering of vector insert and extract.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4076
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1655313002 .

8 years agoSubzero: Clean up some uses of *_cast<>.
Jim Stichnoth [Sun, 7 Feb 2016 17:50:27 +0000 (09:50 -0800)]
Subzero: Clean up some uses of *_cast<>.

Some casts to size_t for use as array indexes are simply unnecessary.

Some explicit declaration types are changed to "auto" to avoid redundancy with the static_cast type.

A few llvm::dyn_cast<> operations are changed to llvm::cast<>, and vice versa.

A few explicit declaration types are changed to "auto" when used with llvm::cast<> and llvm::dynamic_cast<>.  Some of these were missed during an earlier cleansing because of multi-line issues.

There are still a few opportunities related to Variable register numbers, but they are ignored for now because they are being addressed in another CL.

BUG= none
R=jpp@chromium.org

Review URL: https://codereview.chromium.org/1674033002 .

8 years agoSubzero: Fix a mul lowering error.
Jim Stichnoth [Fri, 5 Feb 2016 23:43:24 +0000 (15:43 -0800)]
Subzero: Fix a mul lowering error.

The low-level mul instruction may produce results in a register pair where one register is the explicit dest of the instruction, and the other register is defined through a FakeDef.  If the FakeDef portion is ultimately unused, the FakeDef gets dead-code eliminated, and the register allocator doesn't know that the mul instruction affects the other register.

On x86, this can silently produce incorrect code.  On ARM, the emitter complains that the explicitly represented second dest variable does not have a register.

The fix is to add a FakeUse of the FakeDef'd register.  Unfortunately, this prevents the low-level mul instruction from ever being dead-code eliminated, but that's probably OK because it should have been eliminated at the high level.

BUG= none
R=eholk@chromium.org

Review URL: https://codereview.chromium.org/1678523002 .

8 years agoSubzero: Improve an error message.
Jim Stichnoth [Fri, 5 Feb 2016 18:26:09 +0000 (10:26 -0800)]
Subzero: Improve an error message.

Add the variable name and function name to the fatal error message.

BUG= none
R=kschimpf@google.com

Review URL: https://codereview.chromium.org/1677593003 .

8 years agoSubzero: Cleanup Inst==>Instr.
Jim Stichnoth [Fri, 5 Feb 2016 17:50:02 +0000 (09:50 -0800)]
Subzero: Cleanup Inst==>Instr.

In the beginning, Ice::Inst was called IceInst, and patterns like "IceInst *Inst = ..." made perfect sense.

After the Ice:: name change, "Inst *Inst = ..." continued to compile, mostly.

However, shadowing a type name is clumsy and newer code tends to use "Inst *Instr", so we might as well switch all the instances over.

Some are still called "I" and those are left alone.

BUG= none
R=kschimpf@google.com

Review URL: https://codereview.chromium.org/1665423002 .

8 years agoClean up assembling MOV instructions in the integrated ARM assembler.
Karl Schimpf [Fri, 5 Feb 2016 15:26:41 +0000 (07:26 -0800)]
Clean up assembling MOV instructions in the integrated ARM assembler.

Flattens out MOV's emitIAS methods making it easier to see valid types
for source/destination of the move.

BUG=None
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1665323002 .

8 years agoFix vector load/stores in the ARM assembler.
Karl Schimpf [Thu, 4 Feb 2016 21:54:53 +0000 (13:54 -0800)]
Fix vector load/stores in the ARM assembler.

Fixes emit() methods for load/store to specify the element size (affects
alignment issues).

Also adds assembler methods to generate the corresponding binary forms,
and updates emitIAS() to call these assembler methods.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4334
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1663053008 .

8 years agoSubzero. Uses fixups to calculate addend to relocations.
John Porto [Thu, 4 Feb 2016 18:35:20 +0000 (10:35 -0800)]
Subzero. Uses fixups to calculate addend to relocations.

This CL modifies the ELF emission so the addends are calculated during
object file creation, and not during function code emission.

BUG=
R=kschimpf@google.com, stichnot@chromium.org

Review URL: https://codereview.chromium.org/1669443002 .

8 years agoSubzero. X86. Fixes bundle lock/unlock.
John Porto [Thu, 4 Feb 2016 17:12:02 +0000 (09:12 -0800)]
Subzero. X86. Fixes bundle lock/unlock.

The AutoMemorySandboxer does not have to emit a bundle lock/unlock pair
for memory operations in x8632, but the current does emit it. This CL
changes this behavior.

BUG=
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1661403002 .

8 years agoSubzero. Adds symbolic references to RelocInitializer.
John Porto [Thu, 4 Feb 2016 16:42:48 +0000 (08:42 -0800)]
Subzero. Adds symbolic references to RelocInitializer.

BUG=
R=kschimpf@google.com, stichnot@chromium.org

Review URL: https://codereview.chromium.org/1661193004 .

8 years agoFollowing the newer convention enhances readability and in addition this is a prelude...
Reed Kotler [Wed, 3 Feb 2016 22:40:47 +0000 (14:40 -0800)]
Following the newer convention enhances readability and in addition this is a prelude to some macro changes in unimplemented I would like to make in order to simplify that code.

BUG=
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1667553002 .

Patch from Reed Kotler <rkotlerimgtec@gmail.com>.

8 years agoAdd VMUL vector instructions to the integrated ARM assembler.
Karl Schimpf [Wed, 3 Feb 2016 21:27:01 +0000 (13:27 -0800)]
Add VMUL vector instructions to the integrated ARM assembler.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4334
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1665593002 .

8 years agoAdd vector VEOR instruction to the integrated ARM assembler.
Karl Schimpf [Wed, 3 Feb 2016 21:21:50 +0000 (13:21 -0800)]
Add vector VEOR instruction to the integrated ARM assembler.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4334
R=eholk@chromium.org, stichnot@chromium.org

Review URL: https://codereview.chromium.org/1655363002 .

8 years agoSubzero. Enables moar complex relocation offsets.
John Porto [Tue, 2 Feb 2016 23:06:09 +0000 (15:06 -0800)]
Subzero. Enables moar complex relocation offsets.

This CL allows ConstantRelocatables in to Subzero
have symbolic constants. A symbolic constant is an
assembly label whose value is not known during
lowering, but it is well defined during code
emission.

For example, the following code is now possible in Subzero:

foo:
  push $foo.bar
  jmp target
  nop
  nop
foo.bar:
  ...

BUG=
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1651163002 .

8 years agoFix nits from CL https://codereview.chromium.org/1661633002.
Karl Schimpf [Tue, 2 Feb 2016 21:54:55 +0000 (13:54 -0800)]
Fix nits from CL https://codereview.chromium.org/1661633002.

BUG=None
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1658423002 .

8 years agoAdd FABS intrinsic to the integrated ARM assembler.
Karl Schimpf [Tue, 2 Feb 2016 21:35:45 +0000 (13:35 -0800)]
Add FABS intrinsic to the integrated ARM assembler.

Adds the non-vector forms of fabs.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4334
R=eholk@chromium.org, stichnot@chromium.org

Review URL: https://codereview.chromium.org/1657193003 .

8 years agoAdd VORR instruction to the integrated ARM assembler.
Karl Schimpf [Tue, 2 Feb 2016 20:57:30 +0000 (12:57 -0800)]
Add VORR instruction to the integrated ARM assembler.

Also simplify several switch statements by replacing type entries with
default.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4334

Review URL: https://codereview.chromium.org/1661633002 .

8 years agoAdd VAND to the integrated ARM assembler.
Karl Schimpf [Tue, 2 Feb 2016 19:25:10 +0000 (11:25 -0800)]
Add VAND to the integrated ARM assembler.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4334
R=jpp@chromium.org, stichnot@chromium.org

Review URL: https://codereview.chromium.org/1657353002 .

8 years agoAdd VSUB vector instruction to the integrated ARM assembler.
Karl Schimpf [Tue, 2 Feb 2016 18:19:20 +0000 (10:19 -0800)]
Add VSUB vector instruction to the integrated ARM assembler.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4334
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1651263002 .

8 years agoFix skip_unimplemented for filetype=obj in ARM.
Karl Schimpf [Tue, 2 Feb 2016 18:17:01 +0000 (10:17 -0800)]
Fix skip_unimplemented for filetype=obj in ARM.

Fixes generation of emit text fixup code in integrated ARM assembler to
properly reset the text fixup flag when skipping unimplemented
instructions.

Also fixes broken assertion for the "vmul" instruction.

BUG=None
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1656023002 .

8 years agoSubzero: Improve x86-32's implementation of getGprForType().
Jim Stichnoth [Tue, 2 Feb 2016 17:29:21 +0000 (09:29 -0800)]
Subzero: Improve x86-32's implementation of getGprForType().

Replaces the hacky implementation with essentially the less hacky x86-64 implementation, minus the i64 handling.

Also does a couple of cleanups on the x86-64 side, including removing special-casing for rbp.

BUG= none
R=jpp@chromium.org

Review URL: https://codereview.chromium.org/1657833002 .

8 years agoSubzero: Mips: Lower some i64 arithmetic instructions.
Reed Kotler [Tue, 2 Feb 2016 04:52:19 +0000 (20:52 -0800)]
Subzero: Mips: Lower some i64 arithmetic instructions.

This patch is a MIPS version of this part of ARM patch:
https://codereview.chromium.org/1151663004/

BUG=
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1640913004 .

Patch from Reed Kotler <rkotlerimgtec@gmail.com>.

8 years agoImprove readability of error messages for VADD in ARM assembler.
Karl Schimpf [Mon, 1 Feb 2016 22:40:01 +0000 (14:40 -0800)]
Improve readability of error messages for VADD in ARM assembler.

Fixes readability of error messages, based on comment in CL:

   https://codereview.chromium.org/1652173002

BUG=None
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1654803003 .

8 years agoImplements the vector add instructions in the integrated ARM assembler.
Karl Schimpf [Mon, 1 Feb 2016 21:44:37 +0000 (13:44 -0800)]
Implements the vector add instructions in the integrated ARM assembler.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4334
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1652173002 .

8 years agoSubzero. ARM32. Enables obj output.
John Porto [Mon, 1 Feb 2016 20:43:13 +0000 (12:43 -0800)]
Subzero. ARM32. Enables obj output.

This CL implements two little pieces of the lowering that are needed
for --filetype=obj support in arm. With this change, spec2k builds and
verifies with --filetype=obj

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4076
R=kschimpf@google.com, stichnot@chromium.org

Review URL: https://codereview.chromium.org/1651603003 .

8 years agoSubzero: Fix a -verbose=regalloc bug.
Jim Stichnoth [Mon, 1 Feb 2016 18:41:18 +0000 (10:41 -0800)]
Subzero: Fix a -verbose=regalloc bug.

This is the same as the fix that https://codereview.chromium.org/1531623007 (b19d39cc5fa8dc60c678c2507af02147184f168f) made to the same file.

Otherwise the broken x86-32 implementation of getGprForType() gives an assertion failure.

BUG= none
R=eholk@chromium.org

Review URL: https://codereview.chromium.org/1643383002 .

8 years agoFix nits in committed CL's for the integrated ARM assembler.
Karl Schimpf [Mon, 1 Feb 2016 18:06:03 +0000 (10:06 -0800)]
Fix nits in committed CL's for the integrated ARM assembler.

Fixes issues raised after committing the following CLs:

    https://codereview.chromium.org/1649053002
    https://codereview.chromium.org/1647113003

Also generates a trap instruction if hybrid assembly is turned off, and
the skip implementation command line flag is turned on.

BUG=None
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1654483002 .

8 years agoAdd the trap instruction to the integrated ARM assembler.
Karl Schimpf [Fri, 29 Jan 2016 20:24:01 +0000 (12:24 -0800)]
Add the trap instruction to the integrated ARM assembler.

Note: Once this CL has landed, Subzero's "make -f Makeefile.standalone
check-spec" works in the integrated assembler without using hybrid
assembly.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4334
R=jpp@chromium.org

Review URL: https://codereview.chromium.org/1649053002 .

8 years agoAdd VSQRT instruction to the integrated ARM assembler.
Karl Schimpf [Fri, 29 Jan 2016 17:54:58 +0000 (09:54 -0800)]
Add VSQRT instruction to the integrated ARM assembler.

Also fixes the non-hybrid ARM assembler to display the instruction it
can't translate, making it easier to see what can't be handled. This
change was added to see what still isn't being translated in spec2k
performance tests.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4334
R=jpp@chromium.org

Review URL: https://codereview.chromium.org/1647113003 .

8 years agoAdd multi-source/dest VMOV to the integrated ARM assembler.
Karl Schimpf [Fri, 29 Jan 2016 15:28:05 +0000 (07:28 -0800)]
Add multi-source/dest VMOV to the integrated ARM assembler.

Implements moves between double and i64. It also completes the
implementation of the IR "move" instruction, except for vectors.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4334
R=eholk@chromium.org, jpp@chromium.org, stichnot@chromium.org

Review URL: https://codereview.chromium.org/1642253002 .

8 years agoAdd the VMLS instruction to the integrated ARM assembler.
Karl Schimpf [Fri, 29 Jan 2016 15:23:20 +0000 (07:23 -0800)]
Add the VMLS instruction to the integrated ARM assembler.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4334
R=jpp@chromium.org, stichnot@chromium.org

Review URL: https://codereview.chromium.org/1642303002 .

8 years agoSubzero: Make the register allocator more robust with -reg-use and -reg-exclude.
Jim Stichnoth [Fri, 29 Jan 2016 14:14:31 +0000 (06:14 -0800)]
Subzero: Make the register allocator more robust with -reg-use and -reg-exclude.

The problem is that if you too aggressively -reg-use or -reg-exclude, you can get failures because of inherently high register pressure, and there are also contributions from the "specialty" register classes.

For example, when you combine load optimization, address mode inference, local register availability optimization, and the div instruction, you can end up needing 5 simultaneously live infinite-weight registers.

The fix/enhancement here is to keep track of the "reserve" set of registers for each register class, and allow the register allocator to draw from that as a last resort.  This behavior is guarded by the -reg-reserve flag.

This CL also includes two improvements in lowering sequences to reduce register pressure.

BUG= none
R=kschimpf@google.com

Review URL: https://codereview.chromium.org/1641653004 .

8 years agoARM32 vector mul
Eric Holk [Thu, 28 Jan 2016 21:38:43 +0000 (13:38 -0800)]
ARM32 vector mul

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4076
R=kschimpf@google.com

Review URL: https://codereview.chromium.org/1646033002 .

8 years agoARM32 vector xor
Eric Holk [Thu, 28 Jan 2016 21:37:50 +0000 (13:37 -0800)]
ARM32 vector xor

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4076
R=kschimpf@google.com

Review URL: https://codereview.chromium.org/1640933002 .

8 years agoFix issues raised in CL 1645683003 by stichnot.
Karl Schimpf [Wed, 27 Jan 2016 23:39:32 +0000 (15:39 -0800)]
Fix issues raised in CL 1645683003 by stichnot.

See CL https://codereview.chromium.org/1645683003

BUG=None
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1641753003 .

8 years agoAdd vmov between integers and floats in ARM assembler.
Karl Schimpf [Wed, 27 Jan 2016 23:36:18 +0000 (15:36 -0800)]
Add vmov between integers and floats in ARM assembler.

Adds vmovrs that implements moving from an integer (GP) register and a
float (S) register to the integrated ARM assembler.

The test also shows that moving from a float (S) register to an
integer (GP) register also works.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4334
R=eholk@chromium.org, stichnot@chromium.org

Review URL: https://codereview.chromium.org/1647683002 .

8 years agoARM32 vorr lowering
Eric Holk [Wed, 27 Jan 2016 22:56:22 +0000 (14:56 -0800)]
ARM32 vorr lowering

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4076
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1639403004 .

8 years agoUnimplementedLoweringError's message now includes the instruction name.
Eric Holk [Wed, 27 Jan 2016 22:06:35 +0000 (14:06 -0800)]
UnimplementedLoweringError's message now includes the instruction name.

R=jpp@chromium.org

Review URL: https://codereview.chromium.org/1639063002 .

8 years agoAdd vmov between floating point registers to ARM assembler.
Karl Schimpf [Wed, 27 Jan 2016 21:36:09 +0000 (13:36 -0800)]
Add vmov between floating point registers to ARM assembler.

Adds generating binary versions of vmov for moves between floating
point registers, in the integrated ARM assembler.

Also adds simple lit test. Also simplifies the lit test for push/pop
(which had to be changed anyway since it included vmov instructions as
well).

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4334
R=eholk@chromium.org, jpp@chromium.org

Review URL: https://codereview.chromium.org/1645683003 .

8 years agoSubzero. ARM32. Vector lowering. And.
Eric Holk [Wed, 27 Jan 2016 19:18:29 +0000 (11:18 -0800)]
Subzero. ARM32. Vector lowering. And.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4076
R=jpp@chromium.org, kschimpf@google.com

Review URL: https://codereview.chromium.org/1637173002 .

8 years agoSubzero. ARM32. Vector lowering. Subtract.
Eric Holk [Wed, 27 Jan 2016 19:08:48 +0000 (11:08 -0800)]
Subzero. ARM32. Vector lowering. Subtract.

This CL also changes UnimplementedLoweringError to display the name of
the unimplemented instruction.

Improve test coverage for ARM32 vector load instructions.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4076
R=jpp@chromium.org, kschimpf@google.com

Review URL: https://codereview.chromium.org/1639923002 .

8 years agoSubzero. X8664. Fixes various small bugs.
John Porto [Wed, 27 Jan 2016 14:31:53 +0000 (06:31 -0800)]
Subzero. X8664. Fixes various small bugs.

These were all pointed out by the llvm test suite, the gcc torture
tests, and the scons tests.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4077
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1631383002 .

8 years agoadd doxypypy support to Subzero doxygen
Reed Kotler [Wed, 27 Jan 2016 03:15:50 +0000 (19:15 -0800)]
add doxypypy support to Subzero doxygen

BUG=
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1574883002 .

Patch from Reed Kotler <rkotlerimgtec@gmail.com>.

8 years agoFix template method InstARM32FourAddrFP to only have one definition.
Karl Schimpf [Tue, 26 Jan 2016 23:29:22 +0000 (15:29 -0800)]
Fix template method InstARM32FourAddrFP to only have one definition.

Fixes case where IceTargetLowring.cpp and IceInstARM32.cpp generate
implementations for emitIAS().

BUG=None
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1638123002 .

8 years agoAdd VMLA (floating point) to the integrated ARM assembler.
Karl Schimpf [Tue, 26 Jan 2016 20:25:43 +0000 (12:25 -0800)]
Add VMLA (floating point) to the integrated ARM assembler.

Adds the scalar floating point versions of instruction VMLA to the
integrated ARM assembler.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4334
R=jpp@chromium.org, stichnot@chromium.org

Review URL: https://codereview.chromium.org/1634913005 .

8 years agoSubzero. X8664. Enables RIP-based addressing mode.
John Porto [Tue, 26 Jan 2016 19:44:01 +0000 (11:44 -0800)]
Subzero. X8664. Enables RIP-based addressing mode.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4077
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1616103002 .

8 years agoAdd VMOV(immediate) instructions to the ARM assembler.
Karl Schimpf [Tue, 26 Jan 2016 19:12:29 +0000 (11:12 -0800)]
Add VMOV(immediate) instructions to the ARM assembler.

Adds the vmovs/vmovd instructions to the integerated ARM assembler.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4334
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1624383004 .

8 years agoInitial support for vector addition on ARM32.
Eric Holk [Tue, 26 Jan 2016 18:10:39 +0000 (10:10 -0800)]
Initial support for vector addition on ARM32.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4076
R=jpp@chromium.org

Review URL: https://codereview.chromium.org/1635713002 .

8 years agoClean up register+immediate addresses in ARM.
Karl Schimpf [Mon, 25 Jan 2016 23:58:55 +0000 (15:58 -0800)]
Clean up register+immediate addresses in ARM.

Cleans up the integrated ARM assembler, and its handling of register
memory addresses that can be modified by an immediate value. Handles
each possible encoding of such memory addresses.

Also adds assertions to check that the immediate value has the proper
range for the immediate value, based on the corresponding encoding.

BUG=None
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1630863002 .

8 years agoClean up emitInst() in the integrated ARM assembler.
Karl Schimpf [Mon, 25 Jan 2016 17:54:20 +0000 (09:54 -0800)]
Clean up emitInst() in the integrated ARM assembler.

Moves "EnsureCapacity Buffer" declarations inside emitInst(), so that
all callers need not add the declaration before calling emitInst().

BUG=None
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1636513002 .

8 years agoAdd the VMRS instruction to the integrated ARM assembler.
Karl Schimpf [Mon, 25 Jan 2016 17:17:26 +0000 (09:17 -0800)]
Add the VMRS instruction to the integrated ARM assembler.

Note: Only adds the APSR_nzcv register form of the instruction.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4334
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1636473002 .

8 years agoAdding eholk@chromium.org (Eric Holk) to OWNERS
Eric Holk [Fri, 22 Jan 2016 23:22:47 +0000 (15:22 -0800)]
Adding eholk@chromium.org (Eric Holk) to OWNERS

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4076
R=jpp@chromium.org

Review URL: https://codereview.chromium.org/1615613002 .

8 years agoClean up handling of ARM IR instruction "mov".
Karl Schimpf [Fri, 22 Jan 2016 23:15:50 +0000 (15:15 -0800)]
Clean up handling of ARM IR instruction "mov".

Also adds VMOVSR instruction to the integrated ARM assembler.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4334
R=jpp@chromium.org, stichnot@chromium.org

Review URL: https://codereview.chromium.org/1596613002 .

8 years agoAdd missing vcvt instructions to integrated ARM assembler.
Karl Schimpf [Fri, 22 Jan 2016 23:08:44 +0000 (15:08 -0800)]
Add missing vcvt instructions to integrated ARM assembler.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4334
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1623433004 .

8 years agoSubzero: Make -reg-use and -reg-exclude specific to register class.
Jim Stichnoth [Fri, 22 Jan 2016 21:07:46 +0000 (13:07 -0800)]
Subzero: Make -reg-use and -reg-exclude specific to register class.

The main feature here is that when listing a register via the -reg-use or -reg-exclude option, we can limit the effect to a single register class, instead of applying it across all register classes.  Example:

  pnacl-sz -reg-use i32:eax,i32:ecx,i32:edx -reg-exclude f32:xmm0

Note that without the register class prefix, behavior is the same as before, specifically that the restriction applies to all register classes.

This requires a few high-level changes:

1. We need a mechanism to name *all* register classes, not just the standard ones that map to IceType values.

2. While we're at it, give standard types a more usable name, e.g. "v4i32" instead of "<4 x i32>".

3. Since we've commandeered ":" as the class/register token separator, we change ARM i64 register pair names from e.g. "r0:r1" to "r0r1".

The motivation is that for register allocator torture testing, we'd like to drastically restrict the registers available to e.g. the extensively-used i32 register class, while not overly restricting the seldom-used i32to8 register class (which reflects the set of i32 registers that may trivially truncate to i8).

BUG= none
R=kschimpf@google.com

Review URL: https://codereview.chromium.org/1614273002 .

8 years agoFix vldrs/vstrs handling of immediate offsets in ARM.
Karl Schimpf [Fri, 22 Jan 2016 20:39:51 +0000 (12:39 -0800)]
Fix vldrs/vstrs handling of immediate offsets in ARM.

A previous patch fixed vldrd/vstrd by dividing the immediate offset of
the instruction by 4 before encoding. This does the same for
vldrs/vstrs. It fixes the remaining problems with compiling spec2k
using -filetype=iasm.

It also fixes a minor bug in the divsion by 4, in the case that the
immediate value is negative.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4334
R=jpp@chromium.org

Review URL: https://codereview.chromium.org/1617993005 .

8 years agoAdd vcvt.s32.f32 instruction to the integrated ARM assembler.
Karl Schimpf [Fri, 22 Jan 2016 16:33:50 +0000 (08:33 -0800)]
Add vcvt.s32.f32 instruction to the integrated ARM assembler.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4334
R=jpp@chromium.org, stichnot@chromium.org

Review URL: https://codereview.chromium.org/1611293003 .

8 years agoFix vldrd/vstrd handling of immediate offsets in ARM.
Karl Schimpf [Fri, 22 Jan 2016 16:22:43 +0000 (08:22 -0800)]
Fix vldrd/vstrd handling of immediate offsets in ARM.

Fixes the ARM integrated assembler by dividing the immediate offset
of the instruction by 4 before encoding.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4334
R=jpp@chromium.org, stichnot@chromium.org

Review URL: https://codereview.chromium.org/1619703008 .

8 years agoSubzero. X86. Refactors Address Mode formation.
John Porto [Fri, 22 Jan 2016 15:10:56 +0000 (07:10 -0800)]
Subzero. X86. Refactors Address Mode formation.

Refactors the Address Mode optimization interface.

BUG=
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1605103002 .

8 years agoMerge x86 data and header lowering
David Sehr [Fri, 22 Jan 2016 07:16:58 +0000 (23:16 -0800)]
Merge x86 data and header lowering

BUG=
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1616673004 .

8 years agowith this patch you can run check-lit on a specific test.
Reed Kotler [Fri, 22 Jan 2016 04:33:08 +0000 (20:33 -0800)]
with this patch you can run check-lit on a specific test.
i.e.make -f Makefile.standalone check-lit CHECK_LIT_TESTS=tests_lit/llvm2ice_tests/arith.lll

The default will be for the directory to be in subzero but
it's also possible to create an absolute pathname.

Extended this to work with cross tests.

Added some primitive help for the makefile.

make -f Makefile.standalone help
make -f Makefile.standalone help-check-lit
make -f makefile.standalone help-check-xtest

BUG=
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1582243005 .

Patch from Reed Kotler <rkotlerimgtec@gmail.com>.

8 years agoSubzero: Use sphinx to generate production-quality docs.
Reed Kotler [Fri, 22 Jan 2016 04:22:31 +0000 (20:22 -0800)]
Subzero: Use sphinx to generate production-quality docs.

BUG=
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1571883002 .

Patch from Reed Kotler <rkotlerimgtec@gmail.com>.

8 years agoSubzero: Add to doxygen output the python scripts related to lit.
Reed Kotler [Fri, 22 Jan 2016 02:48:11 +0000 (18:48 -0800)]
Subzero: Add to doxygen output the python scripts related to lit.

BUG=
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1590403005 .

Patch from Reed Kotler <rkotlerimgtec@gmail.com>.

8 years agoSubzero: Always enable --echo-cmd in the lit tests.
Reed Kotler [Fri, 22 Jan 2016 02:47:28 +0000 (18:47 -0800)]
Subzero: Always enable --echo-cmd in the lit tests.

BUG= none
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1604063002 .

Patch from Reed Kotler <rkotlerimgtec@gmail.com>.

8 years agoAdd instruction veord to the integrated ARM assembler.
Karl Schimpf [Thu, 21 Jan 2016 18:16:43 +0000 (10:16 -0800)]
Add instruction veord to the integrated ARM assembler.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4334
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1604043005 .

8 years agoAdd vstr{s,d} to the integrated ARM assembler.
Karl Schimpf [Thu, 21 Jan 2016 18:02:15 +0000 (10:02 -0800)]
Add vstr{s,d} to the integrated ARM assembler.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4334
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1603893003 .

8 years agoAdd vdlr{s,d} to the integrated ARM assembler.
Karl Schimpf [Thu, 21 Jan 2016 17:47:14 +0000 (09:47 -0800)]
Add vdlr{s,d} to the integrated ARM assembler.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4334
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1601103010 .

8 years agoMerged addProlog and addEpilog on x86.
David Sehr [Thu, 21 Jan 2016 16:09:27 +0000 (08:09 -0800)]
Merged addProlog and addEpilog on x86.

BUG=
R=jpp@chromium.org

Review URL: https://codereview.chromium.org/1616483003 .

8 years agoSubzero: Change the szbuild.py --force default.
Jim Stichnoth [Wed, 20 Jan 2016 23:01:39 +0000 (15:01 -0800)]
Subzero: Change the szbuild.py --force default.

With the --force option, the behavior of its default setting is dangerous.  Specifically, it doesn't retranslate by default when you change the szbuild command-line arguments.  This leads to debugging frustration.

Therefore, we change the default setting to be "dumb" and always retranslate.

For bisection debugging, the user will quickly realize that they want to add "--force=0".

BUG= none
R=jpp@chromium.org

Review URL: https://codereview.chromium.org/1608323002 .

8 years agoSubzero. X8664. Fix broken call sequence.
John Porto [Wed, 20 Jan 2016 21:44:30 +0000 (13:44 -0800)]
Subzero. X8664. Fix broken call sequence.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4077
R=sehr@chromium.org

Review URL: https://codereview.chromium.org/1614453002 .

8 years agoSubzero. ARM32 RegTable. Adds missing headers.
John Porto [Wed, 20 Jan 2016 19:18:06 +0000 (11:18 -0800)]
Subzero. ARM32 RegTable. Adds missing headers.

BUG=
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1606383002 .

8 years agoSubzero. ARM32. Fixes infinite loop during address mode formation.
John Porto [Wed, 20 Jan 2016 18:49:38 +0000 (10:49 -0800)]
Subzero. ARM32. Fixes infinite loop during address mode formation.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4076
R=kschimpf@google.com, sehr@chromium.org, stichnot@chromium.org

Review URL: https://codereview.chromium.org/1609753002 .

8 years agoMerge lowerCall and lowerRet between x86 and x64
David Sehr [Wed, 20 Jan 2016 18:00:23 +0000 (10:00 -0800)]
Merge lowerCall and lowerRet between x86 and x64

BUG=
R=jpp@chromium.org, stichnot@chromium.org

Review URL: https://codereview.chromium.org/1592033002 .

8 years agoSubzero: Remove unneeded ScratchRegs.
Jim Stichnoth [Tue, 19 Jan 2016 18:25:37 +0000 (10:25 -0800)]
Subzero: Remove unneeded ScratchRegs.

These static members of the various TargetLowering classes are no longer used anywhere and can therefore be removed.

BUG= none
R=jpp@chromium.org

Review URL: https://codereview.chromium.org/1599803002 .

8 years agoSubzero: Improve the usability of UnimplementedError during lowering.
Jim Stichnoth [Tue, 19 Jan 2016 17:52:22 +0000 (09:52 -0800)]
Subzero: Improve the usability of UnimplementedError during lowering.

Provides a variant of the UnimplementedError macro specifically for use in incomplete target instruction lowering.  When --skip-unimplemented is specified, the UnimplementedLoweringError macro adds FakeUse and FakeDef instructions in order to maintain consistency in liveness analysis.

BUG= none
R=kschimpf@google.com

Review URL: https://codereview.chromium.org/1591893002 .

8 years agoSubzero. ARM32. Fixes vpush/vpop bug.
John Porto [Tue, 19 Jan 2016 14:19:14 +0000 (06:19 -0800)]
Subzero. ARM32. Fixes vpush/vpop bug.

if vpush/vpop needs to emit multiple instructions (because of
non-consecutive registers), then the emitted sequence should be:

vpush list1
vpush list2
...
vpop list2
vpop list1

Subzero was emiting vpop in the wrong order:

vpop list1
vpop list2

These multiple lists push/pop arise because of the way fp32 and fp64
registers are declared (s0 -> s31, d31 -> d0).

This CL modifies fp64 registers so they are declared in ascending
order (d0 -> d31), which fixes subzero temporarily. The appropriate
fix is to change vpop to be emitted in the right order.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4076
R=sehr@chromium.org, stichnot@chromium.org

Review URL: https://codereview.chromium.org/1592663004 .

8 years agoSubzero. RAII NaCl Bundling.
John Porto [Fri, 15 Jan 2016 19:17:55 +0000 (11:17 -0800)]
Subzero. RAII NaCl Bundling.

This CL introduces the TargetLowering::AutoBundle type, which allows
RAII-style bundle emission. As part of the CL, all of the uses of
TargetLowering::_bundle_lock(), and TargetLowering::_bundle_unlock(),
were replaced with uses of the newly introduced type.

BUG=
R=sehr@chromium.org, stichnot@chromium.org

Review URL: https://codereview.chromium.org/1585843007 .

8 years agoImplements include/exclude register lists for translation.
Karl Schimpf [Fri, 15 Jan 2016 19:07:46 +0000 (11:07 -0800)]
Implements include/exclude register lists for translation.

This allows better debugging of register encodings into
instructions, in the integrated assembler.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4334
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1571433004 .