Skip to content

Commit

Permalink
[BPF] Convert some tests to opaque pointers (NFC)
Browse files Browse the repository at this point in the history
  • Loading branch information
nikic committed Dec 19, 2022
1 parent bed1c7f commit 6022873
Show file tree
Hide file tree
Showing 170 changed files with 1,444 additions and 1,603 deletions.
32 changes: 16 additions & 16 deletions llvm/test/CodeGen/BPF/32-bit-subreg-load-store.ll
Original file line number Diff line number Diff line change
Expand Up @@ -40,68 +40,68 @@
; *p = v;
; }
; Function Attrs: norecurse nounwind readonly
define dso_local zeroext i8 @loadu8(i8* nocapture readonly %p) local_unnamed_addr #0 {
define dso_local zeroext i8 @loadu8(ptr nocapture readonly %p) local_unnamed_addr #0 {
entry:
%0 = load i8, i8* %p, align 1
%0 = load i8, ptr %p, align 1
; CHECK: w{{[0-9]+}} = *(u8 *)(r{{[0-9]+}} + 0)
ret i8 %0
}

; Function Attrs: norecurse nounwind readonly
define dso_local zeroext i16 @loadu16(i16* nocapture readonly %p) local_unnamed_addr #0 {
define dso_local zeroext i16 @loadu16(ptr nocapture readonly %p) local_unnamed_addr #0 {
entry:
%0 = load i16, i16* %p, align 2
%0 = load i16, ptr %p, align 2
; CHECK: w{{[0-9]+}} = *(u16 *)(r{{[0-9]+}} + 0)
ret i16 %0
}

; Function Attrs: norecurse nounwind readonly
define dso_local i32 @loadu32(i32* nocapture readonly %p) local_unnamed_addr #0 {
define dso_local i32 @loadu32(ptr nocapture readonly %p) local_unnamed_addr #0 {
entry:
%0 = load i32, i32* %p, align 4
%0 = load i32, ptr %p, align 4
; CHECK: w{{[0-9]+}} = *(u32 *)(r{{[0-9]+}} + 0)
ret i32 %0
}

; Function Attrs: norecurse nounwind readonly
define dso_local i64 @loadu64(i64* nocapture readonly %p) local_unnamed_addr #0 {
define dso_local i64 @loadu64(ptr nocapture readonly %p) local_unnamed_addr #0 {
entry:
%0 = load i64, i64* %p, align 8
%0 = load i64, ptr %p, align 8
; CHECK: r{{[0-9]+}} = *(u64 *)(r{{[0-9]+}} + 0)
ret i64 %0
}

; Function Attrs: norecurse nounwind
define dso_local void @storeu8(i8* nocapture %p, i64 %v) local_unnamed_addr #1 {
define dso_local void @storeu8(ptr nocapture %p, i64 %v) local_unnamed_addr #1 {
entry:
%conv = trunc i64 %v to i8
store i8 %conv, i8* %p, align 1
store i8 %conv, ptr %p, align 1
; CHECK: *(u8 *)(r{{[0-9]+}} + 0) = w{{[0-9]+}}
ret void
}

; Function Attrs: norecurse nounwind
define dso_local void @storeu16(i16* nocapture %p, i64 %v) local_unnamed_addr #1 {
define dso_local void @storeu16(ptr nocapture %p, i64 %v) local_unnamed_addr #1 {
entry:
%conv = trunc i64 %v to i16
store i16 %conv, i16* %p, align 2
store i16 %conv, ptr %p, align 2
; CHECK: *(u16 *)(r{{[0-9]+}} + 0) = w{{[0-9]+}}
ret void
}

; Function Attrs: norecurse nounwind
define dso_local void @storeu32(i32* nocapture %p, i64 %v) local_unnamed_addr #1 {
define dso_local void @storeu32(ptr nocapture %p, i64 %v) local_unnamed_addr #1 {
entry:
%conv = trunc i64 %v to i32
store i32 %conv, i32* %p, align 4
store i32 %conv, ptr %p, align 4
; CHECK: *(u32 *)(r{{[0-9]+}} + 0) = w{{[0-9]+}}
ret void
}

; Function Attrs: norecurse nounwind
define dso_local void @storeu64(i64* nocapture %p, i64 %v) local_unnamed_addr #1 {
define dso_local void @storeu64(ptr nocapture %p, i64 %v) local_unnamed_addr #1 {
entry:
store i64 %v, i64* %p, align 8
store i64 %v, ptr %p, align 8
; CHECK: *(u64 *)(r{{[0-9]+}} + 0) = r{{[0-9]+}}
ret void
}
10 changes: 5 additions & 5 deletions llvm/test/CodeGen/BPF/32-bit-subreg-peephole.ll
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ entry:
define dso_local i32 @foo(i32 %b, i32 %c) local_unnamed_addr #0 {
; CHECK-LABEL: foo:
entry:
%call = tail call i64 bitcast (i64 (...)* @bar to i64 ()*)() #2
%call = tail call i64 @bar() #2
%conv = trunc i64 %call to i32
%cmp = icmp ult i32 %conv, 10
; %call comes from function call returning i64 so the high bits will need
Expand All @@ -99,21 +99,21 @@ entry:
declare dso_local i64 @bar(...) local_unnamed_addr #1

; Function Attrs: norecurse nounwind readnone
define dso_local i32* @inc_p(i32* readnone %p, i32 %a) local_unnamed_addr #0 {
define dso_local ptr @inc_p(ptr readnone %p, i32 %a) local_unnamed_addr #0 {
; CHECK-LABEL: inc_p:
entry:
%idx.ext = zext i32 %a to i64
; CHECK: r{{[0-9]+}} = w{{[0-9]+}}
; CHECK-NOT: r{{[0-9]+}} <<= 32
; CHECK-NOT: r{{[0-9]+}} >>= 32
%add.ptr = getelementptr inbounds i32, i32* %p, i64 %idx.ext
ret i32* %add.ptr
%add.ptr = getelementptr inbounds i32, ptr %p, i64 %idx.ext
ret ptr %add.ptr
}

define dso_local i32 @test() local_unnamed_addr {
; CHECK-LABEL: test:
entry:
%call = tail call i32 bitcast (i32 (...)* @helper to i32 ()*)()
%call = tail call i32 @helper()
%cmp = icmp sgt i32 %call, 6
; The shifts can't be optimized out because %call comes from function call
; return i32 so the high bits might be invalid.
Expand Down
16 changes: 8 additions & 8 deletions llvm/test/CodeGen/BPF/BTF/builtin-btf-type-id.ll
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
; RUN: llc -mattr=+alu32 -filetype=asm -o - %t1 | FileCheck -check-prefixes=CHECK %s
;
; Source code:
; static int (*bpf_log)(unsigned long tid, void *data, int data_size) = (void *)999;
; static int (*bpf_log)(unsigned long tid, ptr data, int data_size) = (ptr)999;
; struct {
; char f1[100];
; typeof(3) f2;
Expand All @@ -21,14 +21,14 @@
; clang -target bpf -O2 -g -S -emit-llvm -Xclang -disable-llvm-passes test.c

@tmp__abc = dso_local global { <{ i8, i8, [98 x i8] }>, i32 } { <{ i8, i8, [98 x i8] }> <{ i8 1, i8 3, [98 x i8] zeroinitializer }>, i32 0 }, align 4, !dbg !0
@bpf_log = internal global i32 (i64, i8*, i32)* inttoptr (i64 999 to i32 (i64, i8*, i32)*), align 8, !dbg !17
@bpf_log = internal global ptr inttoptr (i64 999 to ptr), align 8, !dbg !17

; Function Attrs: nounwind
define dso_local void @prog1() #0 !dbg !28 {
entry:
%0 = load i32 (i64, i8*, i32)*, i32 (i64, i8*, i32)** @bpf_log, align 8, !dbg !31, !tbaa !32
%0 = load ptr, ptr @bpf_log, align 8, !dbg !31, !tbaa !32
%1 = call i64 @llvm.bpf.btf.type.id(i32 0, i64 0), !dbg !36, !llvm.preserve.access.index !7
%call = call i32 %0(i64 %1, i8* getelementptr inbounds ({ <{ i8, i8, [98 x i8] }>, i32 }, { <{ i8, i8, [98 x i8] }>, i32 }* @tmp__abc, i32 0, i32 0, i32 0), i32 104), !dbg !31
%call = call i32 %0(i64 %1, ptr getelementptr inbounds ({ <{ i8, i8, [98 x i8] }>, i32 }, ptr @tmp__abc, i32 0, i32 0, i32 0), i32 104), !dbg !31
ret void, !dbg !37
}

Expand All @@ -38,18 +38,18 @@ declare i64 @llvm.bpf.btf.type.id(i32, i64) #1
; Function Attrs: nounwind
define dso_local void @prog2() #0 !dbg !38 {
entry:
%0 = load i32 (i64, i8*, i32)*, i32 (i64, i8*, i32)** @bpf_log, align 8, !dbg !39, !tbaa !32
%0 = load ptr, ptr @bpf_log, align 8, !dbg !39, !tbaa !32
%1 = call i64 @llvm.bpf.btf.type.id(i32 1, i64 0), !dbg !40, !llvm.preserve.access.index !6
%call = call i32 %0(i64 %1, i8* getelementptr inbounds ({ <{ i8, i8, [98 x i8] }>, i32 }, { <{ i8, i8, [98 x i8] }>, i32 }* @tmp__abc, i32 0, i32 0, i32 0), i32 104), !dbg !39
%call = call i32 %0(i64 %1, ptr getelementptr inbounds ({ <{ i8, i8, [98 x i8] }>, i32 }, ptr @tmp__abc, i32 0, i32 0, i32 0), i32 104), !dbg !39
ret void, !dbg !41
}

; Function Attrs: nounwind
define dso_local void @prog3() #0 !dbg !42 {
entry:
%0 = load i32 (i64, i8*, i32)*, i32 (i64, i8*, i32)** @bpf_log, align 8, !dbg !43, !tbaa !32
%0 = load ptr, ptr @bpf_log, align 8, !dbg !43, !tbaa !32
%1 = call i64 @llvm.bpf.btf.type.id(i32 2, i64 1), !dbg !44, !llvm.preserve.access.index !11
%call = call i32 %0(i64 %1, i8* getelementptr inbounds ({ <{ i8, i8, [98 x i8] }>, i32 }, { <{ i8, i8, [98 x i8] }>, i32 }* @tmp__abc, i32 0, i32 0, i32 0), i32 104), !dbg !43
%call = call i32 %0(i64 %1, ptr getelementptr inbounds ({ <{ i8, i8, [98 x i8] }>, i32 }, ptr @tmp__abc, i32 0, i32 0, i32 0), i32 104), !dbg !43
ret void, !dbg !45
}

Expand Down
2 changes: 1 addition & 1 deletion llvm/test/CodeGen/BPF/BTF/char-no-debuginfo.ll
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

; Function Attrs: norecurse nounwind readonly
define dso_local i32 @test() local_unnamed_addr #0 {
%1 = load i32, i32* @g, align 4, !tbaa !2
%1 = load i32, ptr @g, align 4, !tbaa !2
ret i32 %1
}

Expand Down
12 changes: 6 additions & 6 deletions llvm/test/CodeGen/BPF/BTF/extern-builtin.ll
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
; RUN: llc -march=bpfel -filetype=asm -o - %s | FileCheck -check-prefixes=CHECK %s
; RUN: llc -march=bpfeb -filetype=asm -o - %s | FileCheck -check-prefixes=CHECK %s
; Source code:
; unsigned long long load_byte(void *skb,
; unsigned long long load_byte(ptr skb,
; unsigned long long off) asm("llvm.bpf.load.byte");
; unsigned long long test(void *skb) {
; unsigned long long test(ptr skb) {
; return load_byte(skb, 10);
; }
; Compilation flag:
; clang -target bpf -O2 -g -S -emit-llvm test.c

; Function Attrs: nounwind readonly
define dso_local i64 @test(i8* readonly %skb) local_unnamed_addr #0 !dbg !13 {
define dso_local i64 @test(ptr readonly %skb) local_unnamed_addr #0 !dbg !13 {
entry:
call void @llvm.dbg.value(metadata i8* %skb, metadata !17, metadata !DIExpression()), !dbg !18
%call = tail call i64 @llvm.bpf.load.byte(i8* %skb, i64 10), !dbg !19
call void @llvm.dbg.value(metadata ptr %skb, metadata !17, metadata !DIExpression()), !dbg !18
%call = tail call i64 @llvm.bpf.load.byte(ptr %skb, i64 10), !dbg !19
ret i64 %call, !dbg !20
}

Expand Down Expand Up @@ -54,7 +54,7 @@ entry:
; CHECK-NEXT: .byte 0

; Function Attrs: nounwind readonly
declare !dbg !4 i64 @llvm.bpf.load.byte(i8*, i64) #1
declare !dbg !4 i64 @llvm.bpf.load.byte(ptr, i64) #1
; Function Attrs: nounwind readnone speculatable willreturn
declare void @llvm.dbg.value(metadata, metadata, metadata) #2

Expand Down
6 changes: 3 additions & 3 deletions llvm/test/CodeGen/BPF/BTF/extern-func-ptr.ll
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
;
; Source code:
; extern int do_work(int) __attribute__((section(".callback_fn")));
; long bpf_helper(void *callback_fn);
; long bpf_helper(ptr callback_fn);
; long prog() {
; return bpf_helper(&do_work);
; }
Expand All @@ -13,7 +13,7 @@
; Function Attrs: nounwind
define dso_local i64 @prog() local_unnamed_addr #0 !dbg !7 {
entry:
%call = tail call i64 @bpf_helper(i8* bitcast (i32 (i32)* @do_work to i8*)) #2, !dbg !11
%call = tail call i64 @bpf_helper(ptr @do_work) #2, !dbg !11
ret i64 %call, !dbg !12
}

Expand Down Expand Up @@ -41,7 +41,7 @@ entry:
; CHECK: .ascii "do_work" # string offset=55
; CHECK: .ascii ".callback_fn" # string offset=74

declare !dbg !13 dso_local i64 @bpf_helper(i8*) local_unnamed_addr #1
declare !dbg !13 dso_local i64 @bpf_helper(ptr) local_unnamed_addr #1

declare !dbg !17 dso_local i32 @do_work(i32) #1 section ".callback_fn"

Expand Down
2 changes: 1 addition & 1 deletion llvm/test/CodeGen/BPF/BTF/extern-global-var.ll
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

; Function Attrs: norecurse nounwind readonly
define dso_local i32 @foo() local_unnamed_addr #0 !dbg !7 {
%1 = load i8, i8* @a, align 1, !dbg !11, !tbaa !12
%1 = load i8, ptr @a, align 1, !dbg !11, !tbaa !12
%2 = sext i8 %1 to i32, !dbg !11
ret i32 %2, !dbg !15
}
Expand Down
2 changes: 1 addition & 1 deletion llvm/test/CodeGen/BPF/BTF/extern-var-section.ll
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
define dso_local i32 @test() local_unnamed_addr #0 !dbg !16 {
entry:
%call = tail call i32 @global_func(i8 signext 0) #2, !dbg !19
%0 = load i8, i8* @ch, align 1, !dbg !20, !tbaa !21
%0 = load i8, ptr @ch, align 1, !dbg !20, !tbaa !21
%conv = sext i8 %0 to i32, !dbg !20
%add = add nsw i32 %call, %conv, !dbg !24
ret i32 %add, !dbg !25
Expand Down
2 changes: 1 addition & 1 deletion llvm/test/CodeGen/BPF/BTF/extern-var-struct-weak.ll
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
; Function Attrs: norecurse nounwind readonly
define dso_local i32 @test() local_unnamed_addr #0 !dbg !15 {
entry:
%0 = load i32, i32* getelementptr (%struct.t1, %struct.t1* @global, i64 0, i32 0), align 4, !dbg !18, !tbaa !19
%0 = load i32, ptr @global, align 4, !dbg !18, !tbaa !19
ret i32 %0, !dbg !24
}

Expand Down
2 changes: 1 addition & 1 deletion llvm/test/CodeGen/BPF/BTF/extern-var-struct.ll
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
; Function Attrs: norecurse nounwind readonly
define dso_local i32 @test() local_unnamed_addr #0 !dbg !15 {
entry:
%0 = load i32, i32* getelementptr inbounds (%struct.t1, %struct.t1* @global, i64 0, i32 0), align 4, !dbg !18, !tbaa !19
%0 = load i32, ptr @global, align 4, !dbg !18, !tbaa !19
ret i32 %0, !dbg !24
}

Expand Down
2 changes: 1 addition & 1 deletion llvm/test/CodeGen/BPF/BTF/extern-var-weak-section.ll
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
define dso_local i32 @test() local_unnamed_addr #0 !dbg !16 {
entry:
%call = tail call i32 @global_func(i8 signext 0) #2, !dbg !19
%0 = load i8, i8* @ch, align 1, !dbg !20, !tbaa !21
%0 = load i8, ptr @ch, align 1, !dbg !20, !tbaa !21
%conv = sext i8 %0 to i32, !dbg !20
%add = add nsw i32 %call, %conv, !dbg !24
ret i32 %add, !dbg !25
Expand Down
4 changes: 2 additions & 2 deletions llvm/test/CodeGen/BPF/BTF/func-func-ptr.ll
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@
; Compilation flag:
; clang -target bpf -O2 -g -S -emit-llvm t.c

%struct.t1 = type { void (i32)* }
%struct.t1 = type { ptr }

@a1 = common dso_local local_unnamed_addr global void (i32)* null, align 8, !dbg !0
@a1 = common dso_local local_unnamed_addr global ptr null, align 8, !dbg !0
@b1 = common dso_local local_unnamed_addr global %struct.t1 zeroinitializer, align 8, !dbg !6

; Function Attrs: nounwind readnone
Expand Down
2 changes: 1 addition & 1 deletion llvm/test/CodeGen/BPF/BTF/fwd-no-define.ll
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
; Compilation flag:
; clang -target bpf -O2 -g -S -emit-llvm t.c

%struct.t2 = type { %struct.t1* }
%struct.t2 = type { ptr }
%struct.t1 = type opaque

@a = common dso_local local_unnamed_addr global %struct.t2 zeroinitializer, align 8, !dbg !0
Expand Down
2 changes: 1 addition & 1 deletion llvm/test/CodeGen/BPF/BTF/fwd-with-define.ll
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
; Compilation flag:
; clang -target bpf -O2 -g -S -emit-llvm t.c

%struct.t1 = type { %struct.t1* }
%struct.t1 = type { ptr }

@a = common dso_local local_unnamed_addr global %struct.t1 zeroinitializer, align 8, !dbg !0

Expand Down
25 changes: 12 additions & 13 deletions llvm/test/CodeGen/BPF/BTF/local-var-readonly-1.ll
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
; RUN: llc -march=bpfeb -filetype=asm -o - %s | FileCheck -check-prefixes=CHECK %s
;
; Source:
; void foo(const void *);
; void foo(const ptr);
; int test() {
; const char *str = "abcd";
; const struct {
Expand All @@ -24,14 +24,13 @@
define dso_local i32 @test() local_unnamed_addr #0 !dbg !7 {
entry:
%val = alloca %struct.anon, align 4
call void @llvm.dbg.value(metadata i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), metadata !12, metadata !DIExpression()), !dbg !25
%0 = bitcast %struct.anon* %val to i8*, !dbg !26
call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %0) #4, !dbg !26
call void @llvm.dbg.declare(metadata %struct.anon* %val, metadata !16, metadata !DIExpression()), !dbg !27
call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 4 dereferenceable(16) %0, i8* nonnull align 4 dereferenceable(16) bitcast (%struct.anon* @__const.test.val to i8*), i64 16, i1 false), !dbg !27
tail call void @foo(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0)) #4, !dbg !28
call void @foo(i8* nonnull %0) #4, !dbg !29
call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %0) #4, !dbg !30
call void @llvm.dbg.value(metadata ptr @.str, metadata !12, metadata !DIExpression()), !dbg !25
call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %val) #4, !dbg !26
call void @llvm.dbg.declare(metadata ptr %val, metadata !16, metadata !DIExpression()), !dbg !27
call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 dereferenceable(16) %val, ptr nonnull align 4 dereferenceable(16) @__const.test.val, i64 16, i1 false), !dbg !27
tail call void @foo(ptr @.str) #4, !dbg !28
call void @foo(ptr nonnull %val) #4, !dbg !29
call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %val) #4, !dbg !30
ret i32 0, !dbg !31
}

Expand All @@ -40,18 +39,18 @@ entry:
; CHECK-NOT: BTF_KIND_DATASEC

; Function Attrs: argmemonly nounwind willreturn
declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #1
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1

; Function Attrs: nounwind readnone speculatable willreturn
declare void @llvm.dbg.declare(metadata, metadata, metadata) #2

; Function Attrs: argmemonly nounwind willreturn
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i64, i1 immarg) #1
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #1

declare !dbg !32 dso_local void @foo(i8*) local_unnamed_addr #3
declare !dbg !32 dso_local void @foo(ptr) local_unnamed_addr #3

; Function Attrs: argmemonly nounwind willreturn
declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #1
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1

; Function Attrs: nounwind readnone speculatable willreturn
declare void @llvm.dbg.value(metadata, metadata, metadata) #2
Expand Down
Loading

0 comments on commit 6022873

Please sign in to comment.