irn_flags => "R",
reg_req => { in => [ "gp", "ecx" ], out => [ "in_r1 !in_r2" ] },
ins => [ "left", "right" ],
- am => "dest,binary",
emit => '. shl %SB1, %S0',
units => [ "GP" ],
mode => $mode_gp,
# see ShrD about the strange out constraint
reg_req => { in => [ "gp", "gp", "ecx" ], out => [ "!in" ] },
ins => [ "left_high", "left_low", "right" ],
- am => "dest,ternary",
emit => ". shld%M %SB2, %S1, %S0\n".
". movl %S0, %D0",
latency => 6,
irn_flags => "R",
reg_req => { in => [ "gp", "ecx" ], out => [ "in_r1 !in_r2" ] },
ins => [ "val", "count" ],
- am => "dest,binary",
emit => '. shr %SB1, %S0',
units => [ "GP" ],
mode => $mode_gp,
irn_flags => "R",
reg_req => { in => [ "gp", "gp", "ecx" ], out => [ "!in" ] },
ins => [ "left_high", "left_low", "right" ],
- am => "dest,ternary",
emit => ". shrd%M %SB2, %S1, %S0\n".
". movl %S0, %D0",
latency => 6,
irn_flags => "R",
reg_req => { in => [ "gp", "ecx" ], out => [ "in_r1 !in_r2" ] },
ins => [ "val", "count" ],
- am => "dest,binary",
emit => '. sar %SB1, %S0',
units => [ "GP" ],
mode => $mode_gp,
irn_flags => "R",
reg_req => { in => [ "gp", "ecx" ], out => [ "in_r1 !in_r2" ] },
ins => [ "val", "count" ],
- am => "dest,binary",
emit => '. ror %SB1, %S0',
units => [ "GP" ],
mode => $mode_gp,
irn_flags => "R",
reg_req => { in => [ "gp", "ecx" ], out => [ "in_r1 !in_r2" ] },
ins => [ "val", "count" ],
- am => "dest,binary",
emit => '. rol %SB1, %S0',
units => [ "GP" ],
mode => $mode_gp,
reg_req => { in => [ "gp" ], out => [ "in_r1" ] },
emit => '. neg %S0',
ins => [ "val" ],
- am => "dest,unary",
units => [ "GP" ],
mode => $mode_gp,
modified_flags => $status_flags
Inc => {
irn_flags => "R",
reg_req => { in => [ "gp" ], out => [ "in_r1" ] },
- am => "dest,unary",
emit => '. inc %S0',
units => [ "GP" ],
mode => $mode_gp,
Dec => {
irn_flags => "R",
reg_req => { in => [ "gp" ], out => [ "in_r1" ] },
- am => "dest,unary",
emit => '. dec %S0',
units => [ "GP" ],
mode => $mode_gp,
irn_flags => "R",
reg_req => { in => [ "gp" ], out => [ "in_r1" ] },
ins => [ "val" ],
- am => "dest,unary",
emit => '. not %S0',
units => [ "GP" ],
mode => $mode_gp,
#irn_flags => "R",
reg_req => { in => [ "eflags" ], out => [ "eax ebx ecx edx" ] },
ins => [ "eflags" ],
- am => "dest,unary",
attr => "pn_Cmp pnc",
init_attr => "attr->pn_code = pnc;\nset_ia32_ls_mode(res, mode_Bu);\n",
emit => '. set%CMP0 %DB0',