Displaying 19 results from an estimated 19 matches for "lnot".
Did you mean:
lno
2015 Jul 16
2
[LLVMdev] Improving loop vectorizer support for loops with a volatile iteration variable
...= y[j] + z[j];
}
}
}
And the underlying reason is the same. The IR at the point in time when the loop vectorizer runs looks like this:
define void @foo3(float* noalias %x, float* noalias %y, float* noalias %z) #0 {
entry:
%call.14 = tail call i32 @done(float* %x, float* %y, float* %z) #1
%lnot.15 = icmp eq i32 %call.14, 0
br i1 %lnot.15, label %for.body.preheader, label %while.end
for.body.preheader: ; preds = %entry
br label %for.body
while.cond.loopexit: ; preds = %for.body
%call = tail call i32 @done(float* %x, float* %y, float* %z) #1
%lnot = icmp eq i32 %call, 0
br i1 %lnot...
2015 Jul 16
2
[LLVMdev] Improving loop vectorizer support for loops with a volatile iteration variable
...oint in time
> > when the loop vectorizer runs looks like this:
>
> > define void @foo3(float* noalias %x, float* noalias %y, float*
> > noalias %z) #0 {
>
> > entry:
>
> > %call.14 = tail call i32 @done(float* %x, float* %y, float* %z) #1
>
> > %lnot.15 = icmp eq i32 %call.14, 0
>
> > br i1 %lnot.15, label %for.body.preheader, label %while.end
>
> > for.body.preheader: ; preds = %entry
>
> > br label %for.body
>
> > while.cond.loopexit: ; preds = %for.body
>
> > %call = tail call i32 @done(flo...
2016 Jul 27
2
Remove zext-unfolding from InstCombine
...nnamed_addr #0 {
entry:
%conv = sext i8 %a to i32
%and = and i32 %conv, 1
%cmp = icmp ne i32 %and, 0
%conv1 = zext i1 %cmp to i32
%conv2 = sext i8 %b to i32
%cmp3 = icmp ne i32 %conv2, 0
%conv4 = zext i1 %cmp3 to i32
%and5 = and i32 %conv1, %conv4
%tobool = icmp ne i32 %and5, 0
%lnot = xor i1 %tobool, true
%lnot.ext = zext i1 %lnot to i32
%conv6 = trunc i32 %lnot.ext to i8
ret i8 %conv6
}
```
For both functions, the `icmp` operations will be immediately followed by `zext` instructions, which will directly be optimized away by `transformZExtICmp()`, which is the reason wh...
2012 May 16
2
[LLVMdev] NVPTX: __iAtomicCAS support ?
...try
%2 = load i32** %callback.addr, align 8
%3 = bitcast i32* %2 to %struct.kernelgen_callback_t*
%lock1 = getelementptr inbounds %struct.kernelgen_callback_t* %3, i32 0, i32 0
%call2 = call ptx_device i32 @_Z12__iAtomicCASPiii(i32* %lock1, i32 1, i32 1)
%tobool = icmp ne i32 %call2, 0
%lnot = xor i1 %tobool, true
br i1 %lnot, label %while.body, label %while.end
while.body: ; preds = %while.cond
br label %while.cond
while.end: ; preds = %while.cond
ret void
}
declare ptx_device i32 @_Z12__iAtomicCASPi...
2012 May 16
0
[LLVMdev] NVPTX: __iAtomicCAS support ?
...k.addr, align 8
> %3 = bitcast i32* %2 to %struct.kernelgen_callback_t*
> %lock1 = getelementptr inbounds %struct.kernelgen_callback_t* %3, i32 0,
> i32 0
> %call2 = call ptx_device i32 @_Z12__iAtomicCASPiii(i32* %lock1, i32 1, i32 1)
> %tobool = icmp ne i32 %call2, 0
> %lnot = xor i1 %tobool, true
> br i1 %lnot, label %while.body, label %while.end
>
> while.body: ; preds = %while.cond
> br label %while.cond
>
> while.end: ; preds = %while.cond
> ret void
> }
>...
2016 Aug 04
2
Remove zext-unfolding from InstCombine
...to i32
> %and = and i32 %conv, 1
> %cmp = icmp ne i32 %and, 0
> %conv1 = zext i1 %cmp to i32
> %conv2 = sext i8 %b to i32
> %cmp3 = icmp ne i32 %conv2, 0
> %conv4 = zext i1 %cmp3 to i32
> %and5 = and i32 %conv1, %conv4
> %tobool = icmp ne i32 %and5, 0
> %lnot = xor i1 %tobool, true
> %lnot.ext = zext i1 %lnot to i32
> %conv6 = trunc i32 %lnot.ext to i8
> ret i8 %conv6
> }
> ```
>
> For both functions, the `icmp` operations will be immediately followed by `zext` instructions, which will directly be optimized away by `transform...
2016 Jul 21
2
Remove zext-unfolding from InstCombine
Hi all,
I have a question regarding a transformation that is carried out in InstCombine, which has been introduced by r48715. It unfolds expressions of the form `zext(or(icmp, (icmp)))` to `or(zext(icmp), zext(icmp)))` to expose pairs of `zext(icmp)`. In a subsequent iteration these `zext(icmp)` pairs could then (possibly) be optimized by another optimization (which has already been there before
2015 Jul 15
5
[LLVMdev] Improving loop vectorizer support for loops with a volatile iteration variable
Hi all,
I would like to propose an improvement of the “almost dead” block
elimination in Transforms/Local.cpp so that it will preserve the canonical
loop form for loops with a volatile iteration variable.
*** Problem statement
Nested loops in LCALS Subset B (https://codesign.llnl.gov/LCALS.php) are
not vectorized with LLVM -O3 because the LLVM loop vectorizer fails the
test whether the loop
2015 Jul 16
4
[LLVMdev] Improving loop vectorizer support for loops with a volatile iteration variable
..., float*
> > > > noalias %z) #0 {
> > >
> >
>
> > > > entry:
> > >
> >
>
> > > > %call.14 = tail call i32 @done(float* %x, float* %y, float* %z)
> > > > #1
> > >
> >
>
> > > > %lnot.15 = icmp eq i32 %call.14, 0
> > >
> >
>
> > > > br i1 %lnot.15, label %for.body.preheader, label %while.end
> > >
> >
>
> > > > for.body.preheader: ; preds = %entry
> > >
> >
>
> > > > br label %for...
2015 Aug 13
2
[LLVMdev] Improving loop vectorizer support for loops with a volatile iteration variable
...} } } And the
> underlying reason is the same. The IR at the point in time when the
> loop vectorizer runs looks like this: define void @foo3(float*
> noalias %x, float* noalias %y, float* noalias %z) #0 { entry:
> %call.14 = tail call i32 @done(float* %x, float* %y, float* %z) #1
> %lnot.15 = icmp eq i32 %call.14, 0 br i1 %lnot.15, label
> %for.body.preheader, label %while.end for.body.preheader: ; preds =
> %entry br label %for.body while.cond.loopexit: ; preds = %for.body
> %call = tail call i32 @done(float* %x, float* %y, float* %z) #1
> %lnot = icmp eq i32 %call, 0...
2015 Oct 26
9
[PATCH 0/7] Hyper-V Synthetic interrupt controller
Hyper-V SynIC (synthetic interrupt controller) device
implementation.
The implementation contains:
* msr's support
* irq routing setup
* irq injection
* irq ack callback registration
* event/message pages changes tracking at Hyper-V exit
* Hyper-V test device to test SynIC by kvm-unit-tests
Andrey Smetanin (7):
standard-headers/x86: add Hyper-V SynIC constants
target-i386/kvm: Hyper-V
2015 Oct 26
9
[PATCH 0/7] Hyper-V Synthetic interrupt controller
Hyper-V SynIC (synthetic interrupt controller) device
implementation.
The implementation contains:
* msr's support
* irq routing setup
* irq injection
* irq ack callback registration
* event/message pages changes tracking at Hyper-V exit
* Hyper-V test device to test SynIC by kvm-unit-tests
Andrey Smetanin (7):
standard-headers/x86: add Hyper-V SynIC constants
target-i386/kvm: Hyper-V
2019 Apr 08
0
[PATCH v4 2/7] common: Bundle the libvirt-ocaml library for use by virt-v2v
...macros defined in <libvirt.h>. *)
+ let use_cpu cpumap cpu =
+ Bytes.set cpumap (cpu/8)
+ (Char.chr (Char.code (Bytes.get cpumap (cpu/8)) lor (1 lsl (cpu mod 8))))
+ let unuse_cpu cpumap cpu =
+ Bytes.set cpumap (cpu/8)
+ (Char.chr (Char.code (Bytes.get cpumap (cpu/8)) land (lnot (1 lsl (cpu mod 8)))))
+ let cpu_usable cpumaps maplen vcpu cpu =
+ Char.code (Bytes.get cpumaps (vcpu*maplen + cpu/8)) land (1 lsl (cpu mod 8)) <> 0
+
+ external set_keep_alive : [>`R] t -> int -> int -> unit = "ocaml_libvirt_connect_set_keep_alive"
+
+ (* Interna...
2019 Dec 16
3
[v2v PATCH 0/2] Move libvirt-ocaml copy to v2v repo
libvirt-ocaml is used only by virt-v2v, so move it to this repository,
instead of having it around in the common submodule.
The removal from common will happen later.
Pino Toscano (2):
common: Bundle the libvirt-ocaml library for use by virt-v2v
build: switch embedded copy of libvirt-ocaml
.gitignore | 2 +
3rdparty/libvirt-ocaml/Makefile.am |
2018 Aug 30
8
[PATCH 0/7] RFC: switch v2v to ocaml-libvirt
Hi,
this is a mostly done attempt to switch to ocaml-libvirt, embedding the
latest version of it from git. This way, it is possible to improve the
way v2v connects to libvirt for both input, and output modules, and
interacts with libvirt (e.g. no more virsh calls needed in virt-v2v).
As side effect, virt-v2v now requires libvirt, as keeping it optional
would create too much burden.
I could not
2018 Nov 27
8
[PATCH v2 0/7] RFC: switch v2v to ocaml-libvirt
Hi,
this is a mostly done attempt to switch to ocaml-libvirt, embedding the
latest version of it from git. This way, it is possible to improve the
way v2v connects to libvirt for both input, and output modules, and
interacts with libvirt (e.g. no more virsh calls needed in virt-v2v).
As side effect, virt-v2v now requires libvirt, as keeping it optional
would create too much burden.
I could not
2019 Jan 30
8
[PATCH v3 0/7] RFC: switch v2v to ocaml-libvirt
Hi,
this is a mostly done attempt to switch to ocaml-libvirt, embedding the
latest version of it from git. This way, it is possible to improve the
way v2v connects to libvirt for both input, and output modules, and
interacts with libvirt (e.g. no more virsh calls needed in virt-v2v).
As side effect, virt-v2v now requires libvirt, as keeping it optional
would create too much burden.
I could not
2019 May 20
8
[PATCH v5 0/7] v2v: switch to ocaml-libvirt
Hi,
this series switches virt-2v to ocaml-libvirt, embedding the latest
version of it from git. This way, it is possible to improve the way
v2v connects to libvirt for both input, and output modules, and
interacts with libvirt (e.g. no more virsh calls needed in virt-v2v).
As side effect, virt-v2v now requires libvirt, as keeping it optional
would create too much burden.
I could not test all
2019 Apr 08
12
[PATCH 43 0/7] v2v: switch to ocaml-libvirt
Hi,
this series switches virt-2v to ocaml-libvirt, embedding the latest
version of it from git. This way, it is possible to improve the way
v2v connects to libvirt for both input, and output modules, and
interacts with libvirt (e.g. no more virsh calls needed in virt-v2v).
As side effect, virt-v2v now requires libvirt, as keeping it optional
would create too much burden.
I could not test all