From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail4-relais-sop.national.inria.fr (mail4-relais-sop.national.inria.fr [192.134.164.105]) by walapai.inria.fr (8.13.6/8.13.6) with ESMTP id pBELpAcU015758 for ; Wed, 14 Dec 2011 22:51:10 +0100 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ak8BANIZ6U5KfVM2kGdsb2JhbABEqxYIIgEBAQEJCQ0HFAQhgXIBAQEDARICJgYBATcBBAsLDiYHCzQBBQEcBicOh1gCBpotCoozhBwBjiEHiyRjom09g3k X-IronPort-AV: E=Sophos;i="4.71,355,1320620400"; d="scan'208";a="123395930" Received: from mail-ee0-f54.google.com ([74.125.83.54]) by mail4-smtp-sop.national.inria.fr with ESMTP/TLS/RC4-SHA; 14 Dec 2011 22:51:05 +0100 Received: by eekc50 with SMTP id c50so1798805eek.27 for ; Wed, 14 Dec 2011 13:51:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=gamma; h=subject:mime-version:content-type:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to:x-mailer; bh=6WCm82uRBQn5aQUs3yrcVJ2a1dzXeVo3Nhj3YpOOeYM=; b=SrJ/T2/n8JnOmpb1QORYLTvSRLYEWbJpHitzZvgZCdtDbjxET6EC6PmRduiORYcNDW CRFKRawWlBMEPnRcxxFgtyUXKskX6N8Rg2NWZFpunEe8BwzXnInGBzO1jGesQLkjZv0d ht1qTYA/BltD1ai1GV6tm7WT+ixWECL0i6xtQ= Received: by 10.14.99.78 with SMTP id w54mr186262eef.33.1323899464573; Wed, 14 Dec 2011 13:51:04 -0800 (PST) Received: from coruscant.kosmos.all (ip-95-223-170-32.unitymediagroup.de. [95.223.170.32]) by mx.google.com with ESMTPS id x12sm15272567eef.9.2011.12.14.13.51.02 (version=SSLv3 cipher=OTHER); Wed, 14 Dec 2011 13:51:03 -0800 (PST) Mime-Version: 1.0 (Apple Message framework v1251.1) Content-Type: text/plain; charset=us-ascii From: Benedikt Meurer In-Reply-To: <20111214091843.GA26813@janestreet.com> Date: Wed, 14 Dec 2011 22:51:02 +0100 Cc: caml users Message-Id: <11AB70B8-EB33-4A40-89B5-6BE25D120FF1@googlemail.com> References: <55531934-37A5-4CC5-AB67-20CE4CCE8269@googlemail.com> <4EE37070.4010702@inria.fr> <4EE63E88.40805@glondu.net> <20111214091843.GA26813@janestreet.com> To: Mark Shinwell X-Mailer: Apple Mail (2.1251.1) Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by walapai.inria.fr id pBELpAcU015758 Subject: Re: [Caml-list] New experimental ARM backend [was: OCaml maintenance status / community fork (again)] On Dec 14, 2011, at 10:18 , Mark Shinwell wrote: >> - Support for both softfp and VFPv3-D16 (if present). >> - Properly supports interworking with Thumb/Thumb-2 code (for both OCaml and C code!) >> - Supports dynamic linking and large memory models. >> - Optional support for position-independent code via -fPIC, disabled by default and not required for natdynlink. >> - Can emit both ARM and Thumb-2 code (currently Thumb-2 is used for ARMv7+ and ARM is used for everything else), with avg. code size savings of 27% for Thumb-2 (quite close the optimal 30% advertised by ARM Ltd.). I may also add support to emit small functions using Thumb-1 (for pre-ARMv7 / armel) in the future to reduce code size. >> - Supports both AAPCS (armel) as well as extended VFP calling conventions (armhf). >> - Properly supports backtraces. >> - Recognizes several special ARM instructions (=> reduced code size and latency). >> - Does not rely on GCC internals, but uses the standard ARM EABI runtime. > > This looks like an impressive amount of work. I'd like to suggest that a good > approach to getting some/all of this merged might be to divide the patch up > into smaller units each addressing a particular deficiency or implementing > a particular feature. In that way it should be more straightforward to > understand the effects on the whole system of each particular patch and > maintain stability and compatibility. I understand that this might cause some > work and that some of the patches might be intertwined. (Another approach > might be to introduce this backend as a second ARM backend with the > understanding that it may be experimental to a certain extent---but I think > that's less satisfactory, and less likely to find favour with everyone.) > > Which items from the above list would you most like to see in the core > distribution? I would have thought the basic VFP support was fairly high > up the list. The port is not in a clean state yet. It's still a bit messy, and I'm going to separate various things first (i.e. select FPU / CPU independent of platform ABI, for example use VFPv3 with softfp EABI, etc. or use Thumb-2 on armel, etc.). I hope to get some more time to work on it during the week. You can follow the work at: http://github.com/bmeurer/ocaml-arm Testing and feedback is always welcome, of course. Concerning your proposal to split the patch into multiple smaller patches: (a) This would probably result in roughly two patches, the first one to fix the existing armel port, and the second one to add support for FPUs, armhf EABI, Thumb, Thumb-2, etc. (these depend on each other in various ways). (b) It would be a lot of work for almost no benefit, because it is an almost completely new backend and not simply a set of bug fixes for the existing ARM backend, and must be treated this way. And even if I'd spend my days splitting up the patch, there's still that unresolved OCaml contributions issue (i.e. high probability of wasting my time because that patch set will just idle in Mantis). > Mark Benedikt