Merge pull request #2 from Arisotura/master

Add support for ext0/1/2/3 registers
This commit is contained in:
Gericom 2023-08-27 13:24:01 +02:00 committed by GitHub
commit bda74e1c0e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 22 additions and 8 deletions

View File

@ -10,6 +10,7 @@
#include <atomic> #include <atomic>
#include <thread> #include <thread>
#include <cstdlib>
namespace clang { namespace clang {
namespace clangd { namespace clangd {

View File

@ -162,6 +162,7 @@ SystemInitializerFull::~SystemInitializerFull() {}
#define LLDB_PROCESS_Sparc(op) #define LLDB_PROCESS_Sparc(op)
#define LLDB_PROCESS_WebAssembly(op) #define LLDB_PROCESS_WebAssembly(op)
#define LLDB_PROCESS_XCore(op) #define LLDB_PROCESS_XCore(op)
#define LLDB_PROCESS_Teak(op)
llvm::Error SystemInitializerFull::Initialize() { llvm::Error SystemInitializerFull::Initialize() {
if (auto e = SystemInitializerCommon::Initialize()) if (auto e = SystemInitializerCommon::Initialize())

View File

@ -145,6 +145,7 @@ SystemInitializerTest::~SystemInitializerTest() {}
#define LLDB_PROCESS_Sparc(op) #define LLDB_PROCESS_Sparc(op)
#define LLDB_PROCESS_WebAssembly(op) #define LLDB_PROCESS_WebAssembly(op)
#define LLDB_PROCESS_XCore(op) #define LLDB_PROCESS_XCore(op)
#define LLDB_PROCESS_Teak(op)
llvm::Error SystemInitializerTest::Initialize() { llvm::Error SystemInitializerTest::Initialize() {
if (auto e = SystemInitializerCommon::Initialize()) if (auto e = SystemInitializerCommon::Initialize())

View File

@ -3870,7 +3870,7 @@ void SelectionDAGBuilder::visitGetElementPtr(const User &I) {
// element which holds a pointer. // element which holds a pointer.
unsigned AS = Op0->getType()->getScalarType()->getPointerAddressSpace(); unsigned AS = Op0->getType()->getScalarType()->getPointerAddressSpace();
SDValue N = getValue(Op0); SDValue N = getValue(Op0);
N.dump(); //N.dump();
SDLoc dl = getCurSDLoc(); SDLoc dl = getCurSDLoc();
auto &TLI = DAG.getTargetLoweringInfo(); auto &TLI = DAG.getTargetLoweringInfo();
MVT PtrTy = TLI.getPointerTy(DAG.getDataLayout(), AS); MVT PtrTy = TLI.getPointerTy(DAG.getDataLayout(), AS);
@ -4010,7 +4010,7 @@ void SelectionDAGBuilder::visitGetElementPtr(const User &I) {
if (PtrMemTy != PtrTy && !cast<GEPOperator>(I).isInBounds()) if (PtrMemTy != PtrTy && !cast<GEPOperator>(I).isInBounds())
N = DAG.getPtrExtendInReg(N, dl, PtrMemTy); N = DAG.getPtrExtendInReg(N, dl, PtrMemTy);
DAG.dump(); //DAG.dump();
setValue(&I, N); setValue(&I, N);
} }

View File

@ -151,6 +151,16 @@ std::string DsmReg(RegName a) {
return "st1"; return "st1";
case RegName::st2: case RegName::st2:
return "st2"; return "st2";
case RegName::ext0:
return "ext0";
case RegName::ext1:
return "ext1";
case RegName::ext2:
return "ext2";
case RegName::ext3:
return "ext3";
default: default:
return "[ERROR]" + std::to_string((int)a); return "[ERROR]" + std::to_string((int)a);
} }

View File

@ -136,7 +136,7 @@ bool TeakDAGToDAGISel::SelectLoad(SDNode* node)
const LoadSDNode* ld = cast<LoadSDNode>(node); const LoadSDNode* ld = cast<LoadSDNode>(node);
ISD::MemIndexedMode idxMode = ld->getAddressingMode(); ISD::MemIndexedMode idxMode = ld->getAddressingMode();
MVT vType = ld->getMemoryVT().getSimpleVT(); MVT vType = ld->getMemoryVT().getSimpleVT();
ld->dump(); //ld->dump();
dbgs() << "mode: " << idxMode << "\n"; dbgs() << "mode: " << idxMode << "\n";
if(idxMode != ISD::POST_INC && idxMode != ISD::POST_DEC) if(idxMode != ISD::POST_INC && idxMode != ISD::POST_DEC)
return false; return false;

View File

@ -438,7 +438,7 @@ SDValue TeakTargetLowering::LowerOperation(SDValue Op, SelectionDAG &DAG) const
switch (Op.getOpcode()) switch (Op.getOpcode())
{ {
default: default:
Op.dump(&DAG); //Op.dump(&DAG);
llvm_unreachable("Unimplemented operand"); llvm_unreachable("Unimplemented operand");
//case ISD::SELECT: return LowerSELECT(Op, DAG); //case ISD::SELECT: return LowerSELECT(Op, DAG);
case ISD::SELECT_CC: case ISD::SELECT_CC:
@ -965,8 +965,8 @@ void TeakTargetLowering::ReplaceNodeResults(SDNode *N,
SelectionDAG &DAG) const SelectionDAG &DAG) const
{ {
dbgs() << "Opcode = " << N->getOpcode(); dbgs() << "Opcode = " << N->getOpcode();
DAG.dump(); //DAG.dump();
N->dumpr(&DAG); //N->dumpr(&DAG);
SDLoc dl(N); SDLoc dl(N);
// if(N->getOpcode() == ISD::GlobalAddress) // if(N->getOpcode() == ISD::GlobalAddress)
// { // {

View File

@ -226,7 +226,7 @@ void TeakRegisterInfo::materializeFrameBaseRegister(MachineBasicBlock *MBB,
void TeakRegisterInfo::resolveFrameIndex(MachineInstr &MI, unsigned BaseReg, int64_t Offset) const void TeakRegisterInfo::resolveFrameIndex(MachineInstr &MI, unsigned BaseReg, int64_t Offset) const
{ {
dbgs() << "resolveFrameIndex\n"; dbgs() << "resolveFrameIndex\n";
MI.dump(); //MI.dump();
const MachineFunction &MF = *MI.getParent()->getParent(); const MachineFunction &MF = *MI.getParent()->getParent();
const MachineFrameInfo& MFI = MF.getFrameInfo(); const MachineFrameInfo& MFI = MF.getFrameInfo();
MachineOperand* FIOp; MachineOperand* FIOp;
@ -263,7 +263,7 @@ bool TeakRegisterInfo::shouldCoalesce(MachineInstr *MI, const TargetRegisterClas
const TargetRegisterClass *DstRC, unsigned DstSubReg, const TargetRegisterClass *NewRC, LiveIntervals &LIS) const const TargetRegisterClass *DstRC, unsigned DstSubReg, const TargetRegisterClass *NewRC, LiveIntervals &LIS) const
{ {
dbgs() << "shouldCoalesce\n"; dbgs() << "shouldCoalesce\n";
MI->dump(); //MI->dump();
dbgs() << "SrcRC: " << SrcRC->getID() << "\n"; dbgs() << "SrcRC: " << SrcRC->getID() << "\n";
dbgs() << "SubReg: " << SubReg << "\n"; dbgs() << "SubReg: " << SubReg << "\n";
dbgs() << "DstRC: " << DstRC->getID() << "\n"; dbgs() << "DstRC: " << DstRC->getID() << "\n";

View File

@ -2,6 +2,7 @@
#define BENCHMARK_REGISTER_H #define BENCHMARK_REGISTER_H
#include <vector> #include <vector>
#include <limits>
#include "check.h" #include "check.h"