coby created this revision. This patch introduces X86AsmParser with the ability to handle the aforementioned ops within compound "MS" arithmetical expressions. Currently - only supported as a stand alone Operand, e.g.: "TYPE X" now allowed : "4 + TYPE X * 128"
LLVM side: https://reviews.llvm.org/D31173 Repository: rL LLVM https://reviews.llvm.org/D31174 Files: test/CodeGen/ms-inline-asm.c Index: test/CodeGen/ms-inline-asm.c =================================================================== --- test/CodeGen/ms-inline-asm.c +++ test/CodeGen/ms-inline-asm.c @@ -201,6 +201,8 @@ // CHECK: mov eax, $$4 __asm mov eax, LENGTH _bar // CHECK: mov eax, $$2 + __asm mov eax, [eax + LENGTH foo * 4] +// CHECK: mov eax, [eax + $$1 * $$4] __asm mov eax, TYPE foo // CHECK: mov eax, $$4 @@ -210,16 +212,21 @@ // CHECK: mov eax, $$4 __asm mov eax, TYPE _bar // CHECK: mov eax, $$1 + __asm mov eax, [eax + TYPE foo * 4] +// CHECK: mov eax, [eax + $$4 * $$4] __asm mov eax, SIZE foo // CHECK: mov eax, $$4 __asm mov eax, SIZE bar // CHECK: mov eax, $$1 __asm mov eax, SIZE _foo // CHECK: mov eax, $$16 + __asm mov eax, [eax + SIZE _foo * 4] +// CHECK: mov eax, [eax + $$16 * $$4] __asm mov eax, SIZE _bar // CHECK: mov eax, $$2 // CHECK: "~{eax},~{dirflag},~{fpsr},~{flags}"() + } void t21() {
Index: test/CodeGen/ms-inline-asm.c =================================================================== --- test/CodeGen/ms-inline-asm.c +++ test/CodeGen/ms-inline-asm.c @@ -201,6 +201,8 @@ // CHECK: mov eax, $$4 __asm mov eax, LENGTH _bar // CHECK: mov eax, $$2 + __asm mov eax, [eax + LENGTH foo * 4] +// CHECK: mov eax, [eax + $$1 * $$4] __asm mov eax, TYPE foo // CHECK: mov eax, $$4 @@ -210,16 +212,21 @@ // CHECK: mov eax, $$4 __asm mov eax, TYPE _bar // CHECK: mov eax, $$1 + __asm mov eax, [eax + TYPE foo * 4] +// CHECK: mov eax, [eax + $$4 * $$4] __asm mov eax, SIZE foo // CHECK: mov eax, $$4 __asm mov eax, SIZE bar // CHECK: mov eax, $$1 __asm mov eax, SIZE _foo // CHECK: mov eax, $$16 + __asm mov eax, [eax + SIZE _foo * 4] +// CHECK: mov eax, [eax + $$16 * $$4] __asm mov eax, SIZE _bar // CHECK: mov eax, $$2 // CHECK: "~{eax},~{dirflag},~{fpsr},~{flags}"() + } void t21() {
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits