diff options
Diffstat (limited to 'meta/packages/gcc/gcc-4.2.3/arm-crunch-compare-geu.patch')
-rw-r--r-- | meta/packages/gcc/gcc-4.2.3/arm-crunch-compare-geu.patch | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/meta/packages/gcc/gcc-4.2.3/arm-crunch-compare-geu.patch b/meta/packages/gcc/gcc-4.2.3/arm-crunch-compare-geu.patch new file mode 100644 index 0000000000..3d27cc1d9d --- /dev/null +++ b/meta/packages/gcc/gcc-4.2.3/arm-crunch-compare-geu.patch | |||
@@ -0,0 +1,48 @@ | |||
1 | --- gcc-4.1.2/gcc/config/arm/arm.md-original 2007-06-08 06:39:41.000000000 +1000 | ||
2 | +++ gcc-4.1.2/gcc/config/arm/arm.md 2007-06-08 06:41:00.000000000 +1000 | ||
3 | @@ -7125,6 +7125,22 @@ | ||
4 | (set_attr "length" "8")] | ||
5 | ) | ||
6 | |||
7 | +; Special pattern to match GEU for MAVERICK. | ||
8 | +(define_insn "*arm_bgeu" | ||
9 | + [(set (pc) | ||
10 | + (if_then_else (geu (match_operand 1 "cc_register" "") (const_int 0)) | ||
11 | + (label_ref (match_operand 0 "" "")) | ||
12 | + (pc)))] | ||
13 | + "TARGET_ARM && (TARGET_MAVERICK)" | ||
14 | + "* | ||
15 | + gcc_assert (!arm_ccfsm_state); | ||
16 | + if (get_attr_cirrus (prev_active_insn(insn)) == CIRRUS_COMPARE) | ||
17 | + return \"beq\\t%l0\;bvs\\t%l0\"; else return \"bge\\t%l0\;nop\"; | ||
18 | + " | ||
19 | + [(set_attr "conds" "jump_clob") | ||
20 | + (set_attr "length" "8")] | ||
21 | +) | ||
22 | + | ||
23 | ; Special pattern to match UNLT for MAVERICK - UGLY since we need to test for Z=0 && V=0. | ||
24 | (define_insn "*arm_bunlt" | ||
25 | [(set (pc) | ||
26 | @@ -7240,6 +7256,22 @@ | ||
27 | (set_attr "length" "8")] | ||
28 | ) | ||
29 | |||
30 | +; Special pattern to match reversed GEU for MAVERICK. | ||
31 | +(define_insn "*arm_bgeu_reversed" | ||
32 | + [(set (pc) | ||
33 | + (if_then_else (geu (match_operand 1 "cc_register" "") (const_int 0)) | ||
34 | + (pc) | ||
35 | + (label_ref (match_operand 0 "" ""))))] | ||
36 | + "TARGET_ARM && (TARGET_MAVERICK)" | ||
37 | + "* | ||
38 | + gcc_assert (!arm_ccfsm_state); | ||
39 | + | ||
40 | + return \"beq\\t.+12\;bvs\\t.+8\;b\\t%l0\"; | ||
41 | + " | ||
42 | + [(set_attr "conds" "jump_clob") | ||
43 | + (set_attr "length" "12")] | ||
44 | +) | ||
45 | + | ||
46 | ; Special pattern to match reversed UNLT for MAVERICK. | ||
47 | (define_insn "*arm_bunlt_reversed" | ||
48 | [(set (pc) | ||