Started 8 days 23 hr ago
Took 1 hr 15 min on green-dragon-18

Success Build rL:362921 - C:362887 - #57389 (Jun 9, 2019 10:42:52 PM)

Revisions
  • http://llvm.org/svn/llvm-project/llvm/trunk : 362921
  • http://llvm.org/svn/llvm-project/cfe/trunk : 362887
  • http://llvm.org/svn/llvm-project/compiler-rt/trunk : 362859
  • http://llvm.org/svn/llvm-project/debuginfo-tests/trunk : 362745
  • http://llvm.org/svn/llvm-project/zorg/trunk : 362851
  • http://llvm.org/svn/llvm-project/libcxx/trunk : 362866
  • http://llvm.org/svn/llvm-project/clang-tools-extra/trunk : 362811
Changes
  1. [DAGCombine] Match a pattern where a wide type scalar value is stored by several narrow stores
    This opportunity is found from spec 2017 557.xz_r. And it is used by the sha encrypt/decrypt. See sha-2/sha512.c

    static void store64(u64 x, unsigned char* y)
    {
        for(int i = 0; i != 8; ++i)
            y[i] = (x >> ((7-i) * 8)) & 255;
    }

    static u64 load64(const unsigned char* y)
    {
        u64 res = 0;
        for(int i = 0; i != 8; ++i)
            res |= (u64)(y[i]) << ((7-i) * 8);
        return res;
    }
    The load64 has been implemented by https://reviews.llvm.org/D26149
    This patch is trying to implement the store pattern.

    Match a pattern where a wide type scalar value is stored by several narrow
    stores. Fold it into a single store or a BSWAP and a store if the targets
    supports it.

    Assuming little endian target:
    i8 *p = ...
    i32 val = ...
    p[0] = (val >> 0) & 0xFF;
    p[1] = (val >> 8) & 0xFF;
    p[2] = (val >> 16) & 0xFF;
    p[3] = (val >> 24) & 0xFF;

    >
    *((i32)p) = val;

    i8 *p = ...
    i32 val = ...
    p[0] = (val >> 24) & 0xFF;
    p[1] = (val >> 16) & 0xFF;
    p[2] = (val >> 8) & 0xFF;
    p[3] = (val >> 0) & 0xFF;

    >
    *((i32)p) = BSWAP(val);

    Differential Revision: https://reviews.llvm.org/D62897 (detail/ViewSVN)
    by qshanz

Started by an SCM change

This run spent:

  • 8.6 sec waiting;
  • 1 hr 15 min build duration;
  • 1 hr 15 min total from scheduled to completion.
LLVM/Clang Warnings: 1 warning.
    Test Result (no failures)