llvm-project/llvm/lib
Chris Lattner 2e56e89452 Handle physreg input/outputs. We now compile this:
int %test_cpuid(int %op) {
        %B = alloca int
        %C = alloca int
        %D = alloca int
        %A = call int asm "cpuid", "=eax,==ebx,==ecx,==edx,eax"(int* %B, int* %C, int* %D, int %op)
        %Bv = load int* %B
        %Cv = load int* %C
        %Dv = load int* %D
        %x = add int %A, %Bv
        %y = add int %x, %Cv
        %z = add int %y, %Dv
        ret int %z
}

to this:

_test_cpuid:
        sub %ESP, 16
        mov DWORD PTR [%ESP], %EBX
        mov %EAX, DWORD PTR [%ESP + 20]
        cpuid
        mov DWORD PTR [%ESP + 8], %ECX
        mov DWORD PTR [%ESP + 12], %EBX
        mov DWORD PTR [%ESP + 4], %EDX
        mov %ECX, DWORD PTR [%ESP + 12]
        add %EAX, %ECX
        mov %ECX, DWORD PTR [%ESP + 8]
        add %EAX, %ECX
        mov %ECX, DWORD PTR [%ESP + 4]
        add %EAX, %ECX
        mov %EBX, DWORD PTR [%ESP]
        add %ESP, 16
        ret

... note the proper register allocation.  :)

it is unclear to me why the loads aren't folded into the adds.

llvm-svn: 25827
2006-01-31 02:03:41 +00:00
..
Analysis Add explicit iostream #includes 2006-01-22 23:19:18 +00:00
AsmParser regenerate 2006-01-25 22:27:16 +00:00
Bytecode Fix auto-upgrade of intrinsics to work properly with both assembly and 2006-01-27 11:49:27 +00:00
CodeGen Handle physreg input/outputs. We now compile this: 2006-01-31 02:03:41 +00:00
Debugger dum de dum 2005-12-26 10:24:15 +00:00
ExecutionEngine Add #include of <iostream> 2006-01-22 23:41:42 +00:00
Linker Rename method 2006-01-24 04:14:29 +00:00
Support dynamically allocate plugin space as needed 2006-01-26 19:38:58 +00:00
System Add AddSymbol() method to DynamicLibrary to work around Windows limitation 2006-01-30 04:33:51 +00:00
Target more mumbling 2006-01-31 00:45:37 +00:00
Transforms Improve compatibility with VC2005, patch by Morten Ofstad! 2006-01-26 20:41:32 +00:00
VMCore Fix auto-upgrade of intrinsics to work properly with both assembly and 2006-01-27 11:49:27 +00:00
Makefile Add the Linker library 2004-11-14 21:54:41 +00:00