1 diff -urN ../gcc-cross-4.1.2-r4/gcc-4.1.2/gcc/config/arm/arm.md gcc-4.1.2/gcc/config/arm/arm.md
2 --- ../gcc-cross-4.1.2-r4/gcc-4.1.2/gcc/config/arm/arm.md 2007-06-14 11:50:53.000000000 +1000
3 +++ gcc-4.1.2/gcc/config/arm/arm.md 2007-06-14 11:43:17.000000000 +1000
8 +;(define_expand "suneq"
9 +; [(set (match_operand:SI 0 "s_register_operand" "")
10 +; (uneq:SI (match_dup 1) (const_int 0)))]
11 +; "TARGET_ARM && TARGET_HARD_FLOAT && (TARGET_MAVERICK)"
12 +; "operands[1] = arm_gen_compare_reg (UNEQ, arm_compare_op0,
16 +;(define_expand "sltgt"
17 +; [(set (match_operand:SI 0 "s_register_operand" "")
18 +; (ltgt:SI (match_dup 1) (const_int 0)))]
19 +; "TARGET_ARM && TARGET_HARD_FLOAT && (TARGET_MAVERICK)"
20 +; "operands[1] = arm_gen_compare_reg (LTGT, arm_compare_op0,
24 ;;; DO NOT add patterns for SUNEQ or SLTGT, these can't be represented with
25 ;;; simple ARM instructions.
27 @@ -10284,13 +10284,73 @@
28 "TARGET_ARM && arm_arch5e"
31 +;; Special predication pattern for Maverick Crunch floating-point
34 + [(match_operator 0 "maverick_comparison_operator"
35 + [(match_operand:CCFP 1 "cc_register" "")
37 + "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_MAVERICK"
41 +;; Special predication pattern for Maverick Crunch - !CCFP
44 + [(match_operator 0 "arm_comparison_operator"
45 + [(match_operand:CC_NOOV 1 "cc_register" "")
47 + "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_MAVERICK"
52 + [(match_operator 0 "arm_comparison_operator"
53 + [(match_operand:CC_Z 1 "cc_register" "")
55 + "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_MAVERICK"
60 + [(match_operator 0 "arm_comparison_operator"
61 + [(match_operand:CC_SWP 1 "cc_register" "")
63 + "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_MAVERICK"
68 + [(match_operator 0 "arm_comparison_operator"
69 + [(match_operand:CC_C 1 "cc_register" "")
71 + "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_MAVERICK"
76 + [(match_operator 0 "arm_comparison_operator"
77 + [(match_operand:CC_N 1 "cc_register" "")
79 + "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_MAVERICK"
84 + [(match_operator 0 "arm_comparison_operator"
85 + [(match_operand:CC 1 "cc_register" "")
87 + "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_MAVERICK"
91 ;; General predication pattern
94 [(match_operator 0 "arm_comparison_operator"
95 [(match_operand 1 "cc_register" "")
98 + "TARGET_ARM && !(TARGET_HARD_FLOAT && TARGET_MAVERICK)"
102 diff -urN ../gcc-cross-4.1.2-r4/gcc-4.1.2/gcc/config/arm/predicates.md gcc-4.1.2/gcc/config/arm/predicates.md
103 --- ../gcc-cross-4.1.2-r4/gcc-4.1.2/gcc/config/arm/predicates.md 2005-09-11 17:38:02.000000000 +1000
104 +++ gcc-4.1.2/gcc/config/arm/predicates.md 2007-06-14 11:46:13.000000000 +1000
107 ;; True for comparisons other than LTGT or UNEQ.
108 (define_special_predicate "arm_comparison_operator"
109 (match_code "eq,ne,le,lt,ge,gt,geu,gtu,leu,ltu,unordered,ordered,unlt,unle,unge,ungt"))
111 +;; True for comparisons other than GE, GEU, UNLT, UNORDERED or ORDERED - TODO add LTGT and UNEQ - needs extra support elsewhere
112 +(define_special_predicate "maverick_comparison_operator"
113 +(match_code "eq,ne,le,lt,gt,gtu,leu,ltu,unle,unge,ungt"))
115 (define_special_predicate "minmax_operator"
116 (and (match_code "smin,smax,umin,umax")