Tweaking output.
This commit is contained in:
parent
44b39c797b
commit
b6a9dfe7e0
86
TODO.md
86
TODO.md
|
@ -44,6 +44,92 @@ KeBugCheck:
|
||||||
```
|
```
|
||||||
rlwimix
|
rlwimix
|
||||||
rldiclx
|
rldiclx
|
||||||
|
addcx
|
||||||
|
addex
|
||||||
|
addicx
|
||||||
|
andisx
|
||||||
|
cntlzdx
|
||||||
|
dcbf
|
||||||
|
dcbz
|
||||||
|
divdux
|
||||||
|
divdx
|
||||||
|
divwx
|
||||||
|
eieio
|
||||||
|
eqvx
|
||||||
|
extshx
|
||||||
|
extswx
|
||||||
|
fabsx
|
||||||
|
faddsx
|
||||||
|
faddx
|
||||||
|
fcfidx
|
||||||
|
fcmpu
|
||||||
|
fctidzx
|
||||||
|
fctiwzx
|
||||||
|
fdivsx
|
||||||
|
fdivx
|
||||||
|
fmaddsx
|
||||||
|
fmaddx
|
||||||
|
fmrx
|
||||||
|
fmsubsx
|
||||||
|
fmsubx
|
||||||
|
fmulsx
|
||||||
|
fmulx
|
||||||
|
fnegx
|
||||||
|
fnmsubsx
|
||||||
|
fnmsubx
|
||||||
|
frspx
|
||||||
|
fselx
|
||||||
|
fsqrtx
|
||||||
|
fsubsx
|
||||||
|
fsubx
|
||||||
|
ldarx
|
||||||
|
ldx
|
||||||
|
lfd
|
||||||
|
lfdx
|
||||||
|
lfs
|
||||||
|
lfsu
|
||||||
|
lfsux
|
||||||
|
lfsx
|
||||||
|
lha
|
||||||
|
lhax
|
||||||
|
lhzu
|
||||||
|
lhzx
|
||||||
|
lwa
|
||||||
|
lwarx
|
||||||
|
lwax
|
||||||
|
lwbrx
|
||||||
|
lwzux
|
||||||
|
mftb
|
||||||
|
mulldx
|
||||||
|
nandx
|
||||||
|
negx
|
||||||
|
orcx
|
||||||
|
rldiclx
|
||||||
|
rldicrx
|
||||||
|
rldimix
|
||||||
|
rlwnmx
|
||||||
|
sldx
|
||||||
|
sradix
|
||||||
|
sradx
|
||||||
|
srawx
|
||||||
|
srdx
|
||||||
|
srwx
|
||||||
|
stbx
|
||||||
|
stdcx
|
||||||
|
stdx
|
||||||
|
stfd
|
||||||
|
stfdu
|
||||||
|
stfdx
|
||||||
|
stfiwx
|
||||||
|
stfs
|
||||||
|
stfsu
|
||||||
|
stfsx
|
||||||
|
stwbrx
|
||||||
|
stwcx
|
||||||
|
stwux
|
||||||
|
subfcx
|
||||||
|
subfzex
|
||||||
|
sync
|
||||||
```
|
```
|
||||||
|
|
||||||
### XER CA bit (carry)
|
### XER CA bit (carry)
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
# LLVM paths.
|
# LLVM paths.
|
||||||
# TODO(benvanik): switch based on configuration.
|
# TODO(benvanik): switch based on configuration.
|
||||||
'llvm_path': 'build/llvm/debug/',
|
'llvm_path': 'build/llvm/release/',
|
||||||
'llvm_config': '<(llvm_path)bin/llvm-config',
|
'llvm_config': '<(llvm_path)bin/llvm-config',
|
||||||
'llvm_includedir': '<(llvm_path)/include',
|
'llvm_includedir': '<(llvm_path)/include',
|
||||||
'llvm_cxxflags': [
|
'llvm_cxxflags': [
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
#define XE_OPTION_LOG_INFO 1
|
#define XE_OPTION_LOG_INFO 1
|
||||||
#define XE_OPTION_LOG_DEBUG 1
|
#define XE_OPTION_LOG_DEBUG 1
|
||||||
#define XE_OPTION_LOG_CPU 1
|
#define XE_OPTION_LOG_CPU 1
|
||||||
#define XE_OPTION_LOG_SDB 1
|
#define XE_OPTION_LOG_SDB 0
|
||||||
#define XE_OPTION_LOG_GPU 1
|
#define XE_OPTION_LOG_GPU 1
|
||||||
#define XE_OPTION_LOG_KERNEL 1
|
#define XE_OPTION_LOG_KERNEL 1
|
||||||
#define XE_OPTION_LOG_FS 1
|
#define XE_OPTION_LOG_FS 1
|
||||||
|
|
|
@ -24,6 +24,8 @@ using namespace xe::cpu::sdb;
|
||||||
|
|
||||||
DEFINE_bool(memory_address_verification, false,
|
DEFINE_bool(memory_address_verification, false,
|
||||||
"Whether to add additional checks to generated memory load/stores.");
|
"Whether to add additional checks to generated memory load/stores.");
|
||||||
|
DEFINE_bool(log_codegen, false,
|
||||||
|
"Log codegen to stdout.");
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -75,6 +77,10 @@ FunctionGenerator::FunctionGenerator(
|
||||||
for (size_t n = 0; n < XECOUNT(locals_.gpr); n++) {
|
for (size_t n = 0; n < XECOUNT(locals_.gpr); n++) {
|
||||||
locals_.gpr[n] = NULL;
|
locals_.gpr[n] = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (FLAGS_log_codegen) {
|
||||||
|
printf("%s:\n", fn->name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FunctionGenerator::~FunctionGenerator() {
|
FunctionGenerator::~FunctionGenerator() {
|
||||||
|
@ -269,7 +275,9 @@ void FunctionGenerator::GenerateBasicBlock(FunctionBlock* block) {
|
||||||
BasicBlock* bb = GetBasicBlock(block->start_address);
|
BasicBlock* bb = GetBasicBlock(block->start_address);
|
||||||
XEASSERTNOTNULL(bb);
|
XEASSERTNOTNULL(bb);
|
||||||
|
|
||||||
printf(" bb %.8X-%.8X:\n", block->start_address, block->end_address);
|
if (FLAGS_log_codegen) {
|
||||||
|
printf(" bb %.8X-%.8X:\n", block->start_address, block->end_address);
|
||||||
|
}
|
||||||
|
|
||||||
fn_block_ = block;
|
fn_block_ = block;
|
||||||
bb_ = bb;
|
bb_ = bb;
|
||||||
|
@ -311,14 +319,16 @@ void FunctionGenerator::GenerateBasicBlock(FunctionBlock* block) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i.type->disassemble) {
|
if (FLAGS_log_codegen) {
|
||||||
ppc::InstrDisasm d;
|
if (i.type->disassemble) {
|
||||||
i.type->disassemble(i, d);
|
ppc::InstrDisasm d;
|
||||||
std::string disasm;
|
i.type->disassemble(i, d);
|
||||||
d.Dump(disasm);
|
std::string disasm;
|
||||||
printf(" %.8X: %.8X %s\n", ia, i.code, disasm.c_str());
|
d.Dump(disasm);
|
||||||
} else {
|
printf(" %.8X: %.8X %s\n", ia, i.code, disasm.c_str());
|
||||||
printf(" %.8X: %.8X %s ???\n", ia, i.code, i.type->name);
|
} else {
|
||||||
|
printf(" %.8X: %.8X %s ???\n", ia, i.code, i.type->name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(benvanik): debugging information? source/etc?
|
// TODO(benvanik): debugging information? source/etc?
|
||||||
|
|
|
@ -301,8 +301,6 @@ void ModuleGenerator::PrepareFunction(FunctionSymbol* fn) {
|
||||||
void ModuleGenerator::BuildFunction(CodegenFunction* cgf) {
|
void ModuleGenerator::BuildFunction(CodegenFunction* cgf) {
|
||||||
FunctionSymbol* fn = cgf->symbol;
|
FunctionSymbol* fn = cgf->symbol;
|
||||||
|
|
||||||
printf("%s:\n", fn->name);
|
|
||||||
|
|
||||||
// Setup the generation context.
|
// Setup the generation context.
|
||||||
FunctionGenerator fgen(
|
FunctionGenerator fgen(
|
||||||
memory_, sdb_, fn, context_, gen_module_, cgf->function);
|
memory_, sdb_, fn, context_, gen_module_, cgf->function);
|
||||||
|
|
|
@ -120,8 +120,11 @@ void* XModule::GetProcAddressByOrdinal(uint16_t ordinal) {
|
||||||
X_STATUS XModule::Launch(uint32_t flags) {
|
X_STATUS XModule::Launch(uint32_t flags) {
|
||||||
const xe_xex2_header_t* header = xex_header();
|
const xe_xex2_header_t* header = xex_header();
|
||||||
|
|
||||||
|
XELOGI(XT("Launching module..."));
|
||||||
|
|
||||||
// Set as the main module, while running.
|
// Set as the main module, while running.
|
||||||
kernel_state()->SetExecutableModule(this);
|
kernel_state()->SetExecutableModule(this);
|
||||||
|
fflush(stdout);
|
||||||
|
|
||||||
// Create a thread to run in.
|
// Create a thread to run in.
|
||||||
XThread* thread = new XThread(
|
XThread* thread = new XThread(
|
||||||
|
|
Loading…
Reference in New Issue