Received: by 10.213.65.68 with SMTP id h4csp1209999imn; Wed, 4 Apr 2018 14:48:05 -0700 (PDT) X-Google-Smtp-Source: AIpwx4+ET2Pr9pejtY3H8RakK6ACRC5KBFVvQm+/GrAkgNWvfLk+8EFCmKyPXvMGXuYG0414inHQ X-Received: by 10.98.62.150 with SMTP id y22mr14124213pfj.46.1522878485662; Wed, 04 Apr 2018 14:48:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522878485; cv=none; d=google.com; s=arc-20160816; b=c+8s9hCU4l5kn/H62c8HdFF145GZxIFJ1TuZcbYTwPq6qousb253XCGTOjb7nPfPaI u4NtFyOz2xVSV293bi8h+3v69OBk0Ntv9twJ7vav+Sj+CvapNT0EmEGVY+oGTvBDXjcs sdHp0OfuXfz2s+a8dn561XW28M+AIuByf6pIqLhWaMn8HIs2YqWDyWcP07KnMAGuZuKC brdbYxHCcMg0l4dyZW/F/q0kzgEkdWHcULR6Y7v+jJMPZn0yxo7CfeamBNYdmGmr+r36 RW2vGrgSMSinFhyNHf+EE4ArG0yIG/dT+j9h0K6/6sV1VgfQO4Fooacs2uyV085t1jlM iXGg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature:arc-authentication-results; bh=1EaGTkdUmFCVcy8uZwcgcgIvfropc2FOCPsVeUJOhGU=; b=wH0/uHofF40TdY6r0JYPqp34BQLNa3B7XccybVOJXl9BZ6wPna3RpY7aLDy3cPq++r LyU5CFX31jMmCKd63GKrhNZxv3try2ZLOpzrU5KXH7oDKqqQ+0aQSYrR8G+ZRQAHKsG4 j1ul9D3y5HH21Si3dIaVsafaDExBdVuw5kzRKmtPLscCGCWb5U55GFSJic00ktDewqER jzcZhRupDRgkcpaKuLhs6zPCIjcycS3qGTU/vNqoTbNrnEbb3UCrWJ74nDVURBJ2lyw7 UyuiCE4orjNL+mNVGD5WMstsFlxTaUFigMZ7RhtR6GyiwGUvaNLZnMFSbznuLfkjs06X gxJg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=n5q/A297; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id ay5-v6si4023388plb.88.2018.04.04.14.47.51; Wed, 04 Apr 2018 14:48:05 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=n5q/A297; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752414AbeDDVqm (ORCPT + 99 others); Wed, 4 Apr 2018 17:46:42 -0400 Received: from mail-pl0-f66.google.com ([209.85.160.66]:33916 "EHLO mail-pl0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752117AbeDDVqk (ORCPT ); Wed, 4 Apr 2018 17:46:40 -0400 Received: by mail-pl0-f66.google.com with SMTP id u11-v6so16070848plq.1 for ; Wed, 04 Apr 2018 14:46:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=1EaGTkdUmFCVcy8uZwcgcgIvfropc2FOCPsVeUJOhGU=; b=n5q/A297iUK62JhHZnYvF6Aj5TF7J4oDYS69CU7Df+zVfDuaXLAcpp6G8tUK6uPt/j DlBiY7+ESVx/HxhfjBF6eqHmRTY3q0sLpCVR4GJDZd+G1jUEJucWCI0uPpAxOiZKLH4f k6oJzDzS6C0M9RRB/mwJep08ejCbrbEJXp6fM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=1EaGTkdUmFCVcy8uZwcgcgIvfropc2FOCPsVeUJOhGU=; b=kDaTBkusxX9F8DUS8OwUgLKK1HmgyJ3RX7AT6E4gAayYv9DeKq27UFw+LIl8KI9rcx U3kJoGKHS0VbwcGtpF6dJjpAR2MOjc0zjokyis5DGuByAyQrGiRiaD9QNVF1NtD9Nymf F3iJtikoH5ssyqQ15P+od/XlquofYvYLZTpbCm/knYVDcNwW3z8iTwfH5rGF49/kYhSM jAXN3e2wNe/UMQekjJS8OfK7yEZZSlHQzw17kWfpb5/+QGRO/UTQBvKE9sj3xGtf/WJo /9e8U+mpYAqoTXpF7l9nR7cdfcSvvc9f92AVY7ESW4ng/sUiXiIfTi5l9EvY/QZOXxMp bmUg== X-Gm-Message-State: AElRT7GqPrBSjmmBGbdpF3heUXQ7T9izWZjg3xnSW2mKyeRWtWZAq7n5 TaSjuaiaH9NQKKTBT1/LD6jDhg== X-Received: by 10.101.77.198 with SMTP id q6mr13290498pgt.61.1522878400430; Wed, 04 Apr 2018 14:46:40 -0700 (PDT) Received: from localhost ([2620:0:1000:1501:8e2d:4727:1211:622]) by smtp.gmail.com with ESMTPSA id y15sm11008973pfb.37.2018.04.04.14.46.39 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 04 Apr 2018 14:46:39 -0700 (PDT) Date: Wed, 4 Apr 2018 14:46:39 -0700 From: Matthias Kaehlcke To: Arnd Bergmann Cc: Peter Zijlstra , Ingo Molnar , Linus Torvalds , Linux Kernel Mailing List , Thomas Gleixner , Andrew Morton , James Y Knight , Chandler Carruth , Stephen Hines , Nick Desaulniers , Kees Cook , Guenter Roeck , Greg Hackmann , Greg Kroah-Hartman Subject: Re: [GIT PULL] x86/build changes for v4.17 Message-ID: <20180404214639.GH87376@google.com> References: <20180402095033.nfzcrmxvpm46dhbl@gmail.com> <20180403085904.GY4082@hirez.programming.kicks-ass.net> <20180403095118.rpf7tj577dppvx7d@gmail.com> <20180403180658.GE87376@google.com> <20180404093007.GI4082@hirez.programming.kicks-ass.net> <20180404191724.GF87376@google.com> <20180404205848.GG87376@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.9.2 (2017-12-15) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org El Wed, Apr 04, 2018 at 11:11:36PM +0200 Arnd Bergmann ha dit: > On Wed, Apr 4, 2018 at 10:58 PM, Matthias Kaehlcke wrote: > > El Wed, Apr 04, 2018 at 10:33:19PM +0200 Arnd Bergmann ha dit: > >> > >> In most cases, this is used to implement a fast-path for a helper > >> function, so not doing it the same way as gcc just results in > >> slower execution, but I assume we also have code that behaves > >> differently on clang compared to gcc because of this. > > > > I think I didn't come (knowingly) across that one yet. Could you point > > me to an instance that could be used as an example in a bug report? > > This code > > #include > int f(u64 u) > { > return div_u64(u, 100000); > } > > results in a call to __do_div64() on 32-bit arm using clang, but > gets optimized into a set of multiply+shift on gcc. I understand this is annoying, but it seems I'm missing something: static inline u64 div_u64(u64 dividend, u32 divisor) { u32 remainder; return div_u64_rem(dividend, divisor, &remainder); } static inline u64 div_u64_rem(u64 dividend, u32 divisor, u32 *remainder) { *remainder = do_div(dividend, divisor); return dividend; } #define do_div(n, base) __div64_32(&(n), base) static inline uint32_t __div64_32(uint64_t *n, uint32_t base) { register unsigned int __base asm("r4") = base; register unsigned long long __n asm("r0") = *n; register unsigned long long __res asm("r2"); register unsigned int __rem asm(__xh); asm( __asmeq("%0", __xh) __asmeq("%1", "r2") __asmeq("%2", "r0") __asmeq("%3", "r4") "bl __do_div64" : "=r" (__rem), "=r" (__res) : "r" (__n), "r" (__base) : "ip", "lr", "cc"); *n = __res; return __rem; } There is no reference to __builtin_constant_p(), could you elaborate? Also you mentioned there are plenty of cases, maybe there is a more straightforward one? In any case it seems this derails a bit from the original topic of the thread. Shall we take this offline?