Skip to content

Commit 5bd65f0

Browse files
committed
[RISCV][test] Add more 64-bit tests in zbb-logic-neg-imm.ll
1 parent d03f35f commit 5bd65f0

File tree

1 file changed

+74
-5
lines changed

1 file changed

+74
-5
lines changed

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

Lines changed: 74 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
; RUN: llc -mtriple=riscv64 -mattr=+zbb -verify-machineinstrs < %s \
55
; RUN: | FileCheck %s --check-prefixes=CHECK,RV64,NOZBS64
66
; RUN: llc -mtriple=riscv32 -mattr=+zbb,+zbs -verify-machineinstrs < %s \
7-
; RUN: | FileCheck %s --check-prefixes=CHECK,RV32,ZBS
7+
; RUN: | FileCheck %s --check-prefixes=CHECK,RV32,ZBS,ZBS32
88
; RUN: llc -mtriple=riscv64 -mattr=+zbb,+zbs -verify-machineinstrs < %s \
9-
; RUN: | FileCheck %s --check-prefixes=CHECK,RV64,ZBS
9+
; RUN: | FileCheck %s --check-prefixes=CHECK,RV64,ZBS,ZBS64
1010

1111
define i32 @and0xabcdefff(i32 %x) {
1212
; CHECK-LABEL: and0xabcdefff:
@@ -301,16 +301,16 @@ define i64 @andimm64(i64 %x) {
301301
ret i64 %and
302302
}
303303

304-
define i64 @andimm64srli(i64 %x) {
305-
; RV32-LABEL: andimm64srli:
304+
define i64 @orimm64srli(i64 %x) {
305+
; RV32-LABEL: orimm64srli:
306306
; RV32: # %bb.0:
307307
; RV32-NEXT: lui a2, 1040384
308308
; RV32-NEXT: orn a0, a0, a2
309309
; RV32-NEXT: lui a2, 917504
310310
; RV32-NEXT: or a1, a1, a2
311311
; RV32-NEXT: ret
312312
;
313-
; RV64-LABEL: andimm64srli:
313+
; RV64-LABEL: orimm64srli:
314314
; RV64: # %bb.0:
315315
; RV64-NEXT: lui a1, 983040
316316
; RV64-NEXT: srli a1, a1, 3
@@ -319,3 +319,72 @@ define i64 @andimm64srli(i64 %x) {
319319
%or = or i64 %x, -2305843009180139521
320320
ret i64 %or
321321
}
322+
323+
define i64 @andnofff(i64 %x) {
324+
; RV32-LABEL: andnofff:
325+
; RV32: # %bb.0:
326+
; RV32-NEXT: lui a2, 1044480
327+
; RV32-NEXT: and a1, a1, a2
328+
; RV32-NEXT: andi a0, a0, 255
329+
; RV32-NEXT: ret
330+
;
331+
; RV64-LABEL: andnofff:
332+
; RV64: # %bb.0:
333+
; RV64-NEXT: li a1, -1
334+
; RV64-NEXT: slli a1, a1, 56
335+
; RV64-NEXT: addi a1, a1, 255
336+
; RV64-NEXT: and a0, a0, a1
337+
; RV64-NEXT: ret
338+
%and = and i64 %x, -72057594037927681
339+
ret i64 %and
340+
}
341+
342+
define i64 @ornofff(i64 %x) {
343+
; NOZBS32-LABEL: ornofff:
344+
; NOZBS32: # %bb.0:
345+
; NOZBS32-NEXT: lui a2, 524288
346+
; NOZBS32-NEXT: or a1, a1, a2
347+
; NOZBS32-NEXT: ori a0, a0, 2047
348+
; NOZBS32-NEXT: ret
349+
;
350+
; NOZBS64-LABEL: ornofff:
351+
; NOZBS64: # %bb.0:
352+
; NOZBS64-NEXT: li a1, -1
353+
; NOZBS64-NEXT: slli a1, a1, 63
354+
; NOZBS64-NEXT: addi a1, a1, 2047
355+
; NOZBS64-NEXT: or a0, a0, a1
356+
; NOZBS64-NEXT: ret
357+
;
358+
; ZBS32-LABEL: ornofff:
359+
; ZBS32: # %bb.0:
360+
; ZBS32-NEXT: ori a0, a0, 2047
361+
; ZBS32-NEXT: bseti a1, a1, 31
362+
; ZBS32-NEXT: ret
363+
;
364+
; ZBS64-LABEL: ornofff:
365+
; ZBS64: # %bb.0:
366+
; ZBS64-NEXT: ori a0, a0, 2047
367+
; ZBS64-NEXT: bseti a0, a0, 63
368+
; ZBS64-NEXT: ret
369+
%or = or i64 %x, -9223372036854773761
370+
ret i64 %or
371+
}
372+
373+
define i64 @xornofff(i64 %x) {
374+
; RV32-LABEL: xornofff:
375+
; RV32: # %bb.0:
376+
; RV32-NEXT: lui a2, 983040
377+
; RV32-NEXT: xor a1, a1, a2
378+
; RV32-NEXT: xori a0, a0, 255
379+
; RV32-NEXT: ret
380+
;
381+
; RV64-LABEL: xornofff:
382+
; RV64: # %bb.0:
383+
; RV64-NEXT: li a1, -1
384+
; RV64-NEXT: slli a1, a1, 60
385+
; RV64-NEXT: addi a1, a1, 255
386+
; RV64-NEXT: xor a0, a0, a1
387+
; RV64-NEXT: ret
388+
%xor = xor i64 %x, -1152921504606846721
389+
ret i64 %xor
390+
}

0 commit comments

Comments
 (0)