Commit Graph

484 Commits

Author SHA1 Message Date
Matt Pharr
13df5f1cb9 Performance results page 2011-12-05 14:24:42 -08:00
Matt Pharr
f19c2aba40 Windows build fixes for examples, update options task granularity 2011-12-05 14:23:50 -08:00
Matt Pharr
ffc1d97df7 Fix aobench_instrumented build on Windows 2011-12-05 13:33:29 -08:00
Matt Pharr
9dd498718b Updated options pricing example to have a tasking-based path as well. 2011-12-05 13:24:34 -08:00
Matt Pharr
6181ce59ae FunctionCallExpr bug: launch count wasn't being type checked, optimized.
This manifested itself by a call to an overloaded function in a launch count 
expression that wasn't being resolved.
2011-12-05 13:23:20 -08:00
Matt Pharr
48a6c2a35b Fix test for 16-wide case 2011-12-05 11:45:06 -08:00
Matt Pharr
0388f46a3b Remove test that was failing (now recorded as issue #130). 2011-12-05 09:39:50 -08:00
Matt Pharr
e3cae098fe Update test 2011-12-05 09:27:53 -08:00
Matt Pharr
455d963962 Don't ignore return value from getcwd() 2011-12-05 09:26:33 -08:00
Matt Pharr
d748c501c9 Fully automate building final HTML files from docs 2011-12-05 09:08:51 -08:00
Matt Pharr
5b8596102a Add entry about using valgrind with ispc to FAQ 2011-12-05 05:57:18 -08:00
Matt Pharr
dc525f281d Fix bug where declarations of arrays of func. ptrs would be lost.
Issue #126.
2011-12-05 05:35:47 -08:00
Matt Pharr
f95504fb5e Symbol table now properly handles scopes for function declarations.
Previously, they all went into one big pile that was never cleaned up;
this was the wrong thing to do in a world where one might have a 
function declaration inside another functions, say.
2011-12-04 17:37:13 -08:00
Matt Pharr
32904dfa11 Fix uninitialized memory error introduced in d65c02f3 2011-12-04 16:39:56 -08:00
Matt Pharr
186d0223d2 Fix AoS/SoA stdlib functions to match documentation
(i.e. actually remove the old offset parameter stuff now that
we can actually pass pointers.)
2011-12-03 22:44:16 -08:00
Matt Pharr
3efbfc30b7 Issue an error if a varying lvalue is passed to a reference function parameter.
(Previously, we crashed.)
2011-12-03 15:35:50 -08:00
Matt Pharr
0fd7811344 Small documentation edits and updates. 2011-12-03 15:35:50 -08:00
Matt Pharr
d492ba08e6 Fix bugs that broke typedefs in function definitions.
Issue #118.
2011-12-03 15:35:44 -08:00
Matt Pharr
a1c0b4f95a Allow 'continue' statements in 'foreach' loops. 2011-12-03 09:31:02 -08:00
Matt Pharr
c3b55de1ad Fix volume rendering example for command-line args change 2011-12-03 09:30:10 -08:00
Matt Pharr
e07ef6d46a 1.1 Users guide final (for now) 2011-12-02 17:04:39 -08:00
Matt Pharr
3e4d69cbd3 Checkpoint work on specifying execution model 2011-12-02 16:01:05 -08:00
Matt Pharr
511a3ab15a Checkpoint documentation work 2011-12-01 17:00:41 -08:00
Matt Pharr
24ef9dac8f Use foreach in the deferred shading example 2011-12-01 17:00:30 -08:00
Matt Pharr
3bb6bff15d Add tests of things the docs claim will cause an error to be issued 2011-12-01 17:00:13 -08:00
Matt Pharr
1390aed99c Make 32-bit addressing the default.
Also renamed the command-line flag to --addressing={32,64}.
2011-12-01 13:38:40 -08:00
Matt Pharr
82aa6efd12 Checkpoint user's guide edits 2011-12-01 13:38:17 -08:00
Matt Pharr
f90aa172a6 Documentation work; first pass perf guide complete 2011-12-01 09:42:56 -08:00
Matt Pharr
a2f118a14e FAQ and perf guide updates 2011-11-30 19:38:37 -08:00
Matt Pharr
c5aecd51e9 Fix indentation in usage message. 2011-11-30 17:11:12 -08:00
Matt Pharr
4d6bcdf41c Documentation refactoring, initial pass at FAQ 2011-11-30 17:11:03 -08:00
Matt Pharr
8bc7367109 Add foreach and foreach_tiled looping constructs
These make it easier to iterate over arbitrary amounts of data
elements; specifically, they automatically handle the "ragged
extra bits" that come up when the number of elements to be
processed isn't evenly divided by programCount.

TODO: documentation
2011-11-30 13:17:31 -08:00
Matt Pharr
b48775a549 Handle global arrays better in varying pointer analysis.
Specifically, indexing into global arrays sometimes comes in as a big 
llvm::ConstantVector, so we need to handle traversing those as well when
we do the corresponding checks in GatherScatterFlattenOpt so that we
still detect cases where we can convert them into the base pointer +
offsets form that's used in later analysis.
2011-11-30 12:29:49 -08:00
Matt Pharr
d4d6bc5d7f Fix crasher from malformed program 2011-11-30 10:32:08 -08:00
Matt Pharr
7a2561c429 Add count_{leading,trailing}_zeros() functions to stdlib.
(Documentation is still yet to be written.)
2011-11-30 10:12:16 -08:00
Matt Pharr
1703f2717c Add some new tests
One tricky pointer one currently hits an assertion (fix forthcoming).
2011-11-30 09:43:25 -08:00
Matt Pharr
92c46a2fc7 Add ISPC_{MAJOR,MINOR}_VERSION macros
(Currently set to 1.1)
2011-11-30 08:32:17 -08:00
Matt Pharr
c995902796 Add --werror flag to treat warnings as errors.
The specific need for it was so that tests in tests_errors
can test to see if a desired diagnostic warning is issued
(like ptrcast-lose-info does.)
2011-11-30 05:51:53 -08:00
Matt Pharr
6b9b7437ed Parse and then mostly ignore "signed" qualifier.
Just issue errors if both "signed" and "unsigned" are specified,
or if "signed" is applied to a non-int type.
2011-11-29 21:41:04 -08:00
Matt Pharr
a3641d7691 Convert arrays to pointers in expressions like (a+5)
This was one instance of the C-style array/pointer duality that
was missed the first time around.
2011-11-29 17:41:00 -08:00
Matt Pharr
e780662a3f Issue error if unsupported version of LLVM is used. 2011-11-29 17:25:35 -08:00
Matt Pharr
d65c02f323 Allow '0' to convert to a NULL pointer value. 2011-11-29 17:22:22 -08:00
Matt Pharr
11547cb950 stdlib updates to take advantage of pointers
The packed_{load,store}_active now functions take a pointer to a
location at which to start loading/storing, rather than an array
base and a uniform index.

Variants of the prefetch functions that take varying pointers 
are now available.

There are now variants of the various atomic functions that take
varying pointers (issue #112).
2011-11-29 15:41:38 -08:00
Matt Pharr
bbb32c0c5d Fix a bug where uniform/varying pointers aren't mangled differently 2011-11-29 15:41:01 -08:00
Matt Pharr
b1ae307163 Fix bug in FunctionEmitContext::SyncInst()
The launch group handle is now reset to NULL after sync is called;
this ensures that if tasks are launched in the same function after
a sync, that the ISPCAlloc() call for the next launch will be
passed a NULL handle (as it should be).
2011-11-29 13:26:48 -08:00
Matt Pharr
e52104ff55 Pointer fixes/improvements.
Allow <, <=, >, >= comparisons of pointers
Allow explicit type-casting of pointers to and from integers
Fix bug in handling expressions of the form "int + ptr" ("ptr + int"
  was fine).
Fix a bug in TypeCastExpr where varying -> uniform typecasts
  would be allowed (leading to a crash later)
2011-11-29 13:22:36 -08:00
Matt Pharr
4ca90272ba Fixes to build with LLVM 3.1 top of tree 2011-11-28 20:25:33 -08:00
Matt Pharr
2a6e3e5fea Fix bug in ptr+offset decomposition in GatherScatterFlattenOpt
Given IR that encoded computation like "vec(4) + ptr2int(some pointer)",
we'd report that "int2ptr(4)" was the base pointer and the ptr2int 
value was the offset.  This in turn could lead to incorrect code
from LLVM, since we'd end up with GEP instructions where the first
operand was int2ptr(4) and the offset was the original pointer value.
This in turn was sometimes leading to incorrect code and thence a 
failure on the tests/gs-double-improve-multidim.ispc test since LLVM's
memory read/write analysis assumes that nothing after the first operand
of a GEP is actually a pointer.
2011-11-28 15:00:41 -08:00
Matt Pharr
867efc2bce Multiple small fixes for better C conformance.
Allow atomic types to be initialized with single-element expression lists:
  int x = { 5 };
Issue an error if a storage class is provided with a function parameter.
Issue an error if two members of a struct have the same name.
Issue an error on trying to assign to a struct with a const member, even if
  the struct itself isn't const.
Issue an error if a function is redefined.
Issue an error if a function overload is declared that differs only in return
  type from a previously-declared function.
Issue an error if "inline" or "task" qualifiers are used outside of function
  declarations.
Allow trailing ',' at the end of enumerator lists.
Multiple tests for all of the above.
2011-11-27 13:09:59 -08:00
Matt Pharr
975db80ef6 Add support for pointers to the language.
Pointers can be either uniform or varying, and behave correspondingly.
e.g.: "uniform float * varying" is a varying pointer to uniform float
data in memory, and "float * uniform" is a uniform pointer to varying
data in memory.  Like other types, pointers are varying by default.

Pointer-based expressions, & and *, sizeof, ->, pointer arithmetic,
and the array/pointer duality all bahave as in C.  Array arguments
to functions are converted to pointers, also like C.

There is a built-in NULL for a null pointer value; conversion from
compile-time constant 0 values to NULL still needs to be implemented.

Other changes:
- Syntax for references has been updated to be C++ style; a useful
  warning is now issued if the "reference" keyword is used.
- It is now illegal to pass a varying lvalue as a reference parameter
  to a function; references are essentially uniform pointers.
  This case had previously been handled via special case call by value
  return code.  That path has been removed, now that varying pointers
  are available to handle this use case (and much more).
- Some stdlib routines have been updated to take pointers as
  arguments where appropriate (e.g. prefetch and the atomics).
  A number of others still need attention.
- All of the examples have been updated
- Many new tests

TODO: documentation
2011-11-27 13:09:59 -08:00