mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-06 06:33:24 +00:00
Use a more conventional doubly linked list where the Prev pointers form a cycle. This means it is no longer necessary to adjust the Prev pointers when reallocating the VRegInfo array. The test changes are required because the register allocation hint is using the use-list order to break ties. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161633 91177308-0d34-0410-b5e6-96231b3b80d8
36 lines
930 B
LLVM
36 lines
930 B
LLVM
; RUN: llc < %s -mtriple=x86_64-linux -mattr=+sse3 | FileCheck %s
|
|
; RUN: llc < %s -mtriple=x86_64-win32 -mattr=+sse3 | FileCheck %s -check-prefix=WIN64
|
|
; PR8573
|
|
|
|
; CHECK: foo:
|
|
; CHECK: movl %esi, %ecx
|
|
; CHECK-NEXT: leaq (%rdi), %rax
|
|
; CHECK-NEXT: monitor
|
|
; WIN64: foo:
|
|
; WIN64: leaq (%rcx), %rax
|
|
; WIN64-NEXT: movl %edx, %ecx
|
|
; WIN64-NEXT: movl %r8d, %edx
|
|
; WIN64-NEXT: monitor
|
|
define void @foo(i8* %P, i32 %E, i32 %H) nounwind {
|
|
entry:
|
|
tail call void @llvm.x86.sse3.monitor(i8* %P, i32 %E, i32 %H)
|
|
ret void
|
|
}
|
|
|
|
declare void @llvm.x86.sse3.monitor(i8*, i32, i32) nounwind
|
|
|
|
; CHECK: bar:
|
|
; CHECK: movl %edi, %ecx
|
|
; CHECK-NEXT: movl %esi, %eax
|
|
; CHECK-NEXT: mwait
|
|
; WIN64: bar:
|
|
; WIN64: movl %edx, %eax
|
|
; WIN64-NEXT: mwait
|
|
define void @bar(i32 %E, i32 %H) nounwind {
|
|
entry:
|
|
tail call void @llvm.x86.sse3.mwait(i32 %E, i32 %H)
|
|
ret void
|
|
}
|
|
|
|
declare void @llvm.x86.sse3.mwait(i32, i32) nounwind
|