Commit Graph

1657 Commits

Author SHA1 Message Date
Matt Pharr
a9540b7c18 Update implementations of masked load/store builtins for AVX to actually use the AVX intrinsics that do this. (As always, not yet tested, pending fuller LLVM AVX support.) 2011-07-01 16:27:49 +01:00
Matt Pharr
28625eb1df Disable ability to specify AVX target on command line (pending things coming more online in LLVM's AVX codebase.) 2011-07-01 16:25:22 +01:00
Matt Pharr
c6bbfe8b54 Many fixes to AVX builtins implementations. (Found by inspection, still not working pending further LLVM support for AVX.)
- Call SSE versions for all the various scalar intrinsics
- Fix names of many (all?) AVX intrinsics; all were missing .256 suffix, others had additional issues.
2011-07-01 16:20:03 +01:00
Matt Pharr
9b7eb88b0c Small fixes to calls to SSE double-precision intrinsic calls for scalar values: actually use the scalar version, not the vector version. 2011-07-01 16:16:05 +01:00
Matt Pharr
6ed6961958 Add checks to sample task systems to ensure that TasksInit has been
called; if not, print an informative error message.
2011-07-01 14:11:16 +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
a2940d63b4 Update call to llvm::Target::createTargetMachine() for LLVM dev tree
build to handle recent change to API.  If building with LLVM tot, a
version starting with or after this change must be used:

    commit 276365dd4bc0c2160f91fd8062ae1fc90c86c324
    Author: Evan Cheng <evan.cheng@apple.com>
    Date:   Thu Jun 30 01:53:36 2011 +0000

    Fix the ridiculous SubtargetFeatures API where it implicitly expects CPU name to
    be the first encoded as the first feature. It then uses the CPU name to look up
    features / scheduling itineray even though clients know full well the CPU name
    being used to query these properties.

    The fix is to just have the clients explictly pass the CPU name!

    git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134127 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-01 08:32:58 +01:00
Matt Pharr
32764e7639 Update release notes, doxygen version number v1.0.2 2011-07-01 05:12:57 +01:00
Matt Pharr
bcae21dbca Update examples to use fpmath:fast and to enable intrinsics on Windows 2011-06-30 13:17:14 -07:00
Matt Pharr
eb22fa6173 Generalize FunctionEmitContext::PtrToIntInst and IntToPtrInst to
do the right thing if given a varying lvalue (i.e. an array of
pointers).  Fixes issue #34.
2011-06-29 12:38:12 +01:00
Matt Pharr
5f7e61f9b5 Another stdlib dependency improvement 2011-06-29 12:26:44 +01:00
Matt Pharr
28a68e3c1f More code simplifications from using CollectionType. Finishes Issue #37 2011-06-29 09:32:31 +01:00
Matt Pharr
6b153566f3 Simplify a bunch of code by using CollectionType to collect struct
codepaths in with array/vector codepaths. (Issue #37).
2011-06-29 07:59:43 +01:00
Matt Pharr
214fb3197a Initial plumbing to add CollectionType base-class as common ancestor
to StructTypes, ArrayTypes, and VectorTypes.  Issue #37.
2011-06-29 07:42:09 +01:00
Matt Pharr
b4068efcfb Fixes to run_tests.sh script
- Use bash, not zsh (don't make people install zsh for no good reason)
- Print help if -h command line option is given
- Allow specifying the compilation target to use on the command line
- If one or more filenames are provided, just run those tests.  Otherwise,
  run everything in the tests/ directory.
2011-06-29 07:25:01 +01:00
Matt Pharr
24216d841f Update release notes for 1.0.2 stuff so far 2011-06-29 07:00:17 +01:00
Matt Pharr
be45beb54b Implement our own routine to turn C99-style hexadecimal float constants in strong form into floating-point values. With this, we can correctly handle hex float constants on Windows, where the builtin atof() routine just returns zero for them. Fixes issue #16. 2011-06-29 06:57:39 +01:00
Matt Pharr
cb58c78c1a Pipe through source file locations of structure element declarations; these are now supplied to the llvm::DIBuilder::createMemberType() method rather than giving it the position of the overall struct declaration for each one. Fixes issue #31 2011-06-29 05:38:42 +01:00
Matt Pharr
86de910ecd Improve implementation of __masked_store_blend_64() for AVX target by doing two 8-wide 32-bit blends rather than serializing. Fixes issue #29 2011-06-28 20:52:06 -07:00
Matt Pharr
ce7978ae74 Align stack-allocated arrays of uniform types to the target vector alignment (they will often be accessed in programCount-sized chunks and this should make that a bit more efficient in the common case). Fixes issue #15 2011-06-28 20:42:18 -07:00
Matt Pharr
7aec7486f8 Make SSE2 the default target on Atom CPUs unless explicitly overridden. (Fixes issue #45 2011-06-28 08:32:58 -07: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
Matt Pharr
36063bae79 Update call to llvm::DIBuilder::createMemberType to fix building with LLVM dev TOT 2011-06-26 08:00:00 -07:00
Matt Pharr
e6d6a82484 Merge pull request #41 from benharper123/master
Update docs on store/load int8/16
2011-06-25 17:28:21 -07:00
Ben Harper
f830e21cfa Updated docs for store/load int8/int16 2011-06-26 02:02:18 +02:00
Matt Pharr
ae2c24c3c1 Merge branch 'master' of github.com:ispc/ispc 2011-06-24 17:06:08 -07:00
Andreas Wendleder
6dfd74c74c Add verbose flag and report progress. 2011-06-24 17:05:24 -07:00
Matt Pharr
7055888cb7 Merge branch 'master' of github.com:ispc/ispc 2011-06-24 16:21:54 -07: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
6cf4d7e216 Merge branch 'master' of /Users/mmp/git/ispc v1.0.1 2011-06-24 05:11:06 -07:00
Matt Pharr
ab33afaea4 Merge branch 'master' of home:/Users/mmp/git/ispc 2011-06-23 18:54:14 -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
fab5794faf Merge branch 'master' of github.com:ispc/ispc 2011-06-23 18:25:44 -07:00
Matt Pharr
990bee5a86 Merge branch 'master' of github.com:ispc/ispc 2011-06-23 18:21:02 -07:00
Matt Pharr
b84167dddd Fixed a number of issues related to memory alignment; a number of places
were expecting vector-width-aligned pointers where in point of fact,
there's no guarantee that they would have been in general.

Removed the aligned memory allocation routines from some of the examples;
they're no longer needed.

No perf. difference on Core2/Core i5 CPUs; older CPUs may see some
regressions.

Still need to update the documentation for this change and finish reviewing
alignment issues in Load/Store instructions generated by .cpp files.
2011-06-23 18:18:33 -07:00
Matt Pharr
3c3cd88692 initial alignment work 2011-06-23 17:36:44 -07:00
Andreas Wendleder
f39d31174e Follow LLVM API change. 2011-06-23 16:10:03 -07:00
Andreas Wendleder
39542f420a Ignore built files. 2011-06-23 16:06:38 -07:00
Matt Pharr
d340dcbfcc Modify makefile to print out llvm version and install directory it's using 2011-06-23 16:02:09 -07:00
Matt Pharr
e5bc6cd67c Update examples/ Makefiles to make x86-64 explicit in compiler flags 2011-06-23 10:00:07 -07:00
Matt Pharr
40bd133dec Add dependency to make sure that bison runs (to generate parse.hh) before we try to compile lex.cpp 2011-06-22 14:47:03 -07:00
Matt Pharr
2ced56736e small comment changes, remove dead code 2011-06-22 14:38:49 -07:00
Matt Pharr
bf74a3360f Merge pull request #24 from petecoup/master
LLVM 2.8 mods
2011-06-22 12:03:19 -07:00
Matt Pharr
aaafdf80f2 Move two tests that are currently failing into failing_tests/ 2011-06-22 05:28:23 -07:00