mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-26 12:43:36 +01:00
d771b3fb3e
-mattr=+alu32 has shown good performance vs. without this attribute. Based on discussion at https://lore.kernel.org/bpf/1ec37838-966f-ec0b-5223-ca9b6eb0860d@fb.com/T/#t cpu version v3 should support -mattr=+alu32. This patch enabled alu32 if cpu version is v3, either specified by user or probed by the llvm. Differential Revision: https://reviews.llvm.org/D69957
65 lines
1.8 KiB
C++
65 lines
1.8 KiB
C++
//===-- BPFSubtarget.cpp - BPF Subtarget Information ----------------------===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file implements the BPF specific subclass of TargetSubtargetInfo.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "BPFSubtarget.h"
|
|
#include "BPF.h"
|
|
#include "llvm/Support/Host.h"
|
|
#include "llvm/Support/TargetRegistry.h"
|
|
|
|
using namespace llvm;
|
|
|
|
#define DEBUG_TYPE "bpf-subtarget"
|
|
|
|
#define GET_SUBTARGETINFO_TARGET_DESC
|
|
#define GET_SUBTARGETINFO_CTOR
|
|
#include "BPFGenSubtargetInfo.inc"
|
|
|
|
void BPFSubtarget::anchor() {}
|
|
|
|
BPFSubtarget &BPFSubtarget::initializeSubtargetDependencies(StringRef CPU,
|
|
StringRef FS) {
|
|
initializeEnvironment();
|
|
initSubtargetFeatures(CPU, FS);
|
|
ParseSubtargetFeatures(CPU, FS);
|
|
return *this;
|
|
}
|
|
|
|
void BPFSubtarget::initializeEnvironment() {
|
|
HasJmpExt = false;
|
|
HasJmp32 = false;
|
|
HasAlu32 = false;
|
|
UseDwarfRIS = false;
|
|
}
|
|
|
|
void BPFSubtarget::initSubtargetFeatures(StringRef CPU, StringRef FS) {
|
|
if (CPU == "probe")
|
|
CPU = sys::detail::getHostCPUNameForBPF();
|
|
if (CPU == "generic" || CPU == "v1")
|
|
return;
|
|
if (CPU == "v2") {
|
|
HasJmpExt = true;
|
|
return;
|
|
}
|
|
if (CPU == "v3") {
|
|
HasJmpExt = true;
|
|
HasJmp32 = true;
|
|
HasAlu32 = true;
|
|
return;
|
|
}
|
|
}
|
|
|
|
BPFSubtarget::BPFSubtarget(const Triple &TT, const std::string &CPU,
|
|
const std::string &FS, const TargetMachine &TM)
|
|
: BPFGenSubtargetInfo(TT, CPU, FS), InstrInfo(),
|
|
FrameLowering(initializeSubtargetDependencies(CPU, FS)),
|
|
TLInfo(TM, *this) {}
|