Commit f62ce24f by Alexander Ivchenko Committed by Kirill Yukhin

sse.md (V_512): New.

        * config/i386/sse.md (V_512): New.
        (VI_512): Ditto.
        (vcond<V_512:mode><VF_512:mode>): Ditto.
        (vcond<V_512:mode><VI_512:mode>): Ditto.
        (vcondu<V_512:mode><VI_512:mode>): Ditto.


Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
Co-Authored-By: Anna Tikhonova <anna.tikhonova@intel.com>
Co-Authored-By: Ilya Tocar <ilya.tocar@intel.com>
Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com>
Co-Authored-By: Kirill Yukhin <kirill.yukhin@intel.com>
Co-Authored-By: Maxim Kuznetsov <maxim.kuznetsov@intel.com>
Co-Authored-By: Michael Zolotukhin <michael.v.zolotukhin@intel.com>
Co-Authored-By: Sergey Lega <sergey.s.lega@intel.com>

From-SVN: r203440
parent 558d9f79
...@@ -8,6 +8,22 @@ ...@@ -8,6 +8,22 @@
Kirill Yukhin <kirill.yukhin@intel.com> Kirill Yukhin <kirill.yukhin@intel.com>
Michael Zolotukhin <michael.v.zolotukhin@intel.com> Michael Zolotukhin <michael.v.zolotukhin@intel.com>
* config/i386/sse.md (V_512): New.
(VI_512): Ditto.
(vcond<V_512:mode><VF_512:mode>): Ditto.
(vcond<V_512:mode><VI_512:mode>): Ditto.
(vcondu<V_512:mode><VI_512:mode>): Ditto.
2013-10-11 Alexander Ivchenko <alexander.ivchenko@intel.com>
Maxim Kuznetsov <maxim.kuznetsov@intel.com>
Sergey Lega <sergey.s.lega@intel.com>
Anna Tikhonova <anna.tikhonova@intel.com>
Ilya Tocar <ilya.tocar@intel.com>
Andrey Turetskiy <andrey.turetskiy@intel.com>
Ilya Verbin <ilya.verbin@intel.com>
Kirill Yukhin <kirill.yukhin@intel.com>
Michael Zolotukhin <michael.v.zolotukhin@intel.com>
* config/i386/i386.c (ix86_rtx_costs): Enable fma for TARGET_AVX512F. * config/i386/i386.c (ix86_rtx_costs): Enable fma for TARGET_AVX512F.
* config/i386/sse.md (FMAMODEM): Changed modes and conditions. * config/i386/sse.md (FMAMODEM): Changed modes and conditions.
(FMAMODE): Ditto. (FMAMODE): Ditto.
......
...@@ -122,6 +122,9 @@ ...@@ -122,6 +122,9 @@
(define_mode_iterator V_256 (define_mode_iterator V_256
[V32QI V16HI V8SI V4DI V8SF V4DF]) [V32QI V16HI V8SI V4DI V8SF V4DF])
;; All 512bit vector modes
(define_mode_iterator V_512 [V64QI V32HI V16SI V8DI V16SF V8DF])
;; All 256bit and 512bit vector modes ;; All 256bit and 512bit vector modes
(define_mode_iterator V_256_512 (define_mode_iterator V_256_512
[V32QI V16HI V8SI V4DI V8SF V4DF [V32QI V16HI V8SI V4DI V8SF V4DF
...@@ -337,7 +340,10 @@ ...@@ -337,7 +340,10 @@
;; All 256bit vector integer modes ;; All 256bit vector integer modes
(define_mode_iterator VI_256 [V32QI V16HI V8SI V4DI]) (define_mode_iterator VI_256 [V32QI V16HI V8SI V4DI])
;; Random 128bit vector integer mode combinations ;; All 512bit vector integer modes
(define_mode_iterator VI_512 [V64QI V32HI V16SI V8DI])
;; Various 128bit vector integer mode combinations
(define_mode_iterator VI12_128 [V16QI V8HI]) (define_mode_iterator VI12_128 [V16QI V8HI])
(define_mode_iterator VI14_128 [V16QI V4SI]) (define_mode_iterator VI14_128 [V16QI V4SI])
(define_mode_iterator VI124_128 [V16QI V8HI V4SI]) (define_mode_iterator VI124_128 [V16QI V8HI V4SI])
...@@ -1853,6 +1859,23 @@ ...@@ -1853,6 +1859,23 @@
(const_string "0"))) (const_string "0")))
(set_attr "mode" "<MODE>")]) (set_attr "mode" "<MODE>")])
(define_expand "vcond<V_512:mode><VF_512:mode>"
[(set (match_operand:V_512 0 "register_operand")
(if_then_else:V_512
(match_operator 3 ""
[(match_operand:VF_512 4 "nonimmediate_operand")
(match_operand:VF_512 5 "nonimmediate_operand")])
(match_operand:V_512 1 "general_operand")
(match_operand:V_512 2 "general_operand")))]
"TARGET_AVX512F
&& (GET_MODE_NUNITS (<V_512:MODE>mode)
== GET_MODE_NUNITS (<VF_512:MODE>mode))"
{
bool ok = ix86_expand_fp_vcond (operands);
gcc_assert (ok);
DONE;
})
(define_expand "vcond<V_256:mode><VF_256:mode>" (define_expand "vcond<V_256:mode><VF_256:mode>"
[(set (match_operand:V_256 0 "register_operand") [(set (match_operand:V_256 0 "register_operand")
(if_then_else:V_256 (if_then_else:V_256
...@@ -6461,6 +6484,23 @@ ...@@ -6461,6 +6484,23 @@
(set_attr "prefix" "orig,vex") (set_attr "prefix" "orig,vex")
(set_attr "mode" "TI")]) (set_attr "mode" "TI")])
(define_expand "vcond<V_512:mode><VI_512:mode>"
[(set (match_operand:V_512 0 "register_operand")
(if_then_else:V_512
(match_operator 3 ""
[(match_operand:VI_512 4 "nonimmediate_operand")
(match_operand:VI_512 5 "general_operand")])
(match_operand:V_512 1)
(match_operand:V_512 2)))]
"TARGET_AVX512F
&& (GET_MODE_NUNITS (<V_512:MODE>mode)
== GET_MODE_NUNITS (<VI_512:MODE>mode))"
{
bool ok = ix86_expand_int_vcond (operands);
gcc_assert (ok);
DONE;
})
(define_expand "vcond<V_256:mode><VI_256:mode>" (define_expand "vcond<V_256:mode><VI_256:mode>"
[(set (match_operand:V_256 0 "register_operand") [(set (match_operand:V_256 0 "register_operand")
(if_then_else:V_256 (if_then_else:V_256
...@@ -6510,6 +6550,23 @@ ...@@ -6510,6 +6550,23 @@
DONE; DONE;
}) })
(define_expand "vcondu<V_512:mode><VI_512:mode>"
[(set (match_operand:V_512 0 "register_operand")
(if_then_else:V_512
(match_operator 3 ""
[(match_operand:VI_512 4 "nonimmediate_operand")
(match_operand:VI_512 5 "nonimmediate_operand")])
(match_operand:V_512 1 "general_operand")
(match_operand:V_512 2 "general_operand")))]
"TARGET_AVX512F
&& (GET_MODE_NUNITS (<V_512:MODE>mode)
== GET_MODE_NUNITS (<VI_512:MODE>mode))"
{
bool ok = ix86_expand_int_vcond (operands);
gcc_assert (ok);
DONE;
})
(define_expand "vcondu<V_256:mode><VI_256:mode>" (define_expand "vcondu<V_256:mode><VI_256:mode>"
[(set (match_operand:V_256 0 "register_operand") [(set (match_operand:V_256 0 "register_operand")
(if_then_else:V_256 (if_then_else:V_256
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment