}
}
[(set (attr "type")
- (cond [(match_test "optimize_function_for_size_p (cfun)")
+ (cond [(eq_attr "alternative" "4,5,6")
+ (const_string "mskmov")
+ (match_test "optimize_function_for_size_p (cfun)")
(const_string "imov")
(and (eq_attr "alternative" "0")
(ior (not (match_test "TARGET_PARTIAL_REG_STALL"))
(and (eq_attr "alternative" "1,2")
(match_operand:HI 1 "aligned_operand"))
(const_string "imov")
- (eq_attr "alternative" "4,5,6")
- (const_string "mskmov")
(and (match_test "TARGET_MOVX")
(eq_attr "alternative" "0,2"))
(const_string "imovx")
(define_insn "*movqi_internal"
[(set (match_operand:QI 0 "nonimmediate_operand"
- "=q,q ,q ,r,r ,?r,m ,k,k,r")
+ "=q,q ,q ,r,r ,?r,m ,k,k,r ,m,k")
(match_operand:QI 1 "general_operand"
- "q ,qn,qm,q,rn,qm,qn,r ,k,k"))]
+ "q ,qn,qm,q,rn,qm,qn,r ,k,k,k,m"))]
"!(MEM_P (operands[0]) && MEM_P (operands[1]))"
{
switch (get_attr_type (insn))
case TYPE_MSKMOV:
switch (which_alternative)
{
- case 7: return TARGET_AVX512BW ? "kmovb\t{%k1, %0|%0, %k1}"
+ case 7: return TARGET_AVX512DQ ? "kmovb\t{%k1, %0|%0, %k1}"
: "kmovw\t{%k1, %0|%0, %k1}";
- case 8: return TARGET_AVX512BW ? "kmovb\t{%1, %0|%0, %1}"
+ case 8: return TARGET_AVX512DQ ? "kmovb\t{%1, %0|%0, %1}"
: "kmovw\t{%1, %0|%0, %1}";
- case 9: return TARGET_AVX512BW ? "kmovb\t{%1, %k0|%k0, %1}"
+ case 9: return TARGET_AVX512DQ ? "kmovb\t{%1, %k0|%k0, %1}"
: "kmovw\t{%1, %k0|%k0, %1}";
+ case 10:
+ case 11:
+ gcc_assert (TARGET_AVX512DQ);
+ return "kmovb\t{%1, %0|%0, %1}";
default: gcc_unreachable ();
}
return "mov{b}\t{%1, %0|%0, %1}";
}
}
- [(set (attr "type")
- (cond [(and (eq_attr "alternative" "5")
+ [(set_attr "isa" "*,*,*,*,*,*,*,*,*,*,avx512dq,avx512dq")
+ (set (attr "type")
+ (cond [(eq_attr "alternative" "3,5")
+ (const_string "imovx")
+ (eq_attr "alternative" "7,8,9,10,11")
+ (const_string "mskmov")
+ (and (eq_attr "alternative" "5")
(not (match_operand:QI 1 "aligned_operand")))
(const_string "imovx")
(match_test "optimize_function_for_size_p (cfun)")
(ior (not (match_test "TARGET_PARTIAL_REG_STALL"))
(not (match_test "TARGET_QIMODE_MATH"))))
(const_string "imov")
- (eq_attr "alternative" "3,5")
- (const_string "imovx")
- (eq_attr "alternative" "7,8,9")
- (const_string "mskmov")
(and (match_test "TARGET_MOVX")
(eq_attr "alternative" "2"))
(const_string "imovx")