Shop Learn
Propeller II update - BLOG - Page 210 — Parallax Forums

Propeller II update - BLOG

1207208210212213223

Comments

  • potatoheadpotatohead Posts: 10,224
    edited 2014-03-14 08:18
    @rjo_ For sure. It's going to be pretty easy to treat a P2 like a P1, but for a few basic things. Doing that will get somebody really productive. Then, they can start taking on advanced things, one at a time, gaining each time. IMHO, it's going to rock hard. And be a lot of fun!

    Also IMHO, the ideal document is something like an introduction to the chip, block diagram, etc... Then the basics, SPIN, monitor and the list of easy cheezy instructions. Include all the instruction definitions, and ideally sample code. Follow that up with cook book / project type contexts for the advanced things, volume 1, 2, 3...
  • Bill HenningBill Henning Posts: 6,445
    edited 2014-03-14 08:22
    SRCD D/# useless, same as specifying a register
    SRCDP D/#
    SRCDN D/#
    SRCDOFF D/#

    They would use the same source register, with increment or decrement.

    uses:

    - equivalent to using INDA/INDB, but task-unique
    - string functions without using INDA/INDB
    - summing a vector without using INDA/INDB

    Basically, it cuts down on the issue of INDA/INDB not being task specific

    I only thought of it because of symmetry.
    ctwardell wrote: »
    What would these do?

    C.W.
  • cgraceycgracey Posts: 13,718
    edited 2014-03-14 08:34
    Nice addition Chip!

    I can see all sorts of potential uses for this in graphics, string operations and even cryptography.

    Sorry, cannot resist...

    I wonder if there would be uses for the inverse?

    SRCD D/#
    SRCDP D/#
    SRCDN D/#
    SRCDOFF D/#


    Ah, if only...

    Anything like this has to occur two stages deeper in the pipeline and be resilient to any combination of pipeline cancellations; hence, INDA and INDB and their intransigence. It actually took me several days to get my head around the data forwarding rules for those indirect circuits, so that I could chart out every state and determine what needed to be done in each.

    Redirecting the result register, on the other hand, is a cheap trick, since everything is known at the final stage of the pipeline, and there is no possibility of needing to backtrack in any way. It only took ~6 hours to implement the new RESD scheme, including assembler modifications and FPGA testing.
  • RamonRamon Posts: 484
    edited 2014-03-14 09:10
    cgracey wrote: »
    It's just for cog RAM registers - a little trick to swap out result register addresses.

    Then in that case it is true that there is no point to add offset. Also I think that I misunderstood the new instruction. What I actually wanted to do was to add an offset to INDA++, and INDB++ (+2, +3, ... , +8), to be able to synchronize several cogs and write directly into HUB RAM. But also because those pointers are just for cog RAM, they cannot be used the way I wanted.
  • Bill HenningBill Henning Posts: 6,445
    edited 2014-03-14 09:14
    C'est la vie.

    RESD is still very nice, and will be used a lot.
    cgracey wrote: »
    Ah, if only...

    Anything like this has to occur two stages deeper in the pipeline and be resilient to any combination of pipeline cancellations; hence, INDA and INDB and their intransigence. It actually took me several days to get my head around the data forwarding rules for those indirect circuits, so that I could chart out every state and determine what needed to be done in each.

    Redirecting the result register, on the other hand, is a cheap trick, since everything is known at the final stage of the pipeline, and there is no possibility of needing to backtrack in any way. It only took ~6 hours to implement the new RESD scheme, including assembler modifications and FPGA testing.
  • SapiehaSapieha Posts: 2,964
    edited 2014-03-14 11:03
    Hi Chip.

    It is possible to made MOVBYTE D,S,(1-3)

    with others word move byte from S (0 to 7) to D in position determined by (1-3)
  • Cluso99Cluso99 Posts: 18,062
    edited 2014-03-14 14:20
    Chip & All,

    May I please put some urgency back into getting out a release. Currently many of us are on hold, anxiously waiting for that release. It has been way tooo long since the last usable release.

    As soon as you have fpga and pnut working, may we have a release please? IMHO we all can wait for the additional docs to these instructions if it means we get the code earlier.

    While all these extras are nice, lets get on with current testing, and USB and SERDES.

    And while USB / SERDES happens, how about we start another thread to discuss nice extra simple instructions - at least with a new thread we don't have to go searching as much.

    Sound like a plan ???
  • Dave HeinDave Hein Posts: 6,347
    edited 2014-03-14 14:26
    Sounds like an excellent plan.
  • roglohrogloh Posts: 4,173
    edited 2014-03-14 16:46
    Ramon wrote: »
    Then in that case it is true that there is no point to add offset. Also I think that I misunderstood the new instruction. What I actually wanted to do was to add an offset to INDA++, and INDB++ (+2, +3, ... , +8), to be able to synchronize several cogs and write directly into HUB RAM. But also because those pointers are just for cog RAM, they cannot be used the way I wanted.

    @Ramon,
    Take a look at the PTRA[index] capability to access hub RAM. That may possibly help you do your interleaving depending on what you need to do and if you have time between all the memory transfers and whatever else the code is doing to come up for air so to speak.

    Also once synchronized to the hub, you will have 7 other instructions between writes and I believe 5 between reads to modify your pointers if required.
  • RamonRamon Posts: 484
    edited 2014-03-14 20:13
    Cluso99 wrote: »
    As soon as you have fpga and pnut working, may we have a release please? IMHO we all can wait for the additional docs to these instructions if it means we get the code earlier.

    I would suggest that it is better to wait to make the next release as close as possible to the last release. The reason to do this is that the C compiler porting could be started.

    The C compiler will increase testing capabilities (due to both increased applications, and increased number of testers). While this forum is full of experts in P2 assembler, newcomers outside of this forum will say 'ok I will try it, lets see how easy can I port this to P2, and its performance'.

    (Two weeks ago, when Chip was thinking about how to make preemptive multithreading David Betz make some good points about how this would work with C. And I think the discussion was greatly enriched. So I think it is important to re-start the C compiler development as soon as possible. And it is worth the wait if we can guarantee that the instruction opcode list is the final one.)
  • David BetzDavid Betz Posts: 14,468
    edited 2014-03-14 20:23
    Ramon wrote: »
    I would suggest that it is better to wait to make the next release as close as possible to the last release. The reason to do this is that the C compiler porting could be started.

    The C compiler will increase testing capabilities (due to both increased applications, and increased number of testers). While this forum is full of experts in P2 assembler, newcomers outside of this forum will say 'ok I will try it, lets see how easy can I port this to P2, and its performance'.

    (Two weeks ago, when Chip was thinking about how to make preemptive multithreading David Betz make some good points about how this would work with C. And I think the discussion was greatly enriched. So I think it is important to re-start the C compiler development as soon as possible. And it is worth the wait if we can guarantee that the instruction opcode list is the final one.)
    Actually, the C compiler work can be started again once we have a stable instruction set encoding even if new instructions end up being added later. What is difficult is when the instruction encoding changes every time there is a release. However, I wouldn't want Chip to be constrained to keep the same encodings if he finds he needs more opcode space and thinks of a way to rearrange things to get that space. What I should do is write a program that parses Chip's instruction list and automatically generates an assembler to match.
  • RamonRamon Posts: 484
    edited 2014-03-14 20:24
    Thank you rogloh. I forgot about PTRx[index]. That is the instruction I was looking for. Its time to make a second read to 'Prop2_Docs'.
  • cgraceycgracey Posts: 13,718
    edited 2014-03-14 23:21
    Cluso99 wrote: »
    Chip & All,

    May I please put some urgency back into getting out a release. Currently many of us are on hold, anxiously waiting for that release. It has been way tooo long since the last usable release.

    As soon as you have fpga and pnut working, may we have a release please? IMHO we all can wait for the additional docs to these instructions if it means we get the code earlier.

    While all these extras are nice, lets get on with current testing, and USB and SERDES.

    And while USB / SERDES happens, how about we start another thread to discuss nice extra simple instructions - at least with a new thread we don't have to go searching as much.

    Sound like a plan ???


    I agree. I'm working on it...
  • Cluso99Cluso99 Posts: 18,062
    edited 2014-03-14 23:48
    Thanks Chip :)
  • SapiehaSapieha Posts: 2,964
    edited 2014-03-15 00:25
    Hi Cluso.

    In this Summary You are missing.

    SETZC FIXINDB FIXINDS SETINDA SETINDB SETINDS WAITCNT
    Cluso99 wrote: »
    Here is an updated Instruction Summary with...
    * Column for WZ & WC now has it for each op
    * adds new instructions REPD & PICKZC (note PICKZC my not be correct opcode bits)
    * removes instruction SETZC
    Tip to view without wrap - reduce text size (In IE Ctrl-Scroll)
    Propeller II Instructions as of 2014/03/12 (+ REPD, PICKZC)
    ----------------------------------------------------------------------------------------------------------------------------
    ZCxS Opcode  ZC I Cond  Dest       Source     Instr00 01      10      11        Operand(s)                       Flags
    ----------------------------------------------------------------------------------------------------------------------------
    ZCWS 00000ff ZC I CCCC  DDDDDDDDD  SSSSSSSSS  RDBYTE  RDBYTEC RDWORD  RDWORDC   D,S/PTRA/PTRB                    ZC ZC ZC ZC 
    ZCWS 00001ff ZC I CCCC  DDDDDDDDD  SSSSSSSSS  RDLONG  RDLONGC RDAUX   RDAUXR    D,S/PTRA/PTRB                    ZC ZC ZC ZC 
    ZCMS 00010ff ZC I CCCC  DDDDDDDDD  SSSSSSSSS  ISOB    NOTB    CLRB    SETB      D,S/#                            ZC ZC ZC ZC 
    ZCMS 00011ff ZC I CCCC  DDDDDDDDD  SSSSSSSSS  SETBC   SETBNC  SETBZ   SETBNZ    D,S/#                            ZC ZC ZC ZC 
    ZCMS 00100ff ZC I CCCC  DDDDDDDDD  SSSSSSSSS  ANDN    AND     OR      XOR       D,S/#                            ZC ZC ZC ZC 
    ZCMS 00101ff ZC I CCCC  DDDDDDDDD  SSSSSSSSS  MUXC    MUXNC   MUXZ    MUXNZ     D,S/#                            ZC ZC ZC ZC 
    ZCMS 00110ff ZC I CCCC  DDDDDDDDD  SSSSSSSSS  ROR     ROL     SHR     SHL       D,S/#                            ZC ZC ZC ZC 
    ZCMS 00111ff ZC I CCCC  DDDDDDDDD  SSSSSSSSS  RCR     RCL     SAR     REV       D,S/#                            ZC ZC ZC ZC 
    ZCWS 01000ff ZC I CCCC  DDDDDDDDD  SSSSSSSSS  MOV     NOT     ABS     NEG       D,S/#                            ZC ZC ZC ZC 
    ZCWS 01001ff ZC I CCCC  DDDDDDDDD  SSSSSSSSS  NEGC    NEGNC   NEGZ    NEGNZ     D,S/#                            ZC ZC ZC ZC 
    ZCMS 01010ff ZC I CCCC  DDDDDDDDD  SSSSSSSSS  ADD     SUB     ADDX    SUBX      D,S/#                            ZC ZC ZC ZC 
    ZCMS 01011ff ZC I CCCC  DDDDDDDDD  SSSSSSSSS  ADDS    SUBS    ADDSX   SUBSX     D,S/#                            ZC ZC ZC ZC 
    ZCMS 01100ff ZC I CCCC  DDDDDDDDD  SSSSSSSSS  SUMC    SUMNC   SUMZ    SUMNZ     D,S/#                            ZC ZC ZC ZC 
    ZCMS 01101ff ZC I CCCC  DDDDDDDDD  SSSSSSSSS  MIN     MAX     MINS    MAXS      D,S/#                            ZC ZC ZC ZC 
    ZCMS 01110ff ZC I CCCC  DDDDDDDDD  SSSSSSSSS  ADDABS  SUBABS  INCMOD  DECMOD    D,S/#                            ZC ZC ZC ZC 
    ZCMS 01111ff ZC I CCCC  DDDDDDDDD  SSSSSSSSS  CMPSUB  SUBR    MUL     SCL       D,S/#                            ZC ZC ZC ZC 
    ZCWS 10000ff ZC I CCCC  DDDDDDDDD  SSSSSSSSS  DECOD2  DECOD3  DECOD4  DECOD5    D,S/#                            ZC ZC ZC ZC 
    ----------------------------------------------------------------------------------------------------------------------------
    Z-WS 1000100 Zf I CCCC  DDDDDDDDD  SSSSSSSSS  ENCOD   BLMASK                    D,S/#                            Z- Z-       
    Z-WS 1000101 Zf I CCCC  DDDDDDDDD  SSSSSSSSS  ONECNT  ZERCNT                    D,S/#                            Z- Z-       
    -CWS 1000110 fC I CCCC  DDDDDDDDD  SSSSSSSSS  INCPAT          DECPAT            D,S/#                            -C    --    
    --WS 1000111 ff I CCCC  DDDDDDDDD  SSSSSSSSS  SPLITB  MERGEB  SPLITW  MERGEW    D,S/#                            -- -- -- -- 
    --MS 10010nn nf I CCCC  DDDDDDDDD  SSSSSSSSS  GETNIB  SETNIB                    D,S/#,#0..7                      -- --       
    --MS 1001100 nf I CCCC  DDDDDDDDD  SSSSSSSSS  GETWORD SETWORD                   D,S/#,#0..1                      -- --       
    --MS 1001101 ff I CCCC  DDDDDDDDD  SSSSSSSSS  SETWRDS ROLNIB  ROLBYTE ROLWORD   D,S/#                            -- -- -- -- 
    --MS 1001110 ff I CCCC  DDDDDDDDD  SSSSSSSSS  SETS    SETD    SETCOND SETINST   D,S/#                            -- -- -- -- 
    --WS 1001111 ff I CCCC  DDDDDDDDD  SSSSSSSSS  <empty> THALT                     D,S/#                            -- --       
    --MS 101000n nf I CCCC  DDDDDDDDD  SSSSSSSSS  GETBYTE SETBYTE                   D,S/#,#0..3                      -- --       
    --WS 1010010 ff I CCCC  DDDDDDDDD  SSSSSSSSS  SETBYTS MOVBYTS PACKRGB UNPKRGB   D,S/#                            -- -- -- -- 
    --MS 1010011 ff I CCCC  DDDDDDDDD  SSSSSSSSS  ADDPIX  MULPIX  BLNPIX  MIXPIX    D,S/#                            -- -- -- -- 
    ZCMS 1010100 ZC I CCCC  DDDDDDDDD  SSSSSSSSS  JMPSW                             D,S/@                            ZC          
    ZCMS 1010101 ZC I CCCC  DDDDDDDDD  SSSSSSSSS  JMPSWD                            D,S/@                            ZC          
    --MS 1010110 ff I CCCC  DDDDDDDDD  SSSSSSSSS  DJZ     DJZD    DJNZ    DJNZD     D,S/@                            -- -- -- -- 
    --RS 1010111 ff I CCCC  DDDDDDDDD  SSSSSSSSS  JZ      JZD     JNZ     JNZD      D,S/@                            -- -- -- -- 
    ZCRS 10110ff ZC I CCCC  DDDDDDDDD  SSSSSSSSS  TESTB   TESTN   TEST    CMP       D,S/#                            ZC ZC ZC ZC 
    ZCRS 10111ff ZC I CCCC  DDDDDDDDD  SSSSSSSSS  CMPX    CMPS    CMPSX   CMPR      D,S/#                            ZC ZC ZC ZC 
    -CRS 11000fn nC I CCCC  DDDDDDDDD  SSSSSSSSS  WAITPEQ WAITPNE                   D,S/#,#0..3                      -C -C       
    ---S 110010f nn I CCCC  nnnnnnnnn  SSSSSSSSS  WAITVID WAITVID                   #0..$DFF,S/#                     -- --       
    --LS 110011f fL I CCCC  DDDDDDDDD  SSSSSSSSS  WRBYTE  WRWORD  WRLONG  WRWIDE    D/#,S/PTRA/PTRB                  -- -- -- -- 
    --LS 110100f fL I CCCC  DDDDDDDDD  SSSSSSSSS  WRAUX   WRAUXR  SETACCA SETACCB   D/#,S/#0..$FF/PTRX/PTRY          -- -- -- -- 
    --LS 110101f fL I CCCC  DDDDDDDDD  SSSSSSSSS  MACA    MACB    MUL32   MUL32U    D/#,S/#                          -- -- -- -- 
    --LS 110110f fL I CCCC  DDDDDDDDD  SSSSSSSSS  DIV32   DIV32U  DIV64   DIV64U    D/#,S/#                          -- -- -- -- 
    --LS 110111f fL I CCCC  DDDDDDDDD  SSSSSSSSS  SQRT64  QSINCOS QARCTAN QROTATE   D/#,S/#                          -- -- -- -- 
    --LS 111000n nL I CCCC  DDDDDDDDD  SSSSSSSSS  CFGPINS cfgpins cfgpins SETMAP    D/#,S/#,#0..2                    -- -- -- -- 
    --LS 111001f fL I CCCC  DDDDDDDDD  SSSSSSSSS  SETSERA SETSERB SETCTRS SETWAVS   D/#,S/#                          -- -- -- -- 
    --LS 111010f fL I CCCC  DDDDDDDDD  SSSSSSSSS  SETFRQS SETPHSS ADDPHSS SUBPHSS   D/#,S/#                          -- -- -- -- 
    --LS 111011f fL I CCCC  DDDDDDDDD  SSSSSSSSS  SETXFR  SETMIX  COGRUN  COGRUNX   D/#,S/#                          -- -- -- -- 
    --LS 111100f fL I CCCC  DDDDDDDDD  SSSSSSSSS  FRAC    <empty> <empty> <empty>   D/#,S/#                          -- -- -- -- 
    --LS 111101f fL I CCCC  DDDDDDDDD  SSSSSSSSS  JP      JPD     JNP     JNPD      D/#,S/@                          -- -- -- -- 
    --WS 1111100 ff I CCCC  DDDDDDDDD  SSSSSSSSS  LOCBASE LOCBYTE LOCWORD LOCLONG   D,S/@                            -- -- -- -- 
    ----------------------------------------------------------------------------------------------------------------------------
    --W- 1111101 00 f CCCC  DDDDDDDDD  sssssssss  LOCINST JMPLIST                   D,@s                             -- --       
    ---- 1111101 01 0 BBAA  ddddddddd  sssssssss  FIXINDA                           #d,#s / FIXINDB #d,#s / FIXINDS  --          
    ---- 1111101 01 1 nnnn  nnnnnnnnn  nnniiiiii  REPS                              #1..$10000,#1..64                --          
    ---- 1111101 1f n nnnn  nnnnnnnnn  nnnnnnnnn  AUGS    AUGD                      #23bits                          -- --       
    ----------------------------------------------------------------------------------------------------------------------------
    ---- 1111110 00 0 CCCC  ffnnnnnnn  nnnnnnnnn  LOCPTRA LOCPTRA LOCPTRB LOCPTRB   #abs                             -- -- -- -- 
    ---- 1111110 00 1 CCCC  ffnnnnnnn  nnnnnnnnn  JMP     JMP     JMPD    JMPD      #abs                             -- -- -- -- 
    ---- 1111110 01 0 CCCC  ffnnnnnnn  nnnnnnnnn  LINK    LINK    LINKD   LINKD     {0} #abs                         -- -- -- -- 
    ---- 1111110 01 1 CCCC  ffnnnnnnn  nnnnnnnnn  CALL    CALL    CALLD   CALLD     #abs                             -- -- -- -- 
    ---- 1111110 10 0 CCCC  ffnnnnnnn  nnnnnnnnn  CALLA   CALLA   CALLAD  CALLAD    #abs                             -- -- -- -- 
    ---- 1111110 10 1 CCCC  ffnnnnnnn  nnnnnnnnn  CALLB   CALLB   CALLBD  CALLBD    #abs                             -- -- -- -- 
    ---- 1111110 11 0 CCCC  ffnnnnnnn  nnnnnnnnn  CALLX   CALLX   CALLXD  CALLXD    #abs                             -- -- -- -- 
    ---- 1111110 11 1 CCCC  ffnnnnnnn  nnnnnnnnn  CALLY   CALLY   CALLYD  CALLYD    #abs                             -- -- -- -- 
    --------------------------------------------------------------------------------------------------------------------------
    ZCW- 1111111 ZC 0 CCCC  DDDDDDDDD  0000000ff  COGID   TASKID  LOCKNEW GETLFSR   D                                ZC ZC ZC ZC 
    ZCW- 1111111 ZC 0 CCCC  DDDDDDDDD  0000001ff  GETCNT  GETCNTX GETACAL GETACAH   D                                ZC ZC ZC ZC 
    ZCW- 1111111 ZC 0 CCCC  DDDDDDDDD  0000010ff  GETACBL GETACBH GETPTRA GETPTRB   D                                ZC ZC ZC ZC 
    ZCW- 1111111 ZC 0 CCCC  DDDDDDDDD  0000011ff  GETPTRX GETPTRY SERINA  SERINB    D                                ZC ZC ZC ZC 
    ZCW- 1111111 ZC 0 CCCC  DDDDDDDDD  0000100ff  GETMULL GETMULH GETDIVQ GETDIVR   D                                ZC ZC ZC ZC 
    ZCW- 1111111 ZC 0 CCCC  DDDDDDDDD  0000101ff  GETSQRT GETQX   GETQY   GETQZ     D                                ZC ZC ZC ZC 
    ZCW- 1111111 ZC 0 CCCC  DDDDDDDDD  0000110ff  GETPHSA GETPHZA GETCOSA GETSINA   D                                ZC ZC ZC ZC 
    ZCW- 1111111 ZC 0 CCCC  DDDDDDDDD  0000111ff  GETPHSB GETPHZB GETCOSB GETSINB   D                                ZC ZC ZC ZC 
    ZCM- 1111111 ZC 0 CCCC  DDDDDDDDD  0001000ff  PUSHZC  POPZC   SUBCNT  GETPIX    D                                ZC ZC ZC ZC 
    ZCM- 1111111 ZC 0 CCCC  DDDDDDDDD  0001001ff  BINBCD  BCDBIN  BINGRY  GRYBIN    D                                ZC ZC ZC ZC 
    ZCM- 1111111 ZC 0 CCCC  DDDDDDDDD  0001010ff  ESWAP4  ESWAP8  SEUSSF  SEUSSR    D                                ZC ZC ZC ZC 
    ZCM- 1111111 ZC 0 CCCC  DDDDDDDDD  0001011ff  INCD    DECD    INCDS   DECDS     D                                ZC ZC ZC ZC 
    ZCW- 1111111 ZC 0 CCCC  DDDDDDDDD  0001100ff  POPT0   POPT1   POPT2   POPT3     D                                ZC ZC ZC ZC 
    ZCW- 1111111 ZC 0 CCCC  DDDDDDDDD  0001101ff  POP     <empty> <empty> <empty>   D                                ZC ZC ZC ZC 
    ----------------------------------------------------------------------------------------------------------------------------
    --L- 1111111 00 L CCCC  DDDDDDDDD  001iiiiii  REPD                              D/#1..512,#1..64                 --          
    ----------------------------------------------------------------------------------------------------------------------------
    --L- 1111111 00 L CCCC  DDDDDDDDD  0100000ff  CLKSET  COGSTOP LOCKSET LOCKCLR   D/#                              -- -- -C -C 
    --L- 1111111 00 L CCCC  DDDDDDDDD  0100001ff  LOCKRET RDWIDE  RDWIDEC RDWIDEQ   D/#                              -- -- -- -- 
    ZCL- 1111111 ZC L CCCC  DDDDDDDDD  0100010ff  GETP    GETNP   SEROUTA SEROUTB   D/#                              ZC ZC -C -C 
    -CL- 1111111 0C L CCCC  DDDDDDDDD  0100011ff  CMPCNT  WAITPX  WAITPR  WAITPF    D/#                              -C -C -C -C 
    --L- 1111111 00 L CCCC  DDDDDDDDD  0100100ff  PUSH    <empty> SETXCH  SETTASK   D/#                              -- ZC -- -- 
    --L- 1111111 00 L CCCC  DDDDDDDDD  0100101ff  SETRACE SARACCA SARACCB SARACCS   D/#                              -- -- -- -- 
    --L- 1111111 00 L CCCC  DDDDDDDDD  0100110ff  SETPTRA SETPTRB ADDPTRA ADDPTRB   D/#                              -- -- -- -- 
    --L- 1111111 00 L CCCC  DDDDDDDDD  0100111ff  SUBPTRA SUBPTRB SETWIDE SETWIDZ   D/#                              -- -- -- -- 
    --L- 1111111 00 L CCCC  DDDDDDDDD  0101000ff  SETPTRX SETPTRY ADDPTRX ADDPTRY   D/#                              -- -- -- -- 
    --L- 1111111 00 L CCCC  DDDDDDDDD  0101001ff  SUBPTRX SUBPTRY PASSCNT WAIT      D/#                              -- -- -- -- 
    --L- 1111111 00 L CCCC  DDDDDDDDD  0101010ff  OFFP    NOTP    CLRP    SETP      D/#                              -- -- -- -- 
    --L- 1111111 00 L CCCC  DDDDDDDDD  0101011ff  SETPC   SETPNC  SETPZ   SETPNZ    D/#                              -- -- -- -- 
    --L- 1111111 00 L CCCC  DDDDDDDDD  0101100ff  DIV64D  SQRT32  QLOG    QEXP      D/#                              -- -- -- -- 
    --L- 1111111 00 L CCCC  DDDDDDDDD  0101101ff  SETQI   SETQZ   CFGDACS SETDACS   D/#                              -- -- -- -- 
    --L- 1111111 00 L CCCC  DDDDDDDDD  0101110ff  CFGDAC0 CFGDAC1 CFGDAC2 CFGDAC3   D/#                              -- -- -- -- 
    --L- 1111111 00 L CCCC  DDDDDDDDD  0101111ff  SETDAC0 SETDAC1 SETDAC2 SETDAC3   D/#                              -- -- -- -- 
    --L- 1111111 00 L CCCC  DDDDDDDDD  0110000ff  SETCTRA SETWAVA SETFRQA SETPHSA   D/#                              -- -- -- -- 
    --L- 1111111 00 L CCCC  DDDDDDDDD  0110001ff  ADDPHSA SUBPHSA SETVID  SETVIDY   D/#                              -- -- -- -- 
    --L- 1111111 00 L CCCC  DDDDDDDDD  0110010ff  SETCTRB SETWAVB SETFRQB SETPHSB   D/#                              -- -- -- -- 
    --L- 1111111 00 L CCCC  DDDDDDDDD  0110011ff  ADDPHSB SUBPHSB SETVIDI SETVIDQ   D/#                              -- -- -- -- 
    --L- 1111111 00 L CCCC  DDDDDDDDD  0110100ff  SETPIX  SETPIXZ SETPIXU SETPIXV   D/#                              -- -- -- -- 
    --L- 1111111 00 L CCCC  DDDDDDDDD  0110101ff  SETPIXA SETPIXR SETPIXG SETPIXB   D/#                              -- -- -- -- 
    --L- 1111111 00 L CCCC  DDDDDDDDD  0110110ff  SETPORA SETPORB SETPORC SETPORD   D/#                              -- -- -- -- 
    --L- 1111111 00 L CCCC  DDDDDDDDD  0110111ff  RDWIDEA RDWIDEB WRWIDEA WRWIDEB   D/#1..512                        -- -- -- -- 
    --L- 1111111 00 L CCCC  DDDDDDDDD  0111000ff  JMPT0   JMPT1   JMPT2   JMPT3     D/#                              -- -- -- -- 
    --L- 1111111 00 L CCCC  DDDDDDDDD  0111001ff  PUSHT0  PUSHT1  PUSHT2  PUSHT3    D/#                              -- -- -- -- 
    --L- 1111111 ZC L CCCC  DDDDDDDDD  0111010ff  COGNEW  COGNEWX RESD    <empty>   {D} D/#                          ZC ZC -- -- 
    ----------------------------------------------------------------------------------------------------------------------------
    --R- 1111111 ZC x CCCC  DDDDDDDDD  1000000ff  LOCPTRA LOCPTRB JMP     JMPD      D                                ZC ZC ZC ZC 
    --R- 1111111 ZC x CCCC  DDDDDDDDD  1000001ff  LINK    LINKD   CALL    CALLD     {0} D                            ZC ZC ZC ZC 
    --R- 1111111 ZC x CCCC  DDDDDDDDD  1000010ff  CALLA   CALLAD  CALLB   CALLBD    D                                ZC ZC ZC ZC 
    --R- 1111111 ZC x CCCC  DDDDDDDDD  1000011ff  CALLX   CALLXD  CALLY   CALLYD    D                                ZC ZC ZC ZC 
    --R- 1111111 00 x CCCC  DDDDDDDDD  1000100ff  LODINDA LODINDB <empty> <empty>   D                                -- -- -- -- 
    ----------------------------------------------------------------------------------------------------------------------------
    ZC-- 1111111 ZC x CCCC  xxxxxxxxx  1100000ff  RETA    RETAD   RETB    RETBD                                      ZC ZC ZC ZC 
    ZC-- 1111111 ZC x CCCC  xxxxxxxxx  1100001ff  RETX    RETXD   RETY    RETYD                                      ZC ZC ZC ZC 
    ZC-- 1111111 ZC x CCCC  xxxxxxxxx  1100010ff  RET     RETD    POLCTRA POLCTRB                                    ZC ZC ZC ZC 
    ZC-- 1111111 ZC x CCCC  xxxxxxxxx  1100011ff  POLVID  CAPCTRA CAPCTRB CAPCTRS                                    ZC -- -- -- 
    ---- 1111111 00 x CCCC  xxxxxxxxx  1100100ff  SETPIXW CLRACCA CLRACCB CLRACCS                                    -- -- -- -- 
    ZC-- 1111111 ZC x CCCC  xxxxxxxxx  1100101ff  CHKPTRX CHKPTRY SYNCTRA SYNCTRB                                    ZC ZC -- -- 
    ---- 1111111 00 x CCCC  xxxxxxxxx  1100110ff  DCACHEX ICACHEX ICACHEP ICACHEN                                    -- -- -- -- 
    ---- 1111111 00 x 0000  xxxxxxxxx  1100111ff  TLOCK   TFREE   LOADT3  SAVET3                                     -- -- -- -- 
    ----------------------------------------------------------------------------------------------------------------------------
    ZCL- 1111111 ZC L CCCC  DDDDDDDDD  1111iiiii  PICKZC                            D/#,#0-31                        ZC          
                                                  Note: PICKZC may not be correct opcode in S[8:5].
    ----------------------------------------------------------------------------------------------------------------------------
    
    Attachment not found.
  • SapiehaSapieha Posts: 2,964
    edited 2014-03-15 00:42
    Hi Chip.

    In Yours Last
    Prop2_Instructions_2014_03_12.txt.

    You are missing NOP instruction and its bit's usage
  • cgraceycgracey Posts: 13,718
    edited 2014-03-15 00:49
    Sapieha wrote: »
    Hi Chip.

    In Yours Last
    Prop2_Instructions_2014_03_12.txt.

    You are missing NOP instruction and its bit's usage


    Thanks for pointing that out, Sapieha. I'll put it in right now, before I forget.
  • SapiehaSapieha Posts: 2,964
    edited 2014-03-15 01:26
    Hi Chip.

    Thanks

    My editor after change to new instruction set reports now that this instruction's are NOT in use.
    Can You look if it is OK else that You are mising some of them in NEW Instruction's LIST


    jmptask tjnz tjz addspa setcog coginit setspa popar
    chkspa subspa pushar getspb getspa chkspb setspb
    pushb wrquad rdquad rdquadc cachex gettops setquad setquaz
    popb addspb getspd chkspd sndser rcvser mac movi jmpretd absneg
    seti setx pushx pushy popx popy chkptra chkptrb setqm
    setsqrt getpn setporta setportb setportc setportd cashex
    tasksw taskswd setmulb setdivu setdiva setdivb setsqrh
    setsqrl setmulu setmula fitaccb fitaccs setskip
    tjzd tjnzd ijz ijzd ijnz ijnzd
  • ozpropdevozpropdev Posts: 2,783
    edited 2014-03-15 01:42
    Sapieha wrote: »
    Hi Chip.

    Thanks

    My editor after change to new instruction set reports now that this instruction's are NOT in use.
    Can You look if it is OK else that You are mising some of them in NEW Instruction's LIST


    jmptask tjnz tjz addspa setcog coginit setspa popar
    chkspa subspa pushar getspb getspa chkspb setspb
    pushb wrquad rdquad rdquadc cachex gettops setquad setquaz
    popb addspb getspd chkspd sndser rcvser mac movi jmpretd absneg
    seti setx pushx pushy popx popy chkptra chkptrb setqm
    setsqrt getpn setporta setportb setportc setportd cashex
    tasksw taskswd setmulb setdivu setdiva setdivb setsqrh
    setsqrl setmulu setmula fitaccb fitaccs setskip
    tjzd tjnzd ijz ijzd ijnz ijnzd

    Hi Sapieha,
    Here is a few differences I noticed in your list.

    SPA,SPB are now called PTRX,PTRY
    TJZ,TJNZ are now JZ,JNZ
    SETQUAD/Z are now SETWIDE/Z
    RDWAUD,WRQUAD are now RDWIDE,WRWIDE
    SETCOG is no longer used
    SETMUL is no longer used, MUL32 A,B is the new format(2 ops)
    ADDSPA is now ADDPTRX
    IJZ,IJNZ and delayed variants have been removed
  • SapiehaSapieha Posts: 2,964
    edited 2014-03-15 01:46
    Hi ozpropdev.

    Thanks

    ozpropdev wrote: »
    Hi Sapieha,
    Here is a few differences I noticed in your list.

    SPA,SPB are now called PTRX,PTRY
    TJZ,TJNZ are now JZ,JNZ
    SETQUAD/Z are now SETWIDE/Z
    RDWAUD,WRQUAD are now RDWIDE,WRWIDE
    SETCOG is no longer used
    SETMUL is no longer used, MUL32 A,B is the new format(2 ops)
    ADDSPA is now ADDPTRX
    IJZ,IJNZ and delayed variants have been removed
  • SapiehaSapieha Posts: 2,964
    edited 2014-03-15 03:17
    Hi ozpropdev.

    I found one more

    seti -- new one SETINST

    ozpropdev wrote: »
    Hi Sapieha,
    Here is a few differences I noticed in your list.

    SPA,SPB are now called PTRX,PTRY
    TJZ,TJNZ are now JZ,JNZ
    SETQUAD/Z are now SETWIDE/Z
    RDWAUD,WRQUAD are now RDWIDE,WRWIDE
    SETCOG is no longer used
    SETMUL is no longer used, MUL32 A,B is the new format(2 ops)
    ADDSPA is now ADDPTRX
    IJZ,IJNZ and delayed variants have been removed
  • SapiehaSapieha Posts: 2,964
    edited 2014-03-15 04:03
    Hi ozpropdev.

    Fond some more differences that are identified now

    NOT Identified
    jmptask jmpretd coginit
    pushb popb pushx popx
    popar pushy popy pushar
    gettops getpn
    sndser rcvser mac absneg
    chkptra chkptrb setqm
    tasksw taskswd
    setdivu setdiva setdivb
    setsqrh setsqrl setsqrt
    setskip fitaccb fitaccs
    setx
    getspd chkspd

    Identified
    ijz ijzd ijnz ijnzd
    tjz tjnz tjzd tjnzd
    setquad setquaz
    wrquad rdquad rdquadc
    setcog
    setmulu
    seti
    setmulb setmula
    setporta setportb setportc setportd
    cachex
    addspa addspb
    subspa subspb
    chkspb chkspa
    setspa setspb
    getspa getspb
    -----------------------------------------------------------
    Here is a few differences I noticed in your list.
    
    SETCOG is no longer used
    IJZ,IJNZ and delayed variants have been removed
    
    SPA,SPB are now called PTRX,PTRY
    SETMUL is no longer used, MUL32 A,B is the new format(2 ops)
    TJZ,TJNZ                are now JZ,JNZ
    SETQUAD/Z            are now SETWIDE/Z
    RDWAUD,WRQUAD        are now RDWIDE,WRWIDE
    ADDSPA                 are now ADDPTRX
    movi=seti            new one SETINST
    setporta             new one SETPORA
    setportb             new one SETPORB
    setportc             new one SETPORC
    setportd             new one SETPORD
    cachex                hve now --->
                                 DCACHEX
                                 ICACHEX
                                 ICACHEP
                                 ICACHEN
    
    ----------------------------------------------------------------
    
  • ozpropdevozpropdev Posts: 2,783
    edited 2014-03-15 04:58
    Hi Sapieha,

    Here's some more information.
    From the Prop2 docs
    
    PUSHX   D/#           alias for 'WRAUX D/#,PTRX++'
    PUSHY   D/#           alias for 'WRAUXR D/#,PTRY++'
    POPX    D             alias for 'RDAUX D,--PTRX'
    POPY    D             alias for 'RDAUXR D,--PTRY'
    
    PUSHA/POPA are noew called PUSHX,POPX
    PUSHB/POPB are noew called PUSHY,POPY
    
    --------------------------------------------------------------------------------------------------------
    jmptask  - parameters were #address,#mask now is #mask,#address
    JMPTASK D/#,S/#         force PC's in mask D/# to address S/#
    
    --------------------------------------------------------------------------------------------------------
    
    setdivu setdiva setdivb     is now the following
    To start a 32/32-bit divide, execute one of the following:
    
        DIV32   D/#,S/#     - Begin 32/32-bit signed divide of D/# over S/#
        DIV32U  D/#,S/#     - Begin 32/32-bit unsigned divide of D/# over S/#
    
    
    To start a 64/32-bit divide, first set the denominator:
    
        DIV64D  D/#         - Set the 32-bit denominator to D/#
    
    Then execute one of the following:
    
        DIV64   D/#,S/#     - Set the 64-bit numerator to {S/#,D/#} and begin signed divide
        DIV64U  D/#,S/#     - Set the 64-bit numerator to {S/#,D/#} and begin unsigned divide
    
    
    --------------------------------------------------------------------------------------------------------
    
    setsqrh setsqrl setsqrt       is now the following
        SQRT32  D/#         - Begin computing square root of 32-bit unsigned D/#
        SQRT64  D/#,S/#     - Begin computing square root of 64-bit unsigned {S/#,D/#}
    --------------------------------------------------------------------------------------------------------
    
    setx   is now SETCOND
    
  • SapiehaSapieha Posts: 2,964
    edited 2014-03-15 05:01
    Hi ozpropdev

    Thanks.

    Will update previous post with Yours info
  • cgraceycgracey Posts: 13,718
    edited 2014-03-15 05:07
    Sapieha,

    Almost all those instructions are still there. They just have different names now.

    The ones that aren't in there became something else to provide improved functionality, like FITACCA is now SARACCA.

    As things developed, the mnemonic names evolved to reflect more standard ways of expressing ideas. For example SPA/SPB are now PTRX/PTRY, which have some conceptual relation to PTRA/PTRB. Both can do calls and returns now.
  • Cluso99Cluso99 Posts: 18,062
    edited 2014-03-15 05:15
    SETZC D/# is now PICK D/#,#0-31
    Copies D[0:1+0-31] into Z,C
  • ozpropdevozpropdev Posts: 2,783
    edited 2014-03-15 05:15
    Hi Sapieha,
    Have you seen the current Prop2 Docs (Feb 6 2014)?
  • Cluso99Cluso99 Posts: 18,062
    edited 2014-03-15 05:23
    Chip, How is the fpga code coming along?
    Did you manage to get it to compile to the Cyclone V or did you give up?

    Did you get time to look at my verilog code for USB ? jmg fixed some of the syntax and helped with verilog :)
    I didn't know how to express the input pins as pin[s[7:0]] and pin[s[7:0] | $01].
  • Cluso99Cluso99 Posts: 18,062
    edited 2014-03-15 05:26
    Sapieha & ozpropdev,
    There is an opcode map posted by Chip a few pages back - dated 12 March - I posted a summary yesterday that excludes the new RESxx instructions.
Sign In or Register to comment.