From be4d595afd6e0d1a1c0a511dabf2c5a724bdf366 Mon Sep 17 00:00:00 2001 From: Bruno Cardoso Lopes Date: Sat, 19 Jun 2010 00:37:31 +0000 Subject: [PATCH] Shrink down code and add for free AVX {MIN,MAX}P{S,D}{rm,rr} instructions git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106366 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/X86/X86InstrSSE.td | 87 ++++++++----------------- test/MC/AsmParser/X86/x86_32-encoding.s | 32 +++++++++ test/MC/AsmParser/X86/x86_64-encoding.s | 32 +++++++++ 3 files changed, 92 insertions(+), 59 deletions(-) diff --git a/lib/Target/X86/X86InstrSSE.td b/lib/Target/X86/X86InstrSSE.td index 1c84cc7198c..88c477196db 100644 --- a/lib/Target/X86/X86InstrSSE.td +++ b/lib/Target/X86/X86InstrSSE.td @@ -788,6 +788,24 @@ multiclass sse12_fp_binop_rm opc, string OpcodeStr, defm V#NAME#SD : sse12_fp_scalar, XD, VEX_4V; + + defm V#NAME#PS : sse12_fp_packed, + VEX_4V; + + defm V#NAME#PD : sse12_fp_packed, + OpSize, VEX_4V; + + defm V#NAME#SS : sse12_fp_scalar_int, XS, VEX_4V; + + defm V#NAME#SD : sse12_fp_scalar_int, XD, VEX_4V; } let Constraints = "$src1 = $dst" in { @@ -798,72 +816,23 @@ multiclass sse12_fp_binop_rm opc, string OpcodeStr, defm SD : sse12_fp_scalar, XD; - } + defm PS : sse12_fp_packed, TB; - // Vector operation, reg+reg. - def PSrr : PSI { - let isCommutable = Commutable; - } + defm PD : sse12_fp_packed, TB, OpSize; - def PDrr : PDI { - let isCommutable = Commutable; - } - - // Vector operation, reg+mem. - def PSrm : PSI; - - def PDrm : PDI; - - // Intrinsic operation, reg+reg. - def SSrr_Int : SSI("int_x86_sse_", - !strconcat(OpcodeStr, "_ss")) VR128:$src1, - VR128:$src2))]> { - // int_x86_sse_xxx_ss - let isCommutable = Commutable; - } + "", "_ss", ssmem, sse_load_f32>, XS; - def SDrr_Int : SDI("int_x86_sse2_", - !strconcat(OpcodeStr, "_sd")) VR128:$src1, - VR128:$src2))]> { - // int_x86_sse2_xxx_sd - let isCommutable = Commutable; + "2", "_sd", sdmem, sse_load_f64>, XD; } - // Intrinsic operation, reg+mem. - def SSrm_Int : SSI("int_x86_sse_", - !strconcat(OpcodeStr, "_ss")) VR128:$src1, - sse_load_f32:$src2))]>; - // int_x86_sse_xxx_ss - - def SDrm_Int : SDI("int_x86_sse2_", - !strconcat(OpcodeStr, "_sd")) VR128:$src1, - sse_load_f64:$src2))]>; - // int_x86_sse2_xxx_sd - // Vector intrinsic operation, reg+reg. def PSrr_Int : PSI