Replace SHL+ADD with MAD

pull/330/head
jsteube 8 years ago
parent 1d15ee40be
commit 89dcaeb76d

@ -359,37 +359,29 @@ inline u32x rotr32 (const u32x a, const u32 n)
#if VECT_SIZE == 2
asm ("\n"
"shl.b32 %4, %2, %6;\n"
"shl.b32 %5, %3, %6;\n"
"shr.b32 %0, %2, %7;\n"
"shr.b32 %1, %3, %7;\n"
"add.u32 %0, %0, %4;\n"
"add.u32 %1, %1, %5;\n"
asm ("shr.b32 %4, %2, %6;"
"shr.b32 %5, %3, %6;"
"mad.lo.u32 %0, %2, %7, %4;"
"mad.lo.u32 %1, %3, %7, %5;"
: "=r"(r.s0),
"=r"(r.s1)
: "r"(a.s0),
"r"(a.s1),
"r"(t.s0),
"r"(t.s1),
"r"(32 - n),
"r"(n));
"r"(n),
"r"(1 << (32 - n)));
#elif VECT_SIZE == 4
asm ("\n"
"shl.b32 %8, %4, %12;\n"
"shl.b32 %9, %5, %12;\n"
"shl.b32 %10, %6, %12;\n"
"shl.b32 %11, %7, %12;\n"
"shr.b32 %0, %4, %13;\n"
"shr.b32 %1, %5, %13;\n"
"shr.b32 %2, %6, %13;\n"
"shr.b32 %3, %7, %13;\n"
"add.u32 %0, %0, %8;\n"
"add.u32 %1, %1, %9;\n"
"add.u32 %2, %2, %10;\n"
"add.u32 %3, %3, %11;\n"
asm ("shr.b32 %8, %4, %12;\n"
"shr.b32 %9, %5, %12;\n"
"shr.b32 %10, %6, %12;\n"
"shr.b32 %11, %7, %12;\n"
"mad.lo.u32 %0, %4, %13, %8;\n"
"mad.lo.u32 %1, %5, %13, %9;\n"
"mad.lo.u32 %2, %6, %13, %10;\n"
"mad.lo.u32 %3, %7, %13, %11;\n"
: "=r"(r.s0),
"=r"(r.s1),
"=r"(r.s2),
@ -402,8 +394,8 @@ inline u32x rotr32 (const u32x a, const u32 n)
"r"(t.s1),
"r"(t.s2),
"r"(t.s3),
"r"(32 - n),
"r"(n));
"r"(n),
"r"(1 << (32 - n)));
#else

Loading…
Cancel
Save