math/mpx-mul4-x86-sse2.S: Use `SHUF' instead of hardwired constants.
authorMark Wooding <mdw@distorted.org.uk>
Sat, 5 Nov 2016 20:38:31 +0000 (20:38 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Sat, 5 Nov 2016 20:38:31 +0000 (20:38 +0000)
math/mpx-mul4-x86-sse2.S

index c0e1a78..922de33 100644 (file)
   .ifnes "\d3", "nil"
        movdqa  \d3, [\s + 16]          // (s'_2, s'_3, s''_2, s''_3)
   .endif
-       pshufd  \d0, \d0, 0b11001100    // (r_i, ?, r_i, ?)
+       pshufd  \d0, \d0, SHUF(3, 0, 3, 0) // (r_i, ?, r_i, ?)
   .ifnes "\d1", "nil"
        psrldq  \d1, 4                  // (s'_1, s''_0, s''_1, 0)
   .endif
        // carry registers.  On completion, XMM3 is clobbered.  If CC is
        // `nil', then the contribution which would have been added to it is
        // left in C.
-       pshufd  xmm3, \c, 0b10111111    // (?, ?, ?, t = c'' mod B)
+       pshufd  xmm3, \c, SHUF(2, 3, 3, 3) // (?, ?, ?, t = c'' mod B)
        psrldq  xmm3, 12                // (t, 0, 0, 0) = (t, 0)
        pslldq  xmm3, 2                 // (t b, 0)
        paddq   \c, xmm3                // (c' + t b, c'')
        punpcklwd \c, \z                // (c'_0, c''_0, c'_1, c''_1)
        punpckhwd \d, \z                // (c'_2, c''_2, c'_3, c''_3)
   .endif
-       pshufd  \a, \a, 0b11011000      // (a'_0, a'_1, a''_0, a''_1)
-       pshufd  \b, \b, 0b11011000      // (a'_2, a'_3, a''_2, a''_3)
+       pshufd  \a, \a, SHUF(3, 1, 2, 0) // (a'_0, a'_1, a''_0, a''_1)
+       pshufd  \b, \b, SHUF(3, 1, 2, 0) // (a'_2, a'_3, a''_2, a''_3)
   .ifnes "\c", "nil"
-       pshufd  \c, \c, 0b11011000      // (c'_0, c'_1, c''_0, c''_1)
-       pshufd  \d, \d, 0b11011000      // (c'_2, c'_3, c''_2, c''_3)
+       pshufd  \c, \c, SHUF(3, 1, 2, 0) // (c'_0, c'_1, c''_0, c''_1)
+       pshufd  \d, \d, SHUF(3, 1, 2, 0) // (c'_2, c'_3, c''_2, c''_3)
   .endif
 .endm