diff options
Diffstat (limited to 'contrib/llvm/lib/Target/AArch64/AArch64AdvSIMDScalarPass.cpp')
-rw-r--r-- | contrib/llvm/lib/Target/AArch64/AArch64AdvSIMDScalarPass.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/contrib/llvm/lib/Target/AArch64/AArch64AdvSIMDScalarPass.cpp b/contrib/llvm/lib/Target/AArch64/AArch64AdvSIMDScalarPass.cpp index 734fb215e6ee..5afe0f4439e7 100644 --- a/contrib/llvm/lib/Target/AArch64/AArch64AdvSIMDScalarPass.cpp +++ b/contrib/llvm/lib/Target/AArch64/AArch64AdvSIMDScalarPass.cpp @@ -36,9 +36,10 @@ #include "AArch64.h" #include "AArch64InstrInfo.h" #include "AArch64RegisterInfo.h" +#include "AArch64Subtarget.h" #include "llvm/ADT/Statistic.h" -#include "llvm/CodeGen/MachineFunctionPass.h" #include "llvm/CodeGen/MachineFunction.h" +#include "llvm/CodeGen/MachineFunctionPass.h" #include "llvm/CodeGen/MachineInstr.h" #include "llvm/CodeGen/MachineInstrBuilder.h" #include "llvm/CodeGen/MachineRegisterInfo.h" @@ -166,6 +167,12 @@ static int getTransformOpcode(unsigned Opc) { return AArch64::ADDv1i64; case AArch64::SUBXrr: return AArch64::SUBv1i64; + case AArch64::ANDXrr: + return AArch64::ANDv8i8; + case AArch64::EORXrr: + return AArch64::EORv8i8; + case AArch64::ORRXrr: + return AArch64::ORRv8i8; } // No AdvSIMD equivalent, so just return the original opcode. return Opc; @@ -371,7 +378,8 @@ bool AArch64AdvSIMDScalar::runOnMachineFunction(MachineFunction &mf) { const TargetMachine &TM = mf.getTarget(); MRI = &mf.getRegInfo(); - TII = static_cast<const AArch64InstrInfo *>(TM.getInstrInfo()); + TII = static_cast<const AArch64InstrInfo *>( + TM.getSubtargetImpl()->getInstrInfo()); // Just check things on a one-block-at-a-time basis. for (MachineFunction::iterator I = mf.begin(), E = mf.end(); I != E; ++I) |