1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2 ; RUN: llc < %s -mtriple=x86_64-apple-darwin -mattr=+shstk | FileCheck %s 3 4 define void @test_incsspd(i32 %a) local_unnamed_addr { 5 ; CHECK-LABEL: test_incsspd: 6 ; CHECK: ## %bb.0: ## %entry 7 ; CHECK-NEXT: incsspd %edi 8 ; CHECK-NEXT: retq 9 entry: 10 tail call void @llvm.x86.incsspd(i32 %a) 11 ret void 12 } 13 14 declare void @llvm.x86.incsspd(i32) 15 16 define void @test_incsspq(i32 %a) local_unnamed_addr { 17 ; CHECK-LABEL: test_incsspq: 18 ; CHECK: ## %bb.0: ## %entry 19 ; CHECK-NEXT: movslq %edi, %rax 20 ; CHECK-NEXT: incsspq %rax 21 ; CHECK-NEXT: retq 22 entry: 23 %conv.i = sext i32 %a to i64 24 tail call void @llvm.x86.incsspq(i64 %conv.i) 25 ret void 26 } 27 28 declare void @llvm.x86.incsspq(i64) 29 30 define i32 @test_rdsspd(i32 %a) { 31 ; CHECK-LABEL: test_rdsspd: 32 ; CHECK: ## %bb.0: ## %entry 33 ; CHECK-NEXT: rdsspd %edi 34 ; CHECK-NEXT: movl %edi, %eax 35 ; CHECK-NEXT: retq 36 entry: 37 %0 = call i32 @llvm.x86.rdsspd(i32 %a) 38 ret i32 %0 39 } 40 41 declare i32 @llvm.x86.rdsspd(i32) 42 43 define i64 @test_rdsspq(i64 %a) { 44 ; CHECK-LABEL: test_rdsspq: 45 ; CHECK: ## %bb.0: ## %entry 46 ; CHECK-NEXT: rdsspq %rdi 47 ; CHECK-NEXT: movq %rdi, %rax 48 ; CHECK-NEXT: retq 49 entry: 50 %0 = call i64 @llvm.x86.rdsspq(i64 %a) 51 ret i64 %0 52 } 53 54 declare i64 @llvm.x86.rdsspq(i64) 55 56 define void @test_saveprevssp() { 57 ; CHECK-LABEL: test_saveprevssp: 58 ; CHECK: ## %bb.0: ## %entry 59 ; CHECK-NEXT: saveprevssp 60 ; CHECK-NEXT: retq 61 entry: 62 tail call void @llvm.x86.saveprevssp() 63 ret void 64 } 65 66 declare void @llvm.x86.saveprevssp() 67 68 define void @test_rstorssp(i8* %__p) { 69 ; CHECK-LABEL: test_rstorssp: 70 ; CHECK: ## %bb.0: ## %entry 71 ; CHECK-NEXT: rstorssp (%rdi) 72 ; CHECK-NEXT: retq 73 entry: 74 tail call void @llvm.x86.rstorssp(i8* %__p) 75 ret void 76 } 77 78 declare void @llvm.x86.rstorssp(i8*) 79 80 define void @test_wrssd(i32 %a, i8* %__p) { 81 ; CHECK-LABEL: test_wrssd: 82 ; CHECK: ## %bb.0: ## %entry 83 ; CHECK-NEXT: wrssd %edi, (%rsi) 84 ; CHECK-NEXT: retq 85 entry: 86 tail call void @llvm.x86.wrssd(i32 %a, i8* %__p) 87 ret void 88 } 89 90 declare void @llvm.x86.wrssd(i32, i8*) 91 92 define void @test_wrssq(i64 %a, i8* %__p) { 93 ; CHECK-LABEL: test_wrssq: 94 ; CHECK: ## %bb.0: ## %entry 95 ; CHECK-NEXT: wrssq %rdi, (%rsi) 96 ; CHECK-NEXT: retq 97 entry: 98 tail call void @llvm.x86.wrssq(i64 %a, i8* %__p) 99 ret void 100 } 101 102 declare void @llvm.x86.wrssq(i64, i8*) 103 104 define void @test_wrussd(i32 %a, i8* %__p) { 105 ; CHECK-LABEL: test_wrussd: 106 ; CHECK: ## %bb.0: ## %entry 107 ; CHECK-NEXT: wrussd %edi, (%rsi) 108 ; CHECK-NEXT: retq 109 entry: 110 tail call void @llvm.x86.wrussd(i32 %a, i8* %__p) 111 ret void 112 } 113 114 declare void @llvm.x86.wrussd(i32, i8*) 115 116 define void @test_wrussq(i64 %a, i8* %__p) { 117 ; CHECK-LABEL: test_wrussq: 118 ; CHECK: ## %bb.0: ## %entry 119 ; CHECK-NEXT: wrussq %rdi, (%rsi) 120 ; CHECK-NEXT: retq 121 entry: 122 tail call void @llvm.x86.wrussq(i64 %a, i8* %__p) 123 ret void 124 } 125 126 declare void @llvm.x86.wrussq(i64, i8*) 127 128 define void @test_setssbsy() { 129 ; CHECK-LABEL: test_setssbsy: 130 ; CHECK: ## %bb.0: ## %entry 131 ; CHECK-NEXT: setssbsy 132 ; CHECK-NEXT: retq 133 entry: 134 tail call void @llvm.x86.setssbsy() 135 ret void 136 } 137 138 declare void @llvm.x86.setssbsy() 139 140 define void @test_clrssbsy(i8* %__p) { 141 ; CHECK-LABEL: test_clrssbsy: 142 ; CHECK: ## %bb.0: ## %entry 143 ; CHECK-NEXT: clrssbsy (%rdi) 144 ; CHECK-NEXT: retq 145 entry: 146 tail call void @llvm.x86.clrssbsy(i8* %__p) 147 ret void 148 } 149 150 declare void @llvm.x86.clrssbsy(i8* %__p) 151