[all-commits] [llvm/llvm-project] 542523: [WebAssembly] Emulate v128.const efficiently

Thomas Lively via All-commits all-commits at lists.llvm.org
Fri Oct 2 00:28:26 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 542523a61a21c13e7f244bcf821b0fdeb8c6bb24
      https://github.com/llvm/llvm-project/commit/542523a61a21c13e7f244bcf821b0fdeb8c6bb24
  Author: Thomas Lively <tlively at google.com>
  Date:   2020-10-02 (Fri, 02 Oct 2020)

  Changed paths:
    M llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp
    M llvm/test/CodeGen/WebAssembly/simd-build-vector.ll

  Log Message:
  -----------
  [WebAssembly] Emulate v128.const efficiently

v128.const was recently implemented in V8, but until it rolls into Chrome
stable, we can't enable it in the WebAssembly backend without breaking origin
trial users. So far we have been lowering build_vectors that would otherwise
have been lowered to v128.const to splats followed by sequences of replace_lane
instructions to initialize each lane individually. That produces large and
inefficient code, so this patch introduces new logic to lower integer vector
constants to a single i64x2.splat where possible, with at most a single
i64x2.replace_lane following it if necessary.

Adapted from a patch authored by @omnisip.

Differential Revision: https://reviews.llvm.org/D88591




More information about the All-commits mailing list