search for: intrinsic_a

Displaying 15 results from an estimated 15 matches for "intrinsic_a".

2017 Jan 20
9
[RFC] IR-level Region Annotations
Hi Sanjoy, Yes, that's exactly what we have been looking at recently here, but the region tags seem to make it possible to express the control flow as well, so I think we could start with reg ions+metadata, as Hal and Xinmin proposed, and then figure out what needs to be first class instructions. --Vikram Adve > On Jan 19, 2017, at 11:03 PM, Sanjoy Das <sanjoy at
2017 Jan 21
2
[RFC] IR-level Region Annotations
...this thread, for example what Daniel wrote here: http://lists.llvm.org/pipermail/llvm-dev/2017-January/108997.html — Mehdi > > { void main() { > i32* val = alloca i32 > i32* I = alloca 32 > i32* priv_val = alloca i32 > i32* priv_i alloca 32 > tok = llvm.experimental.intrinsic_a()[ "DIR.PARALLEL"(),"QUAL.PRIVATE"(i32* %priv_val, i32 %priv_i), "QUAL.NUM_THREADS"(i32 4)] > > %priv_i = omp_get_thread_num(); > compute_something_into_val(%priv_val, %priv_i); > a[priv_i] = %priv_val; > > llvm.experimental.intrinsic_b(tok)[...
2017 Jan 20
5
[RFC] IR-level Region Annotations
...g> wrote: > > Sanjoy, the IR would be like something below. It is ok to hoist alloca instruction outside the region. There are some small changes in optimizer to understand region-annotation intrinsic. > > { void main() { > i32* val = alloca i32 > tok = llvm.experimental.intrinsic_a()[ "DIR.PARALLEL"(), "QUAL.PRIVATE"(i32* val), "QUAL.NUM_THREADS"(i32 4)] > > int i = omp_get_thread_num(); > compute_something_into_val(val, i); > a[i] = val; > > llvm.experimental.intrinsic_b(tok)["DIR.END.PARALLEL"()]; > } >...
2017 Feb 01
0
[RFC] IR-level Region Annotations
...this thread, for example what Daniel wrote here: http://lists.llvm.org/pipermail/llvm-dev/2017-January/108997.html — Mehdi > > { void main() { > i32* val = alloca i32 > i32* I = alloca 32 > i32* priv_val = alloca i32 > i32* priv_i alloca 32 > tok = llvm.experimental.intrinsic_a()[ "DIR.PARALLEL"(),"QUAL.PRIVATE"(i32* %priv_val, i32 %priv_i), "QUAL.NUM_THREADS"(i32 4)] > > %priv_i = omp_get_thread_num(); > compute_something_into_val(%priv_val, %priv_i); > a[priv_i] = %priv_val; > > llvm.experimental.intrinsic_b(tok)[...
2017 Jan 20
3
[RFC] IR-level Region Annotations
...is implemented in clang, I am not sure whether we are going to change the > frontend so not to outline the parallel region, or allow to perform certain > optimization such as hoisting that alloca in clang which is not desired I > believe. Or annotate the outlined function together with the intrinsic_a so > that hoisting can be performed, in which case the instrisic_a would like > this: > > > > tok = llvm.experimental.intrinsic_a()[ "DIR.PARALLEL"(), "QUAL.PRIVATE"(i32* > %val, i32 %i), "QUAL.NUM_THREADS"(i32 4) plus info for OUTLINED_call. >...
2017 Feb 01
2
[RFC] IR-level Region Annotations
...p://lists.llvm.org/pipermail/llvm-dev/2017-January/108997.html > > — > Mehdi > > > >> >> { void main() { >> i32* val = alloca i32 >> i32* I = alloca 32 >> i32* priv_val = alloca i32 >> i32* priv_i alloca 32 >> tok = llvm.experimental.intrinsic_a()[ "DIR.PARALLEL"(),"QUAL.PRIVATE"(i32* %priv_val, i32 %priv_i), "QUAL.NUM_THREADS"(i32 4)] >> >> %priv_i = omp_get_thread_num(); >> compute_something_into_val(%priv_val, %priv_i); >> a[priv_i] = %priv_val; >> >> llvm.experiment...
2017 Feb 01
0
[RFC] IR-level Region Annotations
...p://lists.llvm.org/pipermail/llvm-dev/2017-January/108997.html > > — > Mehdi > > > >> >> { void main() { >> i32* val = alloca i32 >> i32* I = alloca 32 >> i32* priv_val = alloca i32 >> i32* priv_i alloca 32 >> tok = llvm.experimental.intrinsic_a()[ "DIR.PARALLEL"(),"QUAL.PRIVATE"(i32* %priv_val, i32 %priv_i), "QUAL.NUM_THREADS"(i32 4)] >> >> %priv_i = omp_get_thread_num(); >> compute_something_into_val(%priv_val, %priv_i); >> a[priv_i] = %priv_val; >> >> llvm.experiment...
2017 Feb 01
1
[RFC] IR-level Region Annotations
...08997.html >> >> — >> Mehdi >> >> >> >>> >>> { void main() { >>> i32* val = alloca i32 >>> i32* I = alloca 32 >>> i32* priv_val = alloca i32 >>> i32* priv_i alloca 32 >>> tok = llvm.experimental.intrinsic_a()[ "DIR.PARALLEL"(),"QUAL.PRIVATE"(i32* %priv_val, i32 %priv_i), "QUAL.NUM_THREADS"(i32 4)] >>> >>> %priv_i = omp_get_thread_num(); >>> compute_something_into_val(%priv_val, %priv_i); >>> a[priv_i] = %priv_val; >>> >&...
2017 Feb 01
1
[RFC] IR-level Region Annotations
...ented in clang, I am not sure whether we are going > to change the frontend so not to outline the parallel region, or allow > to perform certain optimization such as hoisting that alloca in clang > which is not desired I believe. Or annotate the outlined function > together with the intrinsic_a so that hoisting can be performed, in > which case the instrisic_a would like > this: > > > > tok = llvm.experimental.intrinsic_a()[ "DIR.PARALLEL"(), > "QUAL.PRIVATE"(i32* %val, i32 %i), "QUAL.NUM_THREADS"(i32 4) plus info for OUTLINED_call. &gt...
2017 Feb 01
0
[RFC] IR-level Region Annotations
...; Mehdi >>> >>> >>> >>>> >>>> { void main() { >>>> i32* val = alloca i32 >>>> i32* I = alloca 32 >>>> i32* priv_val = alloca i32 >>>> i32* priv_i alloca 32 >>>> tok = llvm.experimental.intrinsic_a()[ "DIR.PARALLEL"(),"QUAL.PRIVATE"(i32* %priv_val, i32 %priv_i), "QUAL.NUM_THREADS"(i32 4)] >>>> >>>> %priv_i = omp_get_thread_num(); >>>> compute_something_into_val(%priv_val, %priv_i); >>>> a[priv_i] = %priv_val; &gt...
2017 Feb 01
2
[RFC] IR-level Region Annotations
...onfirms what multiple people expressed in this thread, for example what Daniel wrote here: http://lists.llvm.org/pipermail/llvm-dev/2017-January/108997.html — Mehdi { void main() { i32* val = alloca i32 i32* I = alloca 32 i32* priv_val = alloca i32 i32* priv_i alloca 32 tok = llvm.experimental.intrinsic_a()[ "DIR.PARALLEL"(),"QUAL.PRIVATE"(i32* %priv_val, i32 %priv_i), "QUAL.NUM_THREADS"(i32 4)] %priv_i = omp_get_thread_num(); compute_something_into_val(%priv_val, %priv_i); a[priv_i] = %priv_val; llvm.experimental.intrinsic_b(tok)["DIR.END.PARALLEL"()]; .......
2017 Feb 01
0
[RFC] IR-level Region Annotations
...108997.html <http://lists.llvm.org/pipermail/llvm-dev/2017-January/108997.html> > > — > Mehdi > > > > > { void main() { > i32* val = alloca i32 > i32* I = alloca 32 > i32* priv_val = alloca i32 > i32* priv_i alloca 32 > tok = llvm.experimental.intrinsic_a()[ "DIR.PARALLEL"(),"QUAL.PRIVATE"(i32* %priv_val, i32 %priv_i), "QUAL.NUM_THREADS"(i32 4)] > > %priv_i = omp_get_thread_num(); > compute_something_into_val(%priv_val, %priv_i); > a[priv_i] = %priv_val; > > llvm.experimental.intrinsic_b(tok)[&qu...
2017 Feb 01
2
[RFC] IR-level Region Annotations
...onfirms what multiple people expressed in this thread, for example what Daniel wrote here: http://lists.llvm.org/pipermail/llvm-dev/2017-January/108997.html — Mehdi { void main() { i32* val = alloca i32 i32* I = alloca 32 i32* priv_val = alloca i32 i32* priv_i alloca 32 tok = llvm.experimental.intrinsic_a()[ "DIR.PARALLEL"(),"QUAL.PRIVATE"(i32* %priv_val, i32 %priv_i), "QUAL.NUM_THREADS"(i32 4)] %priv_i = omp_get_thread_num(); compute_something_into_val(%priv_val, %priv_i); a[priv_i] = %priv_val; llvm.experimental.intrinsic_b(tok)["DIR.END.PARALLEL"()]; .......
2017 Feb 01
2
[RFC] IR-level Region Annotations
...108997.html <http://lists.llvm.org/pipermail/llvm-dev/2017-January/108997.html> > > — > Mehdi > > > > > { void main() { > i32* val = alloca i32 > i32* I = alloca 32 > i32* priv_val = alloca i32 > i32* priv_i alloca 32 > tok = llvm.experimental.intrinsic_a()[ "DIR.PARALLEL"(),"QUAL.PRIVATE"(i32* %priv_val, i32 %priv_i), "QUAL.NUM_THREADS"(i32 4)] > > %priv_i = omp_get_thread_num(); > compute_something_into_val(%priv_val, %priv_i); > a[priv_i] = %priv_val; > > llvm.experimental.intrinsic_b(tok)[&qu...
2017 Jan 20
2
[RFC] IR-level Region Annotations
On 01/11, Daniel Berlin via llvm-dev wrote: > > > > def int_experimental_directive : Intrinsic<[], [llvm_metadata_ty], > > [IntrArgMemOnly], > > "llvm.experimental.directive">; > > > > def int_experimental_dir_qual : Intrinsic<[], [llvm_metadata_ty], > > [IntrArgMemOnly], > >