|  | ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py | 
|  | ; RUN: llc < %s -mtriple=x86_64-apple-darwin -mattr=+shstk | FileCheck %s | 
|  |  | 
|  | define void @test_incsspd(i32 %a) local_unnamed_addr { | 
|  | ; CHECK-LABEL: test_incsspd: | 
|  | ; CHECK:       ## %bb.0: ## %entry | 
|  | ; CHECK-NEXT:    incsspd %edi | 
|  | ; CHECK-NEXT:    retq | 
|  | entry: | 
|  | tail call void @llvm.x86.incsspd(i32 %a) | 
|  | ret void | 
|  | } | 
|  |  | 
|  | declare void @llvm.x86.incsspd(i32) | 
|  |  | 
|  | define void @test_incsspq(i32 %a) local_unnamed_addr { | 
|  | ; CHECK-LABEL: test_incsspq: | 
|  | ; CHECK:       ## %bb.0: ## %entry | 
|  | ; CHECK-NEXT:    movslq %edi, %rax | 
|  | ; CHECK-NEXT:    incsspq %rax | 
|  | ; CHECK-NEXT:    retq | 
|  | entry: | 
|  | %conv.i = sext i32 %a to i64 | 
|  | tail call void @llvm.x86.incsspq(i64 %conv.i) | 
|  | ret void | 
|  | } | 
|  |  | 
|  | declare void @llvm.x86.incsspq(i64) | 
|  |  | 
|  | define i32 @test_rdsspd(i32 %a) { | 
|  | ; CHECK-LABEL: test_rdsspd: | 
|  | ; CHECK:       ## %bb.0: ## %entry | 
|  | ; CHECK-NEXT:    movl %edi, %eax | 
|  | ; CHECK-NEXT:    rdsspd %eax | 
|  | ; CHECK-NEXT:    retq | 
|  | entry: | 
|  | %0 = call i32 @llvm.x86.rdsspd(i32 %a) | 
|  | ret i32 %0 | 
|  | } | 
|  |  | 
|  | declare i32 @llvm.x86.rdsspd(i32) | 
|  |  | 
|  | define i64 @test_rdsspq(i64 %a) { | 
|  | ; CHECK-LABEL: test_rdsspq: | 
|  | ; CHECK:       ## %bb.0: ## %entry | 
|  | ; CHECK-NEXT:    movq %rdi, %rax | 
|  | ; CHECK-NEXT:    rdsspq %rax | 
|  | ; CHECK-NEXT:    retq | 
|  | entry: | 
|  | %0 = call i64 @llvm.x86.rdsspq(i64 %a) | 
|  | ret i64 %0 | 
|  | } | 
|  |  | 
|  | declare i64 @llvm.x86.rdsspq(i64) | 
|  |  | 
|  | define void @test_saveprevssp() { | 
|  | ; CHECK-LABEL: test_saveprevssp: | 
|  | ; CHECK:       ## %bb.0: ## %entry | 
|  | ; CHECK-NEXT:    saveprevssp | 
|  | ; CHECK-NEXT:    retq | 
|  | entry: | 
|  | tail call void @llvm.x86.saveprevssp() | 
|  | ret void | 
|  | } | 
|  |  | 
|  | declare void @llvm.x86.saveprevssp() | 
|  |  | 
|  | define void @test_rstorssp(i8* %__p) { | 
|  | ; CHECK-LABEL: test_rstorssp: | 
|  | ; CHECK:       ## %bb.0: ## %entry | 
|  | ; CHECK-NEXT:    rstorssp (%rdi) | 
|  | ; CHECK-NEXT:    retq | 
|  | entry: | 
|  | tail call void @llvm.x86.rstorssp(i8* %__p) | 
|  | ret void | 
|  | } | 
|  |  | 
|  | declare void @llvm.x86.rstorssp(i8*) | 
|  |  | 
|  | define void @test_wrssd(i32 %a, i8* %__p) { | 
|  | ; CHECK-LABEL: test_wrssd: | 
|  | ; CHECK:       ## %bb.0: ## %entry | 
|  | ; CHECK-NEXT:    wrssd %edi, (%rsi) | 
|  | ; CHECK-NEXT:    retq | 
|  | entry: | 
|  | tail call void @llvm.x86.wrssd(i32 %a, i8* %__p) | 
|  | ret void | 
|  | } | 
|  |  | 
|  | declare void @llvm.x86.wrssd(i32, i8*) | 
|  |  | 
|  | define void @test_wrssq(i64 %a, i8* %__p) { | 
|  | ; CHECK-LABEL: test_wrssq: | 
|  | ; CHECK:       ## %bb.0: ## %entry | 
|  | ; CHECK-NEXT:    wrssq %rdi, (%rsi) | 
|  | ; CHECK-NEXT:    retq | 
|  | entry: | 
|  | tail call void @llvm.x86.wrssq(i64 %a, i8* %__p) | 
|  | ret void | 
|  | } | 
|  |  | 
|  | declare void @llvm.x86.wrssq(i64, i8*) | 
|  |  | 
|  | define void @test_wrussd(i32 %a, i8* %__p) { | 
|  | ; CHECK-LABEL: test_wrussd: | 
|  | ; CHECK:       ## %bb.0: ## %entry | 
|  | ; CHECK-NEXT:    wrussd %edi, (%rsi) | 
|  | ; CHECK-NEXT:    retq | 
|  | entry: | 
|  | tail call void @llvm.x86.wrussd(i32 %a, i8* %__p) | 
|  | ret void | 
|  | } | 
|  |  | 
|  | declare void @llvm.x86.wrussd(i32, i8*) | 
|  |  | 
|  | define void @test_wrussq(i64 %a, i8* %__p) { | 
|  | ; CHECK-LABEL: test_wrussq: | 
|  | ; CHECK:       ## %bb.0: ## %entry | 
|  | ; CHECK-NEXT:    wrussq %rdi, (%rsi) | 
|  | ; CHECK-NEXT:    retq | 
|  | entry: | 
|  | tail call void @llvm.x86.wrussq(i64 %a, i8* %__p) | 
|  | ret void | 
|  | } | 
|  |  | 
|  | declare void @llvm.x86.wrussq(i64, i8*) | 
|  |  | 
|  | define void @test_setssbsy() { | 
|  | ; CHECK-LABEL: test_setssbsy: | 
|  | ; CHECK:       ## %bb.0: ## %entry | 
|  | ; CHECK-NEXT:    setssbsy | 
|  | ; CHECK-NEXT:    retq | 
|  | entry: | 
|  | tail call void @llvm.x86.setssbsy() | 
|  | ret void | 
|  | } | 
|  |  | 
|  | declare void @llvm.x86.setssbsy() | 
|  |  | 
|  | define void @test_clrssbsy(i8* %__p) { | 
|  | ; CHECK-LABEL: test_clrssbsy: | 
|  | ; CHECK:       ## %bb.0: ## %entry | 
|  | ; CHECK-NEXT:    clrssbsy (%rdi) | 
|  | ; CHECK-NEXT:    retq | 
|  | entry: | 
|  | tail call void @llvm.x86.clrssbsy(i8* %__p) | 
|  | ret void | 
|  | } | 
|  |  | 
|  | declare void @llvm.x86.clrssbsy(i8* %__p) |