xref: /llvm-project/llvm/test/Transforms/SampleProfile/pseudo-probe-peep.ll (revision e6b85c30276d8e35ed302b2defd7d17637d6edb3)
13a5f8a3eSHongtao Yu; REQUIRES: x86_64-linux
21cb47a06SHongtao Yu; RUN: llc -mtriple=x86_64-- -stop-after=peephole-opt -o - %s | FileCheck %s
31cb47a06SHongtao Yu
425450788SNikita Popovdefine internal i32 @arc_compare(i1 %c) {
51cb47a06SHongtao Yuentry:
60271ae65SFangrui Song  %0 = load i64, ptr undef, align 8
725450788SNikita Popov  br i1 %c, label %return, label %if.end
81cb47a06SHongtao Yu
91cb47a06SHongtao Yuif.end:                                           ; preds = %entry
101cb47a06SHongtao Yu; Chek a register copy has been sinked into the compare instruction.
111cb47a06SHongtao Yu; CHECK: %[[#REG:]]:gr64 = IMPLICIT_DEF
121cb47a06SHongtao Yu; CHECK-NOT: %[[#]]:gr64 = MOV64rm %[[#REG]]
131cb47a06SHongtao Yu; CHECK: PSEUDO_PROBE 5116412291814990879, 3, 0, 0
14*e6b85c30SSimon Pilgrim; CHECK: CMP64mi32 %[[#REG]], 1
151cb47a06SHongtao Yu  call void @llvm.pseudoprobe(i64 5116412291814990879, i64 3, i32 0, i64 -1)
16*e6b85c30SSimon Pilgrim  %cmp4 = icmp slt i64 %0, 0
171cb47a06SHongtao Yu  br i1 %cmp4, label %return, label %if.end6
181cb47a06SHongtao Yu
191cb47a06SHongtao Yuif.end6:                                          ; preds = %if.end
201cb47a06SHongtao Yu  call void @llvm.pseudoprobe(i64 5116412291814990879, i64 5, i32 0, i64 -1)
211cb47a06SHongtao Yu  br label %return
221cb47a06SHongtao Yu
231cb47a06SHongtao Yureturn:                                           ; preds = %if.end6, %if.end, %entry
241cb47a06SHongtao Yu  ret i32 undef
251cb47a06SHongtao Yu}
261cb47a06SHongtao Yu
271cb47a06SHongtao Yu; Function Attrs: inaccessiblememonly nounwind willreturn
281cb47a06SHongtao Yudeclare void @llvm.pseudoprobe(i64, i64, i32, i64) #0
291cb47a06SHongtao Yu
301cb47a06SHongtao Yuattributes #0 = { inaccessiblememonly nounwind willreturn }
31