Displaying 20 results from an estimated 40 matches for "numoper".
Did you mean:
numopen
2008 Oct 17
2
[LLVMdev] MFENCE encoding
Hi,
I have a problem with creating a MFENCE on X86 with SSE
In X86InstrSSE.td, a MFENCE is
def MFENCE : I<0xAE, MRM6m, (outs), (ins),
"mfence", [(int_x86_sse2_mfence)]>, TB, Requires<
[HasSSE2]>;
In X86CodeEmitter.cpp in emitInstruction
case X86II::MRM6m: case X86II::MRM7m: {
intptr_t PCAdj = (CurOp+4 != NumOps) ?
2017 Sep 04
2
Issues in Vector Add Instruction Machine Code Emission
Hello,
I am trying to emit binary for my implemented vector instructions. Although
yet i havent done any change or addition in MC framework, For vector load
instruction there are no error coming. But for vector add
instruction is something like this;
> %R_0_REG2048b_1<def> = P_256B_VADD %R_0_REG2048b_1<kill>,
%R_0_REG2048b_0<kill>
I am getting the following error:
Unknown
2008 Apr 16
0
[LLVMdev] Being able to know the jitted code-size before emitting
...sc &Desc = MI.getDesc();
> -
> - // Pseudo instructions do not need REX prefix byte.
> - if ((Desc.TSFlags & X86II::FormMask) == X86II::Pseudo)
> - return 0;
> - if (Desc.TSFlags & X86II::REX_W)
> - REX |= 1 << 3;
> -
> - unsigned NumOps = Desc.getNumOperands();
> - if (NumOps) {
> - bool isTwoAddr = NumOps > 1 &&
> - Desc.getOperandConstraint(1, TOI::TIED_TO) != -1;
> -
> - // If it accesses SPL, BPL, SIL, or DIL, then it requires a
> 0x40 REX prefix.
> - unsigned i = isTwoAddr ? 1 : 0;
> - for...
2008 Apr 15
4
[LLVMdev] Being able to know the jitted code-size before emitting
OK, here's a new patch that adds the infrastructure and the
implementation for X86, ARM and PPC of GetInstSize and GetFunctionSize.
Both functions are virtual functions defined in TargetInstrInfo.h.
For X86, I moved some commodity functions from X86CodeEmitter to
X86InstrInfo.
What do you think?
Nicolas
Evan Cheng wrote:
>
> I think both of these belong to TargetInstrInfo. And
2017 Sep 04
2
Issues in Vector Add Instruction Machine Code Emission
Thank You.
My add instruction has TA as follows:
def P_256B_VADD : I<0xE1, MRMDestReg, (outs VRP_2048:$dst), (ins
VRP_2048:$src1, VRPIM_2048:$src2),"P_256B_VADD\t{$src1, $src2, $dst|$dst,
$src1, $src2}", [(set VRP_2048:$dst, (add (v64i32 VRP_2048:$src1), (v64i32
VRP_2048:$src2)))]>, TA;
so i defined;
bool HasTA = TSFlags & X86II::TA; in x86MCCodeEmitter.cpp
then used
2017 Sep 04
2
Issues in Vector Add Instruction Machine Code Emission
You are right. But when i defined my instruction as follows:
def P_256B_VADD : I<0xE1, MRMDestReg, (outs VRP_2048:$dst), (ins
VRP_2048:$src1, VRPIM_2048:$src2),"P_256B_VADD\t{$src1, $src2, $dst|$dst,
$src1, $src2}", [(set VRP_2048:$dst, (add (v64i32 VRP_2048:$src1), (v64i32
VRP_2048:$src2)))]>, VEX_4V;
I get opcode conflicts? Then what to do?
On Tue, Sep 5, 2017 at 3:51 AM,
2008 Oct 17
0
[LLVMdev] MFENCE encoding
Hmm. mfence and lfence needs special handling. I'll take a look.
Evan
On Oct 16, 2008, at 10:46 PM, Mon Ping Wang wrote:
> Hi,
>
> I have a problem with creating a MFENCE on X86 with SSE
>
> In X86InstrSSE.td, a MFENCE is
> def MFENCE : I<0xAE, MRM6m, (outs), (ins),
> "mfence", [(int_x86_sse2_mfence)]>, TB, Requires<
> [HasSSE2]>;
2008 Oct 17
1
[LLVMdev] MFENCE encoding
I've fixed this (untested though).
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20081013/068611.html
Evan
On Oct 17, 2008, at 9:51 AM, Evan Cheng wrote:
> Hmm. mfence and lfence needs special handling. I'll take a look.
>
> Evan
>
> On Oct 16, 2008, at 10:46 PM, Mon Ping Wang wrote:
>
>> Hi,
>>
>> I have a problem with creating a MFENCE
2017 Sep 04
2
Issues in Vector Add Instruction Machine Code Emission
Sorry to ask but what does it mean to put both?
On Tue, Sep 5, 2017 at 4:01 AM, Craig Topper <craig.topper at gmail.com> wrote:
> Leave TA. Put both.
>
> ~Craig
>
> On Mon, Sep 4, 2017 at 4:00 PM, hameeza ahmed <hahmed2305 at gmail.com>
> wrote:
>
>> You are right. But when i defined my instruction as follows:
>> def P_256B_VADD : I<0xE1,
2012 Nov 24
2
[LLVMdev] Fwd: Prevention register promotion at the isel codegen phase
...lVal.getValueType(), SpillVal.getDebugLoc(),
> Chain, SpillSlot,
> MachinePointerInfo::getFixedStack(FI),
> false, false, false, 0);
>
> SmallVector<SDValue, 4> Ops;
> unsigned NumOps = Node->getNumOperands();
>
> for (unsigned i = 0; i < NumOps; ++i) {
> if (i == OpNo)
> Ops.push_back(Chain);
> else
> Ops.push_back(Node->getOperand(i));
> }
>
> CurDAG->UpdateNodeOperands(Node, &Ops[0], NumOps);
>
> Note: you can't do this dur...
2017 Sep 04
2
Issues in Vector Add Instruction Machine Code Emission
Thank You.
I used EVEX_4V with all the instructions. I replaced TA and EVEX both with
EVEX_4V. Now, I am getting following error:
llvm-tblgen: /utils/TableGen/X86RecognizableInstr.cpp:687: void
llvm::X86Disassembler::RecognizableInstr::emitInstructionSpecifier():
Assertion `numPhysicalOperands >= 2 + additionalOperands &&
numPhysicalOperands <= 4 + additionalOperands &&
2017 Sep 05
2
Issues in Vector Add Instruction Machine Code Emission
Thank You,
I changed TA to EVEX or EVEX_4V. But now i am getting following error:
Invalid prefix!
UNREACHABLE executed at
/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp:647!
On Tue, Sep 5, 2017 at 4:36 AM, Craig Topper <craig.topper at gmail.com> wrote:
> Not all instructions can use EVEX_4V. Move instructions in particular
> cannot because they don't have 2 sources.
>
2012 Nov 24
0
[LLVMdev] Fwd: Prevention register promotion at the isel codegen phase
...llVal.getValueType(), SpillVal.getDebugLoc(),
> Chain, SpillSlot,
> MachinePointerInfo::getFixedStack(FI),
> false, false, false, 0);
>
> SmallVector<SDValue, 4> Ops;
> unsigned NumOps = Node->getNumOperands();
>
> for (unsigned i = 0; i < NumOps; ++i) {
> if (i == OpNo)
> Ops.push_back(Chain);
> else
> Ops.push_back(Node->getOperand(i));
> }
>
> CurDAG->UpdateNodeOperands(Node, &Ops[0], NumOps);
>
> Note: you can't do this during...
2010 Jan 19
1
[LLVMdev] ComplexPattern
Hi,
I was wondering if someone could explain precisely what the
ComplexPattern tablegen class does?
Here's the first line of the definition (from TargetSelectionDAG.td) for
reference:
class ComplexPattern<ValueType ty, int numops, string fn,
list<SDNode> roots = [],
list<SDNodeProperty> props = [],
2006 Nov 15
2
[LLVMdev] LowerCALL (TargetLowering)
...tantSDNode>(Op.getOperand(2))->getValue() != 0;
assert(!isVarArg);
bool isTailCall = cast<ConstantSDNode>(Op.getOperand(3))->getValue() != 0;
SDOperand Callee = Op.getOperand(4);
MVT::ValueType RetVT= Op.Val->getValueType(0);
unsigned NumOps = (Op.getNumOperands() - 5) / 2;
std::string Name;
if (GlobalAddressSDNode *G = dyn_cast<GlobalAddressSDNode>(Callee))
Name = G->getGlobal()->getName();
else if (ExternalSymbolSDNode *S = dyn_cast<ExternalSymbolSDNode>(Callee))
Name = S->getSymbol();
unsigned opcode = funcna...
2017 Sep 05
2
Issues in Vector Add Instruction Machine Code Emission
I was getting same error when i keep both EVEX/EVEX_4V and TA. So, i
restored my original instructions and for that i have to include
bool HasTA = TSFlags & X86II::TA; in x86MCCodeEmitter.cpp
then used this condition;
if(HasTA)
++SrcRegNum;
in order to emit binary correctly.
Is it right?
On Tue, Sep 5, 2017 at 5:45 AM, Craig Topper <craig.topper at gmail.com> wrote:
>
2006 Nov 15
1
[LLVMdev] LowerCALL (TargetLowering)
...; assert(!isVarArg);
> > bool isTailCall = cast<ConstantSDNode>(Op.getOperand(3))-
> > >getValue() != 0;
> > SDOperand Callee = Op.getOperand(4);
> > MVT::ValueType RetVT= Op.Val->getValueType(0);
> > unsigned NumOps = (Op.getNumOperands() - 5) / 2;
> >
> > std::string Name;
> > if (GlobalAddressSDNode *G = dyn_cast<GlobalAddressSDNode>
> > (Callee))
> > Name = G->getGlobal()->getName();
> > else if (ExternalSymbolSDNode *S =
> > dyn_cast<ExternalSymbolSDN...
2008 Apr 21
0
[LLVMdev] RFC: PowerPC tail call optimization patch
...+ cast<ConstantSDNode>(Call.getOperand(2))->getValue() != 0)
return false;
+
+
+
+
So many blank lines... :-)
+ // Check whether CALL node immediatly preceeds the RET node and
whether the
+ // return uses the result of the node or is a void return.
+ unsigned NumOps = Ret.getNumOperands();
+ if ((NumOps == 1 &&
+ (Ret.getOperand(0) == SDOperand(Call.Val,1) ||
+ Ret.getOperand(0) == SDOperand(Call.Val,0))) ||
+ (NumOps > 1 &&
+ Ret.getOperand(0) == SDOperand(Call.Val,Call.Val-
>getNumValues()-1) &&
+ Ret.getOperand(...
2008 Apr 22
2
[LLVMdev] RFC: PowerPC tail call optimization patch
...)
you wouldn't have by any chance an evan awk script that checks for my
stupid fomatting mistakes :)
> + // Check whether CALL node immediatly preceeds the RET node and
> whether the
> + // return uses the result of the node or is a void return.
> + unsigned NumOps = Ret.getNumOperands();
> + if ((NumOps == 1 &&
> + (Ret.getOperand(0) == SDOperand(Call.Val,1) ||
> + Ret.getOperand(0) == SDOperand(Call.Val,0))) ||
> + (NumOps > 1 &&
> + Ret.getOperand(0) == SDOperand(Call.Val,Call.Val-
> >getNumValues()-1)...
2008 Apr 16
2
[LLVMdev] RFC: PowerPC tail call optimization patch
Hello Dale,
this is an updated version of the tail call optimization patch for
powerpc. could you have a look at it?
i added code to support ppc64 (untested, will try to get access to
ppc64 on a friend's machine).
incorporated evan's formatting suggestions. ;)
will run another round of testing (llvm-test) on my powerpc g4/800
when i get the okay to commit. testing on this machine takes