[PATCH] D56450: [x86] fix horizontal binop matching for 256-bit vectors (PR40243)

Sanjay Patel via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 8 12:54:34 PST 2019


spatel created this revision.
spatel added reviewers: andreadb, RKSimon, craig.topper.
Herald added a subscriber: mcrosier.

This is a partial fix for:
https://bugs.llvm.org/show_bug.cgi?id=40243
...as seen in the integer test, we still need to correct the result when using the existing (old) horizontal op matching function because it does not model the way x86 256-bit horizontal ops return results (each 128-bit half is its own horizontal-op). A potential follow-up change for that is discussed in the bug report.

This generally duplicates a lot of the existing matching code, but we can't just remove that without introducing regressions, so the existing code is renamed and used less often. I'm hoping to get some kind of fix for the miscompile bug in before the release.

I have a follow-up patch that addresses the 'TODO' comment about allowing non-matching vector sizes between the extracts and build vector.


https://reviews.llvm.org/D56450

Files:
  lib/Target/X86/X86ISelLowering.cpp
  test/CodeGen/X86/haddsub-undef.ll
  test/CodeGen/X86/phaddsub-undef.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D56450.180720.patch
Type: text/x-patch
Size: 16253 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190108/df4dfaa0/attachment.bin>


More information about the llvm-commits mailing list