Add nds32 vector modes.
authorChung-Ju Wu <jasonwucj@gmail.com>
Fri, 17 Nov 2017 04:36:01 +0000 (04:36 +0000)
committerChung-Ju Wu <jasonwucj@gcc.gnu.org>
Fri, 17 Nov 2017 04:36:01 +0000 (04:36 +0000)
gcc/
* config/nds32/nds32-modes.def: Add vector mode V4QI V2HI V8QI V4HI
V2SI.
* config/nds32/iterators.md: Add vector mode iterators and attributes.

Co-Authored-By: Kito Cheng <kito.cheng@gmail.com>
From-SVN: r254853

gcc/ChangeLog
gcc/config/nds32/iterators.md
gcc/config/nds32/nds32-modes.def

index 2b4bd57d180c2fb6615e33643343b5f3b881f47d..549f9f23a9a61364bc74a60b9be5781fc8409cba 100644 (file)
@@ -1,3 +1,10 @@
+2017-11-17  Chung-Ju Wu  <jasonwucj@gmail.com>
+           Kito Cheng  <kito.cheng@gmail.com>
+
+       * config/nds32/nds32-modes.def: Add vector mode V4QI V2HI V8QI V4HI
+       V2SI.
+       * config/nds32/iterators.md: Add vector mode iterators and attributes.
+
 2017-11-16  Steven Munroe  <munroesj@gcc.gnu.org>
 
        * config/rs6000/mmintrin.h (_mm_add_pi32[_ARCH_PWR]): Correct
index 0a8f5aeb5ce16ca33cf770dce099701ae25377aa..fce5ab66ab669ba7a6e27985970da9a4a5b56e72 100644 (file)
 ;; A list of integer modes that are up to one word long.
 (define_mode_iterator QIHISI [QI HI SI])
 
+;; A list of integer modes for one word and double word.
+(define_mode_iterator SIDI [SI DI])
+
 ;; A list of integer modes that are up to one half-word long.
 (define_mode_iterator QIHI [QI HI])
 
 ;; A list of the modes that are up to double-word long.
 (define_mode_iterator DIDF [DI DF])
 
+;; A list of the modes that are up to one word long vector.
+(define_mode_iterator VQIHI [V4QI V2HI])
+
+;; A list of the modes that are up to one word long vector
+;; and scalar for varies mode.
+(define_mode_iterator VSHI [V2HI HI])
+(define_mode_iterator VSQIHI [V4QI V2HI QI HI])
+(define_mode_iterator VSQIHIDI [V4QI V2HI QI HI DI])
+(define_mode_iterator VQIHIDI [V4QI V2HI DI])
 
 ;;----------------------------------------------------------------------------
 ;; Mode attributes.
 
 (define_mode_attr size [(QI "b") (HI "h") (SI "w")])
 
-(define_mode_attr byte [(QI "1") (HI "2") (SI "4")])
+(define_mode_attr byte [(QI "1") (HI "2") (SI "4") (V4QI "4") (V2HI "4")])
+
+(define_mode_attr bits [(V4QI "8") (QI "8") (V2HI "16") (HI "16") (DI "64")])
 
+(define_mode_attr VELT [(V4QI "QI") (V2HI "HI")])
 
 ;;----------------------------------------------------------------------------
 ;; Code iterators.
index 295a7096704ded12c421a330dc4fa55c50ba1a06..6e76dd2834c7736fcad4fb56ced3464d28eb0d7a 100644 (file)
@@ -18,4 +18,6 @@
    along with GCC; see the file COPYING3.  If not see
    <http://www.gnu.org/licenses/>.  */
 
-/* So far, there is no need to define any modes for nds32 target.  */
+/* Vector modes.  */
+VECTOR_MODES (INT, 4);        /*            V4QI V2HI */
+VECTOR_MODES (INT, 8);        /*            V8QI V4HI V2SI */