Skip to content

Commit 36d8b37

Browse files
committed
[RISCV] Add another missed Zbs constant materialization test. NFC
This can be LI+BCLRI+BCLRI.
1 parent c0b5a96 commit 36d8b37

File tree

2 files changed

+110
-0
lines changed

2 files changed

+110
-0
lines changed

llvm/test/CodeGen/RISCV/imm.ll

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4110,3 +4110,70 @@ define i64 @imm64_0x10000100000000() {
41104110
; RV64-REMAT-NEXT: ret
41114111
ret i64 4503603922337792 ; 0x10000100000000
41124112
}
4113+
4114+
define i64 @imm64_0xFF7FFFFF7FFFFFFE() {
4115+
; RV32I-LABEL: imm64_0xFF7FFFFF7FFFFFFE:
4116+
; RV32I: # %bb.0:
4117+
; RV32I-NEXT: lui a0, 524288
4118+
; RV32I-NEXT: addi a0, a0, -1
4119+
; RV32I-NEXT: lui a1, 1046528
4120+
; RV32I-NEXT: addi a1, a1, -1
4121+
; RV32I-NEXT: ret
4122+
;
4123+
; RV64I-LABEL: imm64_0xFF7FFFFF7FFFFFFE:
4124+
; RV64I: # %bb.0:
4125+
; RV64I-NEXT: lui a0, 1044480
4126+
; RV64I-NEXT: addiw a0, a0, -1
4127+
; RV64I-NEXT: slli a0, a0, 31
4128+
; RV64I-NEXT: addi a0, a0, -1
4129+
; RV64I-NEXT: ret
4130+
;
4131+
; RV64IZBA-LABEL: imm64_0xFF7FFFFF7FFFFFFE:
4132+
; RV64IZBA: # %bb.0:
4133+
; RV64IZBA-NEXT: lui a0, 1044480
4134+
; RV64IZBA-NEXT: addiw a0, a0, -1
4135+
; RV64IZBA-NEXT: slli a0, a0, 31
4136+
; RV64IZBA-NEXT: addi a0, a0, -1
4137+
; RV64IZBA-NEXT: ret
4138+
;
4139+
; RV64IZBB-LABEL: imm64_0xFF7FFFFF7FFFFFFE:
4140+
; RV64IZBB: # %bb.0:
4141+
; RV64IZBB-NEXT: lui a0, 1044480
4142+
; RV64IZBB-NEXT: addiw a0, a0, -1
4143+
; RV64IZBB-NEXT: slli a0, a0, 31
4144+
; RV64IZBB-NEXT: addi a0, a0, -1
4145+
; RV64IZBB-NEXT: ret
4146+
;
4147+
; RV64IZBS-LABEL: imm64_0xFF7FFFFF7FFFFFFE:
4148+
; RV64IZBS: # %bb.0:
4149+
; RV64IZBS-NEXT: lui a0, 1044480
4150+
; RV64IZBS-NEXT: addiw a0, a0, -1
4151+
; RV64IZBS-NEXT: slli a0, a0, 31
4152+
; RV64IZBS-NEXT: addi a0, a0, -1
4153+
; RV64IZBS-NEXT: ret
4154+
;
4155+
; RV64IXTHEADBB-LABEL: imm64_0xFF7FFFFF7FFFFFFE:
4156+
; RV64IXTHEADBB: # %bb.0:
4157+
; RV64IXTHEADBB-NEXT: lui a0, 1044480
4158+
; RV64IXTHEADBB-NEXT: addiw a0, a0, -1
4159+
; RV64IXTHEADBB-NEXT: slli a0, a0, 31
4160+
; RV64IXTHEADBB-NEXT: addi a0, a0, -1
4161+
; RV64IXTHEADBB-NEXT: ret
4162+
;
4163+
; RV32-REMAT-LABEL: imm64_0xFF7FFFFF7FFFFFFE:
4164+
; RV32-REMAT: # %bb.0:
4165+
; RV32-REMAT-NEXT: lui a0, 524288
4166+
; RV32-REMAT-NEXT: addi a0, a0, -1
4167+
; RV32-REMAT-NEXT: lui a1, 1046528
4168+
; RV32-REMAT-NEXT: addi a1, a1, -1
4169+
; RV32-REMAT-NEXT: ret
4170+
;
4171+
; RV64-REMAT-LABEL: imm64_0xFF7FFFFF7FFFFFFE:
4172+
; RV64-REMAT: # %bb.0:
4173+
; RV64-REMAT-NEXT: lui a0, 1044480
4174+
; RV64-REMAT-NEXT: addiw a0, a0, -1
4175+
; RV64-REMAT-NEXT: slli a0, a0, 31
4176+
; RV64-REMAT-NEXT: addi a0, a0, -1
4177+
; RV64-REMAT-NEXT: ret
4178+
ret i64 -36028799166447617 ; 0xFF7FFFFF7FFFFFFE
4179+
}

llvm/test/CodeGen/RISCV/rv64-legal-i32/imm.ll

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2699,3 +2699,46 @@ define i64 @imm64_0x10000100000000() {
26992699
; RV64IXTHEADBB-NEXT: ret
27002700
ret i64 4503603922337792 ; 0x10000100000000
27012701
}
2702+
2703+
define i64 @imm64_0xFF7FFFFF7FFFFFFE() {
2704+
; RV64I-LABEL: imm64_0xFF7FFFFF7FFFFFFE:
2705+
; RV64I: # %bb.0:
2706+
; RV64I-NEXT: lui a0, 1044480
2707+
; RV64I-NEXT: addiw a0, a0, -1
2708+
; RV64I-NEXT: slli a0, a0, 31
2709+
; RV64I-NEXT: addi a0, a0, -1
2710+
; RV64I-NEXT: ret
2711+
;
2712+
; RV64IZBA-LABEL: imm64_0xFF7FFFFF7FFFFFFE:
2713+
; RV64IZBA: # %bb.0:
2714+
; RV64IZBA-NEXT: lui a0, 1044480
2715+
; RV64IZBA-NEXT: addiw a0, a0, -1
2716+
; RV64IZBA-NEXT: slli a0, a0, 31
2717+
; RV64IZBA-NEXT: addi a0, a0, -1
2718+
; RV64IZBA-NEXT: ret
2719+
;
2720+
; RV64IZBB-LABEL: imm64_0xFF7FFFFF7FFFFFFE:
2721+
; RV64IZBB: # %bb.0:
2722+
; RV64IZBB-NEXT: lui a0, 1044480
2723+
; RV64IZBB-NEXT: addiw a0, a0, -1
2724+
; RV64IZBB-NEXT: slli a0, a0, 31
2725+
; RV64IZBB-NEXT: addi a0, a0, -1
2726+
; RV64IZBB-NEXT: ret
2727+
;
2728+
; RV64IZBS-LABEL: imm64_0xFF7FFFFF7FFFFFFE:
2729+
; RV64IZBS: # %bb.0:
2730+
; RV64IZBS-NEXT: lui a0, 1044480
2731+
; RV64IZBS-NEXT: addiw a0, a0, -1
2732+
; RV64IZBS-NEXT: slli a0, a0, 31
2733+
; RV64IZBS-NEXT: addi a0, a0, -1
2734+
; RV64IZBS-NEXT: ret
2735+
;
2736+
; RV64IXTHEADBB-LABEL: imm64_0xFF7FFFFF7FFFFFFE:
2737+
; RV64IXTHEADBB: # %bb.0:
2738+
; RV64IXTHEADBB-NEXT: lui a0, 1044480
2739+
; RV64IXTHEADBB-NEXT: addiw a0, a0, -1
2740+
; RV64IXTHEADBB-NEXT: slli a0, a0, 31
2741+
; RV64IXTHEADBB-NEXT: addi a0, a0, -1
2742+
; RV64IXTHEADBB-NEXT: ret
2743+
ret i64 -36028799166447617 ; 0xFF7FFFFF7FFFFFFE
2744+
}

0 commit comments

Comments
 (0)