Mercurial > hg > CbC > CbC_gcc
comparison gcc/config/mips/loongson.md @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children |
comparison
equal
deleted
inserted
replaced
111:04ced10e8804 | 131:84e7813d76e9 |
---|---|
1 ;; Machine description for Loongson-specific patterns, such as | 1 ;; Machine description for Loongson-specific patterns, such as |
2 ;; ST Microelectronics Loongson-2E/2F etc. | 2 ;; ST Microelectronics Loongson-2E/2F etc. |
3 ;; Copyright (C) 2008-2017 Free Software Foundation, Inc. | 3 ;; Copyright (C) 2008-2018 Free Software Foundation, Inc. |
4 ;; Contributed by CodeSourcery. | 4 ;; Contributed by CodeSourcery. |
5 ;; | 5 ;; |
6 ;; This file is part of GCC. | 6 ;; This file is part of GCC. |
7 ;; | 7 ;; |
8 ;; GCC is free software; you can redistribute it and/or modify | 8 ;; GCC is free software; you can redistribute it and/or modify |
379 (match_operand:SI 3 "const_0_to_3_operand" "")] | 379 (match_operand:SI 3 "const_0_to_3_operand" "")] |
380 UNSPEC_LOONGSON_PINSRH))] | 380 UNSPEC_LOONGSON_PINSRH))] |
381 "TARGET_HARD_FLOAT && TARGET_LOONGSON_VECTORS" | 381 "TARGET_HARD_FLOAT && TARGET_LOONGSON_VECTORS" |
382 { | 382 { |
383 rtx ext = gen_reg_rtx (SImode); | 383 rtx ext = gen_reg_rtx (SImode); |
384 emit_move_insn (ext, gen_lowpart (SImode, operands[1])); | 384 emit_move_insn (ext, gen_lowpart (SImode, operands[2])); |
385 operands[1] = ext; | 385 operands[2] = ext; |
386 }) | 386 }) |
387 | 387 |
388 ;; Multiply and add packed integers. | 388 ;; Multiply and add packed integers. |
389 (define_insn "loongson_pmaddhw" | 389 (define_insn "loongson_pmaddhw" |
390 [(set (match_operand:V2SI 0 "register_operand" "=f") | 390 [(set (match_operand:V2SI 0 "register_operand" "=f") |
782 (const_int 4) (const_int 5)])))] | 782 (const_int 4) (const_int 5)])))] |
783 "TARGET_HARD_FLOAT && TARGET_LOONGSON_VECTORS" | 783 "TARGET_HARD_FLOAT && TARGET_LOONGSON_VECTORS" |
784 "punpcklwd\t%0,%1,%2" | 784 "punpcklwd\t%0,%1,%2" |
785 [(set_attr "type" "fcvt")]) | 785 [(set_attr "type" "fcvt")]) |
786 | 786 |
787 (define_expand "vec_perm_const<mode>" | |
788 [(match_operand:VWHB 0 "register_operand" "") | |
789 (match_operand:VWHB 1 "register_operand" "") | |
790 (match_operand:VWHB 2 "register_operand" "") | |
791 (match_operand:VWHB 3 "" "")] | |
792 "TARGET_HARD_FLOAT && TARGET_LOONGSON_VECTORS" | |
793 { | |
794 if (mips_expand_vec_perm_const (operands)) | |
795 DONE; | |
796 else | |
797 FAIL; | |
798 }) | |
799 | |
800 (define_expand "vec_unpacks_lo_<mode>" | 787 (define_expand "vec_unpacks_lo_<mode>" |
801 [(match_operand:<V_stretch_half> 0 "register_operand" "") | 788 [(match_operand:<V_stretch_half> 0 "register_operand" "") |
802 (match_operand:VHB 1 "register_operand" "")] | 789 (match_operand:VHB 1 "register_operand" "")] |
803 "TARGET_HARD_FLOAT && TARGET_LOONGSON_VECTORS" | 790 "TARGET_HARD_FLOAT && TARGET_LOONGSON_VECTORS" |
804 { | 791 { |