Skip to content

Commit 6620376

Browse files
authored
[RISCV] Add CompressPat for c.beqz/bnez with X0 in the first operand. (#69042)
1 parent 343bed8 commit 6620376

File tree

2 files changed

+30
-4
lines changed

2 files changed

+30
-4
lines changed

llvm/lib/Target/RISCV/RISCVInstrInfoC.td

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -956,8 +956,14 @@ def : CompressPat<(JAL X0, simm12_lsb0:$offset),
956956
(C_J simm12_lsb0:$offset)>;
957957
def : CompressPat<(BEQ GPRC:$rs1, X0, simm9_lsb0:$imm),
958958
(C_BEQZ GPRC:$rs1, simm9_lsb0:$imm)>;
959+
let isCompressOnly = true in
960+
def : CompressPat<(BEQ X0, GPRC:$rs1, simm9_lsb0:$imm),
961+
(C_BEQZ GPRC:$rs1, simm9_lsb0:$imm)>;
959962
def : CompressPat<(BNE GPRC:$rs1, X0, simm9_lsb0:$imm),
960963
(C_BNEZ GPRC:$rs1, simm9_lsb0:$imm)>;
964+
let isCompressOnly = true in
965+
def : CompressPat<(BNE X0, GPRC:$rs1, simm9_lsb0:$imm),
966+
(C_BNEZ GPRC:$rs1, simm9_lsb0:$imm)>;
961967
} // Predicates = [HasStdExtCOrZca]
962968

963969
// Quadrant 2

llvm/test/MC/RISCV/compress-rv32i.s

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -154,16 +154,36 @@ jal zero, -2048
154154
# CHECK: # encoding: [0x01,0xd0]
155155
beq s0, zero, -256
156156

157+
# CHECK-BYTES: 01 d0
158+
# CHECK-ALIASASM: beqz s0, -256
159+
# CHECK-ALIASOBJ32: beqz s0, 0xffffff2a
160+
# CHECK-ALIASOBJ64: beqz s0, 0xffffffffffffff2a
161+
# CHECK-INSTASM: c.beqz s0, -256
162+
# CHECK-INSTOBJ32: c.beqz s0, 0xffffff2a
163+
# CHECK-INSTOBJ64: c.beqz s0, 0xffffffffffffff2a
164+
# CHECK: # encoding: [0x01,0xd0]
165+
beq zero, s0, -256
166+
157167
# CHECK-BYTES: 7d ec
158168
# CHECK-ALIASASM: bnez s0, 254
159-
# CHECK-ALIASOBJ32: bnez s0, 0x128
160-
# CHECK-ALIASOBJ64: bnez s0, 0x128
169+
# CHECK-ALIASOBJ32: bnez s0, 0x12a
170+
# CHECK-ALIASOBJ64: bnez s0, 0x12a
161171
# CHECK-INSTASM: c.bnez s0, 254
162-
# CHECK-INSTOBJ32: c.bnez s0, 0x128
163-
# CHECK-INSTOBJ64: c.bnez s0, 0x128
172+
# CHECK-INSTOBJ32: c.bnez s0, 0x12a
173+
# CHECK-INSTOBJ64: c.bnez s0, 0x12a
164174
# CHECK: # encoding: [0x7d,0xec]
165175
bne s0, zero, 254
166176

177+
# CHECK-BYTES: 7d ec
178+
# CHECK-ALIASASM: bnez s0, 254
179+
# CHECK-ALIASOBJ32: bnez s0, 0x12c
180+
# CHECK-ALIASOBJ64: bnez s0, 0x12c
181+
# CHECK-INSTASM: c.bnez s0, 254
182+
# CHECK-INSTOBJ32: c.bnez s0, 0x12c
183+
# CHECK-INSTOBJ64: c.bnez s0, 0x12c
184+
# CHECK: # encoding: [0x7d,0xec]
185+
bne zero, s0, 254
186+
167187
# CHECK-BYTES: 7e 04
168188
# CHECK-ALIAS: slli s0, s0, 31
169189
# CHECK-INST: c.slli s0, 31

0 commit comments

Comments
 (0)