Displaying 3 results from an estimated 3 matches for "aluop".
Did you mean:
alop
2012 Jan 14
0
[LLVMdev] TableGen: Avoid/Ignore the "no immediates on RHS of commutative node" constraint.
...for
my target, which includes a "dest_reg,immediate,src_reg" format. This is
disallowed for commutative SDAG nodes (e.g. 'add') in LLVM, as the RHS
cannot be an immediate (I assume for optimization purposes). I think I
could achieve this with nested multiclasses, e.g.:
multiclass ALUOp<..> {
...
}
multiclass ALUOp_not_comm<..> {
defm : ALUOp<...>;
// Plus the 'dest_reg,immediate,src_reg' format.
}
defm ADD : ALUOp<..>
defm SUB : ALUOp_not_comm<..>
But this feels slightly dirty to me, not to mention more annoying to
maintain (since in...
2012 Jan 14
0
[LLVMdev] TableGen: Avoid/Ignore the "no immediates on RHS of commutative node" constraint.
...let Pattern = (set R:$dst, (add R:$src, imm:$b);
> }
>
> Because "add" is commutative, the instruction selector will have both
> patterns to match, one with LHS as an immediate and the other one with RHS
> as an immediate.
>
> Regards,
> Ivan
>
> multiclass ALUOp<..> {
>> ...
>> }
>>
>> multiclass ALUOp_not_comm<..> {
>> defm : ALUOp<...>;
>>
>> // Plus the 'dest_reg,immediate,src_reg' format.
>> }
>>
>> defm ADD : ALUOp<..>
>> defm SUB : ALUOp_not_comm<...
2015 Nov 12
2
Help making 'narrow instruct microcode' Backend
...n backend. I'm also developing the target
architecture (maybe to go in an fpga eventually) and I'm intentionally
making it extremely simple. I think of it as a narrow microcode, because
(for example) performing an add requires a sequence of instructions like:
set aluin1 = r1
set aluin2 = r2
aluop add
set r3 = aluout
I've started implementing the backend in clang, and I got this basic
example working by modifying my backend's implementation of
SelectionDAGISel::Select to handle ISD::ADD and transform it into the
above 4-instruction sequence. However, I'd like to expand the archi...