Revert " [LoongArch][ISel] Check the number of sign bits in `PatGprGpr_32` (#107432)"
[llvm-project.git] / llvm / test / CodeGen / BPF / i128.ll
blob6c581c574782d726ff2a38c4b48a57196504afda
1 ; RUN: llc -march=bpfel -o - %s | FileCheck %s
2 ; RUN: llc -march=bpfeb -o - %s | FileCheck %s
3 ; Source code:
4 ;   struct ipv6_key_t {
5 ;     unsigned pid;
6 ;     unsigned __int128 saddr;
7 ;     unsigned short lport;
8 ;   };
10 ;   extern void test1(ptr);
11 ;   int test(int pid) {
12 ;     struct ipv6_key_t ipv6_key = {.pid = pid};
13 ;     test1(&ipv6_key);
14 ;     return 0;
15 ;   }
16 ; Compilation flag:
17 ;   clang -target bpf -O2 -S -emit-llvm t.c
19 %struct.ipv6_key_t = type { i32, i128, i16 }
21 ; Function Attrs: nounwind
22 define dso_local i32 @test(i32 %pid) local_unnamed_addr #0 {
23 entry:
24   %ipv6_key = alloca %struct.ipv6_key_t, align 16
25   call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %ipv6_key) #4
26   call void @llvm.memset.p0.i64(ptr nonnull align 16 dereferenceable(48) %ipv6_key, i8 0, i64 48, i1 false)
27   store i32 %pid, ptr %ipv6_key, align 16, !tbaa !2
28   call void @test1(ptr nonnull %ipv6_key) #4
29   call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %ipv6_key) #4
30   ret i32 0
33 ; CHECK-LABEL: test
34 ; CHECK:       *(u64 *)(r10 - 48) = r{{[0-9]+}}
35 ; CHECK:       *(u32 *)(r10 - 48) = r{{[0-9]+}}
37 ; Function Attrs: argmemonly nounwind willreturn
38 declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1
40 ; Function Attrs: argmemonly nounwind willreturn writeonly
41 declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2
43 declare dso_local void @test1(ptr) local_unnamed_addr #3
45 ; Function Attrs: argmemonly nounwind willreturn
46 declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1
48 attributes #0 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
49 attributes #1 = { argmemonly nounwind willreturn }
50 attributes #2 = { argmemonly nounwind willreturn writeonly }
51 attributes #3 = { "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
52 attributes #4 = { nounwind }
54 !llvm.module.flags = !{!0}
55 !llvm.ident = !{!1}
57 !0 = !{i32 1, !"wchar_size", i32 4}
58 !1 = !{!"clang version 11.0.0 (https://github.com/llvm/llvm-project.git 55fc7a47f8f18f84b44ff16f4e7a420c0a42ddf1)"}
59 !2 = !{!3, !4, i64 0}
60 !3 = !{!"ipv6_key_t", !4, i64 0, !7, i64 16, !8, i64 32}
61 !4 = !{!"int", !5, i64 0}
62 !5 = !{!"omnipotent char", !6, i64 0}
63 !6 = !{!"Simple C/C++ TBAA"}
64 !7 = !{!"__int128", !5, i64 0}
65 !8 = !{!"short", !5, i64 0}