- 20 Jun, 2016 1 commit
-
-
Jim Stichnoth authored
Normally, if a call argument is a rematerializable Variable, it is rematerialized into a GPR (via the "lea" instruction) and then written into the appropriate arg space. This is appropriate for arguments passed on the stack, but for register arguments, it forces an unnecessary copy through another register. This CL allows that intermediate register copy to be removed. The resulting code looks cleaner, but it is unlikely to have much effect on performance - there really aren't register pressure issues because lots of scratch registers are available right before the call (which kills all scratch registers). BUG= none R=jpp@chromium.org Review URL: https://codereview.chromium.org/2080443002 .
-
- 17 Jun, 2016 1 commit
-
-
Thomas Lively authored
BUG=https://bugs.chromium.org/p/nativeclient/issues/detail?id=4374 R=kschimpf@google.com, stichnot@chromium.org Review URL: https://codereview.chromium.org/2079723002 .
-
- 16 Jun, 2016 3 commits
-
-
Sagar Thakur authored
BUG=none R=stichnot@chromium.org Review URL: https://codereview.chromium.org/2067183002 . Patch from Sagar Thakur <sagar.thakur@imgtec.com>.
-
Thomas Lively authored
BUG=https://bugs.chromium.org/p/nativeclient/issues/detail?id=4374 R=kschimpf@google.com Review URL: https://codereview.chromium.org/2067403002 .
-
Jim Stichnoth authored
The x86 lowering of bitcast between integers and floats forced the transfer through a stack slot (the original implementer *cough* *cough* wasn't aware of the movd instruction). This requires excess instructions, but also a store to memory followed immediately by a load from that location is very slow. This fixes the problem by using the movd instruction instead. BUG= none R=jpp@chromium.org Review URL: https://codereview.chromium.org/2077503002 .
-
- 15 Jun, 2016 3 commits
-
-
Thomas Lively authored
BUG=https://bugs.chromium.org/p/nativeclient/issues/detail?id=4374 R=kschimpf@google.com Review URL: https://codereview.chromium.org/2068593003 .
-
Jim Stichnoth authored
The Om1 recipe also includes register allocation (minimal mode). BUG= none R=kschimpf@google.com Review URL: https://codereview.chromium.org/2069953004 .
-
Jim Stichnoth authored
Originally, a call instruction was lowered like this: // %result = call @foo(...) %t1:eax = call foo %result = %t1:eax Because t1 is pre-colored, it is not available as a substitution if the following instruction uses %result as a source operand. To improve this, we copy it through an intermediate temporary: // %result = call @foo(...) %t1:eax = call foo %t2 = %t1:eax %result = %t2 BUG= none R=eholk@chromium.org Review URL: https://codereview.chromium.org/2064073005 .
-
- 14 Jun, 2016 2 commits
-
-
Thomas Lively authored
BUG=https://bugs.chromium.org/p/nativeclient/issues/detail?id=4374 R=stichnot@chromium.org Review URL: https://codereview.chromium.org/2064613006 .
-
Jim Stichnoth authored
The original code legalized *all* i64 constants into a register move, creating unnecessary instructions and slightly higher register pressure in most cases. Generally, immediates can be used in 64-bit instructions as long as the immediate can be represented as a sign-extended 32-bit value. BUG= none R=jpp@chromium.org Review URL: https://codereview.chromium.org/2063053002 .
-
- 13 Jun, 2016 4 commits
-
-
Thomas Lively authored
BUG=https://bugs.chromium.org/p/nativeclient/issues/detail?id=4374 R=kschimpf@google.com Review URL: https://codereview.chromium.org/2054943002 .
-
Mohit Bhakkad authored
R=stichnot@chromium.org Review URL: https://codereview.chromium.org/2060203002 . Patch from Mohit Bhakkad <mohit.bhakkad@imgtec.com>.
-
Sagar Thakur authored
BUG=none R=stichnot@chromium.org Review URL: https://codereview.chromium.org/2051713002 . Patch from Sagar Thakur <sagar.thakur@imgtec.com>.
-
Mohit Bhakkad authored
This patch provides calling convention class for MIPS with support of integer and floating point types R=stichnot@chromium.org Review URL: https://codereview.chromium.org/2052793003 . Patch from Mohit Bhakkad <mohit.bhakkad@imgtec.com>.
-
- 10 Jun, 2016 1 commit
-
-
Jim Stichnoth authored
X86 only. The register availability peephole optimization during lowering disallows available register substitution when the variable is pre-colored. This is for good reasons (too complex to be discussed here). However, that leaves some potential substitutions on the table. Specifically, this happens a lot around register arguments to function calls, both at the call site and in the prolog. The simplest solution seems to be to launder the pre-colored variable through a separate infinite-weight variable, as implemented in this CL through a combination of such copies and extra legalize() calls. There are other situations where this technique can also work, which may be handled in a separate CL. This CL also fixes a problem where the stack pointer adjustment in the prolog is subject to dead-code elimination if the function has no epilog. This would only happen in asm-verbose mode, in the final liveness analysis pass prior to code emission. BUG= none R=eholk@chromium.org Review URL: https://codereview.chromium.org/2052683003 .
-
- 09 Jun, 2016 1 commit
-
-
Mohit Bhakkad authored
R=stichnot@chromium.org Review URL: https://codereview.chromium.org/2050473005 . Patch from Mohit Bhakkad <mohit.bhakkad@imgtec.com>.
-
- 07 Jun, 2016 1 commit
-
-
Thomas Lively authored
Also added a command line flag for AddressSanitizer BUG=None R=kschimpf@google.com Review URL: https://codereview.chromium.org/2042063002 .
-
- 02 Jun, 2016 1 commit
-
-
Srdjan Obucina authored
Introducing instructions for floating point format conversion. These instructions are needed for full implementation of lowerCast and missing floating point arithmetic instruction frem. BUG= R=stichnot@chromium.org Review URL: https://codereview.chromium.org/2024183002 . Patch from Srdjan Obucina <Srdjan.Obucina@imgtec.com>.
-
- 01 Jun, 2016 1 commit
-
-
Sagar Thakur authored
BUG=none R=jpp@chromium.org Review URL: https://codereview.chromium.org/2022063003 . Patch from Sagar Thakur <sagar.thakur@imgtec.com>.
-
- 31 May, 2016 3 commits
-
-
Jim Stichnoth authored
The problem is that because of C++ integral promotion rules, many of the i8 and i16 arithmetic tests were actually being performed as i32 operations. Thus we weren't actually testing everything we meant to test. The fix is to have a python script auto-generate the relevant tests with proper typing. BUG= none R=eholk@chromium.org, jpp@chromium.org, kschimpf@google.com Review URL: https://codereview.chromium.org/2013863002 .
-
Thomas Lively authored
BUG=None R=kschimpf@google.com Review URL: https://codereview.chromium.org/2028733002 .
-
Mohit Bhakkad authored
- InstMIPS32Memory class is added to represent memory related instructions(load/store). I will add remaining load/store instructions if you are okay with this patch. - Changed uncond_br.ll test as it was failing due to hardcoded label no. expected in output. R=jpp@chromium.org, stichnot@chromium.org Review URL: https://codereview.chromium.org/2005823002 . Patch from Mohit Bhakkad <mohit.bhakkad@imgtec.com>.
-
- 30 May, 2016 1 commit
-
-
Sagar Thakur authored
R=stichnot@chromium.org Review URL: https://codereview.chromium.org/2017043002 . Patch from Sagar Thakur <sagar.thakur@imgtec.com>.
-
- 27 May, 2016 1 commit
-
-
Srdjan Obucina authored
This patch introduces floating point registers used for 32-bit operations, and basic handling of FP values in operands. It is partial work needed as a base for further work. R=stichnot@chromium.org Review URL: https://codereview.chromium.org/1993993004 . Patch from Srdjan Obucina <Srdjan.Obucina@imgtec.com>.
-
- 24 May, 2016 2 commits
-
-
Manasij Mukherjee authored
Adds Cfg::localCse for basic-block local common-subexpression elimination If we have t1 = op b c t2 = op b c This pass will replace future uses of t2 in a basic block by t1. To enable, use -enable-experimental in O2 BUG=none R=stichnot@chromium.org Review URL: https://codereview.chromium.org/1997443002 . -
Sagar Thakur authored
Added implementation for conditional branch instructions. R=jpp@chromium.org, stichnot@chromium.org Review URL: https://codereview.chromium.org/1993773004 . Patch from Sagar Thakur <sagar.thakur@imgtec.com>.
-
- 18 May, 2016 1 commit
-
-
Srdjan Obucina authored
This patch adds support for missing integer division instruction sdiv, udiv, srem, urem. R=stichnot@chromium.org Review URL: https://codereview.chromium.org/1989303002 . Patch from Srdjan Obucina <Srdjan.Obucina@imgtec.com>.
-
- 17 May, 2016 1 commit
-
-
Srdjan Obucina authored
This patch adds support for logical operations ashr, lshr and shl. R=stichnot@chromium.org Review URL: https://codereview.chromium.org/1975283002 . Patch from Srdjan Obucina <Srdjan.Obucina@imgtec.com>.
-
- 12 May, 2016 1 commit
-
-
Karl Schimpf authored
Clang doesn't realize that the end of method NaClBitstreamCursor::readArrayAbbreviatedField is unreachable. Add unreachable call to make the compiler happy. BUG=None R=stichnot@chromium.org Review URL: https://codereview.chromium.org/1963193003 .
-
- 10 May, 2016 1 commit
-
-
Jim Stichnoth authored
The README.txt file is new; all other files under pnacl-llvm/ are copied verbatim from the pnacl-llvm repo. BUG= none R=kschimpf@google.com Review URL: https://codereview.chromium.org/1960393002 .
-
- 09 May, 2016 2 commits
-
-
Jim Stichnoth authored
The purpose is to allow pnacl-sz to be built within an LLVM checkout (version 3.9 or later), and not require the complex PNaCl build environment. Within an LLVM checkout, one would do something like the following: cd projects git clone https://chromium.googlesource.com/native_client/pnacl-subzero # change to LLVM build directory cmake -G "Ninja" <path_to_llvm_source_dir> ninja A follow-on CL will add in the PNaCl bitcode reader source files that are needed for compiling and linking. BUG= none R=jpp@chromium.org Review URL: https://codereview.chromium.org/1961743002 .
-
Sagar Thakur authored
This patch adds support for sext, zext, trunc operations on i8, i16, i32 source operand types. Support for i1 source operand type will follow. R=stichnot@chromium.org Review URL: https://codereview.chromium.org/1948093002 . Patch from Sagar Thakur <sagar.thakur@imgtec.com>.
-
- 06 May, 2016 1 commit
-
-
Eric Holk authored
Introduces a new BooleanVariable type which represents zero-extended variables generated from an i1, saving a pointer to the original i1. The Wasm frontend uses this to avoid comparing against 0 if possible when translating branches. This led to about a 12% improvement on the bzip2 spec benchmark. This change also adds the -wasm-disable-bounds-check command line option which omits bounds checking code. BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4369 R=stichnot@chromium.org Review URL: https://codereview.chromium.org/1961583002 .
-
- 02 May, 2016 2 commits
-
-
Jim Stichnoth authored
Also improve some diagnostic output in the Makefile. BUG= none R=jpp@chromium.org Review URL: https://codereview.chromium.org/1941593002 .
-
Eric Holk authored
Previously we were writing large numbers of zeros to the output file. This change only writes out the initialized portion and allocates the full address space at runtime. This reduces compile time by around 50%. This change also adds a couple of WASM-specific timers. BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4369 R=jpp@chromium.org, stichnot@chromium.org Review URL: https://codereview.chromium.org/1938643002 .
-
- 29 Apr, 2016 1 commit
-
-
Eric Holk authored
This change fills in several more runtime functions needed by several benchmarks, as well as changing the buffer handling in the WASM decoder. Now the decoder will resize the buffer as needed to accomodate large .wasm modules. Tracing can now be enabled on runtime functions to aid with debugging. Additionally, runtime failures such as bounds check failures or invalid indirect function calls tell what kind of failure occured. BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4369 R=jpp@chromium.org, stichnot@chromium.org Review URL: https://codereview.chromium.org/1918213003 .
-
- 27 Apr, 2016 1 commit
-
-
John Porto authored
This CL enables subzero to lower shufflevector instructions in x86 using pshufb (only for SSE 4.1) BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4136 BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4077 R=stichnot@chromium.org Review URL: https://codereview.chromium.org/1917863004 .
-
- 26 Apr, 2016 1 commit
-
-
John Porto authored
BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4136 R=stichnot@chromium.org Review URL: https://codereview.chromium.org/1909013002 .
-
- 25 Apr, 2016 2 commits
-
-
Eric Holk authored
Cleans up and generally improves memory handling in WASM. WasmTranslator now outputs the number of pages requested so the runtime can do correct bounds checks. The runtime also initializes the stack pointer correctly (stored at address 1024), so we no longer have to deal with negative pointers. This allows bounds checks to be done with a single comparison against the size of the heap. Because of this, we now support non-power-of-two heap sizes. Sbrk is implemented by having the runtime keep track of the current heap break and incrementing it as necessary. The heap break is initialized to the start of the first page beyond any initialized data in the WASM heap. These changes allow us to pass the complete set of torture tests that are passing on the Wasm waterfall. BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4369 R=kschimpf@google.com, stichnot@chromium.org Review URL: https://codereview.chromium.org/1913153003 .
-
Sagar Thakur authored
R=stichnot@chromium.org Review URL: https://codereview.chromium.org/1898743002 . Patch from Sagar Thakur <sagar.thakur@imgtec.com>.
-