Skip to content

Commit e4ad111

Browse files
committed
Pre-commit tests
1 parent 9403c2d commit e4ad111

File tree

5 files changed

+239
-0
lines changed

5 files changed

+239
-0
lines changed

llvm/test/CodeGen/RISCV/rv32xandesperf.ll

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -377,6 +377,31 @@ define zeroext i8 @sexti1_i32_setcc(i32 signext %a) {
377377
ret i8 %sext
378378
}
379379

380+
; Make sure we don't use seqz+nds.bfos instead of snez+addi
381+
define i32 @sexti1_i32_setcc_2(i32 %a, i32 %b) {
382+
; CHECK-LABEL: sexti1_i32_setcc_2:
383+
; CHECK: # %bb.0:
384+
; CHECK-NEXT: xor a0, a0, a1
385+
; CHECK-NEXT: seqz a0, a0
386+
; CHECK-NEXT: nds.bfos a0, a0, 0, 0
387+
; CHECK-NEXT: ret
388+
%icmp = icmp eq i32 %a, %b
389+
%sext = sext i1 %icmp to i32
390+
ret i32 %sext
391+
}
392+
393+
; Make sure we don't use nds.bfos instead of neg.
394+
define i32 @sexti1_i32_setcc_3(i32 %a, i32 %b) {
395+
; CHECK-LABEL: sexti1_i32_setcc_3:
396+
; CHECK: # %bb.0:
397+
; CHECK-NEXT: slt a0, a0, a1
398+
; CHECK-NEXT: nds.bfos a0, a0, 0, 0
399+
; CHECK-NEXT: ret
400+
%icmp = icmp slt i32 %a, %b
401+
%sext = sext i1 %icmp to i32
402+
ret i32 %sext
403+
}
404+
380405
define i32 @sexti8_i32(i32 %a) {
381406
; CHECK-LABEL: sexti8_i32:
382407
; CHECK: # %bb.0:

llvm/test/CodeGen/RISCV/rv32xtheadbb.ll

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,44 @@ define zeroext i8 @sexti1_i32_setcc(i32 signext %a) {
334334
ret i8 %sext
335335
}
336336

337+
; Make sure we don't use seqz+th.ext instead of snez+addi
338+
define i32 @sexti1_i32_setcc_2(i32 %a, i32 %b) {
339+
; RV32I-LABEL: sexti1_i32_setcc_2:
340+
; RV32I: # %bb.0:
341+
; RV32I-NEXT: xor a0, a0, a1
342+
; RV32I-NEXT: snez a0, a0
343+
; RV32I-NEXT: addi a0, a0, -1
344+
; RV32I-NEXT: ret
345+
;
346+
; RV32XTHEADBB-LABEL: sexti1_i32_setcc_2:
347+
; RV32XTHEADBB: # %bb.0:
348+
; RV32XTHEADBB-NEXT: xor a0, a0, a1
349+
; RV32XTHEADBB-NEXT: seqz a0, a0
350+
; RV32XTHEADBB-NEXT: th.ext a0, a0, 0, 0
351+
; RV32XTHEADBB-NEXT: ret
352+
%icmp = icmp eq i32 %a, %b
353+
%sext = sext i1 %icmp to i32
354+
ret i32 %sext
355+
}
356+
357+
; Make sure we don't use th.ext instead of neg.
358+
define i32 @sexti1_i32_setcc_3(i32 %a, i32 %b) {
359+
; RV32I-LABEL: sexti1_i32_setcc_3:
360+
; RV32I: # %bb.0:
361+
; RV32I-NEXT: slt a0, a0, a1
362+
; RV32I-NEXT: neg a0, a0
363+
; RV32I-NEXT: ret
364+
;
365+
; RV32XTHEADBB-LABEL: sexti1_i32_setcc_3:
366+
; RV32XTHEADBB: # %bb.0:
367+
; RV32XTHEADBB-NEXT: slt a0, a0, a1
368+
; RV32XTHEADBB-NEXT: th.ext a0, a0, 0, 0
369+
; RV32XTHEADBB-NEXT: ret
370+
%icmp = icmp slt i32 %a, %b
371+
%sext = sext i1 %icmp to i32
372+
ret i32 %sext
373+
}
374+
337375
define i32 @sextb_i32(i32 %a) nounwind {
338376
; RV32I-LABEL: sextb_i32:
339377
; RV32I: # %bb.0:

llvm/test/CodeGen/RISCV/rv64xandesperf.ll

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,31 @@ define zeroext i8 @sexti1_i32_setcc(i32 signext %a) {
290290
ret i8 %sext
291291
}
292292

293+
; Make sure we don't use seqz+nds.bfos instead of snez+addi
294+
define signext i32 @sexti1_i32_setcc_2(i32 signext %a, i32 signext %b) {
295+
; CHECK-LABEL: sexti1_i32_setcc_2:
296+
; CHECK: # %bb.0:
297+
; CHECK-NEXT: xor a0, a0, a1
298+
; CHECK-NEXT: seqz a0, a0
299+
; CHECK-NEXT: nds.bfos a0, a0, 0, 0
300+
; CHECK-NEXT: ret
301+
%icmp = icmp eq i32 %a, %b
302+
%sext = sext i1 %icmp to i32
303+
ret i32 %sext
304+
}
305+
306+
; Make sure we don't use nds.bfos instead of neg.
307+
define signext i32 @sexti1_i32_setcc_3(i32 signext %a, i32 signext %b) {
308+
; CHECK-LABEL: sexti1_i32_setcc_3:
309+
; CHECK: # %bb.0:
310+
; CHECK-NEXT: slt a0, a0, a1
311+
; CHECK-NEXT: nds.bfos a0, a0, 0, 0
312+
; CHECK-NEXT: ret
313+
%icmp = icmp slt i32 %a, %b
314+
%sext = sext i1 %icmp to i32
315+
ret i32 %sext
316+
}
317+
293318
define signext i32 @sexti8_i32(i32 signext %a) {
294319
; CHECK-LABEL: sexti8_i32:
295320
; CHECK: # %bb.0:
@@ -360,6 +385,31 @@ define zeroext i8 @sexti1_i64_setcc(i64 %a) {
360385
ret i8 %sext
361386
}
362387

388+
; Make sure we don't use seqz+nds.bfos instead of snez+addi
389+
define i64 @sexti1_i64_setcc_2(i64 %a, i64 %b) {
390+
; CHECK-LABEL: sexti1_i64_setcc_2:
391+
; CHECK: # %bb.0:
392+
; CHECK-NEXT: xor a0, a0, a1
393+
; CHECK-NEXT: seqz a0, a0
394+
; CHECK-NEXT: nds.bfos a0, a0, 0, 0
395+
; CHECK-NEXT: ret
396+
%icmp = icmp eq i64 %a, %b
397+
%sext = sext i1 %icmp to i64
398+
ret i64 %sext
399+
}
400+
401+
; Make sure we don't use nds.bfos instead of neg.
402+
define i64 @sexti1_i64_setcc_3(i64 %a, i64 %b) {
403+
; CHECK-LABEL: sexti1_i64_setcc_3:
404+
; CHECK: # %bb.0:
405+
; CHECK-NEXT: slt a0, a0, a1
406+
; CHECK-NEXT: nds.bfos a0, a0, 0, 0
407+
; CHECK-NEXT: ret
408+
%icmp = icmp slt i64 %a, %b
409+
%sext = sext i1 %icmp to i64
410+
ret i64 %sext
411+
}
412+
363413
define i64 @sexti8_i64(i64 %a) {
364414
; CHECK-LABEL: sexti8_i64:
365415
; CHECK: # %bb.0:

llvm/test/CodeGen/RISCV/rv64xtheadbb.ll

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -655,6 +655,44 @@ define zeroext i8 @sexti1_i32_setcc(i32 signext %a) {
655655
ret i8 %sext
656656
}
657657

658+
; Make sure we don't use seqz+th.ext instead of snez+addi
659+
define signext i32 @sexti1_i32_setcc_2(i32 signext %a, i32 signext %b) {
660+
; RV64I-LABEL: sexti1_i32_setcc_2:
661+
; RV64I: # %bb.0:
662+
; RV64I-NEXT: xor a0, a0, a1
663+
; RV64I-NEXT: snez a0, a0
664+
; RV64I-NEXT: addi a0, a0, -1
665+
; RV64I-NEXT: ret
666+
;
667+
; RV64XTHEADBB-LABEL: sexti1_i32_setcc_2:
668+
; RV64XTHEADBB: # %bb.0:
669+
; RV64XTHEADBB-NEXT: xor a0, a0, a1
670+
; RV64XTHEADBB-NEXT: seqz a0, a0
671+
; RV64XTHEADBB-NEXT: th.ext a0, a0, 0, 0
672+
; RV64XTHEADBB-NEXT: ret
673+
%icmp = icmp eq i32 %a, %b
674+
%sext = sext i1 %icmp to i32
675+
ret i32 %sext
676+
}
677+
678+
; Make sure we don't use th.ext instead of neg.
679+
define signext i32 @sexti1_i32_setcc_3(i32 signext %a, i32 signext %b) {
680+
; RV64I-LABEL: sexti1_i32_setcc_3:
681+
; RV64I: # %bb.0:
682+
; RV64I-NEXT: slt a0, a0, a1
683+
; RV64I-NEXT: neg a0, a0
684+
; RV64I-NEXT: ret
685+
;
686+
; RV64XTHEADBB-LABEL: sexti1_i32_setcc_3:
687+
; RV64XTHEADBB: # %bb.0:
688+
; RV64XTHEADBB-NEXT: slt a0, a0, a1
689+
; RV64XTHEADBB-NEXT: th.ext a0, a0, 0, 0
690+
; RV64XTHEADBB-NEXT: ret
691+
%icmp = icmp slt i32 %a, %b
692+
%sext = sext i1 %icmp to i32
693+
ret i32 %sext
694+
}
695+
658696
define i64 @sexti1_i64(i64 %a) nounwind {
659697
; RV64I-LABEL: sexti1_i64:
660698
; RV64I: # %bb.0:
@@ -706,6 +744,44 @@ define zeroext i8 @sexti1_i64_setcc(i64 %a) {
706744
ret i8 %sext
707745
}
708746

747+
; Make sure we don't use seqz+th.ext instead of snez+addi
748+
define i64 @sexti1_i64_setcc_2(i64 %a, i64 %b) {
749+
; RV64I-LABEL: sexti1_i64_setcc_2:
750+
; RV64I: # %bb.0:
751+
; RV64I-NEXT: xor a0, a0, a1
752+
; RV64I-NEXT: snez a0, a0
753+
; RV64I-NEXT: addi a0, a0, -1
754+
; RV64I-NEXT: ret
755+
;
756+
; RV64XTHEADBB-LABEL: sexti1_i64_setcc_2:
757+
; RV64XTHEADBB: # %bb.0:
758+
; RV64XTHEADBB-NEXT: xor a0, a0, a1
759+
; RV64XTHEADBB-NEXT: seqz a0, a0
760+
; RV64XTHEADBB-NEXT: th.ext a0, a0, 0, 0
761+
; RV64XTHEADBB-NEXT: ret
762+
%icmp = icmp eq i64 %a, %b
763+
%sext = sext i1 %icmp to i64
764+
ret i64 %sext
765+
}
766+
767+
; Make sure we don't use th.ext instead of neg.
768+
define i64 @sexti1_i64_setcc_3(i64 %a, i64 %b) {
769+
; RV64I-LABEL: sexti1_i64_setcc_3:
770+
; RV64I: # %bb.0:
771+
; RV64I-NEXT: slt a0, a0, a1
772+
; RV64I-NEXT: neg a0, a0
773+
; RV64I-NEXT: ret
774+
;
775+
; RV64XTHEADBB-LABEL: sexti1_i64_setcc_3:
776+
; RV64XTHEADBB: # %bb.0:
777+
; RV64XTHEADBB-NEXT: slt a0, a0, a1
778+
; RV64XTHEADBB-NEXT: th.ext a0, a0, 0, 0
779+
; RV64XTHEADBB-NEXT: ret
780+
%icmp = icmp slt i64 %a, %b
781+
%sext = sext i1 %icmp to i64
782+
ret i64 %sext
783+
}
784+
709785
define signext i32 @sextb_i32(i32 signext %a) nounwind {
710786
; RV64I-LABEL: sextb_i32:
711787
; RV64I: # %bb.0:

llvm/test/CodeGen/RISCV/xqcibm-extract.ll

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,56 @@ define zeroext i8 @sexti1_i32_setcc(i32 signext %a) {
7474
ret i8 %sext
7575
}
7676

77+
; Make sure we don't use seqz+qc.ext instead of snez+addi
78+
define i32 @sexti1_i32_setcc_2(i32 %a, i32 %b) {
79+
; RV32I-LABEL: sexti1_i32_setcc_2:
80+
; RV32I: # %bb.0:
81+
; RV32I-NEXT: xor a0, a0, a1
82+
; RV32I-NEXT: snez a0, a0
83+
; RV32I-NEXT: addi a0, a0, -1
84+
; RV32I-NEXT: ret
85+
;
86+
; RV32XQCIBM-LABEL: sexti1_i32_setcc_2:
87+
; RV32XQCIBM: # %bb.0:
88+
; RV32XQCIBM-NEXT: xor a0, a0, a1
89+
; RV32XQCIBM-NEXT: seqz a0, a0
90+
; RV32XQCIBM-NEXT: qc.ext a0, a0, 1, 0
91+
; RV32XQCIBM-NEXT: ret
92+
;
93+
; RV32XQCIBMZBB-LABEL: sexti1_i32_setcc_2:
94+
; RV32XQCIBMZBB: # %bb.0:
95+
; RV32XQCIBMZBB-NEXT: xor a0, a0, a1
96+
; RV32XQCIBMZBB-NEXT: seqz a0, a0
97+
; RV32XQCIBMZBB-NEXT: qc.ext a0, a0, 1, 0
98+
; RV32XQCIBMZBB-NEXT: ret
99+
%icmp = icmp eq i32 %a, %b
100+
%sext = sext i1 %icmp to i32
101+
ret i32 %sext
102+
}
103+
104+
; Make sure we don't use qc.ext instead of neg.
105+
define i32 @sexti1_i32_setcc_3(i32 %a, i32 %b) {
106+
; RV32I-LABEL: sexti1_i32_setcc_3:
107+
; RV32I: # %bb.0:
108+
; RV32I-NEXT: slt a0, a0, a1
109+
; RV32I-NEXT: neg a0, a0
110+
; RV32I-NEXT: ret
111+
;
112+
; RV32XQCIBM-LABEL: sexti1_i32_setcc_3:
113+
; RV32XQCIBM: # %bb.0:
114+
; RV32XQCIBM-NEXT: slt a0, a0, a1
115+
; RV32XQCIBM-NEXT: qc.ext a0, a0, 1, 0
116+
; RV32XQCIBM-NEXT: ret
117+
;
118+
; RV32XQCIBMZBB-LABEL: sexti1_i32_setcc_3:
119+
; RV32XQCIBMZBB: # %bb.0:
120+
; RV32XQCIBMZBB-NEXT: slt a0, a0, a1
121+
; RV32XQCIBMZBB-NEXT: qc.ext a0, a0, 1, 0
122+
; RV32XQCIBMZBB-NEXT: ret
123+
%icmp = icmp slt i32 %a, %b
124+
%sext = sext i1 %icmp to i32
125+
ret i32 %sext
126+
}
77127

78128
define i32 @sexti8_i32(i8 %a) nounwind {
79129
; RV32I-LABEL: sexti8_i32:

0 commit comments

Comments
 (0)