OSDN Git Service

android-x86/external-swiftshader.git
8 years agomisc cleanup of Compiler::run
Reed Kotler [Mon, 28 Dec 2015 08:10:06 +0000 (00:10 -0800)]
misc cleanup of Compiler::run

This assumes patch from 1534883005 though still needs to rename
validateAndGenerateBuildAttributes to  dumpBuildAttributes

BUG=
R=stichnot@chromium.org

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

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

8 years agodoxygenize IceClFlags.cpp
Reed Kotler [Mon, 28 Dec 2015 07:57:10 +0000 (23:57 -0800)]
doxygenize IceClFlags.cpp

This is a first cut at this. More can be done and much of this is just moving what is already in the help for the
commands into Doxygen comments. The documentation can be
expanded to better describe the role of the various
command line options.

BUG=
R=stichnot@chromium.org

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

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

8 years agoSubzero. X8664. Fixes filetype=asm.
John Porto [Thu, 24 Dec 2015 21:22:18 +0000 (13:22 -0800)]
Subzero. X8664. Fixes filetype=asm.

Fixes filetype=asm for x8664.

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

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

8 years agocleanup and rename validateAndGenerateBuildAttributes
Reed Kotler [Tue, 22 Dec 2015 21:31:59 +0000 (13:31 -0800)]
cleanup and rename validateAndGenerateBuildAttributes

there is no way for these values of build attributes to be other than 0,1 by c++ rules since they are constexpr bool.

BUG=
R=stichnot@chromium.org

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

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

8 years agoSubzero. x8664. Resurrects the Target.
John Porto [Tue, 22 Dec 2015 16:14:00 +0000 (08:14 -0800)]
Subzero. x8664. Resurrects the Target.

After a hiatus while x32 was not available in nacl's llvm, x8664 is
being revived. Rejoice!

The Target is now back to where it was before: the crosstests pass, and
SPEC2k builds and verifies.

Makefile.standalone still has the crosstests for x8664 disabled while
we wait for all the plumbing that's needed for x32 support on nacl's
toolchain to be available.

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

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

8 years agofix doxygen for IceClFlagsExtra.h
Reed Kotler [Sun, 20 Dec 2015 15:57:28 +0000 (07:57 -0800)]
fix doxygen for IceClFlagsExtra.h

BUG=
R=stichnot@chromium.org

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

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

8 years agoFix minimal build for constant VpushVpopMaxConsecRegs.
Karl Schimpf [Fri, 18 Dec 2015 23:10:55 +0000 (15:10 -0800)]
Fix minimal build for constant VpushVpopMaxConsecRegs.

BUG=None
R=sehr@chromium.org

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

8 years agoAdd VPUSH/VPOP instructions to the ARM32 integrated assembler.
Karl Schimpf [Fri, 18 Dec 2015 16:26:16 +0000 (08:26 -0800)]
Add VPUSH/VPOP instructions to the ARM32 integrated assembler.

Also fixes the corresponding emit methods for vpush and vpop to match
constraint that the maximum number of consecutive registers that can
be pushed/popped is 16.

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

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

8 years agoRemove "Adjuststack" instruction opcode.
Karl Schimpf [Fri, 18 Dec 2015 15:45:05 +0000 (07:45 -0800)]
Remove "Adjuststack" instruction opcode.

Both the X86 and ARM header files define "Adjuststack" in the
enumeration of target specific opcodes. However, it is not used in
either. Removing constant from the enumeration since it is not used.

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

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

8 years agoadd RBIT instruction to the ARM integrated assembler.
Karl Schimpf [Fri, 18 Dec 2015 15:41:06 +0000 (07:41 -0800)]
add RBIT instruction to the ARM integrated assembler.

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

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

8 years agoAdd mls instruction to the ARM integrated assembler.
Karl Schimpf [Fri, 18 Dec 2015 15:36:02 +0000 (07:36 -0800)]
Add mls instruction to the ARM integrated assembler.

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

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

8 years agoFix regression in SSE instruction opcodes
David Sehr [Fri, 18 Dec 2015 00:53:12 +0000 (16:53 -0800)]
Fix regression in SSE instruction opcodes

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

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

8 years agoadd include files from llvm used by subzero into doxygen
Reed Kotler [Fri, 18 Dec 2015 00:34:00 +0000 (16:34 -0800)]
add include files from llvm used by subzero into doxygen

this fixes a lot of problems with the doxygen. for example
with this, now doxygen correctly understands the cl::opt
variables in ClFlags.cpp as variables, whereas previously
it thought they were functions.

it's possible to make the llvm includes more selective but
this is a good first cut and better than including all
of llvm includes.

BUG=
R=stichnot@chromium.org

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

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

8 years agoadd predefines to doxygen
Reed Kotler [Fri, 18 Dec 2015 00:31:55 +0000 (16:31 -0800)]
add predefines to doxygen

this is added for both standard doxygen and clang assisted
doxygen (which cannot be turned on yet without some additions to the third-party toolchain but can be used locally).

the predefines here are the defaults when subzero is built.

not having these creates the bigger issue when clang
assisted parsing is enabled but should be there always.

BUG=
R=stichnot@chromium.org

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

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

8 years agocleanup doxygen for IceClFlags.h
Reed Kotler [Fri, 18 Dec 2015 00:30:26 +0000 (16:30 -0800)]
cleanup doxygen for IceClFlags.h

BUG=
R=stichnot@chromium.org

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

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

8 years agoAdd template parameter for suffix to BinopXmm
David Sehr [Thu, 17 Dec 2015 23:01:30 +0000 (15:01 -0800)]
Add template parameter for suffix to BinopXmm

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

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

8 years agoAdd trap (an UDF instruction) to the ARM integrated Assembler.
Karl Schimpf [Thu, 17 Dec 2015 16:55:10 +0000 (08:55 -0800)]
Add trap (an UDF instruction) to the ARM integrated Assembler.

Uses the same UDF instruction as used for function alignment.

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

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

8 years agoAdd various forms of LDREX/STREX to ARM integrated assembler.
Karl Schimpf [Thu, 17 Dec 2015 16:06:01 +0000 (08:06 -0800)]
Add various forms of LDREX/STREX to ARM integrated assembler.

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

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

8 years agoAdd CLZ instruction to the ARM integrated assembler.
Karl Schimpf [Thu, 17 Dec 2015 16:02:17 +0000 (08:02 -0800)]
Add CLZ instruction to the ARM integrated assembler.

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

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

8 years agoSubzero. Introduces a new LoweringContext::insert() method.
John Porto [Thu, 17 Dec 2015 14:19:34 +0000 (06:19 -0800)]
Subzero. Introduces a new LoweringContext::insert() method.

Emitting an instruction in Subzero requires a fair amount of
boilerplated code:

Context.insert(<InstType>::create(Func, <Args>...));

The ordeal is worse if one needs access to the recently create
instructionL

auto *Instr = <InstType>::create(Func, <Args>...);
Context.insert(Instr);
Instr->...

This CL introduces a new LoweringContext::insert() method:

template <<InstType>, <Args>...>
<InstType> *LoweringContext::insert(<Args>...) {
  auto *New = Inst::create(Node.Cfg, <Args>...);
  insert(New);
  return New;
}

This is essentially a syntatic sugar that allows instructions to be
emitted by using

Context.insert<InstType>(<Args>...);

The compiler should be able to inline the calls (and get rid of the
return value) when appropriate.

make bloat reviews a small increase in translator code size

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

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

8 years agoSubzero: Fix mid-line comments when using -asm-verbose .
Jim Stichnoth [Wed, 16 Dec 2015 20:40:31 +0000 (12:40 -0800)]
Subzero: Fix mid-line comments when using -asm-verbose .

The llvm-mc assembler for x86 uses '#' to start a mid-line comment, while arm32 uses '@'.  Those characters cause syntax errors for the other architecture.  There doesn't seem to be a common character for starting mid-line comments.

However, the /* ... */ style comment works in both (all?) cases.

(The '#' character at the start of a line, preceded by optional whitespace, starts a comment in both cases.)

BUG= none
TEST= ./pydir/szbuild_spec2k.py --force -v -O2 --filetype=asm --sz=--asm-verbose --target=arm32
TEST= ./pydir/szbuild_spec2k.py --force -v -O2 --filetype=asm --sz=--asm-verbose --target=x8632
R=kschimpf@google.com

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

8 years agoSubzero. ARM32. Fixes register aliasing bugs.
John Porto [Wed, 16 Dec 2015 17:52:10 +0000 (09:52 -0800)]
Subzero. ARM32. Fixes register aliasing bugs.

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

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

8 years agoSubzero. ARM32. Introduces explicit register parameter attribute.
John Porto [Wed, 16 Dec 2015 15:48:25 +0000 (07:48 -0800)]
Subzero. ARM32. Introduces explicit register parameter attribute.

The ARM32 backend used to rely on a specific register declaration order
for calling convention register assignment. This CL introduces a new
field in the ARM32 register tables for explicitly setting which
register holds which parameter.

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

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

8 years agoSubzero: Separate "\t" from "opcode" in asm emission.
Jim Stichnoth [Wed, 16 Dec 2015 14:17:58 +0000 (06:17 -0800)]
Subzero: Separate "\t" from "opcode" in asm emission.

Instead of output like this:
  Str << "\tmov\t" << ...
we prefer to use string concatenation:
  Str << "\t" "mov\t" << ...

That way, "git grep -w mov" can be used for more precise pattern matching.

BUG= none
R=kschimpf@google.com

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

8 years agoFuse icmp/fcmp with select
David Sehr [Wed, 16 Dec 2015 01:34:55 +0000 (17:34 -0800)]
Fuse icmp/fcmp with select

Allows the optimization of pairs of operations, including 64-bit compares and
selects as well as preparing for idioms (minsd, maxsd, etc.).

BUG=
R=stichnot@chromium.org

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

8 years agodocument dump
Reed Kotler [Tue, 15 Dec 2015 16:54:14 +0000 (08:54 -0800)]
document dump

BUG=
R=stichnot@chromium.org

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

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

8 years agoadd todo for ALLOW_LLVM_CL
Jim Stichnoth [Tue, 15 Dec 2015 16:53:23 +0000 (08:53 -0800)]
add todo for ALLOW_LLVM_CL

BUG=
R=stichnot@chromium.org

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

8 years agoeliminate code related to --no-ir-gen
Jim Stichnoth [Mon, 14 Dec 2015 05:36:33 +0000 (21:36 -0800)]
eliminate code related to --no-ir-gen

BUG=
R=stichnot@chromium.org

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

8 years agofix doxygen for IceBuildDefs.h
Reed Kotler [Sat, 12 Dec 2015 15:04:17 +0000 (07:04 -0800)]
fix doxygen for IceBuildDefs.h

This is an attempt to make IceBuildDefs more understandable
in the Doxygen produced output, as well as when the various
functions are later referenced from other parts of the subzero docs.

If you look at the doxygen for both the file and the IceBuildDefs namespace, I think it's definitely much
clearer.

I'm still learning Doxygen and always see new things and more that I could have done but Rome was not built in a day.

In my browser:
file:///home/rkotler/nacl_dir/native_client/toolchain_build/src/subzero/docs/html/namespaceIce_1_1BuildDefs.html

and

file:///home/rkotler/nacl_dir/native_client/toolchain_build/src/subzero/docs/html/IceBuildDefs_8h.html

BUG=
R=stichnot@chromium.org

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

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

8 years agoSubzero: Use "auto" per (unwritten) auto coding style.
Jim Stichnoth [Fri, 11 Dec 2015 17:53:00 +0000 (09:53 -0800)]
Subzero: Use "auto" per (unwritten) auto coding style.

auto *Foo = llvm::cast<Foo>(...)
auto *Foo = llvm::dyn_cast<Foo>(...)
auto *Foo = llvm::dyn_cast_or_null<Foo>(...)
auto *Foo = Foo::create(...)

Some instances may have been missed due to line breaks or "const" mismatches.

BUG= none
R=kschimpf@google.com

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

8 years agoClean up remnants of direct use of PNACL_BROWSER_TRANSLATOR
Reed Kotler [Fri, 11 Dec 2015 17:51:47 +0000 (09:51 -0800)]
Clean up remnants of direct use of PNACL_BROWSER_TRANSLATOR

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

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

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

8 years agoAdd some missing encodings in the ARM integrated assembler.
Karl Schimpf [Fri, 11 Dec 2015 17:41:55 +0000 (09:41 -0800)]
Add some missing encodings in the ARM integrated assembler.

Adds the data-processing "register-shifted register" form, as
well as the 5-bit immediate shift for mov instructions (which
unfortunately represent this form differently than other instructions).

This CL fixes the ARM integrated assembler to handle all non-V
(i.e. neon) instructions used by the spec2k test suite except:

   rsc: 59 instances.
   rev: 14 instances.

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

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

8 years agoAdd translation of REV in ARM integrated assembler.
Karl Schimpf [Fri, 11 Dec 2015 17:32:28 +0000 (09:32 -0800)]
Add translation of REV in ARM integrated 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/1517863002 .

8 years agoAdd the RSC instruction to the ARM integrated assembler.
Karl Schimpf [Fri, 11 Dec 2015 17:12:07 +0000 (09:12 -0800)]
Add the RSC instruction to the ARM integrated 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/1516103003 .

8 years agoclean up doxygen comments for main
Reed Kotler [Thu, 10 Dec 2015 21:57:32 +0000 (13:57 -0800)]
clean up doxygen comments for main

the comments now for the main program describe it very well
and the classes and methods in the comments are clickable.

BUG=
R=stichnot@chromium.org

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

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

8 years agoSubzero: Add a proper default for --pnacl-bin-path .
Jim Stichnoth [Thu, 10 Dec 2015 19:08:49 +0000 (11:08 -0800)]
Subzero: Add a proper default for --pnacl-bin-path .

Defining this argument as "required=False, default=None" means it's not really optional.  It's possible to provide a reasonable default like in e.g. szbuild.py.

BUG= none
R=jpp@chromium.org

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

8 years agoAdd DMB instruction to the ARM integrated assembler.
Karl Schimpf [Wed, 9 Dec 2015 15:35:00 +0000 (07:35 -0800)]
Add DMB instruction to the ARM integrated assembler.

Note: There are no updates to the Dart source files, because Dart
doesn't implement this instruction (data memory barrier).

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

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

8 years agoSubzero. ARM32. Show FP lowering some love.
John Porto [Wed, 9 Dec 2015 13:10:58 +0000 (05:10 -0800)]
Subzero. ARM32. Show FP lowering some love.

After some time of being neglected, this CL improves FP lowering for
ARM32.

1) It emits vpush {list}, and vpop {list} when possible.

2) It stops saving alised Vfp registers multiple times (yes, sz used to
save both D and S registers even when they aliased.)

3) Introduces Vmla (fp multiply and accumulate) and Vmls (multiply and
subtract.)

(1 + 2) minimally (but positively) affected SPEC.

(3) caused a 2% geomean improvement.

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

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

8 years agoSubzero: Improve the Doxygen input filter for TODO extraction.
Jim Stichnoth [Wed, 9 Dec 2015 01:44:34 +0000 (17:44 -0800)]
Subzero: Improve the Doxygen input filter for TODO extraction.

The previous filter was too aggressive at changing "//" to "///".  The new filter does that transformation more selectively, starting at a commented TODO line and ending at the next non-commented line.

BUG= none

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

8 years agoFix problems with sandboxing and the ARM integrated assembler.
Karl Schimpf [Tue, 8 Dec 2015 23:37:00 +0000 (15:37 -0800)]
Fix problems with sandboxing and the ARM integrated assembler.

Fixes (at least) the obvious problems with sandboxing and the
integrated assembler. This includes:

Added assembly instruction Nop.

Fixed implementation of padWithNop.

Fixed linking to local label to only fire when persistent (i.e.  last
pass of assembly generation).

Removed restriction on single register push/pop, since the ARM
integrated assembler converts it to a corresopnding str/ldr.

Fixed OperandARM32FlexImm to use smallest rotation value, so that
external assemblers and the ARM integrated assembler will agree on
encoding.

Fixed ARM sandboxing requires test in sandboxing.ll

BUG=None
R=stichnot@chromium.org

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

8 years agoAdd CMN instruction to ARM integrated assembler.
Karl Schimpf [Tue, 8 Dec 2015 22:45:28 +0000 (14:45 -0800)]
Add CMN instruction to ARM integrated assembler.

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

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

8 years agoAdd ASR instruction to the ARM integrated assembler.
Karl Schimpf [Tue, 8 Dec 2015 21:41:38 +0000 (13:41 -0800)]
Add ASR instruction to the ARM integrated assembler.

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

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

8 years agoAdd Sxtb/Sxth instructions to ARM integrated assembler.
Karl Schimpf [Tue, 8 Dec 2015 19:17:23 +0000 (11:17 -0800)]
Add Sxtb/Sxth instructions to ARM integrated assembler.

Refactors code to take advantage of these instructions with
Uxtb/Uxth.

Note. These instructions are used by Subzero, but not Dart.

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

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

8 years agocleanup main
Reed Kotler [Mon, 7 Dec 2015 22:31:01 +0000 (14:31 -0800)]
cleanup main

seems like these two lines are common to both paths and in fact
the different classes allocated are derived from the same common
base class so this makes sense to me.

BUG=
R=stichnot@chromium.org

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

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

8 years agoImplement LSR instructions for the integrated ARM assembler.
Karl Schimpf [Mon, 7 Dec 2015 18:43:34 +0000 (10:43 -0800)]
Implement LSR instructions for the integrated ARM assembler.

Also factors out the body of method lsl() to emitShift(), so
that all forms of shift instructions can use the same code.

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

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

8 years agoSubzero: Doxygenify TODO comments.
Jim Stichnoth [Mon, 7 Dec 2015 16:37:25 +0000 (08:37 -0800)]
Subzero: Doxygenify TODO comments.

Uses a nasty regexp to turn something like:

  // ... TODO(stichnot): Fix
  // this.

into:

  /// ... @todo TODO(stichnot): Fix
  /// this.

so that doxygen can generate the TODO list.

Matches "TODO:" and "TODO " and "TODO(...".

BUG= none
R=rkotlerimgtec@gmail.com

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

8 years agoSubzero. ARM32. Implements sandboxing.
John Porto [Sat, 5 Dec 2015 22:16:25 +0000 (14:16 -0800)]
Subzero. ARM32. Implements sandboxing.

(See https://codereview.chromium.org/1491473002/ for the steps taken
while implementing sandboxing.)

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

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

8 years agoAdd RSB instruction to the ARM integrated assembler.
Karl Schimpf [Fri, 4 Dec 2015 23:11:43 +0000 (15:11 -0800)]
Add RSB instruction to the ARM integrated assembler.

Adds RSB (immediate) and RSB (register) to the ARM integrated assembler.

Also moves udiv method to corresponding (sorted) position in cpp file.

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

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

8 years agoAdd missing form of movt to ARM integrated assembler.
Karl Schimpf [Fri, 4 Dec 2015 23:07:01 +0000 (15:07 -0800)]
Add missing form of movt to ARM integrated assembler.

Add allowing movt to work on integer constants that aren't relocatable.

Also clean up code sharing between movw and movt.

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

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

8 years agoTurn on anonymous namespaces.
Jim Stichnoth [Fri, 4 Dec 2015 16:28:52 +0000 (08:28 -0800)]
Turn on anonymous namespaces.
Once again, the configuration file that comes with Doxygen
seems to have defaults set for those generating API
Documentation and not for documenting the code in a whole
project.

With this turned off, even todos and such are ignored in
an anonymous namespace.

BUG=
R=stichnot@chromium.org

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

8 years agoImprove error handling in the ARM integrated assembler.
Karl Schimpf [Fri, 4 Dec 2015 15:29:10 +0000 (07:29 -0800)]
Improve error handling in the ARM integrated assembler.

Up to now, all error handling in the ARM integrated assembler was
handled by forcing a text fixup. This CL tries to minimize the use of
fixup's to only be applied when there is an unimplemented form of an
instruction. All other cases now generate fatal error messages.

This CL should make it easier to determine what instructions still need
to be extended.

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

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

8 years agoRevert "Subzero. ARM32. Initial sandboxing code."
John Porto [Fri, 4 Dec 2015 15:09:20 +0000 (07:09 -0800)]
Revert "Subzero. ARM32. Initial sandboxing code."

This reverts commit 38ac6bee58b7ef19cbc2b0540315c3c299ca77a9 (mistakenly
TBRed.)

BUG= https://code.google.com/p/nativeclient/issues/detail?id=4076

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

8 years agoSubzero. ARM32. Initial sandboxing code.
John Porto [Fri, 4 Dec 2015 14:51:38 +0000 (06:51 -0800)]
Subzero. ARM32. Initial sandboxing code.

BUG= https://code.google.com/p/nativeclient/issues/detail?id=4076

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

8 years agoSubzero. ARM32. Folding rematerializable offsets in address operands.
John Porto [Thu, 3 Dec 2015 17:45:31 +0000 (09:45 -0800)]
Subzero. ARM32. Folding rematerializable offsets in address operands.

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

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

8 years agofix doxygen brief in subzero header files
Jim Stichnoth [Thu, 3 Dec 2015 00:52:44 +0000 (16:52 -0800)]
fix doxygen brief in subzero header files

There is a consistent mistake in most of the file level subzero doxygen
comments which stems from a problem with brief.

Basically, there are two types of documentation in Doxygen, inline and
structural documentation. File level documentation is always structural
because inline documentation must either come before or after the entity
and for a file that would be impossible.

When you have structure documentation, the brief and detailed is
handled differently and you have to explicity put the \brief qualifier in.

We were only doing this for a few files so when you looked the doxygen
for the source directory, the description was blank for almost all of them.
If you build docs with this patch and look at the "files" and src
directory, you will see all the brief descriptions now.

In addition I deleted the text "This file ..." from the
beginning of all the file desriptions because it's redundant when you look at the doxygen output and adds
no information but takes up space in the descripton.
BUG=
R=stichnot@chromium.org

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

8 years agoClean up use of encode/decode in the ARM integrated assembler.
Karl Schimpf [Wed, 2 Dec 2015 22:20:38 +0000 (14:20 -0800)]
Clean up use of encode/decode in the ARM integrated assembler.

Cleans up function names containing "decode" and "encode". Change
"encode" to represent the conversion of values into bit-sequences, as
they appear in instructions. Change "decode" to represent the extraction
of values from bit sequences.

BUG=None
R=stichnot@chromium.org

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

8 years agoMore coverage of load/stores in ARM integrated assembler.
Karl Schimpf [Wed, 2 Dec 2015 18:24:15 +0000 (10:24 -0800)]
More coverage of load/stores in ARM integrated assembler.

Adds many more cases of ldr{b,h}/str{b,h} instructions to the ARM
integerated assembler.

Also refactored decodeAddress() to deal with the fact that
immediate/register arguments for LDR/LDRB/STR/STRB differ for
LDRH/LDRD/STRH/STRD, by passing in the layout wanted.

Note: LDRD/STRD instructions are currently not used by Subzero.

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

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

8 years agoSubzero. ARM32. Pre-lowers calls to ARM32 Helpers.
John Porto [Tue, 1 Dec 2015 21:00:43 +0000 (13:00 -0800)]
Subzero. ARM32. Pre-lowers calls to ARM32 Helpers.

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

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

8 years agoClean up implementation reading literal constants.
Karl Schimpf [Tue, 1 Dec 2015 19:24:53 +0000 (11:24 -0800)]
Clean up implementation reading literal constants.

Moves APInt and corresponding convert to float method into the pnacl
translator. Renames APInt to BitcodeInt to be more clear that we aren't referring to LLVM's APInt. Rather, it is the representation in PNaCl bitcode.

BUG=None
R=stichnot@chromium.org

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

8 years agoFix nits from previous CLs.
Karl Schimpf [Mon, 30 Nov 2015 19:19:16 +0000 (11:19 -0800)]
Fix nits from previous CLs.

Fixes nits found in landed CL's
https://codereview.chromium.org/1456783003,
https://codereview.chromium.org/1452293003, and
https://codereview.chromium.org/1460523005

BUG=None
R=stichnot@chromium.org

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

8 years agoSubzero: Add newlines for bundle lock/unlock textual asm.
Jim Stichnoth [Fri, 27 Nov 2015 22:22:02 +0000 (14:22 -0800)]
Subzero: Add newlines for bundle lock/unlock textual asm.

BUG= none
R=sehr@chromium.org

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

8 years ago1) Move helper creation to separate method, which also computes the maximum outgoing...
David Sehr [Thu, 26 Nov 2015 21:03:50 +0000 (13:03 -0800)]
1) Move helper creation to separate method, which also computes the maximum outgoing argument size.  The computed size is checked against call lowering's size.
2) Make addProlog use the outgoing argument size and remove the adjustments in lowerCall.
3) Remove AdjustStack instructions and friends.

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

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

8 years agoSubzero: Add "szbuild_spec2k.py --run" option.
Jim Stichnoth [Wed, 25 Nov 2015 23:19:21 +0000 (15:19 -0800)]
Subzero: Add "szbuild_spec2k.py --run" option.

This makes it easier to do bisection debugging.

Note that this could be used to simplify "make -f Makefile.standalone check-spec", but I chose not to do that because shellcmd() buffers all of the stdout until completion, which is not a great user experience (at least for this user).

BUG= none
R=sehr@chromium.org

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

8 years agoSubzero. ARM32. Strength reduce multiplications.
John Porto [Tue, 24 Nov 2015 20:30:01 +0000 (12:30 -0800)]
Subzero. ARM32. Strength reduce multiplications.

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

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

8 years agoSubzero. ARM32. Combine allocas.
John Porto [Mon, 23 Nov 2015 19:43:13 +0000 (11:43 -0800)]
Subzero. ARM32. Combine allocas.

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

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

8 years agoSubzero: Add a makefile config for building with g++.
Jim Stichnoth [Sun, 22 Nov 2015 14:06:34 +0000 (06:06 -0800)]
Subzero: Add a makefile config for building with g++.

This way, the g++ build for the "make presubmit" target gets a separate build directory, and gets to use ccache.

Also, get rid of the "git diff" test, because uncommitted changes are already checked by "git cl upload" and "git cl land".

BUG= none
R=jpp@chromium.org

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

8 years agoCompute the size of the stack space required to send the parameters to a call.
David Sehr [Sat, 21 Nov 2015 05:09:31 +0000 (21:09 -0800)]
Compute the size of the stack space required to send the parameters to a call.

BUG=
R=jpp@chromium.org

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

8 years agoAdd recognizing register-shifted forms in ARM assembler.
Karl Schimpf [Fri, 20 Nov 2015 22:42:33 +0000 (14:42 -0800)]
Add recognizing register-shifted forms in ARM assembler.

Extends the ARM integrated assembler to understand register-shifted
data processing instructions (add, sub, etc.), as well as cmp/test
instructions.

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

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

8 years agoAdd MVN (register, immediate) to ARM integrated assembler.
Karl Schimpf [Fri, 20 Nov 2015 22:26:12 +0000 (14:26 -0800)]
Add MVN (register, immediate) to ARM integrated assembler.

Also removes redundant rule checks in emitType01().

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

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

8 years agoSubzero. ARM32. No more SP frobbing.
John Porto [Fri, 20 Nov 2015 22:17:23 +0000 (14:17 -0800)]
Subzero. ARM32. No more SP frobbing.

Pre-computes the max stack size outgoing arguments, and pre-allocates
it during prolog, deallocating during epilog.

With this CL, there are no more StackAdjustments needed for the ARM32,
which will simplify rematerializing alloca'd variables.

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

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

8 years agoSubzero. Adds a pass for target-specific helper call generation.
John Porto [Fri, 20 Nov 2015 21:50:36 +0000 (13:50 -0800)]
Subzero. Adds a pass for target-specific helper call generation.

This pass gives Targets the ability to pre-lower high-level
instructions that will later be lowered to a target-specific helper,
e.g., 64-bit division on targets that can't natively handle them.

This is a pre-requirement for correct outargs pre-allocation during
function prolog.

R=sehr@chromium.org

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

8 years agoFix race condition in jump table list creation
David Sehr [Fri, 20 Nov 2015 05:47:15 +0000 (21:47 -0800)]
Fix race condition in jump table list creation

BUG=
R=stichnot@chromium.org

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

8 years agoAdd LSL (register, immediate) to ARM integrated assembler.
Karl Schimpf [Thu, 19 Nov 2015 16:10:44 +0000 (08:10 -0800)]
Add LSL (register, immediate) to ARM integrated assembler.

Also does some clean up on emitType01 methods (making optional argument
explicit, and moving rule checks to the lowest level).

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

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

8 years agoSubzero. ARM32. Removes memory legalization warts.
John Porto [Thu, 19 Nov 2015 13:42:59 +0000 (05:42 -0800)]
Subzero. ARM32. Removes memory legalization warts.

This CL removes two warts from the ARM32 backend:
1) during argument lowering, if a stack parameter is assigned a
register, the backend creates a new Variable that references the stack
location with the incoming argument, and _mov() it to the parameter.

2) During stack slot legalization, all _mov(Mem(), Reg) are converted to
stores; and all _mov(Reg, Mem()) are converted to loads.

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

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

8 years agoAdd BL (immediate) and BLX (register) to ARM assembler.
Karl Schimpf [Wed, 18 Nov 2015 16:19:26 +0000 (08:19 -0800)]
Add BL (immediate) and BLX (register) to ARM assembler.

Adds BL and BLX to ARM integrated assembler.

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

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

8 years agoMake more visible with doxygen.
Jim Stichnoth [Wed, 18 Nov 2015 14:25:46 +0000 (06:25 -0800)]
Make more visible with doxygen.
To see the main effect of this, look at the doxygen for file
IceGlobalContext.h to see the effect of turning this on.
Without it, the nested classes are not available because they
are private.

My guess is that often doxygen is used to generate API documents and for that reason, exporting of private info is excluded by default.

BUG=
R=stichnot@chromium.org

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

8 years agoSubzero. ARM32. Introduces the ShAmtImm Operand.
John Porto [Tue, 17 Nov 2015 22:31:25 +0000 (14:31 -0800)]
Subzero. ARM32. Introduces the ShAmtImm Operand.

Creates a special OperandARM32 for representing imm5 used when
performing a shift operation.

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

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

8 years agoAdd LDR/LDRB (register) to ARM integrated assembler.
Karl Schimpf [Tue, 17 Nov 2015 22:02:02 +0000 (14:02 -0800)]
Add LDR/LDRB (register) to ARM integrated assembler.

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

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

8 years agoSubzero: Improve the "make check-presubmit" target.
Jim Stichnoth [Tue, 17 Nov 2015 14:14:05 +0000 (06:14 -0800)]
Subzero: Improve the "make check-presubmit" target.

1. Include a test build (but no link) using g++, to identify errors and warnings before they hit the Windows bots.

2. Move "git diff --quiet" to the end so that the presubmit tests can easily be run before committing locally, if desired.

3. Add "make presubmit" as an alias for "make check-presubmit".

4. Document the individual steps.

BUG= none
R=jpp@chromium.org

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

8 years agoSubzero. ARM32. Improve constant lowering.
John Porto [Tue, 17 Nov 2015 12:58:36 +0000 (04:58 -0800)]
Subzero. ARM32. Improve constant lowering.

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

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

8 years agoSubzero: Fix build warnings/errors under g++.
Jim Stichnoth [Tue, 17 Nov 2015 05:40:20 +0000 (21:40 -0800)]
Subzero: Fix build warnings/errors under g++.

BUG= none
TEST= make -j32 -f Makefile.standalone CXX=g++ LLVM_EXTRA_WARNINGS="-Wno-unknown-pragmas -Wno-unused-parameter -Wno-comment -Wno-enum-compare -Wno-strict-aliasing" STDLIB_FLAGS=
(this command will compile but fail to link)

R=jpp@chromium.org

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

8 years agoSubzero: Fix a performance regression in the register allocator.
Jim Stichnoth [Tue, 17 Nov 2015 01:17:48 +0000 (17:17 -0800)]
Subzero: Fix a performance regression in the register allocator.

The register allocator does not need to be considering rematerializable variables at all.  When it does, there tends to be a big performance cost because the live range of a rematerializable variable tends to be large, leading to lots of expensive overlap computations against register allocation candidates.

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

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

8 years agoReserve space for scalar FP returns in the stack frame
David Sehr [Tue, 17 Nov 2015 01:00:38 +0000 (17:00 -0800)]
Reserve space for scalar FP returns in the stack frame

Rather than bumping the stack pointer around the scalar return sequence in
_fld, ensure the prolog allocates enough space.

BUG=
R=stichnot@chromium.org

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

8 years agoMerge fixed alloca stack adjustments into the prolog
David Sehr [Tue, 17 Nov 2015 00:51:39 +0000 (16:51 -0800)]
Merge fixed alloca stack adjustments into the prolog

Also removes reliance on lowerAlloca entirely for the fixed allocations.

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

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

8 years agoSubzero: Do some cleanup on the regalloc code.
Jim Stichnoth [Mon, 16 Nov 2015 23:59:39 +0000 (15:59 -0800)]
Subzero: Do some cleanup on the regalloc code.

No functional changes, as measured by identical spec2k asm output.

1. Use early "return" and "continue" to reduce "if" nesting.

2. Reflow comments to 80 columns (instead of presumably 79).

3. Add some BuildDefs::dump() tests to reduce translator code size.

BUG= none
R=kschimpf@google.com

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

8 years agoSubzero: Add a "make check-presubmit" target.
Jim Stichnoth [Mon, 16 Nov 2015 20:47:57 +0000 (12:47 -0800)]
Subzero: Add a "make check-presubmit" target.

BUG= none
R=jpp@chromium.org

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

8 years agoFix translation of instruction "move" in ARM integrated assembler.
Karl Schimpf [Mon, 16 Nov 2015 20:38:12 +0000 (12:38 -0800)]
Fix translation of instruction "move" in ARM integrated assembler.

Fixes case where the ARM integrated assembler for class InstARM32Mov
did not revert to using the stand-alone assembler (method emit) to
generate the corresponding assembly instructions(s).

This fixes last known problem with method emitIAS (other than
reverting to the stand-alone assembler if not implemented). Removes
use of workaround flag "-unsafe-ias".

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

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

8 years agoFix MINIMAL=1 build
David Sehr [Sat, 14 Nov 2015 00:59:02 +0000 (16:59 -0800)]
Fix MINIMAL=1 build

Lots of definitions of Target outside of asserts.

BUG=

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

8 years agoEliminate stack adjustment for float-returning functions
David Sehr [Sat, 14 Nov 2015 00:32:37 +0000 (16:32 -0800)]
Eliminate stack adjustment for float-returning functions

This involves changing AdjustStack to grow/shrink the stack, and to use that
operation exclusively to move the StackAdjustment variable in lowering, rather
than in call emission as before.

BUG=
R=stichnot@chromium.org

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

8 years agoSubzero: Find rematerializable variables transitively.
Jim Stichnoth [Fri, 13 Nov 2015 22:28:23 +0000 (14:28 -0800)]
Subzero: Find rematerializable variables transitively.

There are situations where a variable is assigned as the result of a rematerializable alloca instruction, and then another variable is assigned as essentially a known-offset interior pointer into the alloca space.  In this case, the secondary variable is also rematerializable.

We add a pass, after alloca analysis, to find these derived variables and mark them transitively as rematerializable.  Because we lack use-def chains (or in fact any map to variable use locations), we need to iterate over the CFG until convergence.  Fortunately, this is pretty cheap, and not even done unless the alloca analysis seeds it with an initial set of rematerializable variables.

This analysis is only really needed for arithmetic instructions, but we also need to apply it to assignments and pointer-type bitcasts that are added when the IceConverter directly parses a .ll file rather than a .pexe file.

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

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

8 years agoSubzero: Use "pxor reg,reg" to load a floating-point scalar 0.0 value.
Jim Stichnoth [Fri, 13 Nov 2015 22:20:40 +0000 (14:20 -0800)]
Subzero: Use "pxor reg,reg" to load a floating-point scalar 0.0 value.

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

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

8 years agoAdd a getTarget method that returns the x86 target lowering
David Sehr [Thu, 12 Nov 2015 22:41:22 +0000 (14:41 -0800)]
Add a getTarget method that returns the x86 target lowering

Remove a bit of complex repeated template naming.

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

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

8 years agoSubzero: Fix a crash in mem operand dumping.
Jim Stichnoth [Thu, 12 Nov 2015 18:26:34 +0000 (10:26 -0800)]
Subzero: Fix a crash in mem operand dumping.

getOffset() was being dereferenced even when it was nullptr.

BUG= none
R=kschimpf@google.com

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

8 years agoSubzero: Add "--verbose=status" option.
Jim Stichnoth [Thu, 12 Nov 2015 18:25:21 +0000 (10:25 -0800)]
Subzero: Add "--verbose=status" option.

This just prints the function being translated, once per function.  This is useful if there is a crash or fatal error somewhere, and you want to quickly discover which function to set -verbose-focus on.

Also, fixes some warnings/errors in the MINIMAL build.

BUG= none
R=kschimpf@google.com

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

8 years agoFix push/pop emit methods for ARM assembler.
Karl Schimpf [Thu, 12 Nov 2015 18:12:14 +0000 (10:12 -0800)]
Fix push/pop emit methods for ARM assembler.

These two methods introduce multiple instructions. Between each
instruction a newline must be inserted, and a call to startNextInt().
This CL makes sure both cases are met.

BUG=None
R=stichnot@chromium.org

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

8 years agoImplement UXTB and UXTH in the ARM integerated assembler.
Karl Schimpf [Wed, 11 Nov 2015 23:42:55 +0000 (15:42 -0800)]
Implement UXTB and UXTH in the ARM integerated assembler.

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

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

8 years agoFix frame pointer loads/stores in the ARM integrated assembler.
Karl Schimpf [Wed, 11 Nov 2015 23:37:50 +0000 (15:37 -0800)]
Fix frame pointer loads/stores in the ARM integrated assembler.

This CL passes in context from the ARM target lowering, so that
it can figure out what register (SP or FP) and offset to use
when loading/storing variables.

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

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

8 years agoCombine allocas
David Sehr [Wed, 11 Nov 2015 23:01:55 +0000 (15:01 -0800)]
Combine allocas

Partition allocas that occur in the entry block into two categories.  The first is those whose size is fixed and alignment are less than or equal to the stack alignment.  These are emitted relative to a pointer, either in increasing offset relative to the stack pointer or decreasing offset relative to the frame pointer.  (Actually, we are not enabling this optimization for frame pointer frames yet)  The second category is allocas whose size is dynamic or alignment is creater than the stack alignment.  These are emitted relative to a user variable in increasing offset order.  This optimization is only enabled for x86 at O2.

BUG=
R=stichnot@chromium.org

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

8 years agoHandle another form of MOVW in ARM integrated assembler.
Karl Schimpf [Wed, 11 Nov 2015 22:47:49 +0000 (14:47 -0800)]
Handle another form of MOVW in ARM integrated assembler.

Extends assembler movw method to handle integer constants in addition
to relocatable constants, since (32-bit) integer constants are
frequently used in movw instructions.

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

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

8 years agoSubzero. ARM32. New bool folding.
John Porto [Wed, 11 Nov 2015 22:26:57 +0000 (14:26 -0800)]
Subzero. ARM32. New bool folding.

Improves the bool folding logic so that branches are short circuited.

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

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