Maciej Suminski
df6b24fd3a
ivl & vvp: Enabled 'string' as the return type in VPI functions.
2016-01-05 14:23:25 +01:00
Stephen Williams
63ad15ee2e
Rework user function calls to use specialized opcodes.
...
Create The %callf/* opcodes to invoke user defined functions in a
more specialized way. This allows for some sanity checking on the
way, and also is a step towards keeping return values on stacks.
2015-12-27 20:29:10 -08:00
Stephen Williams
fff69390ac
C++-ify the __vpiScope classes.
2015-12-20 20:26:57 -08:00
Stephen Williams
466b6464bc
Some minor vvp runtime performance tweaks.
2015-10-01 12:43:56 -07:00
Stephen Williams
4338d43cea
Opcodes documentation fixes.
2015-09-30 16:25:35 -07:00
Stephen Williams
fe7156289b
Remove some useless vvp opcodes.
2015-09-30 15:41:22 -07:00
Frederick C. Kurz
c35f2f8334
Changes to vvp/vthread.cc
...
"child->delay_delete = 1;" was added, for when building with "Microsoft Visual Studio Express 2015 RC Web" in DEBUG mode, so that pr2909555.v would pass with -strict, otherwise it would cause memory access error will trying to access the previously deleted "child" variable.
2015-07-22 18:02:45 -07:00
Martin Whitaker
97c6339241
Ensure VPI release on net connected to island returns correct value.
2015-07-01 09:00:43 +01:00
Martin Whitaker
dad223316e
Fix propagation of unforced bits when forcing a part select.
...
vvp_net_t::force_vec4 propagates all bits of the forced value passed
to it, regardless of the mask value. I can't see any way to fix this
directly, so instead make sure anything that calls force_vec4 sets
the unforced bits of the passed value to the correct value.
2015-06-25 00:13:57 +01:00
Larry Doolittle
2739f83702
Spelling fixes in C and C++ comments
2015-06-04 15:00:29 -07:00
Cary R
feb710a186
Add support for any width 2-state darray objects
2015-02-27 11:43:25 -08:00
Cary R
62abb199d7
Add support for 4-state dynamic arrays
2015-02-26 17:56:49 -08:00
Cary R
47688d234b
Assert if an unsupported dynamic array type is given.
2015-01-16 18:54:43 -08:00
Martin Whitaker
0282b8450c
Fix potential memory leak when a thread is disabled.
...
A disable statement can terminate a thread whilst it still has
local variables on the stack (e.g. the loop counter for a repeat
statement). We need to clear the thread stacks when this happens.
2014-12-11 20:10:17 +00:00
Cary R
48b0fed29e
Use uint64_t casting of constants since UL does not work on 32-bit machines
...
Using a UL constant in a unit64_t context does not work on a 32-bit
machine since UL is 32-bits. Instead create uint64_t constants using
static casts and the appropriate bit operators.
2014-12-10 14:41:18 -08:00
Martin Whitaker
0d7daf5862
Fix vvp memory leak for user function calls in a continuous assignment.
2014-12-07 13:47:50 +00:00
Stephen Williams
409f8c5823
Add the vec4 %subi instruction
2014-12-05 09:45:29 -08:00
Stephen Williams
03198356a5
vec4-stack stack manipulation improvements.
2014-12-04 17:15:27 -08:00
Stephen Williams
b1d2393789
Optimize the %sub instruction by integrating it with vvp_vector4_t class
2014-12-04 17:01:16 -08:00
Stephen Williams
0f740289e9
Optimize %mul instructions by integrating with vvp_vector4_t class.
2014-12-04 16:00:57 -08:00
Stephen Williams
46ce236cfb
Optimize the %add and %addi instructions
...
Tightly integrate with the vvp_vector4_t class to get much
better add performance.
2014-12-04 12:38:08 -08:00
Stephen Williams
86139c855d
Optimize the vec4-stack %cmp/s and %cmpi/s instructions.
...
Magnitude compare is called a LOT, so it is worth putting some
special effort into it.
2014-12-04 10:42:48 -08:00
Stephen Williams
eb070b061b
Optimize the vec4_to_index, which implements %ix/vec4 instructions.
2014-12-03 17:53:45 -08:00
Stephen Williams
2b1393e7b9
Reduce some vector copies in %load/vec4 and %concat/vec4 instructions.
...
By clever stack manipulations, we can eliminate some vector copies,
which can improve performance.
2014-12-03 13:12:06 -08:00
Stephen Williams
85c7b07a9b
Implement %cmp/ne and %cmpi/ne
...
These pull in the inversion of the output flags so that they more
efficiently implement != and !==, without %flag_inv instructions.
2014-12-03 11:06:11 -08:00
Stephen Williams
58fb80aec4
Implement and put to use the %muli instruction.
2014-12-02 12:46:17 -08:00
Stephen Williams
38f277d81b
Merge branch 'master' into vec4-stack
...
Conflicts:
vvp/array.cc
vvp/vthread.cc
2014-12-02 11:21:58 -08:00
Maciej Suminski
7c77097f71
vvp: array_[set/get]_word changed to __vpiArray::[set/get]_word.
2014-11-28 14:14:42 +01:00
Maciej Suminski
cc4c5f4998
vvp: Changed get_array_word_size(vvp_array_t) to __vpiArray::get_word_size().
2014-11-28 14:14:42 +01:00
Stephen Williams
679021a1b5
Optimize special cases of immediate value extraction.
2014-11-22 10:38:16 -08:00
Stephen Williams
f3392561ed
Optimize the vvp pad implementation.
2014-11-22 09:59:02 -08:00
Stephen Williams
c222b3b6a4
Minor improvements to the %split/vec4 instruction.
2014-11-21 16:51:59 -08:00
Stephen Williams
663c79d4af
Add the %cmp/e instructions, and put them to use.
...
When testing for == and ===, there is no need to also calculate <,
so it makes sense to have a special instruction for these cases.
2014-11-21 16:45:27 -08:00
Stephen Williams
bea03db25d
Minor vec4 stack manipulation optimizations.
2014-11-21 14:41:31 -08:00
Stephen Williams
b96f04ccce
Implement the %parti/X instructions
...
This allows part select with constant base to be handled optimally.
Also update some more instructions to more optimally work with
the vec4 stack.
2014-11-20 18:43:24 -08:00
Stephen Williams
a9db765f98
Generate better code for condition expressions.
2014-11-20 14:47:44 -08:00
Stephen Williams
04bdfbccee
Add %cmpi/s and %cmpi/u instructions for performance
...
These bypass the vec4 stack in some common cases, saving instructions
and vec4 manipulations.
Also, minor improvement to the %flag/set/vec4 statement.
Kill a few warnings.
2014-11-19 16:38:43 -08:00
Stephen Williams
2acc9fbdee
Remove dead instructsion %set/qb and %set/qf / Kill some warnings.
2014-11-19 09:15:01 -08:00
Stephen Williams
725ed869ba
Remove dead %load/vp0 instructions and related infrastructure
...
Also remove some &A<> and &PV<> symbols that use this now dead
infrastructure.
2014-11-19 09:02:21 -08:00
Stephen Williams
301edf69d3
Add and use %concati/vec4 and %addi instructions.
...
Also, clean up some warnings, and optimize some existing opcodes.
2014-11-18 12:27:55 -08:00
Stephen Williams
1612c6d638
Instruction %concat/vec4, %pad/u and %shiftl manipulate stack in place
2014-11-17 16:32:18 -08:00
Stephen Williams
aadd67cd3b
Some instructions can do stack manipultations in place.
...
By doing some stack manipulations in place, certain instructions
can eliminate, or optimize, vector copies.
2014-11-14 18:38:15 -08:00
Stephen Williams
0601b4e43b
Optimizations for %pushi/vec4 and %load/vec4
...
- Have %pushi/vec4 handle some special cases optimally.
- Eliminate some duplicated method calls in %load/vec4.
- Optimize the vvp_vector4_t::copy_from_ method by inlining
some parts.
2014-11-14 14:41:04 -08:00
Stephen Williams
8aca66b109
Performance tweaks
...
Better performance for %cmp/s and the vvp_fun_part_sa node.
2014-11-14 11:48:36 -08:00
Martin Whitaker
c2e53f0d63
Fix for br963 - vvp qpop instructions need to call thr_check_addr.
2014-11-02 15:36:52 +00:00
Stephen Williams
48d3972299
Remove a bunch of dead vvp opcodes.
2014-10-24 15:13:28 -07:00
Stephen Williams
09d3a5de59
Port %pushv/str to vec4-stack style.
2014-10-24 10:16:35 -07:00
Stephen Williams
97bde47c31
Remove dead %set/dar and %set/dar/obj instructions.
2014-10-24 10:03:22 -07:00
Stephen Williams
4588f7c615
vec4 stack versions of queue pop methods.
2014-10-24 09:03:20 -07:00
Stephen Williams
35f5d51028
Support testing nul for property that is an object.
2014-10-22 12:58:50 -07:00