File: x86instr-ext.sml

package info (click to toggle)
mlton 20210117%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 58,464 kB
  • sloc: ansic: 27,682; sh: 4,455; asm: 3,569; lisp: 2,879; makefile: 2,347; perl: 1,169; python: 191; pascal: 68; javascript: 7
file content (43 lines) | stat: -rw-r--r-- 1,118 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
(* x86instr-ext.sml
 *
 * COPYRIGHT (c) 2000 Bell Labs, Lucent Technologies
 *
 * extensions to the x86 instruction set.
 *)

structure X86InstrExt = struct
  datatype fsz = single | double | extended

  datatype ('s, 'r, 'f, 'c) sext 
    (* push an integer value onto the H/W stack *)
    = PUSHL of 'r
    | POP of 'r

    (* FSTPS/L/T is a way of pulling things off the floating point 
     * stack and must therefore take FREG f as argument 
     *)
    | FSTPS of 'f
    | FSTPL of 'f
    | FSTPT of 'f

    | LEAVE
    | RET of 'r

    | LOCK_CMPXCHGL of ('r * 'r)
		       
    | PAUSE                         (* improves performance of spin-wait loops *) 
    (* performs a serializing operation on all load-from-memory and store-to-memory 
     * operations issued prior to the mfence instruction.
     *)
    | MFENCE
    (* performs a serializing operation on all load-to-memory operations issued prior to
     * the lfence instruction.
     *)
    | LFENCE
    (* performs a serializing operation on all store-to-memory operations issued prior to
     * the sfence instruction.
     *)
    | SFENCE


end