@@ -357,49 +357,14 @@ define i64 @ctpop_i64(i64 %a) nounwind {
357357define i1 @ctpop_i64_ugt_two (i64 %a ) nounwind {
358358; RV32I-LABEL: ctpop_i64_ugt_two:
359359; RV32I: # %bb.0:
360- ; RV32I-NEXT: j .LBB6_2
361- ; RV32I-NEXT: # %bb.1:
362- ; RV32I-NEXT: sltiu a0, zero, 0
363- ; RV32I-NEXT: ret
364- ; RV32I-NEXT: .LBB6_2:
365- ; RV32I-NEXT: srli a2, a0, 1
366- ; RV32I-NEXT: lui a3, 349525
367- ; RV32I-NEXT: lui a4, 209715
368- ; RV32I-NEXT: srli a5, a1, 1
369- ; RV32I-NEXT: addi a3, a3, 1365
370- ; RV32I-NEXT: and a2, a2, a3
371- ; RV32I-NEXT: and a3, a5, a3
372- ; RV32I-NEXT: lui a5, 61681
373- ; RV32I-NEXT: addi a4, a4, 819
374- ; RV32I-NEXT: addi a5, a5, -241
375- ; RV32I-NEXT: sub a0, a0, a2
376- ; RV32I-NEXT: sub a1, a1, a3
377- ; RV32I-NEXT: srli a2, a0, 2
378- ; RV32I-NEXT: and a0, a0, a4
379- ; RV32I-NEXT: srli a3, a1, 2
380- ; RV32I-NEXT: and a1, a1, a4
381- ; RV32I-NEXT: and a2, a2, a4
382- ; RV32I-NEXT: and a3, a3, a4
383- ; RV32I-NEXT: add a0, a2, a0
384- ; RV32I-NEXT: add a1, a3, a1
385- ; RV32I-NEXT: srli a2, a0, 4
386- ; RV32I-NEXT: srli a3, a1, 4
387- ; RV32I-NEXT: add a0, a2, a0
388- ; RV32I-NEXT: add a1, a3, a1
389- ; RV32I-NEXT: and a0, a0, a5
390- ; RV32I-NEXT: and a1, a1, a5
391- ; RV32I-NEXT: slli a2, a0, 8
392- ; RV32I-NEXT: slli a3, a1, 8
393- ; RV32I-NEXT: add a0, a0, a2
394- ; RV32I-NEXT: add a1, a1, a3
395- ; RV32I-NEXT: slli a2, a0, 16
396- ; RV32I-NEXT: slli a3, a1, 16
397- ; RV32I-NEXT: add a0, a0, a2
398- ; RV32I-NEXT: add a1, a1, a3
399- ; RV32I-NEXT: srli a0, a0, 24
400- ; RV32I-NEXT: srli a1, a1, 24
401- ; RV32I-NEXT: add a0, a1, a0
402- ; RV32I-NEXT: sltiu a0, a0, 2
360+ ; RV32I-NEXT: addi a2, a0, -1
361+ ; RV32I-NEXT: addi a3, a1, -1
362+ ; RV32I-NEXT: sltiu a4, a2, -1
363+ ; RV32I-NEXT: add a3, a3, a4
364+ ; RV32I-NEXT: and a0, a0, a2
365+ ; RV32I-NEXT: and a1, a1, a3
366+ ; RV32I-NEXT: or a0, a0, a1
367+ ; RV32I-NEXT: seqz a0, a0
403368; RV32I-NEXT: ret
404369;
405370; RV32ZBB-LABEL: ctpop_i64_ugt_two:
@@ -422,50 +387,14 @@ define i1 @ctpop_i64_ugt_two(i64 %a) nounwind {
422387define i1 @ctpop_i64_ugt_one (i64 %a ) nounwind {
423388; RV32I-LABEL: ctpop_i64_ugt_one:
424389; RV32I: # %bb.0:
425- ; RV32I-NEXT: j .LBB7_2
426- ; RV32I-NEXT: # %bb.1:
427- ; RV32I-NEXT: snez a0, zero
428- ; RV32I-NEXT: ret
429- ; RV32I-NEXT: .LBB7_2:
430- ; RV32I-NEXT: srli a2, a0, 1
431- ; RV32I-NEXT: lui a3, 349525
432- ; RV32I-NEXT: lui a4, 209715
433- ; RV32I-NEXT: srli a5, a1, 1
434- ; RV32I-NEXT: addi a3, a3, 1365
435- ; RV32I-NEXT: and a2, a2, a3
436- ; RV32I-NEXT: and a3, a5, a3
437- ; RV32I-NEXT: lui a5, 61681
438- ; RV32I-NEXT: addi a4, a4, 819
439- ; RV32I-NEXT: addi a5, a5, -241
440- ; RV32I-NEXT: sub a0, a0, a2
441- ; RV32I-NEXT: sub a1, a1, a3
442- ; RV32I-NEXT: srli a2, a0, 2
443- ; RV32I-NEXT: and a0, a0, a4
444- ; RV32I-NEXT: srli a3, a1, 2
445- ; RV32I-NEXT: and a1, a1, a4
446- ; RV32I-NEXT: and a2, a2, a4
447- ; RV32I-NEXT: and a3, a3, a4
448- ; RV32I-NEXT: add a0, a2, a0
449- ; RV32I-NEXT: add a1, a3, a1
450- ; RV32I-NEXT: srli a2, a0, 4
451- ; RV32I-NEXT: srli a3, a1, 4
452- ; RV32I-NEXT: add a0, a2, a0
453- ; RV32I-NEXT: add a1, a3, a1
454- ; RV32I-NEXT: and a0, a0, a5
455- ; RV32I-NEXT: and a1, a1, a5
456- ; RV32I-NEXT: slli a2, a0, 8
457- ; RV32I-NEXT: slli a3, a1, 8
458- ; RV32I-NEXT: add a0, a0, a2
459- ; RV32I-NEXT: add a1, a1, a3
460- ; RV32I-NEXT: slli a2, a0, 16
461- ; RV32I-NEXT: slli a3, a1, 16
462- ; RV32I-NEXT: add a0, a0, a2
463- ; RV32I-NEXT: add a1, a1, a3
464- ; RV32I-NEXT: srli a0, a0, 24
465- ; RV32I-NEXT: srli a1, a1, 24
466- ; RV32I-NEXT: add a0, a1, a0
467- ; RV32I-NEXT: sltiu a0, a0, 2
468- ; RV32I-NEXT: xori a0, a0, 1
390+ ; RV32I-NEXT: addi a2, a0, -1
391+ ; RV32I-NEXT: addi a3, a1, -1
392+ ; RV32I-NEXT: sltiu a4, a2, -1
393+ ; RV32I-NEXT: add a3, a3, a4
394+ ; RV32I-NEXT: and a0, a0, a2
395+ ; RV32I-NEXT: and a1, a1, a3
396+ ; RV32I-NEXT: or a0, a0, a1
397+ ; RV32I-NEXT: snez a0, a0
469398; RV32I-NEXT: ret
470399;
471400; RV32ZBB-LABEL: ctpop_i64_ugt_one:
0 commit comments