@@ -98,7 +98,7 @@ Bind output ```oc``` of child node ```N``` to output ```op``` of current node. `
...
@@ -98,7 +98,7 @@ Bind output ```oc``` of child node ```N``` to output ```op``` of current node. `
The following intrinsics are used to query the structure of the DFG. They can only be used by leaf nodes.
The following intrinsics are used to query the structure of the DFG. They can only be used by leaf nodes.
```i8* llvm.hpvm.getNode()```
```i8* llvm.hpvm.getNode()```
Return a handle to the current dataflow node.
Return a handle to the current leaf node.
```i8* llvm.hpvm.getParentNode(i8* N)```
```i8* llvm.hpvm.getParentNode(i8* N)```
Return a handle to the parent in the hierarchy of node ```N```.
Return a handle to the parent in the hierarchy of node ```N```.
...
@@ -121,28 +121,28 @@ Allocate a block of memory of size ```nBytes``` and return pointer to it. The al
...
@@ -121,28 +121,28 @@ Allocate a block of memory of size ```nBytes``` and return pointer to it. The al
*Note that the pointer returned must somehow be communicated explicitly for use by other nodes.*
*Note that the pointer returned must somehow be communicated explicitly for use by other nodes.*
```i32 llvm.hpvm.atomic.add(i8* m, i32 v)```
```i32 llvm.hpvm.atomic.add(i8* m, i32 v)```
Atomically computes the bitwise ADD of ```v``` and the value stored at memory location ```[m]```. Returns the value previously stored at ```[m]```.
Atomically computes the bitwise ADD of ```v``` and the value stored at memory location ```[m]``` w.r.t. the dynamic instances of the current leaf node and stores the result back into ```[m]```. Returns the value previously stored at ```[m]```.
```i32 llvm.hpvm.atomic.sub(i8* m, i32 v)```
```i32 llvm.hpvm.atomic.sub(i8* m, i32 v)```
Atomically computes the bitwise SUB of ```v``` and the value stored at memory location ```[m]```. Returns the value previously stored at ```[m]```.
Atomically computes the bitwise SUB of ```v``` and the value stored at memory location ```[m]``` w.r.t. the dynamic instances of the current leaf node and stores the result back into ```[m]```. Returns the value previously stored at ```[m]```.
```i32 llvm.hpvm.atomic.min(i8* m, i32 v)```
```i32 llvm.hpvm.atomic.min(i8* m, i32 v)```
Atomically computes the bitwise MIN of ```v``` and the value stored at memory location ```[m]```. Returns the value previously stored at ```[m]```.
Atomically computes the bitwise MIN of ```v``` and the value stored at memory location ```[m]``` w.r.t. the dynamic instances of the current leaf node and stores the result back into ```[m]```. Returns the value previously stored at ```[m]```.
```i32 llvm.hpvm.atomic.max(i8* m, i32 v)```
```i32 llvm.hpvm.atomic.max(i8* m, i32 v)```
Atomically computes the bitwise MAX of ```v``` and the value stored at memory location ```[m]```. Returns the value previously stored at ```[m]```.
Atomically computes the bitwise MAX of ```v``` and the value stored at memory location ```[m]``` w.r.t. the dynamic instances of the current leaf node and stores the result back into ```[m]```. Returns the value previously stored at ```[m]```.
```i32 llvm.hpvm.atomic.xchg(i8* m, i32 v)```
```i32 llvm.hpvm.atomic.xchg(i8* m, i32 v)```
Atomically computes the bitwise XCHG of ```v``` and the value stored at memory location ```[m]```. Returns the value previously stored at ```[m]```.
Atomically computes the bitwise XCHG of ```v``` and the value stored at memory location ```[m]``` w.r.t. the dynamic instances of the current leaf node and stores the result back into ```[m]```. Returns the value previously stored at ```[m]```.
```i32 llvm.hpvm.atomic.and(i8* m, i32 v)```
```i32 llvm.hpvm.atomic.and(i8* m, i32 v)```
Atomically computes the bitwise AND of ```v``` and the value stored at memory location ```[m]```. Returns the value previously stored at ```[m]```.
Atomically computes the bitwise AND of ```v``` and the value stored at memory location ```[m]``` w.r.t. the dynamic instances of the current leaf node and stores the result back into ```[m]```. Returns the value previously stored at ```[m]```.
```i32 llvm.hpvm.atomic.or(i8* m, i32 v)```
```i32 llvm.hpvm.atomic.or(i8* m, i32 v)```
Atomically computes the bitwise XOR of ```v``` and the value stored at memory location ```[m]```. Returns the value previously stored at ```[m]```.
Atomically computes the bitwise XOR of ```v``` and the value stored at memory location ```[m]``` w.r.t. the dynamic instances of the current leaf node and stores the result back into ```[m]```. Returns the value previously stored at ```[m]```.
```i32 llvm.hpvm.atomic.xor(i8* m, i32 v)```
```i32 llvm.hpvm.atomic.xor(i8* m, i32 v)```
Atomically computes the bitwise XOR of ```v``` and the value stored at memory location ```[m]```. Returns the value previously stored at ```[m]```.
Atomically computes the bitwise XOR of ```v``` and the value stored at memory location ```[m]``` w.r.t. the dynamic instances of the current leaf node and stores the result back into ```[m]```. Returns the value previously stored at ```[m]```.
```void llvm.hpvm.barrier()```
```void llvm.hpvm.barrier()```
Local synchronization barrier across dynamic instances of current leaf node.
Local synchronization barrier across dynamic instances of current leaf node.