Skip to content

Commit 405c31f

Browse files
committed
[RISCV][test] Add i64 materialization tests for BSETI
1 parent e83c803 commit 405c31f

File tree

2 files changed

+155
-0
lines changed

2 files changed

+155
-0
lines changed

llvm/test/CodeGen/RISCV/imm.ll

Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4637,3 +4637,129 @@ define i64 @imm64_0xFF7FFFFF7FFFFFFE() {
46374637
; RV64-REMAT-NEXT: ret
46384638
ret i64 -36028799166447617 ; 0xFF7FFFFF7FFFFFFE
46394639
}
4640+
4641+
define i64 @imm64_0xFFFFFFFF0() {
4642+
; RV32I-LABEL: imm64_0xFFFFFFFF0:
4643+
; RV32I: # %bb.0:
4644+
; RV32I-NEXT: li a0, -16
4645+
; RV32I-NEXT: li a1, 15
4646+
; RV32I-NEXT: ret
4647+
;
4648+
; RV32IXQCILI-LABEL: imm64_0xFFFFFFFF0:
4649+
; RV32IXQCILI: # %bb.0:
4650+
; RV32IXQCILI-NEXT: li a0, -16
4651+
; RV32IXQCILI-NEXT: li a1, 15
4652+
; RV32IXQCILI-NEXT: ret
4653+
;
4654+
; RV64I-LABEL: imm64_0xFFFFFFFF0:
4655+
; RV64I: # %bb.0:
4656+
; RV64I-NEXT: li a0, 1
4657+
; RV64I-NEXT: slli a0, a0, 36
4658+
; RV64I-NEXT: addi a0, a0, -16
4659+
; RV64I-NEXT: ret
4660+
;
4661+
; RV64IZBA-LABEL: imm64_0xFFFFFFFF0:
4662+
; RV64IZBA: # %bb.0:
4663+
; RV64IZBA-NEXT: li a0, 1
4664+
; RV64IZBA-NEXT: slli a0, a0, 36
4665+
; RV64IZBA-NEXT: addi a0, a0, -16
4666+
; RV64IZBA-NEXT: ret
4667+
;
4668+
; RV64IZBB-LABEL: imm64_0xFFFFFFFF0:
4669+
; RV64IZBB: # %bb.0:
4670+
; RV64IZBB-NEXT: li a0, 1
4671+
; RV64IZBB-NEXT: slli a0, a0, 36
4672+
; RV64IZBB-NEXT: addi a0, a0, -16
4673+
; RV64IZBB-NEXT: ret
4674+
;
4675+
; RV64IZBS-LABEL: imm64_0xFFFFFFFF0:
4676+
; RV64IZBS: # %bb.0:
4677+
; RV64IZBS-NEXT: li a0, 1
4678+
; RV64IZBS-NEXT: slli a0, a0, 36
4679+
; RV64IZBS-NEXT: addi a0, a0, -16
4680+
; RV64IZBS-NEXT: ret
4681+
;
4682+
; RV64IXTHEADBB-LABEL: imm64_0xFFFFFFFF0:
4683+
; RV64IXTHEADBB: # %bb.0:
4684+
; RV64IXTHEADBB-NEXT: li a0, 1
4685+
; RV64IXTHEADBB-NEXT: slli a0, a0, 36
4686+
; RV64IXTHEADBB-NEXT: addi a0, a0, -16
4687+
; RV64IXTHEADBB-NEXT: ret
4688+
;
4689+
; RV32-REMAT-LABEL: imm64_0xFFFFFFFF0:
4690+
; RV32-REMAT: # %bb.0:
4691+
; RV32-REMAT-NEXT: li a0, -16
4692+
; RV32-REMAT-NEXT: li a1, 15
4693+
; RV32-REMAT-NEXT: ret
4694+
;
4695+
; RV64-REMAT-LABEL: imm64_0xFFFFFFFF0:
4696+
; RV64-REMAT: # %bb.0:
4697+
; RV64-REMAT-NEXT: li a0, 1
4698+
; RV64-REMAT-NEXT: slli a0, a0, 36
4699+
; RV64-REMAT-NEXT: addi a0, a0, -16
4700+
; RV64-REMAT-NEXT: ret
4701+
ret i64 68719476720 ; 0xFFFFFFFF0
4702+
}
4703+
4704+
define i64 @imm64_0x1FFFFFF08() {
4705+
; RV32I-LABEL: imm64_0x1FFFFFF08:
4706+
; RV32I: # %bb.0:
4707+
; RV32I-NEXT: li a0, -248
4708+
; RV32I-NEXT: li a1, 1
4709+
; RV32I-NEXT: ret
4710+
;
4711+
; RV32IXQCILI-LABEL: imm64_0x1FFFFFF08:
4712+
; RV32IXQCILI: # %bb.0:
4713+
; RV32IXQCILI-NEXT: li a0, -248
4714+
; RV32IXQCILI-NEXT: li a1, 1
4715+
; RV32IXQCILI-NEXT: ret
4716+
;
4717+
; RV64I-LABEL: imm64_0x1FFFFFF08:
4718+
; RV64I: # %bb.0:
4719+
; RV64I-NEXT: li a0, 1
4720+
; RV64I-NEXT: slli a0, a0, 33
4721+
; RV64I-NEXT: addi a0, a0, -248
4722+
; RV64I-NEXT: ret
4723+
;
4724+
; RV64IZBA-LABEL: imm64_0x1FFFFFF08:
4725+
; RV64IZBA: # %bb.0:
4726+
; RV64IZBA-NEXT: li a0, 1
4727+
; RV64IZBA-NEXT: slli a0, a0, 33
4728+
; RV64IZBA-NEXT: addi a0, a0, -248
4729+
; RV64IZBA-NEXT: ret
4730+
;
4731+
; RV64IZBB-LABEL: imm64_0x1FFFFFF08:
4732+
; RV64IZBB: # %bb.0:
4733+
; RV64IZBB-NEXT: li a0, 1
4734+
; RV64IZBB-NEXT: slli a0, a0, 33
4735+
; RV64IZBB-NEXT: addi a0, a0, -248
4736+
; RV64IZBB-NEXT: ret
4737+
;
4738+
; RV64IZBS-LABEL: imm64_0x1FFFFFF08:
4739+
; RV64IZBS: # %bb.0:
4740+
; RV64IZBS-NEXT: li a0, 1
4741+
; RV64IZBS-NEXT: slli a0, a0, 33
4742+
; RV64IZBS-NEXT: addi a0, a0, -248
4743+
; RV64IZBS-NEXT: ret
4744+
;
4745+
; RV64IXTHEADBB-LABEL: imm64_0x1FFFFFF08:
4746+
; RV64IXTHEADBB: # %bb.0:
4747+
; RV64IXTHEADBB-NEXT: li a0, 1
4748+
; RV64IXTHEADBB-NEXT: slli a0, a0, 33
4749+
; RV64IXTHEADBB-NEXT: addi a0, a0, -248
4750+
; RV64IXTHEADBB-NEXT: ret
4751+
;
4752+
; RV32-REMAT-LABEL: imm64_0x1FFFFFF08:
4753+
; RV32-REMAT: # %bb.0:
4754+
; RV32-REMAT-NEXT: li a0, -248
4755+
; RV32-REMAT-NEXT: li a1, 1
4756+
; RV32-REMAT-NEXT: ret
4757+
;
4758+
; RV64-REMAT-LABEL: imm64_0x1FFFFFF08:
4759+
; RV64-REMAT: # %bb.0:
4760+
; RV64-REMAT-NEXT: li a0, 1
4761+
; RV64-REMAT-NEXT: slli a0, a0, 33
4762+
; RV64-REMAT-NEXT: addi a0, a0, -248
4763+
; RV64-REMAT-NEXT: ret
4764+
ret i64 8589934344 ; 0x1FFFFFF08
4765+
}

llvm/test/CodeGen/RISCV/zbb-logic-neg-imm.ll

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -385,3 +385,32 @@ define i64 @xornofff(i64 %x) {
385385
%xor = xor i64 %x, -1152921504606846721
386386
ret i64 %xor
387387
}
388+
389+
define i64 @and_or_or(i64 %x, i64 %y) {
390+
; RV32-LABEL: and_or_or:
391+
; RV32: # %bb.0:
392+
; RV32-NEXT: ori a1, a1, -2
393+
; RV32-NEXT: ori a0, a0, 1
394+
; RV32-NEXT: ori a3, a3, 1
395+
; RV32-NEXT: ori a2, a2, -2
396+
; RV32-NEXT: and a0, a0, a2
397+
; RV32-NEXT: and a1, a1, a3
398+
; RV32-NEXT: ret
399+
;
400+
; RV64-LABEL: and_or_or:
401+
; RV64: # %bb.0:
402+
; RV64-NEXT: li a2, -1
403+
; RV64-NEXT: slli a2, a2, 33
404+
; RV64-NEXT: addi a2, a2, 1
405+
; RV64-NEXT: or a0, a0, a2
406+
; RV64-NEXT: li a2, 1
407+
; RV64-NEXT: slli a2, a2, 33
408+
; RV64-NEXT: addi a2, a2, -2
409+
; RV64-NEXT: or a1, a1, a2
410+
; RV64-NEXT: and a0, a0, a1
411+
; RV64-NEXT: ret
412+
%a = or i64 %x, -8589934591
413+
%b = or i64 %y, 8589934590
414+
%c = and i64 %a, %b
415+
ret i64 %c
416+
}

0 commit comments

Comments
 (0)