Thread overview
iOS arm64 support coming along nicely
Sep 08, 2015
Dan Olson
Sep 09, 2015
ChangLong
Sep 09, 2015
Dan Olson
Sep 09, 2015
Dan Olson
Sep 11, 2015
Jeremy DeHaan
Sep 14, 2015
Dan Olson
Sep 15, 2015
Dan Olson
Sep 15, 2015
David Nadlinger
Sep 16, 2015
Dan Olson
Sep 16, 2015
Kai Nacke
September 08, 2015
Having a free day on Monday and a recently acquired iPhone 6, I started adding support for iOS arm64 to LDC.  So far going smoothly with druntime compiling, Threads and Fiber switching working on the h/w.  TLS functions with same approach as 32-bit ARM: a small modification to LLVM that works with [1].

Next task is to fix up the C ABI as iOS calling convention [2] is a variation on AAPCS64.  Started with LDC's gen/abi-aarch64.cpp, but a couple files of phobos ICE in LLVM vararg code, which I expect is due to iOS variation.

[1] https://github.com/smolt/iphoneos-apple-support [2] https://developer.apple.com/library/ios/documentation/Xcode/Conceptual/iPhoneOSABIReference/Articles/ARM64FunctionCallingConventions.html

-- 
Dan
September 09, 2015
On Tuesday, 8 September 2015 at 15:52:11 UTC, Dan Olson wrote:
> Having a free day on Monday and a recently acquired iPhone 6, I started adding support for iOS arm64 to LDC.  So far going smoothly with druntime compiling, Threads and Fiber switching working on the h/w.  TLS functions with same approach as 32-bit ARM: a small modification to LLVM that works with [1].
>
> Next task is to fix up the C ABI as iOS calling convention [2] is a variation on AAPCS64.  Started with LDC's gen/abi-aarch64.cpp, but a couple files of phobos ICE in LLVM vararg code, which I expect is due to iOS variation.
>
> [1] https://github.com/smolt/iphoneos-apple-support [2] https://developer.apple.com/library/ios/documentation/Xcode/Conceptual/iPhoneOSABIReference/Articles/ARM64FunctionCallingConventions.html

Good work and great news.

Do you think app build by LDC can be released in Apple store?
September 09, 2015
"ChangLong" <changlon@gmail.com> writes:
>
> Do you think app build by LDC can be released in Apple store?

Yes, eventually.  I am sure the review process will find some issues but nothing that can't be fixed.

I have a simple game written by my daughter that I may use as a test case once arm64 is ready.
-- 
Dan
September 09, 2015
Dan Olson <gorox@comcast.net> writes:

> Next task is to fix up the C ABI as iOS calling convention [2] is a variation on AAPCS64.  Started with LDC's gen/abi-aarch64.cpp, but a couple files of phobos ICE in LLVM vararg code, which I expect is due to iOS variation.

All of phobos builds now for arm64 and writeln("hello world") works. Haven't tried much else yet.  Getting the C ABI compatible with clang for struct passing will take some more work though.
-- 
Dan
September 11, 2015
On Wednesday, 9 September 2015 at 16:10:39 UTC, Dan Olson wrote:
> Dan Olson <gorox@comcast.net> writes:
>
>> Next task is to fix up the C ABI as iOS calling convention [2] is a variation on AAPCS64.  Started with LDC's gen/abi-aarch64.cpp, but a couple files of phobos ICE in LLVM vararg code, which I expect is due to iOS variation.
>
> All of phobos builds now for arm64 and writeln("hello world") works. Haven't tried much else yet.  Getting the C ABI compatible with clang for struct passing will take some more work though.

Fantastic news!

Once that is ready I can do some testing with my SFML binding.

I've actually been waiting for this to come so I could play around with it.
September 14, 2015
arm64 iOS and iphone sim almost ready!  A few minor changes where needed but now druntime/phobos unittests are looking good.  It is currently based on 0.15.2 DMD frontend 2.066 [1].

Unfortunately I got a regression (unaligned load) with previously working 32-bit armv7 after the varags change in 0.15.2.  I need to sort that out now.

I haven't pushed necessary LLVM 3.6 arm64 changes yet to github.  Trying to build ios-merge-release-0.15.2 without the updated LLVM will fail.

[1] https://github.com/smolt/ldc/tree/ios-merge-release-0.15.2

--
Dan
September 15, 2015
If anybody is feeling adventuresome and wants to try LDC with an arm64 iOS device, I updated the development repo with submodules that support iOS arm64 and simulator.  I have tested on an iPhone 6 and all druntime/phobos unittests pass with exception of some math results, similar to what I documented for armv7.

https://github.com/smolt/ldc-iphone-dev

I haven't updated any of the readme files yet, but the build instructions still apply.  The differences are that the dev repo will pull in a llvm 3.6.1 with iOS TLS support, LDC is based on 0.15.2, and fatlibs with all standard architectures (armv7, armv7s, arm64, i386, and x86_64) are built for druntime and phobos.
-- 
Dan
September 15, 2015
On 15 Sep 2015, at 18:45, Dan Olson via digitalmars-d-ldc wrote:
> I have tested on an iPhone 6 and all
> druntime/phobos unittests pass with exception of some math results,
> similar to what I documented for armv7.

Nice!

> https://github.com/smolt/ldc-iphone-dev
>
> I haven't updated any of the readme files yet, but the build
> instructions still apply.  The differences are that the dev repo will
> pull in a llvm 3.6.1 with iOS TLS support, LDC is based on 0.15.2, and
> fatlibs with all standard architectures (armv7, armv7s, arm64, i386, and
> x86_64) are built for druntime and phobos.

We should discuss how to best integrate iOS support into mainline LDC (even if it will still require a patched LLVM) soon, especially because DDMD will happen soon.

 — David
September 16, 2015
David Nadlinger via digitalmars-d-ldc <digitalmars-d-ldc@puremagic.com> writes:
>
> We should discuss how to best integrate iOS support into mainline LDC (even if it will still require a patched LLVM) soon, especially because DDMD will happen soon.
>
>  — David

Hi David,

I create Issue #1081 if that works.  I tried to begin by outlining all the changes.

https://github.com/ldc-developers/ldc/issues/1081

It was pretty cool how stuff for arm64 just worked.  In particular, exception handling worked out of the box.
-- 
Dan

September 16, 2015
On Wednesday, 16 September 2015 at 07:23:05 UTC, Dan Olson wrote:
> It was pretty cool how stuff for arm64 just worked.  In particular, exception handling worked out of the box.

The only missing piece for Linux/AArch64 is the vararg stuff. Everything else should work out of the box, too.

Regards,
Kai