Skip to content

Commit 75a5f8c

Browse files
committed
[RISCV] add test case for XCVmem addressing mode heuristic
1 parent 16bc44a commit 75a5f8c

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2+
; RUN: llc -O3 -mtriple=riscv32 -mattr=+m,+xcvmem -verify-machineinstrs < %s \
3+
; RUN: | FileCheck %s --check-prefixes=CHECK
4+
5+
define i32 @test_heuristic(ptr %b, i32 %e, i1 %0) {
6+
; CHECK-LABEL: test_heuristic:
7+
; CHECK: # %bb.0: # %entry
8+
; CHECK-NEXT: andi a2, a2, 1
9+
; CHECK-NEXT: .LBB0_1: # %loop
10+
; CHECK-NEXT: # =>This Inner Loop Header: Depth=1
11+
; CHECK-NEXT: mv a3, a0
12+
; CHECK-NEXT: addi a0, a0, 1
13+
; CHECK-NEXT: beqz a2, .LBB0_1
14+
; CHECK-NEXT: # %bb.2: # %exit
15+
; CHECK-NEXT: cv.lbu a0, a1(a3)
16+
; CHECK-NEXT: ret
17+
entry:
18+
%1 = getelementptr i8, ptr %b, i32 %e
19+
br label %loop
20+
21+
loop: ; preds = %loop, %entry
22+
%2 = phi ptr [ %b, %entry ], [ %7, %loop ]
23+
%3 = phi ptr [ %1, %entry ], [ %8, %loop ]
24+
%4 = load i8, ptr %2, align 1
25+
%5 = load i8, ptr %3, align 1
26+
%6 = zext i8 %5 to i32
27+
%7 = getelementptr i8, ptr %2, i32 1
28+
%8 = getelementptr i8, ptr %3, i32 1
29+
br i1 %0, label %exit, label %loop
30+
31+
exit: ; preds = %loop
32+
ret i32 %6
33+
}

0 commit comments

Comments
 (0)