Commit Graph

199 Commits

Author SHA1 Message Date
Andrey Guskov
73dc899ff1 Fixed MAXINT array size limitation 2015-06-06 01:16:56 +03:00
jbrodman
c8e492d82f Ptr Diff should ignore const 2015-04-29 18:30:21 -04:00
Dmitry Babokin
da83196996 Adding missing AddressOfExpr::GetLValueType() 2014-12-30 18:11:39 +03:00
evghenii
8745888ce9 merged with master 2014-08-11 10:04:54 +02:00
Anton Mitrokhin
60fa76ccc1 reversed macros LLVM_3_6 to LLVM_3_5+ in .cpp and .h files 2014-08-01 15:40:48 +04:00
Anton Mitrokhin
d0c9b7c9b5 wiped out all LLVM 3.1 support 2014-08-01 14:54:08 +04:00
Anton Mitrokhin
725be222ac added LLVM_3_6 var 2014-07-30 11:50:15 +04:00
evghenii
b3c5a9c4d6 added #ifdef ISPC_NVPTX_ENALED ... #endif guards 2014-07-09 12:32:18 +02:00
evghenii
69f3898a61 Merge branch 'master' into nvptx_merge 2014-07-07 16:30:12 +02:00
jbrodman
d3144da5eb Add error messages for structs containing nested undefined structs 2014-05-27 15:50:53 -07:00
Evghenii
fb581818c5 Merge branch 'master' into nvptx 2014-04-01 09:10:10 +02:00
Ilia Filippov
ecdc695b22 Changing overload rules to match C++ behavior: Emit a warning when the best overload match has some number of no-best matching parameters. 2014-03-25 12:41:09 +04:00
Ilia Filippov
6f44d5b55f correction of overload issues 2014-03-24 15:47:21 +04:00
Evghenii
4641a15287 Merge branch 'master' into nvptx 2014-03-19 10:53:07 +01:00
Ilia Filippov
02d55f24f6 adding const to Atomic::Void type 2014-03-17 14:42:55 +04:00
Dmitry Babokin
31b95b665b Copyright update 2014-03-12 20:19:16 +04:00
Ilia Filippov
9ab8f4e10e support LLVM trunk after 202814-202842 revisions 2014-03-05 10:12:30 +04:00
Ilia Filippov
c4e35050b0 support of building with C++11 2014-03-04 16:01:18 +04:00
Evghenii
4196c723eb merged with nvptx 2014-02-20 11:01:58 +01:00
jbrodman
720975dff4 Disallow initializing void * with ptr to const. 2014-02-04 03:36:19 -08:00
Evghenii
6bf2ad27d1 merge with master 2014-02-01 11:53:57 +01:00
jbrodman
00aeef9f1b Allow casting reference types like pointers. See Issue #721. 2014-01-24 03:37:27 -08:00
Evghenii
5a8351d7ea added varying new/delete 2014-01-24 09:22:55 +01:00
Evghenii
e734bbc0cc added new Errors 2014-01-23 13:11:02 +01:00
Dmitry Babokin
6d51987e67 Merge pull request #642 from egaburov/launch3d
concept of 3d tasking
2013-12-17 08:40:07 -08:00
Evghenii
63ecf009ec fix compilation for Visual Studio 2013-12-17 15:06:29 +01:00
james.brodman
9ce6fbe1fa Support using pointer arithmetic as lvalue 2013-10-30 17:07:26 -04:00
Ilia Filippov
621679245a fixing problem 644 2013-10-25 22:44:37 +04:00
egaburov
f89bad1e94 launch now passes the right info into tasking 2013-10-23 12:51:06 +02:00
Ilia Filippov
2e724b095e support of operators 2013-10-18 13:45:15 +04:00
Matt Pharr
611477e214 Revert change to lEmitVaryingSelect().
Using vector select versus a store and masked load for varying vector
selects seems to give worse code.  This may be related to
http://llvm.org/bugs/show_bug.cgi?id=16941.
2013-08-22 07:50:25 -07:00
Matt Pharr
1276ea9844 Revert "Remove support for building with LLVM 3.1"
This reverts commit d3c567503b.

Conflicts:
	opt.cpp
2013-08-06 17:00:35 -07:00
Matt Pharr
d3c567503b Remove support for building with LLVM 3.1 2013-07-31 06:46:45 -07:00
Matt Pharr
04d61afa23 Fix bug in lEmitVaryingSelect() for targets with i1 mask types.
Commit 53414f12e6 introduced a but where lEmitVaryingSelect() would
try to truncate a vector of i1s to a vector of i1s, which in turn
made LLVM's IR analyzer unhappy.
2013-07-25 09:45:20 -07:00
Matt Pharr
53414f12e6 Add SSE4 target optimized for computation with 8-bit datatypes.
This change adds a new 'sse4-8' target, where programCount is 16 and
the mask element size is 8-bits.  (i.e. the most appropriate sizing of
the mask for SIMD computation with 8-bit datatypes.)
2013-07-23 17:30:32 -07:00
Matt Pharr
e7abf3f2ea Add support for mask vectors of 8 and 16-bit element types.
There were a number of places throughout the system that assumed that the
execution mask would only have either 32-bit or 1-bit elements.  This
commit makes it possible to have a target with an 8- or 16-bit mask.
2013-07-23 16:50:11 -07:00
Matt Pharr
83e1630fbc Add support for fast division of varying int values by small constants.
For varying int8/16/32 types, divides by small constants can be
implemented efficiently through multiplies and shifts with integer
types of twice the bit-width; this commit adds this optimization.
    
(Implementation is based on Halide.)
2013-07-23 16:49:56 -07:00
Matt Pharr
0277ba1aaa Improve warnings for right shift by varying amounts.
Fixes:
- Don't issue a warning when the shift is a by the same amount in all
  vector lanes.
- Do issue a warning when it's a compile-time constant but the values
  are different in different lanes.

Previously, we warned iff the shift amount wasn't a compile-time constant.
2013-07-23 16:49:07 -07:00
Matt Pharr
564e61c828 Improvements to constant folding.
We can now do constant folding with all basic datatypes (the previous
implementation handled int32 well, but had limited, if any, coverage
for other datatypes.)

Reduced a bit of repeated code in the constant folding implementation
through template helper functions.
2013-07-22 16:12:02 -07:00
Dmitry Babokin
27daab2f1b Fix for #520 2013-06-18 22:15:49 +04:00
james.brodman
9f44e597d6 Additional Not -> Xor w/ MaskAllOn 2013-05-15 18:15:41 -04:00
james.brodman
5af2f80bc5 Fix for cases where valid lvalues were not being computed. 2013-05-03 12:12:42 -04:00
Dmitry Babokin
95950885cf Use posix_memalign to allocate 16 byte alligned memeory on Linux/MacOS. 2013-04-26 20:33:24 +04:00
Dmitry Babokin
4c35d9456a Additional cleanup to enable more broadcasts 2013-04-10 15:34:21 +04:00
Dmitry Babokin
0f86255279 Target class redesign: data moved to private. Also empty target-feature attribute is not added anymore (generic targets). 2013-03-23 14:28:05 +04:00
Dmitry Babokin
3f8a678c5a Editorial change: fixing trailing white spaces and tabs 2013-03-18 16:17:55 +04:00
james.brodman
a4e94a26ba Tweak to not oversize short vec types for 64 bit values 2013-01-17 15:45:51 -05:00
Matt Pharr
0bf1320a32 Remove support for building with LLVM 3.0 2013-01-06 12:27:53 -08:00
Matt Pharr
63dd7d9859 Fix build to work with LLVM top-of-tree again 2013-01-06 12:02:08 -08:00
Peng Tu
04d32ae3e6 Inside LLVM, both signed and unsigned integer are represented with the same type - i32 - effectively a signed int32. On 64 bit target, we must generate explicit sxt/zxt during the LLVM IR creation to promote the array index into 64 bit. Otherwise, an unsigned int index becomes signed int index in the LLVM IR.
I limit the fix to uniformed index to avoid widening a varying index vector to 64 bits.  This means that the 32 bit values in the varying indices must be positive and smaller than 2^31 at the runtime for a program to behave correctly.
2012-11-05 15:02:15 -08:00