diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/CodeGen/X86/2008-08-31-EH_RETURN64.ll | 2 | ||||
-rw-r--r-- | test/CodeGen/X86/fast-isel-x86.ll | 6 | ||||
-rw-r--r-- | test/CodeGen/X86/sibcall.ll | 4 | ||||
-rw-r--r-- | test/CodeGen/X86/stdcall-notailcall.ll | 4 | ||||
-rw-r--r-- | test/CodeGen/X86/stdcall.ll | 4 | ||||
-rw-r--r-- | test/CodeGen/X86/win32_sret.ll | 28 | ||||
-rw-r--r-- | test/MC/X86/x86-16.s | 54 |
7 files changed, 78 insertions, 24 deletions
diff --git a/test/CodeGen/X86/2008-08-31-EH_RETURN64.ll b/test/CodeGen/X86/2008-08-31-EH_RETURN64.ll index 496779c468..51064f1d21 100644 --- a/test/CodeGen/X86/2008-08-31-EH_RETURN64.ll +++ b/test/CodeGen/X86/2008-08-31-EH_RETURN64.ll @@ -9,7 +9,7 @@ target triple = "x86_64-unknown-linux-gnu" ; CHECK: movq %rsp, %rbp ; CHECK: popq %rbp ; CHECK: movq %rcx, %rsp -; CHECK: ret # eh_return, addr: %rcx +; CHECK: retq # eh_return, addr: %rcx define i8* @test(i64 %a, i8* %b) { entry: call void @llvm.eh.unwind.init() diff --git a/test/CodeGen/X86/fast-isel-x86.ll b/test/CodeGen/X86/fast-isel-x86.ll index ba86e888cd..a212a7c687 100644 --- a/test/CodeGen/X86/fast-isel-x86.ll +++ b/test/CodeGen/X86/fast-isel-x86.ll @@ -3,7 +3,7 @@ ; This should use flds to set the return value. ; CHECK-LABEL: test0: ; CHECK: flds -; CHECK: ret +; CHECK: retl @G = external global float define float @test0() nounwind { %t = load float* @G @@ -12,7 +12,7 @@ define float @test0() nounwind { ; This should pop 4 bytes on return. ; CHECK-LABEL: test1: -; CHECK: ret $4 +; CHECK: retl $4 define void @test1({i32, i32, i32, i32}* sret %p) nounwind { store {i32, i32, i32, i32} zeroinitializer, {i32, i32, i32, i32}* %p ret void @@ -25,7 +25,7 @@ define void @test1({i32, i32, i32, i32}* sret %p) nounwind { ; CHECK-NEXT: L2$pb: ; CHECK-NEXT: pop ; CHECK: HHH -; CHECK: ret +; CHECK: retl @HHH = external global i32 define i32 @test2() nounwind { %t = load i32* @HHH diff --git a/test/CodeGen/X86/sibcall.ll b/test/CodeGen/X86/sibcall.ll index 589e9ec105..28fc626afd 100644 --- a/test/CodeGen/X86/sibcall.ll +++ b/test/CodeGen/X86/sibcall.ll @@ -247,11 +247,11 @@ entry: define void @t15(%struct.foo* noalias sret %agg.result) nounwind { ; 32-LABEL: t15: ; 32: calll {{_?}}f -; 32: ret $4 +; 32: retl $4 ; 64-LABEL: t15: ; 64: callq {{_?}}f -; 64: ret +; 64: retq tail call fastcc void @f(%struct.foo* noalias sret %agg.result) nounwind ret void } diff --git a/test/CodeGen/X86/stdcall-notailcall.ll b/test/CodeGen/X86/stdcall-notailcall.ll index c847ec7b6c..448db4cda1 100644 --- a/test/CodeGen/X86/stdcall-notailcall.ll +++ b/test/CodeGen/X86/stdcall-notailcall.ll @@ -4,7 +4,7 @@ define x86_stdcallcc void @bar(%struct.I* nocapture %this) ssp align 2 { ; CHECK-LABEL: bar: ; CHECK-NOT: jmp -; CHECK: ret $4 +; CHECK: retl $4 entry: tail call void @foo() ret void @@ -13,7 +13,7 @@ entry: define x86_thiscallcc void @test2(%struct.I* %this, i32 %a) { ; CHECK-LABEL: test2: ; CHECK: calll _foo -; CHECK: ret $4 +; CHECK: retl $4 tail call void @foo() ret void } diff --git a/test/CodeGen/X86/stdcall.ll b/test/CodeGen/X86/stdcall.ll index 73826ed0b2..3cefe14fe0 100644 --- a/test/CodeGen/X86/stdcall.ll +++ b/test/CodeGen/X86/stdcall.ll @@ -6,14 +6,14 @@ define internal x86_stdcallcc void @MyFunc() nounwind { entry: ; CHECK: MyFunc@0: -; CHECK: ret +; CHECK: retl ret void } ; PR14410 define x86_stdcallcc i32 @"\01DoNotMangle"(i32 %a) { ; CHECK: DoNotMangle: -; CHECK: ret $4 +; CHECK: retl $4 entry: ret i32 %a } diff --git a/test/CodeGen/X86/win32_sret.ll b/test/CodeGen/X86/win32_sret.ll index 78f1821b1d..d8ecd44d11 100644 --- a/test/CodeGen/X86/win32_sret.ll +++ b/test/CodeGen/X86/win32_sret.ll @@ -16,13 +16,13 @@ entry: ; WIN32-LABEL: _sret1: ; WIN32: movb $42, (%eax) ; WIN32-NOT: popl %eax -; WIN32: {{ret$}} +; WIN32: {{retl$}} ; MINGW_X86-LABEL: _sret1: -; MINGW_X86: {{ret$}} +; MINGW_X86: {{retl$}} ; LINUX-LABEL: sret1: -; LINUX: ret $4 +; LINUX: retl $4 store i8 42, i8* %x, align 4 ret void @@ -33,13 +33,13 @@ entry: ; WIN32-LABEL: _sret2: ; WIN32: movb {{.*}}, (%eax) ; WIN32-NOT: popl %eax -; WIN32: {{ret$}} +; WIN32: {{retl$}} ; MINGW_X86-LABEL: _sret2: -; MINGW_X86: {{ret$}} +; MINGW_X86: {{retl$}} ; LINUX-LABEL: sret2: -; LINUX: ret $4 +; LINUX: retl $4 store i8 %y, i8* %x ret void @@ -51,13 +51,13 @@ entry: ; WIN32: movb $42, (%eax) ; WIN32-NOT: movb $13, (%eax) ; WIN32-NOT: popl %eax -; WIN32: {{ret$}} +; WIN32: {{retl$}} ; MINGW_X86-LABEL: _sret3: -; MINGW_X86: {{ret$}} +; MINGW_X86: {{retl$}} ; LINUX-LABEL: sret3: -; LINUX: ret $4 +; LINUX: retl $4 store i8 42, i8* %x store i8 13, i8* %y @@ -72,13 +72,13 @@ entry: ; WIN32-LABEL: _sret4: ; WIN32: movl $42, (%eax) ; WIN32-NOT: popl %eax -; WIN32: {{ret$}} +; WIN32: {{retl$}} ; MINGW_X86-LABEL: _sret4: -; MINGW_X86: {{ret$}} +; MINGW_X86: {{retl$}} ; LINUX-LABEL: sret4: -; LINUX: ret $4 +; LINUX: retl $4 %x = getelementptr inbounds %struct.S4* %agg.result, i32 0, i32 0 store i32 42, i32* %x, align 4 @@ -105,7 +105,7 @@ entry: ; should match both 4(%esp) and 8(%esp). ; WIN32: {{[48]}}(%esp), %eax ; WIN32: movl $42, (%eax) -; WIN32: ret $4 +; WIN32: retl $4 } define void @call_foo5() { @@ -126,7 +126,7 @@ entry: ; The this pointer goes to ECX. ; WIN32-NEXT: leal {{[0-9]+}}(%esp), %ecx ; WIN32-NEXT: calll "?foo@C5@@QAE?AUS5@@XZ" -; WIN32: ret +; WIN32: retl ret void } diff --git a/test/MC/X86/x86-16.s b/test/MC/X86/x86-16.s index bb1aa4a207..9fdd8645e7 100644 --- a/test/MC/X86/x86-16.s +++ b/test/MC/X86/x86-16.s @@ -71,6 +71,10 @@ int $255 // CHECK: popfl # encoding: [0x66,0x9d] popfl +retl +// CHECK: ret +// CHECK: encoding: [0x66,0xc3] + // CHECK: cmoval %eax, %edx // CHECK: encoding: [0x66,0x0f,0x47,0xd0] cmoval %eax,%edx @@ -352,6 +356,16 @@ cmovnae %bx,%bx lcalll $0x2, $0x1234 +iret +// CHECK: iretw +// CHECK: encoding: [0xcf] +iretw +// CHECK: iretw +// CHECK: encoding: [0xcf] +iretl +// CHECK: iretl +// CHECK: encoding: [0x66,0xcf] + sysret // CHECK: sysretl // CHECK: encoding: [0x0f,0x07] @@ -567,6 +581,30 @@ pshufw $90, %mm4, %mm0 // CHECK: encoding: [0x2f] das +// CHECK: retw $31438 +// CHECK: encoding: [0xc2,0xce,0x7a] + retw $0x7ace + +// CHECK: lretw $31438 +// CHECK: encoding: [0xca,0xce,0x7a] + lretw $0x7ace + +// CHECK: retw $31438 +// CHECK: encoding: [0xc2,0xce,0x7a] + ret $0x7ace + +// CHECK: lretw $31438 +// CHECK: encoding: [0xca,0xce,0x7a] + lret $0x7ace + +// CHECK: retl $31438 +// CHECK: encoding: [0x66,0xc2,0xce,0x7a] + retl $0x7ace + +// CHECK: lretl $31438 +// CHECK: encoding: [0x66,0xca,0xce,0x7a] + lretl $0x7ace + // CHECK: bound 2(%eax), %bx // CHECK: encoding: [0x67,0x62,0x58,0x02] bound 2(%eax),%bx @@ -825,3 +863,19 @@ xchgl %ecx, %eax // CHECK: xchgl %ecx, %eax // CHECK: encoding: [0x66,0x91] xchgl %eax, %ecx + +// CHECK: retw +// CHECK: encoding: [0xc3] +retw + +// CHECK: retl +// CHECK: encoding: [0x66,0xc3] +retl + +// CHECK: lretw +// CHECK: encoding: [0xcb] +lretw + +// CHECK: lretl +// CHECK: encoding: [0x66,0xcb] +lretl |