search for: inner

Displaying 20 results from an estimated 2231 matches for "inner".

2013 Sep 05
0
[LLVMdev] [ast-dump] Class template partial specializations missing from an implicit class template instantiation?
I was looking at the ClassTemplatePartialSpecializationDecl::getInstantiatedFromMember documentation, in the included example it says: "(..) the instantiation of Outer<float>::Inner<int*> will end up instantiating the partial specialization Outer<float>::Inner<U*> (...)". To understand the concept better, I dumped the AST for the following code: template<typename T> struct Outer { template<typename U> struct Inner {float f(){};}; templa...
2013 Oct 31
0
[LLVMdev] loop vectorizer
...ter 1: index_0 = 8 index_1 = 12 index_0 = 9 index_1 = 13 index_0 = 10 index_1 = 14 index_0 = 11 index_1 = 15 For completeness, here the code: void bar(std::uint64_t start, std::uint64_t end, float * __restrict__ c, float * __restrict__ a, float * __restrict__ b) { const std::uint64_t inner = 4; for (std::uint64_t i = start ; i < end ; i+=4 ) { { const std::uint64_t ir0 = ( ((i+0)/inner) * 2 + 0 ) * inner + (i+0)%4; const std::uint64_t ir1 = ( ((i+0)/inner) * 2 + 1 ) * inner + (i+0)%4; c[ ir0 ] = a[ ir0 ] + b[ ir0 ]; c[ ir1 ]...
2013 Oct 31
2
[LLVMdev] loop vectorizer
...fy the address expression ? Can you write " index0 = i*8 + 0 “ and give it a try ? > > For completeness, here the code: > > void bar(std::uint64_t start, std::uint64_t end, float * __restrict__ c, float * __restrict__ a, float * __restrict__ b) > { > const std::uint64_t inner = 4; > for (std::uint64_t i = start ; i < end ; i+=4 ) { > { > const std::uint64_t ir0 = ( ((i+0)/inner) * 2 + 0 ) * inner + (i+0)%4; > const std::uint64_t ir1 = ( ((i+0)/inner) * 2 + 1 ) * inner + (i+0)%4; > c[ ir0 ] = a[ ir0 ] + b[ ir0 ]; >...
2020 May 05
2
Missing vectorization of loop due to load late in the loop
...events it, but I don't know what the best way to fix it would be so I thought I'd share a reduced version of it to see if anyone here have ideas. So, what happens can be reproduced on trunk with opt -O3 -S -o - bbi-39227-reduced.ll The input program consists of two nested loops where the inner loop loads a value and does some calculations and then the outer loop writes the calculated value somewhere. With -debug-only=loop-vectorize I see this printout from the vectorizer for the inner loop: LV: Not vectorizing: Found an unidentified PHI %h.15 = phi i32 [ %h.11, %inner.cond.preheade...
2008 Jan 04
2
subsetting
..."package:utils" [17] "package:methods" "Autoloads" "package:base" The Problem: I'm using a function which is constructing a subset of a dataframe. This dataframe is used in another function. The structure is like this: > inner = function (){ + print('inner:') + print(s) + } > outer = function(){ + t = data.frame(list(X=1:10, Y=LETTERS[1:10])) + s = t[t[,'X'] < 5, ] + print('outer:') + print(t[, 'Y']) + inner() + } > outer() And the response in the R-Console is: [1] "outer:&...
2004 Aug 22
2
[LLVMdev] How to handle nested procedures?
How would following Pascal code be translated to LLVM? procedure outer(a: integer): integer; procedure inner(b: integer): integer; begin return a + b end; begin return inner(a) end; If outer(10) is called, it returns 20. The problem here is that inner has access to the locals and formal arguments of outer. I do not see any direct support for this. It could be handled by creating...
2012 Dec 30
2
[LLVMdev] alignment issue, getting corrupt double values
I'm having an issue where a certain set of types and insert/extractvalue are producing the incorrect values. It appears as though extractvalue getting my sub-structure is not getting the correct data. I have these types: %outer = type { i32, %inner, i1 } %inner = type { double, i32 } The trouble is that when I have a value of type %outer then proceed to extract the components of the contained %inner structure I get corrupt values. If I don't have the "i1" type in there everything works fine, leading me to think it is something...
2015 Jul 09
4
[LLVMdev] readonly and infinite loops
Here's a fun spin on this same topic (I can't file a bug at this moment since llvm.org is down). Consider: define i32 @x(i32* %x, i1* %y) { entry: br label %loop loop: %v = phi i32 [ 0 , %entry ], [ %v.inc, %exit.inner ], [ %v, %loop ] %c = load volatile i1, i1* %y br i1 %c, label %exit.inner, label %loop exit.inner: %c1 = load volatile i1, i1* %y %x.val = load i32, i32* %x %v.inc = add i32 %v, %x.val br i1 %c1, label %exit.real, label %loop exit.real: ret i32 %v } Now if %c is false every time...
2002 May 29
2
Tcl/tk , question about the environment of the call
This is my simple code, my intention is to let the inner function browse the objects in the outer function. ####################### tk1 <- function() { tk2 <- function() { inner <- 3 list2 <- ls() #list objects in fuction tk2 print("**** inner objects ****") print(list2) #list objects in fuction tk1 list_paren...
2013 Oct 31
0
[LLVMdev] loop vectorizer
...write " index0 = i*8 + 0 “ and give it a try ? > >> >> For completeness, here the code: >> >> void bar(std::uint64_t start, std::uint64_t end, float * __restrict__ >> c, float * __restrict__ a, float * __restrict__ b) >> { >> const std::uint64_t inner = 4; >> for (std::uint64_t i = start ; i < end ; i+=4 ) { >> { >> const std::uint64_t ir0 = ( ((i+0)/inner) * 2 + 0 ) * inner + >> (i+0)%4; >> const std::uint64_t ir1 = ( ((i+0)/inner) * 2 + 1 ) * inner + >> (i+0)%4; >> c[ ir0 ]...
2004 Aug 22
0
[LLVMdev] How to handle nested procedures?
...ohen" <jeffc at jolt-lang.org> To: <LLVMdev at cs.uiuc.edu> Sent: Saturday, August 21, 2004 7:35 PM Subject: [LLVMdev] How to handle nested procedures? > How would following Pascal code be translated to LLVM? > > procedure outer(a: integer): integer; > procedure inner(b: integer): integer; > begin > return a + b > end; > begin > return inner(a) > end; > > If outer(10) is called, it returns 20. > > The problem here is that inner has access to the locals and formal > arguments of outer. I do not see any direc...
2015 Sep 11
5
[RFC] New pass: LoopExitValues
Hi Steve it seems the general consensus is that the patch feels like a work-around for a problem with LSR (and possibly other loop transformations) that introduces redundant instructions. It is probably best to file a bug and a few of your test cases. Thanks Gerolf > On Sep 10, 2015, at 4:37 PM, Steve King via llvm-dev <llvm-dev at lists.llvm.org> wrote: > > On Thu, Sep 10, 2015
2009 Apr 26
2
THE EQUIVALENT OF SQL INNER TABLE JOIN IN R
Hello all, Apologize for the newbie question. What's the easiest way to do a SQL inner table join in R? Say I have a table containing column names A, B, C and another which has columns named C, D, E. I would like to do an inner table join on C and produce a table A, B, C, D, E. thanks a lot, N. -- View this message in context: http://www.nabble.com/THE-EQUIVALENT-OF-SQL-INNER-TA...
2013 Oct 30
3
[LLVMdev] loop vectorizer
Hi Frank, > We are looking at a variety of target architectures. Ultimately we aim to run on BG/Q and Intel Xeon Phi (native). However, running on those architectures with the LLVM technology is planned in some future. As a first step we would target vanilla x86 with SSE/AVX 128/256 as a proof-of-concept. Great! It should be easy to support these targets. When you said wide-vectors I assumed
2013 Jun 12
2
Functions within functions - environments
Dear list, I have a problem with nested functions and I don't manage to get it solved. I know I should be looking in environments, and I have tried a lot, but it keeps on erroring. An easy version of the problem is as follows: innerfunction<-function() { print(paste(a, " from inner function")) print(paste(b, " from inner function")) setwd(wd) } middlefunction<-function() { b="b" print(paste(b, " from middle function")) innerfunction() } outerfunction<...
2004 Aug 22
1
[LLVMdev] How to handle nested procedures?
...; To: <LLVMdev at cs.uiuc.edu> > Sent: Saturday, August 21, 2004 7:35 PM > Subject: [LLVMdev] How to handle nested procedures? > > > > How would following Pascal code be translated to LLVM? > > > > procedure outer(a: integer): integer; > > procedure inner(b: integer): integer; > > begin > > return a + b > > end; > > begin > > return inner(a) > > end; > > > > If outer(10) is called, it returns 20. > > > > The problem here is that inner has access to the locals and forma...
2008 Jan 09
0
WG: subsetting
...this clarificaton. This is very helpful f?r me. Matthias -----Urspr?ngliche Nachricht----- Von: Gabor Grothendieck [mailto:ggrothendieck at gmail.com] Gesendet: Freitag, 4. Januar 2008 20:05 An: Matthias Wendel Cc: r-help at r-project.org Betreff: Re: [R] subsetting Here are three ways: 1. Define inner inside outer: outer <- function() { s <- 1; inner <- function() s; inner() } outer() # 1 2. Use parent.frame: inner <- function() parent.frame()$s outer <- function() { s <- 1; inner() } outer() # 1 3. Pass s explicitly: inner <- function(s) s outer <- function() { s &...
2012 Dec 30
0
[LLVMdev] alignment issue, getting corrupt double values
...ort-ora-y wrote: > I'm having an issue where a certain set of types and insert/extractvalue > are producing the incorrect values. It appears as though extractvalue > getting my sub-structure is not getting the correct data. > > I have these types: > > %outer = type { i32, %inner, i1 } > %inner = type { double, i32 } > > The trouble is that when I have a value of type %outer then proceed to > extract the components of the contained %inner structure I get corrupt > values. If I don't have the "i1" type in there everything works fine, > leading...
2017 Apr 13
3
Question on induction variable simplification pass
...of information making ScalarEvolution's analysis conservative which can lead to missed performance opportunities. For example, consider this loopnest- int i, j; for(i=0; i< 40; i++) for(j=0; j< i-1; j++) A[i+j] = j; We are mainly interested in the backedge taken count of the inner loop. Before indvars, the backedge information computed by ScalarEvolution is as follows- Outer loop- backedge-taken count is 39 max backedge-taken count is 39 Inner loop- backedge-taken count is {-2,+,1}<nsw><%for.cond1.preheader> max backedge-taken count is 37 After indvars, the...
2014 Nov 24
1
[LLVMdev] RFC: How to represent SEH (__try / __except) in LLVM IR
...arlier in this thread, and I'd like to run something by you to make sure we're on the same page. Starting from a C++ function that looks like this: void do_some_thing(int &i) { Outer outer; try { Middle middle; if (i == 1) { do_thing_one(); } else { Inner inner; do_thing_two(); } } catch (int en) { i = -1; } } I'll have IR that looks more or less like this: ; Function Attrs: uwtable define void @_Z13do_some_thingRi(i32* dereferenceable(4) %i) #0 { entry: %i.addr = alloca i32*, align 8 %outer = alloca %class.Outer, al...