From 9bfda66407d589446ba3973bb1b4d3f23fc6bc88 Mon Sep 17 00:00:00 2001 From: Michael Meissner Date: Wed, 26 Jul 2017 23:03:41 +0000 Subject: [PATCH] rs6000-cpus.def (ISA_2_7_MASKS_SERVER): Delete -mvsx-small-integer option. [gcc] 2017-07-26 Michael Meissner * config/rs6000/rs6000-cpus.def (ISA_2_7_MASKS_SERVER): Delete -mvsx-small-integer option. (ISA_3_0_MASKS_IEEE): Likewise. (OTHER_VSX_VECTOR_MASKS): Likewise. (POWERPC_MASKS): Likewise. * config/rs6000/rs6000.opt (-mvsx-small-integer): Likewise. * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Simplify code, only testing for DImode being allowed in non-VSX floating point registers. (rs6000_init_hard_regno_mode_ok): Change TARGET_VSX_SMALL_INTEGER to TARGET_P8_VECTOR test. Remove redundant VSX test inside of another VSX test. (rs6000_option_override_internal): Delete -mvsx-small-integer. (rs6000_expand_vector_set): Change TARGET_VSX_SMALL_INTEGER to TARGET_P8_VECTOR test. (rs6000_secondary_reload_simple_move): Likewise. (rs6000_preferred_reload_class): Delete TARGET_VSX_SMALL_INTEGER, since TARGET_P9_VECTOR was already tested. (rs6000_opt_masks): Remove -mvsx-small-integer. * config/rs6000/vsx.md (vsx_extract_): Delete TARGET_VSX_SMALL_INTEGER, since a test for TARGET_P9_VECTOR was used. (vsx_extract__p9): Delete TARGET_VSX_SMALL_INTEGER, since a test for TARGET_VEXTRACTUB was used, and that uses TARGET_P9_VECTOR. (p9 extract splitter): Likewise. (vsx_extract__di_p9): Likewise. (vsx_extract__store_p9): Likewise. (vsx_extract_si): Delete TARGET_VSX_SMALL_INTEGER, since a test for TARGET_P9_VECTOR was used. Delete code that is now dead with the elimination of TARGET_VSX_SMALL_INTEGER. (vsx_extract__p8): Likewise. (vsx_ext__fl_): Likewise. (vsx_ext__ufl_): Likewise. (vsx_set__p9): Likewise. (vsx_set_v4sf_p9): Likewise. (vsx_set_v4sf_p9_zero): Likewise. (vsx_insert_extract_v4sf_p9): Likewise. (vsx_insert_extract_v4sf_p9_2): Likewise. * config/rs6000/rs6000.md (sign extend splitter): Change TARGET_VSX_SMALL_INTEGER to TARGET_P8_VECTOR test. (floatsi2_lfiwax_mem): Likewise. (floatunssi2_lfiwzx_mem): Likewise. (float2): Delete TARGET_VSX_SMALL_INTEGER, since a test for TARGET_P9_VECTOR was used. (float2_internal): Likewise. (floatuns2): Likewise. (floatuns2_internal): Likewise. (fix_truncsi2): Change TARGET_VSX_SMALL_INTEGER to TARGET_P8_VECTOR test. (fix_truncsi2_stfiwx): Likewise. (fix_truncsi2_internal): Likewise. (fix_trunc2): Delete TARGET_VSX_SMALL_INTEGER, since a test for TARGET_P9_VECTOR was used. (fix_trunc2_internal): Likewise. (fixuns_truncsi2): Change TARGET_VSX_SMALL_INTEGER to TARGET_P8_VECTOR test. (fixuns_truncsi2_stfiwx): Likewise. (fixuns_trunc2): Delete TARGET_VSX_SMALL_INTEGER, since a test for TARGET_P9_VECTOR was used. (fixuns_trunc2_internal): Likewise. (fctiwz__smallint): Delete TARGET_VSX_SMALL_INTEGER, since a test for TARGET_P9_VECTOR was used. (splitter for loading small constants): Likewise. [gcc/testsuite] 2017-07-25 Michael Meissner * gcc.target/powerpc/vsx-himode.c: Delete -mvsx-small-integer option. * gcc.target/powerpc/vsx-himode2.c: Likewise. * gcc.target/powerpc/vsx-himode3.c: Likewise. * gcc.target/powerpc/vsx-qimode.c: Likewise. * gcc.target/powerpc/vsx-qimode2.c: Likewise. * gcc.target/powerpc/vsx-qimode3.c: Likewise. * gcc.target/powerpc/vsx-simode.c: Likewise. * gcc.target/powerpc/vsx-simode2.c: Likewise. * gcc.target/powerpc/vsx-simode3.c: Likewise. From-SVN: r250595 --- gcc/ChangeLog | 69 +++++++++++++++++++ gcc/config/rs6000/rs6000-cpus.def | 8 +-- gcc/config/rs6000/rs6000.c | 45 +++--------- gcc/config/rs6000/rs6000.md | 47 +++++-------- gcc/config/rs6000/rs6000.opt | 4 -- gcc/config/rs6000/vsx.md | 51 +++++--------- gcc/testsuite/ChangeLog | 13 ++++ gcc/testsuite/gcc.target/powerpc/vsx-himode.c | 2 +- .../gcc.target/powerpc/vsx-himode2.c | 2 +- .../gcc.target/powerpc/vsx-himode3.c | 2 +- gcc/testsuite/gcc.target/powerpc/vsx-qimode.c | 2 +- .../gcc.target/powerpc/vsx-qimode2.c | 2 +- .../gcc.target/powerpc/vsx-qimode3.c | 2 +- gcc/testsuite/gcc.target/powerpc/vsx-simode.c | 2 +- .../gcc.target/powerpc/vsx-simode2.c | 2 +- .../gcc.target/powerpc/vsx-simode3.c | 2 +- 16 files changed, 140 insertions(+), 115 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4f2b467ab5a..cc7f1f997f6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,72 @@ +2017-07-26 Michael Meissner + + * config/rs6000/rs6000-cpus.def (ISA_2_7_MASKS_SERVER): Delete + -mvsx-small-integer option. + (ISA_3_0_MASKS_IEEE): Likewise. + (OTHER_VSX_VECTOR_MASKS): Likewise. + (POWERPC_MASKS): Likewise. + * config/rs6000/rs6000.opt (-mvsx-small-integer): Likewise. + * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Simplify + code, only testing for DImode being allowed in non-VSX floating + point registers. + (rs6000_init_hard_regno_mode_ok): Change TARGET_VSX_SMALL_INTEGER + to TARGET_P8_VECTOR test. Remove redundant VSX test inside of + another VSX test. + (rs6000_option_override_internal): Delete -mvsx-small-integer. + (rs6000_expand_vector_set): Change TARGET_VSX_SMALL_INTEGER to + TARGET_P8_VECTOR test. + (rs6000_secondary_reload_simple_move): Likewise. + (rs6000_preferred_reload_class): Delete TARGET_VSX_SMALL_INTEGER, + since TARGET_P9_VECTOR was already tested. + (rs6000_opt_masks): Remove -mvsx-small-integer. + * config/rs6000/vsx.md (vsx_extract_): Delete + TARGET_VSX_SMALL_INTEGER, since a test for TARGET_P9_VECTOR was + used. + (vsx_extract__p9): Delete TARGET_VSX_SMALL_INTEGER, since a + test for TARGET_VEXTRACTUB was used, and that uses + TARGET_P9_VECTOR. + (p9 extract splitter): Likewise. + (vsx_extract__di_p9): Likewise. + (vsx_extract__store_p9): Likewise. + (vsx_extract_si): Delete TARGET_VSX_SMALL_INTEGER, since a test + for TARGET_P9_VECTOR was used. Delete code that is now dead with + the elimination of TARGET_VSX_SMALL_INTEGER. + (vsx_extract__p8): Likewise. + (vsx_ext__fl_): Likewise. + (vsx_ext__ufl_): Likewise. + (vsx_set__p9): Likewise. + (vsx_set_v4sf_p9): Likewise. + (vsx_set_v4sf_p9_zero): Likewise. + (vsx_insert_extract_v4sf_p9): Likewise. + (vsx_insert_extract_v4sf_p9_2): Likewise. + * config/rs6000/rs6000.md (sign extend splitter): Change + TARGET_VSX_SMALL_INTEGER to TARGET_P8_VECTOR test. + (floatsi2_lfiwax_mem): Likewise. + (floatunssi2_lfiwzx_mem): Likewise. + (float2): Delete TARGET_VSX_SMALL_INTEGER, + since a test for TARGET_P9_VECTOR was used. + (float2_internal): Likewise. + (floatuns2): Likewise. + (floatuns2_internal): Likewise. + (fix_truncsi2): Change TARGET_VSX_SMALL_INTEGER to + TARGET_P8_VECTOR test. + (fix_truncsi2_stfiwx): Likewise. + (fix_truncsi2_internal): Likewise. + (fix_trunc2): Delete + TARGET_VSX_SMALL_INTEGER, since a test for TARGET_P9_VECTOR was + used. + (fix_trunc2_internal): Likewise. + (fixuns_truncsi2): Change TARGET_VSX_SMALL_INTEGER to + TARGET_P8_VECTOR test. + (fixuns_truncsi2_stfiwx): Likewise. + (fixuns_trunc2): Delete + TARGET_VSX_SMALL_INTEGER, since a test for TARGET_P9_VECTOR was + used. + (fixuns_trunc2_internal): Likewise. + (fctiwz__smallint): Delete TARGET_VSX_SMALL_INTEGER, + since a test for TARGET_P9_VECTOR was used. + (splitter for loading small constants): Likewise. + 2017-07-26 Andrew Pinski * config/aarch64/aarch64.c (thunderx_vector_cost): Fix diff --git a/gcc/config/rs6000/rs6000-cpus.def b/gcc/config/rs6000/rs6000-cpus.def index 062a91b2734..51aff3a5c31 100644 --- a/gcc/config/rs6000/rs6000-cpus.def +++ b/gcc/config/rs6000/rs6000-cpus.def @@ -55,8 +55,7 @@ | OPTION_MASK_EFFICIENT_UNALIGNED_VSX \ | OPTION_MASK_HTM \ | OPTION_MASK_QUAD_MEMORY \ - | OPTION_MASK_QUAD_MEMORY_ATOMIC \ - | OPTION_MASK_VSX_SMALL_INTEGER) + | OPTION_MASK_QUAD_MEMORY_ATOMIC) /* Add ISEL back into ISA 3.0, since it is supposed to be a win. Do not add FLOAT128_HW here until we are ready to make -mfloat128 on by default. */ @@ -75,8 +74,7 @@ #define ISA_3_0_MASKS_IEEE (OPTION_MASK_VSX \ | OPTION_MASK_P8_VECTOR \ | OPTION_MASK_P9_VECTOR \ - | OPTION_MASK_DIRECT_MOVE \ - | OPTION_MASK_VSX_SMALL_INTEGER) + | OPTION_MASK_DIRECT_MOVE) /* Flags that need to be turned off if -mno-power9-vector. */ #define OTHER_P9_VECTOR_MASKS (OPTION_MASK_FLOAT128_HW \ @@ -96,7 +94,6 @@ | OPTION_MASK_FLOAT128_KEYWORD \ | OPTION_MASK_FLOAT128_TYPE \ | OPTION_MASK_P8_VECTOR \ - | OPTION_MASK_VSX_SMALL_INTEGER \ | OPTION_MASK_VSX_TIMODE) #define POWERPC_7400_MASK (OPTION_MASK_PPC_GFXOPT | OPTION_MASK_ALTIVEC) @@ -152,7 +149,6 @@ | OPTION_MASK_STRICT_ALIGN_OPTIONAL \ | OPTION_MASK_TOC_FUSION \ | OPTION_MASK_VSX \ - | OPTION_MASK_VSX_SMALL_INTEGER \ | OPTION_MASK_VSX_TIMODE) #endif diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 68a886304fd..cb2a30b62ed 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -2104,14 +2104,11 @@ rs6000_hard_regno_mode_ok (int regno, machine_mode mode) if(GET_MODE_SIZE (mode) == UNITS_PER_FP_WORD) return 1; - if (TARGET_VSX_SMALL_INTEGER) - { - if (mode == SImode) - return 1; + if (TARGET_P8_VECTOR && (mode == SImode)) + return 1; - if (TARGET_P9_VECTOR && (mode == HImode || mode == QImode)) - return 1; - } + if (TARGET_P9_VECTOR && (mode == QImode || mode == HImode)) + return 1; } if (PAIRED_SIMD_REGNO_P (regno) && TARGET_PAIRED_FLOAT @@ -3291,7 +3288,7 @@ rs6000_init_hard_regno_mode_ok (bool global_init_p) rs6000_constraints[RS6000_CONSTRAINT_we] = VSX_REGS; /* Support small integers in VSX registers. */ - if (TARGET_VSX_SMALL_INTEGER) + if (TARGET_P8_VECTOR) { rs6000_constraints[RS6000_CONSTRAINT_wH] = ALTIVEC_REGS; rs6000_constraints[RS6000_CONSTRAINT_wI] = FLOAT_REGS; @@ -3446,18 +3443,14 @@ rs6000_init_hard_regno_mode_ok (bool global_init_p) } } - if (TARGET_VSX) - { - reg_addr[DFmode].scalar_in_vmx_p = true; - reg_addr[DImode].scalar_in_vmx_p = true; - } + reg_addr[DFmode].scalar_in_vmx_p = true; + reg_addr[DImode].scalar_in_vmx_p = true; if (TARGET_P8_VECTOR) - reg_addr[SFmode].scalar_in_vmx_p = true; - - if (TARGET_VSX_SMALL_INTEGER) { + reg_addr[SFmode].scalar_in_vmx_p = true; reg_addr[SImode].scalar_in_vmx_p = true; + if (TARGET_P9_VECTOR) { reg_addr[HImode].scalar_in_vmx_p = true; @@ -4632,20 +4625,6 @@ rs6000_option_override_internal (bool global_init_p) } } - /* Check whether we should allow small integers into VSX registers. We - require direct move to prevent the register allocator from having to move - variables through memory to do moves. SImode can be used on ISA 2.07, - while HImode and QImode require ISA 3.0. */ - if (TARGET_VSX_SMALL_INTEGER - && (!TARGET_DIRECT_MOVE || !TARGET_P8_VECTOR)) - { - if (rs6000_isa_flags_explicit & OPTION_MASK_VSX_SMALL_INTEGER) - error ("-mvsx-small-integer requires -mpower8-vector, " - "and -mdirect-move"); - - rs6000_isa_flags &= ~OPTION_MASK_VSX_SMALL_INTEGER; - } - /* Set long double size before the IEEE 128-bit tests. */ if (!global_options_set.x_rs6000_long_double_type_size) { @@ -7338,7 +7317,7 @@ rs6000_expand_vector_set (rtx target, rtx val, int elt) else if (mode == V2DImode) insn = gen_vsx_set_v2di (target, target, val, elt_rtx); - else if (TARGET_P9_VECTOR && TARGET_VSX_SMALL_INTEGER && TARGET_POWERPC64) + else if (TARGET_P9_VECTOR && TARGET_POWERPC64) { if (mode == V4SImode) insn = gen_vsx_set_v4si_p9 (target, target, val, elt_rtx); @@ -19713,7 +19692,7 @@ rs6000_secondary_reload_simple_move (enum rs6000_reg_type to_type, } /* ISA 2.07: MTVSRWZ or MFVSRWZ. */ - if (TARGET_VSX_SMALL_INTEGER) + if (TARGET_P8_VECTOR) { if (mode == SImode) return true; @@ -20547,7 +20526,6 @@ rs6000_preferred_reload_class (rtx x, enum reg_class rclass) /* ISA 3.0 can load -128..127 using the XXSPLTIB instruction and a sign extend in the Altivec registers. */ if (IN_RANGE (value, -128, 127) && TARGET_P9_VECTOR - && TARGET_VSX_SMALL_INTEGER && (rclass == ALTIVEC_REGS || rclass == VSX_REGS)) return ALTIVEC_REGS; } @@ -36255,7 +36233,6 @@ static struct rs6000_opt_mask const rs6000_opt_masks[] = { "toc-fusion", OPTION_MASK_TOC_FUSION, false, true }, { "update", OPTION_MASK_NO_UPDATE, true , true }, { "vsx", OPTION_MASK_VSX, false, true }, - { "vsx-small-integer", OPTION_MASK_VSX_SMALL_INTEGER, false, true }, { "vsx-timode", OPTION_MASK_VSX_TIMODE, false, true }, #ifdef OPTION_MASK_64BIT #if TARGET_AIX_OS diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 8009178ea7e..9eec9a479f5 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -1004,8 +1004,7 @@ (define_split [(set (match_operand:DI 0 "altivec_register_operand") (sign_extend:DI (match_operand:SI 1 "altivec_register_operand")))] - "TARGET_VSX_SMALL_INTEGER && TARGET_P8_VECTOR && !TARGET_P9_VECTOR - && reload_completed" + "TARGET_P8_VECTOR && !TARGET_P9_VECTOR && reload_completed" [(const_int 0)] { rtx dest = operands[0]; @@ -5161,7 +5160,7 @@ operands[1] = rs6000_address_for_fpconvert (operands[1]); if (GET_CODE (operands[2]) == SCRATCH) operands[2] = gen_reg_rtx (DImode); - if (TARGET_VSX_SMALL_INTEGER) + if (TARGET_P8_VECTOR) emit_insn (gen_extendsidi2 (operands[2], operands[1])); else emit_insn (gen_lfiwax (operands[2], operands[1])); @@ -5238,7 +5237,7 @@ operands[1] = rs6000_address_for_fpconvert (operands[1]); if (GET_CODE (operands[2]) == SCRATCH) operands[2] = gen_reg_rtx (DImode); - if (TARGET_VSX_SMALL_INTEGER) + if (TARGET_P8_VECTOR) emit_insn (gen_zero_extendsidi2 (operands[2], operands[1])); else emit_insn (gen_lfiwzx (operands[2], operands[1])); @@ -5423,8 +5422,7 @@ (clobber (match_scratch:DI 2)) (clobber (match_scratch:DI 3)) (clobber (match_scratch: 4))])] - "TARGET_P9_VECTOR && TARGET_DIRECT_MOVE && TARGET_POWERPC64 - && TARGET_VSX_SMALL_INTEGER" + "TARGET_P9_VECTOR && TARGET_DIRECT_MOVE && TARGET_POWERPC64" { if (MEM_P (operands[1])) operands[1] = rs6000_address_for_fpconvert (operands[1]); @@ -5437,8 +5435,7 @@ (clobber (match_scratch:DI 2 "=wK,wi,wK")) (clobber (match_scratch:DI 3 "=X,r,X")) (clobber (match_scratch: 4 "=X,X,wK"))] - "TARGET_P9_VECTOR && TARGET_DIRECT_MOVE && TARGET_POWERPC64 - && TARGET_VSX_SMALL_INTEGER" + "TARGET_P9_VECTOR && TARGET_DIRECT_MOVE && TARGET_POWERPC64" "#" "&& reload_completed" [(const_int 0)] @@ -5477,8 +5474,7 @@ (match_operand:QHI 1 "input_operand" ""))) (clobber (match_scratch:DI 2 "")) (clobber (match_scratch:DI 3 ""))])] - "TARGET_P9_VECTOR && TARGET_DIRECT_MOVE && TARGET_POWERPC64 - && TARGET_VSX_SMALL_INTEGER" + "TARGET_P9_VECTOR && TARGET_DIRECT_MOVE && TARGET_POWERPC64" { if (MEM_P (operands[1])) operands[1] = rs6000_address_for_fpconvert (operands[1]); @@ -5490,8 +5486,7 @@ (match_operand:QHI 1 "reg_or_indexed_operand" "wK,r,Z"))) (clobber (match_scratch:DI 2 "=wK,wi,wJwK")) (clobber (match_scratch:DI 3 "=X,r,X"))] - "TARGET_P9_VECTOR && TARGET_DIRECT_MOVE && TARGET_POWERPC64 - && TARGET_VSX_SMALL_INTEGER" + "TARGET_P9_VECTOR && TARGET_DIRECT_MOVE && TARGET_POWERPC64" "#" "&& reload_completed" [(const_int 0)] @@ -5524,7 +5519,7 @@ "TARGET_HARD_FLOAT && " " { - if (!TARGET_VSX_SMALL_INTEGER) + if (!TARGET_P8_VECTOR) { rtx src = force_reg (mode, operands[1]); @@ -5551,7 +5546,7 @@ "TARGET_HARD_FLOAT && TARGET_DOUBLE_FLOAT && (mode != SFmode || TARGET_SINGLE_FLOAT) && TARGET_STFIWX && can_create_pseudo_p () - && !TARGET_VSX_SMALL_INTEGER" + && !TARGET_P8_VECTOR" "#" "" [(pc)] @@ -5592,7 +5587,7 @@ (fix:SI (match_operand:SFDF 1 "gpc_reg_operand" "d,"))) (clobber (match_operand:DI 2 "gpc_reg_operand" "=1,d")) (clobber (match_operand:DI 3 "offsettable_mem_operand" "=o,o"))] - "TARGET_HARD_FLOAT && TARGET_DOUBLE_FLOAT && !TARGET_VSX_SMALL_INTEGER" + "TARGET_HARD_FLOAT && TARGET_DOUBLE_FLOAT && !TARGET_P8_VECTOR" "#" "" [(pc)] @@ -5629,8 +5624,7 @@ [(parallel [(set (match_operand: 0 "nonimmediate_operand") (fix:QHI (match_operand:SFDF 1 "gpc_reg_operand"))) (clobber (match_scratch:DI 2))])] - "TARGET_P9_VECTOR && TARGET_DIRECT_MOVE_64BIT - && TARGET_VSX_SMALL_INTEGER" + "TARGET_P9_VECTOR && TARGET_DIRECT_MOVE_64BIT" { if (MEM_P (operands[0])) operands[0] = rs6000_address_for_fpconvert (operands[0]); @@ -5641,8 +5635,7 @@ (fix:QHI (match_operand:SFDF 1 "gpc_reg_operand" ","))) (clobber (match_scratch:DI 2 "=X,wi"))] - "TARGET_P9_VECTOR && TARGET_DIRECT_MOVE_64BIT - && TARGET_VSX_SMALL_INTEGER" + "TARGET_P9_VECTOR && TARGET_DIRECT_MOVE_64BIT" "#" "&& reload_completed" [(const_int 0)] @@ -5672,7 +5665,7 @@ "TARGET_HARD_FLOAT && && TARGET_FCTIWUZ && TARGET_STFIWX" " { - if (!TARGET_VSX_SMALL_INTEGER) + if (!TARGET_P8_VECTOR) { emit_insn (gen_fixuns_truncsi2_stfiwx (operands[0], operands[1])); DONE; @@ -5685,7 +5678,7 @@ (clobber (match_scratch:DI 2 "=d"))] "TARGET_HARD_FLOAT && && TARGET_FCTIWUZ && TARGET_STFIWX && can_create_pseudo_p () - && !TARGET_VSX_SMALL_INTEGER" + && !TARGET_P8_VECTOR" "#" "" [(pc)] @@ -5734,8 +5727,7 @@ [(parallel [(set (match_operand: 0 "nonimmediate_operand") (unsigned_fix:QHI (match_operand:SFDF 1 "gpc_reg_operand"))) (clobber (match_scratch:DI 2))])] - "TARGET_P9_VECTOR && TARGET_DIRECT_MOVE_64BIT - && TARGET_VSX_SMALL_INTEGER" + "TARGET_P9_VECTOR && TARGET_DIRECT_MOVE_64BIT" { if (MEM_P (operands[0])) operands[0] = rs6000_address_for_fpconvert (operands[0]); @@ -5746,8 +5738,7 @@ (unsigned_fix:QHI (match_operand:SFDF 1 "gpc_reg_operand" ","))) (clobber (match_scratch:DI 2 "=X,wi"))] - "TARGET_P9_VECTOR && TARGET_DIRECT_MOVE_64BIT - && TARGET_VSX_SMALL_INTEGER" + "TARGET_P9_VECTOR && TARGET_DIRECT_MOVE_64BIT" "#" "&& reload_completed" [(const_int 0)] @@ -5777,7 +5768,7 @@ (define_insn "*fctiwz__smallint" [(set (match_operand:SI 0 "vsx_register_operand" "=d,wi") (any_fix:SI (match_operand:SFDF 1 "gpc_reg_operand" ",")))] - "TARGET_HARD_FLOAT && TARGET_DOUBLE_FLOAT && TARGET_VSX_SMALL_INTEGER" + "TARGET_HARD_FLOAT && TARGET_DOUBLE_FLOAT && TARGET_P8_VECTOR" "@ fctiwz %0,%1 xscvdpxws %x0,%x1" @@ -5789,7 +5780,7 @@ [(set (match_operand:SI 0 "memory_operand" "=Z") (any_fix:SI (match_operand:SFDF 1 "gpc_reg_operand" "wa"))) (clobber (match_scratch:SI 2 "=wa"))] - "TARGET_HARD_FLOAT && TARGET_DOUBLE_FLOAT && TARGET_VSX_SMALL_INTEGER" + "TARGET_HARD_FLOAT && TARGET_DOUBLE_FLOAT && TARGET_P8_VECTOR" "#" "&& reload_completed" [(set (match_dup 2) @@ -6959,7 +6950,7 @@ (define_split [(set (match_operand:DI 0 "altivec_register_operand") (match_operand:DI 1 "xxspltib_constant_split"))] - "TARGET_VSX_SMALL_INTEGER && TARGET_P9_VECTOR && reload_completed" + "TARGET_P9_VECTOR && reload_completed" [(const_int 0)] { rtx op0 = operands[0]; diff --git a/gcc/config/rs6000/rs6000.opt b/gcc/config/rs6000/rs6000.opt index 9a36844ee8b..1fa65a0551f 100644 --- a/gcc/config/rs6000/rs6000.opt +++ b/gcc/config/rs6000/rs6000.opt @@ -606,10 +606,6 @@ mfloat128-convert Target Undocumented Mask(FLOAT128_CVT) Var(rs6000_isa_flags) Enable default conversions between __float128 & long double. -mvsx-small-integer -Target Report Mask(VSX_SMALL_INTEGER) Var(rs6000_isa_flags) -Enable small integers to be in VSX registers. - mstack-protector-guard= Target RejectNegative Joined Enum(stack_protector_guard) Var(rs6000_stack_protector_guard) Init(SSP_TLS) Use given stack-protector guard. diff --git a/gcc/config/rs6000/vsx.md b/gcc/config/rs6000/vsx.md index 1036c7e72a0..e6b98e0a335 100644 --- a/gcc/config/rs6000/vsx.md +++ b/gcc/config/rs6000/vsx.md @@ -2938,7 +2938,7 @@ "VECTOR_MEM_VSX_P (mode) && TARGET_DIRECT_MOVE_64BIT" { /* If we have ISA 3.0, we can do a xxextractuw/vextractu{b,h}. */ - if (TARGET_VSX_SMALL_INTEGER && TARGET_P9_VECTOR) + if (TARGET_P9_VECTOR) { emit_insn (gen_vsx_extract__p9 (operands[0], operands[1], operands[2])); @@ -2952,8 +2952,7 @@ (match_operand:VSX_EXTRACT_I 1 "gpc_reg_operand" "wK,") (parallel [(match_operand:QI 2 "" "n,n")]))) (clobber (match_scratch:SI 3 "=r,X"))] - "VECTOR_MEM_VSX_P (mode) && TARGET_VEXTRACTUB - && TARGET_VSX_SMALL_INTEGER" + "VECTOR_MEM_VSX_P (mode) && TARGET_VEXTRACTUB" { if (which_alternative == 0) return "#"; @@ -2983,8 +2982,7 @@ (match_operand:VSX_EXTRACT_I 1 "altivec_register_operand") (parallel [(match_operand:QI 2 "const_int_operand")]))) (clobber (match_operand:SI 3 "int_reg_operand"))] - "VECTOR_MEM_VSX_P (mode) && TARGET_VEXTRACTUB - && TARGET_VSX_SMALL_INTEGER && reload_completed" + "VECTOR_MEM_VSX_P (mode) && TARGET_VEXTRACTUB && reload_completed" [(const_int 0)] { rtx op0_si = gen_rtx_REG (SImode, REGNO (operands[0])); @@ -3009,8 +3007,7 @@ (match_operand:VSX_EXTRACT_I 1 "gpc_reg_operand" "wK,") (parallel [(match_operand:QI 2 "const_int_operand" "n,n")])))) (clobber (match_scratch:SI 3 "=r,X"))] - "VECTOR_MEM_VSX_P (mode) && TARGET_VEXTRACTUB - && TARGET_VSX_SMALL_INTEGER" + "VECTOR_MEM_VSX_P (mode) && TARGET_VEXTRACTUB" "#" "&& reload_completed" [(parallel [(set (match_dup 4) @@ -3030,8 +3027,7 @@ (parallel [(match_operand:QI 2 "const_int_operand" "n,n")]))) (clobber (match_scratch: 3 "=,&r")) (clobber (match_scratch:SI 4 "=X,&r"))] - "VECTOR_MEM_VSX_P (mode) && TARGET_VEXTRACTUB - && TARGET_VSX_SMALL_INTEGER" + "VECTOR_MEM_VSX_P (mode) && TARGET_VEXTRACTUB" "#" "&& reload_completed" [(parallel [(set (match_dup 3) @@ -3048,8 +3044,7 @@ (match_operand:V4SI 1 "gpc_reg_operand" "wJv,wJv,wJv") (parallel [(match_operand:QI 2 "const_0_to_3_operand" "n,n,n")]))) (clobber (match_scratch:V4SI 3 "=wJv,wJv,wJv"))] - "VECTOR_MEM_VSX_P (V4SImode) && TARGET_DIRECT_MOVE_64BIT - && (!TARGET_P9_VECTOR || !TARGET_VSX_SMALL_INTEGER)" + "VECTOR_MEM_VSX_P (V4SImode) && TARGET_DIRECT_MOVE_64BIT && !TARGET_P9_VECTOR" "#" "&& reload_completed" [(const_int 0)] @@ -3067,15 +3062,7 @@ instruction. */ value = INTVAL (element); if (value != 1) - { - if (TARGET_P9_VECTOR && TARGET_VSX_SMALL_INTEGER) - { - rtx si_tmp = gen_rtx_REG (SImode, REGNO (vec_tmp)); - emit_insn (gen_vsx_extract_v4si_p9 (si_tmp,src, element)); - } - else - emit_insn (gen_altivec_vspltw_direct (vec_tmp, src, element)); - } + emit_insn (gen_altivec_vspltw_direct (vec_tmp, src, element)); else vec_tmp = src; @@ -3084,13 +3071,13 @@ if (can_create_pseudo_p ()) dest = rs6000_address_for_fpconvert (dest); - if (TARGET_VSX_SMALL_INTEGER) + if (TARGET_P8_VECTOR) emit_move_insn (dest, gen_rtx_REG (SImode, REGNO (vec_tmp))); else emit_insn (gen_stfiwx (dest, gen_rtx_REG (DImode, REGNO (vec_tmp)))); } - else if (TARGET_VSX_SMALL_INTEGER) + else if (TARGET_P8_VECTOR) emit_move_insn (dest, gen_rtx_REG (SImode, REGNO (vec_tmp))); else emit_move_insn (gen_rtx_REG (DImode, REGNO (dest)), @@ -3108,7 +3095,7 @@ (parallel [(match_operand:QI 2 "" "n")]))) (clobber (match_scratch:VSX_EXTRACT_I2 3 "=v"))] "VECTOR_MEM_VSX_P (mode) && TARGET_DIRECT_MOVE_64BIT - && (!TARGET_P9_VECTOR || !TARGET_VSX_SMALL_INTEGER)" + && !TARGET_P9_VECTOR" "#" "&& reload_completed" [(const_int 0)] @@ -3319,7 +3306,7 @@ (parallel [(match_operand:QI 2 "const_int_operand" "n")])))) (clobber (match_scratch: 3 "=v"))] "VECTOR_MEM_VSX_P (mode) && TARGET_DIRECT_MOVE_64BIT - && TARGET_P9_VECTOR && TARGET_VSX_SMALL_INTEGER" + && TARGET_P9_VECTOR" "#" "&& reload_completed" [(parallel [(set (match_dup 3) @@ -3343,7 +3330,7 @@ (parallel [(match_operand:QI 2 "const_int_operand" "n")])))) (clobber (match_scratch: 3 "=v"))] "VECTOR_MEM_VSX_P (mode) && TARGET_DIRECT_MOVE_64BIT - && TARGET_P9_VECTOR && TARGET_VSX_SMALL_INTEGER" + && TARGET_P9_VECTOR" "#" "&& reload_completed" [(parallel [(set (match_dup 3) @@ -3365,8 +3352,7 @@ (match_operand: 2 "gpc_reg_operand" "") (match_operand:QI 3 "" "n")] UNSPEC_VSX_SET))] - "VECTOR_MEM_VSX_P (mode) && TARGET_P9_VECTOR && TARGET_VSX_SMALL_INTEGER - && TARGET_POWERPC64" + "VECTOR_MEM_VSX_P (mode) && TARGET_P9_VECTOR && TARGET_POWERPC64" { int ele = INTVAL (operands[3]); int nunits = GET_MODE_NUNITS (mode); @@ -3390,8 +3376,7 @@ (match_operand:QI 3 "const_0_to_3_operand" "n")] UNSPEC_VSX_SET)) (clobber (match_scratch:SI 4 "=&wJwK"))] - "VECTOR_MEM_VSX_P (V4SFmode) && TARGET_P9_VECTOR && TARGET_VSX_SMALL_INTEGER - && TARGET_POWERPC64" + "VECTOR_MEM_VSX_P (V4SFmode) && TARGET_P9_VECTOR && TARGET_POWERPC64" "#" "&& reload_completed" [(set (match_dup 5) @@ -3426,8 +3411,7 @@ (match_operand:QI 3 "const_0_to_3_operand" "n")] UNSPEC_VSX_SET)) (clobber (match_scratch:SI 4 "=&wJwK"))] - "VECTOR_MEM_VSX_P (V4SFmode) && TARGET_P9_VECTOR && TARGET_VSX_SMALL_INTEGER - && TARGET_POWERPC64" + "VECTOR_MEM_VSX_P (V4SFmode) && TARGET_P9_VECTOR && TARGET_POWERPC64" "#" "&& reload_completed" [(set (match_dup 4) @@ -3457,8 +3441,7 @@ [(match_operand:QI 3 "const_0_to_3_operand" "n")])) (match_operand:QI 4 "const_0_to_3_operand" "n")] UNSPEC_VSX_SET))] - "VECTOR_MEM_VSX_P (V4SFmode) && TARGET_P9_VECTOR && TARGET_VSX_SMALL_INTEGER - && TARGET_POWERPC64 + "VECTOR_MEM_VSX_P (V4SFmode) && TARGET_P9_VECTOR && TARGET_POWERPC64 && (INTVAL (operands[3]) == (VECTOR_ELT_ORDER_BIG ? 1 : 2))" { int ele = INTVAL (operands[4]); @@ -3486,7 +3469,7 @@ UNSPEC_VSX_SET)) (clobber (match_scratch:SI 5 "=&wJwK"))] "VECTOR_MEM_VSX_P (V4SFmode) && VECTOR_MEM_VSX_P (V4SImode) - && TARGET_P9_VECTOR && TARGET_VSX_SMALL_INTEGER && TARGET_POWERPC64 + && TARGET_P9_VECTOR && TARGET_POWERPC64 && (INTVAL (operands[3]) != (VECTOR_ELT_ORDER_BIG ? 1 : 2))" "#" "&& 1" diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 39af41e5aa2..228b885dba9 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,16 @@ +2017-07-25 Michael Meissner + + * gcc.target/powerpc/vsx-himode.c: Delete -mvsx-small-integer + option. + * gcc.target/powerpc/vsx-himode2.c: Likewise. + * gcc.target/powerpc/vsx-himode3.c: Likewise. + * gcc.target/powerpc/vsx-qimode.c: Likewise. + * gcc.target/powerpc/vsx-qimode2.c: Likewise. + * gcc.target/powerpc/vsx-qimode3.c: Likewise. + * gcc.target/powerpc/vsx-simode.c: Likewise. + * gcc.target/powerpc/vsx-simode2.c: Likewise. + * gcc.target/powerpc/vsx-simode3.c: Likewise. + 2017-07-26 Paolo Carlini PR c++/71570 diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-himode.c b/gcc/testsuite/gcc.target/powerpc/vsx-himode.c index 8f710e5c5bd..2a4e610de72 100644 --- a/gcc/testsuite/gcc.target/powerpc/vsx-himode.c +++ b/gcc/testsuite/gcc.target/powerpc/vsx-himode.c @@ -2,7 +2,7 @@ /* { dg-skip-if "" { powerpc*-*-darwin* } } */ /* { dg-require-effective-target powerpc_p9vector_ok } */ /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */ -/* { dg-options "-mcpu=power9 -O2 -mvsx-small-integer" } */ +/* { dg-options "-mcpu=power9 -O2" } */ double load_asm_d_constraint (short *p) { diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-himode2.c b/gcc/testsuite/gcc.target/powerpc/vsx-himode2.c index e6f26a8e014..6ee08cf109a 100644 --- a/gcc/testsuite/gcc.target/powerpc/vsx-himode2.c +++ b/gcc/testsuite/gcc.target/powerpc/vsx-himode2.c @@ -2,7 +2,7 @@ /* { dg-skip-if "" { powerpc*-*-darwin* } } */ /* { dg-require-effective-target powerpc_p9vector_ok } */ /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */ -/* { dg-options "-mcpu=power9 -O2 -mvsx-small-integer" } */ +/* { dg-options "-mcpu=power9 -O2" } */ unsigned int foo (unsigned short u) { diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-himode3.c b/gcc/testsuite/gcc.target/powerpc/vsx-himode3.c index 3c0e66d14ca..972be677dd6 100644 --- a/gcc/testsuite/gcc.target/powerpc/vsx-himode3.c +++ b/gcc/testsuite/gcc.target/powerpc/vsx-himode3.c @@ -2,7 +2,7 @@ /* { dg-skip-if "" { powerpc*-*-darwin* } } */ /* { dg-require-effective-target powerpc_p9vector_ok } */ /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */ -/* { dg-options "-mcpu=power9 -O2 -mvsx-small-integer" } */ +/* { dg-options "-mcpu=power9 -O2" } */ double load_asm_v_constraint (short *p) { diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-qimode.c b/gcc/testsuite/gcc.target/powerpc/vsx-qimode.c index a252457f314..1c224cb1b61 100644 --- a/gcc/testsuite/gcc.target/powerpc/vsx-qimode.c +++ b/gcc/testsuite/gcc.target/powerpc/vsx-qimode.c @@ -2,7 +2,7 @@ /* { dg-skip-if "" { powerpc*-*-darwin* } } */ /* { dg-require-effective-target powerpc_p9vector_ok } */ /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */ -/* { dg-options "-mcpu=power9 -O2 -mvsx-small-integer" } */ +/* { dg-options "-mcpu=power9 -O2" } */ double load_asm_d_constraint (signed char *p) { diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-qimode2.c b/gcc/testsuite/gcc.target/powerpc/vsx-qimode2.c index d321970d0ac..478c9da3051 100644 --- a/gcc/testsuite/gcc.target/powerpc/vsx-qimode2.c +++ b/gcc/testsuite/gcc.target/powerpc/vsx-qimode2.c @@ -2,7 +2,7 @@ /* { dg-skip-if "" { powerpc*-*-darwin* } } */ /* { dg-require-effective-target powerpc_p9vector_ok } */ /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */ -/* { dg-options "-mcpu=power9 -O2 -mvsx-small-integer" } */ +/* { dg-options "-mcpu=power9 -O2" } */ unsigned int foo (unsigned char u) { diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-qimode3.c b/gcc/testsuite/gcc.target/powerpc/vsx-qimode3.c index 50142e8d86d..6537d8b80a0 100644 --- a/gcc/testsuite/gcc.target/powerpc/vsx-qimode3.c +++ b/gcc/testsuite/gcc.target/powerpc/vsx-qimode3.c @@ -2,7 +2,7 @@ /* { dg-skip-if "" { powerpc*-*-darwin* } } */ /* { dg-require-effective-target powerpc_p9vector_ok } */ /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */ -/* { dg-options "-mcpu=power9 -O2 -mvsx-small-integer" } */ +/* { dg-options "-mcpu=power9 -O2" } */ double load_asm_v_constraint (signed char *p) { diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-simode.c b/gcc/testsuite/gcc.target/powerpc/vsx-simode.c index 91d55bb8791..77049008845 100644 --- a/gcc/testsuite/gcc.target/powerpc/vsx-simode.c +++ b/gcc/testsuite/gcc.target/powerpc/vsx-simode.c @@ -2,7 +2,7 @@ /* { dg-skip-if "" { powerpc*-*-darwin* } } */ /* { dg-require-effective-target powerpc_p8vector_ok } */ /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ -/* { dg-options "-mcpu=power8 -O2 -mvsx-small-integer" } */ +/* { dg-options "-mcpu=power8 -O2" } */ double load_asm_d_constraint (int *p) { diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-simode2.c b/gcc/testsuite/gcc.target/powerpc/vsx-simode2.c index 56793a16222..92053d9ac35 100644 --- a/gcc/testsuite/gcc.target/powerpc/vsx-simode2.c +++ b/gcc/testsuite/gcc.target/powerpc/vsx-simode2.c @@ -2,7 +2,7 @@ /* { dg-skip-if "" { powerpc*-*-darwin* } } */ /* { dg-require-effective-target powerpc_p8vector_ok } */ /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ -/* { dg-options "-mcpu=power8 -O2 -mvsx-small-integer" } */ +/* { dg-options "-mcpu=power8 -O2" } */ unsigned int foo (unsigned int u) { diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-simode3.c b/gcc/testsuite/gcc.target/powerpc/vsx-simode3.c index a35e6db0b79..62f5ab46c04 100644 --- a/gcc/testsuite/gcc.target/powerpc/vsx-simode3.c +++ b/gcc/testsuite/gcc.target/powerpc/vsx-simode3.c @@ -2,7 +2,7 @@ /* { dg-skip-if "" { powerpc*-*-darwin* } } */ /* { dg-require-effective-target powerpc_p8vector_ok } */ /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ -/* { dg-options "-mcpu=power8 -O2 -mvsx-small-integer" } */ +/* { dg-options "-mcpu=power8 -O2" } */ double load_asm_v_constraint (int *p) { -- 2.30.2