llvm.org GIT mirror llvm / release_70 test / CodeGen / X86 / rtm.ll
release_70

Tree @release_70 (Download .tar.gz)

rtm.ll @release_70

be5b44e
7e11c73
 
be02a90
 
 
ab5f926
 
be02a90
 
be5b44e
ca0df55
be5b44e
ca0df55
be5b44e
7e11c73
 
be5b44e
 
 
ca0df55
be5b44e
ca0df55
be5b44e
7e11c73
 
be5b44e
be02a90
 
 
 
 
 
be5b44e
ca0df55
be5b44e
 
 
 
ca0df55
be5b44e
 
be02a90
 
 
 
 
 
be5b44e
ca0df55
be5b44e
 
 
 
ca0df55
be5b44e
 
be02a90
 
ab5f926
be02a90
ab5f926
 
be5b44e
ca0df55
be5b44e
 
 
 
 
ca0df55
be5b44e
 
 
 
 
 
b6bee65
be5b44e
ab5f926
 
 
 
 
 
 
be5b44e
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc -verify-machineinstrs < %s -mtriple=i686-unknown-unknown -mattr=+rtm | FileCheck %s --check-prefix=X86
; RUN: llc -verify-machineinstrs < %s -mtriple=x86_64-unknown-unknown -mattr=+rtm | FileCheck %s --check-prefix=X64

declare i32 @llvm.x86.xbegin() nounwind
declare void @llvm.x86.xend() nounwind
declare void @llvm.x86.xabort(i8) nounwind
declare void @f1()

define i32 @test_xbegin() nounwind uwtable {
; X86-LABEL: test_xbegin:
; X86:       # %bb.0: # %entry
; X86-NEXT:    xbegin .LBB0_2
; X86-NEXT:  # %bb.1: # %entry
; X86-NEXT:    movl $-1, %eax
; X86:       .LBB0_2: # %entry
; X86-NEXT:  # XABORT DEF
; X86-NEXT:    retl
;
; X64-LABEL: test_xbegin:
; X64:       # %bb.0: # %entry
; X64-NEXT:    xbegin .LBB0_2
; X64-NEXT:  # %bb.1: # %entry
; X64-NEXT:    movl $-1, %eax
; X64:       .LBB0_2: # %entry
; X64-NEXT:  # XABORT DEF
; X64-NEXT:    retq
entry:
  %0 = tail call i32 @llvm.x86.xbegin() nounwind
  ret i32 %0
}

define void @test_xend() nounwind uwtable {
; X86-LABEL: test_xend:
; X86:       # %bb.0: # %entry
; X86-NEXT:    xend
; X86-NEXT:    retl
;
; X64-LABEL: test_xend:
; X64:       # %bb.0: # %entry
; X64-NEXT:    xend
; X64-NEXT:    retq
entry:
  tail call void @llvm.x86.xend() nounwind
  ret void
}

define void @test_xabort() nounwind uwtable {
; X86-LABEL: test_xabort:
; X86:       # %bb.0: # %entry
; X86-NEXT:    xabort $2
; X86-NEXT:    retl
;
; X64-LABEL: test_xabort:
; X64:       # %bb.0: # %entry
; X64-NEXT:    xabort $2
; X64-NEXT:    retq
entry:
  tail call void @llvm.x86.xabort(i8 2)
  ret void
}

define void @f2(i32 %x) nounwind uwtable {
; X86-LABEL: f2:
; X86:       # %bb.0: # %entry
; X86-NEXT:    xabort $1
; X86-NEXT:    calll f1
; X86-NEXT:    retl
;
; X64-LABEL: f2:
; X64:       # %bb.0: # %entry
; X64-NEXT:    pushq %rax
; X64-NEXT:    .cfi_def_cfa_offset 16
; X64-NEXT:    movl %edi, {{[0-9]+}}(%rsp)
; X64-NEXT:    xabort $1
; X64-NEXT:    callq f1
; X64-NEXT:    popq %rax
; X64-NEXT:    .cfi_def_cfa_offset 8
; X64-NEXT:    retq
entry:
  %x.addr = alloca i32, align 4
  store i32 %x, i32* %x.addr, align 4
  call void @llvm.x86.xabort(i8 1)
  call void @f1()
  ret void
}