[(set_attr "type" "icmp")
(set_attr "mode" "<MODE>")])
-(define_insn "*cmpqi_ext<mode>_1_mem_rex64"
- [(set (reg FLAGS_REG)
- (compare
- (match_operand:QI 0 "norex_memory_operand" "Bn")
- (subreg:QI
- (match_operator:SWI248 2 "extract_operator"
- [(match_operand 1 "int248_register_operand" "Q")
- (const_int 8)
- (const_int 8)]) 0)))]
- "TARGET_64BIT && reload_completed
- && ix86_match_ccmode (insn, CCmode)"
- "cmp{b}\t{%h1, %0|%0, %h1}"
- [(set_attr "type" "icmp")
- (set_attr "mode" "QI")])
-
(define_insn "*cmpqi_ext<mode>_1"
[(set (reg FLAGS_REG)
(compare
- (match_operand:QI 0 "nonimmediate_operand" "QBc,m")
+ (match_operand:QI 0 "nonimmediate_operand" "QBn")
(subreg:QI
(match_operator:SWI248 2 "extract_operator"
- [(match_operand 1 "int248_register_operand" "Q,Q")
+ [(match_operand 1 "int248_register_operand" "Q")
(const_int 8)
(const_int 8)]) 0)))]
"ix86_match_ccmode (insn, CCmode)"
"cmp{b}\t{%h1, %0|%0, %h1}"
- [(set_attr "isa" "*,nox64")
+ [(set_attr "addr" "gpr8")
(set_attr "type" "icmp")
(set_attr "mode" "QI")])
-(define_peephole2
- [(set (match_operand:QI 0 "register_operand")
- (match_operand:QI 1 "norex_memory_operand"))
- (set (match_operand 3 "flags_reg_operand")
- (match_operator 4 "compare_operator"
- [(match_dup 0)
- (subreg:QI
- (match_operator:SWI248 5 "extract_operator"
- [(match_operand 2 "int248_register_operand")
- (const_int 8)
- (const_int 8)]) 0)]))]
- "TARGET_64BIT
- && peep2_reg_dead_p (2, operands[0])"
- [(set (match_dup 3)
- (match_op_dup 4
- [(match_dup 1)
- (subreg:QI
- (match_op_dup 5
- [(match_dup 2)
- (const_int 8)
- (const_int 8)]) 0)]))])
-
(define_insn "*cmpqi_ext<mode>_2"
[(set (reg FLAGS_REG)
(compare
(const_int 8)) 0)
(match_operand:QI 1 "const_int_operand")))])
-(define_insn "*cmpqi_ext<mode>_3_mem_rex64"
- [(set (reg FLAGS_REG)
- (compare
- (subreg:QI
- (match_operator:SWI248 2 "extract_operator"
- [(match_operand 0 "int248_register_operand" "Q")
- (const_int 8)
- (const_int 8)]) 0)
- (match_operand:QI 1 "norex_memory_operand" "Bn")))]
- "TARGET_64BIT && reload_completed
- && ix86_match_ccmode (insn, CCmode)"
- "cmp{b}\t{%1, %h0|%h0, %1}"
- [(set_attr "type" "icmp")
- (set_attr "mode" "QI")])
-
(define_insn "*cmpqi_ext<mode>_3"
[(set (reg FLAGS_REG)
(compare
(subreg:QI
(match_operator:SWI248 2 "extract_operator"
- [(match_operand 0 "int248_register_operand" "Q,Q")
+ [(match_operand 0 "int248_register_operand" "Q")
(const_int 8)
(const_int 8)]) 0)
- (match_operand:QI 1 "general_operand" "QnBc,m")))]
+ (match_operand:QI 1 "general_operand" "QnBn")))]
"ix86_match_ccmode (insn, CCmode)"
"cmp{b}\t{%1, %h0|%h0, %1}"
- [(set_attr "isa" "*,nox64")
+ [(set_attr "addr" "gpr8")
(set_attr "type" "icmp")
(set_attr "mode" "QI")])
-(define_peephole2
- [(set (match_operand:QI 0 "register_operand")
- (match_operand:QI 1 "norex_memory_operand"))
- (set (match_operand 3 "flags_reg_operand")
- (match_operator 4 "compare_operator"
- [(subreg:QI
- (match_operator:SWI248 5 "extract_operator"
- [(match_operand 2 "int248_register_operand")
- (const_int 8)
- (const_int 8)]) 0)
- (match_dup 0)]))]
- "TARGET_64BIT
- && peep2_reg_dead_p (2, operands[0])"
- [(set (match_dup 3)
- (match_op_dup 4
- [(subreg:QI
- (match_op_dup 5
- [(match_dup 2)
- (const_int 8)
- (const_int 8)]) 0)
- (match_dup 1)]))])
-
(define_insn "*cmpqi_ext<mode>_4"
[(set (reg FLAGS_REG)
(compare
[(set_attr "type" "imovx")
(set_attr "mode" "SI")])
-(define_insn "*extzvqi_mem_rex64"
- [(set (match_operand:QI 0 "norex_memory_operand" "=Bn")
- (subreg:QI
- (match_operator:SWI248 2 "extract_operator"
- [(match_operand 1 "int248_register_operand" "Q")
- (const_int 8)
- (const_int 8)]) 0))]
- "TARGET_64BIT && reload_completed"
- "mov{b}\t{%h1, %0|%0, %h1}"
- [(set_attr "type" "imov")
- (set_attr "mode" "QI")])
-
(define_insn "*extzvqi"
- [(set (match_operand:QI 0 "nonimmediate_operand" "=QBc,?R,m")
+ [(set (match_operand:QI 0 "nonimmediate_operand" "=QBn,?R")
(subreg:QI
(match_operator:SWI248 2 "extract_operator"
- [(match_operand 1 "int248_register_operand" "Q,Q,Q")
+ [(match_operand 1 "int248_register_operand" "Q,Q")
(const_int 8)
(const_int 8)]) 0))]
""
return "mov{b}\t{%h1, %0|%0, %h1}";
}
}
- [(set_attr "isa" "*,*,nox64")
+ [(set_attr "addr" "gpr8,*")
(set (attr "type")
(if_then_else (and (match_operand:QI 0 "register_operand")
(ior (not (match_operand:QI 0 "QIreg_operand"))
(const_string "SI")
(const_string "QI")))])
-(define_peephole2
- [(set (match_operand:QI 0 "register_operand")
- (subreg:QI
- (match_operator:SWI248 3 "extract_operator"
- [(match_operand 1 "int248_register_operand")
- (const_int 8)
- (const_int 8)]) 0))
- (set (match_operand:QI 2 "norex_memory_operand") (match_dup 0))]
- "TARGET_64BIT
- && peep2_reg_dead_p (2, operands[0])"
- [(set (match_dup 2)
- (subreg:QI
- (match_op_dup 3
- [(match_dup 1)
- (const_int 8)
- (const_int 8)]) 0))])
-
(define_expand "insv<mode>"
[(set (zero_extract:SWI248 (match_operand:SWI248 0 "register_operand")
(match_operand:QI 1 "const_int_operand")
DONE;
})
-(define_insn "*insvqi_1_mem_rex64"
- [(set (zero_extract:SWI248
- (match_operand 0 "int248_register_operand" "+Q")
- (const_int 8)
- (const_int 8))
- (subreg:SWI248
- (match_operand:QI 1 "norex_memory_operand" "Bn") 0))]
- "TARGET_64BIT && reload_completed"
- "mov{b}\t{%1, %h0|%h0, %1}"
- [(set_attr "type" "imov")
- (set_attr "mode" "QI")])
-
(define_insn "@insv<mode>_1"
[(set (zero_extract:SWI248
- (match_operand 0 "int248_register_operand" "+Q,Q")
+ (match_operand 0 "int248_register_operand" "+Q")
(const_int 8)
(const_int 8))
- (match_operand:SWI248 1 "general_operand" "QnBc,m"))]
+ (match_operand:SWI248 1 "general_operand" "QnBn"))]
""
{
if (CONST_INT_P (operands[1]))
operands[1] = gen_int_mode (INTVAL (operands[1]), QImode);
return "mov{b}\t{%b1, %h0|%h0, %b1}";
}
- [(set_attr "isa" "*,nox64")
+ [(set_attr "addr" "gpr8")
(set_attr "type" "imov")
(set_attr "mode" "QI")])
(define_insn "*insvqi_1"
[(set (zero_extract:SWI248
- (match_operand 0 "int248_register_operand" "+Q,Q")
+ (match_operand 0 "int248_register_operand" "+Q")
(const_int 8)
(const_int 8))
(subreg:SWI248
- (match_operand:QI 1 "general_operand" "QnBc,m") 0))]
+ (match_operand:QI 1 "general_operand" "QnBn") 0))]
""
"mov{b}\t{%1, %h0|%h0, %1}"
- [(set_attr "isa" "*,nox64")
+ [(set_attr "addr" "gpr8")
(set_attr "type" "imov")
(set_attr "mode" "QI")])
-(define_peephole2
- [(set (match_operand:QI 0 "register_operand")
- (match_operand:QI 1 "norex_memory_operand"))
- (set (zero_extract:SWI248 (match_operand 2 "int248_register_operand")
- (const_int 8)
- (const_int 8))
- (subreg:SWI248 (match_dup 0) 0))]
- "TARGET_64BIT
- && peep2_reg_dead_p (2, operands[0])"
- [(set (zero_extract:SWI248 (match_dup 2)
- (const_int 8)
- (const_int 8))
- (subreg:SWI248 (match_dup 1) 0))])
-
;; Eliminate redundant insv, e.g. xorl %eax,%eax; movb $0, %ah
(define_peephole2
[(parallel [(set (match_operand:SWI48 0 "general_reg_operand")
(set_attr "mode" "<MODE>")])
(define_insn "*addqi_ext<mode>_0"
- [(set (match_operand:QI 0 "nonimm_x64constmem_operand" "=QBc,m")
+ [(set (match_operand:QI 0 "nonimmediate_operand" "=QBn")
(plus:QI
(subreg:QI
(match_operator:SWI248 3 "extract_operator"
- [(match_operand 2 "int248_register_operand" "Q,Q")
+ [(match_operand 2 "int248_register_operand" "Q")
(const_int 8)
(const_int 8)]) 0)
- (match_operand:QI 1 "nonimm_x64constmem_operand" "0,0")))
+ (match_operand:QI 1 "nonimmediate_operand" "0")))
(clobber (reg:CC FLAGS_REG))]
""
"add{b}\t{%h2, %0|%0, %h2}"
- [(set_attr "isa" "*,nox64")
+ [(set_attr "addr" "gpr8")
(set_attr "type" "alu")
(set_attr "mode" "QI")])
(define_insn "*addqi_ext<mode>_1"
[(set (zero_extract:SWI248
- (match_operand 0 "int248_register_operand" "+Q,Q")
+ (match_operand 0 "int248_register_operand" "+Q")
(const_int 8)
(const_int 8))
(subreg:SWI248
(plus:QI
(subreg:QI
(match_operator:SWI248 3 "extract_operator"
- [(match_operand 1 "int248_register_operand" "0,0")
+ [(match_operand 1 "int248_register_operand" "0")
(const_int 8)
(const_int 8)]) 0)
- (match_operand:QI 2 "general_x64constmem_operand" "QnBc,m")) 0))
+ (match_operand:QI 2 "general_operand" "QnBn")) 0))
(clobber (reg:CC FLAGS_REG))]
"/* FIXME: without this LRA can't reload this pattern, see PR82524. */
rtx_equal_p (operands[0], operands[1])"
return "add{b}\t{%2, %h0|%h0, %2}";
}
}
- [(set_attr "isa" "*,nox64")
+ [(set_attr "addr" "gpr8")
(set (attr "type")
(if_then_else (match_operand:QI 2 "incdec_operand")
(const_string "incdec")
(set_attr "mode" "SI")])
(define_insn "*subqi_ext<mode>_0"
- [(set (match_operand:QI 0 "nonimm_x64constmem_operand" "=QBc,m")
+ [(set (match_operand:QI 0 "nonimmediate_operand" "=QBn")
(minus:QI
- (match_operand:QI 1 "nonimm_x64constmem_operand" "0,0")
+ (match_operand:QI 1 "nonimmediate_operand" "0")
(subreg:QI
(match_operator:SWI248 3 "extract_operator"
- [(match_operand 2 "int248_register_operand" "Q,Q")
+ [(match_operand 2 "int248_register_operand" "Q")
(const_int 8)
(const_int 8)]) 0)))
(clobber (reg:CC FLAGS_REG))]
""
"sub{b}\t{%h2, %0|%0, %h2}"
- [(set_attr "isa" "*,nox64")
+ [(set_attr "addr" "gpr8")
(set_attr "type" "alu")
(set_attr "mode" "QI")])
(and:QI
(subreg:QI
(match_operator:SWI248 2 "extract_operator"
- [(match_operand 0 "int248_register_operand" "Q,Q")
+ [(match_operand 0 "int248_register_operand" "Q")
(const_int 8)
(const_int 8)]) 0)
- (match_operand:QI 1 "general_x64constmem_operand" "QnBc,m"))
+ (match_operand:QI 1 "general_operand" "QnBn"))
(const_int 0)))]
"ix86_match_ccmode (insn, CCNOmode)"
"test{b}\t{%1, %h0|%h0, %1}"
- [(set_attr "isa" "*,nox64")
+ [(set_attr "addr" "gpr8")
(set_attr "type" "test")
(set_attr "mode" "QI")])
(set_attr "mode" "<MODE>")])
(define_insn "*andqi_ext<mode>_0"
- [(set (match_operand:QI 0 "nonimm_x64constmem_operand" "=QBc,m")
+ [(set (match_operand:QI 0 "nonimmediate_operand" "=QBn")
(and:QI
(subreg:QI
(match_operator:SWI248 3 "extract_operator"
- [(match_operand 2 "int248_register_operand" "Q,Q")
+ [(match_operand 2 "int248_register_operand" "Q")
(const_int 8)
(const_int 8)]) 0)
- (match_operand:QI 1 "nonimm_x64constmem_operand" "0,0")))
+ (match_operand:QI 1 "nonimmediate_operand" "0")))
(clobber (reg:CC FLAGS_REG))]
""
"and{b}\t{%h2, %0|%0, %h2}"
- [(set_attr "isa" "*,nox64")
+ [(set_attr "addr" "gpr8")
(set_attr "type" "alu")
(set_attr "mode" "QI")])
(define_insn "*andqi_ext<mode>_1"
[(set (zero_extract:SWI248
- (match_operand 0 "int248_register_operand" "+Q,Q")
+ (match_operand 0 "int248_register_operand" "+Q")
(const_int 8)
(const_int 8))
(subreg:SWI248
(and:QI
(subreg:QI
(match_operator:SWI248 3 "extract_operator"
- [(match_operand 1 "int248_register_operand" "0,0")
+ [(match_operand 1 "int248_register_operand" "0")
(const_int 8)
(const_int 8)]) 0)
- (match_operand:QI 2 "general_x64constmem_operand" "QnBc,m")) 0))
+ (match_operand:QI 2 "general_operand" "QnBn")) 0))
(clobber (reg:CC FLAGS_REG))]
"/* FIXME: without this LRA can't reload this pattern, see PR82524. */
rtx_equal_p (operands[0], operands[1])"
"and{b}\t{%2, %h0|%h0, %2}"
- [(set_attr "isa" "*,nox64")
+ [(set_attr "addr" "gpr8")
(set_attr "type" "alu")
(set_attr "mode" "QI")])
(and:QI
(subreg:QI
(match_operator:SWI248 3 "extract_operator"
- [(match_operand 1 "int248_register_operand" "0,0")
+ [(match_operand 1 "int248_register_operand" "0")
(const_int 8)
(const_int 8)]) 0)
- (match_operand:QI 2 "general_x64constmem_operand" "QnBc,m"))
+ (match_operand:QI 2 "general_operand" "QnBn"))
(const_int 0)))
(set (zero_extract:SWI248
- (match_operand 0 "int248_register_operand" "+Q,Q")
+ (match_operand 0 "int248_register_operand" "+Q")
(const_int 8)
(const_int 8))
(subreg:SWI248
/* FIXME: without this LRA can't reload this pattern, see PR82524. */
&& rtx_equal_p (operands[0], operands[1])"
"and{b}\t{%2, %h0|%h0, %2}"
- [(set_attr "isa" "*,nox64")
+ [(set_attr "addr" "gpr8")
(set_attr "type" "alu")
(set_attr "mode" "QI")])
(set_attr "mode" "<MODE>")])
(define_insn "*<code>qi_ext<mode>_0"
- [(set (match_operand:QI 0 "nonimm_x64constmem_operand" "=QBc,m")
+ [(set (match_operand:QI 0 "nonimmediate_operand" "=QBn")
(any_or:QI
(subreg:QI
(match_operator:SWI248 3 "extract_operator"
- [(match_operand 2 "int248_register_operand" "Q,Q")
+ [(match_operand 2 "int248_register_operand" "Q")
(const_int 8)
(const_int 8)]) 0)
- (match_operand:QI 1 "nonimm_x64constmem_operand" "0,0")))
+ (match_operand:QI 1 "nonimmediate_operand" "0")))
(clobber (reg:CC FLAGS_REG))]
""
"<logic>{b}\t{%h2, %0|%0, %h2}"
- [(set_attr "isa" "*,nox64")
+ [(set_attr "addr" "gpr8")
(set_attr "type" "alu")
(set_attr "mode" "QI")])
(define_insn "*<code>qi_ext<mode>_1"
[(set (zero_extract:SWI248
- (match_operand 0 "int248_register_operand" "+Q,Q")
+ (match_operand 0 "int248_register_operand" "+Q")
(const_int 8)
(const_int 8))
(subreg:SWI248
(any_or:QI
(subreg:QI
(match_operator:SWI248 3 "extract_operator"
- [(match_operand 1 "int248_register_operand" "0,0")
+ [(match_operand 1 "int248_register_operand" "0")
(const_int 8)
(const_int 8)]) 0)
- (match_operand:QI 2 "general_x64constmem_operand" "QnBc,m")) 0))
+ (match_operand:QI 2 "general_operand" "QnBn")) 0))
(clobber (reg:CC FLAGS_REG))]
"(!TARGET_PARTIAL_REG_STALL || optimize_function_for_size_p (cfun))
/* FIXME: without this LRA can't reload this pattern, see PR82524. */
&& rtx_equal_p (operands[0], operands[1])"
"<logic>{b}\t{%2, %h0|%h0, %2}"
- [(set_attr "isa" "*,nox64")
+ [(set_attr "addr" "gpr8")
(set_attr "type" "alu")
(set_attr "mode" "QI")])
(xor:QI
(subreg:QI
(match_operator:SWI248 3 "extract_operator"
- [(match_operand 1 "int248_register_operand" "0,0")
+ [(match_operand 1 "int248_register_operand" "0")
(const_int 8)
(const_int 8)]) 0)
- (match_operand:QI 2 "general_x64constmem_operand" "QnBc,m"))
+ (match_operand:QI 2 "general_operand" "QnBn"))
(const_int 0)))
(set (zero_extract:SWI248
- (match_operand 0 "int248_register_operand" "+Q,Q")
+ (match_operand 0 "int248_register_operand" "+Q")
(const_int 8)
(const_int 8))
(subreg:SWI248
/* FIXME: without this LRA can't reload this pattern, see PR82524. */
&& rtx_equal_p (operands[0], operands[1])"
"xor{b}\t{%2, %h0|%h0, %2}"
- [(set_attr "isa" "*,nox64")
+ [(set_attr "addr" "gpr8")
(set_attr "type" "alu")
(set_attr "mode" "QI")])