| ; RUN: llc -mtriple=hexagon < %s | FileCheck %s |
| |
| ; CHECK-LABEL: test_readcyclecounter |
| ; CHECK: r1:0 = c15:14 |
| define i64 @test_readcyclecounter() nounwind { |
| %t0 = call i64 @llvm.readcyclecounter() |
| ret i64 %t0 |
| } |
| |
| ;; Make sure readcyclecounter calls are not optmized out and |
| ;; not moved across function calls. |
| |
| ; CHECK-LABEL: test_readcyclecounter2 |
| ; CHECK: [[R1:r[0-9:]+]] = c15:14 |
| ; CHECK: call fun |
| ; CHECK: [[R2:r[0-9:]+]] = c15:14 |
| ; CHECK: [[R3:r[0-9:]+]] = sub([[R2]],[[R1]]) |
| define i64 @test_readcyclecounter2() { |
| %1 = tail call i64 @llvm.readcyclecounter() |
| tail call void @fun() |
| %2 = tail call i64 @llvm.readcyclecounter() |
| %sub = sub i64 %2, %1 |
| ret i64 %sub |
| } |
| |
| declare i64 @llvm.readcyclecounter() |
| declare void @fun() |