[PATCH] D41811: X86: Add pattern matching for PMADDWD

Simon Pilgrim via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 12 03:58:07 PST 2018


RKSimon added a comment.

You can probably make this completely generic and support fully random odd/even pairs:

  define <4 x i32> @pmaddwd_8_interleaved(<8 x i16> %A, <8 x i16> %B) {
     %a = sext <8 x i16> %A to <8 x i32>
     %b = sext <8 x i16> %B to <8 x i32>
     %m = mul nsw <8 x i32> %a, %b
     %odd = shufflevector <8 x i32> %m, <8 x i32> undef, <4 x i32> <i32 0, i32 3, i32 4, i32 7>
     %even = shufflevector <8 x i32> %m, <8 x i32> undef, <4 x i32> <i32 1, i32 2, i32 5, i32 6>
     %ret = add <4 x i32> %even, %odd
     ret <4 x i32> %ret
  }


https://reviews.llvm.org/D41811





More information about the llvm-commits mailing list