[llvm-commits] [llvm] r153636 - /llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp

Bruno Cardoso Lopes bruno.cardoso at gmail.com
Thu Mar 29 00:42:08 PDT 2012


On Thu, Mar 29, 2012 at 4:11 AM, Craig Topper <craig.topper at gmail.com> wrote:
> Author: ctopper
> Date: Thu Mar 29 02:11:23 2012
> New Revision: 153636
>
> URL: http://llvm.org/viewvc/llvm-project?rev=153636&view=rev
> Log:
> Only allow symbolic names for (v)cmpss/sd/ps/pd encodings 8-31 to be used with 'v' version of instructions.

Testcase?

> Modified:
>    llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp
>
> Modified: llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp?rev=153636&r1=153635&r2=153636&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp (original)
> +++ llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp Thu Mar 29 02:11:23 2012
> @@ -950,20 +950,21 @@
>   if ((PatchedName.startswith("cmp") || PatchedName.startswith("vcmp")) &&
>       (PatchedName.endswith("ss") || PatchedName.endswith("sd") ||
>        PatchedName.endswith("ps") || PatchedName.endswith("pd"))) {
> -    bool IsVCMP = PatchedName.startswith("vcmp");
> +    bool IsVCMP = PatchedName[0] == 'v';
>     unsigned SSECCIdx = IsVCMP ? 4 : 3;
>     unsigned SSEComparisonCode = StringSwitch<unsigned>(
>       PatchedName.slice(SSECCIdx, PatchedName.size() - 2))
> -      .Case("eq",          0)
> -      .Case("lt",          1)
> -      .Case("le",          2)
> -      .Case("unord",       3)
> -      .Case("neq",         4)
> -      .Case("nlt",         5)
> -      .Case("nle",         6)
> -      .Case("ord",         7)
> -      .Case("eq_uq",       8)
> -      .Case("nge",         9)
> +      .Case("eq",       0x00)
> +      .Case("lt",       0x01)
> +      .Case("le",       0x02)
> +      .Case("unord",    0x03)
> +      .Case("neq",      0x04)
> +      .Case("nlt",      0x05)
> +      .Case("nle",      0x06)
> +      .Case("ord",      0x07)
> +      /* AVX only from here */
> +      .Case("eq_uq",    0x08)
> +      .Case("nge",      0x09)
>       .Case("ngt",      0x0A)
>       .Case("false",    0x0B)
>       .Case("neq_oq",   0x0C)
> @@ -987,7 +988,7 @@
>       .Case("gt_oq",    0x1E)
>       .Case("true_us",  0x1F)
>       .Default(~0U);
> -    if (SSEComparisonCode != ~0U) {
> +    if (SSEComparisonCode != ~0U && (IsVCMP || SSEComparisonCode < 8)) {
>       ExtraImmOp = MCConstantExpr::Create(SSEComparisonCode,
>                                           getParser().getContext());
>       if (PatchedName.endswith("ss")) {
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits



-- 
Bruno Cardoso Lopes
http://www.brunocardoso.cc




More information about the llvm-commits mailing list