diff options
author | Yvan Roux <yvan.roux@linaro.org> | 2016-12-13 16:59:32 +0100 |
---|---|---|
committer | Yvan Roux <yvan.roux@linaro.org> | 2016-12-14 12:04:05 +0100 |
commit | e8d273d737761517a88d6a698545eb330760928f (patch) | |
tree | 14c665211ae6fa1709e956136b0dc1212d4b03d2 /gcc/config/i386/i386.md | |
parent | 97023b02ed0a321f693d8e2aa84ded8e504fb31c (diff) | |
download | gcc-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.md | 21 |
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 |