aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/s390/s390.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/s390/s390.c')
-rw-r--r--gcc/config/s390/s390.c45
1 files changed, 25 insertions, 20 deletions
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index bbae89be29d..deced953d75 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -35,6 +35,7 @@ along with GCC; see the file COPYING3. If not see
#include "memmodel.h"
#include "tm_p.h"
#include "stringpool.h"
+#include "attribs.h"
#include "expmed.h"
#include "optabs.h"
#include "regs.h"
@@ -318,24 +319,27 @@ struct processor_costs zEC12_cost =
static struct
{
+ /* The preferred name to be used in user visible output. */
const char *const name;
+ /* CPU name as it should be passed to Binutils via .machine */
+ const char *const binutils_name;
const enum processor_type processor;
const struct processor_costs *cost;
}
const processor_table[] =
{
- { "g5", PROCESSOR_9672_G5, &z900_cost },
- { "g6", PROCESSOR_9672_G6, &z900_cost },
- { "z900", PROCESSOR_2064_Z900, &z900_cost },
- { "z990", PROCESSOR_2084_Z990, &z990_cost },
- { "z9-109", PROCESSOR_2094_Z9_109, &z9_109_cost },
- { "z9-ec", PROCESSOR_2094_Z9_EC, &z9_109_cost },
- { "z10", PROCESSOR_2097_Z10, &z10_cost },
- { "z196", PROCESSOR_2817_Z196, &z196_cost },
- { "zEC12", PROCESSOR_2827_ZEC12, &zEC12_cost },
- { "z13", PROCESSOR_2964_Z13, &zEC12_cost },
- { "arch12", PROCESSOR_ARCH12, &zEC12_cost },
- { "native", PROCESSOR_NATIVE, NULL }
+ { "g5", "g5", PROCESSOR_9672_G5, &z900_cost },
+ { "g6", "g6", PROCESSOR_9672_G6, &z900_cost },
+ { "z900", "z900", PROCESSOR_2064_Z900, &z900_cost },
+ { "z990", "z990", PROCESSOR_2084_Z990, &z990_cost },
+ { "z9-109", "z9-109", PROCESSOR_2094_Z9_109, &z9_109_cost },
+ { "z9-ec", "z9-ec", PROCESSOR_2094_Z9_EC, &z9_109_cost },
+ { "z10", "z10", PROCESSOR_2097_Z10, &z10_cost },
+ { "z196", "z196", PROCESSOR_2817_Z196, &z196_cost },
+ { "zEC12", "zEC12", PROCESSOR_2827_ZEC12, &zEC12_cost },
+ { "z13", "z13", PROCESSOR_2964_Z13, &zEC12_cost },
+ { "z14", "arch12", PROCESSOR_3906_Z14, &zEC12_cost },
+ { "native", "", PROCESSOR_NATIVE, NULL }
};
extern int reload_completed;
@@ -847,7 +851,7 @@ s390_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED,
if ((bflags & B_VXE) && !TARGET_VXE)
{
- error ("Builtin %qF requires arch12 or higher.", fndecl);
+ error ("Builtin %qF requires z14 or higher.", fndecl);
return const0_rtx;
}
}
@@ -5792,7 +5796,7 @@ s390_expand_vec_strlen (rtx target, rtx string, rtx alignment)
add_int_reg_note (s390_emit_ccraw_jump (8, NE, loop_start_label),
REG_BR_PROB,
profile_probability::very_likely ().to_reg_br_prob_note ());
- emit_insn (gen_vec_extractv16qi (len, result_reg, GEN_INT (7)));
+ emit_insn (gen_vec_extractv16qiqi (len, result_reg, GEN_INT (7)));
/* If the string pointer wasn't aligned we have loaded less then 16
bytes and the remaining bytes got filled with zeros (by vll).
@@ -5850,7 +5854,7 @@ s390_expand_vec_movstr (rtx result, rtx dst, rtx src)
emit_insn (gen_vlbb (vsrc, src, GEN_INT (6)));
emit_insn (gen_lcbb (loadlen, src_addr, GEN_INT (6)));
emit_insn (gen_vfenezv16qi (vpos, vsrc, vsrc));
- emit_insn (gen_vec_extractv16qi (gpos_qi, vpos, GEN_INT (7)));
+ emit_insn (gen_vec_extractv16qiqi (gpos_qi, vpos, GEN_INT (7)));
emit_move_insn (gpos, gen_rtx_SUBREG (SImode, gpos_qi, 0));
/* gpos is the byte index if a zero was found and 16 otherwise.
So if it is lower than the loaded bytes we have a hit. */
@@ -5928,7 +5932,7 @@ s390_expand_vec_movstr (rtx result, rtx dst, rtx src)
force_expand_binop (Pmode, add_optab, dst_addr_reg, offset, dst_addr_reg,
1, OPTAB_DIRECT);
- emit_insn (gen_vec_extractv16qi (gpos_qi, vpos, GEN_INT (7)));
+ emit_insn (gen_vec_extractv16qiqi (gpos_qi, vpos, GEN_INT (7)));
emit_move_insn (gpos, gen_rtx_SUBREG (SImode, gpos_qi, 0));
emit_insn (gen_vstlv16qi (vsrc, gpos, gen_rtx_MEM (BLKmode, dst_addr_reg)));
@@ -7359,7 +7363,8 @@ s390_asm_output_machine_for_arch (FILE *asm_out_file)
{
fprintf (asm_out_file, "\t.machinemode %s\n",
(TARGET_ZARCH) ? "zarch" : "esa");
- fprintf (asm_out_file, "\t.machine \"%s", processor_table[s390_arch].name);
+ fprintf (asm_out_file, "\t.machine \"%s",
+ processor_table[s390_arch].binutils_name);
if (S390_USE_ARCHITECTURE_MODIFIERS)
{
int cpu_flags;
@@ -8093,7 +8098,7 @@ s390_issue_rate (void)
instruction gets issued per cycle. */
case PROCESSOR_2827_ZEC12:
case PROCESSOR_2964_Z13:
- case PROCESSOR_ARCH12:
+ case PROCESSOR_3906_Z14:
default:
return 1;
}
@@ -14309,7 +14314,7 @@ s390_get_sched_attrmask (rtx_insn *insn)
mask |= S390_SCHED_ATTR_MASK_GROUPALONE;
break;
case PROCESSOR_2964_Z13:
- case PROCESSOR_ARCH12:
+ case PROCESSOR_3906_Z14:
if (get_attr_z13_cracked (insn))
mask |= S390_SCHED_ATTR_MASK_CRACKED;
if (get_attr_z13_expanded (insn))
@@ -14333,7 +14338,7 @@ s390_get_unit_mask (rtx_insn *insn, int *units)
switch (s390_tune)
{
case PROCESSOR_2964_Z13:
- case PROCESSOR_ARCH12:
+ case PROCESSOR_3906_Z14:
*units = 3;
if (get_attr_z13_unit_lsu (insn))
mask |= 1 << 0;