This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c/57832] compiling sha-256 code (xz 5.0.5) generates false warnings when using -march=native on Atom CPU


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57832

--- Comment #1 from Olivier Langlois <olivier.pis.langlois at transport dot alstom.com> ---
Created attachment 30466
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=30466&action=edit
original c file

very macro heavy loop unrolling sha-256 code hand optimized code (I have peaked
into the resulting intermediate code, yuck!) but the code seems ok:

#define blk0(i) (W[i] = data[i])
#define blk2(i) (W[i & 15] += s1(W[(i - 2) & 15]) + W[(i - 7) & 15] \
+ s0(W[(i - 15) & 15]))
...
#define R(i) \
h(i) += S1(e(i)) + Ch(e(i), f(i), g(i)) + SHA256_K[i + j] \
+ (j ? blk2(i) : blk0(i)); \
...
// 64 operations, partially loop unrolled
for (unsigned int j = 0; j < 64; j += 16) {
R( 0); R( 1); R( 2); R( 3);
R( 4); R( 5); R( 6); R( 7);
R( 8); R( 9); R(10); R(11);
R(12); R(13); R(14); R(15);
}

so for j = 0, all W items will be initialized.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]