@@ -165,6 +165,8 @@
(const_string "yes")
(const_string "no"))))
+;; Is this a bbi instruction or not
+(define_attr "bbi" "no,yes" (const_string "no"))
;; Describe a user's asm statement.
(define_asm_attributes
@@ -183,11 +185,18 @@
(nil)
(nil)])
-(define_delay (eq_attr "type" "branch")
+;; GAS refuses to assemble bbi[n]l. So for bbi instructions, do not
+;; allow them to annul-false.
+(define_delay (and (eq_attr "type" "branch") (eq_attr "bbi" "no"))
[(and (eq_attr "dslot" "ok_in_dslot") (eq_attr "length" "4"))
(nil)
(and (eq_attr "branch_likely" "yes") (and (eq_attr "dslot" "ok_in_dslot") (eq_attr "length" "4")))])
+(define_delay (and (eq_attr "type" "branch") (eq_attr "bbi" "yes"))
+ [(and (eq_attr "dslot" "ok_in_dslot") (eq_attr "length" "4"))
+ (nil)
+ (nil)])
+
(define_delay (eq_attr "type" "call")
[(and (eq_attr "dslot" "ok_in_dslot") (eq_attr "length" "4"))
(nil)
@@ -1114,7 +1123,8 @@
""
"bb%A2\\t%0(31-%1),%P2%P3"
[(set_attr "length" "4")
- (set_attr "type" "branch")])
+ (set_attr "type" "branch")
+ (set_attr "bbi" "yes")])
(define_insn ""
[(set (pc)
@@ -1128,7 +1138,8 @@
""
"bb%A3\\t%0(31-%1),%P2%P3"
[(set_attr "length" "4")
- (set_attr "type" "branch")])
+ (set_attr "type" "branch")
+ (set_attr "bbi" "yes")])
(define_insn ""
[(set (pc)
@@ -1142,7 +1153,8 @@
"0"
"bb%A2\\t%0(31-%1),%P2%P3"
[(set_attr "length" "4")
- (set_attr "type" "branch")])
+ (set_attr "type" "branch")
+ (set_attr "bbi" "yes")])
(define_insn ""
[(set (pc)
@@ -1156,7 +1168,8 @@
"0"
"bb%A3\\t%0(31-%1),%P2%P3"
[(set_attr "length" "4")
- (set_attr "type" "branch")])
+ (set_attr "type" "branch")
+ (set_attr "bbi" "yes")])
(define_insn ""
[(set (pc)
@@ -1169,7 +1182,8 @@
""
"bb%A3\\t%0(%p1),%P2%P3"
[(set_attr "length" "4")
- (set_attr "type" "branch")])
+ (set_attr "type" "branch")
+ (set_attr "bbi" "yes")])
(define_insn ""
[(set (pc)
@@ -1182,7 +1196,8 @@
""
"bb%A2\\t%0(%p1),%P2%P3"
[(set_attr "length" "4")
- (set_attr "type" "branch")])
+ (set_attr "type" "branch")
+ (set_attr "bbi" "yes")])
;;
;; ....................