+static ir_node *create_sex_32_64(dbg_info *dbgi, ir_graph *irg, ir_node *block,
+ ir_node *val, const ir_node *orig)
+{
+ ir_node *res;
+
+ (void)orig;
+ if (ia32_cg_config.use_short_sex_eax) {
+ ir_node *pval = new_rd_ia32_ProduceVal(dbgi, irg, block);
+ be_dep_on_frame(pval);
+ res = new_rd_ia32_Cltd(dbgi, irg, block, val, pval);
+ } else {
+ ir_node *imm31 = create_Immediate(NULL, 0, 31);
+ res = new_rd_ia32_Sar(dbgi, irg, block, val, imm31);
+ }
+ SET_IA32_ORIG_NODE(res, orig);
+ return res;
+}
+