(zero_extendhisi2+[12]): use true_regnum instead of REGN
authorStan Cox <coxs@gnu.org>
Thu, 27 Mar 1997 22:23:58 +0000 (22:23 +0000)
committerStan Cox <coxs@gnu.org>
Thu, 27 Mar 1997 22:23:58 +0000 (22:23 +0000)
From-SVN: r13808

gcc/config/i386/i386.md

index 6890ef0d69e49f8368450bed7a71c8b54761d318..b5ef6a778266dc0655a49b355550bfa4a5619527 100644 (file)
        (const_int 0))
   (set (strict_low_part (match_dup 2))
        (match_dup 1))]
- "operands[2] = gen_rtx (REG, HImode, REGNO (operands[0]));")
+ "operands[2] = gen_rtx (REG, HImode, true_regnum (operands[0]));")
 
 
 (define_split
   (set (match_dup 0)
        (and:SI (match_dup 0)
               (const_int 65535)))]
-  "operands[2] = gen_rtx (REG, HImode, REGNO (operands[0]));")
+  "operands[2] = gen_rtx (REG, HImode, true_regnum (operands[0]));")
 
 (define_insn "zero_extendqihi2"
   [(set (match_operand:HI 0 "register_operand" "=q,&q,?r")
 (define_split
   [(set (match_operand:SI 0 "register_operand" "")
        (zero_extend:SI (match_operand:QI 1 "register_operand" "")))]
- "reload_completed && TARGET_ZERO_EXTEND_WITH_AND"
+ "reload_completed && TARGET_ZERO_EXTEND_WITH_AND
+  && ! reg_overlap_mentioned_p (operands[0], operands[1])"
  [(set (match_dup 0)
        (match_dup 2))
   (set (match_dup 0)
        (and:SI (match_dup 0)
               (const_int 255)))]
- "if (GET_CODE (operands[1]) == SUBREG && SUBREG_WORD (operands[1]) == 0)
-    operands[1] = SUBREG_REG (operands[1]);
-  if (GET_CODE (operands[1]) != REG
-      || REGNO (operands[0]) == REGNO (operands[1]))
-    FAIL;
-  operands[2] = gen_rtx (REG, SImode, REGNO (operands[1]));")
+ "operands[2] = gen_rtx (REG, SImode, true_regnum (operands[1]));")
 
 (define_insn "zero_extendsidi2"
   [(set (match_operand:DI 0 "nonimmediate_operand" "=r,?r,?m")