summaryrefslogtreecommitdiff
path: root/gcc/config/i386/i386.md
diff options
context:
space:
mode:
authorYvan Roux <yvan.roux@linaro.org>2016-12-13 16:59:32 +0100
committerYvan Roux <yvan.roux@linaro.org>2016-12-14 12:04:05 +0100
commite8d273d737761517a88d6a698545eb330760928f (patch)
tree14c665211ae6fa1709e956136b0dc1212d4b03d2 /gcc/config/i386/i386.md
parent97023b02ed0a321f693d8e2aa84ded8e504fb31c (diff)
downloadgcc-e8d273d737761517a88d6a698545eb330760928f.tar.gz
Merge branches/gcc-5-branch rev 243604.
Change-Id: Ibcfb5f95cbf4ef7a6f9d3834be9c07a3c6f89dcc
Diffstat (limited to 'gcc/config/i386/i386.md')
-rw-r--r--gcc/config/i386/i386.md21
1 files changed, 13 insertions, 8 deletions
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 472cc52a030..6c99b0e3987 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -8361,7 +8361,7 @@
[(set (match_operand:HI 0 "nonimmediate_operand" "=r,rm,!k")
(any_or:HI
(match_operand:HI 1 "nonimmediate_operand" "%0,0,k")
- (match_operand:HI 2 "general_operand" "<g>,r<i>,k")))
+ (match_operand:HI 2 "general_operand" "rmn,rn,k")))
(clobber (reg:CC FLAGS_REG))]
"ix86_binary_operator_ok (<CODE>, HImode, operands)"
"@
@@ -8443,7 +8443,10 @@
(clobber (reg:CC FLAGS_REG))]
"TARGET_AVX512F"
{
- if (which_alternative == 1 && <MODE>mode == QImode && TARGET_AVX512DQ)
+ if (which_alternative == 0)
+ return "#";
+
+ if (<MODE>mode == QImode && TARGET_AVX512DQ)
return "kxnorb\t{%2, %1, %0|%0, %1, %2}";
return "kxnorw\t{%2, %1, %0|%0, %1, %2}";
}
@@ -9282,7 +9285,7 @@
"ix86_expand_binary_operator (ASHIFT, <MODE>mode, operands); DONE;")
(define_insn "*ashl<mode>3_doubleword"
- [(set (match_operand:DWI 0 "register_operand" "=&r,r")
+ [(set (match_operand:DWI 0 "register_operand" "=&r,&r")
(ashift:DWI (match_operand:DWI 1 "reg_or_pm1_operand" "n,0")
(match_operand:QI 2 "nonmemory_operand" "<S>c,<S>c")))
(clobber (reg:CC FLAGS_REG))]
@@ -9915,7 +9918,7 @@
(set_attr "mode" "<MODE>")])
(define_insn_and_split "*<shift_insn><mode>3_doubleword"
- [(set (match_operand:DWI 0 "register_operand" "=r")
+ [(set (match_operand:DWI 0 "register_operand" "=&r")
(any_shiftrt:DWI (match_operand:DWI 1 "register_operand" "0")
(match_operand:QI 2 "nonmemory_operand" "<S>c")))
(clobber (reg:CC FLAGS_REG))]
@@ -10480,8 +10483,9 @@
[(set (match_dup 0)
(rotatert:SWI48 (match_dup 1) (match_dup 2)))]
{
- operands[2]
- = GEN_INT (GET_MODE_BITSIZE (<MODE>mode) - INTVAL (operands[2]));
+ int bitsize = GET_MODE_BITSIZE (<MODE>mode);
+
+ operands[2] = GEN_INT ((bitsize - INTVAL (operands[2])) % bitsize);
})
(define_split
@@ -10547,8 +10551,9 @@
[(set (match_dup 0)
(zero_extend:DI (rotatert:SI (match_dup 1) (match_dup 2))))]
{
- operands[2]
- = GEN_INT (GET_MODE_BITSIZE (SImode) - INTVAL (operands[2]));
+ int bitsize = GET_MODE_BITSIZE (SImode);
+
+ operands[2] = GEN_INT ((bitsize - INTVAL (operands[2])) % bitsize);
})
(define_split