1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mattr=+rtm -mtriple=x86_64-unknown-unknown | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.xbegin() nounwind 4*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.xend() nounwind 5*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.xabort(i8) nounwind 6*9880d681SAndroid Build Coastguard Workerdeclare void @f1() 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Workerdefine i32 @test_xbegin() nounwind uwtable { 9*9880d681SAndroid Build Coastguard Workerentry: 10*9880d681SAndroid Build Coastguard Worker %0 = tail call i32 @llvm.x86.xbegin() nounwind 11*9880d681SAndroid Build Coastguard Worker ret i32 %0 12*9880d681SAndroid Build Coastguard Worker; CHECK: test_xbegin 13*9880d681SAndroid Build Coastguard Worker; CHECK: xbegin [[LABEL:.*BB.*]] 14*9880d681SAndroid Build Coastguard Worker; CHECK: [[LABEL]]: 15*9880d681SAndroid Build Coastguard Worker} 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Workerdefine void @test_xend() nounwind uwtable { 18*9880d681SAndroid Build Coastguard Workerentry: 19*9880d681SAndroid Build Coastguard Worker tail call void @llvm.x86.xend() nounwind 20*9880d681SAndroid Build Coastguard Worker ret void 21*9880d681SAndroid Build Coastguard Worker; CHECK: test_xend 22*9880d681SAndroid Build Coastguard Worker; CHECK: xend 23*9880d681SAndroid Build Coastguard Worker} 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Workerdefine void @test_xabort() nounwind uwtable { 26*9880d681SAndroid Build Coastguard Workerentry: 27*9880d681SAndroid Build Coastguard Worker tail call void @llvm.x86.xabort(i8 2) 28*9880d681SAndroid Build Coastguard Worker ret void 29*9880d681SAndroid Build Coastguard Worker; CHECK: test_xabort 30*9880d681SAndroid Build Coastguard Worker; CHECK: xabort $2 31*9880d681SAndroid Build Coastguard Worker} 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Workerdefine void @f2(i32 %x) nounwind uwtable { 34*9880d681SAndroid Build Coastguard Workerentry: 35*9880d681SAndroid Build Coastguard Worker %x.addr = alloca i32, align 4 36*9880d681SAndroid Build Coastguard Worker store i32 %x, i32* %x.addr, align 4 37*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.xabort(i8 1) 38*9880d681SAndroid Build Coastguard Worker call void @f1() 39*9880d681SAndroid Build Coastguard Worker ret void 40*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f2 41*9880d681SAndroid Build Coastguard Worker; CHECK: xabort $1 42*9880d681SAndroid Build Coastguard Worker; CHECK: callq f1 43*9880d681SAndroid Build Coastguard Worker} 44*9880d681SAndroid Build Coastguard Worker