summaryrefslogtreecommitdiff
path: root/test/CodeGen/X86/ms-inline-asm.ll
diff options
context:
space:
mode:
Diffstat (limited to 'test/CodeGen/X86/ms-inline-asm.ll')
-rw-r--r--test/CodeGen/X86/ms-inline-asm.ll107
1 files changed, 107 insertions, 0 deletions
diff --git a/test/CodeGen/X86/ms-inline-asm.ll b/test/CodeGen/X86/ms-inline-asm.ll
index 24d28adda8..403da3f34e 100644
--- a/test/CodeGen/X86/ms-inline-asm.ll
+++ b/test/CodeGen/X86/ms-inline-asm.ll
@@ -61,3 +61,110 @@ entry:
; CHECK: .att_syntax
; CHECK: {{## InlineAsm End|#NO_APP}}
}
+
+define void @t21() nounwind {
+; CHECK: t21
+entry:
+ br label %foo
+
+foo: ; preds = %entry
+ call void asm sideeffect inteldialect "mov eax, [4*eax + 4]", "~{eax},~{dirflag},~{fpsr},~{flags}"() nounwind
+; CHECK: {{## InlineAsm Start|#APP}}
+; CHECK: .intel_syntax
+; CHECK: mov eax, [4*eax + 4]
+; CHECK: .att_syntax
+; CHECK: {{## InlineAsm End|#NO_APP}}
+
+ call void asm sideeffect inteldialect "mov eax, [4*eax][4]", "~{eax},~{dirflag},~{fpsr},~{flags}"() nounwind
+; CHECK: {{## InlineAsm Start|#APP}}
+; CHECK: .intel_syntax
+; CHECK: mov eax, [4*eax][4]
+; CHECK: .att_syntax
+; CHECK: {{## InlineAsm End|#NO_APP}}
+
+ call void asm sideeffect inteldialect "mov eax, [esi + eax]", "~{eax},~{dirflag},~{fpsr},~{flags}"() nounwind
+; CHECK: {{## InlineAsm Start|#APP}}
+; CHECK: .intel_syntax
+; CHECK: mov eax, [esi + eax]
+; CHECK: .att_syntax
+; CHECK: {{## InlineAsm End|#NO_APP}}
+
+ call void asm sideeffect inteldialect "mov eax, [esi][eax]", "~{eax},~{dirflag},~{fpsr},~{flags}"() nounwind
+; CHECK: {{## InlineAsm Start|#APP}}
+; CHECK: .intel_syntax
+; CHECK: mov eax, [esi][eax]
+; CHECK: .att_syntax
+; CHECK: {{## InlineAsm End|#NO_APP}}
+
+ call void asm sideeffect inteldialect "mov eax, [esi + 4*eax]", "~{eax},~{dirflag},~{fpsr},~{flags}"() nounwind
+; CHECK: {{## InlineAsm Start|#APP}}
+; CHECK: .intel_syntax
+; CHECK: mov eax, [esi + 4*eax]
+; CHECK: .att_syntax
+; CHECK: {{## InlineAsm End|#NO_APP}}
+
+ call void asm sideeffect inteldialect "mov eax, [esi][4*eax]", "~{eax},~{dirflag},~{fpsr},~{flags}"() nounwind
+; CHECK: {{## InlineAsm Start|#APP}}
+; CHECK: .intel_syntax
+; CHECK: mov eax, [esi][4*eax]
+; CHECK: .att_syntax
+; CHECK: {{## InlineAsm End|#NO_APP}}
+
+ call void asm sideeffect inteldialect "mov eax, [esi + eax + 4]", "~{eax},~{dirflag},~{fpsr},~{flags}"() nounwind
+; CHECK: {{## InlineAsm Start|#APP}}
+; CHECK: .intel_syntax
+; CHECK: mov eax, [esi + eax + 4]
+; CHECK: .att_syntax
+; CHECK: {{## InlineAsm End|#NO_APP}}
+
+ call void asm sideeffect inteldialect "mov eax, [esi][eax + 4]", "~{eax},~{dirflag},~{fpsr},~{flags}"() nounwind
+; CHECK: {{## InlineAsm Start|#APP}}
+; CHECK: .intel_syntax
+; CHECK: mov eax, [esi][eax + 4]
+; CHECK: .att_syntax
+; CHECK: {{## InlineAsm End|#NO_APP}}
+
+ call void asm sideeffect inteldialect "mov eax, [esi + eax][4]", "~{eax},~{dirflag},~{fpsr},~{flags}"() nounwind
+; CHECK: {{## InlineAsm Start|#APP}}
+; CHECK: .intel_syntax
+; CHECK: mov eax, [esi + eax][4]
+; CHECK: .att_syntax
+; CHECK: {{## InlineAsm End|#NO_APP}}
+
+ call void asm sideeffect inteldialect "mov eax, [esi][eax][4]", "~{eax},~{dirflag},~{fpsr},~{flags}"() nounwind
+; CHECK: {{## InlineAsm Start|#APP}}
+; CHECK: .intel_syntax
+; CHECK: mov eax, [esi][eax][4]
+; CHECK: .att_syntax
+; CHECK: {{## InlineAsm End|#NO_APP}}
+
+ call void asm sideeffect inteldialect "mov eax, [esi + 2*eax + 4]", "~{eax},~{dirflag},~{fpsr},~{flags}"() nounwind
+; CHECK: {{## InlineAsm Start|#APP}}
+; CHECK: .intel_syntax
+; CHECK: mov eax, [esi + 2*eax + 4]
+; CHECK: .att_syntax
+; CHECK: {{## InlineAsm End|#NO_APP}}
+
+ call void asm sideeffect inteldialect "mov eax, [esi][2*eax + 4]", "~{eax},~{dirflag},~{fpsr},~{flags}"() nounwind
+; CHECK: {{## InlineAsm Start|#APP}}
+; CHECK: .intel_syntax
+; CHECK: mov eax, [esi][2*eax + 4]
+; CHECK: .att_syntax
+; CHECK: {{## InlineAsm End|#NO_APP}}
+
+ call void asm sideeffect inteldialect "mov eax, [esi + 2*eax][4]", "~{eax},~{dirflag},~{fpsr},~{flags}"() nounwind
+; CHECK: {{## InlineAsm Start|#APP}}
+; CHECK: .intel_syntax
+; CHECK: mov eax, [esi + 2*eax][4]
+; CHECK: .att_syntax
+; CHECK: {{## InlineAsm End|#NO_APP}}
+
+ call void asm sideeffect inteldialect "mov eax, [esi][2*eax][4]", "~{eax},~{dirflag},~{fpsr},~{flags}"() nounwind
+; CHECK: {{## InlineAsm Start|#APP}}
+; CHECK: .intel_syntax
+; CHECK: mov eax, [esi][2*eax][4]
+; CHECK: .att_syntax
+; CHECK: {{## InlineAsm End|#NO_APP}}
+
+ ret void
+}