search for: itin

Displaying 20 results from an estimated 61 matches for "itin".

Did you mean: iain
2014 Dec 26
2
[LLVMdev] X86 disassembler & assembler mismatch
...mp_packed - sse 1 & 2 compare packed instructions > multiclass sse12_cmp_packed<RegisterClass RC, X86MemOperand x86memop, > Operand CC, Intrinsic Int, string asm, > string asm_alt, Domain d, > OpndItins itins = SSE_ALU_F32P> { > def rri : PIi8<0xC2, MRMSrcReg, > (outs RC:$dst), (ins RC:$src1, RC:$src2, CC:$cc), asm, > [(set RC:$dst, (Int RC:$src1, RC:$src2, imm:$cc))], > itins.rr, d>, > Sched<[WriteFAdd]>; > d...
2012 Jul 24
2
[LLVMdev] Instruction Encodings in TableGen
...1013 [(set GPRC:$rA, (and GPRC:$rS, GPRC:$rB))]>; Okay, so rA, rS, and rB are register operands. The TableGen classes are defined as: 315 class XForm_base_r3xo_swapped 316 <bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr, 317 InstrItinClass itin> 318 : I<opcode, OOL, IOL, asmstr, itin> { 319 bits<5> A; 320 bits<5> RST; 321 bits<5> B; 322 323 bit RC = 0; // set by isDOT 324 325 let Inst{6-10} = RST; 326 let Inst{11-15} = A; 327 let Inst{16-20} = B; 328 let Inst{21-30} = xo; 329 l...
2016 May 04
4
Conditional tablegen expressions with math ops?
...ister is in is just: r%4 Which brings me to tablegen: We've got this in our specialized ArchInstrInfo.td: // r1 = r2 op r3 // class ArithOp_RR< bits<7> op, string instr_asm, SDNode opNode, OperandInfo info, InstrItinClass itin > : FR3< op, (outs info.regClass:$r1), (ins info.regClass:$r2, info.regClass:$r3), instr_asm # "\t\t$r1, $r2, $r3, " # info.sizeStr, [(set info.regClass:$r1, (opNode info.regClass:$r2, info.regClass:$r3))], itin > { le...
2014 Dec 26
2
[LLVMdev] X86 disassembler & assembler mismatch
hi, some instructions mismatch between assembler & disassembler, like below. it seems this happens with all SSECC related instructions? thanks, Jun $ echo "cmpps xmm1, xmm2, 23" | ./Release+Asserts/bin/llvm-mc -assemble -triple=x86_64 --output-asm-variant=1 -x86-asm-syntax=intel -show-encoding .text cmpps xmm1, xmm2, 23 # encoding: [0x0f,0xc2,0xca,0x17] $
2012 Jul 24
2
[LLVMdev] Instruction Encodings in TableGen
...> > Okay, so rA, rS, and rB are register operands. > > > > The TableGen classes are defined as: > > > > 315 class XForm_base_r3xo_swapped > > 316 <bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string > asmstr, > > 317 InstrItinClass itin> > > 318 : I<opcode, OOL, IOL, asmstr, itin> { > > 319 bits<5> A; > > 320 bits<5> RST; > > 321 bits<5> B; > > 322 > > 323 bit RC = 0; // set by isDOT > > > > 324 > > 325 let Inst{6-10} = RST;...
2012 Jul 03
3
[LLVMdev] bug in tablegen?
...List, I.InOperandList >> >> But instead, I must back substitute what I know the values of these are. >> (outs CPU16Regs:$rx), (ins CPU16Regs:$ry, CPU16Regs:$rz) >> >> >> class FRRR16_ins<bits<2> _f, string asmstr, list<dag> pattern, >> InstrItinClass itin> : >> FRRR16<_f, (outs CPU16Regs:$rz), (ins CPU16Regs:$rx, >> CPU16Regs:$ry), >> !strconcat(asmstr, "\t$rz, $rx, $ry"), >> pattern, itin>; >> >> class ArithLogicR16<FRRR16_ins I,...
2012 Jul 24
0
[LLVMdev] Instruction Encodings in TableGen
...(and GPRC:$rS, GPRC:$rB))]>; > > Okay, so rA, rS, and rB are register operands. > > The TableGen classes are defined as: > > 315 class XForm_base_r3xo_swapped > 316 <bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr, > 317 InstrItinClass itin> > 318 : I<opcode, OOL, IOL, asmstr, itin> { > 319 bits<5> A; > 320 bits<5> RST; > 321 bits<5> B; > 322 > 323 bit RC = 0; // set by isDOT > > 324 > 325 let Inst{6-10} = RST; > 326 let Inst{11-15} = A; > 327 l...
2012 Jul 25
2
[LLVMdev] Instruction Encodings in TableGen
...nd rB are register operands. >> > >> > The TableGen classes are defined as: >> > >> > 315 class XForm_base_r3xo_swapped >> > 316 <bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string >> asmstr, >> > 317 InstrItinClass itin> >> > 318 : I<opcode, OOL, IOL, asmstr, itin> { >> > 319 bits<5> A; >> > 320 bits<5> RST; >> > 321 bits<5> B; >> > 322 >> > 323 bit RC = 0; // set by isDOT >> > >> > 324 >&gt...
2012 Jul 04
0
[LLVMdev] bug in tablegen?
class FRRR16_ins<bits<2> _f, string asmstr, list<dag> pattern, InstrItinClass itin> : // ... This class has template args. You don't specify them in the first template arg of class ArithLogicR16<FRRR16_ins I, SDNode OpNode, bit isComm = 0>: // ... --Sean Silva On Tue, Jul 3, 2012 at 2:29 PM, reed kotler <rkotler at mips.com> wrote: > Not sure wh...
2008 Aug 22
3
[LLVMdev] Implementing llvm.memory.barrier on PowerPC
...PC/PPCInstrFormats.td (revision 54985) > +++ lib/Target/PowerPC/PPCInstrFormats.td (working copy) > @@ -309,6 +309,17 @@ > let Inst{31} = 0; > } > > +class XForm_24_sync<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, > + string asmstr, InstrItinClass itin, list<dag> pattern> > + : I<opcode, OOL, IOL, asmstr, itin> { > + let Pattern = pattern; > + let Inst{6-10} = 0; > + let Inst{11-15} = 0; > + let Inst{16-20} = 0; > + let Inst{21-30} = xo; > + let Inst{31} = 0; > +} > + > class XFo...
2012 Jul 25
0
[LLVMdev] Instruction Encodings in TableGen
...> > > Okay, so rA, rS, and rB are register operands. > > > > The TableGen classes are defined as: > > > > 315 class XForm_base_r3xo_swapped > > 316 <bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr, > > 317 InstrItinClass itin> > > 318 : I<opcode, OOL, IOL, asmstr, itin> { > > 319 bits<5> A; > > 320 bits<5> RST; > > 321 bits<5> B; > > 322 > > 323 bit RC = 0; // set by isDOT > > > > 324 > > 325 let Inst{6-10} = RST;...
2016 Dec 03
2
Immediate operand for vector instructions
...tor instructions for the Mips back end): class MSA_I16_FMT<bits<9> opcode>: MSAInst { bits<16> s16; let Inst{31-23} = opcode; let Inst{26-11} = s16; } class REP_1R_DESC_BASE<, InstrItinClass itin = NoItinerary> { dag OutOperandList = (outs); /* From include/llvm/Target/Target.td: let OperandType = "OPERAND_IMMEDIATE" in { ... def i64imm : Operand<i64>; */ dag InOperandList = (ins i64imm...
2012 Jul 03
2
[LLVMdev] bug in tablegen?
...lem is that I should be able to pass parameters: I.OutOperandList, I.InOperandList But instead, I must back substitute what I know the values of these are. (outs CPU16Regs:$rx), (ins CPU16Regs:$ry, CPU16Regs:$rz) class FRRR16_ins<bits<2> _f, string asmstr, list<dag> pattern, InstrItinClass itin> : FRRR16<_f, (outs CPU16Regs:$rz), (ins CPU16Regs:$rx, CPU16Regs:$ry), !strconcat(asmstr, "\t$rz, $rx, $ry"), pattern, itin>; class ArithLogicR16<FRRR16_ins I, SDNode OpNode, bit isComm = 0>: FRRR16<I.f, (ou...
2012 Jul 27
0
[LLVMdev] Instruction Encodings in TableGen
...gt;> > The TableGen classes are defined as: > >> > > >> > 315 class XForm_base_r3xo_swapped > >> > 316 <bits<6> opcode, bits<10> xo, dag OOL, dag IOL, > >> > string > >> asmstr, > >> > 317 InstrItinClass itin> > >> > 318 : I<opcode, OOL, IOL, asmstr, itin> { > >> > 319 bits<5> A; > >> > 320 bits<5> RST; > >> > 321 bits<5> B; > >> > 322 > >> > 323 bit RC = 0; // set by isDOT > >...
2012 Jul 05
2
[LLVMdev] bug in tablegen?
...<!cast<FRRR16_ins>(I).f, !cast<FRRR16_ins>(I).OutOperandList, !cast<FRRR16_ins>(I).InOperandList, !cast<FRRR16_ins>(I).AsmString, [(set CPU16Regs:$rx, (OpNode CPU16Regs:$ry, CPU16Regs:$rz))], !cast<FRRR16_ins>(I).Itinerary > { let isCommutable = isComm; let isReMaterializable = 1; } def foo: ArithLogicRTest16<"AdduRxRyRz16", add, 1>; I think that the problem has to do with the operaand lists not working if there is substitution required. Tablegen is only complaining about $rx, $ry an...
2008 Aug 21
2
[LLVMdev] Implementing llvm.memory.barrier on PowerPC
...============== --- lib/Target/PowerPC/PPCInstrFormats.td (revision 54985) +++ lib/Target/PowerPC/PPCInstrFormats.td (working copy) @@ -309,6 +309,17 @@ let Inst{31} = 0; } +class XForm_24_sync<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, + string asmstr, InstrItinClass itin, list<dag> pattern> + : I<opcode, OOL, IOL, asmstr, itin> { + let Pattern = pattern; + let Inst{6-10} = 0; + let Inst{11-15} = 0; + let Inst{16-20} = 0; + let Inst{21-30} = xo; + let Inst{31} = 0; +} + class XForm_25<bits<6> opcode, bits<10> xo,...
2016 Mar 18
2
Immediate operand for load instruction, in back end
...Here, the load class has $addrsrc which is a relative address with base a certain register and offset: class LD_DESC_BASE<string instr_asm, SDPatternOperator OpNode, ValueType TyNode, RegisterOperand ROWD, Operand MemOpnd = mem_msa, ComplexPattern Addr = addrimm10, InstrItinClass itin = NoItinerary> { dag OutOperandList = (outs ROWD:$wd); dag InOperandList = (ins MemOpnd:$addrsrc); string AsmString = !strconcat("mov $wd, ($addrsrc)"); list<dag> Pattern = [(set ROWD:$wd, (TyNode (OpNode Addr:$addrsrc)))]; InstrItinClass Itinerary = itin...
2012 Jan 19
0
[LLVMdev] Problem generating <target>GenAsmMatcher.inc
...[SDTCisInt<0>, SDTCisSameAs<0, 1>]>; def MipsDivRem : SDNode<"MipsISD::DivRem", SDT_MipsDivRem, [SDNPOutGlue]>; class Div<SDNode op, bits<6> func, string instr_asm, InstrItinClass itin, RegisterClass RC, list<Register> DefRegs>: FR<0x00, func, (outs), (ins RC:$rs, RC:$rt), !strconcat(instr_asm, "\t$$zero, $rs, $rt"), [(op RC:$rs, RC:$rt)], itin> { let rd = 0; let shamt = 0; let Defs = DefRegs; } Note:,there doesn...
2012 Jul 05
0
[LLVMdev] bug in tablegen?
...PU16Regs:$ry, CPU16Regs:$rz), // !cast<FRRR16_ins>(I).OutOperandList, // !cast<FRRR16_ins>(I).InOperandList, !cast<FRRR16_ins>(I).AsmString, [(set CPU16Regs:$rx, (OpNode CPU16Regs:$ry, CPU16Regs:$rz))], !cast<FRRR16_ins>(I).Itinerary > { let isCommutable = isComm; let isReMaterializable = 1; } On 07/05/2012 03:11 PM, reed kotler wrote: > I think that what I did originally should have worked and the bug was > correct as I reported it. > > Here is an alternate implementation which has the same problem....
2012 Aug 21
0
[LLVMdev] No more TargetFlags on MO_Register MachineOperands
...replacing the MachineOperand flags in the R600 backend with immediate operands, but I can't figure out how to modify the instruction patterns to make this work. For example, I have the class: class R600_1OP <bits<32> inst, string opName, list<dag> pattern, InstrItinClass itin = AnyALU> : InstR600 <inst, (outs R600_Reg32:$dst), (ins R600_Reg32:$src, R600_Pred:$p, i32imm:$flags), !strconcat(opName, " $dst, $src ($p)"), pattern, itin >; And an instruction def: def CEIL : R600_1OP < 0x...