Skip to content

Commit de14b74

Browse files
committed
[RISCV][test] Precommit tests for byte store of -1
Although we can't reduce the number of instructions, if we selected `li rd, -1` instead then this could be encoded in a 16-bit instruction.
1 parent 39d123f commit de14b74

File tree

1 file changed

+64
-10
lines changed

1 file changed

+64
-10
lines changed

llvm/test/CodeGen/RISCV/imm.ll

+64-10
Original file line numberDiff line numberDiff line change
@@ -1558,6 +1558,60 @@ define i64 @imm_2reg_1() nounwind {
15581558
ret i64 -1152921504301427080 ; 0xF000_0000_1234_5678
15591559
}
15601560

1561+
; TODO: Selecting -1 would be better in this case as it can be loaded with a
1562+
; 16 bit instruction when the compressed extension is enabled.
1563+
define void @imm_store_i8_neg1(ptr %p) nounwind {
1564+
; RV32I-LABEL: imm_store_i8_neg1:
1565+
; RV32I: # %bb.0:
1566+
; RV32I-NEXT: li a1, 255
1567+
; RV32I-NEXT: sb a1, 0(a0)
1568+
; RV32I-NEXT: ret
1569+
;
1570+
; RV64I-LABEL: imm_store_i8_neg1:
1571+
; RV64I: # %bb.0:
1572+
; RV64I-NEXT: li a1, 255
1573+
; RV64I-NEXT: sb a1, 0(a0)
1574+
; RV64I-NEXT: ret
1575+
;
1576+
; RV64IZBA-LABEL: imm_store_i8_neg1:
1577+
; RV64IZBA: # %bb.0:
1578+
; RV64IZBA-NEXT: li a1, 255
1579+
; RV64IZBA-NEXT: sb a1, 0(a0)
1580+
; RV64IZBA-NEXT: ret
1581+
;
1582+
; RV64IZBB-LABEL: imm_store_i8_neg1:
1583+
; RV64IZBB: # %bb.0:
1584+
; RV64IZBB-NEXT: li a1, 255
1585+
; RV64IZBB-NEXT: sb a1, 0(a0)
1586+
; RV64IZBB-NEXT: ret
1587+
;
1588+
; RV64IZBS-LABEL: imm_store_i8_neg1:
1589+
; RV64IZBS: # %bb.0:
1590+
; RV64IZBS-NEXT: li a1, 255
1591+
; RV64IZBS-NEXT: sb a1, 0(a0)
1592+
; RV64IZBS-NEXT: ret
1593+
;
1594+
; RV64IXTHEADBB-LABEL: imm_store_i8_neg1:
1595+
; RV64IXTHEADBB: # %bb.0:
1596+
; RV64IXTHEADBB-NEXT: li a1, 255
1597+
; RV64IXTHEADBB-NEXT: sb a1, 0(a0)
1598+
; RV64IXTHEADBB-NEXT: ret
1599+
;
1600+
; RV32-REMAT-LABEL: imm_store_i8_neg1:
1601+
; RV32-REMAT: # %bb.0:
1602+
; RV32-REMAT-NEXT: li a1, 255
1603+
; RV32-REMAT-NEXT: sb a1, 0(a0)
1604+
; RV32-REMAT-NEXT: ret
1605+
;
1606+
; RV64-REMAT-LABEL: imm_store_i8_neg1:
1607+
; RV64-REMAT: # %bb.0:
1608+
; RV64-REMAT-NEXT: li a1, 255
1609+
; RV64-REMAT-NEXT: sb a1, 0(a0)
1610+
; RV64-REMAT-NEXT: ret
1611+
store i8 -1, ptr %p
1612+
ret void
1613+
}
1614+
15611615
define void @imm_store_i16_neg1(ptr %p) nounwind {
15621616
; RV32I-LABEL: imm_store_i16_neg1:
15631617
; RV32I: # %bb.0:
@@ -2121,8 +2175,8 @@ define i64 @imm_70370820078523() {
21212175
;
21222176
; RV64I-POOL-LABEL: imm_70370820078523:
21232177
; RV64I-POOL: # %bb.0:
2124-
; RV64I-POOL-NEXT: lui a0, %hi(.LCPI37_0)
2125-
; RV64I-POOL-NEXT: ld a0, %lo(.LCPI37_0)(a0)
2178+
; RV64I-POOL-NEXT: lui a0, %hi(.LCPI38_0)
2179+
; RV64I-POOL-NEXT: ld a0, %lo(.LCPI38_0)(a0)
21262180
; RV64I-POOL-NEXT: ret
21272181
;
21282182
; RV64IZBA-LABEL: imm_70370820078523:
@@ -2266,8 +2320,8 @@ define i64 @imm_neg_9223301666034697285() {
22662320
;
22672321
; RV64I-POOL-LABEL: imm_neg_9223301666034697285:
22682322
; RV64I-POOL: # %bb.0:
2269-
; RV64I-POOL-NEXT: lui a0, %hi(.LCPI39_0)
2270-
; RV64I-POOL-NEXT: ld a0, %lo(.LCPI39_0)(a0)
2323+
; RV64I-POOL-NEXT: lui a0, %hi(.LCPI40_0)
2324+
; RV64I-POOL-NEXT: ld a0, %lo(.LCPI40_0)(a0)
22712325
; RV64I-POOL-NEXT: ret
22722326
;
22732327
; RV64IZBA-LABEL: imm_neg_9223301666034697285:
@@ -2544,8 +2598,8 @@ define i64 @imm_neg_9223354442718100411() {
25442598
;
25452599
; RV64I-POOL-LABEL: imm_neg_9223354442718100411:
25462600
; RV64I-POOL: # %bb.0:
2547-
; RV64I-POOL-NEXT: lui a0, %hi(.LCPI43_0)
2548-
; RV64I-POOL-NEXT: ld a0, %lo(.LCPI43_0)(a0)
2601+
; RV64I-POOL-NEXT: lui a0, %hi(.LCPI44_0)
2602+
; RV64I-POOL-NEXT: ld a0, %lo(.LCPI44_0)(a0)
25492603
; RV64I-POOL-NEXT: ret
25502604
;
25512605
; RV64IZBA-LABEL: imm_neg_9223354442718100411:
@@ -3855,8 +3909,8 @@ define i64 @imm64_same_lo_hi_optsize() nounwind optsize {
38553909
;
38563910
; RV64I-POOL-LABEL: imm64_same_lo_hi_optsize:
38573911
; RV64I-POOL: # %bb.0:
3858-
; RV64I-POOL-NEXT: lui a0, %hi(.LCPI64_0)
3859-
; RV64I-POOL-NEXT: ld a0, %lo(.LCPI64_0)(a0)
3912+
; RV64I-POOL-NEXT: lui a0, %hi(.LCPI65_0)
3913+
; RV64I-POOL-NEXT: ld a0, %lo(.LCPI65_0)(a0)
38603914
; RV64I-POOL-NEXT: ret
38613915
;
38623916
; RV64IZBA-LABEL: imm64_same_lo_hi_optsize:
@@ -3930,8 +3984,8 @@ define i64 @imm64_same_lo_hi_negative() nounwind {
39303984
;
39313985
; RV64I-POOL-LABEL: imm64_same_lo_hi_negative:
39323986
; RV64I-POOL: # %bb.0:
3933-
; RV64I-POOL-NEXT: lui a0, %hi(.LCPI65_0)
3934-
; RV64I-POOL-NEXT: ld a0, %lo(.LCPI65_0)(a0)
3987+
; RV64I-POOL-NEXT: lui a0, %hi(.LCPI66_0)
3988+
; RV64I-POOL-NEXT: ld a0, %lo(.LCPI66_0)(a0)
39353989
; RV64I-POOL-NEXT: ret
39363990
;
39373991
; RV64IZBA-LABEL: imm64_same_lo_hi_negative:

0 commit comments

Comments
 (0)