From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30333 invoked by alias); 18 Jul 2013 10:27:05 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 30323 invoked by uid 89); 18 Jul 2013 10:27:04 -0000 X-Spam-SWARE-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00,KAM_STOCKGEN,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RDNS_NONE,SPF_PASS autolearn=no version=3.3.1 Received: from Unknown (HELO service87.mimecast.com) (91.220.42.44) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Thu, 18 Jul 2013 10:27:03 +0000 Received: from cam-owa1.Emea.Arm.com (fw-tnat.cambridge.arm.com [217.140.96.21]) by service87.mimecast.com; Thu, 18 Jul 2013 11:26:55 +0100 Received: from [10.1.201.52] ([10.1.255.212]) by cam-owa1.Emea.Arm.com with Microsoft SMTPSVC(6.0.3790.0); Thu, 18 Jul 2013 11:26:54 +0100 Message-ID: <51E7C2EE.8070309@arm.com> Date: Thu, 18 Jul 2013 10:28:00 -0000 From: Yufeng Zhang User-Agent: Mozilla/5.0 (X11; Linux i686 on x86_64; rv:8.0) Gecko/20111105 Thunderbird/8.0 MIME-Version: 1.0 To: Marcus Shawcroft CC: gcc-patches@gcc.gnu.org Subject: Re: [Ping] [Patch, AArch64, ILP32] 2/5 More backend changes and support for small absolute and small PIC addressing models References: <51CB6AAE.8030101@arm.com> <51CB6CB7.30707@arm.com> In-Reply-To: <51CB6CB7.30707@arm.com> X-MC-Unique: 113071811265500201 Content-Type: text/plain; charset=WINDOWS-1252; format=flowed Content-Transfer-Encoding: quoted-printable X-SW-Source: 2013-07/txt/msg00703.txt.bz2 Ping~ Thanks, Yufeng On 06/26/13 23:35, Yufeng Zhang wrote: > This patch updates the AArch64 backend to support the small absolute and > small PIC addressing models for ILP32; it also updates a number of other > backend macros and hooks in order to support ILP32. > > OK for the trunk? > > Thanks, > Yufeng > > > gcc/ > > * config/aarch64/aarch64.c (POINTER_BYTES): New define. > (aarch64_load_symref_appropriately): In the case of > SYMBOL_SMALL_ABSOLUTE, use the mode of 'dest' instead of Pmode > to generate new rtx; likewise to the case of SYMBOL_SMALL_GOT. > (aarch64_expand_mov_immediate): In the case of SYMBOL_FORCE_TO_= MEM, > change to pass 'ptr_mode' to force_const_mem and zero-extend 'm= em' > if 'mode' doesn't equal to 'ptr_mode'. > (aarch64_output_mi_thunk): Add an assertion on the alignment of > 'vcall_offset'; change to call aarch64_emit_move differently > depending > on whether 'Pmode' equals to 'ptr_mode' or not; use 'POINTER_BY= TES' > to calculate the upper bound of 'vcall_offset'. > (aarch64_cannot_force_const_mem): Change to also return true if > mode !=3D ptr_mode. > (aarch64_legitimize_reload_address): In the case of large > displacements, add new local variable 'xmode' and an assertion > based on it; change to use 'xmode' to generate the new rtx and > reload. > (aarch64_asm_trampoline_template): Change to generate the templ= ate > differently depending on TARGET_ILP32 or not; change to use > 'POINTER_BYTES' in the argument passed to assemble_aligned_inte= ger. > (aarch64_trampoline_size): Removed. > (aarch64_trampoline_init): Add new local constant 'tramp_code_s= z' > and replace immediate literals with it. Change to use 'ptr_mod= e' > instead of 'DImode' and call convert_memory_address if the mode > of 'fnaddr' doesn't equal to 'ptr_mode'. > (aarch64_elf_asm_constructor): Change to use > assemble_aligned_integer > to output symbol. > (aarch64_elf_asm_destructor): Likewise. > * config/aarch64/aarch64.h (TRAMPOLINE_SIZE): Change to be > dependent > on TARGET_ILP32 instead of aarch64_trampoline_size. > * config/aarch64/aarch64.md (movsi_aarch64): Add new alternativ= es > of 'mov' between WSP and W registers as well as 'adr' and 'adrp= '. > (loadwb_pair_): Rename to ... > (loadwb_pair_): ... this. Replace PTR with P. > (storewb_pair_): Likewise; rename to ... > (storewb_pair_): ... this. > (add_losym): Change to 'define_expand' and call > gen_add_losym_ > depending on the value of 'mode'. > (add_losym_): New. > (ldr_got_small_): New, based on ldr_got_small. > (ldr_got_small): Remove. > (ldr_got_small_sidi): New. > * config/aarch64/iterators.md (P): New. > (PTR): Change to 'ptr_mode' in the condition.