Displaying 3 results from an estimated 3 matches for "csisd".
Did you mean:
csid
2010 Dec 15
0
[LLVMdev] Optimization passes break machine instructions on new backend
Hello Per,
> The CMPrr instruction is moved down to after the PHI node. My guess is that
> the 'dead' in CFR<imp-def,dead> is to blame, but I can't see what I'm doing
> differently from MSP430/sparc that makes this not work. Any help GREATLY
> appreciated!
It seems like no use of CFR after CMP, indeed. How condbranches on
your platform look like (patterns, etc.)
2010 Dec 15
2
[LLVMdev] Optimization passes break machine instructions on new backend
...he first version it's used on the next row:
%reg16388<def> = CMPrr %reg16384, %reg16385, %CFR<imp-def,dead>;
IntRegs:%reg16388,16384,16385
SKIPCOND 1, *%CFR<imp-use>*
Or doesn't that count?
Following are patters for cmp and skipcond:
def cmpcc : SDNode<"CSISD::CMP", SDTIntBinOp, [SDNPOutFlag]>;
let Defs = [CFR] in {
def CMPrr : InstCS<(outs IntRegs:$dst), (ins IntRegs:$b, IntRegs:$c),
"cmp $c, $dst",
[(set IntRegs:$dst, (cmpcc IntRegs:$b, IntRegs:$c)),
(implicit CFR)]>;
}
let Uses = [CFR], i...
2010 Dec 15
2
[LLVMdev] Optimization passes break machine instructions on new backend
Hello!
I'm working on a new back-end and have hit a bit of a snag. I'm working on
getting selectcc working and have followed the MSP430 model of emitting a
custom CMP and SELECT_CC node and matching that with a pseudo-instruction
that has useCustomEmitter=1. However, my output ends up very wrong, despite
the Machine code being initially correct:
# Machine code for function func:
Function