return "<nf_prefix>add{<imodesuffix>}\t%0, %0";
default:
- if (operands[2] == const1_rtx
- && (TARGET_SHIFT1 || optimize_function_for_size_p (cfun))
- /* For NDD form instructions related to TARGET_SHIFT1, the $1
- immediate do not need to be omitted as assembler will map it
- to use shorter encoding. */
- && !use_ndd && !<nf_applied>)
- return "sal{<imodesuffix>}\t%0";
- else
- return use_ndd ? "<nf_prefix>sal{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
- : "<nf_prefix>sal{<imodesuffix>}\t{%2, %0|%0, %2}";
+ return use_ndd ? "<nf_prefix>sal{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
+ : "<nf_prefix>sal{<imodesuffix>}\t{%2, %0|%0, %2}";
}
}
[(set_attr "isa" "*,*,bmi2,avx512bw,apx_ndd")
(const_string "lea")
(eq_attr "alternative" "2")
(const_string "ishiftx")
+ (eq_attr "alternative" "3")
+ (const_string "msklog")
(eq_attr "alternative" "4")
(const_string "ishift")
- (and (and (match_test "TARGET_DOUBLE_WITH_ADD")
+ (and (and (match_test "TARGET_DOUBLE_WITH_ADD")
(match_operand 0 "register_operand"))
(match_operand 2 "const1_operand"))
(const_string "alu")
- (eq_attr "alternative" "3")
- (const_string "msklog")
]
(const_string "ishift")))
(set (attr "length_immediate")
(if_then_else
(ior (eq_attr "type" "alu")
(and (eq_attr "type" "ishift")
- (and (match_operand 2 "const1_operand")
- (ior (match_test "TARGET_SHIFT1")
- (match_test "optimize_function_for_size_p (cfun)")))))
+ (match_operand 2 "const1_operand")))
(const_string "0")
(const_string "*")))
(set_attr "has_nf" "1")
return "add{l}\t%k0, %k0";
default:
- if (operands[2] == const1_rtx
- && (TARGET_SHIFT1 || optimize_function_for_size_p (cfun))
- && !use_ndd)
- return "sal{l}\t%k0";
- else
- return use_ndd ? "sal{l}\t{%2, %1, %k0|%k0, %1, %2}"
- : "sal{l}\t{%2, %k0|%k0, %2}";
+ return use_ndd ? "sal{l}\t{%2, %1, %k0|%k0, %1, %2}"
+ : "sal{l}\t{%2, %k0|%k0, %2}";
}
}
[(set_attr "isa" "*,*,bmi2,apx_ndd")
(if_then_else
(ior (eq_attr "type" "alu")
(and (eq_attr "type" "ishift")
- (and (match_operand 2 "const1_operand")
- (ior (match_test "TARGET_SHIFT1")
- (match_test "optimize_function_for_size_p (cfun)")))))
+ (match_operand 2 "const1_operand")))
(const_string "0")
(const_string "*")))
(set_attr "mode" "SI")])
return "<nf_prefix>add{w}\t%0, %0";
default:
- if (operands[2] == const1_rtx
- && (TARGET_SHIFT1 || optimize_function_for_size_p (cfun))
- && !use_ndd && !<nf_applied>)
- return "sal{w}\t%0";
- else
- return use_ndd ? "<nf_prefix>sal{w}\t{%2, %1, %0|%0, %1, %2}"
- : "<nf_prefix>sal{w}\t{%2, %0|%0, %2}";
+ return use_ndd ? "<nf_prefix>sal{w}\t{%2, %1, %0|%0, %1, %2}"
+ : "<nf_prefix>sal{w}\t{%2, %0|%0, %2}";
}
}
[(set_attr "isa" "*,*,avx512f,apx_ndd")
(if_then_else
(ior (eq_attr "type" "alu")
(and (eq_attr "type" "ishift")
- (and (match_operand 2 "const1_operand")
- (ior (match_test "TARGET_SHIFT1")
- (match_test "optimize_function_for_size_p (cfun)")))))
+ (match_operand 2 "const1_operand")))
(const_string "0")
(const_string "*")))
(set_attr "has_nf" "1")
return "<nf_prefix>add{b}\t%0, %0";
default:
- if (operands[2] == const1_rtx
- && (TARGET_SHIFT1 || optimize_function_for_size_p (cfun))
- && !use_ndd && !<nf_applied>)
- {
- if (get_attr_mode (insn) == MODE_SI)
- return "sal{l}\t%k0";
- else
- return "sal{b}\t%0";
- }
+ if (get_attr_mode (insn) == MODE_SI)
+ return "<nf_prefix>sal{l}\t{%2, %k0|%k0, %2}";
else
- {
- if (get_attr_mode (insn) == MODE_SI)
- return "<nf_prefix>sal{l}\t{%2, %k0|%k0, %2}";
- else
- return use_ndd ? "<nf_prefix>sal{b}\t{%2, %1, %0|%0, %1, %2}"
- : "<nf_prefix>sal{b}\t{%2, %0|%0, %2}";
- }
+ return use_ndd ? "<nf_prefix>sal{b}\t{%2, %1, %0|%0, %1, %2}"
+ : "<nf_prefix>sal{b}\t{%2, %0|%0, %2}";
}
}
[(set_attr "isa" "*,*,*,avx512dq,apx_ndd")
(if_then_else
(ior (eq_attr "type" "alu")
(and (eq_attr "type" "ishift")
- (and (match_operand 2 "const1_operand")
- (ior (match_test "TARGET_SHIFT1")
- (match_test "optimize_function_for_size_p (cfun)")))))
+ (match_operand 2 "const1_operand")))
(const_string "0")
(const_string "*")))
(set_attr "has_nf" "1")
return "add{<imodesuffix>}\t%0, %0";
default:
- if (operands[2] == const1_rtx
- && (TARGET_SHIFT1 || optimize_function_for_size_p (cfun)))
- return "sal{<imodesuffix>}\t%0";
- else
- return "sal{<imodesuffix>}\t{%2, %0|%0, %2}";
+ return "sal{<imodesuffix>}\t{%2, %0|%0, %2}";
}
}
"&& reload_completed
(if_then_else
(ior (eq_attr "type" "alu")
(and (eq_attr "type" "ishift")
- (and (match_operand 2 "const1_operand")
- (ior (match_test "TARGET_SHIFT1")
- (match_test "optimize_function_for_size_p (cfun)")))))
+ (match_operand 2 "const1_operand")))
(const_string "0")
(const_string "*")))
(set_attr "mode" "<MODE>")])
(ashift:SWI (match_dup 1) (match_dup 2)))]
"(optimize_function_for_size_p (cfun)
|| !TARGET_PARTIAL_FLAG_REG_STALL
- || (operands[2] == const1_rtx
- && (TARGET_SHIFT1
- || (TARGET_DOUBLE_WITH_ADD && REG_P (operands[0])))))
+ || operands[2] == const1_rtx)
&& ix86_match_ccmode (insn, CCGOCmode)
&& ix86_binary_operator_ok (ASHIFT, <MODE>mode, operands, TARGET_APX_NDD)"
{
return "add{<imodesuffix>}\t%0, %0";
default:
- if (operands[2] == const1_rtx
- && (TARGET_SHIFT1 || optimize_function_for_size_p (cfun))
- && !use_ndd)
- return "sal{<imodesuffix>}\t%0";
- else
- return use_ndd ? "sal{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
- : "sal{<imodesuffix>}\t{%2, %0|%0, %2}";
+ return use_ndd ? "sal{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
+ : "sal{<imodesuffix>}\t{%2, %0|%0, %2}";
}
}
[(set_attr "isa" "*,apx_ndd")
(if_then_else
(ior (eq_attr "type" "alu")
(and (eq_attr "type" "ishift")
- (and (match_operand 2 "const1_operand")
- (ior (match_test "TARGET_SHIFT1")
- (match_test "optimize_function_for_size_p (cfun)")))))
+ (match_operand 2 "const1_operand")))
(const_string "0")
(const_string "*")))
(set_attr "mode" "<MODE>")])
"TARGET_64BIT
&& (optimize_function_for_size_p (cfun)
|| !TARGET_PARTIAL_FLAG_REG_STALL
- || (operands[2] == const1_rtx
- && (TARGET_SHIFT1
- || TARGET_DOUBLE_WITH_ADD)))
+ || operands[2] == const1_rtx)
&& ix86_match_ccmode (insn, CCGOCmode)
&& ix86_binary_operator_ok (ASHIFT, SImode, operands, TARGET_APX_NDD)"
{
return "add{l}\t%k0, %k0";
default:
- if (operands[2] == const1_rtx
- && (TARGET_SHIFT1 || optimize_function_for_size_p (cfun))
- && !use_ndd)
- return "sal{l}\t%k0";
- else
- return use_ndd ? "sal{l}\t{%2, %1, %k0|%k0, %1, %2}"
- : "sal{l}\t{%2, %k0|%k0, %2}";
+ return use_ndd ? "sal{l}\t{%2, %1, %k0|%k0, %1, %2}"
+ : "sal{l}\t{%2, %k0|%k0, %2}";
}
}
[(set_attr "isa" "*,apx_ndd")
(if_then_else
(ior (eq_attr "type" "alu")
(and (eq_attr "type" "ishift")
- (and (match_operand 2 "const1_operand")
- (ior (match_test "TARGET_SHIFT1")
- (match_test "optimize_function_for_size_p (cfun)")))))
+ (match_operand 2 "const1_operand")))
(const_string "0")
(const_string "*")))
(set_attr "mode" "SI")])
(clobber (match_scratch:SWI 0 "=<r>,r"))]
"(optimize_function_for_size_p (cfun)
|| !TARGET_PARTIAL_FLAG_REG_STALL
- || (operands[2] == const1_rtx
- && (TARGET_SHIFT1
- || TARGET_DOUBLE_WITH_ADD)))
+ || operands[2] == const1_rtx)
&& ix86_match_ccmode (insn, CCGOCmode)"
{
bool use_ndd = get_attr_isa (insn) == ISA_APX_NDD;
gcc_assert (operands[2] == const1_rtx);
return "add{<imodesuffix>}\t%0, %0";
- default:
- if (operands[2] == const1_rtx
- && (TARGET_SHIFT1 || optimize_function_for_size_p (cfun))
- && !use_ndd)
- return "sal{<imodesuffix>}\t%0";
- else
- return use_ndd ? "sal{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
- : "sal{<imodesuffix>}\t{%2, %0|%0, %2}";
+ default:
+ return use_ndd ? "sal{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
+ : "sal{<imodesuffix>}\t{%2, %0|%0, %2}";
}
}
[(set_attr "isa" "*,apx_ndd")
(if_then_else
(ior (eq_attr "type" "alu")
(and (eq_attr "type" "ishift")
- (and (match_operand 2 "const1_operand")
- (ior (match_test "TARGET_SHIFT1")
- (match_test "optimize_function_for_size_p (cfun)")))))
+ (match_operand 2 "const1_operand")))
(const_string "0")
(const_string "*")))
(set_attr "mode" "<MODE>")])
return "add{b}\t%h0, %h0";
default:
- if (operands[2] == const1_rtx
- && (TARGET_SHIFT1 || optimize_function_for_size_p (cfun)))
- return "sal{b}\t%h0";
- else
- return "sal{b}\t{%2, %h0|%h0, %2}";
+ return "sal{b}\t{%2, %h0|%h0, %2}";
}
}
"reload_completed
(if_then_else
(ior (eq_attr "type" "alu")
(and (eq_attr "type" "ishift")
- (and (match_operand 2 "const1_operand")
- (ior (match_test "TARGET_SHIFT1")
- (match_test "optimize_function_for_size_p (cfun)")))))
+ (match_operand 2 "const1_operand")))
(const_string "0")
(const_string "*")))
(set_attr "mode" "QI")])
return "#";
default:
- if (operands[2] == const1_rtx
- && (TARGET_SHIFT1 || optimize_function_for_size_p (cfun))
- && !use_ndd && !<nf_applied>)
- return "sar{<imodesuffix>}\t%0";
- else
- return use_ndd ? "<nf_prefix>sar{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
- : "<nf_prefix>sar{<imodesuffix>}\t{%2, %0|%0, %2}";
+ return use_ndd ? "<nf_prefix>sar{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
+ : "<nf_prefix>sar{<imodesuffix>}\t{%2, %0|%0, %2}";
}
}
[(set_attr "isa" "*,bmi2,apx_ndd")
(set_attr "type" "ishift,ishiftx,ishift")
(set (attr "length_immediate")
(if_then_else
- (and (match_operand 2 "const1_operand")
- (ior (match_test "TARGET_SHIFT1")
- (match_test "optimize_function_for_size_p (cfun)")))
+ (match_operand 2 "const1_operand")
(const_string "0")
(const_string "*")))
(set_attr "has_nf" "1")
return "#";
default:
- if (operands[2] == const1_rtx
- && (TARGET_SHIFT1 || optimize_function_for_size_p (cfun))
- && !use_ndd && !<nf_applied>)
- return "shr{<imodesuffix>}\t%0";
- else
- return use_ndd ? "<nf_prefix>shr{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
- : "<nf_prefix>shr{<imodesuffix>}\t{%2, %0|%0, %2}";
+ return use_ndd ? "<nf_prefix>shr{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
+ : "<nf_prefix>shr{<imodesuffix>}\t{%2, %0|%0, %2}";
}
}
[(set_attr "isa" "*,bmi2,avx512bw,apx_ndd")
(set_attr "type" "ishift,ishiftx,msklog,ishift")
(set (attr "length_immediate")
(if_then_else
- (and (and (match_operand 2 "const1_operand")
- (eq_attr "alternative" "0"))
- (ior (match_test "TARGET_SHIFT1")
- (match_test "optimize_function_for_size_p (cfun)")))
+ (and (eq_attr "type" "ishift")
+ (match_operand 2 "const1_operand"))
(const_string "0")
(const_string "*")))
(set_attr "has_nf" "1")
switch (get_attr_type (insn))
{
case TYPE_ISHIFTX:
- return "#";
-
case TYPE_MSKLOG:
return "#";
+
default:
- if (operands[2] == const1_rtx
- && (TARGET_SHIFT1 || optimize_function_for_size_p (cfun))
- && !use_ndd)
- return "<shift>{l}\t%k0";
- else
- return use_ndd ? "<shift>{l}\t{%2, %1, %k0|%k0, %1, %2}"
- : "<shift>{l}\t{%2, %k0|%k0, %2}";
+ return use_ndd ? "<shift>{l}\t{%2, %1, %k0|%k0, %1, %2}"
+ : "<shift>{l}\t{%2, %k0|%k0, %2}";
}
}
[(set_attr "isa" "*,bmi2,apx_ndd,avx512bw")
(set_attr "type" "ishift,ishiftx,ishift,msklog")
(set (attr "length_immediate")
(if_then_else
- (and (match_operand 2 "const1_operand")
- (ior (match_test "TARGET_SHIFT1")
- (match_test "optimize_function_for_size_p (cfun)")))
+ (and (eq_attr "type" "ishift")
+ (match_operand 2 "const1_operand"))
(const_string "0")
(const_string "*")))
(set_attr "mode" "SI")
&& <nf_condition>"
{
bool use_ndd = get_attr_isa (insn) == ISA_APX_NDD;
- if (operands[2] == const1_rtx
- && (TARGET_SHIFT1 || optimize_function_for_size_p (cfun))
- && !use_ndd && !<nf_applied>)
- return "sar{<imodesuffix>}\t%0";
- else
- return use_ndd ? "<nf_prefix>sar{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
- : "<nf_prefix>sar{<imodesuffix>}\t{%2, %0|%0, %2}";
+
+ return use_ndd ? "<nf_prefix>sar{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
+ : "<nf_prefix>sar{<imodesuffix>}\t{%2, %0|%0, %2}";
}
[(set_attr "isa" "*, apx_ndd")
(set_attr "type" "ishift")
(set (attr "length_immediate")
(if_then_else
- (and (match_operand 2 "const1_operand")
- (ior (match_test "TARGET_SHIFT1")
- (match_test "optimize_function_for_size_p (cfun)")))
+ (match_operand 2 "const1_operand")
(const_string "0")
(const_string "*")))
(set_attr "has_nf" "1")
bool use_ndd = get_attr_isa (insn) == ISA_APX_NDD;
switch (get_attr_type (insn))
{
- case TYPE_ISHIFT:
- if (operands[2] == const1_rtx
- && (TARGET_SHIFT1 || optimize_function_for_size_p (cfun))
- && !use_ndd && !<nf_applied>)
- return "shr{b}\t%0";
- else
- return use_ndd ? "<nf_prefix>shr{b}\t{%2, %1, %0|%0, %1, %2}"
- : "<nf_prefix>shr{b}\t{%2, %0|%0, %2}";
case TYPE_MSKLOG:
return "#";
+
default:
- gcc_unreachable ();
+ return use_ndd ? "<nf_prefix>shr{b}\t{%2, %1, %0|%0, %1, %2}"
+ : "<nf_prefix>shr{b}\t{%2, %0|%0, %2}";
}
}
[(set_attr "isa" "*,avx512dq,apx_ndd")
(set_attr "type" "ishift,msklog,ishift")
(set (attr "length_immediate")
(if_then_else
- (and (and (match_operand 2 "const1_operand")
- (eq_attr "alternative" "0"))
- (ior (match_test "TARGET_SHIFT1")
- (match_test "optimize_function_for_size_p (cfun)")))
+ (and (eq_attr "type" "ishift")
+ (match_operand 2 "const1_operand"))
(const_string "0")
(const_string "*")))
(set_attr "has_nf" "1")
bool use_ndd = get_attr_isa (insn) == ISA_APX_NDD;
switch (get_attr_type (insn))
{
- case TYPE_ISHIFT:
- if (operands[2] == const1_rtx
- && (TARGET_SHIFT1 || optimize_function_for_size_p (cfun))
- && !use_ndd && !<nf_applied>)
- return "shr{w}\t%0";
- else
- return use_ndd ? "<nf_prefix>shr{w}\t{%2, %1, %0|%0, %1, %2}"
- : "<nf_prefix>shr{w}\t{%2, %0|%0, %2}";
case TYPE_MSKLOG:
return "#";
+
default:
- gcc_unreachable ();
+ return use_ndd ? "<nf_prefix>shr{w}\t{%2, %1, %0|%0, %1, %2}"
+ : "<nf_prefix>shr{w}\t{%2, %0|%0, %2}";
}
}
[(set_attr "isa" "*, avx512f, apx_ndd")
(set_attr "type" "ishift,msklog,ishift")
(set (attr "length_immediate")
(if_then_else
- (and (and (match_operand 2 "const1_operand")
- (eq_attr "alternative" "0"))
- (ior (match_test "TARGET_SHIFT1")
- (match_test "optimize_function_for_size_p (cfun)")))
+ (and (eq_attr "type" "ishift")
+ (match_operand 2 "const1_operand"))
(const_string "0")
(const_string "*")))
(set_attr "has_nf" "1")
if (which_alternative)
return "#";
- if (operands[2] == const1_rtx
- && (TARGET_SHIFT1 || optimize_function_for_size_p (cfun)))
- return "<shift>{<imodesuffix>}\t%0";
- else
- return "<shift>{<imodesuffix>}\t{%2, %0|%0, %2}";
+ return "<shift>{<imodesuffix>}\t{%2, %0|%0, %2}";
}
"&& reload_completed
&& !(rtx_equal_p (operands[0], operands[1]))"
[(set_attr "type" "ishift")
(set (attr "length_immediate")
(if_then_else
- (and (match_operand 2 "const1_operand")
- (ior (match_test "TARGET_SHIFT1")
- (match_test "optimize_function_for_size_p (cfun)")))
+ (match_operand 2 "const1_operand")
(const_string "0")
(const_string "*")))
(set_attr "mode" "<MODE>")])
(any_shiftrt:SWI (match_dup 1) (match_dup 2)))]
"(optimize_function_for_size_p (cfun)
|| !TARGET_PARTIAL_FLAG_REG_STALL
- || (operands[2] == const1_rtx
- && TARGET_SHIFT1))
+ || operands[2] == const1_rtx)
&& ix86_match_ccmode (insn, CCGOCmode)
&& ix86_binary_operator_ok (<CODE>, <MODE>mode, operands, TARGET_APX_NDD)"
{
bool use_ndd = get_attr_isa (insn) == ISA_APX_NDD;
- if (operands[2] == const1_rtx
- && (TARGET_SHIFT1 || optimize_function_for_size_p (cfun))
- && !use_ndd)
- return "<shift>{<imodesuffix>}\t%0";
- else
- return use_ndd ? "<shift>{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
- : "<shift>{<imodesuffix>}\t{%2, %0|%0, %2}";
+ return use_ndd ? "<shift>{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
+ : "<shift>{<imodesuffix>}\t{%2, %0|%0, %2}";
}
[(set_attr "isa" "*,apx_ndd")
(set_attr "type" "ishift")
(set (attr "length_immediate")
(if_then_else
- (and (match_operand 2 "const1_operand")
- (ior (match_test "TARGET_SHIFT1")
- (match_test "optimize_function_for_size_p (cfun)")))
+ (match_operand 2 "const1_operand")
(const_string "0")
(const_string "*")))
(set_attr "mode" "<MODE>")])
"TARGET_64BIT
&& (optimize_function_for_size_p (cfun)
|| !TARGET_PARTIAL_FLAG_REG_STALL
- || (operands[2] == const1_rtx
- && TARGET_SHIFT1))
+ || operands[2] == const1_rtx)
&& ix86_match_ccmode (insn, CCGOCmode)
&& ix86_binary_operator_ok (<CODE>, SImode, operands, TARGET_APX_NDD)"
{
bool use_ndd = get_attr_isa (insn) == ISA_APX_NDD;
- if (operands[2] == const1_rtx
- && (TARGET_SHIFT1 || optimize_function_for_size_p (cfun))
- && !use_ndd)
- return "<shift>{l}\t%k0";
- else
- return use_ndd ? "<shift>{l}\t{%2, %1, %k0|%k0, %1, %2}"
- : "<shift>{l}\t{%2, %k0|%k0, %2}";
+ return use_ndd ? "<shift>{l}\t{%2, %1, %k0|%k0, %1, %2}"
+ : "<shift>{l}\t{%2, %k0|%k0, %2}";
}
[(set_attr "isa" "*,apx_ndd")
(set_attr "type" "ishift")
(set (attr "length_immediate")
(if_then_else
- (and (match_operand 2 "const1_operand")
- (ior (match_test "TARGET_SHIFT1")
- (match_test "optimize_function_for_size_p (cfun)")))
+ (match_operand 2 "const1_operand")
(const_string "0")
(const_string "*")))
(set_attr "mode" "SI")])
(clobber (match_scratch:SWI 0 "=<r>,r"))]
"(optimize_function_for_size_p (cfun)
|| !TARGET_PARTIAL_FLAG_REG_STALL
- || (operands[2] == const1_rtx
- && TARGET_SHIFT1))
+ || operands[2] == const1_rtx)
&& ix86_match_ccmode (insn, CCGOCmode)"
{
bool use_ndd = get_attr_isa (insn) == ISA_APX_NDD;
- if (operands[2] == const1_rtx
- && (TARGET_SHIFT1 || optimize_function_for_size_p (cfun))
- && !use_ndd)
- return "<shift>{<imodesuffix>}\t%0";
- else
- return use_ndd
- ? "<shift>{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
- : "<shift>{<imodesuffix>}\t{%2, %0|%0, %2}";
+ return use_ndd ? "<shift>{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
+ : "<shift>{<imodesuffix>}\t{%2, %0|%0, %2}";
}
[(set_attr "isa" "*,apx_ndd")
(set_attr "type" "ishift")
(set (attr "length_immediate")
(if_then_else
- (and (match_operand 2 "const1_operand")
- (ior (match_test "TARGET_SHIFT1")
- (match_test "optimize_function_for_size_p (cfun)")))
+ (match_operand 2 "const1_operand")
(const_string "0")
(const_string "*")))
(set_attr "mode" "<MODE>")])
if (which_alternative)
return "#";
- if (operands[2] == const1_rtx
- && (TARGET_SHIFT1 || optimize_function_for_size_p (cfun)))
- return "<shift>{b}\t%h0";
- else
- return "<shift>{b}\t{%2, %h0|%h0, %2}";
+ return "<shift>{b}\t{%2, %h0|%h0, %2}";
}
"reload_completed
&& !(rtx_equal_p (operands[0], operands[1]))"
[(set_attr "type" "ishift")
(set (attr "length_immediate")
(if_then_else
- (and (match_operand 2 "const1_operand")
- (ior (match_test "TARGET_SHIFT1")
- (match_test "optimize_function_for_size_p (cfun)")))
+ (match_operand 2 "const1_operand")
(const_string "0")
(const_string "*")))
(set_attr "mode" "QI")])
return "#";
default:
- if (operands[2] == const1_rtx
- && (TARGET_SHIFT1 || optimize_function_for_size_p (cfun))
- && !use_ndd && !<nf_applied>)
- return "<rotate>{<imodesuffix>}\t%0";
- else
- return use_ndd ? "<nf_prefix><rotate>{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
- : "<nf_prefix><rotate>{<imodesuffix>}\t{%2, %0|%0, %2}";
+ return use_ndd ? "<nf_prefix><rotate>{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
+ : "<nf_prefix><rotate>{<imodesuffix>}\t{%2, %0|%0, %2}";
}
}
[(set_attr "isa" "*,bmi2,apx_ndd")
(set (attr "length_immediate")
(if_then_else
(and (eq_attr "type" "rotate")
- (and (match_operand 2 "const1_operand")
- (ior (match_test "TARGET_SHIFT1")
- (match_test "optimize_function_for_size_p (cfun)"))))
+ (match_operand 2 "const1_operand"))
(const_string "0")
(const_string "*")))
(set_attr "has_nf" "1")
return "#";
default:
- if (operands[2] == const1_rtx
- && (TARGET_SHIFT1 || optimize_function_for_size_p (cfun))
- && !use_ndd)
- return "<rotate>{l}\t%k0";
- else
- return use_ndd ? "<rotate>{l}\t{%2, %1, %k0|%k0, %1, %2}"
- : "<rotate>{l}\t{%2, %k0|%k0, %2}";
+ return use_ndd ? "<rotate>{l}\t{%2, %1, %k0|%k0, %1, %2}"
+ : "<rotate>{l}\t{%2, %k0|%k0, %2}";
}
}
[(set_attr "isa" "*,bmi2,apx_ndd")
(set (attr "length_immediate")
(if_then_else
(and (eq_attr "type" "rotate")
- (and (match_operand 2 "const1_operand")
- (ior (match_test "TARGET_SHIFT1")
- (match_test "optimize_function_for_size_p (cfun)"))))
+ (match_operand 2 "const1_operand"))
(const_string "0")
(const_string "*")))
(set_attr "mode" "SI")])
&& <nf_condition>"
{
bool use_ndd = get_attr_isa (insn) == ISA_APX_NDD;
- if (operands[2] == const1_rtx
- && (TARGET_SHIFT1 || optimize_function_for_size_p (cfun))
- && !use_ndd && !<nf_applied>)
- return "<rotate>{<imodesuffix>}\t%0";
- else
- return use_ndd
- ? "<nf_prefix><rotate>{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
- : "<nf_prefix><rotate>{<imodesuffix>}\t{%2, %0|%0, %2}";
+ return use_ndd ? "<nf_prefix><rotate>{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
+ : "<nf_prefix><rotate>{<imodesuffix>}\t{%2, %0|%0, %2}";
}
[(set_attr "isa" "*,apx_ndd")
(set_attr "type" "rotate")
(set (attr "length_immediate")
(if_then_else
- (and (match_operand 2 "const1_operand")
- (ior (match_test "TARGET_SHIFT1")
- (match_test "optimize_function_for_size_p (cfun)")))
+ (match_operand 2 "const1_operand")
(const_string "0")
(const_string "*")))
(set_attr "has_nf" "1")
if (which_alternative)
return "#";
- if (operands[2] == const1_rtx
- && (TARGET_SHIFT1 || optimize_function_for_size_p (cfun)))
- return "<rotate>{<imodesuffix>}\t%0";
- else
- return "<rotate>{<imodesuffix>}\t{%2, %0|%0, %2}";
+ return "<rotate>{<imodesuffix>}\t{%2, %0|%0, %2}";
}
"&& reload_completed
&& !(rtx_equal_p (operands[0], operands[1]))"
[(set_attr "type" "rotate")
(set (attr "length_immediate")
(if_then_else
- (and (match_operand 2 "const1_operand")
- (ior (match_test "TARGET_SHIFT1")
- (match_test "optimize_function_for_size_p (cfun)")))
+ (match_operand 2 "const1_operand")
(const_string "0")
(const_string "*")))
(set_attr "mode" "<MODE>")])
""
{
bool use_ndd = get_attr_isa (insn) == ISA_APX_NDD;
- if ((TARGET_SHIFT1 || optimize_function_for_size_p (cfun))
- && !use_ndd)
- return "<shift>{<imodesuffix>}\t%0";
return use_ndd ? "<shift>{<imodesuffix>}\t{$1, %1, %0|%0, %1, 1}"
: "<shift>{<imodesuffix>}\t{$1, %0|%0, 1}";
}
[(set_attr "isa" "*, apx_ndd")
(set_attr "type" "ishift1")
- (set (attr "length_immediate")
- (if_then_else
- (ior (match_test "TARGET_SHIFT1")
- (match_test "optimize_function_for_size_p (cfun)"))
- (const_string "0")
- (const_string "*")))
+ (set_attr "length_immediate" "0")
(set_attr "mode" "<MODE>")])
\f
;; Bit set / bit test instructions