diff options
Diffstat (limited to 'gcc/config/microblaze/microblaze.md')
-rw-r--r-- | gcc/config/microblaze/microblaze.md | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/gcc/config/microblaze/microblaze.md b/gcc/config/microblaze/microblaze.md index 02857875022..3618cad524b 100644 --- a/gcc/config/microblaze/microblaze.md +++ b/gcc/config/microblaze/microblaze.md @@ -40,6 +40,7 @@ (UNSPEC_PLT 103) ;; jump table (UNSPEC_CMP 104) ;; signed compare (UNSPEC_CMPU 105) ;; unsigned compare + (UNSPEC_TLS 106) ;; jump table ]) @@ -459,7 +460,7 @@ (define_insn "addsi3" [(set (match_operand:SI 0 "register_operand" "=d,d,d") (plus:SI (match_operand:SI 1 "reg_or_0_operand" "%dJ,dJ,dJ") - (match_operand:SI 2 "arith_operand" "d,I,i")))] + (match_operand:SI 2 "arith_plus_operand" "d,I,i")))] "" "@ addk\t%0,%z1,%2 @@ -892,8 +893,8 @@ (define_insn "*movdi_internal" - [(set (match_operand:DI 0 "nonimmediate_operand" "=d,d,d,d,d,R,m") - (match_operand:DI 1 "general_operand" " d,i,J,R,m,d,d"))] + [(set (match_operand:DI 0 "nonimmediate_operand" "=d,d,d,d,d,R,o") + (match_operand:DI 1 "general_operand" " d,i,J,R,o,d,d"))] "" { switch (which_alternative) @@ -999,13 +1000,9 @@ (set_attr "length" "4")]) (define_insn "*movsi_internal2" - [(set (match_operand:SI 0 "nonimmediate_operand" "=d,d,d, d,d,R, T") - (match_operand:SI 1 "move_operand" " d,I,Mnis,R,m,dJ,dJ"))] - "(register_operand (operands[0], SImode) - || register_operand (operands[1], SImode) - || (GET_CODE (operands[1]) == CONST_INT && INTVAL (operands[1]) == 0)) - && (flag_pic != 2 || (GET_CODE (operands[1]) != SYMBOL_REF - && GET_CODE (operands[1]) != LABEL_REF))" + [(set (match_operand:SI 0 "nonimmediate_operand" "=d,d,d, d,d,R,m") + (match_operand:SI 1 "move_src_operand" " d,I,Mnis,R,m,dJ,dJ"))] + "" "@ addk\t%0,%1,r0 addik\t%0,r0,%1\t# %X1 @@ -1196,7 +1193,7 @@ ;; Applies to both TARGET_SOFT_FLOAT and TARGET_HARD_FLOAT ;; (define_insn "*movdf_internal" - [(set (match_operand:DF 0 "nonimmediate_operand" "=d,d,d,d,To") + [(set (match_operand:DF 0 "nonimmediate_operand" "=d,d,d,d,o") (match_operand:DF 1 "general_operand" "dG,o,F,T,d"))] "" { |