Reverting r117031 to cleanup valgrind errors.
authorAndrew Trick <atrick@apple.com>
Fri, 22 Oct 2010 03:58:29 +0000 (03:58 +0000)
committerAndrew Trick <atrick@apple.com>
Fri, 22 Oct 2010 03:58:29 +0000 (03:58 +0000)
It doesn't look like anything is wrong with the checkin,
but the new test cases expose a mem bug in AsmParser.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117087 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/AsmParser/X86AsmParser.cpp
lib/Target/X86/X86InstrFPStack.td
lib/Target/X86/X86InstrSystem.td
test/MC/X86/x86-32-coverage.s
test/MC/X86/x86-32.s
test/MC/X86/x86-64.s

index 975d46fadcd4f4153bf576fe320c24cd6689b0ba..4aad817f13d690877eb5668e09f51c48d6c043bb 100644 (file)
@@ -703,7 +703,6 @@ ParseInstruction(StringRef Name, SMLoc NameLoc,
     .Case("fwait", "wait")
     .Case("movzx", "movzb")  // FIXME: Not correct.
     .Case("fildq", "fildll")
-    .Case("ud2a", "ud2")
     .Default(Name);
 
   // FIXME: Hack to recognize cmp<comparison code>{ss,sd,ps,pd}.
@@ -1176,10 +1175,9 @@ MatchAndEmitInstruction(SMLoc IDLoc,
 
   // First, handle aliases that expand to multiple instructions.
   // FIXME: This should be replaced with a real .td file alias mechanism.
-  if (Op->getToken() == "fstsw" || Op->getToken() == "fstsww" ||
-      Op->getToken() == "fstcw" || Op->getToken() == "fstcww" ||
+  if (Op->getToken() == "fstsw" || Op->getToken() == "fstcw" ||
       Op->getToken() == "finit" || Op->getToken() == "fsave" ||
-      Op->getToken() == "fstenv" || Op->getToken() == "fclex") {
+      Op->getToken() == "fstenv") {
     MCInst Inst;
     Inst.setOpcode(X86::WAIT);
     Out.EmitInstruction(Inst);
@@ -1189,11 +1187,8 @@ MatchAndEmitInstruction(SMLoc IDLoc,
         .Case("finit", "fninit")
         .Case("fsave", "fnsave")
         .Case("fstcw", "fnstcw")
-        .Case("fstcww", "fnstcw")
         .Case("fstenv", "fnstenv")
         .Case("fstsw", "fnstsw")
-        .Case("fstsww", "fnstsw")
-        .Case("fclex", "fnclex")
         .Default(0);
     assert(Repl && "Unknown wait-prefixed instruction");
     delete Operands[0];
index 57634d3c0fb1694fda011b5f7777d0575ca79ae3..0087e4892bb981d0eb923e5789cc9aef30728046 100644 (file)
@@ -340,7 +340,7 @@ def FCOMP64m : FPI<0xDC, MRM3m, (outs), (ins f64mem:$src), "fcomp{l}\t$src">;
 
 def FRSTORm  : FPI<0xDD, MRM4m, (outs f32mem:$dst), (ins), "frstor\t$dst">;
 def FSAVEm   : FPI<0xDD, MRM6m, (outs f32mem:$dst), (ins), "fnsave\t$dst">;
-def FNSTSWm  : FPI<0xDD, MRM7m, (outs f32mem:$dst), (ins), "fnstsw{w}\t$dst">;
+def FNSTSWm  : FPI<0xDD, MRM7m, (outs f32mem:$dst), (ins), "fnstsw\t$dst">;
 
 def FICOM16m : FPI<0xDE, MRM2m, (outs), (ins i16mem:$src), "ficom{s}\t$src">;
 def FICOMP16m: FPI<0xDE, MRM3m, (outs), (ins i16mem:$src), "ficomp{s}\t$src">;
@@ -600,12 +600,12 @@ def FNSTSW8r  : I<0xE0, RawFrm,                  // AX = fp flags
                   (outs), (ins), "fnstsw %ax", []>, DF;
 
 def FNSTCW16m : I<0xD9, MRM7m,                   // [mem16] = X87 control world
-                  (outs), (ins i16mem:$dst), "fnstcw{w}\t$dst",
+                  (outs), (ins i16mem:$dst), "fnstcw\t$dst",
                   [(X86fp_cwd_get16 addr:$dst)]>;
                   
 let mayLoad = 1 in
 def FLDCW16m  : I<0xD9, MRM5m,                   // X87 control world = [mem16]
-                  (outs), (ins i16mem:$dst), "fldcw{w}\t$dst", []>;
+                  (outs), (ins i16mem:$dst), "fldcw\t$dst", []>;
 
 // FPU control instructions
 def FNINIT : I<0xE3, RawFrm, (outs), (ins), "fninit", []>, DB;
index 835794d5d40a63f1e452ea03afbaadf1a893e74d..48b6d6ecf0721dc0b52d22aaaa56c4e2d8b39d0a 100644 (file)
@@ -310,13 +310,13 @@ def LGS64rm : RI<0xb5, MRMSrcMem, (outs GR64:$dst), (ins opaque80mem:$src),
 
 
 def VERRr : I<0x00, MRM4r, (outs), (ins GR16:$seg),
-              "verr{w}\t$seg", []>, TB;
+              "verr\t$seg", []>, TB;
 def VERRm : I<0x00, MRM4m, (outs), (ins i16mem:$seg),
-              "verr{w}\t$seg", []>, TB;
+              "verr\t$seg", []>, TB;
 def VERWr : I<0x00, MRM5r, (outs), (ins GR16:$seg),
-              "verw{w}\t$seg", []>, TB;
+              "verw\t$seg", []>, TB;
 def VERWm : I<0x00, MRM5m, (outs), (ins i16mem:$seg),
-              "verw{w}\t$seg", []>, TB;
+              "verw\t$seg", []>, TB;
 
 //===----------------------------------------------------------------------===//
 // Descriptor-table support instructions
index 856a59d2800a6f404646f4c08acf296393022c30..f97fc4bee03547dbad2a7710a6ce8a48b940e5c0 100644 (file)
 // CHECK:      fabs
                fabs
 
-// CHECK:      fldcww  3735928559(%ebx,%ecx,8)
+// CHECK:      fldcw   3735928559(%ebx,%ecx,8)
                fldcw   0xdeadbeef(%ebx,%ecx,8)
 
-// CHECK:      fnstcww 3735928559(%ebx,%ecx,8)
+// CHECK:      fnstcw  3735928559(%ebx,%ecx,8)
                fnstcw  0xdeadbeef(%ebx,%ecx,8)
 
 // CHECK:      rdtsc
 // CHECK:  encoding: [0x0f,0x00,0x0d,0xed,0x7e,0x00,0x00]
                strw    0x7eed
 
-// CHECK: verrw        %bx
+// CHECK: verr %bx
 // CHECK:  encoding: [0x0f,0x00,0xe3]
                verr    %bx
 
-// CHECK: verrw        3735928559(%ebx,%ecx,8)
+// CHECK: verr 3735928559(%ebx,%ecx,8)
 // CHECK:  encoding: [0x0f,0x00,0xa4,0xcb,0xef,0xbe,0xad,0xde]
                verr    0xdeadbeef(%ebx,%ecx,8)
 
-// CHECK: verrw        3133065982
+// CHECK: verr 3133065982
 // CHECK:  encoding: [0x0f,0x00,0x25,0xfe,0xca,0xbe,0xba]
                verr    0xbabecafe
 
-// CHECK: verrw        305419896
+// CHECK: verr 305419896
 // CHECK:  encoding: [0x0f,0x00,0x25,0x78,0x56,0x34,0x12]
                verr    0x12345678
 
-// CHECK: verww        %bx
+// CHECK: verw %bx
 // CHECK:  encoding: [0x0f,0x00,0xeb]
                verw    %bx
 
-// CHECK: verww        3735928559(%ebx,%ecx,8)
+// CHECK: verw 3735928559(%ebx,%ecx,8)
 // CHECK:  encoding: [0x0f,0x00,0xac,0xcb,0xef,0xbe,0xad,0xde]
                verw    0xdeadbeef(%ebx,%ecx,8)
 
-// CHECK: verww        3133065982
+// CHECK: verw 3133065982
 // CHECK:  encoding: [0x0f,0x00,0x2d,0xfe,0xca,0xbe,0xba]
                verw    0xbabecafe
 
-// CHECK: verww        305419896
+// CHECK: verw 305419896
 // CHECK:  encoding: [0x0f,0x00,0x2d,0x78,0x56,0x34,0x12]
                verw    0x12345678
 
 // CHECK:  encoding: [0xdb,0xe3]
                fninit
 
-// CHECK: fldcww       3735928559(%ebx,%ecx,8)
+// CHECK: fldcw        3735928559(%ebx,%ecx,8)
 // CHECK:  encoding: [0xd9,0xac,0xcb,0xef,0xbe,0xad,0xde]
                fldcw   0xdeadbeef(%ebx,%ecx,8)
 
-// CHECK: fldcww       3133065982
+// CHECK: fldcw        3133065982
 // CHECK:  encoding: [0xd9,0x2d,0xfe,0xca,0xbe,0xba]
                fldcw   0xbabecafe
 
-// CHECK: fldcww       305419896
+// CHECK: fldcw        305419896
 // CHECK:  encoding: [0xd9,0x2d,0x78,0x56,0x34,0x12]
                fldcw   0x12345678
 
-// CHECK: fnstcww      3735928559(%ebx,%ecx,8)
+// CHECK: fnstcw       3735928559(%ebx,%ecx,8)
 // CHECK:  encoding: [0xd9,0xbc,0xcb,0xef,0xbe,0xad,0xde]
                fnstcw  0xdeadbeef(%ebx,%ecx,8)
 
-// CHECK: fnstcww      3133065982
+// CHECK: fnstcw       3133065982
 // CHECK:  encoding: [0xd9,0x3d,0xfe,0xca,0xbe,0xba]
                fnstcw  0xbabecafe
 
-// CHECK: fnstcww      305419896
+// CHECK: fnstcw       305419896
 // CHECK:  encoding: [0xd9,0x3d,0x78,0x56,0x34,0x12]
                fnstcw  0x12345678
 
-// CHECK: fnstsww      3735928559(%ebx,%ecx,8)
+// CHECK: fnstsw       3735928559(%ebx,%ecx,8)
 // CHECK:  encoding: [0xdd,0xbc,0xcb,0xef,0xbe,0xad,0xde]
                fnstsw  0xdeadbeef(%ebx,%ecx,8)
 
-// CHECK: fnstsww      3133065982
+// CHECK: fnstsw       3133065982
 // CHECK:  encoding: [0xdd,0x3d,0xfe,0xca,0xbe,0xba]
                fnstsw  0xbabecafe
 
-// CHECK: fnstsww      305419896
+// CHECK: fnstsw       305419896
 // CHECK:  encoding: [0xdd,0x3d,0x78,0x56,0x34,0x12]
                fnstsw  0x12345678
 
 // CHECK:      strw    32493
                strw    0x7eed
 
-// CHECK:      verrw   %bx
+// CHECK:      verr    %bx
                verr    %bx
 
-// CHECK:      verrw   3735928559(%ebx,%ecx,8)
+// CHECK:      verr    3735928559(%ebx,%ecx,8)
                verr    0xdeadbeef(%ebx,%ecx,8)
 
-// CHECK:      verrw   3133065982
+// CHECK:      verr    3133065982
                verr    0xbabecafe
 
-// CHECK:      verrw   305419896
+// CHECK:      verr    305419896
                verr    0x12345678
 
-// CHECK:      verww   %bx
+// CHECK:      verw    %bx
                verw    %bx
 
-// CHECK:      verww   3735928559(%ebx,%ecx,8)
+// CHECK:      verw    3735928559(%ebx,%ecx,8)
                verw    0xdeadbeef(%ebx,%ecx,8)
 
-// CHECK:      verww   3133065982
+// CHECK:      verw    3133065982
                verw    0xbabecafe
 
-// CHECK:      verww   305419896
+// CHECK:      verw    305419896
                verw    0x12345678
 
 // CHECK:      fld     %st(2)
 // CHECK:      fninit
                fninit
 
-// CHECK:      fldcww  3735928559(%ebx,%ecx,8)
+// CHECK:      fldcw   3735928559(%ebx,%ecx,8)
                fldcw   0xdeadbeef(%ebx,%ecx,8)
 
-// CHECK:      fldcww  3133065982
+// CHECK:      fldcw   3133065982
                fldcw   0xbabecafe
 
-// CHECK:      fldcww  305419896
+// CHECK:      fldcw   305419896
                fldcw   0x12345678
 
-// CHECK:      fnstcww 3735928559(%ebx,%ecx,8)
+// CHECK:      fnstcw  3735928559(%ebx,%ecx,8)
                fnstcw  0xdeadbeef(%ebx,%ecx,8)
 
-// CHECK:      fnstcww 3133065982
+// CHECK:      fnstcw  3133065982
                fnstcw  0xbabecafe
 
-// CHECK:      fnstcww 305419896
+// CHECK:      fnstcw  305419896
                fnstcw  0x12345678
 
-// CHECK:      fnstsww 3735928559(%ebx,%ecx,8)
+// CHECK:      fnstsw  3735928559(%ebx,%ecx,8)
                fnstsw  0xdeadbeef(%ebx,%ecx,8)
 
-// CHECK:      fnstsww 3133065982
+// CHECK:      fnstsw  3133065982
                fnstsw  0xbabecafe
 
-// CHECK:      fnstsww 305419896
+// CHECK:      fnstsw  305419896
                fnstsw  0x12345678
 
 // CHECK:      fnclex
index 4c59aa78904bef7a4386492ae530e63680c1b14c..c474b1c589c5dc77ac1b6673d1f55a75b9fdcda5 100644 (file)
@@ -702,67 +702,3 @@ pshufw $90, %mm4, %mm0
 // CHECK: sidt 4(%eax)
 // CHECK:  encoding: [0x0f,0x01,0x48,0x04]
                sidtl   4(%eax)
-
-// CHECK: verrw        2(%eax)
-// CHECK:  encoding: [0x0f,0x00,0x60,0x02]
-               verrw   2(%eax)
-
-// CHECK: verrw        2(%eax)
-// CHECK:  encoding: [0x0f,0x00,0x60,0x02]
-               verr    2(%eax)
-
-// CHECK: verrw        %bx
-// CHECK:  encoding: [0x0f,0x00,0xe3]
-               verrw   %bx
-
-// CHECK: verrw        %bx
-// CHECK:  encoding: [0x0f,0x00,0xe3]
-               verr    %bx
-
-// CHECK: verww        2(%eax)
-// CHECK:  encoding: [0x0f,0x00,0x68,0x02]
-               verww   2(%eax)
-
-// CHECK: verww        2(%eax)
-// CHECK:  encoding: [0x0f,0x00,0x68,0x02]
-               verw    2(%eax)
-
-// CHECK: verww        %bx
-// CHECK:  encoding: [0x0f,0x00,0xeb]
-               verww   %bx
-
-// CHECK: verww        %bx
-// CHECK:  encoding: [0x0f,0x00,0xeb]
-               verw    %bx
-
-// CHECK: fldcww       6(%ecx)
-// CHECK:  encoding: [0xd9,0x69,0x06]
-               fldcw   6(%ecx)
-
-// CHECK: fldcww       6(%ecx)
-// CHECK:  encoding: [0xd9,0x69,0x06]
-               fldcww  6(%ecx)
-
-// CHECK: fnstcww      6(%ecx)
-// CHECK:  encoding: [0xd9,0x79,0x06]
-               fnstcw  6(%ecx)
-
-// CHECK: fnstcww      6(%ecx)
-// CHECK:  encoding: [0xd9,0x79,0x06]
-               fnstcww 6(%ecx)
-
-// CHECK: wait
-// CHECK:  encoding: [0x9b]
-               fstsw   %ax
-
-// CHECK: wait
-// CHECK:  encoding: [0x9b]
-               fstsww  0x7eed
-
-// CHECK: wait
-// CHECK:  encoding: [0x9b]
-               fclex
-
-// CHECK: ud2
-// CHECK:  encoding: [0x0f,0x0b]
-               ud2a
index 2df3d130bd82faa2a97844f10d66869390aba0d0..a115b342aa88caf00f0ef22d198ddf1fefb31534 100644 (file)
@@ -427,17 +427,17 @@ fstsw %ax
 // CHECK: fnstsw %ax
 fstsw (%rax)
 // CHECK: wait
-// CHECK: fnstsww (%rax)
+// CHECK: fnstsw (%rax)
 
 // PR8259
 fstcw (%rsp)
 // CHECK: wait
-// CHECK: fnstcww (%rsp)
+// CHECK: fnstcw (%rsp)
 
 // PR8259
 fstcw (%rsp)
 // CHECK: wait
-// CHECK: fnstcww (%rsp)
+// CHECK: fnstcw (%rsp)
 
 // PR8258
 finit