@@ -8,23 +8,17 @@ target triple = "aarch64-unknown-linux-gnu"
88@ds2 = external global i8
99@ds3 = external global i8
1010@ds4 = external global i8
11- @ds5 = external global i8
12- @ds6 = external global i8
1311
1412;.
1513; NOPAUTH: @ds1 = external global i8
1614; NOPAUTH: @ds2 = external global i8
1715; NOPAUTH: @ds3 = external global i8
18- ; NOPAUTH: @ds4 = external global i8
19- ; NOPAUTH: @ds5 = external global i8
20- ; NOPAUTH: @ds6 = hidden alias i8, inttoptr (i64 3573751839 to ptr)
16+ ; NOPAUTH: @ds4 = hidden alias i8, inttoptr (i64 3573751839 to ptr)
2117;.
2218; PAUTH: @ds1 = external global i8
2319; PAUTH: @ds2 = external global i8
2420; PAUTH: @ds3 = external global i8
25- ; PAUTH: @ds4 = external global i8
26- ; PAUTH: @ds5 = external global i8
27- ; PAUTH: @ds6 = hidden alias i8, inttoptr (i64 3573751839 to ptr)
21+ ; PAUTH: @ds4 = hidden alias i8, inttoptr (i64 3573751839 to ptr)
2822;.
2923define ptr @load_hw (ptr addrspace (1 ) %ptrptr ) {
3024; NOPAUTH-LABEL: define ptr @load_hw(
@@ -70,54 +64,6 @@ define void @store_hw(ptr addrspace(1) %ptrptr, ptr %ptr) {
7064 ret void
7165}
7266
73- define ptr @load_sw (ptr addrspace (1 ) %ptrptr ) {
74- ; NOPAUTH-LABEL: define ptr @load_sw(
75- ; NOPAUTH-SAME: ptr addrspace(1) [[PTRPTR:%.*]]) {
76- ; NOPAUTH-NEXT: [[PTR:%.*]] = load ptr, ptr addrspace(1) [[PTRPTR]], align 8
77- ; NOPAUTH-NEXT: [[TMP1:%.*]] = ptrtoint ptr [[PTR]] to i64
78- ; NOPAUTH-NEXT: [[TMP2:%.*]] = add i64 [[TMP1]], 1
79- ; NOPAUTH-NEXT: [[TMP3:%.*]] = call i64 @llvm.fshr.i64(i64 [[TMP2]], i64 [[TMP2]], i64 16)
80- ; NOPAUTH-NEXT: [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr
81- ; NOPAUTH-NEXT: ret ptr [[TMP4]]
82- ;
83- ; PAUTH-LABEL: define ptr @load_sw(
84- ; PAUTH-SAME: ptr addrspace(1) [[PTRPTR:%.*]]) #[[ATTR0]] {
85- ; PAUTH-NEXT: [[PTR:%.*]] = load ptr, ptr addrspace(1) [[PTRPTR]], align 8
86- ; PAUTH-NEXT: [[TMP1:%.*]] = ptrtoint ptr [[PTR]] to i64
87- ; PAUTH-NEXT: [[TMP2:%.*]] = add i64 [[TMP1]], 1
88- ; PAUTH-NEXT: [[TMP3:%.*]] = call i64 @llvm.fshr.i64(i64 [[TMP2]], i64 [[TMP2]], i64 16)
89- ; PAUTH-NEXT: [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr
90- ; PAUTH-NEXT: ret ptr [[TMP4]]
91- ;
92- %protptrptr = call ptr addrspace (1 ) @llvm.protected.field.ptr.p1 (ptr addrspace (1 ) %ptrptr , i64 1 , i1 false ) [ "deactivation-symbol" (ptr @ds3 ) ]
93- %ptr = load ptr , ptr addrspace (1 ) %protptrptr
94- ret ptr %ptr
95- }
96-
97- define void @store_sw (ptr addrspace (1 ) %ptrptr , ptr %ptr ) {
98- ; NOPAUTH-LABEL: define void @store_sw(
99- ; NOPAUTH-SAME: ptr addrspace(1) [[PTRPTR:%.*]], ptr [[PTR:%.*]]) {
100- ; NOPAUTH-NEXT: [[TMP1:%.*]] = ptrtoint ptr [[PTR]] to i64
101- ; NOPAUTH-NEXT: [[TMP2:%.*]] = call i64 @llvm.fshl.i64(i64 [[TMP1]], i64 [[TMP1]], i64 16)
102- ; NOPAUTH-NEXT: [[TMP3:%.*]] = sub i64 [[TMP2]], 2
103- ; NOPAUTH-NEXT: [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr
104- ; NOPAUTH-NEXT: store ptr [[TMP4]], ptr addrspace(1) [[PTRPTR]], align 8
105- ; NOPAUTH-NEXT: ret void
106- ;
107- ; PAUTH-LABEL: define void @store_sw(
108- ; PAUTH-SAME: ptr addrspace(1) [[PTRPTR:%.*]], ptr [[PTR:%.*]]) #[[ATTR0]] {
109- ; PAUTH-NEXT: [[TMP1:%.*]] = ptrtoint ptr [[PTR]] to i64
110- ; PAUTH-NEXT: [[TMP2:%.*]] = call i64 @llvm.fshl.i64(i64 [[TMP1]], i64 [[TMP1]], i64 16)
111- ; PAUTH-NEXT: [[TMP3:%.*]] = sub i64 [[TMP2]], 2
112- ; PAUTH-NEXT: [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr
113- ; PAUTH-NEXT: store ptr [[TMP4]], ptr addrspace(1) [[PTRPTR]], align 8
114- ; PAUTH-NEXT: ret void
115- ;
116- %protptrptr = call ptr addrspace (1 ) @llvm.protected.field.ptr.p1 (ptr addrspace (1 ) %ptrptr , i64 2 , i1 false ) [ "deactivation-symbol" (ptr @ds4 ) ]
117- store ptr %ptr , ptr addrspace (1 ) %protptrptr
118- ret void
119- }
120-
12167define i1 @compare (ptr addrspace (1 ) %ptrptr ) {
12268; NOPAUTH-LABEL: define i1 @compare(
12369; NOPAUTH-SAME: ptr addrspace(1) [[PTRPTR:%.*]]) {
@@ -133,7 +79,7 @@ define i1 @compare(ptr addrspace(1) %ptrptr) {
13379; PAUTH-NEXT: [[CMP:%.*]] = or i1 [[CMP1]], [[CMP2]]
13480; PAUTH-NEXT: ret i1 [[CMP]]
13581;
136- %protptrptr = call ptr addrspace (1 ) @llvm.protected.field.ptr.p1 (ptr addrspace (1 ) %ptrptr , i64 3 , i1 true ) [ "deactivation-symbol" (ptr @ds5 ) ]
82+ %protptrptr = call ptr addrspace (1 ) @llvm.protected.field.ptr.p1 (ptr addrspace (1 ) %ptrptr , i64 3 , i1 true ) [ "deactivation-symbol" (ptr @ds3 ) ]
13783 %cmp1 = icmp eq ptr addrspace (1 ) %protptrptr , null
13884 %cmp2 = icmp eq ptr addrspace (1 ) null , %protptrptr
13985 %cmp = or i1 %cmp1 , %cmp2
@@ -149,19 +95,17 @@ define ptr addrspace(1) @escape(ptr addrspace(1) %ptrptr) {
14995; PAUTH-SAME: ptr addrspace(1) [[PTRPTR:%.*]]) #[[ATTR0]] {
15096; PAUTH-NEXT: ret ptr addrspace(1) [[PTRPTR]]
15197;
152- %protptrptr = call ptr addrspace (1 ) @llvm.protected.field.ptr.p1 (ptr addrspace (1 ) %ptrptr , i64 3 , i1 true ) [ "deactivation-symbol" (ptr @ds6 ) ]
98+ %protptrptr = call ptr addrspace (1 ) @llvm.protected.field.ptr.p1 (ptr addrspace (1 ) %ptrptr , i64 3 , i1 true ) [ "deactivation-symbol" (ptr @ds4 ) ]
15399 ret ptr addrspace (1 ) %protptrptr
154100}
155101
156102declare ptr addrspace (1 ) @llvm.protected.field.ptr.p1 (ptr addrspace (1 ), i64 , i1 immarg)
157103;.
158104; NOPAUTH: attributes #[[ATTR0:[0-9]+]] = { nocallback nofree nosync nounwind willreturn memory(none) }
159105; NOPAUTH: attributes #[[ATTR1:[0-9]+]] = { nounwind memory(none) }
160- ; NOPAUTH: attributes #[[ATTR2:[0-9]+]] = { nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) }
161106;.
162107; PAUTH: attributes #[[ATTR0]] = { "target-features"="+pauth" }
163108; PAUTH: attributes #[[ATTR1:[0-9]+]] = { nocallback nofree nosync nounwind willreturn memory(none) "target-features"="+pauth" }
164109; PAUTH: attributes #[[ATTR2:[0-9]+]] = { nocallback nofree nosync nounwind willreturn memory(none) }
165110; PAUTH: attributes #[[ATTR3:[0-9]+]] = { nounwind memory(none) }
166- ; PAUTH: attributes #[[ATTR4:[0-9]+]] = { nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) }
167111;.
0 commit comments