mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
Horizontal-add instructions are not commutative.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52363 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
72b7b098c7
commit
4e444436f2
@ -553,24 +553,24 @@ let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
|
||||
let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
|
||||
def int_x86_ssse3_phadd_w : GCCBuiltin<"__builtin_ia32_phaddw">,
|
||||
Intrinsic<[llvm_v4i16_ty, llvm_v4i16_ty,
|
||||
llvm_v4i16_ty], [IntrNoMem, Commutative]>;
|
||||
llvm_v4i16_ty], [IntrNoMem]>;
|
||||
def int_x86_ssse3_phadd_w_128 : GCCBuiltin<"__builtin_ia32_phaddw128">,
|
||||
Intrinsic<[llvm_v8i16_ty, llvm_v8i16_ty,
|
||||
llvm_v8i16_ty], [IntrNoMem, Commutative]>;
|
||||
llvm_v8i16_ty], [IntrNoMem]>;
|
||||
|
||||
def int_x86_ssse3_phadd_d : GCCBuiltin<"__builtin_ia32_phaddd">,
|
||||
Intrinsic<[llvm_v2i32_ty, llvm_v2i32_ty,
|
||||
llvm_v2i32_ty], [IntrNoMem, Commutative]>;
|
||||
llvm_v2i32_ty], [IntrNoMem]>;
|
||||
def int_x86_ssse3_phadd_d_128 : GCCBuiltin<"__builtin_ia32_phaddd128">,
|
||||
Intrinsic<[llvm_v4i32_ty, llvm_v4i32_ty,
|
||||
llvm_v4i32_ty], [IntrNoMem, Commutative]>;
|
||||
llvm_v4i32_ty], [IntrNoMem]>;
|
||||
|
||||
def int_x86_ssse3_phadd_sw : GCCBuiltin<"__builtin_ia32_phaddsw">,
|
||||
Intrinsic<[llvm_v4i16_ty, llvm_v4i16_ty,
|
||||
llvm_v4i16_ty], [IntrNoMem, Commutative]>;
|
||||
llvm_v4i16_ty], [IntrNoMem]>;
|
||||
def int_x86_ssse3_phadd_sw_128 : GCCBuiltin<"__builtin_ia32_phaddsw128">,
|
||||
Intrinsic<[llvm_v4i32_ty, llvm_v4i32_ty,
|
||||
llvm_v4i32_ty], [IntrNoMem, Commutative]>;
|
||||
llvm_v4i32_ty], [IntrNoMem]>;
|
||||
|
||||
def int_x86_ssse3_phsub_w : GCCBuiltin<"__builtin_ia32_phsubw">,
|
||||
Intrinsic<[llvm_v4i16_ty, llvm_v4i16_ty,
|
||||
@ -595,11 +595,14 @@ let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
|
||||
|
||||
def int_x86_ssse3_pmadd_ub_sw : GCCBuiltin<"__builtin_ia32_pmaddubsw">,
|
||||
Intrinsic<[llvm_v4i16_ty, llvm_v4i16_ty,
|
||||
llvm_v4i16_ty], [IntrNoMem, Commutative]>;
|
||||
llvm_v4i16_ty], [IntrNoMem]>;
|
||||
def int_x86_ssse3_pmadd_ub_sw_128 : GCCBuiltin<"__builtin_ia32_pmaddubsw128">,
|
||||
Intrinsic<[llvm_v8i16_ty, llvm_v8i16_ty,
|
||||
llvm_v8i16_ty], [IntrNoMem, Commutative]>;
|
||||
llvm_v8i16_ty], [IntrNoMem]>;
|
||||
}
|
||||
|
||||
// Packed multiply high with round and scale
|
||||
let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
|
||||
def int_x86_ssse3_pmul_hr_sw : GCCBuiltin<"__builtin_ia32_pmulhrsw">,
|
||||
Intrinsic<[llvm_v4i16_ty, llvm_v4i16_ty,
|
||||
llvm_v4i16_ty], [IntrNoMem, Commutative]>;
|
||||
|
@ -2745,13 +2745,13 @@ let Constraints = "$src1 = $dst" in {
|
||||
|
||||
defm PHADDW : SS3I_binop_rm_int_16<0x01, "phaddw",
|
||||
int_x86_ssse3_phadd_w,
|
||||
int_x86_ssse3_phadd_w_128, 1>;
|
||||
int_x86_ssse3_phadd_w_128>;
|
||||
defm PHADDD : SS3I_binop_rm_int_32<0x02, "phaddd",
|
||||
int_x86_ssse3_phadd_d,
|
||||
int_x86_ssse3_phadd_d_128, 1>;
|
||||
int_x86_ssse3_phadd_d_128>;
|
||||
defm PHADDSW : SS3I_binop_rm_int_16<0x03, "phaddsw",
|
||||
int_x86_ssse3_phadd_sw,
|
||||
int_x86_ssse3_phadd_sw_128, 1>;
|
||||
int_x86_ssse3_phadd_sw_128>;
|
||||
defm PHSUBW : SS3I_binop_rm_int_16<0x05, "phsubw",
|
||||
int_x86_ssse3_phsub_w,
|
||||
int_x86_ssse3_phsub_w_128>;
|
||||
@ -2763,7 +2763,7 @@ defm PHSUBSW : SS3I_binop_rm_int_16<0x07, "phsubsw",
|
||||
int_x86_ssse3_phsub_sw_128>;
|
||||
defm PMADDUBSW : SS3I_binop_rm_int_8 <0x04, "pmaddubsw",
|
||||
int_x86_ssse3_pmadd_ub_sw,
|
||||
int_x86_ssse3_pmadd_ub_sw_128, 1>;
|
||||
int_x86_ssse3_pmadd_ub_sw_128>;
|
||||
defm PMULHRSW : SS3I_binop_rm_int_16<0x0B, "pmulhrsw",
|
||||
int_x86_ssse3_pmul_hr_sw,
|
||||
int_x86_ssse3_pmul_hr_sw_128, 1>;
|
||||
|
Loading…
Reference in New Issue
Block a user