Commit e4e663b2 authored by Matthias Braun's avatar Matthias Braun
Browse files

SSE consts for xorps need to be 128bit

parent 3c80f7a8
......@@ -1706,19 +1706,19 @@ static void emit_be_Perm(ia32_emit_env_t *env, const ir_node *node) {
}
#endif
} else if (cls1 == &ia32_reg_classes[CLASS_ia32_xmm]) {
ia32_emit_cstring(env, "\tpxorq ");
ia32_emit_cstring(env, "\txorpd ");
ia32_emit_source_register(env, node, 1);
ia32_emit_cstring(env, ", ");
ia32_emit_source_register(env, node, 0);
ia32_emit_finish_line(env, NULL);
ia32_emit_cstring(env, "\tpxorq ");
ia32_emit_cstring(env, "\txorpd ");
ia32_emit_source_register(env, node, 0);
ia32_emit_cstring(env, ", ");
ia32_emit_source_register(env, node, 1);
ia32_emit_finish_line(env, NULL);
ia32_emit_cstring(env, "\tpxorq ");
ia32_emit_cstring(env, "\txorpd ");
ia32_emit_source_register(env, node, 1);
ia32_emit_cstring(env, ", ");
ia32_emit_source_register(env, node, 0);
......
......@@ -68,6 +68,20 @@ static void dump_arith_tarval(obstack_t *obst, tarval *tv, int bytes)
case 12:
break;
case 16:
obstack_printf(obst, "0x%02x%02x%02x%02x%02x%02x%02x%02x"
"%02x%02x%02x%02x%02x%02x%02x%02x",
get_tarval_sub_bits(tv, 15), get_tarval_sub_bits(tv, 16),
get_tarval_sub_bits(tv, 13), get_tarval_sub_bits(tv, 12),
get_tarval_sub_bits(tv, 11), get_tarval_sub_bits(tv, 10),
get_tarval_sub_bits(tv, 9), get_tarval_sub_bits(tv, 8),
get_tarval_sub_bits(tv, 7), get_tarval_sub_bits(tv, 6),
get_tarval_sub_bits(tv, 5), get_tarval_sub_bits(tv, 4),
get_tarval_sub_bits(tv, 3), get_tarval_sub_bits(tv, 2),
get_tarval_sub_bits(tv, 1), get_tarval_sub_bits(tv, 0));
break;
default:
fprintf(stderr, "Try to dump an tarval with %d bytes\n", bytes);
assert(0);
......@@ -227,6 +241,10 @@ static void dump_size_type(obstack_t *obst, int size) {
/* handled in arith */
break;
case 16:
obstack_printf(obst, "\t.octa\t");
break;
default:
fprintf(stderr, "Try to dump a type with %d bytes\n", size);
assert(0);
......
......@@ -421,7 +421,8 @@ ident *ia32_gen_fp_known_const(ia32_known_const_t kct) {
tp_name = names[kct].tp_name;
cnst_str = names[kct].cnst_str;
mode = kct == ia32_SSIGN || kct == ia32_SABS ? mode_Iu : mode_Lu;
//mode = kct == ia32_SSIGN || kct == ia32_SABS ? mode_Iu : mode_Lu;
mode = mode_LLu;
tv = new_tarval_from_str(cnst_str, strlen(cnst_str), mode);
tp = new_type_primitive(new_id_from_str(tp_name), mode);
ent = new_entity(get_glob_type(), new_id_from_str(ent_name), tp);
......@@ -3495,10 +3496,10 @@ static ir_node *gen_Proj_Quot(ia32_transform_env_t *env, ir_node *node)
break;
case pn_Quot_res:
if(is_ia32_xDiv(new_pred)) {
return new_rd_Proj(dbg, irg, block, new_pred, mode,
return new_rd_Proj(dbg, irg, block, new_pred, mode_E,
pn_ia32_xDiv_res);
} else if(is_ia32_vfdiv(new_pred)) {
return new_rd_Proj(dbg, irg, block, new_pred, mode,
return new_rd_Proj(dbg, irg, block, new_pred, mode_E,
pn_ia32_vfdiv_res);
}
break;
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment