Skip to content

Commit 7234ae6

Browse files
committed
[RISCV] Improves to xtheadmemidx.ll and xtheadfmemidx.ll. NFC
-Add a common check-prefix. -Use iXLen for GEP indices except the tests for zero extended indices. -Only extend i8/i16 load results to i32.
1 parent 0d04789 commit 7234ae6

File tree

2 files changed

+331
-556
lines changed

2 files changed

+331
-556
lines changed

llvm/test/CodeGen/RISCV/xtheadfmemidx.ll

Lines changed: 52 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,27 @@
11
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2-
; RUN: llc -mtriple=riscv32 -mattr=+d -mattr=+xtheadfmemidx -mattr=+m -verify-machineinstrs < %s \
3-
; RUN: | FileCheck %s -check-prefix=RV32XTHEADMEMIDX
4-
; RUN: llc -mtriple=riscv64 -mattr=+d -mattr=+xtheadfmemidx -verify-machineinstrs < %s \
5-
; RUN: | FileCheck %s -check-prefix=RV64XTHEADFMEMIDX
2+
; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+d,+xtheadfmemidx \
3+
; RUN: -verify-machineinstrs | FileCheck %s -check-prefixes=CHECK,RV32XTHEADFMEMIDX
4+
; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+d,+xtheadfmemidx \
5+
; RUN: -verify-machineinstrs | FileCheck %s -check-prefixes=CHECK,RV64XTHEADFMEMIDX
66

7-
define float @flrw(ptr %a, i64 %b) {
8-
; RV32XTHEADMEMIDX-LABEL: flrw:
9-
; RV32XTHEADMEMIDX: # %bb.0:
10-
; RV32XTHEADMEMIDX-NEXT: th.flrw fa5, a0, a1, 2
11-
; RV32XTHEADMEMIDX-NEXT: fadd.s fa0, fa5, fa5
12-
; RV32XTHEADMEMIDX-NEXT: ret
13-
;
14-
; RV64XTHEADFMEMIDX-LABEL: flrw:
15-
; RV64XTHEADFMEMIDX: # %bb.0:
16-
; RV64XTHEADFMEMIDX-NEXT: th.flrw fa5, a0, a1, 2
17-
; RV64XTHEADFMEMIDX-NEXT: fadd.s fa0, fa5, fa5
18-
; RV64XTHEADFMEMIDX-NEXT: ret
19-
%1 = getelementptr float, ptr %a, i64 %b
7+
define float @flrw(ptr %a, iXLen %b) {
8+
; CHECK-LABEL: flrw:
9+
; CHECK: # %bb.0:
10+
; CHECK-NEXT: th.flrw fa5, a0, a1, 2
11+
; CHECK-NEXT: fadd.s fa0, fa5, fa5
12+
; CHECK-NEXT: ret
13+
%1 = getelementptr float, ptr %a, iXLen %b
2014
%2 = load float, ptr %1, align 4
2115
%3 = fadd float %2, %2
2216
ret float %3
2317
}
2418

2519
define float @flurw(ptr %a, i32 %b) {
26-
; RV32XTHEADMEMIDX-LABEL: flurw:
27-
; RV32XTHEADMEMIDX: # %bb.0:
28-
; RV32XTHEADMEMIDX-NEXT: th.flrw fa5, a0, a1, 2
29-
; RV32XTHEADMEMIDX-NEXT: fadd.s fa0, fa5, fa5
30-
; RV32XTHEADMEMIDX-NEXT: ret
20+
; RV32XTHEADFMEMIDX-LABEL: flurw:
21+
; RV32XTHEADFMEMIDX: # %bb.0:
22+
; RV32XTHEADFMEMIDX-NEXT: th.flrw fa5, a0, a1, 2
23+
; RV32XTHEADFMEMIDX-NEXT: fadd.s fa0, fa5, fa5
24+
; RV32XTHEADFMEMIDX-NEXT: ret
3125
;
3226
; RV64XTHEADFMEMIDX-LABEL: flurw:
3327
; RV64XTHEADFMEMIDX: # %bb.0:
@@ -41,30 +35,24 @@ define float @flurw(ptr %a, i32 %b) {
4135
ret float %4
4236
}
4337

44-
define void @fsrw(ptr %a, i64 %b, float %c) {
45-
; RV32XTHEADMEMIDX-LABEL: fsrw:
46-
; RV32XTHEADMEMIDX: # %bb.0:
47-
; RV32XTHEADMEMIDX-NEXT: fadd.s fa5, fa0, fa0
48-
; RV32XTHEADMEMIDX-NEXT: th.fsrw fa5, a0, a1, 2
49-
; RV32XTHEADMEMIDX-NEXT: ret
50-
;
51-
; RV64XTHEADFMEMIDX-LABEL: fsrw:
52-
; RV64XTHEADFMEMIDX: # %bb.0:
53-
; RV64XTHEADFMEMIDX-NEXT: fadd.s fa5, fa0, fa0
54-
; RV64XTHEADFMEMIDX-NEXT: th.fsrw fa5, a0, a1, 2
55-
; RV64XTHEADFMEMIDX-NEXT: ret
38+
define void @fsrw(ptr %a, iXLen %b, float %c) {
39+
; CHECK-LABEL: fsrw:
40+
; CHECK: # %bb.0:
41+
; CHECK-NEXT: fadd.s fa5, fa0, fa0
42+
; CHECK-NEXT: th.fsrw fa5, a0, a1, 2
43+
; CHECK-NEXT: ret
5644
%1 = fadd float %c, %c
57-
%2 = getelementptr float, ptr %a, i64 %b
45+
%2 = getelementptr float, ptr %a, iXLen %b
5846
store float %1, ptr %2, align 4
5947
ret void
6048
}
6149

6250
define void @fsurw(ptr %a, i32 %b, float %c) {
63-
; RV32XTHEADMEMIDX-LABEL: fsurw:
64-
; RV32XTHEADMEMIDX: # %bb.0:
65-
; RV32XTHEADMEMIDX-NEXT: fadd.s fa5, fa0, fa0
66-
; RV32XTHEADMEMIDX-NEXT: th.fsrw fa5, a0, a1, 2
67-
; RV32XTHEADMEMIDX-NEXT: ret
51+
; RV32XTHEADFMEMIDX-LABEL: fsurw:
52+
; RV32XTHEADFMEMIDX: # %bb.0:
53+
; RV32XTHEADFMEMIDX-NEXT: fadd.s fa5, fa0, fa0
54+
; RV32XTHEADFMEMIDX-NEXT: th.fsrw fa5, a0, a1, 2
55+
; RV32XTHEADFMEMIDX-NEXT: ret
6856
;
6957
; RV64XTHEADFMEMIDX-LABEL: fsurw:
7058
; RV64XTHEADFMEMIDX: # %bb.0:
@@ -78,30 +66,24 @@ define void @fsurw(ptr %a, i32 %b, float %c) {
7866
ret void
7967
}
8068

81-
define double @flrd(ptr %a, i64 %b) {
82-
; RV32XTHEADMEMIDX-LABEL: flrd:
83-
; RV32XTHEADMEMIDX: # %bb.0:
84-
; RV32XTHEADMEMIDX-NEXT: th.flrd fa5, a0, a1, 3
85-
; RV32XTHEADMEMIDX-NEXT: fadd.d fa0, fa5, fa5
86-
; RV32XTHEADMEMIDX-NEXT: ret
87-
;
88-
; RV64XTHEADFMEMIDX-LABEL: flrd:
89-
; RV64XTHEADFMEMIDX: # %bb.0:
90-
; RV64XTHEADFMEMIDX-NEXT: th.flrd fa5, a0, a1, 3
91-
; RV64XTHEADFMEMIDX-NEXT: fadd.d fa0, fa5, fa5
92-
; RV64XTHEADFMEMIDX-NEXT: ret
93-
%1 = getelementptr double, ptr %a, i64 %b
69+
define double @flrd(ptr %a, iXLen %b) {
70+
; CHECK-LABEL: flrd:
71+
; CHECK: # %bb.0:
72+
; CHECK-NEXT: th.flrd fa5, a0, a1, 3
73+
; CHECK-NEXT: fadd.d fa0, fa5, fa5
74+
; CHECK-NEXT: ret
75+
%1 = getelementptr double, ptr %a, iXLen %b
9476
%2 = load double, ptr %1, align 8
9577
%3 = fadd double %2, %2
9678
ret double %3
9779
}
9880

9981
define double @flurd(ptr %a, i32 %b) {
100-
; RV32XTHEADMEMIDX-LABEL: flurd:
101-
; RV32XTHEADMEMIDX: # %bb.0:
102-
; RV32XTHEADMEMIDX-NEXT: th.flrd fa5, a0, a1, 3
103-
; RV32XTHEADMEMIDX-NEXT: fadd.d fa0, fa5, fa5
104-
; RV32XTHEADMEMIDX-NEXT: ret
82+
; RV32XTHEADFMEMIDX-LABEL: flurd:
83+
; RV32XTHEADFMEMIDX: # %bb.0:
84+
; RV32XTHEADFMEMIDX-NEXT: th.flrd fa5, a0, a1, 3
85+
; RV32XTHEADFMEMIDX-NEXT: fadd.d fa0, fa5, fa5
86+
; RV32XTHEADFMEMIDX-NEXT: ret
10587
;
10688
; RV64XTHEADFMEMIDX-LABEL: flurd:
10789
; RV64XTHEADFMEMIDX: # %bb.0:
@@ -115,30 +97,24 @@ define double @flurd(ptr %a, i32 %b) {
11597
ret double %4
11698
}
11799

118-
define void @fsrd(ptr %a, i64 %b, double %c) {
119-
; RV32XTHEADMEMIDX-LABEL: fsrd:
120-
; RV32XTHEADMEMIDX: # %bb.0:
121-
; RV32XTHEADMEMIDX-NEXT: fadd.d fa5, fa0, fa0
122-
; RV32XTHEADMEMIDX-NEXT: th.fsrd fa5, a0, a1, 3
123-
; RV32XTHEADMEMIDX-NEXT: ret
124-
;
125-
; RV64XTHEADFMEMIDX-LABEL: fsrd:
126-
; RV64XTHEADFMEMIDX: # %bb.0:
127-
; RV64XTHEADFMEMIDX-NEXT: fadd.d fa5, fa0, fa0
128-
; RV64XTHEADFMEMIDX-NEXT: th.fsrd fa5, a0, a1, 3
129-
; RV64XTHEADFMEMIDX-NEXT: ret
100+
define void @fsrd(ptr %a, iXLen %b, double %c) {
101+
; CHECK-LABEL: fsrd:
102+
; CHECK: # %bb.0:
103+
; CHECK-NEXT: fadd.d fa5, fa0, fa0
104+
; CHECK-NEXT: th.fsrd fa5, a0, a1, 3
105+
; CHECK-NEXT: ret
130106
%1 = fadd double %c, %c
131-
%2 = getelementptr double, ptr %a, i64 %b
107+
%2 = getelementptr double, ptr %a, iXLen %b
132108
store double %1, ptr %2, align 8
133109
ret void
134110
}
135111

136112
define void @fsurd(ptr %a, i32 %b, double %c) {
137-
; RV32XTHEADMEMIDX-LABEL: fsurd:
138-
; RV32XTHEADMEMIDX: # %bb.0:
139-
; RV32XTHEADMEMIDX-NEXT: fadd.d fa5, fa0, fa0
140-
; RV32XTHEADMEMIDX-NEXT: th.fsrd fa5, a0, a1, 3
141-
; RV32XTHEADMEMIDX-NEXT: ret
113+
; RV32XTHEADFMEMIDX-LABEL: fsurd:
114+
; RV32XTHEADFMEMIDX: # %bb.0:
115+
; RV32XTHEADFMEMIDX-NEXT: fadd.d fa5, fa0, fa0
116+
; RV32XTHEADFMEMIDX-NEXT: th.fsrd fa5, a0, a1, 3
117+
; RV32XTHEADFMEMIDX-NEXT: ret
142118
;
143119
; RV64XTHEADFMEMIDX-LABEL: fsurd:
144120
; RV64XTHEADFMEMIDX: # %bb.0:

0 commit comments

Comments
 (0)