[PowerPC] Do not use vectors to codegen bswap with Altivec turned off
authorNemanja Ivanovic <nemanja.i.ibm@gmail.com>
Wed, 21 Nov 2018 02:53:50 +0000 (02:53 +0000)
committerNemanja Ivanovic <nemanja.i.ibm@gmail.com>
Wed, 21 Nov 2018 02:53:50 +0000 (02:53 +0000)
commit5cf902ccd42b59179e98409d6e9e1b5c206b9d06
tree0f8ef1915933b8715aae4afd11c98daea728e389
parent27a5896fe86d6ffe22158b6fff9d15a0cc1719e1
[PowerPC] Do not use vectors to codegen bswap with Altivec turned off

We have efficient codegen on P9 for lowering bswap that involves moving
the value into a vector reg and moving it back. However, the check under
which we custom lowered it did not adequately reflect the actual requirements.
It required only that the subtarget be an implementation of ISA 3.0 since all
compliant implementations have to provide the vector instructions.
However, the kernel builds have a valid use case for -mno-altivec -mcpu=pwr9
(i.e. don't emit vector code, don't have to save vector regs for context
switch). So we should require the correct features for this lowering.
Fixes https://bugs.llvm.org/show_bug.cgi?id=39334

llvm-svn: 347376
llvm/lib/Target/PowerPC/PPCISelLowering.cpp
llvm/test/CodeGen/PowerPC/bswap64.ll