i386.md (90286) | i386.md (96294) |
---|---|
1;; GCC machine description for IA-32 and x86-64. 2;; Copyright (C) 1988, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 3;; Free Software Foundation, Inc. 4;; Mostly by William Schelter. 5;; x86_64 support added by Jan Hubicka 6;; 7;; This file is part of GNU CC. 8;; --- 99 unchanged lines hidden (view full) --- 108;; "reload_completed && TARGET_64BIT". 109 110 111;; Processor type. This attribute must exactly match the processor_type 112;; enumeration in i386.h. 113(define_attr "cpu" "i386,i486,pentium,pentiumpro,k6,athlon,pentium4" 114 (const (symbol_ref "ix86_cpu"))) 115 | 1;; GCC machine description for IA-32 and x86-64. 2;; Copyright (C) 1988, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 3;; Free Software Foundation, Inc. 4;; Mostly by William Schelter. 5;; x86_64 support added by Jan Hubicka 6;; 7;; This file is part of GNU CC. 8;; --- 99 unchanged lines hidden (view full) --- 108;; "reload_completed && TARGET_64BIT". 109 110 111;; Processor type. This attribute must exactly match the processor_type 112;; enumeration in i386.h. 113(define_attr "cpu" "i386,i486,pentium,pentiumpro,k6,athlon,pentium4" 114 (const (symbol_ref "ix86_cpu"))) 115 |
116;; $FreeBSD: head/contrib/gcc/config/i386/i386.md 90286 2002-02-06 05:02:18Z obrien $ | 116;; $FreeBSD: head/contrib/gcc/config/i386/i386.md 96294 2002-05-09 22:44:32Z obrien $ |
117 118;; A basic instruction type. Refinements due to arguments to be 119;; provided in other attributes. 120(define_attr "type" 121 "other,multi,alu1,negnot,alu,icmp,test,imov,imovx,lea,incdec,ishift,imul,idiv,ibr,setcc,push,pop,call,callv,icmov,fmov,fop,fop1,fsgn,fmul,fdiv,fpspc,fcmov,fcmp,fxch,str,cld,sse,mmx,fistp" 122 (const_string "other")) 123 124;; Main data type used by the insn --- 1605 unchanged lines hidden (view full) --- 1730{ 1731 operands[1] = constm1_rtx; 1732 return "or{l}\t{%1, %0|%0, %1}"; 1733} 1734 [(set_attr "type" "alu1") 1735 (set_attr "mode" "SI") 1736 (set_attr "length_immediate" "1")]) 1737 | 117 118;; A basic instruction type. Refinements due to arguments to be 119;; provided in other attributes. 120(define_attr "type" 121 "other,multi,alu1,negnot,alu,icmp,test,imov,imovx,lea,incdec,ishift,imul,idiv,ibr,setcc,push,pop,call,callv,icmov,fmov,fop,fop1,fsgn,fmul,fdiv,fpspc,fcmov,fcmp,fxch,str,cld,sse,mmx,fistp" 122 (const_string "other")) 123 124;; Main data type used by the insn --- 1605 unchanged lines hidden (view full) --- 1730{ 1731 operands[1] = constm1_rtx; 1732 return "or{l}\t{%1, %0|%0, %1}"; 1733} 1734 [(set_attr "type" "alu1") 1735 (set_attr "mode" "SI") 1736 (set_attr "length_immediate" "1")]) 1737 |
1738; The first alternative is used only to compute proper length of instruction. 1739; Reload's algorithm does not take into account the cost of spill instructions 1740; needed to free register in given class, so avoid it from choosing the first 1741; alternative when eax is not available. 1742 |
|
1738(define_insn "*movsi_1" | 1743(define_insn "*movsi_1" |
1739 [(set (match_operand:SI 0 "nonimmediate_operand" "=*a,r,*a,m,!*y,!rm,!*Y,!rm,!*Y") 1740 (match_operand:SI 1 "general_operand" "im,rinm,rinm,rin,rm,*y,rm,*Y,*Y"))] | 1744 [(set (match_operand:SI 0 "nonimmediate_operand" "=*?a,r,*?a,m,!*y,!rm,!*y,!*Y,!rm,!*Y") 1745 (match_operand:SI 1 "general_operand" "im,rinm,rinm,rin,rm,*y,*y,rm,*Y,*Y"))] |
1741 "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM" 1742{ 1743 switch (get_attr_type (insn)) 1744 { 1745 case TYPE_SSE: 1746 if (get_attr_mode (insn) == TImode) 1747 return "movdqa\t{%1, %0|%0, %1}"; 1748 return "movd\t{%1, %0|%0, %1}"; 1749 1750 case TYPE_MMX: | 1746 "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM" 1747{ 1748 switch (get_attr_type (insn)) 1749 { 1750 case TYPE_SSE: 1751 if (get_attr_mode (insn) == TImode) 1752 return "movdqa\t{%1, %0|%0, %1}"; 1753 return "movd\t{%1, %0|%0, %1}"; 1754 1755 case TYPE_MMX: |
1756 if (get_attr_mode (insn) == DImode) 1757 return "movq\t{%1, %0|%0, %1}"; |
|
1751 return "movd\t{%1, %0|%0, %1}"; 1752 1753 case TYPE_LEA: 1754 return "lea{l}\t{%1, %0|%0, %1}"; 1755 1756 default: 1757 if (flag_pic && SYMBOLIC_CONST (operands[1])) 1758 abort(); 1759 return "mov{l}\t{%1, %0|%0, %1}"; 1760 } 1761} 1762 [(set (attr "type") | 1758 return "movd\t{%1, %0|%0, %1}"; 1759 1760 case TYPE_LEA: 1761 return "lea{l}\t{%1, %0|%0, %1}"; 1762 1763 default: 1764 if (flag_pic && SYMBOLIC_CONST (operands[1])) 1765 abort(); 1766 return "mov{l}\t{%1, %0|%0, %1}"; 1767 } 1768} 1769 [(set (attr "type") |
1763 (cond [(eq_attr "alternative" "4,5") | 1770 (cond [(eq_attr "alternative" "4,5,6") |
1764 (const_string "mmx") | 1771 (const_string "mmx") |
1765 (eq_attr "alternative" "6,7,8") | 1772 (eq_attr "alternative" "7,8,9") |
1766 (const_string "sse") 1767 (and (ne (symbol_ref "flag_pic") (const_int 0)) 1768 (match_operand:SI 1 "symbolic_operand" "")) 1769 (const_string "lea") 1770 ] 1771 (const_string "imov"))) | 1773 (const_string "sse") 1774 (and (ne (symbol_ref "flag_pic") (const_int 0)) 1775 (match_operand:SI 1 "symbolic_operand" "")) 1776 (const_string "lea") 1777 ] 1778 (const_string "imov"))) |
1772 (set_attr "modrm" "0,*,0,*,*,*,*,*,*") 1773 (set_attr "mode" "SI,SI,SI,SI,SI,SI,TI,SI,SI")]) | 1779 (set_attr "modrm" "0,*,0,*,*,*,*,*,*,*") 1780 (set_attr "mode" "SI,SI,SI,SI,SI,SI,DI,TI,SI,SI")]) |
1774 1775;; Stores and loads of ax to arbitary constant address. 1776;; We fake an second form of instruction to force reload to load address 1777;; into register when rax is not available 1778(define_insn "*movabssi_1_rex64" 1779 [(set (mem:SI (match_operand:DI 0 "x86_64_movabs_operand" "i,r,r")) 1780 (match_operand:SI 1 "nonmemory_operand" "a,er,i"))] 1781 "TARGET_64BIT" --- 56 unchanged lines hidden (view full) --- 1838(define_insn "*pushhi2_rex64" 1839 [(set (match_operand:HI 0 "push_operand" "=X") 1840 (match_operand:HI 1 "nonmemory_no_elim_operand" "ri"))] 1841 "TARGET_64BIT" 1842 "push{q}\t%q1" 1843 [(set_attr "type" "push") 1844 (set_attr "mode" "QI")]) 1845 | 1781 1782;; Stores and loads of ax to arbitary constant address. 1783;; We fake an second form of instruction to force reload to load address 1784;; into register when rax is not available 1785(define_insn "*movabssi_1_rex64" 1786 [(set (mem:SI (match_operand:DI 0 "x86_64_movabs_operand" "i,r,r")) 1787 (match_operand:SI 1 "nonmemory_operand" "a,er,i"))] 1788 "TARGET_64BIT" --- 56 unchanged lines hidden (view full) --- 1845(define_insn "*pushhi2_rex64" 1846 [(set (match_operand:HI 0 "push_operand" "=X") 1847 (match_operand:HI 1 "nonmemory_no_elim_operand" "ri"))] 1848 "TARGET_64BIT" 1849 "push{q}\t%q1" 1850 [(set_attr "type" "push") 1851 (set_attr "mode" "QI")]) 1852 |
1853; The first alternative is used only to compute proper length of instruction. 1854; Reload's algorithm does not take into account the cost of spill instructions 1855; needed to free register in given class, so avoid it from choosing the first 1856; alternative when eax is not available. 1857 |
|
1846(define_insn "*movhi_1" | 1858(define_insn "*movhi_1" |
1847 [(set (match_operand:HI 0 "nonimmediate_operand" "=*a,r,r,*a,r,m") | 1859 [(set (match_operand:HI 0 "nonimmediate_operand" "=*?a,r,r,*?a,r,m") |
1848 (match_operand:HI 1 "general_operand" "i,r,rn,rm,rm,rn"))] 1849 "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM" 1850{ 1851 switch (get_attr_type (insn)) 1852 { 1853 case TYPE_IMOVX: 1854 /* movzwl is faster than movw on p2 due to partial word stalls, 1855 though not as fast as an aligned movl. */ --- 601 unchanged lines hidden (view full) --- 2457 operands[1] = constm1_rtx; 2458 return "or{q}\t{%1, %0|%0, %1}"; 2459} 2460 [(set_attr "type" "alu1") 2461 (set_attr "mode" "DI") 2462 (set_attr "length_immediate" "1")]) 2463 2464(define_insn "*movdi_2" | 1860 (match_operand:HI 1 "general_operand" "i,r,rn,rm,rm,rn"))] 1861 "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM" 1862{ 1863 switch (get_attr_type (insn)) 1864 { 1865 case TYPE_IMOVX: 1866 /* movzwl is faster than movw on p2 due to partial word stalls, 1867 though not as fast as an aligned movl. */ --- 601 unchanged lines hidden (view full) --- 2469 operands[1] = constm1_rtx; 2470 return "or{q}\t{%1, %0|%0, %1}"; 2471} 2472 [(set_attr "type" "alu1") 2473 (set_attr "mode" "DI") 2474 (set_attr "length_immediate" "1")]) 2475 2476(define_insn "*movdi_2" |
2465 [(set (match_operand:DI 0 "nonimmediate_operand" "=r,o,!m*y,!*y,!m,*Y,!*Y") | 2477 [(set (match_operand:DI 0 "nonimmediate_operand" "=r,o,!m*y,!*y,!m,!*Y,!*Y") |
2466 (match_operand:DI 1 "general_operand" "riFo,riF,*y,m,*Y,*Y,m"))] 2467 "!TARGET_64BIT 2468 && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)" 2469 "@ 2470 # 2471 # 2472 movq\t{%1, %0|%0, %1} 2473 movq\t{%1, %0|%0, %1} --- 236 unchanged lines hidden (view full) --- 2710(define_split 2711 [(set (match_operand:SF 0 "push_operand" "") 2712 (match_operand:SF 1 "register_operand" ""))] 2713 "TARGET_64BIT && ANY_FP_REGNO_P (REGNO (operands[1]))" 2714 [(set (reg:DI 7) (plus:DI (reg:DI 7) (const_int -8))) 2715 (set (mem:SF (reg:DI 7)) (match_dup 1))]) 2716 2717(define_insn "*movsf_1" | 2478 (match_operand:DI 1 "general_operand" "riFo,riF,*y,m,*Y,*Y,m"))] 2479 "!TARGET_64BIT 2480 && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)" 2481 "@ 2482 # 2483 # 2484 movq\t{%1, %0|%0, %1} 2485 movq\t{%1, %0|%0, %1} --- 236 unchanged lines hidden (view full) --- 2722(define_split 2723 [(set (match_operand:SF 0 "push_operand" "") 2724 (match_operand:SF 1 "register_operand" ""))] 2725 "TARGET_64BIT && ANY_FP_REGNO_P (REGNO (operands[1]))" 2726 [(set (reg:DI 7) (plus:DI (reg:DI 7) (const_int -8))) 2727 (set (mem:SF (reg:DI 7)) (match_dup 1))]) 2728 2729(define_insn "*movsf_1" |
2718 [(set (match_operand:SF 0 "nonimmediate_operand" "=f#xr,m,f#xr,r#xf,m,x#rf,x#rf,x#rf,m") 2719 (match_operand:SF 1 "general_operand" "fm#rx,f#rx,G,rmF#fx,Fr#fx,H,x,xm#rf,x#rf"))] | 2730 [(set (match_operand:SF 0 "nonimmediate_operand" "=f#xr,m,f#xr,r#xf,m,x#rf,x#rf,x#rf,m,!*y,!rm,!*y") 2731 (match_operand:SF 1 "general_operand" "fm#rx,f#rx,G,rmF#fx,Fr#fx,H,x,xm#rf,x#rf,rm,*y,*y"))] |
2720 "(GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM) 2721 && (reload_in_progress || reload_completed 2722 || (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE) 2723 || GET_CODE (operands[1]) != CONST_DOUBLE 2724 || memory_operand (operands[0], SFmode))" 2725{ 2726 switch (which_alternative) 2727 { --- 21 unchanged lines hidden (view full) --- 2749 return "fld1"; 2750 } 2751 abort(); 2752 2753 case 3: 2754 case 4: 2755 return "mov{l}\t{%1, %0|%0, %1}"; 2756 case 5: | 2732 "(GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM) 2733 && (reload_in_progress || reload_completed 2734 || (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE) 2735 || GET_CODE (operands[1]) != CONST_DOUBLE 2736 || memory_operand (operands[0], SFmode))" 2737{ 2738 switch (which_alternative) 2739 { --- 21 unchanged lines hidden (view full) --- 2761 return "fld1"; 2762 } 2763 abort(); 2764 2765 case 3: 2766 case 4: 2767 return "mov{l}\t{%1, %0|%0, %1}"; 2768 case 5: |
2757 return "pxor\t%0, %0"; | 2769 if (TARGET_SSE2) 2770 return "pxor\t%0, %0"; 2771 else 2772 return "xorps\t%0, %0"; |
2758 case 6: 2759 if (TARGET_PARTIAL_REG_DEPENDENCY) 2760 return "movaps\t{%1, %0|%0, %1}"; 2761 else 2762 return "movss\t{%1, %0|%0, %1}"; 2763 case 7: 2764 case 8: 2765 return "movss\t{%1, %0|%0, %1}"; 2766 | 2773 case 6: 2774 if (TARGET_PARTIAL_REG_DEPENDENCY) 2775 return "movaps\t{%1, %0|%0, %1}"; 2776 else 2777 return "movss\t{%1, %0|%0, %1}"; 2778 case 7: 2779 case 8: 2780 return "movss\t{%1, %0|%0, %1}"; 2781 |
2782 case 9: 2783 case 10: 2784 return "movd\t{%1, %0|%0, %1}"; 2785 2786 case 11: 2787 return "movq\t{%1, %0|%0, %1}"; 2788 |
|
2767 default: 2768 abort(); 2769 } 2770} | 2789 default: 2790 abort(); 2791 } 2792} |
2771 [(set_attr "type" "fmov,fmov,fmov,imov,imov,sse,sse,sse,sse") 2772 (set_attr "mode" "SF,SF,SF,SI,SI,TI,SF,SF,SF")]) | 2793 [(set_attr "type" "fmov,fmov,fmov,imov,imov,sse,sse,sse,sse,mmx,mmx,mmx") 2794 (set_attr "mode" "SF,SF,SF,SI,SI,TI,SF,SF,SF,SI,SI,DI")]) |
2773 2774(define_insn "*swapsf" 2775 [(set (match_operand:SF 0 "register_operand" "+f") 2776 (match_operand:SF 1 "register_operand" "+f")) 2777 (set (match_dup 1) 2778 (match_dup 0))] 2779 "reload_completed || !TARGET_SSE" 2780{ --- 2343 unchanged lines hidden (view full) --- 5124 #" 5125 [(set_attr "type" "fmov,multi") 5126 (set_attr "mode" "DF") 5127 (set_attr "fp_int_src" "true")]) 5128 5129(define_expand "floatsidf2" 5130 [(set (match_operand:DF 0 "register_operand" "") 5131 (float:DF (match_operand:SI 1 "nonimmediate_operand" "")))] | 2795 2796(define_insn "*swapsf" 2797 [(set (match_operand:SF 0 "register_operand" "+f") 2798 (match_operand:SF 1 "register_operand" "+f")) 2799 (set (match_dup 1) 2800 (match_dup 0))] 2801 "reload_completed || !TARGET_SSE" 2802{ --- 2343 unchanged lines hidden (view full) --- 5146 #" 5147 [(set_attr "type" "fmov,multi") 5148 (set_attr "mode" "DF") 5149 (set_attr "fp_int_src" "true")]) 5150 5151(define_expand "floatsidf2" 5152 [(set (match_operand:DF 0 "register_operand" "") 5153 (float:DF (match_operand:SI 1 "nonimmediate_operand" "")))] |
5132 "" | 5154 "TARGET_80387 || TARGET_SSE2" |
5133 "") 5134 5135(define_insn "*floatsidf2_i387" 5136 [(set (match_operand:DF 0 "register_operand" "=f,?f,Y") 5137 (float:DF (match_operand:SI 1 "nonimmediate_operand" "m,r,mr")))] 5138 "TARGET_80387 && (!TARGET_SSE2 || TARGET_MIX_SSE_I387)" 5139 "@ 5140 fild%z1\t%1 --- 2186 unchanged lines hidden (view full) --- 7327 "@ 7328 imul{w}\t{%2, %1, %0|%0, %1, %2} 7329 imul{w}\t{%2, %1, %0|%0, %1, %2} 7330 imul{w}\t{%2, %0|%0, %2}" 7331 [(set_attr "type" "imul") 7332 (set_attr "prefix_0f" "0,0,1") 7333 (set_attr "mode" "HI")]) 7334 | 5155 "") 5156 5157(define_insn "*floatsidf2_i387" 5158 [(set (match_operand:DF 0 "register_operand" "=f,?f,Y") 5159 (float:DF (match_operand:SI 1 "nonimmediate_operand" "m,r,mr")))] 5160 "TARGET_80387 && (!TARGET_SSE2 || TARGET_MIX_SSE_I387)" 5161 "@ 5162 fild%z1\t%1 --- 2186 unchanged lines hidden (view full) --- 7349 "@ 7350 imul{w}\t{%2, %1, %0|%0, %1, %2} 7351 imul{w}\t{%2, %1, %0|%0, %1, %2} 7352 imul{w}\t{%2, %0|%0, %2}" 7353 [(set_attr "type" "imul") 7354 (set_attr "prefix_0f" "0,0,1") 7355 (set_attr "mode" "HI")]) 7356 |
7335(define_insn "mulqi3" | 7357(define_expand "mulqi3" 7358 [(parallel [(set (match_operand:QI 0 "register_operand" "") 7359 (mult:QI (match_operand:QI 1 "nonimmediate_operand" "") 7360 (match_operand:QI 2 "register_operand" ""))) 7361 (clobber (reg:CC 17))])] 7362 "TARGET_QIMODE_MATH" 7363 "") 7364 7365(define_insn "*mulqi3_1" |
7336 [(set (match_operand:QI 0 "register_operand" "=a") | 7366 [(set (match_operand:QI 0 "register_operand" "=a") |
7337 (mult:QI (match_operand:QI 1 "register_operand" "%0") | 7367 (mult:QI (match_operand:QI 1 "nonimmediate_operand" "%0") |
7338 (match_operand:QI 2 "nonimmediate_operand" "qm"))) 7339 (clobber (reg:CC 17))] | 7368 (match_operand:QI 2 "nonimmediate_operand" "qm"))) 7369 (clobber (reg:CC 17))] |
7340 "TARGET_QIMODE_MATH" | 7370 "TARGET_QIMODE_MATH 7371 && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" |
7341 "mul{b}\t%2" 7342 [(set_attr "type" "imul") 7343 (set_attr "length_immediate" "0") 7344 (set_attr "mode" "QI")]) 7345 | 7372 "mul{b}\t%2" 7373 [(set_attr "type" "imul") 7374 (set_attr "length_immediate" "0") 7375 (set_attr "mode" "QI")]) 7376 |
7346(define_insn "umulqihi3" | 7377(define_expand "umulqihi3" 7378 [(parallel [(set (match_operand:HI 0 "register_operand" "") 7379 (mult:HI (zero_extend:HI 7380 (match_operand:QI 1 "nonimmediate_operand" "")) 7381 (zero_extend:HI 7382 (match_operand:QI 2 "register_operand" "")))) 7383 (clobber (reg:CC 17))])] 7384 "TARGET_QIMODE_MATH" 7385 "") 7386 7387(define_insn "*umulqihi3_1" |
7347 [(set (match_operand:HI 0 "register_operand" "=a") | 7388 [(set (match_operand:HI 0 "register_operand" "=a") |
7348 (mult:HI (zero_extend:HI (match_operand:QI 1 "register_operand" "%0")) | 7389 (mult:HI (zero_extend:HI (match_operand:QI 1 "nonimmediate_operand" "%0")) |
7349 (zero_extend:HI (match_operand:QI 2 "nonimmediate_operand" "qm")))) 7350 (clobber (reg:CC 17))] | 7390 (zero_extend:HI (match_operand:QI 2 "nonimmediate_operand" "qm")))) 7391 (clobber (reg:CC 17))] |
7351 "TARGET_QIMODE_MATH" | 7392 "TARGET_QIMODE_MATH 7393 && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" |
7352 "mul{b}\t%2" 7353 [(set_attr "type" "imul") 7354 (set_attr "length_immediate" "0") 7355 (set_attr "mode" "QI")]) 7356 | 7394 "mul{b}\t%2" 7395 [(set_attr "type" "imul") 7396 (set_attr "length_immediate" "0") 7397 (set_attr "mode" "QI")]) 7398 |
7357(define_insn "mulqihi3" | 7399(define_expand "mulqihi3" 7400 [(parallel [(set (match_operand:HI 0 "register_operand" "") 7401 (mult:HI (sign_extend:HI (match_operand:QI 1 "nonimmediate_operand" "")) 7402 (sign_extend:HI (match_operand:QI 2 "register_operand" "")))) 7403 (clobber (reg:CC 17))])] 7404 "TARGET_QIMODE_MATH" 7405 "") 7406 7407(define_insn "*mulqihi3_insn" |
7358 [(set (match_operand:HI 0 "register_operand" "=a") | 7408 [(set (match_operand:HI 0 "register_operand" "=a") |
7359 (mult:HI (sign_extend:HI (match_operand:QI 1 "register_operand" "%0")) | 7409 (mult:HI (sign_extend:HI (match_operand:QI 1 "nonimmediate_operand" "%0")) |
7360 (sign_extend:HI (match_operand:QI 2 "nonimmediate_operand" "qm")))) 7361 (clobber (reg:CC 17))] | 7410 (sign_extend:HI (match_operand:QI 2 "nonimmediate_operand" "qm")))) 7411 (clobber (reg:CC 17))] |
7362 "TARGET_QIMODE_MATH" | 7412 "TARGET_QIMODE_MATH 7413 && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" |
7363 "imul{b}\t%2" 7364 [(set_attr "type" "imul") 7365 (set_attr "length_immediate" "0") 7366 (set_attr "mode" "QI")]) 7367 | 7414 "imul{b}\t%2" 7415 [(set_attr "type" "imul") 7416 (set_attr "length_immediate" "0") 7417 (set_attr "mode" "QI")]) 7418 |
7368(define_insn "umulditi3" | 7419(define_expand "umulditi3" 7420 [(parallel [(set (match_operand:TI 0 "register_operand" "") 7421 (mult:TI (zero_extend:TI 7422 (match_operand:DI 1 "nonimmediate_operand" "")) 7423 (zero_extend:TI 7424 (match_operand:DI 2 "register_operand" "")))) 7425 (clobber (reg:CC 17))])] 7426 "TARGET_64BIT" 7427 "") 7428 7429(define_insn "*umulditi3_insn" |
7369 [(set (match_operand:TI 0 "register_operand" "=A") | 7430 [(set (match_operand:TI 0 "register_operand" "=A") |
7370 (mult:TI (zero_extend:TI (match_operand:DI 1 "register_operand" "%0")) | 7431 (mult:TI (zero_extend:TI (match_operand:DI 1 "nonimmediate_operand" "%0")) |
7371 (zero_extend:TI (match_operand:DI 2 "nonimmediate_operand" "rm")))) 7372 (clobber (reg:CC 17))] | 7432 (zero_extend:TI (match_operand:DI 2 "nonimmediate_operand" "rm")))) 7433 (clobber (reg:CC 17))] |
7373 "TARGET_64BIT" | 7434 "TARGET_64BIT 7435 && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" |
7374 "mul{q}\t%2" 7375 [(set_attr "type" "imul") 7376 (set_attr "ppro_uops" "few") 7377 (set_attr "length_immediate" "0") 7378 (set_attr "mode" "DI")]) 7379 7380;; We can't use this pattern in 64bit mode, since it results in two separate 32bit registers | 7436 "mul{q}\t%2" 7437 [(set_attr "type" "imul") 7438 (set_attr "ppro_uops" "few") 7439 (set_attr "length_immediate" "0") 7440 (set_attr "mode" "DI")]) 7441 7442;; We can't use this pattern in 64bit mode, since it results in two separate 32bit registers |
7381(define_insn "umulsidi3" | 7443(define_expand "umulsidi3" 7444 [(parallel [(set (match_operand:DI 0 "register_operand" "") 7445 (mult:DI (zero_extend:DI 7446 (match_operand:SI 1 "nonimmediate_operand" "")) 7447 (zero_extend:DI 7448 (match_operand:SI 2 "register_operand" "")))) 7449 (clobber (reg:CC 17))])] 7450 "!TARGET_64BIT" 7451 "") 7452 7453(define_insn "*umulsidi3_insn" |
7382 [(set (match_operand:DI 0 "register_operand" "=A") | 7454 [(set (match_operand:DI 0 "register_operand" "=A") |
7383 (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "%0")) | 7455 (mult:DI (zero_extend:DI (match_operand:SI 1 "nonimmediate_operand" "%0")) |
7384 (zero_extend:DI (match_operand:SI 2 "nonimmediate_operand" "rm")))) 7385 (clobber (reg:CC 17))] | 7456 (zero_extend:DI (match_operand:SI 2 "nonimmediate_operand" "rm")))) 7457 (clobber (reg:CC 17))] |
7386 "!TARGET_64BIT" | 7458 "!TARGET_64BIT 7459 && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" |
7387 "mul{l}\t%2" 7388 [(set_attr "type" "imul") 7389 (set_attr "ppro_uops" "few") 7390 (set_attr "length_immediate" "0") 7391 (set_attr "mode" "SI")]) 7392 | 7460 "mul{l}\t%2" 7461 [(set_attr "type" "imul") 7462 (set_attr "ppro_uops" "few") 7463 (set_attr "length_immediate" "0") 7464 (set_attr "mode" "SI")]) 7465 |
7393(define_insn "mulditi3" | 7466(define_expand "mulditi3" 7467 [(parallel [(set (match_operand:TI 0 "register_operand" "") 7468 (mult:TI (sign_extend:TI 7469 (match_operand:DI 1 "nonimmediate_operand" "")) 7470 (sign_extend:TI 7471 (match_operand:DI 2 "register_operand" "")))) 7472 (clobber (reg:CC 17))])] 7473 "TARGET_64BIT" 7474 "") 7475 7476(define_insn "*mulditi3_insn" |
7394 [(set (match_operand:TI 0 "register_operand" "=A") | 7477 [(set (match_operand:TI 0 "register_operand" "=A") |
7395 (mult:TI (sign_extend:TI (match_operand:DI 1 "register_operand" "%0")) | 7478 (mult:TI (sign_extend:TI (match_operand:DI 1 "nonimmediate_operand" "%0")) |
7396 (sign_extend:TI (match_operand:DI 2 "nonimmediate_operand" "rm")))) 7397 (clobber (reg:CC 17))] | 7479 (sign_extend:TI (match_operand:DI 2 "nonimmediate_operand" "rm")))) 7480 (clobber (reg:CC 17))] |
7398 "TARGET_64BIT" | 7481 "TARGET_64BIT 7482 && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" |
7399 "imul{q}\t%2" 7400 [(set_attr "type" "imul") 7401 (set_attr "length_immediate" "0") 7402 (set_attr "mode" "DI")]) 7403 | 7483 "imul{q}\t%2" 7484 [(set_attr "type" "imul") 7485 (set_attr "length_immediate" "0") 7486 (set_attr "mode" "DI")]) 7487 |
7404(define_insn "mulsidi3" | 7488(define_expand "mulsidi3" 7489 [(parallel [(set (match_operand:DI 0 "register_operand" "") 7490 (mult:DI (sign_extend:DI 7491 (match_operand:SI 1 "nonimmediate_operand" "")) 7492 (sign_extend:DI 7493 (match_operand:SI 2 "register_operand" "")))) 7494 (clobber (reg:CC 17))])] 7495 "!TARGET_64BIT" 7496 "") 7497 7498(define_insn "*mulsidi3_insn" |
7405 [(set (match_operand:DI 0 "register_operand" "=A") | 7499 [(set (match_operand:DI 0 "register_operand" "=A") |
7406 (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "%0")) | 7500 (mult:DI (sign_extend:DI (match_operand:SI 1 "nonimmediate_operand" "%0")) |
7407 (sign_extend:DI (match_operand:SI 2 "nonimmediate_operand" "rm")))) 7408 (clobber (reg:CC 17))] | 7501 (sign_extend:DI (match_operand:SI 2 "nonimmediate_operand" "rm")))) 7502 (clobber (reg:CC 17))] |
7409 "!TARGET_64BIT" | 7503 "!TARGET_64BIT 7504 && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" |
7410 "imul{l}\t%2" 7411 [(set_attr "type" "imul") 7412 (set_attr "length_immediate" "0") 7413 (set_attr "mode" "SI")]) 7414 | 7505 "imul{l}\t%2" 7506 [(set_attr "type" "imul") 7507 (set_attr "length_immediate" "0") 7508 (set_attr "mode" "SI")]) 7509 |
7510(define_expand "umuldi3_highpart" 7511 [(parallel [(set (match_operand:DI 0 "register_operand" "") 7512 (truncate:DI 7513 (lshiftrt:TI 7514 (mult:TI (zero_extend:TI 7515 (match_operand:DI 1 "nonimmediate_operand" "")) 7516 (zero_extend:TI 7517 (match_operand:DI 2 "register_operand" ""))) 7518 (const_int 64)))) 7519 (clobber (match_scratch:DI 3 "")) 7520 (clobber (reg:CC 17))])] 7521 "TARGET_64BIT" 7522 "") 7523 |
|
7415(define_insn "*umuldi3_highpart_rex64" 7416 [(set (match_operand:DI 0 "register_operand" "=d") 7417 (truncate:DI 7418 (lshiftrt:TI 7419 (mult:TI (zero_extend:TI | 7524(define_insn "*umuldi3_highpart_rex64" 7525 [(set (match_operand:DI 0 "register_operand" "=d") 7526 (truncate:DI 7527 (lshiftrt:TI 7528 (mult:TI (zero_extend:TI |
7420 (match_operand:DI 1 "register_operand" "%a")) | 7529 (match_operand:DI 1 "nonimmediate_operand" "%a")) |
7421 (zero_extend:TI 7422 (match_operand:DI 2 "nonimmediate_operand" "rm"))) 7423 (const_int 64)))) | 7530 (zero_extend:TI 7531 (match_operand:DI 2 "nonimmediate_operand" "rm"))) 7532 (const_int 64)))) |
7424 (clobber (match_scratch:DI 3 "=a")) | 7533 (clobber (match_scratch:DI 3 "=1")) |
7425 (clobber (reg:CC 17))] | 7534 (clobber (reg:CC 17))] |
7426 "TARGET_64BIT" | 7535 "TARGET_64BIT 7536 && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" |
7427 "mul{q}\t%2" 7428 [(set_attr "type" "imul") 7429 (set_attr "ppro_uops" "few") 7430 (set_attr "length_immediate" "0") 7431 (set_attr "mode" "DI")]) 7432 | 7537 "mul{q}\t%2" 7538 [(set_attr "type" "imul") 7539 (set_attr "ppro_uops" "few") 7540 (set_attr "length_immediate" "0") 7541 (set_attr "mode" "DI")]) 7542 |
7433(define_insn "umulsi3_highpart" | 7543(define_expand "umulsi3_highpart" 7544 [(parallel [(set (match_operand:SI 0 "register_operand" "") 7545 (truncate:SI 7546 (lshiftrt:DI 7547 (mult:DI (zero_extend:DI 7548 (match_operand:SI 1 "nonimmediate_operand" "")) 7549 (zero_extend:DI 7550 (match_operand:SI 2 "register_operand" ""))) 7551 (const_int 32)))) 7552 (clobber (match_scratch:SI 3 "")) 7553 (clobber (reg:CC 17))])] 7554 "" 7555 "") 7556 7557(define_insn "*umulsi3_highpart_insn" |
7434 [(set (match_operand:SI 0 "register_operand" "=d") 7435 (truncate:SI 7436 (lshiftrt:DI 7437 (mult:DI (zero_extend:DI | 7558 [(set (match_operand:SI 0 "register_operand" "=d") 7559 (truncate:SI 7560 (lshiftrt:DI 7561 (mult:DI (zero_extend:DI |
7438 (match_operand:SI 1 "register_operand" "%a")) | 7562 (match_operand:SI 1 "nonimmediate_operand" "%a")) |
7439 (zero_extend:DI 7440 (match_operand:SI 2 "nonimmediate_operand" "rm"))) 7441 (const_int 32)))) | 7563 (zero_extend:DI 7564 (match_operand:SI 2 "nonimmediate_operand" "rm"))) 7565 (const_int 32)))) |
7442 (clobber (match_scratch:SI 3 "=a")) | 7566 (clobber (match_scratch:SI 3 "=1")) |
7443 (clobber (reg:CC 17))] | 7567 (clobber (reg:CC 17))] |
7444 "" | 7568 "GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM" |
7445 "mul{l}\t%2" 7446 [(set_attr "type" "imul") 7447 (set_attr "ppro_uops" "few") 7448 (set_attr "length_immediate" "0") 7449 (set_attr "mode" "SI")]) 7450 7451(define_insn "*umulsi3_highpart_zext" 7452 [(set (match_operand:DI 0 "register_operand" "=d") 7453 (zero_extend:DI (truncate:SI 7454 (lshiftrt:DI 7455 (mult:DI (zero_extend:DI | 7569 "mul{l}\t%2" 7570 [(set_attr "type" "imul") 7571 (set_attr "ppro_uops" "few") 7572 (set_attr "length_immediate" "0") 7573 (set_attr "mode" "SI")]) 7574 7575(define_insn "*umulsi3_highpart_zext" 7576 [(set (match_operand:DI 0 "register_operand" "=d") 7577 (zero_extend:DI (truncate:SI 7578 (lshiftrt:DI 7579 (mult:DI (zero_extend:DI |
7456 (match_operand:SI 1 "register_operand" "%a")) | 7580 (match_operand:SI 1 "nonimmediate_operand" "%a")) |
7457 (zero_extend:DI 7458 (match_operand:SI 2 "nonimmediate_operand" "rm"))) 7459 (const_int 32))))) | 7581 (zero_extend:DI 7582 (match_operand:SI 2 "nonimmediate_operand" "rm"))) 7583 (const_int 32))))) |
7460 (clobber (match_scratch:SI 3 "=a")) | 7584 (clobber (match_scratch:SI 3 "=1")) |
7461 (clobber (reg:CC 17))] | 7585 (clobber (reg:CC 17))] |
7462 "TARGET_64BIT" | 7586 "TARGET_64BIT 7587 && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" |
7463 "mul{l}\t%2" 7464 [(set_attr "type" "imul") 7465 (set_attr "ppro_uops" "few") 7466 (set_attr "length_immediate" "0") 7467 (set_attr "mode" "SI")]) 7468 | 7588 "mul{l}\t%2" 7589 [(set_attr "type" "imul") 7590 (set_attr "ppro_uops" "few") 7591 (set_attr "length_immediate" "0") 7592 (set_attr "mode" "SI")]) 7593 |
7594(define_expand "smuldi3_highpart" 7595 [(parallel [(set (match_operand:DI 0 "register_operand" "=d") 7596 (truncate:DI 7597 (lshiftrt:TI 7598 (mult:TI (sign_extend:TI 7599 (match_operand:DI 1 "nonimmediate_operand" "")) 7600 (sign_extend:TI 7601 (match_operand:DI 2 "register_operand" ""))) 7602 (const_int 64)))) 7603 (clobber (match_scratch:DI 3 "")) 7604 (clobber (reg:CC 17))])] 7605 "TARGET_64BIT" 7606 "") 7607 |
|
7469(define_insn "*smuldi3_highpart_rex64" 7470 [(set (match_operand:DI 0 "register_operand" "=d") 7471 (truncate:DI 7472 (lshiftrt:TI 7473 (mult:TI (sign_extend:TI | 7608(define_insn "*smuldi3_highpart_rex64" 7609 [(set (match_operand:DI 0 "register_operand" "=d") 7610 (truncate:DI 7611 (lshiftrt:TI 7612 (mult:TI (sign_extend:TI |
7474 (match_operand:DI 1 "register_operand" "%a")) | 7613 (match_operand:DI 1 "nonimmediate_operand" "%a")) |
7475 (sign_extend:TI 7476 (match_operand:DI 2 "nonimmediate_operand" "rm"))) 7477 (const_int 64)))) | 7614 (sign_extend:TI 7615 (match_operand:DI 2 "nonimmediate_operand" "rm"))) 7616 (const_int 64)))) |
7478 (clobber (match_scratch:DI 3 "=a")) | 7617 (clobber (match_scratch:DI 3 "=1")) |
7479 (clobber (reg:CC 17))] | 7618 (clobber (reg:CC 17))] |
7480 "TARGET_64BIT" | 7619 "TARGET_64BIT 7620 && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" |
7481 "imul{q}\t%2" 7482 [(set_attr "type" "imul") 7483 (set_attr "ppro_uops" "few") 7484 (set_attr "mode" "DI")]) 7485 | 7621 "imul{q}\t%2" 7622 [(set_attr "type" "imul") 7623 (set_attr "ppro_uops" "few") 7624 (set_attr "mode" "DI")]) 7625 |
7486(define_insn "smulsi3_highpart" | 7626(define_expand "smulsi3_highpart" 7627 [(parallel [(set (match_operand:SI 0 "register_operand" "") 7628 (truncate:SI 7629 (lshiftrt:DI 7630 (mult:DI (sign_extend:DI 7631 (match_operand:SI 1 "nonimmediate_operand" "")) 7632 (sign_extend:DI 7633 (match_operand:SI 2 "register_operand" ""))) 7634 (const_int 32)))) 7635 (clobber (match_scratch:SI 3 "")) 7636 (clobber (reg:CC 17))])] 7637 "" 7638 "") 7639 7640(define_insn "*smulsi3_highpart_insn" |
7487 [(set (match_operand:SI 0 "register_operand" "=d") 7488 (truncate:SI 7489 (lshiftrt:DI 7490 (mult:DI (sign_extend:DI | 7641 [(set (match_operand:SI 0 "register_operand" "=d") 7642 (truncate:SI 7643 (lshiftrt:DI 7644 (mult:DI (sign_extend:DI |
7491 (match_operand:SI 1 "register_operand" "%a")) | 7645 (match_operand:SI 1 "nonimmediate_operand" "%a")) |
7492 (sign_extend:DI 7493 (match_operand:SI 2 "nonimmediate_operand" "rm"))) 7494 (const_int 32)))) | 7646 (sign_extend:DI 7647 (match_operand:SI 2 "nonimmediate_operand" "rm"))) 7648 (const_int 32)))) |
7495 (clobber (match_scratch:SI 3 "=a")) | 7649 (clobber (match_scratch:SI 3 "=1")) |
7496 (clobber (reg:CC 17))] | 7650 (clobber (reg:CC 17))] |
7497 "" | 7651 "GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM" |
7498 "imul{l}\t%2" 7499 [(set_attr "type" "imul") 7500 (set_attr "ppro_uops" "few") 7501 (set_attr "mode" "SI")]) 7502 7503(define_insn "*smulsi3_highpart_zext" 7504 [(set (match_operand:DI 0 "register_operand" "=d") 7505 (zero_extend:DI (truncate:SI 7506 (lshiftrt:DI 7507 (mult:DI (sign_extend:DI | 7652 "imul{l}\t%2" 7653 [(set_attr "type" "imul") 7654 (set_attr "ppro_uops" "few") 7655 (set_attr "mode" "SI")]) 7656 7657(define_insn "*smulsi3_highpart_zext" 7658 [(set (match_operand:DI 0 "register_operand" "=d") 7659 (zero_extend:DI (truncate:SI 7660 (lshiftrt:DI 7661 (mult:DI (sign_extend:DI |
7508 (match_operand:SI 1 "register_operand" "%a")) | 7662 (match_operand:SI 1 "nonimmediate_operand" "%a")) |
7509 (sign_extend:DI 7510 (match_operand:SI 2 "nonimmediate_operand" "rm"))) 7511 (const_int 32))))) | 7663 (sign_extend:DI 7664 (match_operand:SI 2 "nonimmediate_operand" "rm"))) 7665 (const_int 32))))) |
7512 (clobber (match_scratch:SI 3 "=a")) | 7666 (clobber (match_scratch:SI 3 "=1")) |
7513 (clobber (reg:CC 17))] | 7667 (clobber (reg:CC 17))] |
7514 "TARGET_64BIT" | 7668 "TARGET_64BIT 7669 && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" |
7515 "imul{l}\t%2" 7516 [(set_attr "type" "imul") 7517 (set_attr "ppro_uops" "few") 7518 (set_attr "mode" "SI")]) 7519 7520;; The patterns that match these are at the end of this file. 7521 7522(define_expand "mulxf3" --- 6013 unchanged lines hidden (view full) --- 13536{ 13537 int i; 13538 13539 /* In order to give reg-stack an easier job in validating two 13540 coprocessor registers as containing a possible return value, 13541 simply pretend the untyped call returns a complex long double 13542 value. */ 13543 | 7670 "imul{l}\t%2" 7671 [(set_attr "type" "imul") 7672 (set_attr "ppro_uops" "few") 7673 (set_attr "mode" "SI")]) 7674 7675;; The patterns that match these are at the end of this file. 7676 7677(define_expand "mulxf3" --- 6013 unchanged lines hidden (view full) --- 13691{ 13692 int i; 13693 13694 /* In order to give reg-stack an easier job in validating two 13695 coprocessor registers as containing a possible return value, 13696 simply pretend the untyped call returns a complex long double 13697 value. */ 13698 |
13544 emit_call_insn (TARGET_80387 | 13699 emit_call_insn (TARGET_FLOAT_RETURNS_IN_80387 |
13545 ? gen_call_value (gen_rtx_REG (XCmode, FIRST_FLOAT_REG), 13546 operands[0], const0_rtx, 13547 GEN_INT (SSE_REGPARM_MAX - 1)) 13548 : gen_call (operands[0], const0_rtx, 13549 GEN_INT (SSE_REGPARM_MAX - 1))); 13550 13551 for (i = 0; i < XVECLEN (operands[2], 0); i++) 13552 { --- 298 unchanged lines hidden (view full) --- 13851;; SImode if the target mode DFmode, but only SImode if the target mode 13852;; is SFmode. 13853 13854;; Gcc is slightly more smart about handling normal two address instructions 13855;; so use special patterns for add and mull. 13856(define_insn "*fop_sf_comm_nosse" 13857 [(set (match_operand:SF 0 "register_operand" "=f") 13858 (match_operator:SF 3 "binary_fp_operator" | 13700 ? gen_call_value (gen_rtx_REG (XCmode, FIRST_FLOAT_REG), 13701 operands[0], const0_rtx, 13702 GEN_INT (SSE_REGPARM_MAX - 1)) 13703 : gen_call (operands[0], const0_rtx, 13704 GEN_INT (SSE_REGPARM_MAX - 1))); 13705 13706 for (i = 0; i < XVECLEN (operands[2], 0); i++) 13707 { --- 298 unchanged lines hidden (view full) --- 14006;; SImode if the target mode DFmode, but only SImode if the target mode 14007;; is SFmode. 14008 14009;; Gcc is slightly more smart about handling normal two address instructions 14010;; so use special patterns for add and mull. 14011(define_insn "*fop_sf_comm_nosse" 14012 [(set (match_operand:SF 0 "register_operand" "=f") 14013 (match_operator:SF 3 "binary_fp_operator" |
13859 [(match_operand:SF 1 "register_operand" "%0") | 14014 [(match_operand:SF 1 "nonimmediate_operand" "%0") |
13860 (match_operand:SF 2 "nonimmediate_operand" "fm")]))] 13861 "TARGET_80387 && !TARGET_SSE_MATH | 14015 (match_operand:SF 2 "nonimmediate_operand" "fm")]))] 14016 "TARGET_80387 && !TARGET_SSE_MATH |
13862 && GET_RTX_CLASS (GET_CODE (operands[3])) == 'c'" | 14017 && GET_RTX_CLASS (GET_CODE (operands[3])) == 'c' 14018 && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" |
13863 "* return output_387_binary_op (insn, operands);" 13864 [(set (attr "type") 13865 (if_then_else (match_operand:SF 3 "mult_operator" "") 13866 (const_string "fmul") 13867 (const_string "fop"))) 13868 (set_attr "mode" "SF")]) 13869 13870(define_insn "*fop_sf_comm" 13871 [(set (match_operand:SF 0 "register_operand" "=f#x,x#f") 13872 (match_operator:SF 3 "binary_fp_operator" | 14019 "* return output_387_binary_op (insn, operands);" 14020 [(set (attr "type") 14021 (if_then_else (match_operand:SF 3 "mult_operator" "") 14022 (const_string "fmul") 14023 (const_string "fop"))) 14024 (set_attr "mode" "SF")]) 14025 14026(define_insn "*fop_sf_comm" 14027 [(set (match_operand:SF 0 "register_operand" "=f#x,x#f") 14028 (match_operator:SF 3 "binary_fp_operator" |
13873 [(match_operand:SF 1 "register_operand" "%0,0") | 14029 [(match_operand:SF 1 "nonimmediate_operand" "%0,0") |
13874 (match_operand:SF 2 "nonimmediate_operand" "fm#x,xm#f")]))] 13875 "TARGET_80387 && TARGET_SSE_MATH && TARGET_MIX_SSE_I387 | 14030 (match_operand:SF 2 "nonimmediate_operand" "fm#x,xm#f")]))] 14031 "TARGET_80387 && TARGET_SSE_MATH && TARGET_MIX_SSE_I387 |
13876 && GET_RTX_CLASS (GET_CODE (operands[3])) == 'c'" | 14032 && GET_RTX_CLASS (GET_CODE (operands[3])) == 'c' 14033 && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" |
13877 "* return output_387_binary_op (insn, operands);" 13878 [(set (attr "type") 13879 (if_then_else (eq_attr "alternative" "1") 13880 (const_string "sse") 13881 (if_then_else (match_operand:SF 3 "mult_operator" "") 13882 (const_string "fmul") 13883 (const_string "fop")))) 13884 (set_attr "mode" "SF")]) 13885 13886(define_insn "*fop_sf_comm_sse" 13887 [(set (match_operand:SF 0 "register_operand" "=x") 13888 (match_operator:SF 3 "binary_fp_operator" | 14034 "* return output_387_binary_op (insn, operands);" 14035 [(set (attr "type") 14036 (if_then_else (eq_attr "alternative" "1") 14037 (const_string "sse") 14038 (if_then_else (match_operand:SF 3 "mult_operator" "") 14039 (const_string "fmul") 14040 (const_string "fop")))) 14041 (set_attr "mode" "SF")]) 14042 14043(define_insn "*fop_sf_comm_sse" 14044 [(set (match_operand:SF 0 "register_operand" "=x") 14045 (match_operator:SF 3 "binary_fp_operator" |
13889 [(match_operand:SF 1 "register_operand" "%0") | 14046 [(match_operand:SF 1 "nonimmediate_operand" "%0") |
13890 (match_operand:SF 2 "nonimmediate_operand" "xm")]))] | 14047 (match_operand:SF 2 "nonimmediate_operand" "xm")]))] |
13891 "TARGET_SSE_MATH && GET_RTX_CLASS (GET_CODE (operands[3])) == 'c'" | 14048 "TARGET_SSE_MATH && GET_RTX_CLASS (GET_CODE (operands[3])) == 'c' 14049 && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" |
13892 "* return output_387_binary_op (insn, operands);" 13893 [(set_attr "type" "sse") 13894 (set_attr "mode" "SF")]) 13895 13896(define_insn "*fop_df_comm_nosse" 13897 [(set (match_operand:DF 0 "register_operand" "=f") 13898 (match_operator:DF 3 "binary_fp_operator" | 14050 "* return output_387_binary_op (insn, operands);" 14051 [(set_attr "type" "sse") 14052 (set_attr "mode" "SF")]) 14053 14054(define_insn "*fop_df_comm_nosse" 14055 [(set (match_operand:DF 0 "register_operand" "=f") 14056 (match_operator:DF 3 "binary_fp_operator" |
13899 [(match_operand:DF 1 "register_operand" "%0") | 14057 [(match_operand:DF 1 "nonimmediate_operand" "%0") |
13900 (match_operand:DF 2 "nonimmediate_operand" "fm")]))] 13901 "TARGET_80387 && (!TARGET_SSE2 || !TARGET_SSE_MATH) | 14058 (match_operand:DF 2 "nonimmediate_operand" "fm")]))] 14059 "TARGET_80387 && (!TARGET_SSE2 || !TARGET_SSE_MATH) |
13902 && GET_RTX_CLASS (GET_CODE (operands[3])) == 'c'" | 14060 && GET_RTX_CLASS (GET_CODE (operands[3])) == 'c' 14061 && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" |
13903 "* return output_387_binary_op (insn, operands);" 13904 [(set (attr "type") 13905 (if_then_else (match_operand:SF 3 "mult_operator" "") 13906 (const_string "fmul") 13907 (const_string "fop"))) 13908 (set_attr "mode" "DF")]) 13909 13910(define_insn "*fop_df_comm" 13911 [(set (match_operand:DF 0 "register_operand" "=f#Y,Y#f") 13912 (match_operator:DF 3 "binary_fp_operator" | 14062 "* return output_387_binary_op (insn, operands);" 14063 [(set (attr "type") 14064 (if_then_else (match_operand:SF 3 "mult_operator" "") 14065 (const_string "fmul") 14066 (const_string "fop"))) 14067 (set_attr "mode" "DF")]) 14068 14069(define_insn "*fop_df_comm" 14070 [(set (match_operand:DF 0 "register_operand" "=f#Y,Y#f") 14071 (match_operator:DF 3 "binary_fp_operator" |
13913 [(match_operand:DF 1 "register_operand" "%0,0") | 14072 [(match_operand:DF 1 "nonimmediate_operand" "%0,0") |
13914 (match_operand:DF 2 "nonimmediate_operand" "fm#Y,Ym#f")]))] 13915 "TARGET_80387 && TARGET_SSE_MATH && TARGET_SSE2 && TARGET_MIX_SSE_I387 | 14073 (match_operand:DF 2 "nonimmediate_operand" "fm#Y,Ym#f")]))] 14074 "TARGET_80387 && TARGET_SSE_MATH && TARGET_SSE2 && TARGET_MIX_SSE_I387 |
13916 && GET_RTX_CLASS (GET_CODE (operands[3])) == 'c'" | 14075 && GET_RTX_CLASS (GET_CODE (operands[3])) == 'c' 14076 && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" |
13917 "* return output_387_binary_op (insn, operands);" 13918 [(set (attr "type") 13919 (if_then_else (eq_attr "alternative" "1") 13920 (const_string "sse") 13921 (if_then_else (match_operand:SF 3 "mult_operator" "") 13922 (const_string "fmul") 13923 (const_string "fop")))) 13924 (set_attr "mode" "DF")]) 13925 13926(define_insn "*fop_df_comm_sse" 13927 [(set (match_operand:DF 0 "register_operand" "=Y") 13928 (match_operator:DF 3 "binary_fp_operator" | 14077 "* return output_387_binary_op (insn, operands);" 14078 [(set (attr "type") 14079 (if_then_else (eq_attr "alternative" "1") 14080 (const_string "sse") 14081 (if_then_else (match_operand:SF 3 "mult_operator" "") 14082 (const_string "fmul") 14083 (const_string "fop")))) 14084 (set_attr "mode" "DF")]) 14085 14086(define_insn "*fop_df_comm_sse" 14087 [(set (match_operand:DF 0 "register_operand" "=Y") 14088 (match_operator:DF 3 "binary_fp_operator" |
13929 [(match_operand:DF 1 "register_operand" "%0") | 14089 [(match_operand:DF 1 "nonimmediate_operand" "%0") |
13930 (match_operand:DF 2 "nonimmediate_operand" "Ym")]))] 13931 "TARGET_SSE2 && TARGET_SSE_MATH | 14090 (match_operand:DF 2 "nonimmediate_operand" "Ym")]))] 14091 "TARGET_SSE2 && TARGET_SSE_MATH |
13932 && GET_RTX_CLASS (GET_CODE (operands[3])) == 'c'" | 14092 && GET_RTX_CLASS (GET_CODE (operands[3])) == 'c' 14093 && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" |
13933 "* return output_387_binary_op (insn, operands);" 13934 [(set_attr "type" "sse") 13935 (set_attr "mode" "DF")]) 13936 13937(define_insn "*fop_xf_comm" 13938 [(set (match_operand:XF 0 "register_operand" "=f") 13939 (match_operator:XF 3 "binary_fp_operator" 13940 [(match_operand:XF 1 "register_operand" "%0") --- 617 unchanged lines hidden (view full) --- 14558 [(set_attr "type" "fpspc") 14559 (set_attr "mode" "XF") 14560 (set_attr "athlon_decode" "direct")]) 14561 14562(define_insn "*sqrtextenddfxf2" 14563 [(set (match_operand:XF 0 "register_operand" "=f") 14564 (sqrt:XF (float_extend:XF 14565 (match_operand:DF 1 "register_operand" "0"))))] | 14094 "* return output_387_binary_op (insn, operands);" 14095 [(set_attr "type" "sse") 14096 (set_attr "mode" "DF")]) 14097 14098(define_insn "*fop_xf_comm" 14099 [(set (match_operand:XF 0 "register_operand" "=f") 14100 (match_operator:XF 3 "binary_fp_operator" 14101 [(match_operand:XF 1 "register_operand" "%0") --- 617 unchanged lines hidden (view full) --- 14719 [(set_attr "type" "fpspc") 14720 (set_attr "mode" "XF") 14721 (set_attr "athlon_decode" "direct")]) 14722 14723(define_insn "*sqrtextenddfxf2" 14724 [(set (match_operand:XF 0 "register_operand" "=f") 14725 (sqrt:XF (float_extend:XF 14726 (match_operand:DF 1 "register_operand" "0"))))] |
14566 "!TARGET_64BIT && TARGET_80387 && TARGET_NO_FANCY_MATH_387" | 14727 "!TARGET_64BIT && TARGET_80387 && !TARGET_NO_FANCY_MATH_387" |
14567 "fsqrt" 14568 [(set_attr "type" "fpspc") 14569 (set_attr "mode" "XF") 14570 (set_attr "athlon_decode" "direct")]) 14571 14572(define_insn "*sqrtextenddftf2" 14573 [(set (match_operand:TF 0 "register_operand" "=f") 14574 (sqrt:TF (float_extend:TF 14575 (match_operand:DF 1 "register_operand" "0"))))] 14576 "! TARGET_NO_FANCY_MATH_387 && TARGET_80387" 14577 "fsqrt" 14578 [(set_attr "type" "fpspc") 14579 (set_attr "mode" "XF") 14580 (set_attr "athlon_decode" "direct")]) 14581 14582(define_insn "*sqrtextendsfxf2" 14583 [(set (match_operand:XF 0 "register_operand" "=f") 14584 (sqrt:XF (float_extend:XF 14585 (match_operand:SF 1 "register_operand" "0"))))] | 14728 "fsqrt" 14729 [(set_attr "type" "fpspc") 14730 (set_attr "mode" "XF") 14731 (set_attr "athlon_decode" "direct")]) 14732 14733(define_insn "*sqrtextenddftf2" 14734 [(set (match_operand:TF 0 "register_operand" "=f") 14735 (sqrt:TF (float_extend:TF 14736 (match_operand:DF 1 "register_operand" "0"))))] 14737 "! TARGET_NO_FANCY_MATH_387 && TARGET_80387" 14738 "fsqrt" 14739 [(set_attr "type" "fpspc") 14740 (set_attr "mode" "XF") 14741 (set_attr "athlon_decode" "direct")]) 14742 14743(define_insn "*sqrtextendsfxf2" 14744 [(set (match_operand:XF 0 "register_operand" "=f") 14745 (sqrt:XF (float_extend:XF 14746 (match_operand:SF 1 "register_operand" "0"))))] |
14586 "!TARGET_64BIT && TARGET_80387 && TARGET_NO_FANCY_MATH_387" | 14747 "!TARGET_64BIT && TARGET_80387 && !TARGET_NO_FANCY_MATH_387" |
14587 "fsqrt" 14588 [(set_attr "type" "fpspc") 14589 (set_attr "mode" "XF") 14590 (set_attr "athlon_decode" "direct")]) 14591 14592(define_insn "*sqrtextendsftf2" 14593 [(set (match_operand:TF 0 "register_operand" "=f") 14594 (sqrt:TF (float_extend:TF --- 30 unchanged lines hidden (view full) --- 14625 && flag_unsafe_math_optimizations" 14626 "fsin" 14627 [(set_attr "type" "fpspc") 14628 (set_attr "mode" "DF")]) 14629 14630(define_insn "sinxf2" 14631 [(set (match_operand:XF 0 "register_operand" "=f") 14632 (unspec:XF [(match_operand:XF 1 "register_operand" "0")] 1))] | 14748 "fsqrt" 14749 [(set_attr "type" "fpspc") 14750 (set_attr "mode" "XF") 14751 (set_attr "athlon_decode" "direct")]) 14752 14753(define_insn "*sqrtextendsftf2" 14754 [(set (match_operand:TF 0 "register_operand" "=f") 14755 (sqrt:TF (float_extend:TF --- 30 unchanged lines hidden (view full) --- 14786 && flag_unsafe_math_optimizations" 14787 "fsin" 14788 [(set_attr "type" "fpspc") 14789 (set_attr "mode" "DF")]) 14790 14791(define_insn "sinxf2" 14792 [(set (match_operand:XF 0 "register_operand" "=f") 14793 (unspec:XF [(match_operand:XF 1 "register_operand" "0")] 1))] |
14633 "!TARGET_64BIT && TARGET_80387 && TARGET_NO_FANCY_MATH_387 | 14794 "!TARGET_64BIT && TARGET_80387 && !TARGET_NO_FANCY_MATH_387 |
14634 && flag_unsafe_math_optimizations" 14635 "fsin" 14636 [(set_attr "type" "fpspc") 14637 (set_attr "mode" "XF")]) 14638 14639(define_insn "sintf2" 14640 [(set (match_operand:TF 0 "register_operand" "=f") 14641 (unspec:TF [(match_operand:TF 1 "register_operand" "0")] 1))] --- 1103 unchanged lines hidden (view full) --- 15745 [(set (match_operand:DI 0 "register_operand" "=r,r") 15746 (if_then_else:DI (match_operator 1 "ix86_comparison_operator" 15747 [(reg 17) (const_int 0)]) 15748 (match_operand:DI 2 "nonimmediate_operand" "rm,0") 15749 (match_operand:DI 3 "nonimmediate_operand" "0,rm")))] 15750 "TARGET_64BIT && TARGET_CMOVE 15751 && (GET_CODE (operands[2]) != MEM || GET_CODE (operands[3]) != MEM)" 15752 "@ | 14795 && flag_unsafe_math_optimizations" 14796 "fsin" 14797 [(set_attr "type" "fpspc") 14798 (set_attr "mode" "XF")]) 14799 14800(define_insn "sintf2" 14801 [(set (match_operand:TF 0 "register_operand" "=f") 14802 (unspec:TF [(match_operand:TF 1 "register_operand" "0")] 1))] --- 1103 unchanged lines hidden (view full) --- 15906 [(set (match_operand:DI 0 "register_operand" "=r,r") 15907 (if_then_else:DI (match_operator 1 "ix86_comparison_operator" 15908 [(reg 17) (const_int 0)]) 15909 (match_operand:DI 2 "nonimmediate_operand" "rm,0") 15910 (match_operand:DI 3 "nonimmediate_operand" "0,rm")))] 15911 "TARGET_64BIT && TARGET_CMOVE 15912 && (GET_CODE (operands[2]) != MEM || GET_CODE (operands[3]) != MEM)" 15913 "@ |
15753 cmov%C1\t{%2, %0|%0, %2} 15754 cmov%c1\t{%3, %0|%0, %3}" | 15914 cmov%O2%C1\t{%2, %0|%0, %2} 15915 cmov%O2%c1\t{%3, %0|%0, %3}" |
15755 [(set_attr "type" "icmov") 15756 (set_attr "mode" "DI")]) 15757 15758(define_expand "movsicc" 15759 [(set (match_operand:SI 0 "register_operand" "") 15760 (if_then_else:SI (match_operand 1 "comparison_operator" "") 15761 (match_operand:SI 2 "general_operand" "") 15762 (match_operand:SI 3 "general_operand" "")))] --- 24 unchanged lines hidden (view full) --- 15787 [(set (match_operand:SI 0 "register_operand" "=r,r") 15788 (if_then_else:SI (match_operator 1 "ix86_comparison_operator" 15789 [(reg 17) (const_int 0)]) 15790 (match_operand:SI 2 "nonimmediate_operand" "rm,0") 15791 (match_operand:SI 3 "nonimmediate_operand" "0,rm")))] 15792 "TARGET_CMOVE 15793 && (GET_CODE (operands[2]) != MEM || GET_CODE (operands[3]) != MEM)" 15794 "@ | 15916 [(set_attr "type" "icmov") 15917 (set_attr "mode" "DI")]) 15918 15919(define_expand "movsicc" 15920 [(set (match_operand:SI 0 "register_operand" "") 15921 (if_then_else:SI (match_operand 1 "comparison_operator" "") 15922 (match_operand:SI 2 "general_operand" "") 15923 (match_operand:SI 3 "general_operand" "")))] --- 24 unchanged lines hidden (view full) --- 15948 [(set (match_operand:SI 0 "register_operand" "=r,r") 15949 (if_then_else:SI (match_operator 1 "ix86_comparison_operator" 15950 [(reg 17) (const_int 0)]) 15951 (match_operand:SI 2 "nonimmediate_operand" "rm,0") 15952 (match_operand:SI 3 "nonimmediate_operand" "0,rm")))] 15953 "TARGET_CMOVE 15954 && (GET_CODE (operands[2]) != MEM || GET_CODE (operands[3]) != MEM)" 15955 "@ |
15795 cmov%C1\t{%2, %0|%0, %2} 15796 cmov%c1\t{%3, %0|%0, %3}" | 15956 cmov%O2%C1\t{%2, %0|%0, %2} 15957 cmov%O2%c1\t{%3, %0|%0, %3}" |
15797 [(set_attr "type" "icmov") 15798 (set_attr "mode" "SI")]) 15799 15800(define_expand "movhicc" 15801 [(set (match_operand:HI 0 "register_operand" "") 15802 (if_then_else:HI (match_operand 1 "comparison_operator" "") 15803 (match_operand:HI 2 "nonimmediate_operand" "") 15804 (match_operand:HI 3 "nonimmediate_operand" "")))] --- 4 unchanged lines hidden (view full) --- 15809 [(set (match_operand:HI 0 "register_operand" "=r,r") 15810 (if_then_else:HI (match_operator 1 "ix86_comparison_operator" 15811 [(reg 17) (const_int 0)]) 15812 (match_operand:HI 2 "nonimmediate_operand" "rm,0") 15813 (match_operand:HI 3 "nonimmediate_operand" "0,rm")))] 15814 "TARGET_CMOVE 15815 && (GET_CODE (operands[2]) != MEM || GET_CODE (operands[3]) != MEM)" 15816 "@ | 15958 [(set_attr "type" "icmov") 15959 (set_attr "mode" "SI")]) 15960 15961(define_expand "movhicc" 15962 [(set (match_operand:HI 0 "register_operand" "") 15963 (if_then_else:HI (match_operand 1 "comparison_operator" "") 15964 (match_operand:HI 2 "nonimmediate_operand" "") 15965 (match_operand:HI 3 "nonimmediate_operand" "")))] --- 4 unchanged lines hidden (view full) --- 15970 [(set (match_operand:HI 0 "register_operand" "=r,r") 15971 (if_then_else:HI (match_operator 1 "ix86_comparison_operator" 15972 [(reg 17) (const_int 0)]) 15973 (match_operand:HI 2 "nonimmediate_operand" "rm,0") 15974 (match_operand:HI 3 "nonimmediate_operand" "0,rm")))] 15975 "TARGET_CMOVE 15976 && (GET_CODE (operands[2]) != MEM || GET_CODE (operands[3]) != MEM)" 15977 "@ |
15817 cmov%C1\t{%2, %0|%0, %2} 15818 cmov%c1\t{%3, %0|%0, %3}" | 15978 cmov%O2%C1\t{%2, %0|%0, %2} 15979 cmov%O2%c1\t{%3, %0|%0, %3}" |
15819 [(set_attr "type" "icmov") 15820 (set_attr "mode" "HI")]) 15821 15822(define_expand "movsfcc" 15823 [(set (match_operand:SF 0 "register_operand" "") 15824 (if_then_else:SF (match_operand 1 "comparison_operator" "") 15825 (match_operand:SF 2 "register_operand" "") 15826 (match_operand:SF 3 "register_operand" "")))] --- 6 unchanged lines hidden (view full) --- 15833 [(reg 17) (const_int 0)]) 15834 (match_operand:SF 2 "nonimmediate_operand" "f,0,rm,0") 15835 (match_operand:SF 3 "nonimmediate_operand" "0,f,0,rm")))] 15836 "TARGET_CMOVE 15837 && (GET_CODE (operands[2]) != MEM || GET_CODE (operands[3]) != MEM)" 15838 "@ 15839 fcmov%F1\t{%2, %0|%0, %2} 15840 fcmov%f1\t{%3, %0|%0, %3} | 15980 [(set_attr "type" "icmov") 15981 (set_attr "mode" "HI")]) 15982 15983(define_expand "movsfcc" 15984 [(set (match_operand:SF 0 "register_operand" "") 15985 (if_then_else:SF (match_operand 1 "comparison_operator" "") 15986 (match_operand:SF 2 "register_operand" "") 15987 (match_operand:SF 3 "register_operand" "")))] --- 6 unchanged lines hidden (view full) --- 15994 [(reg 17) (const_int 0)]) 15995 (match_operand:SF 2 "nonimmediate_operand" "f,0,rm,0") 15996 (match_operand:SF 3 "nonimmediate_operand" "0,f,0,rm")))] 15997 "TARGET_CMOVE 15998 && (GET_CODE (operands[2]) != MEM || GET_CODE (operands[3]) != MEM)" 15999 "@ 16000 fcmov%F1\t{%2, %0|%0, %2} 16001 fcmov%f1\t{%3, %0|%0, %3} |
15841 cmov%C1\t{%2, %0|%0, %2} 15842 cmov%c1\t{%3, %0|%0, %3}" | 16002 cmov%O2%C1\t{%2, %0|%0, %2} 16003 cmov%O2%c1\t{%3, %0|%0, %3}" |
15843 [(set_attr "type" "fcmov,fcmov,icmov,icmov") 15844 (set_attr "mode" "SF,SF,SI,SI")]) 15845 15846(define_expand "movdfcc" 15847 [(set (match_operand:DF 0 "register_operand" "") 15848 (if_then_else:DF (match_operand 1 "comparison_operator" "") 15849 (match_operand:DF 2 "register_operand" "") 15850 (match_operand:DF 3 "register_operand" "")))] --- 22 unchanged lines hidden (view full) --- 15873 [(reg 17) (const_int 0)]) 15874 (match_operand:DF 2 "nonimmediate_operand" "f,0,rm,0") 15875 (match_operand:DF 3 "nonimmediate_operand" "0,f,0,rm")))] 15876 "TARGET_64BIT && TARGET_CMOVE 15877 && (GET_CODE (operands[2]) != MEM || GET_CODE (operands[3]) != MEM)" 15878 "@ 15879 fcmov%F1\t{%2, %0|%0, %2} 15880 fcmov%f1\t{%3, %0|%0, %3} | 16004 [(set_attr "type" "fcmov,fcmov,icmov,icmov") 16005 (set_attr "mode" "SF,SF,SI,SI")]) 16006 16007(define_expand "movdfcc" 16008 [(set (match_operand:DF 0 "register_operand" "") 16009 (if_then_else:DF (match_operand 1 "comparison_operator" "") 16010 (match_operand:DF 2 "register_operand" "") 16011 (match_operand:DF 3 "register_operand" "")))] --- 22 unchanged lines hidden (view full) --- 16034 [(reg 17) (const_int 0)]) 16035 (match_operand:DF 2 "nonimmediate_operand" "f,0,rm,0") 16036 (match_operand:DF 3 "nonimmediate_operand" "0,f,0,rm")))] 16037 "TARGET_64BIT && TARGET_CMOVE 16038 && (GET_CODE (operands[2]) != MEM || GET_CODE (operands[3]) != MEM)" 16039 "@ 16040 fcmov%F1\t{%2, %0|%0, %2} 16041 fcmov%f1\t{%3, %0|%0, %3} |
15881 cmov%C1\t{%2, %0|%0, %2} 15882 cmov%c1\t{%3, %0|%0, %3}" | 16042 cmov%O2%C1\t{%2, %0|%0, %2} 16043 cmov%O2%c1\t{%3, %0|%0, %3}" |
15883 [(set_attr "type" "fcmov,fcmov,icmov,icmov") 15884 (set_attr "mode" "DF")]) 15885 15886(define_split 15887 [(set (match_operand:DF 0 "register_operand" "") 15888 (if_then_else:DF (match_operator 1 "fcmov_comparison_operator" 15889 [(match_operand 4 "" "") (const_int 0)]) 15890 (match_operand:DF 2 "nonimmediate_operand" "") --- 71 unchanged lines hidden (view full) --- 15962 (match_dup 1) 15963 (match_dup 2))) 15964 (clobber (reg:CC 17))] 15965 "TARGET_SSE && TARGET_IEEE_FP" 15966 "#") 15967 15968(define_insn "*minsf_nonieee" 15969 [(set (match_operand:SF 0 "register_operand" "=x#f,f#x") | 16044 [(set_attr "type" "fcmov,fcmov,icmov,icmov") 16045 (set_attr "mode" "DF")]) 16046 16047(define_split 16048 [(set (match_operand:DF 0 "register_operand" "") 16049 (if_then_else:DF (match_operator 1 "fcmov_comparison_operator" 16050 [(match_operand 4 "" "") (const_int 0)]) 16051 (match_operand:DF 2 "nonimmediate_operand" "") --- 71 unchanged lines hidden (view full) --- 16123 (match_dup 1) 16124 (match_dup 2))) 16125 (clobber (reg:CC 17))] 16126 "TARGET_SSE && TARGET_IEEE_FP" 16127 "#") 16128 16129(define_insn "*minsf_nonieee" 16130 [(set (match_operand:SF 0 "register_operand" "=x#f,f#x") |
15970 (if_then_else:SF (lt (match_operand:SF 1 "register_operand" "%0,0") | 16131 (if_then_else:SF (lt (match_operand:SF 1 "nonimmediate_operand" "%0,0") |
15971 (match_operand:SF 2 "nonimmediate_operand" "xm#f,f#x")) 15972 (match_dup 1) 15973 (match_dup 2))) 15974 (clobber (reg:CC 17))] | 16132 (match_operand:SF 2 "nonimmediate_operand" "xm#f,f#x")) 16133 (match_dup 1) 16134 (match_dup 2))) 16135 (clobber (reg:CC 17))] |
15975 "TARGET_SSE && !TARGET_IEEE_FP" | 16136 "TARGET_SSE && !TARGET_IEEE_FP 16137 && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" |
15976 "#") 15977 15978(define_split 15979 [(set (match_operand:SF 0 "register_operand" "") 15980 (if_then_else:SF (lt (match_operand:SF 1 "register_operand" "") 15981 (match_operand:SF 2 "nonimmediate_operand" "")) 15982 (match_operand:SF 3 "register_operand" "") 15983 (match_operand:SF 4 "nonimmediate_operand" ""))) --- 60 unchanged lines hidden (view full) --- 16044 (match_dup 1) 16045 (match_dup 2))) 16046 (clobber (reg:CC 17))] 16047 "TARGET_SSE2 && TARGET_IEEE_FP && TARGET_SSE_MATH" 16048 "#") 16049 16050(define_insn "*mindf_nonieee" 16051 [(set (match_operand:DF 0 "register_operand" "=Y#f,f#Y") | 16138 "#") 16139 16140(define_split 16141 [(set (match_operand:SF 0 "register_operand" "") 16142 (if_then_else:SF (lt (match_operand:SF 1 "register_operand" "") 16143 (match_operand:SF 2 "nonimmediate_operand" "")) 16144 (match_operand:SF 3 "register_operand" "") 16145 (match_operand:SF 4 "nonimmediate_operand" ""))) --- 60 unchanged lines hidden (view full) --- 16206 (match_dup 1) 16207 (match_dup 2))) 16208 (clobber (reg:CC 17))] 16209 "TARGET_SSE2 && TARGET_IEEE_FP && TARGET_SSE_MATH" 16210 "#") 16211 16212(define_insn "*mindf_nonieee" 16213 [(set (match_operand:DF 0 "register_operand" "=Y#f,f#Y") |
16052 (if_then_else:DF (lt (match_operand:DF 1 "register_operand" "%0,0") | 16214 (if_then_else:DF (lt (match_operand:DF 1 "nonimmediate_operand" "%0,0") |
16053 (match_operand:DF 2 "nonimmediate_operand" "Ym#f,f#Y")) 16054 (match_dup 1) 16055 (match_dup 2))) 16056 (clobber (reg:CC 17))] | 16215 (match_operand:DF 2 "nonimmediate_operand" "Ym#f,f#Y")) 16216 (match_dup 1) 16217 (match_dup 2))) 16218 (clobber (reg:CC 17))] |
16057 "TARGET_SSE2 && TARGET_SSE_MATH && !TARGET_IEEE_FP" | 16219 "TARGET_SSE2 && TARGET_SSE_MATH && !TARGET_IEEE_FP 16220 && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" |
16058 "#") 16059 16060(define_split 16061 [(set (match_operand:DF 0 "register_operand" "") 16062 (if_then_else:DF (lt (match_operand:DF 1 "register_operand" "") 16063 (match_operand:DF 2 "nonimmediate_operand" "")) 16064 (match_operand:DF 3 "register_operand" "") 16065 (match_operand:DF 4 "nonimmediate_operand" ""))) --- 59 unchanged lines hidden (view full) --- 16125 (match_dup 1) 16126 (match_dup 2))) 16127 (clobber (reg:CC 17))] 16128 "TARGET_SSE && TARGET_IEEE_FP" 16129 "#") 16130 16131(define_insn "*maxsf_nonieee" 16132 [(set (match_operand:SF 0 "register_operand" "=x#f,f#x") | 16221 "#") 16222 16223(define_split 16224 [(set (match_operand:DF 0 "register_operand" "") 16225 (if_then_else:DF (lt (match_operand:DF 1 "register_operand" "") 16226 (match_operand:DF 2 "nonimmediate_operand" "")) 16227 (match_operand:DF 3 "register_operand" "") 16228 (match_operand:DF 4 "nonimmediate_operand" ""))) --- 59 unchanged lines hidden (view full) --- 16288 (match_dup 1) 16289 (match_dup 2))) 16290 (clobber (reg:CC 17))] 16291 "TARGET_SSE && TARGET_IEEE_FP" 16292 "#") 16293 16294(define_insn "*maxsf_nonieee" 16295 [(set (match_operand:SF 0 "register_operand" "=x#f,f#x") |
16133 (if_then_else:SF (gt (match_operand:SF 1 "register_operand" "%0,0") | 16296 (if_then_else:SF (gt (match_operand:SF 1 "nonimmediate_operand" "%0,0") |
16134 (match_operand:SF 2 "nonimmediate_operand" "xm#f,f#x")) 16135 (match_dup 1) 16136 (match_dup 2))) 16137 (clobber (reg:CC 17))] | 16297 (match_operand:SF 2 "nonimmediate_operand" "xm#f,f#x")) 16298 (match_dup 1) 16299 (match_dup 2))) 16300 (clobber (reg:CC 17))] |
16138 "TARGET_SSE && !TARGET_IEEE_FP" | 16301 "TARGET_SSE && !TARGET_IEEE_FP 16302 && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" |
16139 "#") 16140 16141(define_split 16142 [(set (match_operand:SF 0 "register_operand" "") 16143 (if_then_else:SF (gt (match_operand:SF 1 "register_operand" "") 16144 (match_operand:SF 2 "nonimmediate_operand" "")) 16145 (match_operand:SF 3 "register_operand" "") 16146 (match_operand:SF 4 "nonimmediate_operand" ""))) --- 58 unchanged lines hidden (view full) --- 16205 (match_dup 1) 16206 (match_dup 2))) 16207 (clobber (reg:CC 17))] 16208 "TARGET_SSE2 && TARGET_SSE_MATH && TARGET_IEEE_FP" 16209 "#") 16210 16211(define_insn "*maxdf_nonieee" 16212 [(set (match_operand:DF 0 "register_operand" "=Y#f,f#Y") | 16303 "#") 16304 16305(define_split 16306 [(set (match_operand:SF 0 "register_operand" "") 16307 (if_then_else:SF (gt (match_operand:SF 1 "register_operand" "") 16308 (match_operand:SF 2 "nonimmediate_operand" "")) 16309 (match_operand:SF 3 "register_operand" "") 16310 (match_operand:SF 4 "nonimmediate_operand" ""))) --- 58 unchanged lines hidden (view full) --- 16369 (match_dup 1) 16370 (match_dup 2))) 16371 (clobber (reg:CC 17))] 16372 "TARGET_SSE2 && TARGET_SSE_MATH && TARGET_IEEE_FP" 16373 "#") 16374 16375(define_insn "*maxdf_nonieee" 16376 [(set (match_operand:DF 0 "register_operand" "=Y#f,f#Y") |
16213 (if_then_else:DF (gt (match_operand:DF 1 "register_operand" "%0,0") | 16377 (if_then_else:DF (gt (match_operand:DF 1 "nonimmediate_operand" "%0,0") |
16214 (match_operand:DF 2 "nonimmediate_operand" "Ym#f,f#Y")) 16215 (match_dup 1) 16216 (match_dup 2))) 16217 (clobber (reg:CC 17))] | 16378 (match_operand:DF 2 "nonimmediate_operand" "Ym#f,f#Y")) 16379 (match_dup 1) 16380 (match_dup 2))) 16381 (clobber (reg:CC 17))] |
16218 "TARGET_SSE2 && TARGET_SSE_MATH && !TARGET_IEEE_FP" | 16382 "TARGET_SSE2 && TARGET_SSE_MATH && !TARGET_IEEE_FP 16383 && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" |
16219 "#") 16220 16221(define_split 16222 [(set (match_operand:DF 0 "register_operand" "") 16223 (if_then_else:DF (gt (match_operand:DF 1 "register_operand" "") 16224 (match_operand:DF 2 "nonimmediate_operand" "")) 16225 (match_operand:DF 3 "register_operand" "") 16226 (match_operand:DF 4 "nonimmediate_operand" ""))) --- 1715 unchanged lines hidden (view full) --- 17942 "TARGET_SSE || TARGET_3DNOW_A" 17943 "pmovmskb\t{%1, %0|%0, %1}" 17944 [(set_attr "type" "sse")]) 17945 17946(define_insn "mmx_maskmovq" 17947 [(set (mem:V8QI (match_operand:SI 0 "register_operand" "D")) 17948 (unspec:V8QI [(match_operand:V8QI 1 "register_operand" "y") 17949 (match_operand:V8QI 2 "register_operand" "y")] 32))] | 16384 "#") 16385 16386(define_split 16387 [(set (match_operand:DF 0 "register_operand" "") 16388 (if_then_else:DF (gt (match_operand:DF 1 "register_operand" "") 16389 (match_operand:DF 2 "nonimmediate_operand" "")) 16390 (match_operand:DF 3 "register_operand" "") 16391 (match_operand:DF 4 "nonimmediate_operand" ""))) --- 1715 unchanged lines hidden (view full) --- 18107 "TARGET_SSE || TARGET_3DNOW_A" 18108 "pmovmskb\t{%1, %0|%0, %1}" 18109 [(set_attr "type" "sse")]) 18110 18111(define_insn "mmx_maskmovq" 18112 [(set (mem:V8QI (match_operand:SI 0 "register_operand" "D")) 18113 (unspec:V8QI [(match_operand:V8QI 1 "register_operand" "y") 18114 (match_operand:V8QI 2 "register_operand" "y")] 32))] |
17950 "TARGET_SSE || TARGET_3DNOW_A" | 18115 "(TARGET_SSE || TARGET_3DNOW_A) && !TARGET_64BIT" |
17951 ;; @@@ check ordering of operands in intel/nonintel syntax 17952 "maskmovq\t{%2, %1|%1, %2}" 17953 [(set_attr "type" "sse")]) 17954 | 18116 ;; @@@ check ordering of operands in intel/nonintel syntax 18117 "maskmovq\t{%2, %1|%1, %2}" 18118 [(set_attr "type" "sse")]) 18119 |
18120(define_insn "mmx_maskmovq_rex" 18121 [(set (mem:V8QI (match_operand:DI 0 "register_operand" "D")) 18122 (unspec:V8QI [(match_operand:V8QI 1 "register_operand" "y") 18123 (match_operand:V8QI 2 "register_operand" "y")] 32))] 18124 "(TARGET_SSE || TARGET_3DNOW_A) && TARGET_64BIT" 18125 ;; @@@ check ordering of operands in intel/nonintel syntax 18126 "maskmovq\t{%2, %1|%1, %2}" 18127 [(set_attr "type" "sse")]) 18128 |
|
17955(define_insn "sse_movntv4sf" 17956 [(set (match_operand:V4SF 0 "memory_operand" "=m") 17957 (unspec:V4SF [(match_operand:V4SF 1 "register_operand" "x")] 34))] 17958 "TARGET_SSE" 17959 "movntps\t{%1, %0|%0, %1}" 17960 [(set_attr "type" "sse")]) 17961 17962(define_insn "sse_movntdi" --- 263 unchanged lines hidden (view full) --- 18226 (and:TI (subreg:TI (match_operand:SF 1 "register_operand" "0") 0) 18227 (match_operand:TI 2 "nonimmediate_operand" "xm")))] 18228 "TARGET_SSE" 18229 "andps\t{%2, %0|%0, %2}" 18230 [(set_attr "type" "sse")]) 18231 18232(define_insn "sse_andti3" 18233 [(set (match_operand:TI 0 "register_operand" "=x") | 18129(define_insn "sse_movntv4sf" 18130 [(set (match_operand:V4SF 0 "memory_operand" "=m") 18131 (unspec:V4SF [(match_operand:V4SF 1 "register_operand" "x")] 34))] 18132 "TARGET_SSE" 18133 "movntps\t{%1, %0|%0, %1}" 18134 [(set_attr "type" "sse")]) 18135 18136(define_insn "sse_movntdi" --- 263 unchanged lines hidden (view full) --- 18400 (and:TI (subreg:TI (match_operand:SF 1 "register_operand" "0") 0) 18401 (match_operand:TI 2 "nonimmediate_operand" "xm")))] 18402 "TARGET_SSE" 18403 "andps\t{%2, %0|%0, %2}" 18404 [(set_attr "type" "sse")]) 18405 18406(define_insn "sse_andti3" 18407 [(set (match_operand:TI 0 "register_operand" "=x") |
18234 (and:TI (match_operand:TI 1 "register_operand" "%0") | 18408 (and:TI (match_operand:TI 1 "nonimmediate_operand" "%0") |
18235 (match_operand:TI 2 "nonimmediate_operand" "xm")))] | 18409 (match_operand:TI 2 "nonimmediate_operand" "xm")))] |
18236 "TARGET_SSE && !TARGET_SSE2" | 18410 "TARGET_SSE && !TARGET_SSE2 18411 && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" |
18237 "andps\t{%2, %0|%0, %2}" 18238 [(set_attr "type" "sse")]) 18239 18240(define_insn "*sse_andti3_sse2" 18241 [(set (match_operand:TI 0 "register_operand" "=x") | 18412 "andps\t{%2, %0|%0, %2}" 18413 [(set_attr "type" "sse")]) 18414 18415(define_insn "*sse_andti3_sse2" 18416 [(set (match_operand:TI 0 "register_operand" "=x") |
18242 (and:TI (match_operand:TI 1 "register_operand" "%0") | 18417 (and:TI (match_operand:TI 1 "nonimmediate_operand" "%0") |
18243 (match_operand:TI 2 "nonimmediate_operand" "xm")))] | 18418 (match_operand:TI 2 "nonimmediate_operand" "xm")))] |
18244 "TARGET_SSE2" | 18419 "TARGET_SSE2 18420 && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" |
18245 "pand\t{%2, %0|%0, %2}" 18246 [(set_attr "type" "sse")]) 18247 18248(define_insn "*sse_nandti3_df" 18249 [(set (subreg:TI (match_operand:DF 0 "register_operand" "=Y") 0) 18250 (and:TI (not:TI (subreg:TI (match_operand:DF 1 "register_operand" "0") 0)) 18251 (match_operand:TI 2 "nonimmediate_operand" "Ym")))] 18252 "TARGET_SSE2" --- 53 unchanged lines hidden (view full) --- 18306 (ior:TI (subreg:TI (match_operand:SF 1 "register_operand" "0") 0) 18307 (match_operand:TI 2 "nonimmediate_operand" "xm")))] 18308 "TARGET_SSE" 18309 "orps\t{%2, %0|%0, %2}" 18310 [(set_attr "type" "sse")]) 18311 18312(define_insn "sse_iorti3" 18313 [(set (match_operand:TI 0 "register_operand" "=x") | 18421 "pand\t{%2, %0|%0, %2}" 18422 [(set_attr "type" "sse")]) 18423 18424(define_insn "*sse_nandti3_df" 18425 [(set (subreg:TI (match_operand:DF 0 "register_operand" "=Y") 0) 18426 (and:TI (not:TI (subreg:TI (match_operand:DF 1 "register_operand" "0") 0)) 18427 (match_operand:TI 2 "nonimmediate_operand" "Ym")))] 18428 "TARGET_SSE2" --- 53 unchanged lines hidden (view full) --- 18482 (ior:TI (subreg:TI (match_operand:SF 1 "register_operand" "0") 0) 18483 (match_operand:TI 2 "nonimmediate_operand" "xm")))] 18484 "TARGET_SSE" 18485 "orps\t{%2, %0|%0, %2}" 18486 [(set_attr "type" "sse")]) 18487 18488(define_insn "sse_iorti3" 18489 [(set (match_operand:TI 0 "register_operand" "=x") |
18314 (ior:TI (match_operand:TI 1 "register_operand" "%0") | 18490 (ior:TI (match_operand:TI 1 "nonimmediate_operand" "%0") |
18315 (match_operand:TI 2 "nonimmediate_operand" "xm")))] | 18491 (match_operand:TI 2 "nonimmediate_operand" "xm")))] |
18316 "TARGET_SSE && !TARGET_SSE2" | 18492 "TARGET_SSE && !TARGET_SSE2 18493 && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" |
18317 "orps\t{%2, %0|%0, %2}" 18318 [(set_attr "type" "sse")]) 18319 18320(define_insn "*sse_iorti3_sse2" 18321 [(set (match_operand:TI 0 "register_operand" "=x") | 18494 "orps\t{%2, %0|%0, %2}" 18495 [(set_attr "type" "sse")]) 18496 18497(define_insn "*sse_iorti3_sse2" 18498 [(set (match_operand:TI 0 "register_operand" "=x") |
18322 (ior:TI (match_operand:TI 1 "register_operand" "%0") | 18499 (ior:TI (match_operand:TI 1 "nonimmediate_operand" "%0") |
18323 (match_operand:TI 2 "nonimmediate_operand" "xm")))] | 18500 (match_operand:TI 2 "nonimmediate_operand" "xm")))] |
18324 "TARGET_SSE2" | 18501 "TARGET_SSE2 18502 && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" |
18325 "por\t{%2, %0|%0, %2}" 18326 [(set_attr "type" "sse")]) 18327 18328(define_insn "*sse_xorti3_df_1" 18329 [(set (subreg:TI (match_operand:DF 0 "register_operand" "=Y") 0) 18330 (xor:TI (subreg:TI (match_operand:DF 1 "register_operand" "%0") 0) 18331 (subreg:TI (match_operand:DF 2 "register_operand" "Y") 0)))] 18332 "TARGET_SSE2" --- 21 unchanged lines hidden (view full) --- 18354 (xor:TI (subreg:TI (match_operand:SF 1 "register_operand" "0") 0) 18355 (match_operand:TI 2 "nonimmediate_operand" "xm")))] 18356 "TARGET_SSE" 18357 "xorps\t{%2, %0|%0, %2}" 18358 [(set_attr "type" "sse")]) 18359 18360(define_insn "sse_xorti3" 18361 [(set (match_operand:TI 0 "register_operand" "=x") | 18503 "por\t{%2, %0|%0, %2}" 18504 [(set_attr "type" "sse")]) 18505 18506(define_insn "*sse_xorti3_df_1" 18507 [(set (subreg:TI (match_operand:DF 0 "register_operand" "=Y") 0) 18508 (xor:TI (subreg:TI (match_operand:DF 1 "register_operand" "%0") 0) 18509 (subreg:TI (match_operand:DF 2 "register_operand" "Y") 0)))] 18510 "TARGET_SSE2" --- 21 unchanged lines hidden (view full) --- 18532 (xor:TI (subreg:TI (match_operand:SF 1 "register_operand" "0") 0) 18533 (match_operand:TI 2 "nonimmediate_operand" "xm")))] 18534 "TARGET_SSE" 18535 "xorps\t{%2, %0|%0, %2}" 18536 [(set_attr "type" "sse")]) 18537 18538(define_insn "sse_xorti3" 18539 [(set (match_operand:TI 0 "register_operand" "=x") |
18362 (xor:TI (match_operand:TI 1 "register_operand" "%0") | 18540 (xor:TI (match_operand:TI 1 "nonimmediate_operand" "%0") |
18363 (match_operand:TI 2 "nonimmediate_operand" "xm")))] | 18541 (match_operand:TI 2 "nonimmediate_operand" "xm")))] |
18364 "TARGET_SSE && !TARGET_SSE2" | 18542 "TARGET_SSE && !TARGET_SSE2 18543 && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" |
18365 "xorps\t{%2, %0|%0, %2}" 18366 [(set_attr "type" "sse")]) 18367 18368(define_insn "*sse_xorti3_sse2" 18369 [(set (match_operand:TI 0 "register_operand" "=x") | 18544 "xorps\t{%2, %0|%0, %2}" 18545 [(set_attr "type" "sse")]) 18546 18547(define_insn "*sse_xorti3_sse2" 18548 [(set (match_operand:TI 0 "register_operand" "=x") |
18370 (xor:TI (match_operand:TI 1 "register_operand" "%0") | 18549 (xor:TI (match_operand:TI 1 "nonimmediate_operand" "%0") |
18371 (match_operand:TI 2 "nonimmediate_operand" "xm")))] | 18550 (match_operand:TI 2 "nonimmediate_operand" "xm")))] |
18372 "TARGET_SSE2" | 18551 "TARGET_SSE2 18552 && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" |
18373 "pxor\t{%2, %0|%0, %2}" 18374 [(set_attr "type" "sse")]) 18375 18376;; Use xor, but don't show input operands so they aren't live before 18377;; this insn. 18378(define_insn "sse_clrv4sf" 18379 [(set (match_operand:V4SF 0 "register_operand" "=x") 18380 (unspec:V4SF [(const_int 0)] 45))] --- 453 unchanged lines hidden (view full) --- 18834;; MMX unsigned averages/sum of absolute differences 18835 18836(define_insn "mmx_uavgv8qi3" 18837 [(set (match_operand:V8QI 0 "register_operand" "=y") 18838 (ashiftrt:V8QI 18839 (plus:V8QI (plus:V8QI 18840 (match_operand:V8QI 1 "register_operand" "0") 18841 (match_operand:V8QI 2 "nonimmediate_operand" "ym")) | 18553 "pxor\t{%2, %0|%0, %2}" 18554 [(set_attr "type" "sse")]) 18555 18556;; Use xor, but don't show input operands so they aren't live before 18557;; this insn. 18558(define_insn "sse_clrv4sf" 18559 [(set (match_operand:V4SF 0 "register_operand" "=x") 18560 (unspec:V4SF [(const_int 0)] 45))] --- 453 unchanged lines hidden (view full) --- 19014;; MMX unsigned averages/sum of absolute differences 19015 19016(define_insn "mmx_uavgv8qi3" 19017 [(set (match_operand:V8QI 0 "register_operand" "=y") 19018 (ashiftrt:V8QI 19019 (plus:V8QI (plus:V8QI 19020 (match_operand:V8QI 1 "register_operand" "0") 19021 (match_operand:V8QI 2 "nonimmediate_operand" "ym")) |
18842 (vec_const:V8QI (parallel [(const_int 1) 18843 (const_int 1) 18844 (const_int 1) 18845 (const_int 1) 18846 (const_int 1) 18847 (const_int 1) 18848 (const_int 1) 18849 (const_int 1)]))) | 19022 (const_vector:V8QI [(const_int 1) 19023 (const_int 1) 19024 (const_int 1) 19025 (const_int 1) 19026 (const_int 1) 19027 (const_int 1) 19028 (const_int 1) 19029 (const_int 1)])) |
18850 (const_int 1)))] 18851 "TARGET_SSE || TARGET_3DNOW_A" 18852 "pavgb\t{%2, %0|%0, %2}" 18853 [(set_attr "type" "sse")]) 18854 18855(define_insn "mmx_uavgv4hi3" 18856 [(set (match_operand:V4HI 0 "register_operand" "=y") 18857 (ashiftrt:V4HI 18858 (plus:V4HI (plus:V4HI 18859 (match_operand:V4HI 1 "register_operand" "0") 18860 (match_operand:V4HI 2 "nonimmediate_operand" "ym")) | 19030 (const_int 1)))] 19031 "TARGET_SSE || TARGET_3DNOW_A" 19032 "pavgb\t{%2, %0|%0, %2}" 19033 [(set_attr "type" "sse")]) 19034 19035(define_insn "mmx_uavgv4hi3" 19036 [(set (match_operand:V4HI 0 "register_operand" "=y") 19037 (ashiftrt:V4HI 19038 (plus:V4HI (plus:V4HI 19039 (match_operand:V4HI 1 "register_operand" "0") 19040 (match_operand:V4HI 2 "nonimmediate_operand" "ym")) |
18861 (vec_const:V4HI (parallel [(const_int 1) 18862 (const_int 1) 18863 (const_int 1) 18864 (const_int 1)]))) | 19041 (const_vector:V4HI [(const_int 1) 19042 (const_int 1) 19043 (const_int 1) 19044 (const_int 1)])) |
18865 (const_int 1)))] 18866 "TARGET_SSE || TARGET_3DNOW_A" 18867 "pavgw\t{%2, %0|%0, %2}" 18868 [(set_attr "type" "sse")]) 18869 18870(define_insn "mmx_psadbw" 18871 [(set (match_operand:V8QI 0 "register_operand" "=y") 18872 (abs:V8QI (minus:V8QI (match_operand:V8QI 1 "register_operand" "0") --- 697 unchanged lines hidden (view full) --- 19570 (truncate:V4HI 19571 (lshiftrt:V4SI 19572 (plus:V4SI 19573 (mult:V4SI 19574 (sign_extend:V4SI 19575 (match_operand:V4HI 1 "register_operand" "0")) 19576 (sign_extend:V4SI 19577 (match_operand:V4HI 2 "nonimmediate_operand" "ym"))) | 19045 (const_int 1)))] 19046 "TARGET_SSE || TARGET_3DNOW_A" 19047 "pavgw\t{%2, %0|%0, %2}" 19048 [(set_attr "type" "sse")]) 19049 19050(define_insn "mmx_psadbw" 19051 [(set (match_operand:V8QI 0 "register_operand" "=y") 19052 (abs:V8QI (minus:V8QI (match_operand:V8QI 1 "register_operand" "0") --- 697 unchanged lines hidden (view full) --- 19750 (truncate:V4HI 19751 (lshiftrt:V4SI 19752 (plus:V4SI 19753 (mult:V4SI 19754 (sign_extend:V4SI 19755 (match_operand:V4HI 1 "register_operand" "0")) 19756 (sign_extend:V4SI 19757 (match_operand:V4HI 2 "nonimmediate_operand" "ym"))) |
19578 (vec_const:V4SI 19579 (parallel [(const_int 32768) 19580 (const_int 32768) 19581 (const_int 32768) 19582 (const_int 32768)]))) 19583 (const_int 16))))] | 19758 (const_vector:V4SI [(const_int 32768) 19759 (const_int 32768) 19760 (const_int 32768) 19761 (const_int 32768)])) 19762 (const_int 16))))] |
19584 "TARGET_3DNOW" 19585 "pmulhrw\\t{%2, %0|%0, %2}" 19586 [(set_attr "type" "mmx")]) 19587 19588(define_insn "pswapdv2si2" 19589 [(set (match_operand:V2SI 0 "register_operand" "=y") 19590 (vec_select:V2SI (match_operand:V2SI 1 "nonimmediate_operand" "ym") 19591 (parallel [(const_int 1) (const_int 0)])))] --- 66 unchanged lines hidden --- | 19763 "TARGET_3DNOW" 19764 "pmulhrw\\t{%2, %0|%0, %2}" 19765 [(set_attr "type" "mmx")]) 19766 19767(define_insn "pswapdv2si2" 19768 [(set (match_operand:V2SI 0 "register_operand" "=y") 19769 (vec_select:V2SI (match_operand:V2SI 1 "nonimmediate_operand" "ym") 19770 (parallel [(const_int 1) (const_int 0)])))] --- 66 unchanged lines hidden --- |