-"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" ], "out" => [ "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" ], "out" => ["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" ],
+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" ], out => [ "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" ], out => ["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" ],