AsmString analysing

Hi all.

I need to know why does clang change the '$' to '$$' and '%' to '$' in
Inline assembly string before creating the asm call instruction?

for example:
int result = 0;
asm (
            "mov $10, %0"

the generated assembler code represented in LLVM IR contains:
... asm "mov $$10, $0", "=r"() ...

but when I try to compile it by GCC I get something like this:
mov $10, %eax

May be Clang does some checking depend on that substitutions?

LLVM uses a different syntax for its inline ASM construct than GCC does.