@@ -594,7 +594,9 @@ vfins, vfsub, vfmul, vfdiv, vfrep, vpack, xbfu, xor, xorl"
594
594
"register_operand (operands[ 0] , HImode)
595
595
|| register_operand (operands[ 1] , HImode)
596
596
|| (satisfies_constraint_S06S0 (operands[ 1] )
597
- && memory_operand (operands[ 0] , HImode))"
597
+ && memory_operand (operands[ 0] , HImode))
598
+ || (CONST_INT_P (operands[ 1] )
599
+ && satisfies_constraint_Ucnst (operands[ 0] ))"
598
600
"@
599
601
mov_s\\ t%0,%1
600
602
mov\\ t%0,%1
@@ -620,7 +622,9 @@ vfins, vfsub, vfmul, vfdiv, vfrep, vpack, xbfu, xor, xorl"
620
622
"register_operand (operands[ 0] , SImode)
621
623
|| register_operand (operands[ 1] , SImode)
622
624
|| (satisfies_constraint_S06S0 (operands[ 1] )
623
- && memory_operand (operands[ 0] , SImode))"
625
+ && memory_operand (operands[ 0] , SImode))
626
+ || (CONST_INT_P (operands[ 1] )
627
+ && satisfies_constraint_Ucnst (operands[ 0] ))"
624
628
"@
625
629
mov_s\\ t%0,%1
626
630
mov\\ t%0,%1
@@ -731,21 +735,24 @@ vfins, vfsub, vfmul, vfdiv, vfrep, vpack, xbfu, xor, xorl"
731
735
;; Long insns: movl, stl, ldl
732
736
;;
733
737
(define_insn "* arc64_movdi"
734
- [ (set (match_operand: DI 0 "arc64_dest_operand" "=qh, q,r, r, r, r,r, m")
735
- (match_operand: DI 1 "arc64_movl_operand" "qh,U08S0,r,S12S0,S32S0SymMV,SyPic,m, r"))]
738
+ [ (set (match_operand: DI 0 "arc64_dest_operand" "=qh, q,r, r, r, r,Ucnst, r, m")
739
+ (match_operand: DI 1 "arc64_movl_operand" "qh,U08S0,r,S12S0,S32S0SymMV,SyPic,S32S0, m, r"))]
736
740
"register_operand (operands[ 0] , DImode)
737
- || register_operand (operands[ 1] , DImode)"
741
+ || register_operand (operands[ 1] , DImode)
742
+ || (CONST_INT_P (operands[ 1] )
743
+ && satisfies_constraint_Ucnst (operands[ 0] ))"
738
744
"@
739
745
movl_s\\ t%0,%1
740
746
movl_s\\ t%0,%1
741
747
movl\\ t%0,%1
742
748
movl\\ t%0,%1
743
749
movl\\ t%0,%1
744
750
addl\\ t%0,pcl,%1
751
+ stl%U0\\ t%1,%0
745
752
ldl%U1\\ t%0,%1
746
753
stl%U0\\ t%1,%0"
747
- [ (set_attr "type" "move,move,move,move,move,addl,ld,st")
748
- (set_attr "length" "2,2,4,4,8,8,* ,* ")]
754
+ [ (set_attr "type" "move,move,move,move,move,addl,st, ld,st")
755
+ (set_attr "length" "2,2,4,4,8,8,* ,* , * ")]
749
756
)
750
757
751
758
;; Hi/Low moves for constant and symbol loading.
0 commit comments