diff options
author | David Majnemer <david.majnemer@gmail.com> | 2016-05-05 06:00:56 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2016-05-05 06:00:56 +0000 |
commit | 911d0e3c21e232047fa52b53616adccd7c87fc75 (patch) | |
tree | 9ebc971fbfe331e2dfd3ed55c4a27f298fe774af /lldb/packages/Python/lldbsuite/test/python_api | |
parent | 0c090362329baf08e3ac367e1c5415c3f3f183cc (diff) | |
download | bcm5719-llvm-911d0e3c21e232047fa52b53616adccd7c87fc75.tar.gz bcm5719-llvm-911d0e3c21e232047fa52b53616adccd7c87fc75.zip |
[X86] Use the right type when folding xor (truncate (shift)) -> setcc
The result type of setcc is dependent on whether or not AVX512 is
present.
We had an X86-specific DAG-combine which assumed that the result type
should be i8 when it could be i1.
This meant that we would generate illegal setccs which LowerSETCC did
not like.
Instead, use an appropriate type and zero extend to i8.
Also, there were some scenarios where the fold should have fired but
didn't because we were overly cautious about the types. This meant that
we generated:
shrl $31, %edi
andl $1, %edi
kmovw %edi, %k0
kxnorw %k0, %k0, %k1
kshiftrw $15, %k1, %k1
kxorw %k1, %k0, %k0
kmovw %k0, %eax
instead of:
testl %edi, %edi
setns %al
This fixes PR27638.
llvm-svn: 268609
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/python_api')
0 files changed, 0 insertions, 0 deletions