From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 42905 invoked by alias); 4 Sep 2016 07:57:23 -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 42892 invoked by uid 89); 4 Sep 2016 07:57:22 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.3 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,RCVD_IN_SORBS_SPAM,SPF_PASS autolearn=no version=3.3.2 spammy=UD:hpe.com, FYI, Hx-languages-length:1878, fyi X-HELO: mail-vk0-f48.google.com Received: from mail-vk0-f48.google.com (HELO mail-vk0-f48.google.com) (209.85.213.48) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sun, 04 Sep 2016 07:57:12 +0000 Received: by mail-vk0-f48.google.com with SMTP id w124so56323762vkd.3 for ; Sun, 04 Sep 2016 00:57:12 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=j+0hFtOcqwPfv79AiCJ9gtwuQYNK0NyYNPWX6I967Ew=; b=kCdjTNba8dvfxPnGgWGLTJq8MLBFapUZKJj5dWGcQBiq92n1yghxCrIUIbjAuuiIQb PpR3iLg5epCubIsoMx4t2JcTKIiavf0/XwqSyZdd2bIm2tUYS8NlaOuxC2ahT0N9nAcy DA9+KONTau+iIplYjnnBOct0Eq1KvjiqEsW89G+WQR8Owiutr6ujDltt/k7DKRxJjnNr Mizsz64WFJ/YJ8NWWHCNRe7TzKGuqPvuvucKroLC3rh6OZ4Q/BGwuQQo+1Qji2QISBnu RrVyN0hm5/GAE6Lp6Fgj0ojZVieCk7MuqHD3DHlF+BNw9gIzNxcFwDgleH7VRPmuhIf4 vfQQ== X-Gm-Message-State: AE9vXwNVt9ZHsYZtyqaEWWw5EajxVd+iPX1bGUObDHJXb6SHEhPLQ55TGhw9gebMnzggxxgMT9MkoR9hflRefg== X-Received: by 10.31.63.199 with SMTP id m190mr18635052vka.23.1472975830938; Sun, 04 Sep 2016 00:57:10 -0700 (PDT) MIME-Version: 1.0 Received: by 10.103.21.134 with HTTP; Sun, 4 Sep 2016 00:57:10 -0700 (PDT) In-Reply-To: References: From: Uros Bizjak Date: Sun, 04 Sep 2016 08:04:00 -0000 Message-ID: Subject: Re: [RFC PATCH, alpha]: ABI change: pass SFmode and SCmode variable arguments by reference To: Richard Henderson Cc: "gcc-patches@gcc.gnu.org" , "Joseph S. Myers" Content-Type: text/plain; charset=UTF-8 X-SW-Source: 2016-09/txt/msg00155.txt.bz2 On Fri, Sep 2, 2016 at 7:17 PM, Richard Henderson wrote: > On 09/02/2016 02:35 AM, Uros Bizjak wrote: >> --q-- >> /* Pass float and _Complex float variable arguments by reference. >> This avoids 64-bit store from a FP register to a pretend args save area >> and subsequent 32-bit load from the saved location to a FP register. >> >> Note that 32-bit loads and stores to/from a FP register on alpha reorder >> bits to form a canonical 64-bit value in the FP register. This fact >> invalidates compiler assumption that 32-bit FP value lives in the lower >> 32-bits of the passed 64-bit FP value, so loading the 32-bit value from >> the stored 64-bit location using 32-bit FP load is invalid on alpha. >> >> This introduces sort of ABI incompatibility, but until _Float32 was >> introduced, C-family languages promoted 32-bit float variable arg to >> a 64-bit double, and it was not allowed to pass float as a varible >> argument. Passing _Complex float as a variable argument never >> worked on alpha. Thus, we have no backward compatibility issues >> to worry about, and passing un-promoted _Float32 and _Complex float >> as a variable argument will actually work in the future. */ >> --/q-- > > This sounds like a good plan to me. Thanks! >> (I was not able to find the >> authoritative OSF/1 ABI document on the net...) > > As far as I know, it was never available online. > I have a paper copy. FYI, after some more involved deep searching (and luck ;) I found one at [1]. It is under "Programming Documentation Bookshelf" section, the document is called "Calling Standard for Alpha Systems" [2]. [1] http://h41361.www4.hpe.com/docs/pub_page/V51B_DOCS/v51b_doclist.htm [2] http://h41361.www4.hpe.com/docs/base_doc/DOCUMENTATION/V51B_ACRO_DUX/ARH9MCTE.PDF Uros.