Displaying 20 results from an estimated 37 matches for "mul1".
Did you mean:
mul
2013 Aug 08
13
[LLVMdev] Convert fdiv - X/Y -> X*1/Y
...uble %d) {
entry:
%div = fdiv fast double %a, %d
%div1 = fdiv fast double %b, %d
%call = tail call i32 @foo(double %div, double %div1)
ret void
}
to:
define void @t1b(double %a, double %b, double %d) {
entry:
%div = fdiv fast double 1.000000e+00, %d
%mul = fmul fast double %div, %a
%mul1 = fmul fast double %div, %b
%call = tail call i32 @foo(double %mul, double %mul1)
ret void
}
Is such a transformation best done as a (target-specific) DAG combine?
A similar instcombine already exists for the X/C->X*1/C case (see the
CvtFDivConstToReciprocal function in InstCombineMlDivRem...
2014 Mar 12
2
[LLVMdev] Autovectorization questions
...LVM prove this?
The loop vectorizer relies on scev’s nowrap flags. We need to improve SCEV for this.
%conv = sext i32 %k to i64
--> (sext i32 %k to i64)
%i.06 = phi i64 [ 0, %entry ], [ %inc, %for.body ]
--> {0,+,1}<nuw><nsw><%for.body> Exits: 1023
%mul1 = mul nsw i64 %i.06, 7
--> {0,+,7}<%for.body> Exits: 7161
%arrayidx2 = getelementptr inbounds i32* %A, i64 %mul1
--> {%A,+,28}<%for.body> <== we want to see a nw flag here.
Scev sometimes drops new flags for safety (cannonicalization can make t...
2019 Jul 23
2
[RFC] A new multidimensional array indexing intrinsic
...ss, switching the indexed base type to a non-integer for illustration purposes:
>
> %arrayidx = call i64 @llvm.multidim.array.index.i64.p0f64.i64.i64.i64.i64 double* %A, i64 %str_1, i64 %idx_1, i64 %str_2, i64 %idx_2
>
> According to the RFC, that would get lowered to this:
>
> %mul1 = mul nsw i64 %str_1, %idx_1
> %mul2 = mul1 nsw i64 %str_2, %idx_2
> %total = add nsw i64 %mul2, %mul1
> %arrayidx = getelementptr inbounds double, double* %A, i64 %total, !multidim !1
>
> The problem I'm having is that the source element type in the GEP instruction in the...
2013 Aug 08
3
[LLVMdev] Convert fdiv - X/Y -> X*1/Y
...call = tail call i32 @foo(double %div, double %div1)
>> ret void
>> }
>>
>> to:
>>
>> define void @t1b(double %a, double %b, double %d) {
>> entry:
>> %div = fdiv fast double 1.000000e+00, %d
>> %mul = fmul fast double %div, %a
>> %mul1 = fmul fast double %div, %b
>> %call = tail call i32 @foo(double %mul, double %mul1)
>> ret void
>> }
>>
>> Is such a transformation best done as a (target-specific) DAG combine?
>>
>> A similar instcombine already exists for the X/C->X*1/C case (see...
2013 Aug 08
0
[LLVMdev] Convert fdiv - X/Y -> X*1/Y
...%div1 = fdiv fast double %b, %d
> %call = tail call i32 @foo(double %div, double %div1)
> ret void
> }
>
> to:
>
> define void @t1b(double %a, double %b, double %d) {
> entry:
> %div = fdiv fast double 1.000000e+00, %d
> %mul = fmul fast double %div, %a
> %mul1 = fmul fast double %div, %b
> %call = tail call i32 @foo(double %mul, double %mul1)
> ret void
> }
>
> Is such a transformation best done as a (target-specific) DAG combine?
>
> A similar instcombine already exists for the X/C->X*1/C case (see the
> CvtFDivConstToRec...
2013 Aug 08
0
[LLVMdev] Convert fdiv - X/Y -> X*1/Y
...iv1 = fdiv fast double %b, %d
> %call = tail call i32 @foo(double %div, double %div1)
> ret void
> }
>
> to:
>
> define void @t1b(double %a, double %b, double %d) {
> entry:
> %div = fdiv fast double 1.000000e+00, %d
> %mul = fmul fast double %div, %a
> %mul1 = fmul fast double %div, %b
> %call = tail call i32 @foo(double %mul, double %mul1)
> ret void
> }
>
> Is such a transformation best done as a (target-specific) DAG combine?
>
> A similar instcombine already exists for the X/C->X*1/C case (see the CvtFDivConstToRecipro...
2013 Aug 08
0
[LLVMdev] Convert fdiv - X/Y -> X*1/Y
...iv1 = fdiv fast double %b, %d
> %call = tail call i32 @foo(double %div, double %div1)
> ret void
> }
>
> to:
>
> define void @t1b(double %a, double %b, double %d) {
> entry:
> %div = fdiv fast double 1.000000e+00, %d
> %mul = fmul fast double %div, %a
> %mul1 = fmul fast double %div, %b
> %call = tail call i32 @foo(double %mul, double %mul1)
> ret void
> }
>
> Is such a transformation best done as a (target-specific) DAG combine?
>
> A similar instcombine already exists for the X/C->X*1/C case (see the CvtFDivConstToRecipro...
2013 Oct 30
0
[LLVMdev] loop vectorizer
...d by 'opt':
entry:
%cmp9 = icmp ult i64 %start, %end
br i1 %cmp9, label %for.body, label %for.end
for.body: ; preds = %entry,
%for.body
%storemerge10 = phi i64 [ %inc, %for.body ], [ %start, %entry ]
%div = lshr i64 %storemerge10, 2
%mul1 = shl i64 %div, 3
%rem = and i64 %storemerge10, 3
%add2 = or i64 %mul1, %rem
%0 = lshr i64 %storemerge10, 1
%add51 = shl i64 %0, 2
%mul6 = or i64 %rem, %add51
%add8 = or i64 %mul6, 4
%arrayidx = getelementptr inbounds float* %a, i64 %add2
%1 = load float* %arrayidx, align 4...
2013 Aug 08
0
[LLVMdev] Convert fdiv - X/Y -> X*1/Y
...ble %div1)
>>> ret void
>>> }
>>>
>>> to:
>>>
>>> define void @t1b(double %a, double %b, double %d) {
>>> entry:
>>> %div = fdiv fast double 1.000000e+00, %d
>>> %mul = fmul fast double %div, %a
>>> %mul1 = fmul fast double %div, %b
>>> %call = tail call i32 @foo(double %mul, double %mul1)
>>> ret void
>>> }
>>>
>>> Is such a transformation best done as a (target-specific) DAG combine?
>>>
>>> A similar instcombine already exists f...
2013 Aug 08
2
[LLVMdev] Convert fdiv - X/Y -> X*1/Y
...ll = tail call i32 @foo(double %div, double %div1)
>> ret void
>> }
>>
>> to:
>>
>> define void @t1b(double %a, double %b, double %d) {
>> entry:
>> %div = fdiv fast double 1.000000e+00, %d
>> %mul = fmul fast double %div, %a
>> %mul1 = fmul fast double %div, %b
>> %call = tail call i32 @foo(double %mul, double %mul1)
>> ret void
>> }
>>
>> Is such a transformation best done as a (target-specific) DAG combine?
>>
>> A similar instcombine already exists for the X/C->X*1/C case (s...
2013 Oct 30
3
[LLVMdev] loop vectorizer
On 30 October 2013 09:25, Nadav Rotem <nrotem at apple.com> wrote:
> The access pattern to arrays a and b is non-linear. Unrolled loops are
> usually handled by the SLP-vectorizer. Are ir0 and ir1 consecutive for all
> values for i ?
>
Based on his list of values, it seems that the induction stride is linear
within each block of 4 iterations, but it's not a clear
2013 Oct 30
3
[LLVMdev] loop vectorizer
...e IR printed by 'opt':
>
> entry:
> %cmp9 = icmp ult i64 %start, %end
> br i1 %cmp9, label %for.body, label %for.end
>
> for.body: ; preds = %entry, %for.body
> %storemerge10 = phi i64 [ %inc, %for.body ], [ %start, %entry ]
> %div = lshr i64 %storemerge10, 2
> %mul1 = shl i64 %div, 3
> %rem = and i64 %storemerge10, 3
> %add2 = or i64 %mul1, %rem
> %0 = lshr i64 %storemerge10, 1
> %add51 = shl i64 %0, 2
> %mul6 = or i64 %rem, %add51
> %add8 = or i64 %mul6, 4
> %arrayidx = getelementptr inbounds float* %a, i64 %add2
> %1 = load float* %ar...
2017 Mar 15
2
Data structure improvement for the SLP vectorizer
...tptr inbounds double, double* %data3, i32 2
%element33 = getelementptr inbounds double, double* %data3, i32 3
%load30 = load double, double* %data3
%load31 = load double, double* %element31
%load32 = load double, double* %element32
%load33 = load double, double* %element33
%mul1 = fmul fast double %load20, %load10
%mul2 = fmul fast double %load21, %load11
%mul3 = fmul fast double %load22, %load10
%mul4 = fmul fast double %load23, %load11
%add1 = fadd fast double %load30, %mul1
%add2 = fadd fast double %load31, %mul2
%add3 = fadd fast double %load32...
2017 Jul 28
0
Error in `[[<-.data.frame`(`*tmp*`, alt.name, value = integer(0)) with mlogit
...error below?
> sandoz
>
>> library(mlogit)
>> horse1.data<-read.csv("cte2.csv", header=TRUE, sep=";")
>> h1.dat<-mlogit.data(data=horse1.data,choice="win",chid.var="raceid",alt.var="noChev",shape="long")
> #mul1.model<-mlogit(win~cteD+cteTh|0|0,data=h1.dat)
> #summary(mul1.model)
>
> Error in `[[<-.data.frame`(`*tmp*`, alt.name, value = integer(0)) :
> le tableau de remplacement a 0 lignes, le tableau remplac? en a 26
>
>> head(horse1.data,27)
> raceid nbChev cteD cteTh...
2019 Jul 22
1
[RFC] A new multidimensional array indexing intrinsic
...> > A multidim index of the form:
> > > ```
> > > %arrayidx = llvm.multidim.array.index.* i64 i64* %A, %str_1, %idx_1, %str_2, %idx_2
> > > ```
> > >
> > > is lowered to:
> > >
> > > ```
> > > %mul1 = mul nsw i64 %str_1, %idx_1
> > > %mul2 = mul1 nsw i64 %str_2, %idx_2
> > > %total = add nsw i64 %mul2, %mul1
> > > %arrayidx = getelementptr inbounds i64, i64* %A, i64 %total, !multidim !1
> > > ```
> > > with guarantees that the fi...
2013 Aug 08
0
[LLVMdev] Convert fdiv - X/Y -> X*1/Y
...= fdiv fast double %b, %d
> %call = tail call i32 @foo(double %div, double %div1)
> ret void
> }
>
> to:
>
> define void @t1b(double %a, double %b, double %d) {
> entry:
> %div = fdiv fast double 1.000000e+00, %d
> %mul = fmul fast double %div, %a
> %mul1 = fmul fast double %div, %b
> %call = tail call i32 @foo(double %mul, double %mul1)
> ret void
> }
>
> Is such a transformation best done as a (target-specific) DAG combine?
>
> A similar instcombine already exists for the X/C->X*1/C case (see the
> CvtFDivConstToRe...
2015 Mar 25
0
[PATCH] nv50/ir: take postFactor into account when doing peephole optimizations
...ier(0);
i->src(1).mod = Modifier(0);
+ i->postFactor = 0;
i->setSrc(0, new_ImmediateValue(i->bb->getProgram(), res.data.u32));
i->setSrc(1, NULL);
@@ -682,7 +685,7 @@ ConstantFolding::tryCollapseChainedMULs(Instruction *mul2,
Instruction *insn;
Instruction *mul1 = NULL; // mul1 before mul2
int e = 0;
- float f = imm2.reg.data.f32;
+ float f = imm2.reg.data.f32 * exp2f(mul2->postFactor);
ImmediateValue imm1;
assert(mul2->op == OP_MUL && mul2->dType == TYPE_F32);
@@ -782,9 +785,10 @@ ConstantFolding::opnd(Instruction *i, Im...
2017 Jul 27
2
Error in `[[<-.data.frame`(`*tmp*`, alt.name, value = integer(0)) with mlogit
...t;)
> h1.dat<-mlogit.data(data=horse1.data,choice="win",chid.var="raceid",alt.var="nbChev",shape="long")
Error in `[[<-.data.frame`(`*tmp*`, alt.name, value = integer(0)) :
le tableau de remplacement a 0 lignes, le tableau remplac? en a 26
> mul1.model<-mlogit(win~cteD+cteTh|0|0,data=h1.dat)
Error in mlogit(win ~ cteD + cteTh | 0 | 0, data = h1.dat) :
object 'h1.dat' not found
> head(horse.data,27)
raceid.nbChev.cteD.cteTh.win
1 1;9;29.6;23.8;no
2 1;9;5.3;6.7;no
3 1;9;10.9;11.5;...
2013 Oct 30
0
[LLVMdev] loop vectorizer
...;>
>> entry:
>> %cmp9 = icmp ult i64 %start, %end
>> br i1 %cmp9, label %for.body, label %for.end
>>
>> for.body: ; preds = %entry, %for.body
>> %storemerge10 = phi i64 [ %inc, %for.body ], [ %start, %entry ]
>> %div = lshr i64 %storemerge10, 2
>> %mul1 = shl i64 %div, 3
>> %rem = and i64 %storemerge10, 3
>> %add2 = or i64 %mul1, %rem
>> %0 = lshr i64 %storemerge10, 1
>> %add51 = shl i64 %0, 2
>> %mul6 = or i64 %rem, %add51
>> %add8 = or i64 %mul6, 4
>> %arrayidx = getelementptr inbounds float* %a, i64 %ad...
2017 Jul 27
3
Error in `[[<-.data.frame`(`*tmp*`, alt.name, value = integer(0)) with mlogit
...oice="win",chid.var="raceid",alt.var="nbChev",shape="long")
>>
>> Error in `[[<-.data.frame`(`*tmp*`, alt.name, value = integer(0)) :
>> le tableau de remplacement a 0 lignes, le tableau remplac? en a 26
>>
>>
>>> mul1.model<-mlogit(win~cteD+cteTh|0|0,data=h1.dat)
>> Error in mlogit(win ~ cteD + cteTh | 0 | 0, data = h1.dat) :
>> object 'h1.dat' not found
>>
>>
>>> head(horse.data,27)
>> raceid.nbChev.cteD.cteTh.win
>> 1 1;9;29.6;23.8;no
>...