From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on yquem.inria.fr X-Spam-Level: * X-Spam-Status: No, score=1.7 required=5.0 tests=AWL,DNS_FROM_RFC_POST, SPF_NEUTRAL autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by yquem.inria.fr (Postfix) with ESMTP id 4C9BABC37 for ; Tue, 28 Apr 2009 21:36:16 +0200 (CEST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AusBALv39knRVciqkGdsb2JhbACWKT8BAQEBCQkMBxEDpleBCJBCAQMBA4NwBQ X-IronPort-AV: E=Sophos;i="4.40,261,1238968800"; d="scan'208";a="25319106" Received: from wf-out-1314.google.com ([209.85.200.170]) by mail2-smtp-roc.national.inria.fr with ESMTP; 28 Apr 2009 21:36:15 +0200 Received: by wf-out-1314.google.com with SMTP id 26so572879wfd.0 for ; Tue, 28 Apr 2009 12:36:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:date:message-id:subject :from:to:content-type:content-transfer-encoding; bh=VN8Ft1LVTgO2ne7njP8gs+eOmzpzVHNZN86Ysssk+74=; b=qwPElKVdJX25f27w07QOpWPk5Hzmn1wLwr7XL/YQZMFxf7z9mCpKxDL5HKP9mxBQpg wEwBrHEI2Bn5kZxQeIh/xHQli/5UP1Mqy8ZZ9AhFkgt0QtXFOHFfbr3lMCmXjjFvuspe VQJadTycG74FJjY38mG6pTvpgsmXvq0M5lIjc= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type :content-transfer-encoding; b=v5/mTp+LQWleqgRnuk6021uQOrVUo38xgbNF9Ww9ZoFqPYoFzdEZl3OMWGm4DYxxmt rmTNNnD/FLzSzw3T7FI6ARGshYqbsXt6OPzLlbu0ZgZF/8w6BW4oBktqUXLtZIlLYI/H fYJv8bzvXstARv/ohcBtkej58o8N1xhTYNtYU= MIME-Version: 1.0 Received: by 10.142.246.19 with SMTP id t19mr2170707wfh.146.1240947374046; Tue, 28 Apr 2009 12:36:14 -0700 (PDT) Date: Tue, 28 Apr 2009 23:36:14 +0400 Message-ID: <90823c940904281236x61204451nac149ee15b5df73a@mail.gmail.com> Subject: Ocamlopt code generator question From: Dmitry Bely To: Caml List Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Spam: no; 0.00; ocamlopt:01 asmcomp:01 mlp:01 ofs:01 ofs:01 pointer:01 dmitry:01 dmitry:01 bely:01 bely:01 conventions:02 conventions:02 caml:02 caml:02 floats:02 For amd64 we have in asmcomp/amd64/proc_nt.mlp: (* xmm0 - xmm15 100 - 115 xmm0 - xmm9: Caml function arguments xmm0 - xmm3: C function arguments xmm0: Caml and C function results xmm6-xmm15 are preserved by C *) let loc_arguments arg = calling_conventions 0 9 100 109 outgoing arg let loc_parameters arg = let (loc, ofs) = calling_conventions 0 9 100 109 incoming arg in loc let loc_results res = let (loc, ofs) = calling_conventions 0 0 100 100 not_supported res in loc What these first_float=100 and last_float=109 for loc_arguments and loc_parameters affect? My impression is that floats are always passed boxed, so xmm registers are in fact never used to pass parameters. And float values are returned as a pointer in eax, not a value in xmm0 as loc_results would suggest. - Dmitry Bely