Commit Graph

224 Commits

Author SHA1 Message Date
Chris Lattner
b58a87c7c4 do an inttoptr/ptrtoint dance to enable atomics on Builtin.RawPointer,
implementing: rdar://12939803 - ER: support atomic cmpxchg/xchg with pointers


Swift SVN r3702
2013-01-07 19:14:01 +00:00
Chris Lattner
db63db1c6b expose the llvm atomicrmw instruction through the builtin module to swift code,
wrapping up rdar://12939282.


Swift SVN r3619
2012-12-30 09:53:41 +00:00
Chris Lattner
53baaafffb implement support for generating the fence instruction through
Builtin.fence_*, part of rdar://12939282


Swift SVN r3618
2012-12-30 09:36:08 +00:00
Chris Lattner
fd2a4490fa expose the llvm cmpxchg instruction featureset through to the swift Builtin module,
first part of rdar://12939282.


Swift SVN r3617
2012-12-30 09:21:26 +00:00
Chris Lattner
1fd5d9c1da clean up Builtins.def:
- Don't require "OverloadedBuiltinKind::" to be in the invocation
   of a bunch of builtins for their specification of overload info.
   Eliminating this makes the file fit in 80 columns.
 - Eliminate a bunch of classifications that only classify one thing,
   in favor of a "BUILTIN_MISC_OPERATION" dumping ground for all the
   custom stuff.  This eliminates a bunch of boilerplate.

No functionality change.


Swift SVN r3615
2012-12-30 08:03:14 +00:00
John McCall
e7b9ae47fa Defer to the value witness when moving an archetype. This
is really a deficiency in TypeInfo::initializeWithTake, which
is now virtual and not implemented in TypeInfo anymore.  This
fixes rdar://problem/12153619.

While I'm at it, fix an inefficiency in how we were handling
ignored results of generic calls, and add 4 new builtins:
  Builtin.strideof is like sizeof, but guarantees that it
  returns a multiple of the alignment (i.e., like C sizeof,
  it is the appropriate allocation size for members of an
  array).
  Builtin.destroy destroys something "in place";  previously
  this was being simulated by moving and ignoring the result.
  Builtin.allocRaw allocates raw, uninitialized memory, given
  a size and alignment.
  Builtin.deallocRaw deallocates a pointer allocated with
  Builtin.allocRaw;  it must be given the allocated size.

Swift SVN r2720
2012-08-23 05:21:31 +00:00
Eli Friedman
95cb2d6af2 Add builtins to convert between arbitrary retainable pointers,
Builtin.ObjectPointer, and Builtin.RawPointer.  I don't really like the way
these builtins are defined (specifically, the part where messing up
gives a mysterious IRGen error), but it's workable. <rdar://problem/11976323>.



Swift SVN r2585
2012-08-08 00:40:07 +00:00
Eli Friedman
688138482d Complete the implementation of a basic Vector<T>.
Swift SVN r2457
2012-07-25 22:51:46 +00:00
Doug Gregor
d684a74ada Implement builtin 'sizeof' and 'alignof' for everthing except archetypes.
Swift SVN r2330
2012-07-10 18:35:48 +00:00
Chris Lattner
f3c3ad086f Remove OverloadedBuiltinKind::Arithmetic, replacing it with OverloadedBuiltinKind::Special
and simplifying Builtins.def.


Swift SVN r1854
2012-05-15 04:29:47 +00:00
Chris Lattner
6faa726012 switch binops builtin irgen to the new world order.
Swift SVN r1852
2012-05-15 04:15:54 +00:00
Chris Lattner
90fc3c35bb split the 3 "arithmetic" binary operations into fp vs integer variants.
Swift SVN r1838
2012-05-14 18:45:33 +00:00
Chris Lattner
dd63c83ecc rework compare builtins to use the new-school way of
IRGen'ing them.


Swift SVN r1837
2012-05-14 17:53:19 +00:00
Chris Lattner
fd38dab6e2 switch cast builtins IRGen to use a different approach.
Swift SVN r1835
2012-05-14 17:37:07 +00:00
Doug Gregor
86cf79a746 Add a range subscript operation for SliceInt64 that produces a slice, e.g.,
a[5..9]

will return a 4-element slice of the array a. Addresses
<rdar://problem/11329415>.


Swift SVN r1665
2012-04-27 00:07:52 +00:00
John McCall
c7b7c085bd Following IR gen's motivated lead, split Builtin.store
into Builtin.assign and Builtin.init operations.

Swift SVN r1593
2012-04-24 09:51:05 +00:00
Chris Lattner
6e7d1071d6 lshr is a useful builtin to have, just not useful for signed shift right :)
Swift SVN r1540
2012-04-21 05:28:04 +00:00
Doug Gregor
0bdca7425f s/lshr/ashr/g in builtins.
Swift SVN r1537
2012-04-20 19:46:29 +00:00
Doug Gregor
b237823246 Implement load and store builtins, which we use to provide get() and
set() functions for UnsafePointerInt.


Swift SVN r1533
2012-04-20 17:58:23 +00:00
Doug Gregor
e26d552a36 Implement integer shift-left/shift-right in the Swift standard library.
Swift SVN r1531
2012-04-20 16:33:38 +00:00
Chris Lattner
4f4c8b1455 add initial support for Builtin cast instructions, patch #1/2.
Swift SVN r1433
2012-04-14 00:56:35 +00:00
Chris Lattner
868eccff76 implement a new Builtin.gep operation which maps to the LLVM Getelementptr instruction,
used for pointer offseting.  We can figure out inbounds later.  This is to be used by
UnsafePointerInt


Swift SVN r1429
2012-04-13 23:10:42 +00:00
Chris Lattner
c7c61ecc01 remove the unary neg/not builtins. They're not needed and don't match LLVM IR.
Swift SVN r1425
2012-04-13 21:59:56 +00:00
John McCall
37b07c8691 Add builtin bindings for a bunch of primitive LLVM instructions.
Swift SVN r698
2011-09-08 00:21:11 +00:00