search for: dowork

Displaying 20 results from an estimated 37 matches for "dowork".

2016 Mar 02
4
Proposal for function vectorization and loop vectorization with function calls
...torizer. Problem Statement ================= Currently, if a loop calls a user-defined function or a 3rd party library function, the loop can't be vectorized unless the function is inlined. In the example below the LoopVectorizer fails to vectorize the k loop due to its function call to "dowork" because "dowork" is an external function. Note that inlining the "dowork" function may result in vectorization for some of the cases, but that is not a generally applicable solution. Also, there may be reasons why compiler may not (or can't) inline the "dowork&quo...
2016 Mar 02
2
Proposal for function vectorization and loop vectorization with function calls
...nse to start from here? Yes, we can vectorize this loop by calling scalar code VL times as an emulation of SIMD execution if the SIMD version does not exist to start with. See below example, we need this functionality anyway as a fall back for vecotizing this loop when there is no SIMD version of dowork exist. E.g. #pragma clang loop vectorize(enable) for (k = 0; k < 4096; k++) { a[k] = k * 0.5; a[k] = dowork(a, k); } ==> Vectorized_for (k = 0; k < 4096; k+=VL) { // assume VL = 4. No vector version of dowork function exist. a[k:VL] = {k, k+1, K+2, k+3) * 0.5.;...
2019 Oct 22
0
[PATCH v5 07/14] drm/dp_mst: Don't forget to update port->input in drm_dp_mst_handle_conn_stat()
...18b902ae 100644 --- a/drivers/gpu/drm/drm_dp_mst_topology.c +++ b/drivers/gpu/drm/drm_dp_mst_topology.c @@ -2079,18 +2079,40 @@ drm_dp_mst_handle_conn_stat(struct drm_dp_mst_branch *mstb, { struct drm_dp_mst_topology_mgr *mgr = mstb->mgr; struct drm_dp_mst_port *port; - int old_ddps; - bool dowork = false; + int old_ddps, ret; + u8 new_pdt; + bool dowork = false, create_connector = false; port = drm_dp_get_port(mstb, conn_stat->port_number); if (!port) return; - /* Locking is only needed if the port's exposed to userspace */ - if (port->connector) + if (port->connecto...
2019 Sep 03
0
[PATCH v2 21/27] drm/dp_mst: Don't forget to update port->input in drm_dp_mst_handle_conn_stat()
...nn_stat(struct drm_dp_mst_branch *mstb, struct drm_dp_connection_status_notify *conn_stat) { - struct drm_device *dev = mstb->mgr->dev; + struct drm_dp_mst_topology_mgr *mgr = mstb->mgr; + struct drm_device *dev = mgr->dev; struct drm_dp_mst_port *port; - int old_ddps; - bool dowork = false; + struct drm_connector *connector_to_destroy = NULL; + int old_ddps, ret; + u8 new_pdt; + bool dowork = false, create_connector = false; port = drm_dp_get_port(mstb, conn_stat->port_number); if (!port) return; + mutex_lock(&port->lock); drm_modeset_lock(&dev->...
2007 Aug 27
2
[LLVMdev] [patch] Pluggable Coalescers
...> + /// Run the coalescer on this function, providing interference > + /// data to query. Return whether we removed any copies. > + virtual bool coalesceFunction(MachineFunction &mf, > InterferenceData &ifd) = 0; > > 80 col violation. Ok. > 6. > + /// doWork - The main coalescing algorithm. Return whether any > + /// copies were coalesced. > + bool doWork(MachineFunction &mf); > > Please rename it to something like performCoalescing. Also, is this > defined anywhere? It's just what runOnMachineFunction used to be. I spli...
2007 Aug 27
0
[LLVMdev] [patch] Pluggable Coalescers
...ceData out from RegisterCoalescer.h? 5. + /// Run the coalescer on this function, providing interference + /// data to query. Return whether we removed any copies. + virtual bool coalesceFunction(MachineFunction &mf, InterferenceData &ifd) = 0; 80 col violation. 6. + /// doWork - The main coalescing algorithm. Return whether any + /// copies were coalesced. + bool doWork(MachineFunction &mf); Please rename it to something like performCoalescing. Also, is this defined anywhere? 7. About class LinearScanInterferenceData. Since it's just an example, per...
2007 Aug 20
4
[LLVMdev] [patch] Pluggable Coalescers
Here's a proposed patch for reworking register coalescing to allow pluggable coalescers. I think I've got the interfaces where I want them and am reasonably sure I've squashed most of the bugs. I'm still doing some testing and want to get through a whole regimen before committing. As a reminder, this patch has several goals: - Allow user-specified register coalescers, similar
2007 Aug 28
0
[LLVMdev] [patch] Pluggable Coalescers
...function, providing interference >> + /// data to query. Return whether we removed any copies. >> + virtual bool coalesceFunction(MachineFunction &mf, >> InterferenceData &ifd) = 0; >> >> 80 col violation. > > Ok. > >> 6. >> + /// doWork - The main coalescing algorithm. Return whether any >> + /// copies were coalesced. >> + bool doWork(MachineFunction &mf); >> >> Please rename it to something like performCoalescing. Also, is this >> defined anywhere? > > It's just what runOnMachin...
2016 Mar 02
5
RFC: Implementing the Swift calling convention in LLVM and Clang
> On Mar 2, 2016, at 1:33 AM, Renato Golin <renato.golin at linaro.org> wrote: > > On 2 March 2016 at 01:14, John McCall via llvm-dev > <llvm-dev at lists.llvm.org> wrote: >> Hi, all. >> - We sometimes want to return more values in registers than the convention normally does, and we want to be able to use both integer and floating-point registers. For
2019 Sep 25
2
[PATCH v2 16/27] drm/dp_mst: Refactor pdt setup/teardown, add more locking
...ence */ > + drm_dp_mst_topology_put_port(port); > } > > static void drm_dp_update_port(struct drm_dp_mst_branch *mstb, > struct drm_dp_connection_status_notify *conn_stat) > { > struct drm_dp_mst_port *port; > - int old_pdt; > int old_ddps; > bool dowork = false; > + > port = drm_dp_get_port(mstb, conn_stat->port_number); > if (!port) > return; > > old_ddps = port->ddps; > - old_pdt = port->pdt; > - port->pdt = conn_stat->peer_device_type; > port->mcs = conn_stat->message_capability_statu...
2019 Oct 22
0
[PATCH v5 03/14] drm/dp_mst: Refactor pdt setup/teardown, add more locking
...d now drop our reference */ + drm_dp_mst_topology_put_port(port); } static void @@ -1987,16 +2016,14 @@ drm_dp_mst_handle_conn_stat(struct drm_dp_mst_branch *mstb, struct drm_dp_connection_status_notify *conn_stat) { struct drm_dp_mst_port *port; - int old_pdt; int old_ddps; bool dowork = false; + port = drm_dp_get_port(mstb, conn_stat->port_number); if (!port) return; old_ddps = port->ddps; - old_pdt = port->pdt; - port->pdt = conn_stat->peer_device_type; port->mcs = conn_stat->message_capability_status; port->ldps = conn_stat->legacy_dev...
2019 Sep 03
0
[PATCH v2 16/27] drm/dp_mst: Refactor pdt setup/teardown, add more locking
...pology_put_port(port); + /* And now drop our reference */ + drm_dp_mst_topology_put_port(port); } static void drm_dp_update_port(struct drm_dp_mst_branch *mstb, struct drm_dp_connection_status_notify *conn_stat) { struct drm_dp_mst_port *port; - int old_pdt; int old_ddps; bool dowork = false; + port = drm_dp_get_port(mstb, conn_stat->port_number); if (!port) return; old_ddps = port->ddps; - old_pdt = port->pdt; - port->pdt = conn_stat->peer_device_type; port->mcs = conn_stat->message_capability_status; port->ldps = conn_stat->legacy_dev...
2019 Sep 25
0
[PATCH v2 16/27] drm/dp_mst: Refactor pdt setup/teardown, add more locking
...> } > > > > static void drm_dp_update_port(struct drm_dp_mst_branch *mstb, > > struct drm_dp_connection_status_notify > > *conn_stat) > > { > > struct drm_dp_mst_port *port; > > - int old_pdt; > > int old_ddps; > > bool dowork = false; > > + > > port = drm_dp_get_port(mstb, conn_stat->port_number); > > if (!port) > > return; > > > > old_ddps = port->ddps; > > - old_pdt = port->pdt; > > - port->pdt = conn_stat->peer_device_type; > > port-&gt...
2007 Jul 13
0
[LLVMdev] [PATCH] Re: Pluggable Register Coalescers
...tVector JoinedLIs; + /// didWork - Tell whether we have run on this function already. + /// This allows the coalescer to either run independently or from + /// within a register allocator. + typedef std::map<const MachineFunction *, bool> WorkMap; + WorkMap didWork; + void doWork(MachineFunction &mf); + public: static char ID; // Pass identifcation, replacement for typeid SimpleRegisterCoalescing() : MachineFunctionPass((intptr_t)&ID) {}; + const char *getPassName() const{ + return "Simple Register Coalescing"; + }; + + /// All...
2007 Jul 11
3
[LLVMdev] Pluggable Register Coalescers
On Jul 11, 2007, at 11:39 AM, David Greene wrote: > On Wednesday 11 July 2007 12:41, Tanya M. Lattner wrote: > >> I think the coalescer should be flexible enough to be run >> independent of >> the register allocator. For example, you may want to expose the >> copies >> induced by transforming out of SSA to the scheduler. If the >> scheduler is
2016 Dec 08
6
[RFC] Enable "#pragma omp declare simd" in the LoopVectorizer
...when implementing, I believe it is best to follow the name mangling proposed in Xinmin's RFC. What do you think? GCC Example ---------------- Compiler version: GCC 6.1.0 Compile line: gcc -c omp.c -fopenmp -Wall -S -o - -O3 > omp.s omp.c #include <omp.h> #pragma omp declare simd int dowork(int* a, int idx) { return a[idx] * a[idx]*7; } less omp.s | grep @function .type dowork, @function .type _ZGVbN4vv_dowork, @function .type _ZGVbM4vv_dowork, @function .type _ZGVcN4vv_dowork, @function .type _ZGVcM4vv_dowork, @function .typ...
2016 Dec 12
0
[RFC] Enable "#pragma omp declare simd" in the LoopVectorizer
...w the name mangling proposed >in Xinmin's RFC. What do you think? > >GCC Example >---------------- >Compiler version: GCC 6.1.0 >Compile line: gcc -c omp.c -fopenmp -Wall -S -o - -O3 > omp.s > >omp.c >#include <omp.h> > >#pragma omp declare simd >int dowork(int* a, int idx) >{ > return a[idx] * a[idx]*7; >} > >less omp.s | grep @function > .type dowork, @function > .type _ZGVbN4vv_dowork, @function > .type _ZGVbM4vv_dowork, @function > .type _ZGVcN4vv_dowork, @function > .type...
2019 Sep 25
1
[PATCH v2 20/27] drm/dp_mst: Protect drm_dp_mst_port members with connection_mutex
...gt; @@ -2022,6 +2078,7 @@ static void > drm_dp_mst_handle_conn_stat(struct drm_dp_mst_branch *mstb, > struct drm_dp_connection_status_notify *conn_stat) > { > + struct drm_device *dev = mstb->mgr->dev; > struct drm_dp_mst_port *port; > int old_ddps; > bool dowork = false; > @@ -2030,6 +2087,8 @@ drm_dp_mst_handle_conn_stat(struct drm_dp_mst_branch *mstb, > if (!port) > return; > > + drm_modeset_lock(&dev->mode_config.connection_mutex, NULL); > + > old_ddps = port->ddps; > port->mcs = conn_stat->message_capa...
2019 Oct 22
17
[PATCH v5 00/14] DP MST Refactors + debugging tools + suspend/resume reprobing
This is the final portion of the large series for adding MST suspend/resume reprobing that I've been working on for quite a while now. In addition, I: * Refactored and cleaned up any code I ended up digging through in the process of understanding how some parts of these helpers worked. * Added some debugging tools along the way that I ended up needing to figure out some issues in my own
2019 Sep 03
0
[PATCH v2 20/27] drm/dp_mst: Protect drm_dp_mst_port members with connection_mutex
...lock); list_del(&port->next); @@ -2022,6 +2078,7 @@ static void drm_dp_mst_handle_conn_stat(struct drm_dp_mst_branch *mstb, struct drm_dp_connection_status_notify *conn_stat) { + struct drm_device *dev = mstb->mgr->dev; struct drm_dp_mst_port *port; int old_ddps; bool dowork = false; @@ -2030,6 +2087,8 @@ drm_dp_mst_handle_conn_stat(struct drm_dp_mst_branch *mstb, if (!port) return; + drm_modeset_lock(&dev->mode_config.connection_mutex, NULL); + old_ddps = port->ddps; port->mcs = conn_stat->message_capability_status; port->ldps = conn_st...