@@ -84,11 +84,15 @@
; We use this attribute to disable alternatives that can produce 32-bit
; instructions inside an IT-block in Thumb2 state. ARMv8 deprecates IT blocks
; that contain 32-bit instructions.
-(define_attr "enabled_for_depr_it" "no,yes" (const_string "yes"))
+(define_attr "enabled_for_depr_it" "no,yes"
+ (const_string "yes")
+ "code,alternative")
; This attribute is used to disable a predicated alternative when we have
; arm_restrict_it.
-(define_attr "predicable_short_it" "no,yes" (const_string "yes"))
+(define_attr "predicable_short_it" "no,yes"
+ (const_string "yes")
+ "code,alternative")
;; Operand number of an input operand that is shifted. Zero if the
;; given instruction does not shift one of its input operands.
@@ -108,7 +112,7 @@
; Predicated means that the insn form is conditionally executed based on a
; predicate. We default to 'no' because no Thumb patterns match this rule
; and not all ARM insns do.
-(define_attr "predicated" "yes,no" (const_string "no"))
+(define_attr "predicated" "yes,no" (const_string "no") "code,alternative")
; LENGTH of an instruction (in bytes)
(define_attr "length" ""
@@ -122,7 +126,8 @@
; used to compute attribute "enabled", use type "any" to enable an
; alternative in all cases.
(define_attr "arch" "any,a,t,32,t1,t2,v6,nov6,v6t2,neon_for_64bits,avoid_neon_for_64bits,iwmmxt,iwmmxt2,armv6_or_vfpv3"
- (const_string "any"))
+ (const_string "any")
+ "code,alternative")
(define_attr "arch_enabled" "no,yes"
(cond [(eq_attr "arch" "any")
@@ -179,7 +184,8 @@
(const_string "yes")
]
- (const_string "no")))
+ (const_string "no"))
+ "code,alternative")
(define_attr "opt" "any,speed,size"
(const_string "any"))
@@ -197,7 +203,9 @@
(const_string "yes")]
(const_string "no")))
-(define_attr "use_literal_pool" "no,yes" (const_string "no"))
+(define_attr "use_literal_pool" "no,yes"
+ (const_string "no")
+ "code,alternative")
; Enable all alternatives that are both arch_enabled and insn_enabled.
; FIXME:: opt_enabled has been temporarily removed till the time we have
@@ -227,7 +235,8 @@
(eq_attr "arch_enabled" "no")
(const_string "no")]
- (const_string "yes")))
+ (const_string "yes"))
+ "code,alternative")
; POOL_RANGE is how far away from a constant pool entry that this insn
; can be placed. If the distance is zero, then this insn will never
@@ -1069,7 +1069,8 @@
crypto_sha1_slow,\
crypto_sha256_fast,\
crypto_sha256_slow"
- (const_string "untyped"))
+ (const_string "untyped")
+ "code,alternative")
; Is this an (integer side) multiply with a 32-bit (or smaller) result?
(define_attr "mul32" "no,yes"