Deutsch English Français Italiano |
<vqfce7$3lctl$1@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail From: Robert Finch <robfi680@gmail.com> Newsgroups: comp.arch Subject: Re: Why VAX Was the Ultimate CISC and Not RISC Date: Fri, 7 Mar 2025 13:03:50 -0500 Organization: A noiseless patient Spider Lines: 43 Message-ID: <vqfce7$3lctl$1@dont-email.me> References: <vpufbv$4qc5$1@dont-email.me> <2025Mar1.125817@mips.complang.tuwien.ac.at> <vpvrn5$2hq0$1@gal.iecc.com> <2025Mar1.232526@mips.complang.tuwien.ac.at> <vq2dfr$2skk$1@gal.iecc.com> <2025Mar2.234011@mips.complang.tuwien.ac.at> <5pkg9l-kipt.ln1@msc27.me.uk> <2025Mar3.174417@mips.complang.tuwien.ac.at> <vq4qav$1dksd$1@dont-email.me> <vq5dm2$1h3mg$5@dont-email.me> <2025Mar4.110420@mips.complang.tuwien.ac.at> <vq829a$232tl$6@dont-email.me> <2025Mar5.083636@mips.complang.tuwien.ac.at> <vqdljd$29f8f$2@paganini.bofh.team> <vqdrh9$3cdrc$1@dont-email.me> <vqek6h$3fro6$1@dont-email.me> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Fri, 07 Mar 2025 19:03:52 +0100 (CET) Injection-Info: dont-email.me; posting-host="856a4b061a4c4962bd2f09d0fa54aa3c"; logging-data="3847093"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+vB/f/xTTmhpP7wP+l1b16bLtDdH3t2Ng=" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:ImgiGoL3x5frztIywadvjU6LKcw= In-Reply-To: <vqek6h$3fro6$1@dont-email.me> Content-Language: en-US Bytes: 3134 > In other news, got around to implementing the BITMOV logic in BGBCC and > similar, and implementing support for Verilog style notation. > > So, writing things like: > y[55:48]=x[19:12]; > Is now technically possible in my C variant, and (if the BITMOV > instruction is enabled) be encoded in a single instruction. > > Where: > y[55:48]=x[19:12]; > Is 1 instruction, main requirement is that the source and destination > bitfield are the same width (widening will require multiple ops). > > If the instruction is not enabled, the fallback path is 4 to 6 > instructions (in BJX2), or around 12 to 16 instructions for RV64G. I > decided to also add support for BITMOV to the RV decoder via my jumbo- > extension encodings (though, with some limitations on the 128-bit case > due to it needing to fit into a 21 bit immediate). > > And: > j=x[19:12]; > Also a single instruction, or 2 or 3 in the fallback case (encoded as a > shift and mask). > I find these operations handy when dealing with I/O devices that have bitfields. It makes it easy to test bits and compiles to an extract instruction. inbyte = *irqport; if (inbyte[7]) <do something> Support for bitfield indexing (Verilog style) is in the Arpl compiler. I found there were enough differences from standard C I better call it a different name. > For a simple test: > lj[ 7: 0]=li[31:24]; > lj[15: 8]=li[23:16]; > lj[23:16]=li[15: 8]; > lj[31:24]=li[ 7: 0]; > Does seem to compile down to 4 instructions. >