comparison gcc/config/pa/pa.md @ 55:77e2b8dfacca gcc-4.4.5

update it from 4.4.3 to 4.5.0
author ryoma <e075725@ie.u-ryukyu.ac.jp>
date Fri, 12 Feb 2010 23:39:51 +0900
parents 3bfb6c00c1e0
children b7f97abdc517
comparison
equal deleted inserted replaced
52:c156f1bd5cd9 55:77e2b8dfacca
651 (include "constraints.md") 651 (include "constraints.md")
652 652
653 ;; Compare instructions. 653 ;; Compare instructions.
654 ;; This controls RTL generation and register allocation. 654 ;; This controls RTL generation and register allocation.
655 655
656 ;; We generate RTL for comparisons and branches by having the cmpxx
657 ;; patterns store away the operands. Then, the scc and bcc patterns
658 ;; emit RTL for both the compare and the branch.
659 ;;
660
661 (define_expand "cmpdi"
662 [(set (reg:CC 0)
663 (compare:CC (match_operand:DI 0 "reg_or_0_operand" "")
664 (match_operand:DI 1 "register_operand" "")))]
665 "TARGET_64BIT"
666
667 "
668 {
669 hppa_compare_op0 = operands[0];
670 hppa_compare_op1 = operands[1];
671 hppa_branch_type = CMP_SI;
672 DONE;
673 }")
674
675 (define_expand "cmpsi"
676 [(set (reg:CC 0)
677 (compare:CC (match_operand:SI 0 "reg_or_0_operand" "")
678 (match_operand:SI 1 "arith5_operand" "")))]
679 ""
680 "
681 {
682 hppa_compare_op0 = operands[0];
683 hppa_compare_op1 = operands[1];
684 hppa_branch_type = CMP_SI;
685 DONE;
686 }")
687
688 (define_expand "cmpsf"
689 [(set (reg:CCFP 0)
690 (compare:CCFP (match_operand:SF 0 "reg_or_0_operand" "")
691 (match_operand:SF 1 "reg_or_0_operand" "")))]
692 "! TARGET_SOFT_FLOAT"
693 "
694 {
695 hppa_compare_op0 = operands[0];
696 hppa_compare_op1 = operands[1];
697 hppa_branch_type = CMP_SF;
698 DONE;
699 }")
700
701 (define_expand "cmpdf"
702 [(set (reg:CCFP 0)
703 (compare:CCFP (match_operand:DF 0 "reg_or_0_operand" "")
704 (match_operand:DF 1 "reg_or_0_operand" "")))]
705 "! TARGET_SOFT_FLOAT"
706 "
707 {
708 hppa_compare_op0 = operands[0];
709 hppa_compare_op1 = operands[1];
710 hppa_branch_type = CMP_DF;
711 DONE;
712 }")
713
714 (define_insn "" 656 (define_insn ""
715 [(set (reg:CCFP 0) 657 [(set (reg:CCFP 0)
716 (match_operator:CCFP 2 "comparison_operator" 658 (match_operator:CCFP 2 "comparison_operator"
717 [(match_operand:SF 0 "reg_or_0_operand" "fG") 659 [(match_operand:SF 0 "reg_or_0_operand" "fG")
718 (match_operand:SF 1 "reg_or_0_operand" "fG")]))] 660 (match_operand:SF 1 "reg_or_0_operand" "fG")]))]
765 [(set_attr "length" "4") 707 [(set_attr "length" "4")
766 (set_attr "type" "fpcc")]) 708 (set_attr "type" "fpcc")])
767 709
768 ;; scc insns. 710 ;; scc insns.
769 711
770 (define_expand "seq" 712 (define_expand "cstoresi4"
771 [(set (match_operand:SI 0 "register_operand" "") 713 [(set (match_operand:SI 0 "register_operand")
772 (eq:SI (match_dup 1) 714 (match_operator:SI 1 "ordered_comparison_operator"
773 (match_dup 2)))] 715 [(match_operand:SI 2 "reg_or_0_operand" "")
716 (match_operand:SI 3 "arith5_operand" "")]))]
774 "!TARGET_64BIT" 717 "!TARGET_64BIT"
775 " 718 "")
776 {
777 /* fp scc patterns rarely match, and are not a win on the PA. */
778 if (hppa_branch_type != CMP_SI)
779 FAIL;
780 /* set up operands from compare. */
781 operands[1] = hppa_compare_op0;
782 operands[2] = hppa_compare_op1;
783 /* fall through and generate default code */
784 }")
785
786 (define_expand "sne"
787 [(set (match_operand:SI 0 "register_operand" "")
788 (ne:SI (match_dup 1)
789 (match_dup 2)))]
790 "!TARGET_64BIT"
791 "
792 {
793 /* fp scc patterns rarely match, and are not a win on the PA. */
794 if (hppa_branch_type != CMP_SI)
795 FAIL;
796 operands[1] = hppa_compare_op0;
797 operands[2] = hppa_compare_op1;
798 }")
799
800 (define_expand "slt"
801 [(set (match_operand:SI 0 "register_operand" "")
802 (lt:SI (match_dup 1)
803 (match_dup 2)))]
804 "!TARGET_64BIT"
805 "
806 {
807 /* fp scc patterns rarely match, and are not a win on the PA. */
808 if (hppa_branch_type != CMP_SI)
809 FAIL;
810 operands[1] = hppa_compare_op0;
811 operands[2] = hppa_compare_op1;
812 }")
813
814 (define_expand "sgt"
815 [(set (match_operand:SI 0 "register_operand" "")
816 (gt:SI (match_dup 1)
817 (match_dup 2)))]
818 "!TARGET_64BIT"
819 "
820 {
821 /* fp scc patterns rarely match, and are not a win on the PA. */
822 if (hppa_branch_type != CMP_SI)
823 FAIL;
824 operands[1] = hppa_compare_op0;
825 operands[2] = hppa_compare_op1;
826 }")
827
828 (define_expand "sle"
829 [(set (match_operand:SI 0 "register_operand" "")
830 (le:SI (match_dup 1)
831 (match_dup 2)))]
832 "!TARGET_64BIT"
833 "
834 {
835 /* fp scc patterns rarely match, and are not a win on the PA. */
836 if (hppa_branch_type != CMP_SI)
837 FAIL;
838 operands[1] = hppa_compare_op0;
839 operands[2] = hppa_compare_op1;
840 }")
841
842 (define_expand "sge"
843 [(set (match_operand:SI 0 "register_operand" "")
844 (ge:SI (match_dup 1)
845 (match_dup 2)))]
846 "!TARGET_64BIT"
847 "
848 {
849 /* fp scc patterns rarely match, and are not a win on the PA. */
850 if (hppa_branch_type != CMP_SI)
851 FAIL;
852 operands[1] = hppa_compare_op0;
853 operands[2] = hppa_compare_op1;
854 }")
855
856 (define_expand "sltu"
857 [(set (match_operand:SI 0 "register_operand" "")
858 (ltu:SI (match_dup 1)
859 (match_dup 2)))]
860 "!TARGET_64BIT"
861 "
862 {
863 if (hppa_branch_type != CMP_SI)
864 FAIL;
865 operands[1] = hppa_compare_op0;
866 operands[2] = hppa_compare_op1;
867 }")
868
869 (define_expand "sgtu"
870 [(set (match_operand:SI 0 "register_operand" "")
871 (gtu:SI (match_dup 1)
872 (match_dup 2)))]
873 "!TARGET_64BIT"
874 "
875 {
876 if (hppa_branch_type != CMP_SI)
877 FAIL;
878 operands[1] = hppa_compare_op0;
879 operands[2] = hppa_compare_op1;
880 }")
881
882 (define_expand "sleu"
883 [(set (match_operand:SI 0 "register_operand" "")
884 (leu:SI (match_dup 1)
885 (match_dup 2)))]
886 "!TARGET_64BIT"
887 "
888 {
889 if (hppa_branch_type != CMP_SI)
890 FAIL;
891 operands[1] = hppa_compare_op0;
892 operands[2] = hppa_compare_op1;
893 }")
894
895 (define_expand "sgeu"
896 [(set (match_operand:SI 0 "register_operand" "")
897 (geu:SI (match_dup 1)
898 (match_dup 2)))]
899 "!TARGET_64BIT"
900 "
901 {
902 if (hppa_branch_type != CMP_SI)
903 FAIL;
904 operands[1] = hppa_compare_op0;
905 operands[2] = hppa_compare_op1;
906 }")
907 719
908 ;; Instruction canonicalization puts immediate operands second, which 720 ;; Instruction canonicalization puts immediate operands second, which
909 ;; is the reverse of what we want. 721 ;; is the reverse of what we want.
910 722
911 (define_insn "scc" 723 (define_insn "scc"
1344 ;;; Experimental conditional move patterns 1156 ;;; Experimental conditional move patterns
1345 1157
1346 (define_expand "movsicc" 1158 (define_expand "movsicc"
1347 [(set (match_operand:SI 0 "register_operand" "") 1159 [(set (match_operand:SI 0 "register_operand" "")
1348 (if_then_else:SI 1160 (if_then_else:SI
1349 (match_operator 1 "comparison_operator" 1161 (match_operand 1 "comparison_operator" "")
1350 [(match_dup 4)
1351 (match_dup 5)])
1352 (match_operand:SI 2 "reg_or_cint_move_operand" "") 1162 (match_operand:SI 2 "reg_or_cint_move_operand" "")
1353 (match_operand:SI 3 "reg_or_cint_move_operand" "")))] 1163 (match_operand:SI 3 "reg_or_cint_move_operand" "")))]
1354 "" 1164 ""
1355 " 1165 "
1356 { 1166 {
1357 enum rtx_code code = GET_CODE (operands[1]); 1167 if (GET_MODE (XEXP (operands[1], 0)) != SImode
1358 1168 || GET_MODE (XEXP (operands[1], 0)) != GET_MODE (XEXP (operands[1], 1)))
1359 if (hppa_branch_type != CMP_SI)
1360 FAIL; 1169 FAIL;
1361
1362 if (GET_MODE (hppa_compare_op0) != GET_MODE (hppa_compare_op1)
1363 || GET_MODE (hppa_compare_op0) != GET_MODE (operands[0]))
1364 FAIL;
1365
1366 /* operands[1] is currently the result of compare_from_rtx. We want to
1367 emit a compare of the original operands. */
1368 operands[1] = gen_rtx_fmt_ee (code, SImode, hppa_compare_op0, hppa_compare_op1);
1369 operands[4] = hppa_compare_op0;
1370 operands[5] = hppa_compare_op1;
1371 }") 1170 }")
1372 1171
1373 ;; We used to accept any register for op1. 1172 ;; We used to accept any register for op1.
1374 ;; 1173 ;;
1375 ;; However, it loses sometimes because the compiler will end up using 1174 ;; However, it loses sometimes because the compiler will end up using
1417 (set_attr "length" "8,8,8,8,8,8,8,8")]) 1216 (set_attr "length" "8,8,8,8,8,8,8,8")])
1418 1217
1419 (define_expand "movdicc" 1218 (define_expand "movdicc"
1420 [(set (match_operand:DI 0 "register_operand" "") 1219 [(set (match_operand:DI 0 "register_operand" "")
1421 (if_then_else:DI 1220 (if_then_else:DI
1422 (match_operator 1 "comparison_operator" 1221 (match_operand 1 "comparison_operator" "")
1423 [(match_dup 4)
1424 (match_dup 5)])
1425 (match_operand:DI 2 "reg_or_cint_move_operand" "") 1222 (match_operand:DI 2 "reg_or_cint_move_operand" "")
1426 (match_operand:DI 3 "reg_or_cint_move_operand" "")))] 1223 (match_operand:DI 3 "reg_or_cint_move_operand" "")))]
1427 "TARGET_64BIT" 1224 "TARGET_64BIT"
1428 " 1225 "
1429 { 1226 {
1430 enum rtx_code code = GET_CODE (operands[1]); 1227 if (GET_MODE (XEXP (operands[1], 0)) != DImode
1431 1228 || GET_MODE (XEXP (operands[1], 0)) != GET_MODE (XEXP (operands[1], 1)))
1432 if (hppa_branch_type != CMP_SI)
1433 FAIL; 1229 FAIL;
1434
1435 if (GET_MODE (hppa_compare_op0) != GET_MODE (hppa_compare_op1)
1436 || GET_MODE (hppa_compare_op0) != GET_MODE (operands[0]))
1437 FAIL;
1438
1439 /* operands[1] is currently the result of compare_from_rtx. We want to
1440 emit a compare of the original operands. */
1441 operands[1] = gen_rtx_fmt_ee (code, DImode, hppa_compare_op0, hppa_compare_op1);
1442 operands[4] = hppa_compare_op0;
1443 operands[5] = hppa_compare_op1;
1444 }") 1230 }")
1445 1231
1446 ; We need the first constraint alternative in order to avoid 1232 ; We need the first constraint alternative in order to avoid
1447 ; earlyclobbers on all other alternatives. 1233 ; earlyclobbers on all other alternatives.
1448 (define_insn "" 1234 (define_insn ""
1484 [(set_attr "type" "multi,multi,multi,nullshift,multi,multi,multi,nullshift") 1270 [(set_attr "type" "multi,multi,multi,nullshift,multi,multi,multi,nullshift")
1485 (set_attr "length" "8,8,8,8,8,8,8,8")]) 1271 (set_attr "length" "8,8,8,8,8,8,8,8")])
1486 1272
1487 ;; Conditional Branches 1273 ;; Conditional Branches
1488 1274
1489 (define_expand "beq" 1275 (define_expand "cbranchdi4"
1490 [(set (pc) 1276 [(set (pc)
1491 (if_then_else (eq (match_dup 1) (match_dup 2)) 1277 (if_then_else (match_operator 0 "ordered_comparison_operator"
1492 (label_ref (match_operand 0 "" "")) 1278 [(match_operand:DI 1 "reg_or_0_operand" "")
1279 (match_operand:DI 2 "register_operand" "")])
1280 (label_ref (match_operand 3 "" ""))
1493 (pc)))] 1281 (pc)))]
1282 "TARGET_64BIT"
1283 "")
1284
1285 (define_expand "cbranchsi4"
1286 [(set (pc)
1287 (if_then_else (match_operator 0 "ordered_comparison_operator"
1288 [(match_operand:SI 1 "reg_or_0_operand" "")
1289 (match_operand:SI 2 "arith5_operand" "")])
1290 (label_ref (match_operand 3 "" ""))
1291 (pc)))]
1292 ""
1293 "")
1294
1295 (define_expand "cbranchsf4"
1296 [(set (pc)
1297 (if_then_else (match_operator 0 "comparison_operator"
1298 [(match_operand:SF 1 "reg_or_0_operand" "")
1299 (match_operand:SF 2 "reg_or_0_operand" "")])
1300 (label_ref (match_operand 3 "" ""))
1301 (pc)))]
1494 "" 1302 ""
1495 " 1303 "
1496 { 1304 {
1497 if (hppa_branch_type != CMP_SI) 1305 emit_bcond_fp (operands);
1498 {
1499 emit_insn (gen_cmp_fp (EQ, hppa_compare_op0, hppa_compare_op1));
1500 emit_bcond_fp (NE, operands[0]);
1501 DONE;
1502 }
1503 /* set up operands from compare. */
1504 operands[1] = hppa_compare_op0;
1505 operands[2] = hppa_compare_op1;
1506 /* fall through and generate default code */
1507 }")
1508
1509 (define_expand "bne"
1510 [(set (pc)
1511 (if_then_else (ne (match_dup 1) (match_dup 2))
1512 (label_ref (match_operand 0 "" ""))
1513 (pc)))]
1514 ""
1515 "
1516 {
1517 if (hppa_branch_type != CMP_SI)
1518 {
1519 emit_insn (gen_cmp_fp (NE, hppa_compare_op0, hppa_compare_op1));
1520 emit_bcond_fp (NE, operands[0]);
1521 DONE;
1522 }
1523 operands[1] = hppa_compare_op0;
1524 operands[2] = hppa_compare_op1;
1525 }")
1526
1527 (define_expand "bgt"
1528 [(set (pc)
1529 (if_then_else (gt (match_dup 1) (match_dup 2))
1530 (label_ref (match_operand 0 "" ""))
1531 (pc)))]
1532 ""
1533 "
1534 {
1535 if (hppa_branch_type != CMP_SI)
1536 {
1537 emit_insn (gen_cmp_fp (GT, hppa_compare_op0, hppa_compare_op1));
1538 emit_bcond_fp (NE, operands[0]);
1539 DONE;
1540 }
1541 operands[1] = hppa_compare_op0;
1542 operands[2] = hppa_compare_op1;
1543 }")
1544
1545 (define_expand "blt"
1546 [(set (pc)
1547 (if_then_else (lt (match_dup 1) (match_dup 2))
1548 (label_ref (match_operand 0 "" ""))
1549 (pc)))]
1550 ""
1551 "
1552 {
1553 if (hppa_branch_type != CMP_SI)
1554 {
1555 emit_insn (gen_cmp_fp (LT, hppa_compare_op0, hppa_compare_op1));
1556 emit_bcond_fp (NE, operands[0]);
1557 DONE;
1558 }
1559 operands[1] = hppa_compare_op0;
1560 operands[2] = hppa_compare_op1;
1561 }")
1562
1563 (define_expand "bge"
1564 [(set (pc)
1565 (if_then_else (ge (match_dup 1) (match_dup 2))
1566 (label_ref (match_operand 0 "" ""))
1567 (pc)))]
1568 ""
1569 "
1570 {
1571 if (hppa_branch_type != CMP_SI)
1572 {
1573 emit_insn (gen_cmp_fp (GE, hppa_compare_op0, hppa_compare_op1));
1574 emit_bcond_fp (NE, operands[0]);
1575 DONE;
1576 }
1577 operands[1] = hppa_compare_op0;
1578 operands[2] = hppa_compare_op1;
1579 }")
1580
1581 (define_expand "ble"
1582 [(set (pc)
1583 (if_then_else (le (match_dup 1) (match_dup 2))
1584 (label_ref (match_operand 0 "" ""))
1585 (pc)))]
1586 ""
1587 "
1588 {
1589 if (hppa_branch_type != CMP_SI)
1590 {
1591 emit_insn (gen_cmp_fp (LE, hppa_compare_op0, hppa_compare_op1));
1592 emit_bcond_fp (NE, operands[0]);
1593 DONE;
1594 }
1595 operands[1] = hppa_compare_op0;
1596 operands[2] = hppa_compare_op1;
1597 }")
1598
1599 (define_expand "bgtu"
1600 [(set (pc)
1601 (if_then_else (gtu (match_dup 1) (match_dup 2))
1602 (label_ref (match_operand 0 "" ""))
1603 (pc)))]
1604 ""
1605 "
1606 {
1607 if (hppa_branch_type != CMP_SI)
1608 FAIL;
1609 operands[1] = hppa_compare_op0;
1610 operands[2] = hppa_compare_op1;
1611 }")
1612
1613 (define_expand "bltu"
1614 [(set (pc)
1615 (if_then_else (ltu (match_dup 1) (match_dup 2))
1616 (label_ref (match_operand 0 "" ""))
1617 (pc)))]
1618 ""
1619 "
1620 {
1621 if (hppa_branch_type != CMP_SI)
1622 FAIL;
1623 operands[1] = hppa_compare_op0;
1624 operands[2] = hppa_compare_op1;
1625 }")
1626
1627 (define_expand "bgeu"
1628 [(set (pc)
1629 (if_then_else (geu (match_dup 1) (match_dup 2))
1630 (label_ref (match_operand 0 "" ""))
1631 (pc)))]
1632 ""
1633 "
1634 {
1635 if (hppa_branch_type != CMP_SI)
1636 FAIL;
1637 operands[1] = hppa_compare_op0;
1638 operands[2] = hppa_compare_op1;
1639 }")
1640
1641 (define_expand "bleu"
1642 [(set (pc)
1643 (if_then_else (leu (match_dup 1) (match_dup 2))
1644 (label_ref (match_operand 0 "" ""))
1645 (pc)))]
1646 ""
1647 "
1648 {
1649 if (hppa_branch_type != CMP_SI)
1650 FAIL;
1651 operands[1] = hppa_compare_op0;
1652 operands[2] = hppa_compare_op1;
1653 }")
1654
1655 (define_expand "bltgt"
1656 [(set (pc)
1657 (if_then_else (ltgt (match_dup 1) (match_dup 2))
1658 (label_ref (match_operand 0 "" ""))
1659 (pc)))]
1660 ""
1661 "
1662 {
1663 if (hppa_branch_type == CMP_SI)
1664 FAIL;
1665 emit_insn (gen_cmp_fp (LTGT, hppa_compare_op0, hppa_compare_op1));
1666 emit_bcond_fp (NE, operands[0]);
1667 DONE; 1306 DONE;
1668 }") 1307 }")
1669 1308
1670 (define_expand "bunle" 1309
1310 (define_expand "cbranchdf4"
1671 [(set (pc) 1311 [(set (pc)
1672 (if_then_else (unle (match_dup 1) (match_dup 2)) 1312 (if_then_else (match_operator 0 "comparison_operator"
1673 (label_ref (match_operand 0 "" "")) 1313 [(match_operand:DF 1 "reg_or_0_operand" "")
1314 (match_operand:DF 2 "reg_or_0_operand" "")])
1315 (label_ref (match_operand 3 "" ""))
1674 (pc)))] 1316 (pc)))]
1675 "" 1317 ""
1676 " 1318 "
1677 { 1319 {
1678 if (hppa_branch_type == CMP_SI) 1320 emit_bcond_fp (operands);
1679 FAIL;
1680 emit_insn (gen_cmp_fp (UNLE, hppa_compare_op0, hppa_compare_op1));
1681 emit_bcond_fp (NE, operands[0]);
1682 DONE;
1683 }")
1684
1685 (define_expand "bunlt"
1686 [(set (pc)
1687 (if_then_else (unlt (match_dup 1) (match_dup 2))
1688 (label_ref (match_operand 0 "" ""))
1689 (pc)))]
1690 ""
1691 "
1692 {
1693 if (hppa_branch_type == CMP_SI)
1694 FAIL;
1695 emit_insn (gen_cmp_fp (UNLT, hppa_compare_op0, hppa_compare_op1));
1696 emit_bcond_fp (NE, operands[0]);
1697 DONE;
1698 }")
1699
1700 (define_expand "bunge"
1701 [(set (pc)
1702 (if_then_else (unge (match_dup 1) (match_dup 2))
1703 (label_ref (match_operand 0 "" ""))
1704 (pc)))]
1705 ""
1706 "
1707 {
1708 if (hppa_branch_type == CMP_SI)
1709 FAIL;
1710 emit_insn (gen_cmp_fp (UNGE, hppa_compare_op0, hppa_compare_op1));
1711 emit_bcond_fp (NE, operands[0]);
1712 DONE;
1713 }")
1714
1715 (define_expand "bungt"
1716 [(set (pc)
1717 (if_then_else (ungt (match_dup 1) (match_dup 2))
1718 (label_ref (match_operand 0 "" ""))
1719 (pc)))]
1720 ""
1721 "
1722 {
1723 if (hppa_branch_type == CMP_SI)
1724 FAIL;
1725 emit_insn (gen_cmp_fp (UNGT, hppa_compare_op0, hppa_compare_op1));
1726 emit_bcond_fp (NE, operands[0]);
1727 DONE;
1728 }")
1729
1730 (define_expand "buneq"
1731 [(set (pc)
1732 (if_then_else (uneq (match_dup 1) (match_dup 2))
1733 (label_ref (match_operand 0 "" ""))
1734 (pc)))]
1735 ""
1736 "
1737 {
1738 if (hppa_branch_type == CMP_SI)
1739 FAIL;
1740 emit_insn (gen_cmp_fp (UNEQ, hppa_compare_op0, hppa_compare_op1));
1741 emit_bcond_fp (NE, operands[0]);
1742 DONE;
1743 }")
1744
1745 (define_expand "bunordered"
1746 [(set (pc)
1747 (if_then_else (unordered (match_dup 1) (match_dup 2))
1748 (label_ref (match_operand 0 "" ""))
1749 (pc)))]
1750 ""
1751 "
1752 {
1753 if (hppa_branch_type == CMP_SI)
1754 FAIL;
1755 emit_insn (gen_cmp_fp (UNORDERED, hppa_compare_op0, hppa_compare_op1));
1756 emit_bcond_fp (NE, operands[0]);
1757 DONE;
1758 }")
1759
1760 (define_expand "bordered"
1761 [(set (pc)
1762 (if_then_else (ordered (match_dup 1) (match_dup 2))
1763 (label_ref (match_operand 0 "" ""))
1764 (pc)))]
1765 ""
1766 "
1767 {
1768 if (hppa_branch_type == CMP_SI)
1769 FAIL;
1770 emit_insn (gen_cmp_fp (ORDERED, hppa_compare_op0, hppa_compare_op1));
1771 emit_bcond_fp (NE, operands[0]);
1772 DONE; 1321 DONE;
1773 }") 1322 }")
1774 1323
1775 ;; Match the branch patterns. 1324 ;; Match the branch patterns.
1776 1325
7582 check if the casesi insn is in a delay branch sequence and output 7131 check if the casesi insn is in a delay branch sequence and output
7583 the delay insn if one is found. If this was done, then it might 7132 the delay insn if one is found. If this was done, then it might
7584 then be worthwhile to split the casesi patterns to improve scheduling. 7133 then be worthwhile to split the casesi patterns to improve scheduling.
7585 However, it's not clear that all this extra complexity is worth 7134 However, it's not clear that all this extra complexity is worth
7586 the effort. */ 7135 the effort. */
7587 emit_insn (gen_cmpsi (operands[0], operands[2])); 7136 {
7588 emit_jump_insn (gen_bgtu (operands[4])); 7137 rtx test = gen_rtx_GTU (VOIDmode, operands[0], operands[2]);
7138 emit_jump_insn (gen_cbranchsi4 (test, operands[0], operands[2], operands[4]));
7139 }
7589 7140
7590 /* In 64bit mode we must make sure to wipe the upper bits of the register 7141 /* In 64bit mode we must make sure to wipe the upper bits of the register
7591 just in case the addition overflowed or we had random bits in the 7142 just in case the addition overflowed or we had random bits in the
7592 high part of the register. */ 7143 high part of the register. */
7593 if (TARGET_64BIT) 7144 if (TARGET_64BIT)
7645 (const_int 4)) 7196 (const_int 4))
7646 (label_ref (match_operand 1 "" ""))))) 7197 (label_ref (match_operand 1 "" "")))))
7647 (clobber (match_scratch:SI 2 "=&r")) 7198 (clobber (match_scratch:SI 2 "=&r"))
7648 (clobber (match_scratch:SI 3 "=&r"))] 7199 (clobber (match_scratch:SI 3 "=&r"))]
7649 "flag_pic" 7200 "flag_pic"
7650 "{bl .+8,%2\;depi 0,31,2,%2|mfia %2}\;ldo {16|20}(%2),%2\;\ 7201 "{bl .+8,%2\;depi 0,31,2,%2|mfia %2}\;ldo {%l1-.|%l1+4-.}(%2),%2\;\
7651 {ldwx|ldw},s %0(%2),%3\;{addl|add,l} %2,%3,%3\;bv,n %%r0(%3)" 7202 {ldwx|ldw},s %0(%2),%3\;{addl|add,l} %2,%3,%3\;bv,n %%r0(%3)"
7652 [(set_attr "type" "multi") 7203 [(set_attr "type" "multi")
7653 (set (attr "length") 7204 (set (attr "length")
7654 (if_then_else (ne (symbol_ref "TARGET_PA_20") (const_int 0)) 7205 (if_then_else (ne (symbol_ref "TARGET_PA_20") (const_int 0))
7655 (const_int 20) 7206 (const_int 20)
7662 (const_int 8)) 7213 (const_int 8))
7663 (label_ref (match_operand 1 "" ""))))) 7214 (label_ref (match_operand 1 "" "")))))
7664 (clobber (match_scratch:DI 2 "=&r")) 7215 (clobber (match_scratch:DI 2 "=&r"))
7665 (clobber (match_scratch:DI 3 "=&r"))] 7216 (clobber (match_scratch:DI 3 "=&r"))]
7666 "" 7217 ""
7667 "mfia %2\;ldo 24(%2),%2\;ldw,s %0(%2),%3\;extrd,s %3,63,32,%3\;\ 7218 "mfia %2\;ldo %l1+4-.(%2),%2\;ldw,s %0(%2),%3\;extrd,s %3,63,32,%3\;\
7668 add,l %2,%3,%3\;bv,n %%r0(%3)" 7219 add,l %2,%3,%3\;bv,n %%r0(%3)"
7669 [(set_attr "type" "multi") 7220 [(set_attr "type" "multi")
7670 (set_attr "length" "24")]) 7221 (set_attr "length" "24")])
7671 7222
7672 7223