Commit Graph
149 Commits
Author SHA1 Message Date
Matt Pharr 1ab05c0351 Set a preprocessor #define based on the target ISA.
For example, ISPC_TARGET_SSE4 is #defined for the sse4 targets, etc.
2011-10-15 12:00:42 -07:00
Matt Pharr 286c23426e Add "double-wide" sse2-x2 target.
i.e. run 8 program instances together, along the lines of the double-pumped
sse4-x2 target.
2011-10-11 15:17:31 -07:00
Matt Pharr 3cb0115dce Add routines to standard library to do efficient AOS/SOA conversions.
Currently, we just support 3 and 4-wide variants (i.e. xyzxyz.. and xyzwxyzw..),
for int32 and float types.
2011-10-10 10:56:06 -07:00
Matt Pharr 790dba2558 Doxygen bump and release notes for v1.0.11 2011-10-07 09:57:55 -07:00
Matt Pharr 9feea32471 Fix errors in documentation for some of the reduce_* stdlib functions 2011-10-06 07:52:10 -07:00
Matt Pharr a68d137df6 Documentation update for multi-target compilation. 2011-10-04 16:01:56 -07:00
Matt Pharr 9de34eb22c Release notes and doxygen bump for v1.0.10 2011-09-30 19:42:14 -07:00
Matt Pharr cb7976bbf6 Added updated task launch implementation that now tracks task groups.
Within each function that launches tasks, we now can easily track which
tasks that function launched, so that the sync at the end of the function
can just sync on the tasks launched by that function (not all tasks
launched by all functions.)

Implementing this led to a rework of the task system API that ispc generates
code to call; the example task systems in examples/tasksys.cpp have been
updated to conform to this API.  (The updated API is also documented in
the ispc user's guide.)

As part of this, "launch[n]" syntax was added to launch a number of tasks
in a single launch statement, rather than requiring a loop over 'n' to
launch n tasks.

This commit thus fixes issue #84 (enhancement to launch multiple tasks from
a single launch statement) as well as issue #105 (recursive task launches
were broken).
2011-09-30 11:20:53 -07:00
Matt Pharr c999c8a237 Add num_cores() stdlib routine. Issue #102. 2011-09-28 16:16:58 -07:00
Matt Pharr aad269fdf4 Added support for 'uniform' global atomics.
Issue #93.
2011-09-28 16:06:07 -07:00
Matt Pharr f1b8e5b1bf Release notes and doxygen bump for 1.0.9 release 2011-09-26 16:21:32 -07:00
Matt Pharr 8ad28a3f6f update doxygen, release notes for 1.0.8 release 2011-09-19 15:22:25 -07:00
Matt Pharr cf23cf9ef4 Fix typo in user guide. Issue #96 2011-09-12 05:24:32 -07:00
Matt Pharr 743d82e935 Various documentation updates. 2011-09-06 09:51:02 -07:00
Matt Pharr f24ab16b91 Release notes, doxygen update for 1.0.7 release. 2011-09-03 07:33:39 -07:00
Matt Pharr 87ec7aa10d release notes, housekeeping for 1.0.6 release 2011-08-17 14:55:21 +01:00
Matt Pharr ff608eef71 Change reduce_equal to return false if no instances are executing 2011-08-14 07:11:45 +01:00
Matt Pharr f868a63064 Add support for scan operations across program instances (add, and, or). 2011-08-13 20:11:41 +01:00
Matt Pharr 8c534d4d74 Add reduce_equal() function to standard library. 2011-08-10 15:55:55 -07:00
Matt Pharr 0ac4f7b620 Add various prefetch functions to the standard library. 2011-08-03 13:31:45 -07:00
Matt Pharr 172794ba5f Release notes and doxygen update for 1.0.5 release 2011-08-01 12:15:42 +01:00
Matt Pharr 2d52c732f1 Doc updates for recent new swizzle support 2011-07-31 19:03:55 +02:00
Matt Pharr 165f90357f Tiny cleanups, doc update re int8/16 performance 2011-07-21 16:04:16 +01:00
Matt Pharr 8ef3df57c5 Add support for in-memory half float data. Fixes issue #10 2011-07-21 15:55:45 +01:00
Matt Pharr bba7211654 Add support for int8/int16 types. Addresses issues #9 and #42. 2011-07-21 06:57:40 +01:00
Matt Pharr 213c3a9666 Release notes, bump doxygen version # for next release.
Add more .gitignore stuff.
2011-07-17 16:52:36 +02:00
Matt Pharr f0f876c3ec Add support for enums. 2011-07-17 16:43:05 +02:00
Matt Pharr a535aa586b Fix issue #2: use zero extend to convert bool->int, not sign extend.
This way, we match C/C++ in that casting a bool to an int gives either the value
zero or the value one.  There is a new stdlib function int sign_extend(bool)
that does sign extension for cases where that's desired.
2011-07-12 13:30:05 +01:00
Matt Pharr aef8c09019 Add support for atomic swap/cmpexchg with float and double types.
Addresses issue #60.
2011-07-07 14:07:52 +01:00
Matt Pharr 6e4c165c7e Use malloc to allocate storage for task parameters on Windows.
Fixes bug #55.  A number of tests were crashing on Windows due to the task
launch code using alloca to allocate space for the tasks' parameters.  On
Windows, the stack isn't generally big enough for this to be a good idea.
Also added an alignment parmaeter to ISPCMalloc() to pass the alignment
requirement along.
2011-07-06 05:53:25 -07:00
Matt Pharr 92106e866e Fix typos in documentation. 2011-07-06 07:37:20 +01:00
Matt Pharr 5bcc611409 Implement global atomics and a memory barrier in the standard library.
This checkin provides the standard set of atomic operations and a memory barrier in the ispc standard library.  Both signed and unsigned 32- and 64-bit integer types are supported.
2011-07-04 17:20:42 +01:00
Matt Pharr 3b3015162f Documentation updates for new preprocessor support. 2011-07-04 14:55:55 +01:00
Matt Pharr c14c3ceba6 Provide both signed and unsigned int variants of bitcode-based builtins.
When creating function Symbols for functions that were defined in LLVM bitcode for the standard library, if any of the function parameters are integer types, create two ispc-side Symbols: one where the integer types are all signed and the other where they are all unsigned.  This allows us to provide, for example, both store_to_int16(reference int a[], uniform int offset, int val) as well as store_to_int16(reference unsigned int a[], uniform int offset, unsigned int val). functions.

Added some additional tests to exercise the new variants of these.

Also fixed some cases where the __{load,store}_int{8,16} builtins would read from/write to memory even if the mask was all off (which could cause crashes in some cases.)
2011-07-04 12:10:26 +01:00
Matt Pharr fe7717ab67 Added shuffle() variant to the standard library that takes two
varying values and a permutation index that spans the concatenation
of the two of them (along the lines of SHUFPS...)
2011-07-02 08:43:35 +01:00
Matt Pharr d2d5858be1 It is no longer legal to initialize arrays and structs with single
scalar values (that ispc used to smear across the array/struct
elements).  Now, initializers in variable declarations must be
{ }-delimited lists, with one element per struct member or array
element, respectively.

There were a few problems with the previous implementation of the
functionality to initialize from scalars.  First, the expression
would be evaluated once per value initialized, so if it had side-effects,
the wrong thing would happen.  Next, for large multidimensional arrays,
the generated code would be a long series of move instructions, rather
than loops (and this in turn made LLVM take a long time.)

While both of these problems are fixable, it's a non-trivial
amount of re-plumbing for a questionable feature anyway.

Fixes issue #50.
2011-07-01 13:45:58 +01:00
Matt Pharr 32764e7639 Update release notes, doxygen version number 2011-07-01 05:12:57 +01:00
Matt Pharr 24216d841f Update release notes for 1.0.2 stuff so far 2011-06-29 07:00:17 +01:00
Daniel Schubert b6d6ee6fc2 Fixed typos. 2011-06-28 07:38:00 -07:00
Matt Pharr cb74346d36 Fix typo (thx jsimmons) 2011-06-27 19:51:46 -07:00
Matt Pharr 2709c354d7 Add support for broadcast(), rotate(), and shuffle() stdlib routines 2011-06-27 17:31:44 -07:00
Ben Harper f830e21cfa Updated docs for store/load int8/int16 2011-06-26 02:02:18 +02:00
Matt Pharr 7854a71ea9 Merge branch 'master' of github.com:ispc/ispc 2011-06-24 16:21:06 -07:00
Matt Pharr b7519d1268 fix date in ReleaseNotes.txt 2011-06-24 16:20:36 -07:00
Matt Pharr f2758f0831 Merge branch 'master' of github.com:ispc/ispc 2011-06-24 16:20:06 -07:00
Matt Pharr ff76c2334e small doc fix, removed incorrect comment from example 2011-06-24 16:19:51 -07:00
Matt Pharr 9b6bf5dabc Add release notes doc 2011-06-24 16:11:46 -07:00
Matt Pharr 865e430b56 Finished updating alignment issues for vector types; don't assume pointers
are aligned to the natural vector width.
2011-06-23 18:51:15 -07:00
Matt Pharr 18af5226ba Initial commit. 2011-06-21 12:48:50 -07:00