@@ -802,10 +802,20 @@ unknown, xor, xorl"
802
802
;; Comparison insns
803
803
;; -------------------------------------------------------------------
804
804
805
- (define_insn "cmp<mode >"
805
+ (define_expand "cmp<mode >"
806
806
[ (set (reg: CC CC_REGNUM)
807
- (compare: CC (match_operand: GPI 0 "nonmemory_operand" "r, r, r,U06S0,S12S0,i,r")
808
- (match_operand: GPI 1 "nonmemory_operand" "r,U06S0,S12S0, r, r,r,i")))]
807
+ (compare: CC (match_operand: GPI 0 "register_operand" "")
808
+ (match_operand: GPI 1 "nonmemory_operand" "")))]
809
+ ""
810
+ {
811
+ if (!register_operand (operands[ 2] , DImode))
812
+ operands[ 2] = force_reg (DImode, operands[ 2] );
813
+ })
814
+
815
+ (define_insn "* cmp<mode >"
816
+ [ (set (reg: CC CC_REGNUM)
817
+ (compare: CC (match_operand: GPI 0 "nonmemory_operand" "r, r, r,U06S0,S12S0,S32S0,r")
818
+ (match_operand: GPI 1 "nonmemory_operand" "r,U06S0,S12S0, r, r, r,S32S0")))]
809
819
"register_operand (operands[ 0] , <MODE >mode)
810
820
|| register_operand (operands[ 1] , <MODE >mode)"
811
821
"@
0 commit comments