From: Luke Kenneth Casson Leighton Date: Sat, 25 Sep 2021 13:21:45 +0000 (+0100) Subject: update table for scalar source X-Git-Tag: DRAFT_SVP64_0_1~7 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=03a8959b3f7777304baa58d5f723cb02b54660f0;p=libreriscv.git update table for scalar source --- diff --git a/3d_gpu/architecture/dynamic_simd/assign.mdwn b/3d_gpu/architecture/dynamic_simd/assign.mdwn index bec2ebdd9..df5b08c0c 100644 --- a/3d_gpu/architecture/dynamic_simd/assign.mdwn +++ b/3d_gpu/architecture/dynamic_simd/assign.mdwn @@ -44,6 +44,8 @@ smaller value (A) into the larger partition (B) then, depending on whether A is signed or unsigned, sign-extends or zero-extends *on a per-partition basis*. +# Scalar source + When the source A is scalar and is equal or larger than the destination it requires copying across multiple partitions: @@ -59,5 +61,16 @@ The partition options are: | 000 | A7A6 | A5A4 | A3A2 | A1A0 | | 001 | A5A4 | A3A2 | A1A0 | A1A0 | | 010 | A3A2 | A1A0 | A3A2 | A1A0 | +| 011 | A3A2 | A1A0 | A1A0 | A1A0 | | 100 | A1A0 | A5A4 | A3A2 | A1A0 | +| 101 | A1A0 | A3A2 | A1A0 | A1A0 | +| 110 | A1A0 | A1A0 | A3A2 | A1A0 | | 111 | A1A0 | A1A0 | A1A0 | A1A0 | + +When the partitions are all open (1x) only the bits that will fit across +the whole of the target are copied. In this example, B is 8 bits so only +8 bits of A are copied. + +When the partitions are all closed (4x SIMD) each partition of B is +2 bits wide, therefore only the *first two* bits of A are copied into +*each* of the four 2-bit partitions in B.