Path: ...!weretis.net!feeder9.news.weretis.net!i2pn.org!i2pn2.org!.POSTED!not-for-mail From: mitchalsup@aol.com (MitchAlsup1) Newsgroups: comp.arch Subject: Re: Concertlina II: Full Circle Date: Wed, 19 Jun 2024 18:31:12 +0000 Organization: Rocksolid Light Message-ID: <103f75da3109c73e181e04cb5f40e0ae@www.novabbs.org> References: <132536f47d1b160ad3ad0340fc479c1d@www.novabbs.org> <50c85586e1aec0eef53e83cef7cb1d5d@www.novabbs.org> <4mb37jdb25571s1q1pjlc3ludaaks7tukr@4ax.com> <1401408dead0bbc0b1e2ea7e053c873a@www.novabbs.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Info: i2pn2.org; logging-data="521727"; mail-complaints-to="usenet@i2pn2.org"; posting-account="7opjq6o0gOhusEORo6KGlWDqrGdcQlz3IQ8pYKMWkuY"; User-Agent: Rocksolid Light X-Rslight-Site: $2y$10$vZAQirwI2eAn1IpIRpvmnucLrfrcPG1s7sPQC2BNJ/mncccw2jZYq X-Rslight-Posting-User: ac58ceb75ea22753186dae54d967fed894c3dce8 X-Spam-Checker-Version: SpamAssassin 4.0.0 Bytes: 3754 Lines: 55 Thomas Koenig wrote: > Terje Mathisen schrieb: >> MitchAlsup1 wrote: >>> John Savard wrote: >>> >>>> On Tue, 18 Jun 2024 21:23:57 +0000, mitchalsup@aol.com (MitchAlsup1) >>>> wrote: >>>>> John Savard wrote: >>> >>>>>> (1 bit) This indicates whether we're talking about the integer >>>>>> registers or the floating-point ones. >>>>> >>>>> Loops controlled by floating point indexes do not vectorize, however >>>>> the body of the loop can be any mix of int, logical, memory, or FP >>>>> instructions. >>> >>>> Oh no, my index is always an integer. This bit applies to the >>>> "live-in" bits - if the loop performs floating-point computation, it's >>>> floating-point registers that I want to mark as forwarding nodes. >>> >>> See, I do not have this distinction, there is but one file. >>> >>>> And so you indicate this explicitly in VVM as well. I tended to assume >>>> only a limited number of registers would be needed to live in, plus I >>>> have both floating and integer register files, hence the differences. >>> >>> It ends up that the majority of register uses in a loop do not need to >>> be visible outside of the loop. This is almost the contrapositive of >>> annotating which registers are temporary in the loop. 90%+ of loops do >>> not even need the index register to be live outside of the loop. >> >> This is partly due to programming languages that applies lifetimes to >> variables, so that an index register which is defined in the >> scaffolding >> >> of the loop (i.e. for (i = 0; i < limit; i++) {}) is invisible as soon >> as the loop terminates. > This makes things more clear to anybody reading the code (and > unambiguous to the compiler). However, lifetime analysis has > also become very good, and if the value is not used afterwards, > I expect no difference in practice. When one writes:: for( uint64_t i = 0; i < max; i++ ) the lifetime of i is explicit--it terminates with the loop. >> Without such a restriction, there are many times when it would be very >> natural to inspect the index in order to determine if this was a normal >> >> (counting) exit, or an early exit due to some internal test. > Hmm... do you mean for the programmer, or for the compiler?