"@
movntq\t{%1, %0|%0, %1}
movnti\t{%1, %0|%0, %1}"
- [(set_attr "mmx_isa" "native,x64")
+ [(set_attr "isa" "*,x64")
+ (set_attr "mmx_isa" "native,*")
(set_attr "type" "mmxmov,ssemov")
(set_attr "mode" "DI")])
(vec_duplicate:V4SF (match_dup 1)))]
"operands[0] = lowpart_subreg (V4SFmode, operands[0],
GET_MODE (operands[0]));"
- [(set_attr "mmx_isa" "native,x64_noavx,x64_avx")
+ [(set_attr "mmx_isa" "native,sse_noavx,avx")
(set_attr "type" "mmxcvt,ssemov,ssemov")
(set_attr "mode" "DI,TI,TI")])
p<plusminus_mnemonic><mmxvecsize>\t{%2, %0|%0, %2}
p<plusminus_mnemonic><mmxvecsize>\t{%2, %0|%0, %2}
vp<plusminus_mnemonic><mmxvecsize>\t{%2, %1, %0|%0, %1, %2}"
- [(set_attr "mmx_isa" "native,x64_noavx,x64_avx")
+ [(set_attr "isa" "*,sse2_noavx,avx")
+ (set_attr "mmx_isa" "native,*,*")
(set_attr "type" "mmxadd,sseadd,sseadd")
(set_attr "mode" "DI,TI,TI")])
p<plusminus_mnemonic><mmxvecsize>\t{%2, %0|%0, %2}
p<plusminus_mnemonic><mmxvecsize>\t{%2, %0|%0, %2}
vp<plusminus_mnemonic><mmxvecsize>\t{%2, %1, %0|%0, %1, %2}"
- [(set_attr "mmx_isa" "native,x64_noavx,x64_avx")
+ [(set_attr "isa" "*,sse2_noavx,avx")
+ (set_attr "mmx_isa" "native,*,*")
(set_attr "type" "mmxadd,sseadd,sseadd")
(set_attr "mode" "DI,TI,TI")])
pmullw\t{%2, %0|%0, %2}
pmullw\t{%2, %0|%0, %2}
vpmullw\t{%2, %1, %0|%0, %1, %2}"
- [(set_attr "mmx_isa" "native,x64_noavx,x64_avx")
+ [(set_attr "isa" "*,sse2_noavx,avx")
+ (set_attr "mmx_isa" "native,*,*")
(set_attr "type" "mmxmul,ssemul,ssemul")
(set_attr "mode" "DI,TI,TI")])
pmulhw\t{%2, %0|%0, %2}
pmulhw\t{%2, %0|%0, %2}
vpmulhw\t{%2, %1, %0|%0, %1, %2}"
- [(set_attr "mmx_isa" "native,x64_noavx,x64_avx")
+ [(set_attr "isa" "*,sse2_noavx,avx")
+ (set_attr "mmx_isa" "native,*,*")
(set_attr "type" "mmxmul,ssemul,ssemul")
(set_attr "mode" "DI,TI,TI")])
pmulhuw\t{%2, %0|%0, %2}
pmulhuw\t{%2, %0|%0, %2}
vpmulhuw\t{%2, %1, %0|%0, %1, %2}"
- [(set_attr "mmx_isa" "native,x64_noavx,x64_avx")
+ [(set_attr "isa" "*,sse2_noavx,avx")
+ (set_attr "mmx_isa" "native,*,*")
(set_attr "type" "mmxmul,ssemul,ssemul")
(set_attr "mode" "DI,TI,TI")])
pmaddwd\t{%2, %0|%0, %2}
pmaddwd\t{%2, %0|%0, %2}
vpmaddwd\t{%2, %1, %0|%0, %1, %2}"
- [(set_attr "mmx_isa" "native,x64_noavx,x64_avx")
+ [(set_attr "isa" "*,sse2_noavx,avx")
+ (set_attr "mmx_isa" "native,*,*")
(set_attr "type" "mmxmul,sseiadd,sseiadd")
(set_attr "mode" "DI,TI,TI")])
pmuludq\t{%2, %0|%0, %2}
pmuludq\t{%2, %0|%0, %2}
vpmuludq\t{%2, %1, %0|%0, %1, %2}"
- [(set_attr "mmx_isa" "native,x64_noavx,x64_avx")
+ [(set_attr "isa" "*,sse2_noavx,avx")
+ (set_attr "mmx_isa" "native,*,*")
(set_attr "type" "mmxmul,ssemul,ssemul")
(set_attr "mode" "DI,TI,TI")])
p<maxmin_int>w\t{%2, %0|%0, %2}
p<maxmin_int>w\t{%2, %0|%0, %2}
vp<maxmin_int>w\t{%2, %1, %0|%0, %1, %2}"
- [(set_attr "mmx_isa" "native,x64_noavx,x64_avx")
+ [(set_attr "isa" "*,sse2_noavx,avx")
+ (set_attr "mmx_isa" "native,*,*")
(set_attr "type" "mmxadd,sseiadd,sseiadd")
(set_attr "mode" "DI,TI,TI")])
p<maxmin_int>b\t{%2, %0|%0, %2}
p<maxmin_int>b\t{%2, %0|%0, %2}
vp<maxmin_int>b\t{%2, %1, %0|%0, %1, %2}"
- [(set_attr "mmx_isa" "native,x64_noavx,x64_avx")
+ [(set_attr "isa" "*,sse2_noavx,avx")
+ (set_attr "mmx_isa" "native,*,*")
(set_attr "type" "mmxadd,sseiadd,sseiadd")
(set_attr "mode" "DI,TI,TI")])
psra<mmxvecsize>\t{%2, %0|%0, %2}
psra<mmxvecsize>\t{%2, %0|%0, %2}
vpsra<mmxvecsize>\t{%2, %1, %0|%0, %1, %2}"
- [(set_attr "mmx_isa" "native,x64_noavx,x64_avx")
+ [(set_attr "isa" "*,sse2_noavx,avx")
+ (set_attr "mmx_isa" "native,*,*")
(set_attr "type" "mmxshft,sseishft,sseishft")
(set (attr "length_immediate")
(if_then_else (match_operand 2 "const_int_operand")
p<vshift><mmxvecsize>\t{%2, %0|%0, %2}
p<vshift><mmxvecsize>\t{%2, %0|%0, %2}
vp<vshift><mmxvecsize>\t{%2, %1, %0|%0, %1, %2}"
- [(set_attr "mmx_isa" "native,x64_noavx,x64_avx")
+ [(set_attr "isa" "*,sse2_noavx,avx")
+ (set_attr "mmx_isa" "native,*,*")
(set_attr "type" "mmxshft,sseishft,sseishft")
(set (attr "length_immediate")
(if_then_else (match_operand 2 "const_int_operand")
pcmpeq<mmxvecsize>\t{%2, %0|%0, %2}
pcmpeq<mmxvecsize>\t{%2, %0|%0, %2}
vpcmpeq<mmxvecsize>\t{%2, %1, %0|%0, %1, %2}"
- [(set_attr "mmx_isa" "native,x64_noavx,x64_avx")
+ [(set_attr "isa" "*,sse2_noavx,avx")
+ (set_attr "mmx_isa" "native,*,*")
(set_attr "type" "mmxcmp,ssecmp,ssecmp")
(set_attr "mode" "DI,TI,TI")])
pcmpgt<mmxvecsize>\t{%2, %0|%0, %2}
pcmpgt<mmxvecsize>\t{%2, %0|%0, %2}
vpcmpgt<mmxvecsize>\t{%2, %1, %0|%0, %1, %2}"
- [(set_attr "mmx_isa" "native,x64_noavx,x64_avx")
+ [(set_attr "isa" "*,sse2_noavx,avx")
+ (set_attr "mmx_isa" "native,*,*")
(set_attr "type" "mmxcmp,ssecmp,ssecmp")
(set_attr "mode" "DI,TI,TI")])
pandn\t{%2, %0|%0, %2}
pandn\t{%2, %0|%0, %2}
vpandn\t{%2, %1, %0|%0, %1, %2}"
- [(set_attr "mmx_isa" "native,x64_noavx,x64_avx")
+ [(set_attr "isa" "*,sse2_noavx,avx")
+ (set_attr "mmx_isa" "native,*,*")
(set_attr "type" "mmxadd,sselog,sselog")
(set_attr "mode" "DI,TI,TI")])
p<logic>\t{%2, %0|%0, %2}
p<logic>\t{%2, %0|%0, %2}
vp<logic>\t{%2, %1, %0|%0, %1, %2}"
- [(set_attr "mmx_isa" "native,x64_noavx,x64_avx")
+ [(set_attr "isa" "*,sse2_noavx,avx")
+ (set_attr "mmx_isa" "native,*,*")
(set_attr "type" "mmxadd,sselog,sselog")
(set_attr "mode" "DI,TI,TI")])
"TARGET_MMX_WITH_SSE && reload_completed"
[(const_int 0)]
"ix86_split_mmx_pack (operands, <any_s_truncate:CODE>); DONE;"
- [(set_attr "mmx_isa" "native,x64_noavx,x64_avx")
+ [(set_attr "mmx_isa" "native,sse_noavx,avx")
(set_attr "type" "mmxshft,sselog,sselog")
(set_attr "mode" "DI,TI,TI")])
"TARGET_MMX_WITH_SSE && reload_completed"
[(const_int 0)]
"ix86_split_mmx_pack (operands, SS_TRUNCATE); DONE;"
- [(set_attr "mmx_isa" "native,x64_noavx,x64_avx")
+ [(set_attr "mmx_isa" "native,sse_noavx,avx")
(set_attr "type" "mmxshft,sselog,sselog")
(set_attr "mode" "DI,TI,TI")])
"TARGET_MMX_WITH_SSE && reload_completed"
[(const_int 0)]
"ix86_split_mmx_punpck (operands, true); DONE;"
- [(set_attr "mmx_isa" "native,x64_noavx,x64_avx")
+ [(set_attr "mmx_isa" "native,sse_noavx,avx")
(set_attr "type" "mmxcvt,sselog,sselog")
(set_attr "mode" "DI,TI,TI")])
"TARGET_MMX_WITH_SSE && reload_completed"
[(const_int 0)]
"ix86_split_mmx_punpck (operands, false); DONE;"
- [(set_attr "mmx_isa" "native,x64_noavx,x64_avx")
+ [(set_attr "mmx_isa" "native,sse_noavx,avx")
(set_attr "type" "mmxcvt,sselog,sselog")
(set_attr "mode" "DI,TI,TI")])
"TARGET_MMX_WITH_SSE && reload_completed"
[(const_int 0)]
"ix86_split_mmx_punpck (operands, true); DONE;"
- [(set_attr "mmx_isa" "native,x64_noavx,x64_avx")
+ [(set_attr "mmx_isa" "native,sse_noavx,avx")
(set_attr "type" "mmxcvt,sselog,sselog")
(set_attr "mode" "DI,TI,TI")])
"TARGET_MMX_WITH_SSE && reload_completed"
[(const_int 0)]
"ix86_split_mmx_punpck (operands, false); DONE;"
- [(set_attr "mmx_isa" "native,x64_noavx,x64_avx")
+ [(set_attr "mmx_isa" "native,sse_noavx,avx")
(set_attr "type" "mmxcvt,sselog,sselog")
(set_attr "mode" "DI,TI,TI")])
"TARGET_MMX_WITH_SSE && reload_completed"
[(const_int 0)]
"ix86_split_mmx_punpck (operands, true); DONE;"
- [(set_attr "mmx_isa" "native,x64_noavx,x64_avx")
+ [(set_attr "mmx_isa" "native,sse_noavx,avx")
(set_attr "type" "mmxcvt,sselog,sselog")
(set_attr "mode" "DI,TI,TI")])
"TARGET_MMX_WITH_SSE && reload_completed"
[(const_int 0)]
"ix86_split_mmx_punpck (operands, false); DONE;"
- [(set_attr "mmx_isa" "native,x64_noavx,x64_avx")
+ [(set_attr "mmx_isa" "native,sse_noavx,avx")
(set_attr "type" "mmxcvt,sselog,sselog")
(set_attr "mode" "DI,TI,TI")])
< GET_MODE_NUNITS (V4HImode))"
{
operands[3] = GEN_INT (exact_log2 (INTVAL (operands[3])));
- if (TARGET_MMX_WITH_SSE && TARGET_AVX)
+ switch (which_alternative)
{
+ case 2:
if (MEM_P (operands[2]))
return "vpinsrw\t{%3, %2, %1, %0|%0, %1, %2, %3}";
else
return "vpinsrw\t{%3, %k2, %1, %0|%0, %1, %k2, %3}";
- }
- else
- {
+ case 1:
+ case 0:
if (MEM_P (operands[2]))
return "pinsrw\t{%3, %2, %0|%0, %2, %3}";
else
return "pinsrw\t{%3, %k2, %0|%0, %k2, %3}";
+ default:
+ gcc_unreachable ();
}
}
- [(set_attr "mmx_isa" "native,x64_noavx,x64_avx")
+ [(set_attr "isa" "*,sse2_noavx,avx")
+ (set_attr "mmx_isa" "native,*,*")
(set_attr "type" "mmxcvt,sselog,sselog")
(set_attr "length_immediate" "1")
(set_attr "mode" "DI,TI,TI")])
"@
pextrw\t{%2, %1, %0|%0, %1, %2}
%vpextrw\t{%2, %1, %0|%0, %1, %2}"
- [(set_attr "mmx_isa" "native,x64")
+ [(set_attr "isa" "*,sse2")
+ (set_attr "mmx_isa" "native,*")
(set_attr "type" "mmxcvt,sselog1")
(set_attr "length_immediate" "1")
(set_attr "mode" "DI,TI")])
gcc_unreachable ();
}
}
- [(set_attr "mmx_isa" "native,x64")
+ [(set_attr "isa" "*,sse2")
+ (set_attr "mmx_isa" "native,*")
(set_attr "type" "mmxcvt,sselog")
(set_attr "length_immediate" "1")
(set_attr "mode" "DI,TI")])
emit_insn (gen_rtx_SET (operands[0], op));
DONE;
}
- [(set_attr "mmx_isa" "native,x64,x64_avx")
+ [(set_attr "mmx_isa" "native,sse,avx")
(set_attr "type" "mmxcvt,sselog1,ssemov")
(set_attr "length_immediate" "1,1,0")
(set_attr "mode" "DI,TI,TI")])
(vec_duplicate:V4SI (match_dup 1)))]
"operands[0] = lowpart_subreg (V4SImode, operands[0],
GET_MODE (operands[0]));"
- [(set_attr "mmx_isa" "native,x64_noavx,x64_avx,x64_avx")
+ [(set_attr "mmx_isa" "native,sse_noavx,avx,avx")
(set_attr "type" "mmxcvt,ssemov,ssemov,ssemov")
(set_attr "mode" "DI,TI,TI,TI")])
&& (TARGET_SSE || TARGET_3DNOW)
&& ix86_binary_operator_ok (PLUS, V8QImode, operands)"
{
- /* These two instructions have the same operation, but their encoding
- is different. Prefer the one that is de facto standard. */
- if (TARGET_MMX_WITH_SSE && TARGET_AVX)
- return "vpavgb\t{%2, %1, %0|%0, %1, %2}";
- else if (TARGET_SSE || TARGET_3DNOW_A)
- return "pavgb\t{%2, %0|%0, %2}";
- else
- return "pavgusb\t{%2, %0|%0, %2}";
+ switch (which_alternative)
+ {
+ case 2:
+ return "vpavgb\t{%2, %1, %0|%0, %1, %2}";
+ case 1:
+ case 0:
+ /* These two instructions have the same operation, but their encoding
+ is different. Prefer the one that is de facto standard. */
+ if (TARGET_SSE || TARGET_3DNOW_A)
+ return "pavgb\t{%2, %0|%0, %2}";
+ else
+ return "pavgusb\t{%2, %0|%0, %2}";
+ default:
+ gcc_unreachable ();
+ }
}
- [(set_attr "mmx_isa" "native,x64_noavx,x64_avx")
+ [(set_attr "isa" "*,sse2_noavx,avx")
+ (set_attr "mmx_isa" "native,*,*")
(set_attr "type" "mmxshft,sseiadd,sseiadd")
(set (attr "prefix_extra")
(if_then_else
pavgw\t{%2, %0|%0, %2}
pavgw\t{%2, %0|%0, %2}
vpavgw\t{%2, %1, %0|%0, %1, %2}"
- [(set_attr "mmx_isa" "native,x64_noavx,x64_avx")
+ [(set_attr "isa" "*,sse2_noavx,avx")
+ (set_attr "mmx_isa" "native,*,*")
(set_attr "type" "mmxshft,sseiadd,sseiadd")
(set_attr "mode" "DI,TI,TI")])
psadbw\t{%2, %0|%0, %2}
psadbw\t{%2, %0|%0, %2}
vpsadbw\t{%2, %1, %0|%0, %1, %2}"
- [(set_attr "mmx_isa" "native,x64_noavx,x64_avx")
+ [(set_attr "isa" "*,sse2_noavx,avx")
+ (set_attr "mmx_isa" "native,*,*")
(set_attr "type" "mmxshft,sseiadd,sseiadd")
(set_attr "mode" "DI,TI,TI")])
operands[2] = lowpart_subreg (QImode, operands[0],
GET_MODE (operands[0]));
}
- [(set_attr "mmx_isa" "native,x64")
+ [(set_attr "mmx_isa" "native,sse")
(set_attr "type" "mmxcvt,ssemov")
(set_attr "mode" "DI,TI")])
}
DONE;
}
- [(set_attr "mmx_isa" "native,x64_noavx,x64_avx")
+ [(set_attr "mmx_isa" "native,sse_noavx,avx")
(set_attr "type" "ssecvt")
(set_attr "mode" "V4SF")])
"@
cvtps2pi\t{%1, %0|%0, %q1}
%vcvtps2dq\t{%1, %0|%0, %1}"
- [(set_attr "mmx_isa" "native,x64")
+ [(set_attr "isa" "*,sse2")
+ (set_attr "mmx_isa" "native,*")
(set_attr "type" "ssecvt")
(set_attr "unit" "mmx,*")
(set_attr "mode" "DI")])
"@
cvttps2pi\t{%1, %0|%0, %q1}
%vcvttps2dq\t{%1, %0|%0, %1}"
- [(set_attr "mmx_isa" "native,x64")
+ [(set_attr "isa" "*,sse2")
+ (set_attr "mmx_isa" "native,*")
(set_attr "type" "ssecvt")
(set_attr "unit" "mmx,*")
(set_attr "prefix_rep" "0")
ix86_move_vector_high_sse_to_mmx (op0);
DONE;
}
- [(set_attr "mmx_isa" "native,x64_noavx,x64_avx")
+ [(set_attr "mmx_isa" "native,sse_noavx,avx")
(set_attr "type" "sseiadd")
(set_attr "atom_unit" "complex")
(set_attr "prefix_extra" "1")
ix86_move_vector_high_sse_to_mmx (op0);
DONE;
}
- [(set_attr "mmx_isa" "native,x64_noavx,x64_avx")
+ [(set_attr "mmx_isa" "native,sse_noavx,avx")
(set_attr "type" "sseiadd")
(set_attr "atom_unit" "complex")
(set_attr "prefix_extra" "1")
pmaddubsw\t{%2, %0|%0, %2}
pmaddubsw\t{%2, %0|%0, %2}
vpmaddubsw\t{%2, %1, %0|%0, %1, %2}"
- [(set_attr "mmx_isa" "native,x64_noavx,x64_avx")
+ [(set_attr "isa" "*,noavx,avx")
+ (set_attr "mmx_isa" "native,*,*")
(set_attr "type" "sseiadd")
(set_attr "atom_unit" "simul")
(set_attr "prefix_extra" "1")
pmulhrsw\t{%2, %0|%0, %2}
pmulhrsw\t{%2, %0|%0, %2}
vpmulhrsw\t{%2, %1, %0|%0, %1, %2}"
- [(set_attr "mmx_isa" "native,x64_noavx,x64_avx")
+ [(set_attr "isa" "*,noavx,avx")
+ (set_attr "mmx_isa" "native,*,*")
(set_attr "type" "sseimul")
(set_attr "prefix_extra" "1")
(set (attr "prefix_rex") (symbol_ref "x86_extended_reg_mentioned_p (insn)"))
rtx vec_const = gen_rtx_CONST_VECTOR (V4SImode, par);
operands[5] = force_const_mem (V4SImode, vec_const);
}
- [(set_attr "mmx_isa" "native,x64_noavx,x64_avx")
+ [(set_attr "mmx_isa" "native,sse_noavx,avx")
(set_attr "prefix_extra" "1")
(set (attr "prefix_rex") (symbol_ref "x86_extended_reg_mentioned_p (insn)"))
(set_attr "mode" "DI,TI,TI")])
psign<mmxvecsize>\t{%2, %0|%0, %2}
psign<mmxvecsize>\t{%2, %0|%0, %2}
vpsign<mmxvecsize>\t{%2, %1, %0|%0, %1, %2}"
- [(set_attr "mmx_isa" "native,x64_noavx,x64_avx")
+ [(set_attr "isa" "*,noavx,avx")
+ (set_attr "mmx_isa" "native,*,*")
(set_attr "type" "sselog1")
(set_attr "prefix_extra" "1")
(set (attr "prefix_rex") (symbol_ref "x86_extended_reg_mentioned_p (insn)"))
}
operands[0] = lowpart_subreg (V1TImode, op0, GET_MODE (op0));
}
- [(set_attr "mmx_isa" "native,x64_noavx,x64_avx")
+ [(set_attr "mmx_isa" "native,sse_noavx,avx")
(set_attr "type" "sseishft")
(set_attr "atom_unit" "sishuf")
(set_attr "prefix_extra" "1")
"@
pabs<mmxvecsize>\t{%1, %0|%0, %1}
%vpabs<mmxvecsize>\t{%1, %0|%0, %1}"
- [(set_attr "mmx_isa" "native,x64")
+ [(set_attr "mmx_isa" "native,*")
(set_attr "type" "sselog1")
(set_attr "prefix_rep" "0")
(set_attr "prefix_extra" "1")