- 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>.
-
- 22 Apr, 2016 2 commits
-
-
Eric Holk authored
Fixes several bugs in code generation, including handling of booleans, comparisons and shifts. The tests that get through code generation now run successfully (except for the tests that are known to fail on https://wasm-stat.us/). This change also includes improvements to the test infrastructure. The wasm test runner has a list of expected failures to skip. The tests now run in parallel, which significantly cuts down the time to run the whole test suite. Finally, there are some minor improvements to the WASM runtime, including an implementation of syscall20, i.e. getpid(). BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4369 R=kschimpf@google.com, stichnot@chromium.org Review URL: https://codereview.chromium.org/1900213002 .
-
Jim Stichnoth authored
This is the result of an improper rebase in the previous CL. BUG= none R=jpp@chromium.org Review URL: https://codereview.chromium.org/1911983002 .
-
- 21 Apr, 2016 4 commits
-
-
Jim Stichnoth authored
The problem is that bitcode like this: %cond = cmp %var, [mem] store ..., mem br cond, target1, target2 would be bool-folded into this: //deleted cmp store ..., mem br (%var==[mem]), target1, target2 And if the memory operands point to the same location, results are incorrect. In addition to stores, this is a problem for RMW instructions, and most call instructions which could perform stores before returning. BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4370 R=eholk@chromium.org, jpp@chromium.org Review URL: https://codereview.chromium.org/1904233002 .
-
John Porto authored
This CL is a first step towards optimizing vector shuffles in Subzero. PNaCl bitcode does not support the shufflevector instruction, so pnacl-clang emits a series of extractelement/insertelement. pnacl-llc is then responsible for performing a pattern match on the output bitcode and rematerialize the shufflevector. With this CL, we enable shufflevector rematerialization in Subzero. To keep this CL simple, we introduce no efficient shufflevector lowering. Instead, we scalarize the rematerialized instructions. BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4136 R=stichnot@chromium.org Review URL: https://codereview.chromium.org/1897243002 .
-
Jim Stichnoth authored
Due to a mistake in the logic in https://codereview.chromium.org/1903553004 , a warning is printed even when LogFilename is properly set to "-". BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4370 R=jpp@chromium.org Review URL: https://codereview.chromium.org/1911713002 .
-
Jim Stichnoth authored
The problem was that the lowering sequence might lead to the rem result %ah being directly moved into an 8-bit register other than al/bl/cl/dl/ah/bh/ch/dh. This is not encodable, and attempting to encode it leads to actually moving from %spl instead of %ah. The machinery to handle this was already available - copy through a temporary with register class RCX86_IsAhRcvr. So this was just a matter of hooking it up for srem/urem. This CL also requires relaxing some checks in the register allocator for when the -reg-reserve option is used. BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4370 R=jpp@chromium.org Review URL: https://codereview.chromium.org/1909853002 .
-
- 20 Apr, 2016 1 commit
-
-
Jim Stichnoth authored
In the browser build only, allows arguments to be explicitly passed to pnacl-sz, in two ways: 1. The SZARGFILE envvar contains the name of a file with arguments, one per line. For each line, initial whitespace is ignored, and lines starting with the '#' comment character are also ignored. 2. The SZARGLIST envvar contains all the arguments, separated by the '|' character. Chrome needs to be started with special options to allow the envvars to be passed through, and also to allow access to the local file system. In addition, specifying "-log=/dev/stderr" or "-o /dev/stderr" gets mapped to std::cerr, in the same way "-" gets mapped to std::cout. BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4370 R=jpp@chromium.org Review URL: https://codereview.chromium.org/1903553004 .
-
- 19 Apr, 2016 1 commit
-
-
Sean Klein authored
This change is required to run "toolchain_build_pnacl.py --cmake", since without it, ALLOW_WASM will be undefined and throw a compilation error. BUG=None R=eholk@chromium.org Review URL: https://codereview.chromium.org/1897323002 .
-
- 18 Apr, 2016 2 commits
-
-
John Porto authored
BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4076 R=eholk@chromium.org, stichnot@chromium.org Review URL: https://codereview.chromium.org/1891243002 .
-
Eric Holk authored
This modifies the torture test script to actually link and run the tests in addition to just translating them. It includes a number of bug fixes as well, particularly in the handling of boolean values. There is some cleanup of memory address handling, and in many cases it can avoid generating useless address computations. BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4369 R=jpp@chromium.org Review URL: https://codereview.chromium.org/1890283002 .
-