i386.md (addti3 splitter): Pass arrays of 3 operands to split_ti instead of three separate calls with...
* config/i386/i386.md (addti3 splitter): Pass arrays of 3 operands to split_ti instead of three separate calls with single member arrays. (subti3 splitter): Ditto. (adddi3 splitter): Ditto with split_di. (subdi3 splitter): Ditto. (negti2 splitter): Pass arrays of 2 operands to split_ti instead of two separate calls with single member arrays. Swap match_dup operands 1 and 2 to better fit into the array. (negdi2 splitter): Ditto with split_di. (movdfcc splitter): Pass arrays of 2 operands to split_di instead of two separate calls with single member arrays. Swap match_dup operands 6 and 7 to better fit into the array. From-SVN: r134403
This commit is contained in:
parent
6afce8909c
commit
c2b814b9ff
2 changed files with 41 additions and 37 deletions
|
@ -1,3 +1,18 @@
|
|||
2008-04-17 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
* config/i386/i386.md (addti3 splitter): Pass arrays of 3 operands
|
||||
to split_ti instead of three separate calls with single member arrays.
|
||||
(subti3 splitter): Ditto.
|
||||
(adddi3 splitter): Ditto with split_di.
|
||||
(subdi3 splitter): Ditto.
|
||||
(negti2 splitter): Pass arrays of 2 operands to split_ti instead of
|
||||
two separate calls with single member arrays. Swap match_dup
|
||||
operands 1 and 2 to better fit into the array.
|
||||
(negdi2 splitter): Ditto with split_di.
|
||||
(movdfcc splitter): Pass arrays of 2 operands to split_di instead of
|
||||
two separate calls with single member arrays. Swap match_dup operands
|
||||
6 and 7 to better fit into the array.
|
||||
|
||||
2008-04-17 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* config/i386/i386.c (sse_builtin_type): New.
|
||||
|
|
|
@ -2127,7 +2127,7 @@
|
|||
&& !x86_64_immediate_operand (operands[1], DImode) && 1"
|
||||
[(set (match_dup 0) (match_dup 1))
|
||||
(set (match_dup 2) (match_dup 3))]
|
||||
"split_di (operands + 1, 1, operands + 2, operands + 3);
|
||||
"split_di (&operands[1], 1, &operands[2], &operands[3]);
|
||||
operands[1] = gen_lowpart (DImode, operands[2]);
|
||||
operands[2] = gen_rtx_MEM (SImode, gen_rtx_PLUS (DImode, stack_pointer_rtx,
|
||||
GEN_INT (4)));
|
||||
|
@ -2142,7 +2142,7 @@
|
|||
&& !x86_64_immediate_operand (operands[1], DImode)"
|
||||
[(set (match_dup 0) (match_dup 1))
|
||||
(set (match_dup 2) (match_dup 3))]
|
||||
"split_di (operands + 1, 1, operands + 2, operands + 3);
|
||||
"split_di (&operands[1], 1, &operands[2], &operands[3]);
|
||||
operands[1] = gen_lowpart (DImode, operands[2]);
|
||||
operands[2] = gen_rtx_MEM (SImode, gen_rtx_PLUS (DImode, stack_pointer_rtx,
|
||||
GEN_INT (4)));
|
||||
|
@ -2367,7 +2367,7 @@
|
|||
&& !x86_64_immediate_operand (operands[1], DImode) && 1"
|
||||
[(set (match_dup 2) (match_dup 3))
|
||||
(set (match_dup 4) (match_dup 5))]
|
||||
"split_di (operands, 2, operands + 2, operands + 4);")
|
||||
"split_di (&operands[0], 2, &operands[2], &operands[4]);")
|
||||
|
||||
(define_split
|
||||
[(set (match_operand:DI 0 "memory_operand" "")
|
||||
|
@ -2378,7 +2378,7 @@
|
|||
&& !x86_64_immediate_operand (operands[1], DImode)"
|
||||
[(set (match_dup 2) (match_dup 3))
|
||||
(set (match_dup 4) (match_dup 5))]
|
||||
"split_di (operands, 2, operands + 2, operands + 4);")
|
||||
"split_di (&operands[0], 2, &operands[2], &operands[4]);")
|
||||
|
||||
(define_insn "*swapdi_rex64"
|
||||
[(set (match_operand:DI 0 "register_operand" "+r")
|
||||
|
@ -5522,9 +5522,7 @@
|
|||
(match_dup 4))
|
||||
(match_dup 5)))
|
||||
(clobber (reg:CC FLAGS_REG))])]
|
||||
"split_ti (operands+0, 1, operands+0, operands+3);
|
||||
split_ti (operands+1, 1, operands+1, operands+4);
|
||||
split_ti (operands+2, 1, operands+2, operands+5);")
|
||||
"split_ti (&operands[0], 3, &operands[0], &operands[3]);")
|
||||
|
||||
;; %%% splits for addsidi3
|
||||
; [(set (match_operand:DI 0 "nonimmediate_operand" "")
|
||||
|
@ -5561,9 +5559,7 @@
|
|||
(match_dup 4))
|
||||
(match_dup 5)))
|
||||
(clobber (reg:CC FLAGS_REG))])]
|
||||
"split_di (operands+0, 1, operands+0, operands+3);
|
||||
split_di (operands+1, 1, operands+1, operands+4);
|
||||
split_di (operands+2, 1, operands+2, operands+5);")
|
||||
"split_di (&operands[0], 3, &operands[0], &operands[3]);")
|
||||
|
||||
(define_insn "adddi3_carry_rex64"
|
||||
[(set (match_operand:DI 0 "nonimmediate_operand" "=rm,r")
|
||||
|
@ -7298,9 +7294,7 @@
|
|||
(plus:DI (ltu:DI (reg:CC FLAGS_REG) (const_int 0))
|
||||
(match_dup 5))))
|
||||
(clobber (reg:CC FLAGS_REG))])]
|
||||
"split_ti (operands+0, 1, operands+0, operands+3);
|
||||
split_ti (operands+1, 1, operands+1, operands+4);
|
||||
split_ti (operands+2, 1, operands+2, operands+5);")
|
||||
"split_ti (&operands[0], 3, &operands[0], &operands[3]);")
|
||||
|
||||
;; %%% splits for subsidi3
|
||||
|
||||
|
@ -7333,9 +7327,7 @@
|
|||
(plus:SI (ltu:SI (reg:CC FLAGS_REG) (const_int 0))
|
||||
(match_dup 5))))
|
||||
(clobber (reg:CC FLAGS_REG))])]
|
||||
"split_di (operands+0, 1, operands+0, operands+3);
|
||||
split_di (operands+1, 1, operands+1, operands+4);
|
||||
split_di (operands+2, 1, operands+2, operands+5);")
|
||||
"split_di (&operands[0], 3, &operands[0], &operands[3]);")
|
||||
|
||||
(define_insn "subdi3_carry_rex64"
|
||||
[(set (match_operand:DI 0 "nonimmediate_operand" "=rm,r")
|
||||
|
@ -10193,20 +10185,19 @@
|
|||
"TARGET_64BIT && reload_completed"
|
||||
[(parallel
|
||||
[(set (reg:CCZ FLAGS_REG)
|
||||
(compare:CCZ (neg:DI (match_dup 2)) (const_int 0)))
|
||||
(set (match_dup 0) (neg:DI (match_dup 2)))])
|
||||
(compare:CCZ (neg:DI (match_dup 1)) (const_int 0)))
|
||||
(set (match_dup 0) (neg:DI (match_dup 1)))])
|
||||
(parallel
|
||||
[(set (match_dup 1)
|
||||
[(set (match_dup 2)
|
||||
(plus:DI (plus:DI (ltu:DI (reg:CC FLAGS_REG) (const_int 0))
|
||||
(match_dup 3))
|
||||
(const_int 0)))
|
||||
(clobber (reg:CC FLAGS_REG))])
|
||||
(parallel
|
||||
[(set (match_dup 1)
|
||||
(neg:DI (match_dup 1)))
|
||||
[(set (match_dup 2)
|
||||
(neg:DI (match_dup 2)))
|
||||
(clobber (reg:CC FLAGS_REG))])]
|
||||
"split_ti (operands+1, 1, operands+2, operands+3);
|
||||
split_ti (operands+0, 1, operands+0, operands+1);")
|
||||
"split_ti (&operands[0], 2, &operands[0], &operands[2]);")
|
||||
|
||||
(define_expand "negdi2"
|
||||
[(parallel [(set (match_operand:DI 0 "nonimmediate_operand" "")
|
||||
|
@ -10230,20 +10221,19 @@
|
|||
"!TARGET_64BIT && reload_completed"
|
||||
[(parallel
|
||||
[(set (reg:CCZ FLAGS_REG)
|
||||
(compare:CCZ (neg:SI (match_dup 2)) (const_int 0)))
|
||||
(set (match_dup 0) (neg:SI (match_dup 2)))])
|
||||
(compare:CCZ (neg:SI (match_dup 1)) (const_int 0)))
|
||||
(set (match_dup 0) (neg:SI (match_dup 1)))])
|
||||
(parallel
|
||||
[(set (match_dup 1)
|
||||
[(set (match_dup 2)
|
||||
(plus:SI (plus:SI (ltu:SI (reg:CC FLAGS_REG) (const_int 0))
|
||||
(match_dup 3))
|
||||
(const_int 0)))
|
||||
(clobber (reg:CC FLAGS_REG))])
|
||||
(parallel
|
||||
[(set (match_dup 1)
|
||||
(neg:SI (match_dup 1)))
|
||||
[(set (match_dup 2)
|
||||
(neg:SI (match_dup 2)))
|
||||
(clobber (reg:CC FLAGS_REG))])]
|
||||
"split_di (operands+1, 1, operands+2, operands+3);
|
||||
split_di (operands+0, 1, operands+0, operands+1);")
|
||||
"split_di (&operands[0], 2, &operands[0], &operands[2]);");
|
||||
|
||||
(define_insn "*negdi2_1_rex64"
|
||||
[(set (match_operand:DI 0 "nonimmediate_operand" "=rm")
|
||||
|
@ -13225,7 +13215,7 @@
|
|||
(lshiftrt:SI (match_dup 3)
|
||||
(minus:QI (const_int 32) (match_dup 2)))))
|
||||
(clobber (reg:CC FLAGS_REG))])]
|
||||
"split_di (operands, 1, operands + 4, operands + 5);")
|
||||
"split_di (&operands[0], 1, &operands[4], &operands[5]);")
|
||||
|
||||
(define_insn "*rotlsi3_1_one_bit_rex64"
|
||||
[(set (match_operand:DI 0 "nonimmediate_operand" "=rm")
|
||||
|
@ -13461,7 +13451,7 @@
|
|||
(ashift:SI (match_dup 3)
|
||||
(minus:QI (const_int 32) (match_dup 2)))))
|
||||
(clobber (reg:CC FLAGS_REG))])]
|
||||
"split_di (operands, 1, operands + 4, operands + 5);")
|
||||
"split_di (&operands[0], 1, &operands[4], &operands[5]);")
|
||||
|
||||
(define_insn "*rotrdi3_1_one_bit_rex64"
|
||||
[(set (match_operand:DI 0 "nonimmediate_operand" "=rm")
|
||||
|
@ -19467,14 +19457,13 @@
|
|||
[(set (match_dup 2)
|
||||
(if_then_else:SI (match_op_dup 1 [(match_dup 4) (const_int 0)])
|
||||
(match_dup 5)
|
||||
(match_dup 7)))
|
||||
(match_dup 6)))
|
||||
(set (match_dup 3)
|
||||
(if_then_else:SI (match_op_dup 1 [(match_dup 4) (const_int 0)])
|
||||
(match_dup 6)
|
||||
(match_dup 7)
|
||||
(match_dup 8)))]
|
||||
"split_di (operands+2, 1, operands+5, operands+6);
|
||||
split_di (operands+3, 1, operands+7, operands+8);
|
||||
split_di (operands, 1, operands+2, operands+3);")
|
||||
"split_di (&operands[2], 2, &operands[5], &operands[7]);
|
||||
split_di (&operands[0], 1, &operands[2], &operands[3]);")
|
||||
|
||||
(define_insn "*movxfcc_1"
|
||||
[(set (match_operand:XF 0 "register_operand" "=f,f")
|
||||
|
|
Loading…
Add table
Reference in a new issue