aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Krebbel <krebbel@linux.vnet.ibm.com>2016-05-10 09:00:53 +0000
committerAndreas Krebbel <krebbel@gcc.gnu.org>2016-05-10 09:00:53 +0000
commita579871bbcf4d290a5bd44b655ecf5de2ff399bc (patch)
tree9e4060cc9f5d3002477bf29257f4697884839017
parent64ea4e151b40fde37eb2b3190731f03c4a65dcf3 (diff)
downloadgcc-a579871bbcf4d290a5bd44b655ecf5de2ff399bc.zip
gcc-a579871bbcf4d290a5bd44b655ecf5de2ff399bc.tar.gz
gcc-a579871bbcf4d290a5bd44b655ecf5de2ff399bc.tar.bz2
S/390: Disable scalar vector instructions with -mno-vx.
Although the scalar variants of the vector instructions aren't actually vector instructions they are still executed in the vector facility and therefore need to be disabled when disabling the facility with -mno-vx. Fixed with the attached patch. Committed to head, GCC 6, and GCC 5 branches. gcc/ChangeLog: 2016-05-10 Andreas Krebbel <krebbel@linux.vnet.ibm.com> * config/s390/s390.md ("*vec_cmp<insn_cmp>df_cconly") ("*fixuns_truncdfdi2_z13") ("*fixuns_trunc<FP:mode><GPR:mode>2_z196") ("*fix_truncdfdi2_bfp_z13", "*floatunsdidf2_z13") ("*extendsfdf2_z13"): Replace TARGET_Z13 with TARGET_VX. From-SVN: r236067
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config/s390/s390.md12
2 files changed, 14 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2365d85..2093050 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2016-05-10 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
+
+ * config/s390/s390.md ("*vec_cmp<insn_cmp>df_cconly")
+ ("*fixuns_truncdfdi2_z13")
+ ("*fixuns_trunc<FP:mode><GPR:mode>2_z196")
+ ("*fix_truncdfdi2_bfp_z13", "*floatunsdidf2_z13")
+ ("*extendsfdf2_z13"): Replace TARGET_Z13 with TARGET_VX.
+
2016-05-10 Richard Biener <rguenther@suse.de>
PR tree-optimization/70497
diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md
index faaa7f3..caf8ed5 100644
--- a/gcc/config/s390/s390.md
+++ b/gcc/config/s390/s390.md
@@ -1305,7 +1305,7 @@
(compare:VFCMP (match_operand:DF 0 "register_operand" "v")
(match_operand:DF 1 "register_operand" "v")))
(clobber (match_scratch:V2DI 2 "=v"))]
- "TARGET_Z13 && TARGET_HARD_FLOAT"
+ "TARGET_VX && TARGET_HARD_FLOAT"
"wfc<asm_fcmp>dbs\t%v2,%v0,%v1"
[(set_attr "op_type" "VRR")])
@@ -4703,7 +4703,7 @@
(unsigned_fix:DI (match_operand:DF 1 "register_operand" "f,v")))
(unspec:DI [(match_operand:DI 2 "immediate_operand" "K,K")] UNSPEC_ROUND)
(clobber (reg:CC CC_REGNUM))]
- "TARGET_Z13 && TARGET_HARD_FLOAT"
+ "TARGET_VX && TARGET_HARD_FLOAT"
"@
clgdbr\t%0,%h2,%1,0
wclgdb\t%v0,%v1,0,%h2"
@@ -4718,7 +4718,7 @@
(unspec:GPR [(match_operand:GPR 2 "immediate_operand" "K")] UNSPEC_ROUND)
(clobber (reg:CC CC_REGNUM))]
"TARGET_Z196 && TARGET_HARD_FLOAT
- && (!TARGET_Z13 || <GPR:MODE>mode != DImode || <FP:MODE>mode != DFmode)"
+ && (!TARGET_VX || <GPR:MODE>mode != DImode || <FP:MODE>mode != DFmode)"
"cl<GPR:gf><FP:xde><FP:bt>r\t%0,%h2,%1,0"
[(set_attr "op_type" "RRF")
(set_attr "type" "ftoi")])
@@ -4738,7 +4738,7 @@
(fix:DI (match_operand:DF 1 "register_operand" "f,v")))
(unspec:DI [(match_operand:DI 2 "immediate_operand" "K,K")] UNSPEC_ROUND)
(clobber (reg:CC CC_REGNUM))]
- "TARGET_Z13 && TARGET_HARD_FLOAT"
+ "TARGET_VX && TARGET_HARD_FLOAT"
"@
cgdbr\t%0,%h2,%1
wcgdb\t%v0,%v1,0,%h2"
@@ -4846,7 +4846,7 @@
(define_insn "*floatunsdidf2_z13"
[(set (match_operand:DF 0 "register_operand" "=f,v")
(unsigned_float:DF (match_operand:DI 1 "register_operand" "d,v")))]
- "TARGET_Z13 && TARGET_HARD_FLOAT"
+ "TARGET_VX && TARGET_HARD_FLOAT"
"@
cdlgbr\t%0,0,%1,0
wcdlgb\t%v0,%v1,0,0"
@@ -4950,7 +4950,7 @@
(define_insn "*extendsfdf2_z13"
[(set (match_operand:DF 0 "register_operand" "=f,f,v")
(float_extend:DF (match_operand:SF 1 "nonimmediate_operand" "f,R,v")))]
- "TARGET_Z13 && TARGET_HARD_FLOAT"
+ "TARGET_VX && TARGET_HARD_FLOAT"
"@
ldebr\t%0,%1
ldeb\t%0,%1