Skip to content

Commit e353cd8

Browse files
authored
[RISCV] Apply IsSignExtendingOpW = 1 on fcvtmod.w.d (llvm#69633)
Such that RISCVOptWInstrs can eliminate the redundant sign extend.
1 parent 1d8985f commit e353cd8

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

llvm/lib/Target/RISCV/RISCVInstrInfoZfa.td

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ def FROUND_D : FPUnaryOp_r_frm<0b0100001, 0b00100, FPR64, FPR64, "fround.d">,
112112
def FROUNDNX_D : FPUnaryOp_r_frm<0b0100001, 0b00101, FPR64, FPR64, "froundnx.d">,
113113
Sched<[WriteFRoundF64, ReadFRoundF64]>;
114114

115+
let IsSignExtendingOpW = 1 in
115116
def FCVTMOD_W_D
116117
: FPUnaryOp_r_rtz<0b1100001, 0b01000, GPR, FPR64, "fcvtmod.w.d">,
117118
Sched<[WriteFCvtF64ToI32, ReadFCvtF64ToI32]>;
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 3
2+
# RUN: llc -mtriple=riscv64 -mattr='+d,+zfa' -verify-machineinstrs -run-pass=riscv-opt-w-instrs %s -o - | FileCheck %s --check-prefix=CHECK-ZFA
3+
4+
---
5+
name: fcvtmod_w_d
6+
tracksRegLiveness: true
7+
body: |
8+
bb.0.entry:
9+
liveins: $x10, $x11
10+
11+
; CHECK-ZFA-LABEL: name: fcvtmod_w_d
12+
; CHECK-ZFA: liveins: $x10, $x11
13+
; CHECK-ZFA-NEXT: {{ $}}
14+
; CHECK-ZFA-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $x10
15+
; CHECK-ZFA-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
16+
; CHECK-ZFA-NEXT: [[FCVTMOD_W_D:%[0-9]+]]:gpr = nofpexcept FCVTMOD_W_D [[COPY]], 1
17+
; CHECK-ZFA-NEXT: [[ADD:%[0-9]+]]:gpr = ADD [[COPY1]], [[FCVTMOD_W_D]]
18+
; CHECK-ZFA-NEXT: $x10 = COPY [[ADD]]
19+
; CHECK-ZFA-NEXT: $x11 = COPY [[FCVTMOD_W_D]]
20+
; CHECK-ZFA-NEXT: PseudoRET
21+
%0:fpr64 = COPY $x10
22+
%1:gpr = COPY $x11
23+
24+
%2:gpr = nofpexcept FCVTMOD_W_D %0, 1
25+
%3:gpr = ADD %1, %2
26+
%4:gpr = ADDIW %2, 0
27+
$x10 = COPY %3
28+
$x11 = COPY %4
29+
PseudoRET
30+
...

0 commit comments

Comments
 (0)