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
2519define 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
6250define 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
9981define 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
136112define 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