Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-04 Thread Iain Buclaw via Digitalmars-d
On 3 February 2015 at 11:15, Iain Buclaw ibuc...@gdcproject.org wrote: On 3 February 2015 at 08:28, Walter Bright via Digitalmars-d digitalmars-d@puremagic.com wrote: On 2/2/2015 8:36 PM, Daniel Murphy wrote: If so, what corrective action is the user faced with: The user can modify the code

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread Andrei Alexandrescu via Digitalmars-d
On 2/3/15 9:05 PM, Daniel Murphy wrote: Andrei Alexandrescu wrote in message news:mar39k$hvh$1...@digitalmars.com... I think the best route here - and the most in-the-spirit-of-D - is to provide introspection on whether a function is being inlined or not. Then we can always have in libraries:

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread Daniel Murphy via Digitalmars-d
Andrei Alexandrescu wrote in message news:mar39k$hvh$1...@digitalmars.com... I think the best route here - and the most in-the-spirit-of-D - is to provide introspection on whether a function is being inlined or not. Then we can always have in libraries: bool uart(ubyte b) { static

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread via Digitalmars-d
On Tuesday, 3 February 2015 at 22:41:30 UTC, Jonathan M Davis wrote: Well, as far as I can tell, that's pretty much exactly what Walter meant by hot and cold - how likely they are to be called, with the idea that the compiler could then use that information to better optimize - be it inlining

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread H. S. Teoh via Digitalmars-d
On Tue, Feb 03, 2015 at 09:53:37PM +1100, Daniel Murphy via Digitalmars-d wrote: Walter Bright wrote in message news:maq7f1$2hka$1...@digitalmars.com... [...] It's like the old joke where a captain is asked by a colonel how he'd get a flagpole raised. The captain replied with a detailed set of

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread Andrei Alexandrescu via Digitalmars-d
On 2/3/15 12:17 AM, Johannes Pfau wrote: Well I see that you're not even considering adding a simple pragma to help embedded programming. In that case I see absolutely no reason to continue working on that. You guys say we lack expertise so we cannot help directly and you're in search of

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread Walter Bright via Digitalmars-d
On 2/2/2015 8:36 PM, Daniel Murphy wrote: If so, what corrective action is the user faced with: The user can modify the code to allow it to be inlined. There are a huge number of constructs that cause dmd's inliner to completely give up. If a function _must_ be inlined, the compiler needs to

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread Daniel Kozák via Digitalmars-d
V Mon, 02 Feb 2015 21:53:43 + Dicebot via Digitalmars-d digitalmars-d@puremagic.com napsáno: On Monday, 2 February 2015 at 21:19:05 UTC, Walter Bright wrote: On 2/2/2015 9:17 AM, H. S. Teoh via Digitalmars-d wrote: Walter seems to dislike forced inlining for various reasons,

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread Johannes Pfau via Digitalmars-d
Am Mon, 02 Feb 2015 15:44:21 -0800 schrieb Walter Bright newshou...@digitalmars.com: Also it's a conceptually nice way for typed registers: You can read it as: I've got a Register of type PORT which is an extern variable located add a fixed address. PORT abstract away volatile access.

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread Walter Bright via Digitalmars-d
On 2/2/2015 8:36 PM, Daniel Murphy wrote: The user can modify the code to allow it to be inlined. There are a huge number of constructs that cause dmd's inliner to completely give up. If a function _must_ be inlined, the compiler needs to give an error if it fails. A separate message with a

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread Iain Buclaw via Digitalmars-d
On 3 February 2015 at 08:28, Walter Bright via Digitalmars-d digitalmars-d@puremagic.com wrote: On 2/2/2015 8:36 PM, Daniel Murphy wrote: If so, what corrective action is the user faced with: The user can modify the code to allow it to be inlined. There are a huge number of constructs that

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread Mike via Digitalmars-d
On Tuesday, 3 February 2015 at 09:36:57 UTC, Walter Bright wrote: On 2/3/2015 1:11 AM, Mike wrote: All things being equal, will there be any difference between the resulting binaries for each of these scenarios? No. Another way of putting it: Does pragma(inline, true) simply allow the

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread via Digitalmars-d
On Tuesday, 3 February 2015 at 11:33:35 UTC, Mike wrote: I don't like hot/cold as it does not convey the effect. Yeah, I believe LLVM has a register saving calling convention that is cold_cc, so cold would be more suited for functions that are almost never called.

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread Johannes Pfau via Digitalmars-d
Am Tue, 03 Feb 2015 07:09:10 -0800 schrieb Andrei Alexandrescu seewebsiteforem...@erdani.org: On 2/3/15 12:17 AM, Johannes Pfau wrote: Well I see that you're not even considering adding a simple pragma to help embedded programming. In that case I see absolutely no reason to continue

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread John Colvin via Digitalmars-d
On Monday, 2 February 2015 at 23:29:26 UTC, Walter Bright wrote: Now, when it can't inline, do you expect the compiler to produce an error message? Just to add support: Yes, exactly that. If so, what corrective action is the user faced with: Change the function so it can be inlined, or

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread Steven Schveighoffer via Digitalmars-d
On 2/2/15 5:34 PM, Jonathan M Davis via Digitalmars-d wrote: On Monday, February 02, 2015 13:01:28 Walter Bright via Digitalmars-d wrote: On 2/2/2015 6:43 AM, Manu via Digitalmars-d wrote: I'm pretty sure the only controversy is that you want it to be a pragma, everyone else wants it to be an

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread John Colvin via Digitalmars-d
On Tuesday, 3 February 2015 at 10:36:08 UTC, Walter Bright wrote: Obviously, inlining functions with loops tend to have lower payoffs anyway, because the loop time swamps the function call overhead. I feel a bit awkward disagreeing with you about a topic like this, because of your obviously

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread via Digitalmars-d
On Tuesday, 3 February 2015 at 18:16:20 UTC, Andrei Alexandrescu wrote: static assert(__traits(inlined), Inlining of uart() must be supported.); This is unworkable: 1. You want to be able to turn off inlining for debugging. 2. You would have to wait with evaluating static_assert

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread Dicebot via Digitalmars-d
On Tuesday, 3 February 2015 at 08:31:24 UTC, Walter Bright wrote: On 2/2/2015 8:36 PM, Daniel Murphy wrote: The user can modify the code to allow it to be inlined. There are a huge number of constructs that cause dmd's inliner to completely give up. If a function _must_ be inlined, the

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread captaindet via Digitalmars-d
On 2015-02-03 05:05, Daniel Murphy wrote: Walter Bright wrote in message news:maq8ao$2idu$1...@digitalmars.com... Yup. I understand the concern that a compiler would opt out of inlining those if it legally could, but I just cannot see that happening in reality. Modern compilers have been

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread Andrei Alexandrescu via Digitalmars-d
On 2/3/15 9:29 AM, Dicebot wrote: On Tuesday, 3 February 2015 at 08:31:24 UTC, Walter Bright wrote: On 2/2/2015 8:36 PM, Daniel Murphy wrote: The user can modify the code to allow it to be inlined. There are a huge number of constructs that cause dmd's inliner to completely give up. If a

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread Dicebot via Digitalmars-d
On Tuesday, 3 February 2015 at 18:16:20 UTC, Andrei Alexandrescu wrote: I think the best route here - and the most in-the-spirit-of-D - is to provide introspection on whether a function is being inlined or not. Then we can always have in libraries: bool uart(ubyte b) { static

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread Jonathan M Davis via Digitalmars-d
On Tuesday, February 03, 2015 11:41:35 via Digitalmars-d wrote: On Tuesday, 3 February 2015 at 11:33:35 UTC, Mike wrote: I don't like hot/cold as it does not convey the effect. Yeah, I believe LLVM has a register saving calling convention that is cold_cc, so cold would be more suited for

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread FG via Digitalmars-d
On 2015-02-03 at 18:53, captaindet wrote: i am a simple user writing mostly programs to crunch my scientific data. i'd like to move my C code to D. but i deal with GBs of data that i have to sieve through many times. in C, i have lots of repeating integer stunts in the inner loop that must be

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread Walter Bright via Digitalmars-d
Some perspective from a Rust developer: https://mail.mozilla.org/pipermail/rust-dev/2013-May/004272.html

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread Tobias Pankrath via Digitalmars-d
On Tuesday, 3 February 2015 at 09:36:57 UTC, Walter Bright wrote: On 2/3/2015 1:11 AM, Mike wrote: All things being equal, will there be any difference between the resulting binaries for each of these scenarios? No. Another way of putting it: Does pragma(inline, true) simply allow the

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread Daniel Murphy via Digitalmars-d
Walter Bright wrote in message news:maq0rp$2ar8$1...@digitalmars.com... I'd like to reexamine those assumptions, and do a little rewinding. The compiler offers a -inline switch, which will inline everything it can. Performance oriented code will use that switch. So why doesn't the compiler

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread zeljkog via Digitalmars-d
On 03.02.15 10:35, Walter Bright wrote: On 2/3/2015 1:11 AM, Mike wrote: Another way of putting it: Does pragma(inline, true) simply allow the user to compiler parts of their source file with -inline? Yes. Eh, yes :) I see now, errors/warnings are invasive compared to this simple,

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread Daniel Murphy via Digitalmars-d
Walter Bright wrote in message news:maq8ao$2idu$1...@digitalmars.com... Yup. I understand the concern that a compiler would opt out of inlining those if it legally could, but I just cannot see that happening in reality. Modern compilers have been inlining for 25 years now, and they're not

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread Daniel Murphy via Digitalmars-d
Walter Bright wrote in message news:maq7ra$2huu$1...@digitalmars.com... To not inline trivial functions when presented with forceinline would indeed be perverse, and while legally possible as I've said before no compiler writer would do that. Even dmd (!) has no trouble at all inlining

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread Daniel Murphy via Digitalmars-d
Walter Bright wrote in message news:maq7f1$2hka$1...@digitalmars.com... On 2/3/2015 1:49 AM, Daniel Murphy wrote: This doesn't make sense to me, because even if a function is 'hot' it still shouldn't be inlined if inlining is turned off. 'hot' can be interpreted to be inline even if

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread Walter Bright via Digitalmars-d
On 2/1/2015 9:48 PM, Walter Bright wrote: On 2/1/2015 9:21 PM, Daniel Murphy wrote: struct Ports { static ubyte B() { return volatileLoad(cast(ubyte *)0x0025); } static void B(ubyte value) { volatileStore(cast(ubyte *)0x0025, value); } } A somewhat more refined version:

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread Daniel Murphy via Digitalmars-d
Tobias Pankrath wrote in message news:cumpcsdbtreytdxxc...@forum.dlang.org... Besides this: Why should a compiler that has an inliner fail to inline a function marked with force_inline? The result may be undesirable but it should always work at least? The inliner in dmd fails to inline

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread Tobias Pankrath via Digitalmars-d
On Tuesday, 3 February 2015 at 10:10:43 UTC, Daniel Murphy wrote: Tobias Pankrath wrote in message news:cumpcsdbtreytdxxc...@forum.dlang.org... Besides this: Why should a compiler that has an inliner fail to inline a function marked with force_inline? The result may be undesirable but it

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread Daniel Murphy via Digitalmars-d
Tobias Pankrath wrote in message news:zdsqgbuoobnhnjrtp...@forum.dlang.org... Why couldn't he just copy paste the functions code? Why would he want to do that?

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread Tobias Pankrath via Digitalmars-d
On Tuesday, 3 February 2015 at 10:15:38 UTC, Daniel Murphy wrote: Tobias Pankrath wrote in message news:zdsqgbuoobnhnjrtp...@forum.dlang.org... Why couldn't he just copy paste the functions code? Why would he want to do that? Let me rephrase the question: Why should inlining a function

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread Walter Bright via Digitalmars-d
On 2/3/2015 1:49 AM, Daniel Murphy wrote: This doesn't make sense to me, because even if a function is 'hot' it still shouldn't be inlined if inlining is turned off. 'hot' can be interpreted to be inline even if inlining is turned off. (That is what Manu wanted.) There are literally

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread Walter Bright via Digitalmars-d
On 2/3/2015 1:56 AM, Daniel Murphy wrote: I don't expect this to be a huge problem, because most functions marked with forceinline would be trivial. eg. setREG(ubyte val) { volatileStore(cast(ubyte*)0x1234, val); } This function only exists to give a nicer interface to the register. If the

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread Daniel Murphy via Digitalmars-d
Tobias Pankrath wrote in message news:vzgszrvcxxpethbdl...@forum.dlang.org... Let me rephrase the question: Why should inlining a function be impossible, if it can be done by a simple AST transformation? It's not impossible, dmd's inliner just can't currently do it. The transformation

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread Walter Bright via Digitalmars-d
On 2/3/2015 2:10 AM, Daniel Murphy wrote: The inliner in dmd fails to inline many constructs, loops for example. It will inline a loop if the function is called at the statement level. The trouble with inlining a loop inside an expression is that is not expressible in the expression tree

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread Walter Bright via Digitalmars-d
On 2/3/2015 1:11 AM, Mike wrote: All things being equal, will there be any difference between the resulting binaries for each of these scenarios? No. Another way of putting it: Does pragma(inline, true) simply allow the user to compiler parts of their source file with -inline? Yes.

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread Mike via Digitalmars-d
On Tuesday, 3 February 2015 at 08:28:42 UTC, Walter Bright wrote: The compiler offers a -inline switch, which will inline everything it can. Performance oriented code will use that switch. pragma(inline,true) tells the compiler that this function is 'hot', and pragma(inline, false) that

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread Daniel Murphy via Digitalmars-d
Walter Bright wrote in message news:maq10s$2avu$1...@digitalmars.com... A separate message with a pragmatic difficulty with your suggestion. Different compilers will have different inlining capabilities. Different versions of the same compiler may behave differently. This means that

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-03 Thread Daniel Murphy via Digitalmars-d
Walter Bright wrote in message news:maq48d$2enr$1...@digitalmars.com... Some perspective from a Rust developer: https://mail.mozilla.org/pipermail/rust-dev/2013-May/004272.html I think that's mostly an argument against misuse of forceinline.

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Walter Bright via Digitalmars-d
On 2/2/2015 1:24 PM, Johannes Pfau wrote: What's your argument? That it still generates 2 instructions in the simplest case? That's an X86 specific detail. On ARM and other RISC architectures there is a difference between loading a literal (code into the instruction) or loading a runtime value.

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Walter Bright via Digitalmars-d
On 2/2/2015 10:44 AM, Iain Buclaw via Digitalmars-d wrote: On 2 February 2015 at 17:43, Andrei Alexandrescu via Digitalmars-d digitalmars-d@puremagic.com wrote: On 2/2/15 9:23 AM, Iain Buclaw via Digitalmars-d wrote: That code doesn't work with DMD. http://goo.gl/hgsHg0 Has that been

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Johannes Pfau via Digitalmars-d
Am Mon, 02 Feb 2015 13:15:13 -0800 schrieb Walter Bright newshou...@digitalmars.com: On 2/2/2015 9:15 AM, Johannes Pfau wrote: It's also necessary that the compiler knows after inlining that the address is a literal. Loading data from fixed literal addresses produces different, more

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Walter Bright via Digitalmars-d
On 2/2/2015 6:58 AM, Manu via Digitalmars-d wrote: They need to be wrapped to be useful, Wrapping them is a subjective matter of taste. And before anyone says I don't know what I'm talking about, I used to write embedded systems software. :-)

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Walter Bright via Digitalmars-d
On 2/2/2015 9:06 AM, Johannes Pfau wrote: _Dmain: push rbp movrbp,rsp subrsp,0x10 movrax,0x5 == movQWORD PTR [rbp-0x8],rax movecx,DWORD PTR [rax] == a register based load The instruction it

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Johannes Pfau via Digitalmars-d
Am Mon, 02 Feb 2015 12:39:28 -0500 schrieb Steven Schveighoffer schvei...@yahoo.com: On 2/2/15 12:06 PM, Johannes Pfau wrote: Am Mon, 02 Feb 2015 02:49:48 -0800 schrieb Walter Bright newshou...@digitalmars.com: Please try it before deciding it does not work. I guess one ad hominem

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Walter Bright via Digitalmars-d
On 2/2/2015 6:43 AM, Manu via Digitalmars-d wrote: I'm pretty sure the only controversy is that you want it to be a pragma, everyone else wants it to be an attribute. That's correct. My reasoning is simple - an attribute defines the semantics of the interface, a pragma gives instructions to

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Walter Bright via Digitalmars-d
On 2/2/2015 9:15 AM, Johannes Pfau wrote: It's also necessary that the compiler knows after inlining that the address is a literal. Loading data from fixed literal addresses produces different, more efficient code than loading from an runtime address. As the function code will generally be

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Zach the Mystic via Digitalmars-d
On Monday, 2 February 2015 at 21:01:30 UTC, Johannes Pfau wrote: Am Mon, 02 Feb 2015 12:39:28 -0500 schrieb Steven Schveighoffer schvei...@yahoo.com: On 2/2/15 12:06 PM, Johannes Pfau wrote: Am Mon, 02 Feb 2015 02:49:48 -0800 schrieb Walter Bright newshou...@digitalmars.com: Please try it

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Dicebot via Digitalmars-d
On Monday, 2 February 2015 at 21:19:05 UTC, Walter Bright wrote: On 2/2/2015 9:17 AM, H. S. Teoh via Digitalmars-d wrote: Walter seems to dislike forced inlining for various reasons, preferring inlining as a hint at the most, and he probably has a point in most cases (let the compiler make the

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread H. S. Teoh via Digitalmars-d
On Mon, Feb 02, 2015 at 09:53:43PM +, Dicebot via Digitalmars-d wrote: On Monday, 2 February 2015 at 21:19:05 UTC, Walter Bright wrote: On 2/2/2015 9:17 AM, H. S. Teoh via Digitalmars-d wrote: Walter seems to dislike forced inlining for various reasons, preferring inlining as a hint at the

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Nick Sabalausky via Digitalmars-d
On 02/02/2015 12:56 PM, Timo Sintonen wrote: Developers make things _for_ users. Hear hear, That's a point I always feel deserves far more attention and deliberate, conscious appreciation than it typically gets. (Just a general observation of the overall software development world, not

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Walter Bright via Digitalmars-d
On 2/2/2015 9:17 AM, H. S. Teoh via Digitalmars-d wrote: On Mon, Feb 02, 2015 at 08:55:59AM -0800, Andrei Alexandrescu via Digitalmars-d wrote: On 2/2/15 8:42 AM, Johannes Pfau wrote: Again the problem is not volatileLoad/Store which translate to single instructions it's wrappers. So does

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Walter Bright via Digitalmars-d
On 2/2/2015 2:34 PM, Jonathan M Davis via Digitalmars-d wrote: That makes sense, though the one issue that I see with making it a pragma is the fact that pragmas are supposed to be compiler-specific and not part of the language (at least as I understand it), and I would expect that anyone

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Dicebot via Digitalmars-d
On Monday, 2 February 2015 at 23:29:26 UTC, Walter Bright wrote: Now, when it can't inline, do you expect the compiler to produce an error message? Yes, this is the very point of such feature - telling that if code can't be inlined, it is effectively unusable. If so, what corrective action

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread zeljkog via Digitalmars-d
On 03.02.15 00:29, Walter Bright wrote: Now, when it can't inline, do you expect the compiler to produce an error message? Or warning? Microcontroller programmers like to look at produced code, no need to force them :)

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Walter Bright via Digitalmars-d
On 2/2/2015 2:30 PM, Johannes Pfau wrote: I does: if the backend can't know that a value is known at compile time it cant use absolute addresses: void test(ubyte* ptr) { volatileLoad(ptr); //Can't use literal addressing might be runtime value } The context here is that

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Walter Bright via Digitalmars-d
On 2/2/2015 1:53 PM, Dicebot wrote: http://wiki.dlang.org/DIP56 Erm. Quoting the DIP: If a pragma specifies always inline, whether or not the target function(s) are actually inlined is implementation defined, although the implementation will be expected to inline it if practical. This is

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Johannes Pfau via Digitalmars-d
Am Mon, 02 Feb 2015 13:44:41 -0800 schrieb Walter Bright newshou...@digitalmars.com: On 2/2/2015 9:06 AM, Johannes Pfau wrote: _Dmain: push rbp movrbp,rsp subrsp,0x10 movrax,0x5 == movQWORD PTR [rbp-0x8],rax mov

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Jonathan M Davis via Digitalmars-d
On Monday, February 02, 2015 13:01:28 Walter Bright via Digitalmars-d wrote: On 2/2/2015 6:43 AM, Manu via Digitalmars-d wrote: I'm pretty sure the only controversy is that you want it to be a pragma, everyone else wants it to be an attribute. That's correct. My reasoning is simple - an

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Walter Bright via Digitalmars-d
On 2/2/2015 1:39 AM, Johannes Pfau wrote: No, it doesn't even come close. * Ports.B += 7 doesn't work. This should not be done with MMIO because the read and write cycles generated are ill-defined and vary based on obscure backend details. In order to implement it you need a

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Iain Buclaw via Digitalmars-d
On 2 February 2015 at 10:57, Walter Bright via Digitalmars-d digitalmars-d@puremagic.com wrote: On 2/2/2015 1:39 AM, Johannes Pfau wrote: No, it doesn't even come close. * Ports.B += 7 doesn't work. This should not be done with MMIO because the read and write cycles generated are

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Walter Bright via Digitalmars-d
On 2/2/2015 1:24 AM, Johannes Pfau wrote: Usually those people just don't use volatile as long as their code works. Once it breaks they add volatile everywhere till it works again. Having a volatile type is not going to make things better for such people. In fact, it may make things worse.

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread eles via Digitalmars-d
On Monday, 2 February 2015 at 09:22:41 UTC, Walter Bright wrote: On 2/1/2015 11:16 PM, Iain Buclaw via Digitalmars-d wrote: Where is the @property? :) yeah, yeah !! BTW, when D's property will finally be cleaned up?... I did miss something, or there is still a -property flag out there?

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Johannes Pfau via Digitalmars-d
Am Sun, 01 Feb 2015 21:48:40 -0800 schrieb Walter Bright newshou...@digitalmars.com: On 2/1/2015 9:21 PM, Daniel Murphy wrote: Walter Bright wrote in message news:mam6qe$15nu$1...@digitalmars.com... We also need a pragma(address) to complement pragma(mangle). What would that do?

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Daniel Murphy via Digitalmars-d
Walter Bright wrote in message news:map18m$1dvv$1...@digitalmars.com... Now, when it can't inline, do you expect the compiler to produce an error message? Yes. If so, what corrective action is the user faced with: The user can modify the code to allow it to be inlined. There are a huge

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Martin Nowak via Digitalmars-d
Just go with __gshared. Or even better, avoid globals ;).

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Daniel Murphy via Digitalmars-d
Johannes Pfau wrote in message news:maotpd$1ape$1...@digitalmars.com... but if you instead write @property ref Volatile!ubyte PORTA() { return *(cast(Volatile!(ubyte)*)0x05) } PORTA |= now calls a function behind the scenes. The backend does not immediately know that PORTA is always 0x05.

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Iain Buclaw via Digitalmars-d
On 2 Feb 2015 23:45, Walter Bright via Digitalmars-d digitalmars-d@puremagic.com wrote: On 2/2/2015 2:30 PM, Johannes Pfau wrote: I does: if the backend can't know that a value is known at compile time it cant use absolute addresses: void test(ubyte* ptr) { volatileLoad(ptr);

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Kiith-Sa via Digitalmars-d
On Monday, 2 February 2015 at 14:43:22 UTC, Manu wrote: On 2 February 2015 at 07:47, Walter Bright via Digitalmars-d digitalmars-d@puremagic.com wrote: On 2/1/2015 3:29 AM, weaselcat wrote: On Sunday, 1 February 2015 at 11:22:04 UTC, Johannes Pfau wrote: which perform as well as C code,

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Dicebot via Digitalmars-d
On Monday, 2 February 2015 at 14:43:22 UTC, Manu wrote: I'm pretty sure the only controversy is that you want it to be a pragma, everyone else wants it to be an attribute. I don't think anyone has argued against a force_inline. I also support pragma, but didn't agree with proposed semantics

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Manu via Digitalmars-d
On 2 February 2015 at 07:47, Walter Bright via Digitalmars-d digitalmars-d@puremagic.com wrote: On 2/1/2015 3:29 AM, weaselcat wrote: On Sunday, 1 February 2015 at 11:22:04 UTC, Johannes Pfau wrote: which perform as well as C code, but only with force-inline why is this still not part of

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Manu via Digitalmars-d
On 2 February 2015 at 20:57, Walter Bright via Digitalmars-d digitalmars-d@puremagic.com wrote: On 2/2/2015 1:39 AM, Johannes Pfau wrote: * You do need force-inline to produce halfway decent code Nope. volatileLoad() and volatileStore() do not produce function calls. They need to be

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Andrei Alexandrescu via Digitalmars-d
On 2/2/15 6:55 AM, Dicebot wrote: On Monday, 2 February 2015 at 14:43:22 UTC, Manu wrote: I'm pretty sure the only controversy is that you want it to be a pragma, everyone else wants it to be an attribute. I don't think anyone has argued against a force_inline. I also support pragma, but

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Andrei Alexandrescu via Digitalmars-d
On 2/2/15 8:42 AM, Johannes Pfau wrote: Again the problem is not volatileLoad/Store which translate to single instructions it's wrappers. So does the argument boil down to better inlining control and enforcement? -- Andrei

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Johannes Pfau via Digitalmars-d
Am Mon, 02 Feb 2015 02:57:28 -0800 schrieb Walter Bright newshou...@digitalmars.com: On 2/2/2015 1:39 AM, Johannes Pfau wrote: No, it doesn't even come close. * Ports.B += 7 doesn't work. This should not be done with MMIO because the read and write cycles generated are ill-defined and

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Iain Buclaw via Digitalmars-d
On 2 February 2015 at 17:43, Andrei Alexandrescu via Digitalmars-d digitalmars-d@puremagic.com wrote: On 2/2/15 9:23 AM, Iain Buclaw via Digitalmars-d wrote: That code doesn't work with DMD. http://goo.gl/hgsHg0 Has that been filed yet? -- Andrei

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Johannes Pfau via Digitalmars-d
Am Mon, 02 Feb 2015 08:55:59 -0800 schrieb Andrei Alexandrescu seewebsiteforem...@erdani.org: On 2/2/15 8:42 AM, Johannes Pfau wrote: Again the problem is not volatileLoad/Store which translate to single instructions it's wrappers. So does the argument boil down to better inlining control

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Iain Buclaw via Digitalmars-d
On 2 February 2015 at 17:06, Johannes Pfau via Digitalmars-d digitalmars-d@puremagic.com wrote: Am Mon, 02 Feb 2015 02:49:48 -0800 schrieb Walter Bright newshou...@digitalmars.com: On 2/2/2015 1:24 AM, Johannes Pfau wrote: Usually those people just don't use volatile as long as their code

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread H. S. Teoh via Digitalmars-d
On Mon, Feb 02, 2015 at 08:55:59AM -0800, Andrei Alexandrescu via Digitalmars-d wrote: On 2/2/15 8:42 AM, Johannes Pfau wrote: Again the problem is not volatileLoad/Store which translate to single instructions it's wrappers. So does the argument boil down to better inlining control and

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Steven Schveighoffer via Digitalmars-d
On 2/2/15 12:06 PM, Johannes Pfau wrote: Am Mon, 02 Feb 2015 02:49:48 -0800 schrieb Walter Bright newshou...@digitalmars.com: Please try it before deciding it does not work. I guess one ad hominem wasn't enough? Sorry, I'm not really vested in this discussion at all, but I don't think

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Timo Sintonen via Digitalmars-d
On Monday, 2 February 2015 at 16:55:59 UTC, Andrei Alexandrescu wrote: I think it's time to reopen that negotiation. +1 So does the argument boil down to better inlining control and enforcement? -- Andrei If we reopen this I think we should start at the beginning and not yet concentrate

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Johannes Pfau via Digitalmars-d
Am Mon, 02 Feb 2015 02:49:48 -0800 schrieb Walter Bright newshou...@digitalmars.com: On 2/2/2015 1:24 AM, Johannes Pfau wrote: Usually those people just don't use volatile as long as their code works. Once it breaks they add volatile everywhere till it works again. Having a volatile

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Andrei Alexandrescu via Digitalmars-d
On 2/2/15 9:23 AM, Iain Buclaw via Digitalmars-d wrote: That code doesn't work with DMD. http://goo.gl/hgsHg0 Has that been filed yet? -- Andrei

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Andrei Alexandrescu via Digitalmars-d
On 2/2/15 9:06 AM, Johannes Pfau wrote: I guess one ad hominem wasn't enough? Please cool it will you? That doesn't quite qualify. -- Andrei

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Iain Buclaw via Digitalmars-d
On 2 February 2015 at 05:48, Walter Bright via Digitalmars-d digitalmars-d@puremagic.com wrote: On 2/1/2015 9:21 PM, Daniel Murphy wrote: Walter Bright wrote in message news:mam6qe$15nu$1...@digitalmars.com... We also need a pragma(address) to complement pragma(mangle). What would that

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Andrei Alexandrescu via Digitalmars-d
On 2/2/15 9:15 AM, Johannes Pfau wrote: Am Mon, 02 Feb 2015 08:55:59 -0800 schrieb Andrei Alexandrescu seewebsiteforem...@erdani.org: On 2/2/15 8:42 AM, Johannes Pfau wrote: Again the problem is not volatileLoad/Store which translate to single instructions it's wrappers. So does the

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Andrei Alexandrescu via Digitalmars-d
On 2/1/15 8:41 PM, Joakim wrote: On Sunday, 1 February 2015 at 23:41:22 UTC, Andrei Alexandrescu wrote: There's something we need to explain about the vision document itself. Do I want to see more of Mike's awesome work in D going forward? Yes. Do I want to see D on mobile? Of course. There's a

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Walter Bright via Digitalmars-d
On 2/1/2015 11:16 PM, Iain Buclaw via Digitalmars-d wrote: Where is the @property? :) yeah, yeah !!

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-02 Thread Johannes Pfau via Digitalmars-d
Am Sun, 01 Feb 2015 13:45:24 -0800 schrieb Walter Bright newshou...@digitalmars.com: On 2/1/2015 3:22 AM, Johannes Pfau wrote: Am Sun, 01 Feb 2015 02:11:42 -0800 schrieb Walter Bright newshou...@digitalmars.com: core.bitop.volatileLoad() and volatileStore() are implemented, and do the

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-01 Thread eles via Digitalmars-d
On Sunday, 1 February 2015 at 10:14:28 UTC, Walter Bright wrote: Please post to bugzilla and tag the issue with bare-metal. https://issues.dlang.org/show_bug.cgi?id=14101 Please have a look and correct if necessary.

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-01 Thread Walter Bright via Digitalmars-d
On 2/1/2015 2:12 AM, eles wrote: On Sunday, 1 February 2015 at 10:11:57 UTC, eles wrote: The absolute minimum set of changes that I had to make can be seen here: https://bitbucket.org/timosi/minlib/src/8674af49718880021c2777d60ac2091bc99c0107/Changes?at=default corrected link (I think):

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-01 Thread Johannes Pfau via Digitalmars-d
Am Sun, 01 Feb 2015 02:11:42 -0800 schrieb Walter Bright newshou...@digitalmars.com: On 2/1/2015 1:38 AM, Timo Sintonen wrote: The one of major issues is: how to access hardware. We need a language feature to access hardware registers. This has been discussed twice. Both time you rejected

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-01 Thread Mike via Digitalmars-d
On Sunday, 1 February 2015 at 06:37:27 UTC, Walter Bright wrote: I don't recall what you've suggested in this vein that was very unpopular - can you please post an example? These are not in any particular order. They are just how I remember them. I don't care if everyone disagrees with

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-01 Thread Mike via Digitalmars-d
On Sunday, 1 February 2015 at 11:22:04 UTC, Johannes Pfau wrote: So I'd say there are not too many language problems, the main problem is runtime/compiler interaction: * If you don't want to use any runtime at all that's actually the easier part. We'd need to implement a little more of

Re: H1 2015 Priorities and Bare-Metal Programming

2015-02-01 Thread weaselcat via Digitalmars-d
On Sunday, 1 February 2015 at 11:22:04 UTC, Johannes Pfau wrote: which perform as well as C code, but only with force-inline why is this still not part of the language? I'm not sure of anything else that has been repeatedly asked for without any good counterarguments.

  1   2   >