Displaying 8 results from an estimated 8 matches for "pairty".
2004 Jul 21
2
[LLVMdev] GC questions.
..., Tobias Nurmiranta wrote:
> > void *llvm_gc_read(void *ObjPtr, void **FieldPtr) {
> > return *FieldPtr;
> > }
>
> Hm, but doesn't FieldPtr need to be calculated target-specific in those
> cases?
For the field pointer, one could use the getelementptr instruction:
%pairty = { sbyte, sbyte, int* }
%pairPtr = ...
%fieldptr = getelementptr %pairty* %pairPtr, int 0, uint 2
FieldVal = llvm.gc_read(pairptr, fieldptr)
Because of the getelementptr instruction is used, we don't have the
explicit offset encoded into the bytecode file. The other advantage of
this...
2004 Jul 21
0
[LLVMdev] GC questions.
On Wed, 21 Jul 2004, Chris Lattner wrote:
> On Wed, 21 Jul 2004, Tobias Nurmiranta wrote:
>
> This will work, but it would be better to take two pointers in instead of
> a pointer and offset. This allows the front-end to emit target-generic
> code instead of target-specific code (where it would have to know the
> offset to the field). To be more specific, llvm_gc_read should
2004 Jul 21
2
[LLVMdev] GC questions.
On Wed, 21 Jul 2004, Tobias Nurmiranta wrote:
> [1] I'm kind of newbie of cvs, but I did:
> "cvs -z3 -d :pserver:anon at llvm-cvs.cs.uiuc.edu:/var/cvs/llvm diff llvm > gcpatch"
That patch is well formed. You did exactly the right thing. :)
> Ok, a patch[1] is attached. I didn't care to coerce the offset, since I
> assume that it is an uint, but maybe I should?
2004 Jul 21
0
[LLVMdev] GC questions.
...llvm_gc_read(void *ObjPtr, void **FieldPtr) {
> > > return *FieldPtr;
> > > }
> >
> > Hm, but doesn't FieldPtr need to be calculated target-specific in those
> > cases?
>
> For the field pointer, one could use the getelementptr instruction:
>
> %pairty = { sbyte, sbyte, int* }
>
> %pairPtr = ...
> %fieldptr = getelementptr %pairty* %pairPtr, int 0, uint 2
> FieldVal = llvm.gc_read(pairptr, fieldptr)
>
> Because of the getelementptr instruction is used, we don't have the
> explicit offset encoded into the bytecode fi...
2004 Jul 22
2
[LLVMdev] GC questions.
...> > > > return *FieldPtr;
> > > > }
> > >
> > > Hm, but doesn't FieldPtr need to be calculated target-specific in those
> > > cases?
> >
> > For the field pointer, one could use the getelementptr instruction:
> >
> > %pairty = { sbyte, sbyte, int* }
> >
> > %pairPtr = ...
> > %fieldptr = getelementptr %pairty* %pairPtr, int 0, uint 2
> > FieldVal = llvm.gc_read(pairptr, fieldptr)
> >
> > Because of the getelementptr instruction is used, we don't have the
> > explicit...
2009 May 21
0
[LLVMdev] [PATCH] Add new phase to legalization to handle vector operations
On Wed, May 20, 2009 at 4:55 PM, Dan Gohman <gohman at apple.com> wrote:
> Can you explain why you chose the approach of using a new pass?
> I pictured removing LegalizeDAG's type legalization code would
> mostly consist of finding all the places that use TLI.getTypeAction
> and just deleting code for handling its Expand and Promote. Are you
> anticipating something more
2009 May 20
2
[LLVMdev] [PATCH] Add new phase to legalization to handle vector operations
On May 20, 2009, at 1:34 PM, Eli Friedman wrote:
> On Wed, May 20, 2009 at 1:19 PM, Eli Friedman
> <eli.friedman at gmail.com> wrote:
>
>> Per subject, this patch adding an additional pass to handle vector
>>
>> operations; the idea is that this allows removing the code from
>>
>> LegalizeDAG that handles illegal types, which should be a significant
2009 May 21
2
[LLVMdev] [PATCH] Add new phase to legalization to handle vector operations
...case Promote:
- Tmp2 = PromoteOp(Node->getOperand(1)); // Promote the RHS.
- break;
- }
+ Tmp2 = LegalizeOp(Node->getOperand(1)); // Legalize the RHS.
Result = DAG.UpdateNodeOperands(Result, Tmp1, Tmp2);
@@ -3503,7 +2918,6 @@
case ISD::BUILD_PAIR: {
MVT PairTy = Node->getValueType(0);
- // TODO: handle the case where the Lo and Hi operands are not of legal type
Tmp1 = LegalizeOp(Node->getOperand(0)); // Lo
Tmp2 = LegalizeOp(Node->getOperand(1)); // Hi
switch (TLI.getOperationAction(ISD::BUILD_PAIR, PairTy)) {
@@ -3601,10 +3...