-"Load" => {
- "op_flags" => "L|F",
- "state" => "exc_pinned",
- "comment" => "construct Load: Load(ptr, mem) = LD ptr -> reg",
- "reg_req" => { "in" => [ "gp", "gp", "none" ], "out" => [ "gp", "none" ] },
- "latency" => 3,
- "emit" => ". mov%SE%ME%.l %AM, %D1",
- "outs" => [ "res", "M" ],
- "units" => [ "GP" ],
-},
-
-"l_Load" => {
- "op_flags" => "L|F",
- "cmp_attr" => "return 1;",
- "comment" => "construct lowered Load: Load(ptr, mem) = LD ptr -> reg",
- "outs" => [ "res", "M" ],
- "arity" => 2,
-},
-
-"l_Store" => {
- "op_flags" => "L|F",
- "cmp_attr" => "return 1;",
- "state" => "exc_pinned",
- "comment" => "construct lowered Store: Store(ptr, val, mem) = ST ptr,val",
- "arity" => 3,
- "mode" => "mode_M",
-},
-
-"Store" => {
- "op_flags" => "L|F",
- "state" => "exc_pinned",
- "comment" => "construct Store: Store(ptr, val, mem) = ST ptr,val",
- "reg_req" => { "in" => [ "gp", "gp", "gp", "none" ] },
- "emit" => '. mov%M %binop',
- "latency" => 3,
- "units" => [ "GP" ],
- "mode" => "mode_M",
-},
-
-"Store8Bit" => {
- "op_flags" => "L|F",
- "state" => "exc_pinned",
- "comment" => "construct 8Bit Store: Store(ptr, val, mem) = ST ptr,val",
- "reg_req" => { "in" => [ "gp", "gp", "eax ebx ecx edx", "none" ] },
- "emit" => '. mov%M %binop',
- "latency" => 3,
- "units" => [ "GP" ],
- "mode" => "mode_M",
-},
-
-"Lea" => {
- "irn_flags" => "R",
- "comment" => "construct Lea: Lea(a,b) = lea [a+b*const+offs] | res = a + b * const + offs with const = 0,1,2,4,8",
- "reg_req" => { "in" => [ "gp", "gp" ], "out" => [ "in_r1" ] },
- "emit" => '. leal %AM, %D1',
- "latency" => 2,
- "units" => [ "GP" ],
- "mode" => "mode_Iu",
-},
-
-"Push" => {
- "comment" => "push on the stack",
- "reg_req" => { "in" => [ "gp", "gp", "gp", "esp", "none" ], "out" => [ "esp", "none" ] },
- "emit" => '. pushl %unop',
- "outs" => [ "stack:I|S", "M" ],
- "latency" => 3,
- "units" => [ "GP" ],
-},
-
-"Pop" => {
- "comment" => "pop a gp register from the stack",
- "reg_req" => { "in" => [ "gp", "gp", "esp", "none" ], "out" => [ "esp", "gp", "none" ] },
- "emit" => '. popl %unop',
- "outs" => [ "stack:I|S", "res", "M" ],
- "latency" => 4,
- "units" => [ "GP" ],
-},
-
-"Enter" => {
- "comment" => "create stack frame",
- "reg_req" => { "in" => [ "esp" ], "out" => [ "ebp", "esp" ] },
- "emit" => '. enter',
- "outs" => [ "frame:I", "stack:I|S", "M" ],
- "latency" => 15,
- "units" => [ "GP" ],
-},
-
-"Leave" => {
- "comment" => "destroy stack frame",
- "reg_req" => { "in" => [ "esp", "ebp" ], "out" => [ "ebp", "esp" ] },
- "emit" => '. leave',
- "outs" => [ "frame:I", "stack:I|S" ],
- "latency" => 3,
- "units" => [ "GP" ],
-},
-
-"AddSP" => {
- "irn_flags" => "I",
- "comment" => "allocate space on stack",
- "reg_req" => { "in" => [ "gp", "gp", "esp", "gp", "none" ], "out" => [ "in_r3", "none" ] },
- "emit" => '. addl %binop',
- "outs" => [ "stack:S", "M" ],
- "units" => [ "GP" ],
-},
-
-"SubSP" => {
- "irn_flags" => "I",
- "comment" => "free space on stack",
- "reg_req" => { "in" => [ "gp", "gp", "esp", "gp", "none" ], "out" => [ "in_r3", "none" ] },
- "emit" => '. subl %binop',
- "outs" => [ "stack:S", "M" ],
- "units" => [ "GP" ],
-},
-
-"LdTls" => {
- "irn_flags" => "R",
- "comment" => "get the TLS base address",
- "reg_req" => { "out" => [ "gp" ] },
- "units" => [ "GP" ],