diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a7d7cb93c4a..cd1ed6981e3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2010-08-14 Mingjie Xing + + * config/mips/mips.c (CODE_FOR_loongson_pmullh): Define. + * config/mips/loongson.md (UNSPEC_LOONGSON_PMULL): Delete. + (loongson_pmull): Rename to... + (mul3): ...this and use MULT instead of an UNSPEC. + 2010-08-13 Jack Howarth * gcc/configure.ac: Enable -fomit-frame-pointer on darwin diff --git a/gcc/config/mips/loongson.md b/gcc/config/mips/loongson.md index 10703bb7b08..11b197b3780 100644 --- a/gcc/config/mips/loongson.md +++ b/gcc/config/mips/loongson.md @@ -31,7 +31,6 @@ UNSPEC_LOONGSON_PMOVMSK UNSPEC_LOONGSON_PMULHU UNSPEC_LOONGSON_PMULH - UNSPEC_LOONGSON_PMULL UNSPEC_LOONGSON_PMULU UNSPEC_LOONGSON_PASUBUB UNSPEC_LOONGSON_BIADD @@ -353,11 +352,10 @@ [(set_attr "type" "fmul")]) ;; Multiply signed integers and store low result. -(define_insn "loongson_pmull" +(define_insn "mul3" [(set (match_operand:VH 0 "register_operand" "=f") - (unspec:VH [(match_operand:VH 1 "register_operand" "f") - (match_operand:VH 2 "register_operand" "f")] - UNSPEC_LOONGSON_PMULL))] + (mult:VH (match_operand:VH 1 "register_operand" "f") + (match_operand:VH 2 "register_operand" "f")))] "TARGET_HARD_FLOAT && TARGET_LOONGSON_VECTORS" "pmull\t%0,%1,%2" [(set_attr "type" "fmul")]) diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index 468a424a33c..b0aaab5cb21 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -12684,6 +12684,7 @@ AVAIL_NON_MIPS16 (cache, TARGET_CACHE_BUILTIN) #define CODE_FOR_loongson_pminub CODE_FOR_uminv8qi3 #define CODE_FOR_loongson_pmulhuh CODE_FOR_umulv4hi3_highpart #define CODE_FOR_loongson_pmulhh CODE_FOR_smulv4hi3_highpart +#define CODE_FOR_loongson_pmullh CODE_FOR_mulv4hi3 #define CODE_FOR_loongson_psubw CODE_FOR_subv2si3 #define CODE_FOR_loongson_psubh CODE_FOR_subv4hi3 #define CODE_FOR_loongson_psubb CODE_FOR_subv8qi3