brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.8 KiB · 1803bee Raw
102 lines · plain
1; RUN: opt -mtriple=arm-arm-none-eabi -passes=consthoist -S < %s | FileCheck %s2; RUN: opt -mtriple=arm-arm-none-eabi -passes='require<profile-summary>,consthoist' -pgso -S < %s | FileCheck %s -check-prefix=PGSO3; RUN: opt -mtriple=arm-arm-none-eabi -passes=consthoist -pgso=false -S < %s | FileCheck %s -check-prefix=NPGSO4 5; There are different candidates here for the base constant: 1073876992 and6; 1073876996. But we don't want to see the latter because it results in7; negative offsets.8 9define void @foo() #0 {10entry:11; CHECK-LABEL: @foo12; CHECK-NOT: [[CONST1:%const_mat[0-9]*]] = add i32 %const, -413; CHECK-LABEL: @foo_pgso14  %0 = load volatile i32, ptr inttoptr (i32 1073876992 to ptr), align 409615  %or = or i32 %0, 116  store volatile i32 %or, ptr inttoptr (i32 1073876992 to ptr), align 409617  %1 = load volatile i32, ptr inttoptr (i32 1073876996 to ptr), align 418  %and = and i32 %1, -11750604819  store volatile i32 %and, ptr inttoptr (i32 1073876996 to ptr), align 420  %2 = load volatile i32, ptr inttoptr (i32 1073876992 to ptr), align 409621  %and1 = and i32 %2, -1736704122  store volatile i32 %and1, ptr inttoptr (i32 1073876996 to ptr), align 409623  %3 = load volatile i32, ptr inttoptr (i32 1073876992 to ptr), align 409624  %and2 = and i32 %3, -26214525  store volatile i32 %and2, ptr inttoptr (i32 1073876992 to ptr), align 409626  %4 = load volatile i32, ptr inttoptr (i32 1073876996 to ptr), align 427  %and3 = and i32 %4, -832307328  store volatile i32 %and3, ptr inttoptr (i32 1073876996 to ptr), align 429  store volatile i32 10420224, ptr inttoptr (i32 1073877000 to ptr), align 830  %5 = load volatile i32, ptr inttoptr (i32 1073876996 to ptr), align 409631  %or4 = or i32 %5, 6553632  store volatile i32 %or4, ptr inttoptr (i32 1073876996 to ptr), align 409633  %6 = load volatile i32, ptr inttoptr (i32 1073881088 to ptr), align 819234  %or6.i.i = or i32 %6, 1635  store volatile i32 %or6.i.i, ptr inttoptr (i32 1073881088 to ptr), align 819236  %7 = load volatile i32, ptr inttoptr (i32 1073881088 to ptr), align 819237  %and7.i.i = and i32 %7, -438  store volatile i32 %and7.i.i, ptr inttoptr (i32 1073881088 to ptr), align 819239  %8 = load volatile i32, ptr inttoptr (i32 1073881088 to ptr), align 819240  %or8.i.i = or i32 %8, 241  store volatile i32 %or8.i.i, ptr inttoptr (i32 1073881088 to ptr), align 819242  ret void43}44 45attributes #0 = { minsize norecurse nounwind optsize readnone uwtable }46 47define void @foo_pgso() #1 !prof !14 {48entry:49; PGSO-LABEL: @foo_pgso50; PGSO-NOT: [[CONST2:%const_mat[0-9]*]] = add i32 %const, -451; NPGSO-LABEL: @foo_pgso52; NPGSO: [[CONST2:%const_mat[0-9]*]] = add i32 %const, -453  %0 = load volatile i32, ptr inttoptr (i32 1073876992 to ptr), align 409654  %or = or i32 %0, 155  store volatile i32 %or, ptr inttoptr (i32 1073876992 to ptr), align 409656  %1 = load volatile i32, ptr inttoptr (i32 1073876996 to ptr), align 457  %and = and i32 %1, -11750604858  store volatile i32 %and, ptr inttoptr (i32 1073876996 to ptr), align 459  %2 = load volatile i32, ptr inttoptr (i32 1073876992 to ptr), align 409660  %and1 = and i32 %2, -1736704161  store volatile i32 %and1, ptr inttoptr (i32 1073876996 to ptr), align 409662  %3 = load volatile i32, ptr inttoptr (i32 1073876992 to ptr), align 409663  %and2 = and i32 %3, -26214564  store volatile i32 %and2, ptr inttoptr (i32 1073876992 to ptr), align 409665  %4 = load volatile i32, ptr inttoptr (i32 1073876996 to ptr), align 466  %and3 = and i32 %4, -832307367  store volatile i32 %and3, ptr inttoptr (i32 1073876996 to ptr), align 468  store volatile i32 10420224, ptr inttoptr (i32 1073877000 to ptr), align 869  %5 = load volatile i32, ptr inttoptr (i32 1073876996 to ptr), align 409670  %or4 = or i32 %5, 6553671  store volatile i32 %or4, ptr inttoptr (i32 1073876996 to ptr), align 409672  %6 = load volatile i32, ptr inttoptr (i32 1073881088 to ptr), align 819273  %or6.i.i = or i32 %6, 1674  store volatile i32 %or6.i.i, ptr inttoptr (i32 1073881088 to ptr), align 819275  %7 = load volatile i32, ptr inttoptr (i32 1073881088 to ptr), align 819276  %and7.i.i = and i32 %7, -477  store volatile i32 %and7.i.i, ptr inttoptr (i32 1073881088 to ptr), align 819278  %8 = load volatile i32, ptr inttoptr (i32 1073881088 to ptr), align 819279  %or8.i.i = or i32 %8, 280  store volatile i32 %or8.i.i, ptr inttoptr (i32 1073881088 to ptr), align 819281  ret void82}83 84attributes #1 = { norecurse nounwind readnone uwtable }  ; no optsize or minsize85 86!llvm.module.flags = !{!0}87!0 = !{i32 1, !"ProfileSummary", !1}88!1 = !{!2, !3, !4, !5, !6, !7, !8, !9}89!2 = !{!"ProfileFormat", !"InstrProf"}90!3 = !{!"TotalCount", i64 10000}91!4 = !{!"MaxCount", i64 10}92!5 = !{!"MaxInternalCount", i64 1}93!6 = !{!"MaxFunctionCount", i64 1000}94!7 = !{!"NumCounts", i64 3}95!8 = !{!"NumFunctions", i64 3}96!9 = !{!"DetailedSummary", !10}97!10 = !{!11, !12, !13}98!11 = !{i32 10000, i64 100, i32 1}99!12 = !{i32 999000, i64 100, i32 1}100!13 = !{i32 999999, i64 1, i32 2}101!14 = !{!"function_entry_count", i64 0}102