Skip to content

Commit c24c643

Browse files
committed
[RISCV][NFC] Add pre-commit test
1 parent 2b3aa56 commit c24c643

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2+
; RUN: llc -O3 -mtriple=riscv64 -mattr=+f,+d < %s | FileCheck %s
3+
4+
; Make sure WriteFRM is not hoisted out of loop due to dead implicit-def.
5+
6+
define double @foo(double %0, double %1, i64 %n) strictfp {
7+
; CHECK-LABEL: foo:
8+
; CHECK: # %bb.0: # %entry
9+
; CHECK-NEXT: fmv.d.x fa5, zero
10+
; CHECK-NEXT: fsrmi 3
11+
; CHECK-NEXT: fsrmi 0
12+
; CHECK-NEXT: .LBB0_1: # %loop
13+
; CHECK-NEXT: # =>This Inner Loop Header: Depth=1
14+
; CHECK-NEXT: fadd.d fa5, fa5, fa0
15+
; CHECK-NEXT: addi a0, a0, -1
16+
; CHECK-NEXT: fadd.d fa5, fa5, fa1
17+
; CHECK-NEXT: beqz a0, .LBB0_1
18+
; CHECK-NEXT: # %bb.2: # %exit
19+
; CHECK-NEXT: fmv.d fa0, fa5
20+
; CHECK-NEXT: ret
21+
entry:
22+
br label %loop
23+
loop:
24+
%cnt = phi i64 [0, %entry], [%cnt_inc, %loop]
25+
%acc = phi double [0.0, %entry], [%f2, %loop]
26+
call void @llvm.set.rounding(i32 2) strictfp
27+
%f1 = call double @llvm.experimental.constrained.fadd.f64(double %acc, double %0, metadata !"round.dynamic", metadata !"fpexcept.ignore") strictfp
28+
call void @llvm.set.rounding(i32 1) strictfp
29+
%f2 = call double @llvm.experimental.constrained.fadd.f64(double %f1, double %1, metadata !"round.dynamic", metadata !"fpexcept.ignore") strictfp
30+
%cnt_inc = add i64 %cnt, 1
31+
%cond = icmp eq i64 %cnt_inc, %n
32+
br i1 %cond, label %loop, label %exit
33+
exit:
34+
ret double %f2
35+
}

0 commit comments

Comments
 (0)