Path: ...!2.eu.feeder.erje.net!feeder.erje.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: BGB Newsgroups: comp.arch Subject: Re: My 66000 and High word facility Date: Mon, 12 Aug 2024 19:34:55 -0500 Organization: A noiseless patient Spider Lines: 553 Message-ID: References: <38055f09c5d32ab77b9e3f1c7b979fb4@www.novabbs.org> <2024Aug11.163333@mips.complang.tuwien.ac.at> <2024Aug12.082936@mips.complang.tuwien.ac.at> <130df049c4c97984986767736b5b037a@www.novabbs.org> <27b9630c6cd23b6ac1251bb3416ce1cf@www.novabbs.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Tue, 13 Aug 2024 02:35:01 +0200 (CEST) Injection-Info: dont-email.me; posting-host="4bbbae8d1cf8f815239b318b20681abd"; logging-data="3736402"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19iYrnVTHGCKU0jL1wxMxtWFapkGmTfKgw=" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:Q9aVCdyPHrRsW/QVru8n3qrV1d0= In-Reply-To: <27b9630c6cd23b6ac1251bb3416ce1cf@www.novabbs.org> Content-Language: en-US Bytes: 19217 On 8/12/2024 5:35 PM, MitchAlsup1 wrote: > On Mon, 12 Aug 2024 20:58:45 +0000, BGB wrote: > >> On 8/12/2024 3:12 PM, MitchAlsup1 wrote: > >>> See polpak:: r8_erf() >>> >>> >>> r8_erf:                                 ; @r8_erf >>> ; %bb.0: >>>      fabs    r2,r1 >>>      fcmp    r3,r2,#0x3EF00000 >>>      bngt    r3,.LBB141_5 >>> ; %bb.1: >>>      fcmp    r3,r2,#4 >>>      bngt    r3,.LBB141_6 >>> ; %bb.2: >>>      fcmp    r3,r2,#0x403A8B020C49BA5E >>>      bnlt    r3,.LBB141_7 >>> ; %bb.3: >>>      fmul    r3,r1,r1 >>>      fdiv    r3,#1,r3 >>>      mov    r4,#0x3F90B4FB18B485C7 >>>      fmac    r4,r3,r4,#0x3FD38A78B9F065F6 >>>      fadd    r5,r3,#0x40048C54508800DB >>>      fmac    r4,r3,r4,#0x3FD70FE40E2425B8 >>>      fmac    r5,r3,r5,#0x3FFDF79D6855F0AD >>>      fmac    r4,r3,r4,#0x3FC0199D980A842F >>>      fmac    r5,r3,r5,#0x3FE0E4993E122C39 >>>      fmac    r4,r3,r4,#0x3F9078448CD6C5B5 >>>      fmac    r5,r3,r5,#0x3FAEFC42917D7DE7 >>>      fmac    r4,r3,r4,#0x3F4595FD0D71E33C >>>      fmul    r4,r3,r4 >>>      fmac    r3,r3,r5,#0x3F632147A014BAD1 >>>      fdiv    r3,r4,r3 >>>      fadd    r3,#0x3FE20DD750429B6D,-r3 >>>      fdiv    r3,r3,r2 >>>      br    .LBB141_4 >>> LBB141_5: >>>      fmul    r3,r1,r1 >>>      fcmp    r2,r2,#0x3C9FFE5AB7E8AD5E >>>      sra    r2,r2,#8,#1 >>>      cvtsd    r4,#0 >>>      mux    r2,r2,r3,r4 >>>      mov    r3,#0x3FC7C7905A31C322 >>>      fmac    r3,r2,r3,#0x400949FB3ED443E9 >>>      fadd    r4,r2,#0x403799EE342FB2DE >>>      fmac    r3,r2,r3,#0x405C774E4D365DA3 >>>      fmac    r4,r2,r4,#0x406E80C9D57E55B8 >>>      fmac    r3,r2,r3,#0x407797C38897528B >>>      fmac    r4,r2,r4,#0x40940A77529CADC8 >>>      fmac    r3,r2,r3,#0x40A912C1535D121A >>>      fmul    r1,r3,r1 >>>      fmac    r2,r2,r4,#0x40A63879423B87AD >>>      fdiv    r2,r1,r2 >>>      mov    r1,r2 >>>      ret >>> LBB141_6: >>>      mov    r3,#0x3E571E703C5F5815 >>>      fmac    r3,r2,r3,#0x3FE20DD508EB103E >>>      fadd    r4,r2,#0x402F7D66F486DED5 >>>      fmac    r3,r2,r3,#0x4021C42C35B8BC02 >>>      fmac    r4,r2,r4,#0x405D6C69B0FFCDE7 >>>      fmac    r3,r2,r3,#0x405087A0D1C420D0 >>>      fmac    r4,r2,r4,#0x4080C972E588749E >>>      fmac    r3,r2,r3,#0x4072AA2986ABA462 >>>      fmac    r4,r2,r4,#0x4099558EECA29D27 >>>      fmac    r3,r2,r3,#0x408B8F9E262B9FA3 >>>      fmac    r4,r2,r4,#0x40A9B599356D1202 >>>      fmac    r3,r2,r3,#0x409AC030C15DC8D7 >>>      fmac    r4,r2,r4,#0x40B10A9E7CB10E86 >>>      fmac    r3,r2,r3,#0x40A0062821236F6B >>>      fmac    r4,r2,r4,#0x40AADEBC3FC90DBD >>>      fmac    r3,r2,r3,#0x4093395B7FD2FC8E >>>      fmac    r4,r2,r4,#0x4093395B7FD35F61 >>>      fdiv    r3,r3,r4 >>> LBB141_4: >>>      fmul    r4,r2,#16 >>>      fmul    r4,r4,#0x3D800000 >>>      rnd    r4,r4,#5 >>>      fadd    r5,r2,-r4 >>>      fadd    r2,r2,r4 >>>      fmul    r4,r4,-r4 >>>      fexp    r4,r4 >>>      fmul    r2,r2,-r5 >>>      fexp    r2,r2 >>>      fmul    r2,r4,r2 >>>      fadd    r2,#0,-r2 >>>      fmac    r2,r2,r3,#0x3F000000 >>>      fadd    r2,r2,#0x3F000000 >>>      pdlt    r1,T >>>      fadd    r2,#0,-r2 >>>      mov    r1,r2 >>>      ret >>> LBB141_7: >>>      fcmp    r1,r1,#0 >>>      sra    r1,r1,#8,#1 >>>      cvtsd    r2,#-1 >>>      cvtsd    r3,#1 >>>      mux    r2,r1,r3,r2 >>>      mov    r1,r2 >>>      ret >>> >>> All of the constants are use once ! >>> >>> RISC-V takes 240 instructions and uses 342 words of >>> memory {.text, .data, .rodata} >>> >>> My 66000 takes 85 instructions and uses 169 words of >>> memory {.text, .data, .rodata} >> >> >> FWIW: >>    FADD Rm, Imm64f, Rn  //XG2 Only >>    FADD Rm, Imm56f, Rn  // >> >> And: >>    FMUL Rm, Imm64f, Rn  //XG2 Only >>    FMUL Rm, Imm56f, Rn  // >> > > Why don't yuo download polpack, compile it, and state how many > instructions it takes and how many words of storage it takes ?? Found what I assume you are talking about. Needed to add "polpak_test.c" as otherwise BGBCC lacks a main and prunes everything; Also needed to hack over some compiler holes related to "complex _Double" to get it to build; Also needed to stub over some library functions that were added in C99 but missing in my C library. So, initial result (BJX2 XG2): 128K ".text"; 21K ".strtab" (strings) 4K ".data" Instruction Count: ~ 28K This is with a static linked C library, but used one of the lighter-weight ones (that does not include the whole OS kernel linked in). Seems to result in around 41K lines of ASM output, but this includes blank lines, comments, and labels. This seems to be 117K with an x86-64 build (dynamically linked C library). RV64G (riscv64-unknown-elf-gcc -O3): 231K of ".text" Did try "risc64-unknown-linux-gnu-gcc", but it broke due to apparently lacking "complex.h" and similar. As for "r8_erf()": <=== r8_erf: MOV LR, R1 BSR __prolog_0005_00000200FFFF ADD -800, SP MOV.Q RQ4, (SP, 928) LEA.Q (SP, 192), RQ3 MOV.Q RQ3, (SP, 184) ========== REMAINDER OF ARTICLE TRUNCATED ==========