mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-11-01 00:17:01 +00:00
DAG->DAG instruction selection for ia64! "hello world" works, not much else.
use -enable-ia64-dag-isel to turn this on
TODO: delete lowering stuff from the pattern isel
: get operations on predicate bits working
: get other bits of pseudocode going
: use sampo's mulh/mull-using divide-by-constant magic
: *so* many patterns ("extr", "tbit" and "dep" will be fun :)
: add FP
: add a JIT!
: get it working 100%
in short: this'll be happier in a couple of weeks, but it's here now so
the tester can make me feel guilty sooner.
OTHER: there are a couple of fixes to the pattern isel, in particular
making the linker happy with big blobs of fun like pypy.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24058 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -1466,7 +1466,7 @@ pC = pA OR pB
|
||||
*/
|
||||
BuildMI(BB, IA64::PCMPEQUNC, 3, pTemp1)
|
||||
.addReg(IA64::r0).addReg(IA64::r0).addReg(pA);
|
||||
BuildMI(BB, IA64::TPCMPEQ, 3, Result)
|
||||
BuildMI(BB, IA64::TPCMPEQ, 4, Result)
|
||||
.addReg(pTemp1).addReg(IA64::r0).addReg(IA64::r0).addReg(pB);
|
||||
break;
|
||||
}
|
||||
@@ -1957,8 +1957,13 @@ pC = pA OR pB
|
||||
Select(Chain);
|
||||
IA64Lowering.restoreGP(BB);
|
||||
unsigned dummy = MakeReg(MVT::i64);
|
||||
BuildMI(BB, IA64::ADD, 2, dummy).addConstantPoolIndex(CPIdx)
|
||||
.addReg(IA64::r1); // CPI+GP
|
||||
unsigned dummy2 = MakeReg(MVT::i64);
|
||||
BuildMI(BB, IA64::MOVLIMM64, 1, dummy2).addConstantPoolIndex(CPIdx);
|
||||
BuildMI(BB, IA64::ADD, 2, dummy).addReg(dummy2).addReg(IA64::r1); //CPI+GP
|
||||
|
||||
|
||||
// OLD BuildMI(BB, IA64::ADD, 2, dummy).addConstantPoolIndex(CPIdx)
|
||||
// (FIXME!) .addReg(IA64::r1); // CPI+GP
|
||||
if(!isBool)
|
||||
BuildMI(BB, Opc, 1, Result).addReg(dummy);
|
||||
else { // emit a little pseudocode to load a bool (stored in one byte)
|
||||
|
||||
Reference in New Issue
Block a user