(set_attr "length_immediate" "1")])
(define_insn "*movxi_internal_avx512f"
- [(set (match_operand:XI 0 "nonimmediate_operand" "=v,v ,m")
- (match_operand:XI 1 "nonimmediate_or_sse_const_operand" "BC,vm,v"))]
+ [(set (match_operand:XI 0 "nonimmediate_operand" "=v,v ,v ,m")
+ (match_operand:XI 1 "nonimmediate_or_sse_const_operand" " C,BC,vm,v"))]
"TARGET_AVX512F
&& (register_operand (operands[0], XImode)
|| register_operand (operands[1], XImode))"
gcc_unreachable ();
}
}
- [(set_attr "type" "sselog1,ssemov,ssemov")
+ [(set_attr "type" "sselog1,sselog1,ssemov,ssemov")
(set_attr "prefix" "evex")
(set_attr "mode" "XI")])
(define_insn "*movoi_internal_avx"
- [(set (match_operand:OI 0 "nonimmediate_operand" "=v,v,v ,m")
- (match_operand:OI 1 "nonimmediate_or_sse_const_operand" "BC,C,vm,v"))]
+ [(set (match_operand:OI 0 "nonimmediate_operand" "=v,v ,v ,m")
+ (match_operand:OI 1 "nonimmediate_or_sse_const_operand" " C,BC,vm,v"))]
"TARGET_AVX
&& (register_operand (operands[0], OImode)
|| register_operand (operands[1], OImode))"
gcc_unreachable ();
}
}
- [(set_attr "isa" "avx2,*,*,*")
+ [(set_attr "isa" "*,avx2,*,*")
(set_attr "type" "sselog1,sselog1,ssemov,ssemov")
(set_attr "prefix" "vex")
(set (attr "mode")
(cond [(ior (match_operand 0 "ext_sse_reg_operand")
(match_operand 1 "ext_sse_reg_operand"))
(const_string "XI")
- (and (eq_attr "alternative" "0")
- (and (match_test "TARGET_AVX512VL")
- (match_operand 1 "constm1_operand")))
+ (and (eq_attr "alternative" "1")
+ (match_test "TARGET_AVX512VL"))
(const_string "XI")
(ior (match_test "TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL")
(and (eq_attr "alternative" "3")
(const_string "OI")))])
(define_insn "*movti_internal"
- [(set (match_operand:TI 0 "nonimmediate_operand" "=!r ,o ,v ,v,v ,m")
- (match_operand:TI 1 "general_operand" "riFo,re,BC,C,vm,v"))]
+ [(set (match_operand:TI 0 "nonimmediate_operand" "=!r ,o ,v,v ,v ,m")
+ (match_operand:TI 1 "general_operand" "riFo,re,C,BC,vm,v"))]
"(TARGET_64BIT
&& !(MEM_P (operands[0]) && MEM_P (operands[1])))
|| (TARGET_SSE
gcc_unreachable ();
}
}
- [(set_attr "isa" "x64,x64,sse2,*,*,*")
+ [(set_attr "isa" "x64,x64,*,sse2,*,*")
(set_attr "type" "multi,multi,sselog1,sselog1,ssemov,ssemov")
(set (attr "prefix")
(if_then_else (eq_attr "type" "sselog1,ssemov")
(ior (match_operand 0 "ext_sse_reg_operand")
(match_operand 1 "ext_sse_reg_operand"))
(const_string "XI")
- (and (eq_attr "alternative" "2")
- (and (match_test "TARGET_AVX512VL")
- (match_operand 1 "constm1_operand")))
+ (and (eq_attr "alternative" "3")
+ (match_test "TARGET_AVX512VL"))
(const_string "XI")
(ior (not (match_test "TARGET_SSE2"))
(ior (match_test "TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL")
})
(define_insn "mov<mode>_internal"
- [(set (match_operand:VMOVE 0 "nonimmediate_operand" "=v,v ,m")
- (match_operand:VMOVE 1 "nonimmediate_or_sse_const_operand" "BC,vm,v"))]
+ [(set (match_operand:VMOVE 0 "nonimmediate_operand"
+ "=v,v ,v ,m")
+ (match_operand:VMOVE 1 "nonimmediate_or_sse_const_operand"
+ " C,BC,vm,v"))]
"TARGET_SSE
&& (register_operand (operands[0], <MODE>mode)
|| register_operand (operands[1], <MODE>mode))"
gcc_unreachable ();
}
}
- [(set_attr "type" "sselog1,ssemov,ssemov")
+ [(set_attr "type" "sselog1,sselog1,ssemov,ssemov")
(set_attr "prefix" "maybe_vex")
(set (attr "mode")
- (cond [(and (eq_attr "alternative" "0")
- (and (match_test "TARGET_AVX512VL")
- (match_operand 1 "vector_all_ones_operand")))
+ (cond [(and (eq_attr "alternative" "1")
+ (match_test "TARGET_AVX512VL"))
(const_string "XI")
(and (match_test "<MODE_SIZE> == 16")
(ior (match_test "TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL")
- (and (eq_attr "alternative" "2")
+ (and (eq_attr "alternative" "3")
(match_test "TARGET_SSE_TYPELESS_STORES"))))
(const_string "<ssePSmode>")
(match_test "TARGET_AVX")
(match_test "TARGET_SSE_LOAD0_BY_PXOR"))
(const_string "TI")
]
- (const_string "<sseinsnmode>")))])
+ (const_string "<sseinsnmode>")))
+ (set (attr "enabled")
+ (cond [(and (match_test "<MODE_SIZE> == 16")
+ (eq_attr "alternative" "1"))
+ (symbol_ref "TARGET_SSE2")
+ (and (match_test "<MODE_SIZE> == 32")
+ (eq_attr "alternative" "1"))
+ (symbol_ref "TARGET_AVX2")
+ ]
+ (symbol_ref "true")))])
(define_insn "<avx512>_load<mode>_mask"
[(set (match_operand:V48_AVX512VL 0 "register_operand" "=v,v")