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. */