(define_attr "op_type"
"NN,E,RR,RRE,RX,RS,RSI,RI,SI,S,SS,SSE,RXE,RSE,RIL,RIE,RXY,RSY,SIY"
- (const_string "RX"))
+ (const_string "NN"))
;; Instruction type attribute used for scheduling.
;; reg: Instruction does not use the agen unit
(define_attr "atype" "agen,reg"
-(cond [ (eq_attr "op_type" "E") (const_string "reg")
+ (cond [(eq_attr "op_type" "E") (const_string "reg")
(eq_attr "op_type" "RR") (const_string "reg")
(eq_attr "op_type" "RX") (const_string "agen")
(eq_attr "op_type" "RI") (const_string "reg")
(eq_attr "op_type" "RXY") (const_string "agen")
(eq_attr "op_type" "RSY") (const_string "agen")
(eq_attr "op_type" "SIY") (const_string "agen")]
- (const_string "reg")))
+ (const_string "agen")))
;; Length in bytes.
(define_attr "length" ""
-(cond [ (eq_attr "op_type" "E") (const_int 2)
+ (cond [(eq_attr "op_type" "E") (const_int 2)
(eq_attr "op_type" "RR") (const_int 2)
(eq_attr "op_type" "RX") (const_int 4)
(eq_attr "op_type" "RI") (const_int 4)
(eq_attr "op_type" "RXY") (const_int 6)
(eq_attr "op_type" "RSY") (const_int 6)
(eq_attr "op_type" "SIY") (const_int 6)]
- (const_int 4)))
-
-;; Define attributes for `asm' insns.
-
-(define_asm_attributes [(set_attr "type" "other")
- (set_attr "op_type" "NN")])
+ (const_int 6)))
;; Processor type. This attribute must exactly match the processor_type
"s390_match_ccmode (insn, CCUmode)
&& INTVAL (operands[2]) >= 1 && INTVAL (operands[2]) <= 256"
"clc\t%O0(%2,%R0),%S1"
- [(set_attr "op_type" "SS")
- (set_attr "type" "cs")])
+ [(set_attr "op_type" "SS")])
(define_split
[(set (reg 33)
#
#
#"
- [(set_attr "op_type" "RSY,RSY,NN,NN,SS")
- (set_attr "type" "lm,stm,*,*,cs")])
+ [(set_attr "op_type" "RSY,RSY,*,*,SS")
+ (set_attr "type" "lm,stm,*,*,*")])
(define_split
[(set (match_operand:TI 0 "nonimmediate_operand" "")
stam\t%1,%N1,%S0
lam\t%0,%N0,%S1
#"
- [(set_attr "op_type" "RI,RI,RI,RI,RI,RXY,RRE,RXY,RXY,RR,RX,RXY,RX,RXY,NN,NN,RS,RS,SS")
- (set_attr "type" "*,*,*,*,*,la,lr,load,store,floadd,floadd,floadd,
- fstored,fstored,*,*,*,*,cs")])
+ [(set_attr "op_type" "RI,RI,RI,RI,RI,RXY,RRE,RXY,RXY,
+ RR,RX,RXY,RX,RXY,*,*,RS,RS,SS")
+ (set_attr "type" "*,*,*,*,*,la,lr,load,store,
+ floadd,floadd,floadd,fstored,fstored,*,*,*,*,*")])
(define_split
[(set (match_operand:DI 0 "register_operand" "")
std\t%1,%0
stdy\t%1,%0
#"
- [(set_attr "op_type" "RS,RS,NN,NN,RR,RX,RXY,RX,RXY,SS")
- (set_attr "type" "lm,stm,*,*,floadd,floadd,floadd,fstored,fstored,cs")])
+ [(set_attr "op_type" "RS,RS,*,*,RR,RX,RXY,RX,RXY,SS")
+ (set_attr "type" "lm,stm,*,*,floadd,floadd,floadd,fstored,fstored,*")])
(define_split
[(set (match_operand:DI 0 "nonimmediate_operand" "")
stam\t%1,%1,%S0
lam\t%0,%0,%S1
#"
- [(set_attr "op_type" "RI,RI,RI,RXY,RR,RX,RXY,RX,RXY,RR,RX,RXY,RX,RXY,RRE,RRE,RS,RS,SS")
- (set_attr "type" "*,*,*,la,lr,load,load,store,store,floads,floads,floads,fstores,fstores,*,*,*,*,cs")])
+ [(set_attr "op_type" "RI,RI,RI,RXY,RR,RX,RXY,RX,RXY,
+ RR,RX,RXY,RX,RXY,RRE,RRE,RS,RS,SS")
+ (set_attr "type" "*,*,*,la,lr,load,load,store,store,
+ floads,floads,floads,fstores,fstores,*,*,*,*,*")])
(define_insn "*movsi_esa"
[(set (match_operand:SI 0 "nonimmediate_operand" "=d,d,d,R,!*f,!*f,!R,d,t,Q,t,?Q")
lam\t%0,%0,%S1
#"
[(set_attr "op_type" "RI,RR,RX,RX,RR,RX,RX,RRE,RRE,RS,RS,SS")
- (set_attr "type" "*,lr,load,store,floads,floads,fstores,*,*,*,*,cs")])
+ (set_attr "type" "*,lr,load,store,floads,floads,fstores,*,*,*,*,*")])
(define_peephole2
[(set (match_operand:SI 0 "register_operand" "")
sthy\t%1,%0
#"
[(set_attr "op_type" "RR,RI,RX,RXY,RX,RXY,SS")
- (set_attr "type" "lr,*,*,*,store,store,cs")])
+ (set_attr "type" "lr,*,*,*,store,store,*")])
(define_peephole2
[(set (match_operand:HI 0 "register_operand" "")
mviy\t%S0,%b1
#"
[(set_attr "op_type" "RR,RI,RX,RXY,RX,RXY,SI,SIY,SS")
- (set_attr "type" "lr,*,*,*,store,store,store,store,cs")])
+ (set_attr "type" "lr,*,*,*,store,store,store,store,*")])
(define_peephole2
[(set (match_operand:QI 0 "nonimmediate_operand" "")
stg\t%1,%0
#"
[(set_attr "op_type" "RR,RX,RXY,RX,RXY,RRE,RXY,RXY,SS")
- (set_attr "type" "floadd,floadd,floadd,fstored,fstored,lr,load,store,cs")])
+ (set_attr "type" "floadd,floadd,floadd,fstored,fstored,lr,load,store,*")])
(define_insn "*movdf_31"
[(set (match_operand:DF 0 "nonimmediate_operand" "=f,f,f,R,T,d,Q,d,o,Q")
#
#
#"
- [(set_attr "op_type" "RR,RX,RXY,RX,RXY,RS,RS,NN,NN,SS")
- (set_attr "type" "floadd,floadd,floadd,fstored,fstored,lm,stm,*,*,cs")])
+ [(set_attr "op_type" "RR,RX,RXY,RX,RXY,RS,RS,*,*,SS")
+ (set_attr "type" "floadd,floadd,floadd,fstored,fstored,lm,stm,*,*,*")])
(define_split
[(set (match_operand:DF 0 "nonimmediate_operand" "")
sty\t%1,%0
#"
[(set_attr "op_type" "RR,RX,RXY,RX,RXY,RR,RX,RXY,RX,RXY,SS")
- (set_attr "type" "floads,floads,floads,fstores,fstores,lr,load,load,store,store,cs")])
+ (set_attr "type" "floads,floads,floads,fstores,fstores,
+ lr,load,load,store,store,*")])
;
; movcc instruction pattern
(use (match_operand 2 "const_int_operand" "n"))]
"INTVAL (operands[2]) >= 1 && INTVAL (operands[2]) <= 256"
"mvc\t%O0(%2,%R0),%S1"
- [(set_attr "op_type" "SS")
- (set_attr "type" "cs")])
+ [(set_attr "op_type" "SS")])
(define_split
[(set (match_operand 0 "memory_operand" "")
(clobber (reg:CC 33))]
"TARGET_64BIT"
"srst\t%0,%1\;jo\t.-4"
- [(set_attr "op_type" "NN")
- (set_attr "type" "vs")
- (set_attr "length" "8")])
+ [(set_attr "length" "8")
+ (set_attr "type" "vs")])
(define_expand "strlensi"
[(set (reg:QI 0) (match_operand:QI 2 "immediate_operand" ""))
(clobber (reg:CC 33))]
"!TARGET_64BIT"
"srst\t%0,%1\;jo\t.-4"
- [(set_attr "op_type" "NN")
- (set_attr "type" "vs")
- (set_attr "length" "8")])
+ [(set_attr "length" "8")
+ (set_attr "type" "vs")])
;
; movmemM instruction pattern(s).
"(GET_MODE (operands[2]) == Pmode || GET_MODE (operands[2]) == VOIDmode)
&& GET_MODE (operands[4]) == Pmode"
"#"
- [(set_attr "op_type" "SS,RX,RX")
- (set_attr "type" "cs")])
+ [(set_attr "type" "cs")])
(define_split
[(set (match_operand:BLK 0 "memory_operand" "")
(clobber (reg:CC 33))]
"TARGET_64BIT"
"mvcle\t%0,%1,0\;jo\t.-4"
- [(set_attr "op_type" "NN")
- (set_attr "type" "vs")
- (set_attr "length" "8")])
+ [(set_attr "length" "8")
+ (set_attr "type" "vs")])
(define_insn "*movmem_long_31"
[(clobber (match_operand:DI 0 "register_operand" "=d"))
(clobber (reg:CC 33))]
"!TARGET_64BIT"
"mvcle\t%0,%1,0\;jo\t.-4"
- [(set_attr "op_type" "NN")
- (set_attr "type" "vs")
- (set_attr "length" "8")])
+ [(set_attr "length" "8")
+ (set_attr "type" "vs")])
;
; clrmemM instruction pattern(s).
"(GET_MODE (operands[1]) == Pmode || GET_MODE (operands[1]) == VOIDmode)
&& GET_MODE (operands[3]) == Pmode"
"#"
- [(set_attr "op_type" "SS,RX,RX")
- (set_attr "type" "cs")])
+ [(set_attr "type" "cs")])
(define_split
[(set (match_operand:BLK 0 "memory_operand" "")
(clobber (reg:CC 33))]
"TARGET_64BIT"
"mvcle\t%0,%1,0\;jo\t.-4"
- [(set_attr "op_type" "NN")
- (set_attr "type" "vs")
- (set_attr "length" "8")])
+ [(set_attr "length" "8")
+ (set_attr "type" "vs")])
(define_insn "*clrmem_long_31"
[(clobber (match_operand:DI 0 "register_operand" "=d"))
(clobber (reg:CC 33))]
"!TARGET_64BIT"
"mvcle\t%0,%1,0\;jo\t.-4"
- [(set_attr "op_type" "NN")
- (set_attr "type" "vs")
- (set_attr "length" "8")])
+ [(set_attr "length" "8")
+ (set_attr "type" "vs")])
;
; cmpmemM instruction pattern(s).
"(GET_MODE (operands[2]) == Pmode || GET_MODE (operands[2]) == VOIDmode)
&& GET_MODE (operands[4]) == Pmode"
"#"
- [(set_attr "op_type" "SS,RX,RX")
- (set_attr "type" "cs")])
+ [(set_attr "type" "cs")])
(define_split
[(set (reg:CCU 33)
(use (match_dup 3))]
"TARGET_64BIT"
"clcle\t%0,%1,0\;jo\t.-4"
- [(set_attr "op_type" "NN")
- (set_attr "type" "vs")
- (set_attr "length" "8")])
+ [(set_attr "length" "8")
+ (set_attr "type" "vs")])
(define_insn "*cmpmem_long_31"
[(clobber (match_operand:DI 0 "register_operand" "=d"))
(use (match_dup 3))]
"!TARGET_64BIT"
"clcle\t%0,%1,0\;jo\t.-4"
- [(set_attr "op_type" "NN")
- (set_attr "type" "vs")
- (set_attr "length" "8")])
+ [(set_attr "length" "8")
+ (set_attr "type" "vs")])
; Convert condition code to integer in range (-1, 0, 1)
output_asm_insn ("sr\t%0,%0", operands);
return "lcr\t%0,%0";
}
- [(set_attr "op_type" "NN")
- (set_attr "length" "16")
- (set_attr "type" "other")])
+ [(set_attr "length" "16")])
(define_insn "*cmpint_di"
[(set (match_operand:DI 0 "register_operand" "=d")
output_asm_insn ("sgr\t%0,%0", operands);
return "lcgr\t%0,%0";
}
- [(set_attr "op_type" "NN")
- (set_attr "length" "20")
- (set_attr "type" "other")])
+ [(set_attr "length" "20")])
;;
{
operands[2] = GEN_INT (32 - INTVAL (operands[2]));
operands[1] = change_address (operands[1], QImode, 0);
-}
- [(set_attr "atype" "agen")])
+})
(define_insn_and_split "*extracthi"
[(set (match_operand:SI 0 "register_operand" "=d")
{
operands[2] = GEN_INT (32 - INTVAL (operands[2]));
operands[1] = change_address (operands[1], HImode, 0);
-}
- [(set_attr "atype" "agen")])
+})
;
; extendsidi2 instruction pattern(s).
(parallel
[(set (strict_low_part (match_dup 2)) (match_dup 1))
(clobber (reg:CC 33))])]
- "operands[2] = gen_lowpart (HImode, operands[0]);"
- [(set_attr "atype" "agen")])
+ "operands[2] = gen_lowpart (HImode, operands[0]);")
;
; zero_extendqisi2 instruction pattern(s).
"&& reload_completed"
[(set (match_dup 0) (const_int 0))
(set (strict_low_part (match_dup 2)) (match_dup 1))]
- "operands[2] = gen_lowpart (QImode, operands[0]);"
- [(set_attr "atype" "agen")])
+ "operands[2] = gen_lowpart (QImode, operands[0]);")
;
; zero_extendqihi2 instruction pattern(s).
"&& reload_completed"
[(set (match_dup 0) (const_int 0))
(set (strict_low_part (match_dup 2)) (match_dup 1))]
- "operands[2] = gen_lowpart (QImode, operands[0]);"
- [(set_attr "atype" "agen")])
+ "operands[2] = gen_lowpart (QImode, operands[0]);")
;
output_asm_insn ("xi\t%N4,128", operands);
return "l\t%0,%N4";
}
- [(set_attr "op_type" "NN")
- (set_attr "type" "other")
- (set_attr "atype" "agen")
- (set_attr "length" "20")])
+ [(set_attr "length" "20")])
;
; fixuns_truncsfdi2 and fix_truncsfdi2 instruction pattern(s).
output_asm_insn ("ld\t%0,%3", operands);
return "sd\t%0,%2";
}
- [(set_attr "op_type" "NN")
- (set_attr "type" "other" )
- (set_attr "atype" "agen")
- (set_attr "length" "20")])
+ [(set_attr "length" "20")])
;
; floatsisf2 instruction pattern(s).
"@
sdr\t%0,%0\;ler\t%0,%1
sdr\t%0,%0\;le\t%0,%1"
- [(set_attr "op_type" "NN,NN")
- (set_attr "length" "4,6")
+ [(set_attr "length" "4,6")
(set_attr "type" "floads,floads")])
operands[5] = operand_subword (operands[2], 0, 0, TImode);
operands[6] = operand_subword (operands[0], 1, 0, TImode);
operands[7] = operand_subword (operands[1], 1, 0, TImode);
- operands[8] = operand_subword (operands[2], 1, 0, TImode);"
- [(set_attr "op_type" "NN")])
+ operands[8] = operand_subword (operands[2], 1, 0, TImode);")
;
; adddi3 instruction pattern(s).
operands[5] = operand_subword (operands[2], 0, 0, DImode);
operands[6] = operand_subword (operands[0], 1, 0, DImode);
operands[7] = operand_subword (operands[1], 1, 0, DImode);
- operands[8] = operand_subword (operands[2], 1, 0, DImode);"
- [(set_attr "op_type" "NN")])
+ operands[8] = operand_subword (operands[2], 1, 0, DImode);")
(define_insn_and_split "*adddi3_31"
[(set (match_operand:DI 0 "register_operand" "=&d")
operands[6] = operand_subword (operands[0], 1, 0, DImode);
operands[7] = operand_subword (operands[1], 1, 0, DImode);
operands[8] = operand_subword (operands[2], 1, 0, DImode);
- operands[9] = gen_label_rtx ();"
- [(set_attr "op_type" "NN")])
+ operands[9] = gen_label_rtx ();")
(define_expand "adddi3"
[(parallel
operands[5] = operand_subword (operands[2], 0, 0, TImode);
operands[6] = operand_subword (operands[0], 1, 0, TImode);
operands[7] = operand_subword (operands[1], 1, 0, TImode);
- operands[8] = operand_subword (operands[2], 1, 0, TImode);"
- [(set_attr "op_type" "NN")])
+ operands[8] = operand_subword (operands[2], 1, 0, TImode);")
;
; subdi3 instruction pattern(s).
operands[5] = operand_subword (operands[2], 0, 0, DImode);
operands[6] = operand_subword (operands[0], 1, 0, DImode);
operands[7] = operand_subword (operands[1], 1, 0, DImode);
- operands[8] = operand_subword (operands[2], 1, 0, DImode);"
- [(set_attr "op_type" "NN")])
+ operands[8] = operand_subword (operands[2], 1, 0, DImode);")
(define_insn_and_split "*subdi3_31"
[(set (match_operand:DI 0 "register_operand" "=&d")
operands[6] = operand_subword (operands[0], 1, 0, DImode);
operands[7] = operand_subword (operands[1], 1, 0, DImode);
operands[8] = operand_subword (operands[2], 1, 0, DImode);
- operands[9] = gen_label_rtx ();"
- [(set_attr "op_type" "NN")])
+ operands[9] = gen_label_rtx ();")
(define_expand "subdi3"
[(parallel
[(set (match_dup 0) (plus:DI (plus:DI (match_dup 0) (match_dup 0))
(match_dup 1)))
(clobber (reg:CC 33))])]
- ""
- [(set_attr "op_type" "NN")])
+ "")
(define_insn_and_split "*scondsi"
[(set (match_operand:SI 0 "register_operand" "=&d")
[(set (match_dup 0) (plus:SI (plus:SI (match_dup 0) (match_dup 0))
(match_dup 1)))
(clobber (reg:CC 33))])]
- ""
- [(set_attr "op_type" "NN")])
+ "")
(define_insn_and_split "*sconddi_neg"
[(set (match_operand:DI 0 "register_operand" "=&d")
(parallel
[(set (match_dup 0) (neg:DI (match_dup 0)))
(clobber (reg:CC 33))])]
- ""
- [(set_attr "op_type" "NN")])
+ "")
(define_insn_and_split "*scondsi_neg"
[(set (match_operand:SI 0 "register_operand" "=&d")
(parallel
[(set (match_dup 0) (neg:SI (match_dup 0)))
(clobber (reg:CC 33))])]
- ""
- [(set_attr "op_type" "NN")])
+ "")
(define_expand "sltu"
[(match_operand:SI 0 "register_operand" "")]
(clobber (reg:CC 33))]
"INTVAL (operands[2]) >= 1 && INTVAL (operands[2]) <= 256"
"nc\t%O0(%2,%R0),%S1"
- [(set_attr "op_type" "SS")
- (set_attr "type" "cs")])
+ [(set_attr "op_type" "SS")])
(define_split
[(set (match_operand 0 "memory_operand" "")
(clobber (reg:CC 33))]
"INTVAL (operands[2]) >= 1 && INTVAL (operands[2]) <= 256"
"oc\t%O0(%2,%R0),%S1"
- [(set_attr "op_type" "SS")
- (set_attr "type" "cs")])
+ [(set_attr "op_type" "SS")])
(define_split
[(set (match_operand 0 "memory_operand" "")
(clobber (reg:CC 33))]
"INTVAL (operands[2]) >= 1 && INTVAL (operands[2]) <= 256"
"xc\t%O0(%2,%R0),%S1"
- [(set_attr "op_type" "SS")
- (set_attr "type" "cs")])
+ [(set_attr "op_type" "SS")])
(define_split
[(set (match_operand 0 "memory_operand" "")
(clobber (reg:CC 33))]
"INTVAL (operands[1]) >= 1 && INTVAL (operands[1]) <= 256"
"xc\t%O0(%1,%R0),%S0"
- [(set_attr "op_type" "SS")
- (set_attr "type" "cs")])
+ [(set_attr "op_type" "SS")])
(define_peephole2
[(parallel
CODE_LABEL_NUMBER (xop[0]));
return "";
}
- [(set_attr "op_type" "NN")
- (set_attr "type" "other")
- (set_attr "length" "10")])
+ [(set_attr "length" "10")])
;
; negsi2 instruction pattern(s).
s390_output_pool_entry (operands[0], mode, align);
return "";
}
- [(set_attr "op_type" "NN")
- (set (attr "length")
+ [(set (attr "length")
(symbol_ref "GET_MODE_SIZE (GET_MODE (PATTERN (insn)))"))])
(define_insn "pool_align"
UNSPECV_POOL_ALIGN)]
""
".align\t%0"
- [(set_attr "op_type" "NN")
- (set (attr "length") (symbol_ref "INTVAL (operands[0])"))])
+ [(set (attr "length") (symbol_ref "INTVAL (operands[0])"))])
(define_insn "pool_section_start"
[(unspec_volatile [(const_int 1)] UNSPECV_POOL_SECTION)]
""
".section\t.rodata"
- [(set_attr "op_type" "NN")
- (set_attr "length" "0")])
+ [(set_attr "length" "0")])
(define_insn "pool_section_end"
[(unspec_volatile [(const_int 0)] UNSPECV_POOL_SECTION)]
""
".previous"
- [(set_attr "op_type" "NN")
- (set_attr "length" "0")])
+ [(set_attr "length" "0")])
(define_insn "main_base_31_small"
[(set (match_operand 0 "register_operand" "=a")
(unspec_volatile [(const_int 0)] UNSPECV_MAIN_POOL))]
"GET_MODE (operands[0]) == Pmode"
"* abort ();"
- [(set_attr "op_type" "NN")
- (set (attr "type")
+ [(set (attr "type")
(if_then_else (ne (symbol_ref "TARGET_CPU_ZARCH") (const_int 0))
(const_string "larl") (const_string "la")))])
(unspec [(label_ref (match_operand 1 "" ""))] UNSPEC_RELOAD_BASE))]
"!TARGET_CPU_ZARCH && GET_MODE (operands[0]) == Pmode"
"basr\t%0,0\;la\t%0,%1-.(%0)"
- [(set_attr "op_type" "NN")
- (set_attr "type" "la")
- (set_attr "length" "6")])
+ [(set_attr "length" "6")
+ (set_attr "type" "la")])
(define_insn "reload_base_64"
[(set (match_operand 0 "register_operand" "=a")
[(unspec_volatile [(match_operand 0 "const_int_operand" "n")] UNSPECV_POOL)]
""
"* abort ();"
- [(set_attr "op_type" "NN")
- (set (attr "length") (symbol_ref "INTVAL (operands[0])"))])
+ [(set (attr "length") (symbol_ref "INTVAL (operands[0])"))])
;;
;; Insns related to generating the function prologue and epilogue.