[PATCH] D41908: [X86][MMX] Add support for MMX zero vector creation
Craig Topper via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 12 10:46:06 PST 2018
craig.topper added a comment.
This seems to cause a constant pool to be use for the second _mm_setzero_si64 call.
#include <x86intrin.h>
__m64 bar(__m64 a, __m64 b, __m64 z, __m64 y) {
__m64 c = _mm_add_pi32(a, b);
__m64 d = _mm_mul_su32(c, _mm_setzero_si64());
__m64 e = _mm_add_pi32(d, z);
__m64 f = _mm_add_pi16(a, e);
__m64 g = _mm_add_pi16(b, f);
__m64 h = _mm_mul_su32(g, y);
__m64 i = _mm_add_pi16(h, z);
__m64 j = _mm_add_pi16(i, y);
__m64 k = _mm_add_pi16(j, e);
__m64 l = _mm_add_pi16(k, f);
__m64 m = _mm_add_pi16(l, d);
__m64 n = _mm_mul_su32(m, c);
__m64 o = _mm_add_pi16(n, _mm_setzero_si64());
__m64 p = _mm_add_pi16(o, g);
__m64 q = _mm_mul_su32(p, i);
__m64 r = _mm_mul_su32(q, b);
__m64 s = _mm_add_pi16(r, j);
__m64 t = _mm_add_pi16(s, k);
return t;
}
Repository:
rL LLVM
https://reviews.llvm.org/D41908
More information about the llvm-commits
mailing list