search for: double

Displaying 20 results from an estimated 16066 matches for "double".

2009 Feb 19
0
[LLVMdev] Improving performance with optimization passes
...my HLVM and am unable to get any performance > improvement from optimization passes... I just disassembled some of the IR before and after optimization. This example function squares a complex number: let zsqr(r, i) = (r*r - i*i, 2*r*i) My compiler is generating: define fastcc i32 @zsqr({ double, double }*, { double, double }) { entry: %2 = alloca { double, double } ; <{ double, double }*> [#uses=2] %3 = getelementptr { double, double }* %2, i32 0 ; <{ double, double }*> [#uses=1] store { double, double } %1, { double, double }* %3 %4 = getelementptr { double, double }*...
2013 Jul 18
0
[LLVMdev] SIMD instructions and memory alignment on X86
Are you able to send any IR for others to reproduce this issue? On Wed, Jul 17, 2013 at 11:23 PM, Peter Newman <peter at uformia.com> wrote: > Unfortunately, this doesn't appear to be the bug I'm hitting. I applied > the fix to my source and it didn't make a difference. > > Also further testing found me getting the same behavior with other SIMD > instructions.
2009 Feb 19
6
[LLVMdev] Improving performance with optimization passes
I'm toying with benchmarks on my HLVM and am unable to get any performance improvement from optimization passes. Moreover, some of my programs generate a lot of redundant code (e.g. alloca a struct, store a struct into it and read only one field without using the rest of the struct) and this does not appear to be optimized away. I simply copied the use of PassManager from the Kaleidoscope
2013 Jul 18
2
[LLVMdev] SIMD instructions and memory alignment on X86
Unfortunately, this doesn't appear to be the bug I'm hitting. I applied the fix to my source and it didn't make a difference. Also further testing found me getting the same behavior with other SIMD instructions. The common factor is in each case, ECX is set to 0x7fffffff, and it's an operation using xmm ptr ecx+offset . Additionally, turning the optimization level passed to
2015 Sep 20
2
simplifycfg not happening?
...tp://llvm.org/docs/Passes.html#simplifycfg-simplify-the-cfg says - Eliminates a basic block that only contains an unconditional branch. but the first and third blocks in the compiled function only contain an unconditional branch; I would have expected them to be eliminated. What am I missing? double f(double *a) { for (int i = 0; i < 1000; i++) a[i] *= 2; for (int i = 0; i < 1000; i++) a[i] *= 2; return a[0] + a[1]; } ; Function Attrs: nounwind uwtable define double @"\01?f@@YANPEAN at Z"(double* nocapture %a) #1 { overflow.checked: br label %vector.body, !dbg...
2013 Jul 19
2
[LLVMdev] SIMD instructions and memory alignment on X86
...calls those functions, so there may be some interaction between them? There shouldn't be, they don't refer to any common memory etc. There is no multi-threading occurring. The function in module-dump.ll (called crashfunc in this file) is called with - func_params 0x0018f3b0 double [3] [0x0] -11.339976634695301 double [0x1] -9.7504239056205506 double [0x2] -5.2900856817382804 double at the time of the exception. This is compiled on a "i686-pc-win32" triple. All of the non-intrinsic functions referred to in these modules...
2017 Mar 15
2
Data structure improvement for the SLP vectorizer
Maybe it would illustrative to give an IR example of the case I'm interested in. Consider define void @"julia_transform_bvn_derivs_hessian!"(double* %data, double* %data2, double *%data3, double *%out) { %element11 = getelementptr inbounds double, double* %data, i32 1 %load10 = load double, double* %data %load11 = load double, double* %element11 %element21 = getelementptr inbounds double, double* %data2, i32 1 %element22 =...
2006 Jan 02
2
RODBC help
...underscore character ('_'). It seems that RODBC is not converting them to a suitable variable name for MySQL. > sqlSave(channel, zz, addPK = TRUE, verbose = TRUE) Query: CREATE TABLE zz (rownames varchar(255) PRIMARY KEY, NAME varchar(255), ID varchar(255), GROUP varchar(255), OAC_RT double, OUC_RT double, OAT_RT double, OUT_RT double, OFN double, OFP double, OFP_RT double, TAC_RT double, TUC_RT double, TAT_RT double, TUT_RT double, TAD_RT double, TUD_RT double, TFN double, TFP double, TFP_RT double, OFP_PERC double, OFN_PERC double, OTD_PERC double, TFP_PERC double, TFN_PERC double,...
2008 Mar 31
5
[LLVMdev] Additional Optimization I'm Missing?
...births = birth_rate * population deaths = 0.1 * population population_NEXT = population + births - deaths #generally put print statements here #updating stocks population = population_NEXT Then I can turn it into LLVM IR: define void @simulate() { entry: %time = alloca double ; <double*> [#uses=4] %population_next = alloca double ; <double*> [#uses=2] %population = alloca double ; <double*> [#uses=5] %net_change = alloca double ; <double*> [#uses=2] %deaths = alloca double ; <double*> [#uses=2] %births = alloca double ; <doubl...
2009 Feb 19
1
[LLVMdev] Improving performance with optimization passes
...his example > function squares a complex number: Something is definitely wrong with the way you're using optimization passes. > The ideal result is probably: It is indeed so: ./opt -std-compile-opts test.bc | ./llvm-dis ; ModuleID = '<stdin>' define fastcc i32 @zsqr({ double, double }* nocapture, { double, double }) nounwind { entry: %2 = extractvalue { double, double } %1, 0 ; <double> [#uses=1] %3 = extractvalue { double, double } %1, 0 ; <double> [#uses=1] %4 = mul double %2, %3 ; <double> [#uses=1] %5 = extractvalue { double, double } %1,...
2018 Feb 06
2
libc++ cross-compile linux-armv7 and math function problems
...algorithm.cpp.o -c ../projects/libcxx/src/algorithm.cpp In file included from ../projects/libcxx/include/cmath:305:0, from ../projects/libcxx/include/random:1638, from ../projects/libcxx/src/algorithm.cpp:11: ../projects/libcxx/include/math.h: In function 'long double abs(long double)': ../projects/libcxx/include/math.h:742:45: error: '::fabsl' has not been declared abs(long double __lcpp_x) _NOEXCEPT {return ::fabsl(__lcpp_x);} ^~ ../projects/libcxx/include/math.h: In function 'long double acos(long...
2012 Jan 23
2
[LLVMdev] Pointer aliasing
Hi LLVMers, I would like to ask a question regarding aliasing. Suppose I have the following program: double f(double** p ) { double a,b,c; double * x = &a; double * y = &b; double * z = &c; *x = 1; *y = *x + 2; *z = *x + 3; return *x+*y+*z; } LLVM can tell that the three pointers do not alias each other so can perform the constant folding at compile time. define do...
2018 Feb 06
0
libc++ cross-compile linux-armv7 and math function problems
At first glance, it looks like long double functions (such as fabsl and friends) are missing from your sysroot's <math.h>. Does your target support long double at all? -Dimitry > On 6 Feb 2018, at 09:51, Tobias Hieta via llvm-dev <llvm-dev at lists.llvm.org> wrote: > > Hello, > > I am trying to cross-comp...
2018 Feb 06
1
libc++ cross-compile linux-armv7 and math function problems
Hello Dimitry and thanks for your answer. I am pretty sure it does indeed support long double. It's configured with vfpv3-d16 - but I noticed that c++config.h in gcc has _GLIBCXX__HAS_FABSL and friends are undefined. I think I need to look deeper at the configuration of our toolchain. long double support is required in libc++ then I gather? -- Tobias On Tue, Feb 6, 2018 at 11:47 AM,...
2015 Sep 20
2
simplifycfg not happening?
...> >> - Eliminates a basic block that only contains an unconditional branch. >> >> but the first and third blocks in the compiled function only contain an >> unconditional branch; I would have expected them to be eliminated. What am >> I missing? >> >> double f(double *a) { >> for (int i = 0; i < 1000; i++) >> a[i] *= 2; >> for (int i = 0; i < 1000; i++) >> a[i] *= 2; >> return a[0] + a[1]; >> } >> >> ; Function Attrs: nounwind uwtable >> define double @"\01?f@@YANPEAN at Z&q...
2012 Jan 24
2
[LLVMdev] Pointer aliasing
...oel, the code you list below is precisely what I expect to get (of course the stores must happen but the constant folding should happen as well). It all looks very strange. LLVM is behaving as if the __restrict__ keyword was not used at all. Even more strange is the fact that for this function: double f(double *__restrict__ x, double *__restrict__ y, double *__restrict__ z) { *x = 1.0; *y = *x + 2; *z = *x + 3; return *x + *y + *z; } everything works as expected: define double @_Z1fPdS_S_(double* noalias nocapture %x, double* noalias nocapture %y, double* noalias nocapture %z) nounwin...
2018 Feb 05
0
Cross-compiling libc++ to linux-armv7hf gives undefined symbols in cmath / math.h
...algorithm.cpp.o -c ../projects/libcxx/src/algorithm.cpp In file included from ../projects/libcxx/include/cmath:305:0, from ../projects/libcxx/include/random:1638, from ../projects/libcxx/src/algorithm.cpp:11: ../projects/libcxx/include/math.h: In function 'long double abs(long double)': ../projects/libcxx/include/math.h:742:45: error: '::fabsl' has not been declared abs(long double __lcpp_x) _NOEXCEPT {return ::fabsl(__lcpp_x);} ^~ ../projects/libcxx/include/math.h: In function 'long double acos(long...
2012 Jan 24
4
[LLVMdev] Pointer aliasing
Can you explain please why it works for this version of the function: double f(double *__restrict__ x, double *__restrict__ y, double *__restrict__ z); What is different here? There are stores here as well. Brent On Wed, Jan 25, 2012 at 12:34 AM, Roel Jordans <r.jordans at tue.nl> wrote: > Hi Brent, > > I think this is a problem in the easy-cse transform...
2011 Dec 14
0
[LLVMdev] Help with hazards
...detector that I've added for the PPC 440 is not detecting hazards as it should (which certainly could be my fault somehow, but...). For example, it will produce a schedule that looks like... SU(28): 0x127969b0: f64,ch = LFD 0x12793aa0, 0x1277b4f0, 0x127965b0<Mem:LD8[%scevgep100](tbaa=!"double")> [ORD=41] [ID=28] SU(46): 0x12796ab0: f64 = FADD 0x127969b0, 0x127968b0 [ORD=42] [ID=46] SU(27): 0x12796cb0: ch = STFD 0x12796ab0, 0x12793aa0, 0x1277b3f0, 0x127969b0:1<Mem:ST8[%scevgep103](tbaa=!"double")> [ORD=46] [ID=27] SU(26): 0x127970b0: f64,ch = LFD 0x127941a0, 0x127...
2012 Jan 24
0
[LLVMdev] Pointer aliasing
...The strange thing to me is that the same doesn't happen for *z = *x + 2. Here *x is loaded again and the addition is still performed... From this point on, constant propagation seems to stop working completely. Looking at the IR I would have expected something like the following: define double @f(double** nocapture %p) nounwind uwtable { %1 = load double** %p, align 8, !tbaa !0 %2 = getelementptr inbounds double** %p, i64 1 %3 = load double** %2, align 8, !tbaa !0 %4 = getelementptr inbounds double** %p, i64 2 %5 = load double** %4, align 8, !tbaa !0 store double...