From 7a688ea6abf2b8e514a42ff296df8e138cff19bf Mon Sep 17 00:00:00 2001 From: chad Date: Fri, 18 Jan 2013 21:21:32 +0000 Subject: [PATCH] Moved ISET to harptool directory. git-svn-id: http://www.cdkersey.com/harp/harptool@121 0246edb2-e076-4747-b392-db732a341fa2 --- ISET | 101 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 ISET diff --git a/ISET b/ISET new file mode 100644 index 00000000..d32d7a65 --- /dev/null +++ b/ISET @@ -0,0 +1,101 @@ +Instruction Set Reference +========================= + + NOP /* No operation */ + +Privileged Instructions +----------------------- + + EI /* Enable interrupts (privileged) */ + DI /* Disable interrupts (privileged) */ + SKEP %reg /* Set kernel entry point. */ + TLBADD %virt, %phys, %flags /* Add entry to TLB */ + TLBRM %virt /* Remove entry corresponding to a given virtual address. */ + TLBFLUSH /* Flush all TLB entries */ + JMPRU %reg /* Jump to location in a register and switch to user mode. */ + RETI /* Return from interrupt (Restore shadow regs/PC, threads) */ + HALT /* Stop CPU until next interrupt. */ + +Memory Loads/Stores +------------------- + + ST %reg, %reg, #imm /* Store reg to reg+imm */ + LD %reg, %reg, #imm /* Load reg from reg+imm */ + +Predicate Manipulation +---------------------- + + ANDP @preg, @preg, @preg + ORP @preg, @preg, @preg + XORP @preg, @preg, @preg + NOTP @preg, @preg + +Value Tests +----------- + + RTOP @preg, %reg /* Register to predicate. Same as ISZERO => NOTP */ + ISNEG @preg, %reg + ISZERO @preg, %reg + +Immediate Integer Arithmetic/Logic +---------------------------------- + + LDI %reg, #IMM /* Load immediate. */ + ADDI %reg, %reg, #IMM /* Add immediate */ + SUBI %reg, %reg, #IMM /* Subtract immediate */ + MULI %reg, %reg, #IMM /* Multiply immediate */ + DIVI %reg, %reg, #IMM /* Divide immediate */ + MODI %reg, %reg, #IMM /* Modulus immediate */ + SHLI %reg, %reg, #IMM /* Shift left immediate */ + SHRI %reg, %reg, #IMM /* Shift right immediate */ + ANDI %reg, %reg, #IMM /* And immediate */ + ORI %reg, %reg, #IMM /* Or immediate */ + XORI %reg, %reg, #IMM /* Xor immediate */ + +Register Integer Arithmetic/Logic +--------------------------------- + + ADD %reg, %reg, %reg /* Add */ + SUB %reg, %reg, %reg /* Subtract */ + MUL %reg, %reg, %reg /* Multiply */ + DIV %reg, %reg, %reg /* Divide */ + MOD %reg, %reg, %reg /* Modulus */ + SHL %reg, %reg, %reg /* Shift left */ + SHR %reg, %reg, %reg /* Shift right */ + AND %reg, %reg, %reg /* Bitwise and */ + OR %reg, %reg, %reg /* Bitwise or */ + XOR %reg, %reg, %reg /* Bitwise xor */ + NEG %reg, %reg /* Negate */ + NOT %reg, %reg /* Bitwise invert */ + +Floating Point Arithmetic +------------------------- + + ITOF %reg, %reg /* Integer to floating point. */ + FTOI %reg, %reg /* Floating point to integer, truncate. */ + FNEG %reg, %reg /* Negate floating point number. */ + FADD %reg, %reg, %reg /* Add, full precision. */ + FSUB %reg, %reg, %reg /* Subtract, full precision. */ + FMUL %reg, %reg, %reg /* Multiply, full precision. */ + FDIV %reg, %reg, %reg /* Divide, full precision. */ + +Control Flow +------------ + + JMPI #IMM /* Jump to immediate */ + JMPR %reg /* Jump indirect (to register) */ + JALI %reg, #IMM /* Jump and link immediate */ + JALR %reg, %reg /* Jump and link indirect */ + +SIMD Control +------------ + + CLONE %reg /* Clone register state in to thread %reg */ + JALIS %reg, %rN, #IMM /* Jump and link immediate, spawning cloned threads. */ + JALRS %rL, %rL, %rN /* Jump and link indirect, spawning clowned threads. */ + JMPRT %reg /* Jump to register, terminating cloned threads. */ + +Other +----- + + TRAP /* Program-generated interrupt. */