Displaying 20 results from an estimated 16135 matches for "doubl".
Did you mean:
doubt
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 module...
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 ; <doub...
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 d...
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-com...
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&...
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) nounwi...
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 transfor...
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, 0x12...
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...