Commit Graph

19 Commits

Author SHA1 Message Date
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