xref: /llvm-project/llvm/test/Transforms/CodeGenPrepare/LoongArch/splitgep.ll (revision 9d4f7f44b64d87d1068859906f43b7ce03a7388b)
1*9d4f7f44Swanglei; RUN: opt --mtriple=loongarch64 -mattr=+d -S --passes='require<profile-summary>,function(codegenprepare)' %s | FileCheck %s
25fc8a190Swanglei
35fc8a190Swanglei; Check that we have deterministic output
45fc8a190Swangleidefine void @test(ptr %sp, ptr %t, i32 %n) {
55fc8a190Swanglei; CHECK-LABEL: @test(
65fc8a190Swanglei; CHECK-NEXT:  entry:
78e4b0890Swanglei; CHECK-NEXT:    %splitgep1 = getelementptr i8, ptr %t, i64 80000
88e4b0890Swanglei; CHECK-NEXT:    %s = load ptr, ptr %sp
98e4b0890Swanglei; CHECK-NEXT:    %splitgep = getelementptr i8, ptr %s, i64 80000
105fc8a190Swangleientry:
115fc8a190Swanglei  %s = load ptr, ptr %sp
125fc8a190Swanglei  br label %while_cond
135fc8a190Swanglei
145fc8a190Swangleiwhile_cond:
155fc8a190Swanglei  %phi = phi i32 [ 0, %entry ], [ %i, %while_body ]
165fc8a190Swanglei  %gep0 = getelementptr [65536 x i32], ptr %s, i64 0, i64 20000
175fc8a190Swanglei  %gep1 = getelementptr [65536 x i32], ptr %s, i64 0, i64 20001
185fc8a190Swanglei  %gep2 = getelementptr [65536 x i32], ptr %t, i64 0, i64 20000
195fc8a190Swanglei  %gep3 = getelementptr [65536 x i32], ptr %t, i64 0, i64 20001
205fc8a190Swanglei  %cmp = icmp slt i32 %phi, %n
215fc8a190Swanglei  br i1 %cmp, label %while_body, label %while_end
225fc8a190Swanglei
235fc8a190Swangleiwhile_body:
245fc8a190Swanglei  %i = add i32 %phi, 1
255fc8a190Swanglei  store i32 %i, ptr %gep0
265fc8a190Swanglei  store i32 %phi, ptr %gep1
275fc8a190Swanglei  store i32 %i, ptr %gep2
285fc8a190Swanglei  store i32 %phi, ptr %gep3
295fc8a190Swanglei  br label %while_cond
305fc8a190Swanglei
315fc8a190Swangleiwhile_end:
325fc8a190Swanglei  ret void
335fc8a190Swanglei}
345fc8a190Swanglei
35