Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
106 changes: 33 additions & 73 deletions llvm/test/CodeGen/RISCV/rv32xandesperf.ll
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc -O0 -mtriple=riscv32 -mattr=+xandesperf -verify-machineinstrs < %s \
; RUN: llc -mtriple=riscv32 -mattr=+xandesperf -verify-machineinstrs < %s \
; RUN: | FileCheck %s

; NDS.BBC
Expand All @@ -8,15 +8,14 @@ define i32 @bbc(i32 %a) nounwind {
; CHECK-LABEL: bbc:
; CHECK: # %bb.0:
; CHECK-NEXT: nds.bbc a0, 16, .LBB0_2
; CHECK-NEXT: j .LBB0_1
; CHECK-NEXT: .LBB0_1: # %f
; CHECK-NEXT: li a0, 0
; CHECK-NEXT: ret
; CHECK-NEXT: .LBB0_2: # %t
; CHECK-NEXT: # %bb.1: # %t
; CHECK-NEXT: li a0, 1
; CHECK-NEXT: ret
; CHECK-NEXT: .LBB0_2: # %f
; CHECK-NEXT: li a0, 0
; CHECK-NEXT: ret
%and = and i32 %a, 65536
%tst = icmp eq i32 %and, 0
%tst = icmp ne i32 %and, 0
br i1 %tst, label %t, label %f
f:
ret i32 0
Expand All @@ -27,16 +26,11 @@ t:
define i32 @select_bbc(i32 %a, i32 %b, i32 %c) nounwind {
; CHECK-LABEL: select_bbc:
; CHECK: # %bb.0:
; CHECK-NEXT: addi sp, sp, -16
; CHECK-NEXT: sw a2, 8(sp) # 4-byte Folded Spill
; CHECK-NEXT: sw a1, 12(sp) # 4-byte Folded Spill
; CHECK-NEXT: nds.bbc a0, 16, .LBB1_2
; CHECK-NEXT: # %bb.1:
; CHECK-NEXT: lw a0, 8(sp) # 4-byte Folded Reload
; CHECK-NEXT: sw a0, 12(sp) # 4-byte Folded Spill
; CHECK-NEXT: mv a1, a2
; CHECK-NEXT: .LBB1_2:
; CHECK-NEXT: lw a0, 12(sp) # 4-byte Folded Reload
; CHECK-NEXT: addi sp, sp, 16
; CHECK-NEXT: mv a0, a1
; CHECK-NEXT: ret
%and = and i32 %a, 65536
%tst = icmp eq i32 %and, 0
Expand All @@ -50,15 +44,14 @@ define i32 @bbs(i32 %a) nounwind {
; CHECK-LABEL: bbs:
; CHECK: # %bb.0:
; CHECK-NEXT: nds.bbs a0, 16, .LBB2_2
; CHECK-NEXT: j .LBB2_1
; CHECK-NEXT: .LBB2_1: # %f
; CHECK-NEXT: li a0, 0
; CHECK-NEXT: ret
; CHECK-NEXT: .LBB2_2: # %t
; CHECK-NEXT: # %bb.1: # %t
; CHECK-NEXT: li a0, 1
; CHECK-NEXT: ret
; CHECK-NEXT: .LBB2_2: # %f
; CHECK-NEXT: li a0, 0
; CHECK-NEXT: ret
%and = and i32 %a, 65536
%tst = icmp ne i32 %and, 0
%tst = icmp eq i32 %and, 0
br i1 %tst, label %t, label %f
f:
ret i32 0
Expand All @@ -69,16 +62,11 @@ t:
define i32 @select_bbs(i32 %a, i32 %b, i32 %c) nounwind {
; CHECK-LABEL: select_bbs:
; CHECK: # %bb.0:
; CHECK-NEXT: addi sp, sp, -16
; CHECK-NEXT: sw a2, 8(sp) # 4-byte Folded Spill
; CHECK-NEXT: sw a1, 12(sp) # 4-byte Folded Spill
; CHECK-NEXT: nds.bbs a0, 16, .LBB3_2
; CHECK-NEXT: # %bb.1:
; CHECK-NEXT: lw a0, 8(sp) # 4-byte Folded Reload
; CHECK-NEXT: sw a0, 12(sp) # 4-byte Folded Spill
; CHECK-NEXT: mv a1, a2
; CHECK-NEXT: .LBB3_2:
; CHECK-NEXT: lw a0, 12(sp) # 4-byte Folded Reload
; CHECK-NEXT: addi sp, sp, 16
; CHECK-NEXT: mv a0, a1
; CHECK-NEXT: ret
%and = and i32 %a, 65536
%tst = icmp ne i32 %and, 0
Expand All @@ -92,14 +80,13 @@ define i32 @beqc(i32 %a) nounwind {
; CHECK-LABEL: beqc:
; CHECK: # %bb.0:
; CHECK-NEXT: nds.beqc a0, 5, .LBB4_2
; CHECK-NEXT: j .LBB4_1
; CHECK-NEXT: .LBB4_1: # %f
; CHECK-NEXT: li a0, 0
; CHECK-NEXT: ret
; CHECK-NEXT: .LBB4_2: # %t
; CHECK-NEXT: # %bb.1: # %t
; CHECK-NEXT: li a0, 1
; CHECK-NEXT: ret
%tst = icmp eq i32 %a, 5
; CHECK-NEXT: .LBB4_2: # %f
; CHECK-NEXT: li a0, 0
; CHECK-NEXT: ret
%tst = icmp ne i32 %a, 5
br i1 %tst, label %t, label %f
f:
ret i32 0
Expand All @@ -110,16 +97,11 @@ t:
define i32 @select_beqc(i32 %a, i32 %b, i32 %c) nounwind {
; CHECK-LABEL: select_beqc:
; CHECK: # %bb.0:
; CHECK-NEXT: addi sp, sp, -16
; CHECK-NEXT: sw a2, 8(sp) # 4-byte Folded Spill
; CHECK-NEXT: sw a1, 12(sp) # 4-byte Folded Spill
; CHECK-NEXT: nds.beqc a0, 5, .LBB5_2
; CHECK-NEXT: # %bb.1:
; CHECK-NEXT: lw a0, 8(sp) # 4-byte Folded Reload
; CHECK-NEXT: sw a0, 12(sp) # 4-byte Folded Spill
; CHECK-NEXT: mv a1, a2
; CHECK-NEXT: .LBB5_2:
; CHECK-NEXT: lw a0, 12(sp) # 4-byte Folded Reload
; CHECK-NEXT: addi sp, sp, 16
; CHECK-NEXT: mv a0, a1
; CHECK-NEXT: ret
%tst = icmp eq i32 %a, 5
%ret = select i1 %tst, i32 %b, i32 %c
Expand All @@ -132,14 +114,13 @@ define i32 @bnec(i32 %a) nounwind {
; CHECK-LABEL: bnec:
; CHECK: # %bb.0:
; CHECK-NEXT: nds.bnec a0, 5, .LBB6_2
; CHECK-NEXT: j .LBB6_1
; CHECK-NEXT: .LBB6_1: # %f
; CHECK-NEXT: li a0, 0
; CHECK-NEXT: ret
; CHECK-NEXT: .LBB6_2: # %t
; CHECK-NEXT: # %bb.1: # %t
; CHECK-NEXT: li a0, 1
; CHECK-NEXT: ret
%tst = icmp ne i32 %a, 5
; CHECK-NEXT: .LBB6_2: # %f
; CHECK-NEXT: li a0, 0
; CHECK-NEXT: ret
%tst = icmp eq i32 %a, 5
br i1 %tst, label %t, label %f
f:
ret i32 0
Expand All @@ -150,16 +131,11 @@ t:
define i32 @select_bnec(i32 %a, i32 %b, i32 %c) nounwind {
; CHECK-LABEL: select_bnec:
; CHECK: # %bb.0:
; CHECK-NEXT: addi sp, sp, -16
; CHECK-NEXT: sw a2, 8(sp) # 4-byte Folded Spill
; CHECK-NEXT: sw a1, 12(sp) # 4-byte Folded Spill
; CHECK-NEXT: nds.bnec a0, 5, .LBB7_2
; CHECK-NEXT: # %bb.1:
; CHECK-NEXT: lw a0, 8(sp) # 4-byte Folded Reload
; CHECK-NEXT: sw a0, 12(sp) # 4-byte Folded Spill
; CHECK-NEXT: mv a1, a2
; CHECK-NEXT: .LBB7_2:
; CHECK-NEXT: lw a0, 12(sp) # 4-byte Folded Reload
; CHECK-NEXT: addi sp, sp, 16
; CHECK-NEXT: mv a0, a1
; CHECK-NEXT: ret
%tst = icmp ne i32 %a, 5
%ret = select i1 %tst, i32 %b, i32 %c
Expand All @@ -182,7 +158,6 @@ define i32 @bfoz_from_and_i32(i32 %x) {
define i64 @bfoz_from_and_i64(i64 %x) {
; CHECK-LABEL: bfoz_from_and_i64:
; CHECK: # %bb.0:
; CHECK-NEXT: # kill: def $x11 killed $x10
; CHECK-NEXT: nds.bfoz a0, a0, 11, 0
; CHECK-NEXT: li a1, 0
; CHECK-NEXT: ret
Expand All @@ -203,7 +178,6 @@ define i32 @bfoz_from_and_lshr_i32(i32 %x) {
define i64 @bfoz_from_and_lshr_i64(i64 %x) {
; CHECK-LABEL: bfoz_from_and_lshr_i64:
; CHECK: # %bb.0:
; CHECK-NEXT: # kill: def $x12 killed $x11
; CHECK-NEXT: nds.bfoz a0, a1, 25, 14
; CHECK-NEXT: li a1, 0
; CHECK-NEXT: ret
Expand All @@ -225,8 +199,6 @@ define i32 @bfoz_from_lshr_and_i32(i32 %x) {
define i64 @bfoz_from_lshr_and_i64(i64 %x) {
; CHECK-LABEL: bfoz_from_lshr_and_i64:
; CHECK: # %bb.0:
; CHECK-NEXT: # kill: def $x12 killed $x11
; CHECK-NEXT: # kill: def $x12 killed $x10
; CHECK-NEXT: andi a1, a1, 15
; CHECK-NEXT: srli a0, a0, 24
; CHECK-NEXT: slli a1, a1, 8
Expand Down Expand Up @@ -299,7 +271,6 @@ define i32 @bfos_from_ashr_shl_i32(i32 %x) {
define i32 @bfos_from_ashr_sexti8_i32(i8 %x) {
; CHECK-LABEL: bfos_from_ashr_sexti8_i32:
; CHECK: # %bb.0:
; CHECK-NEXT: # kill: def $x11 killed $x10
; CHECK-NEXT: nds.bfos a0, a0, 7, 5
; CHECK-NEXT: ret
%sext = sext i8 %x to i32
Expand All @@ -310,7 +281,6 @@ define i32 @bfos_from_ashr_sexti8_i32(i8 %x) {
define i32 @bfos_from_ashr_sexti16_i32(i16 %x) {
; CHECK-LABEL: bfos_from_ashr_sexti16_i32:
; CHECK: # %bb.0:
; CHECK-NEXT: # kill: def $x11 killed $x10
; CHECK-NEXT: nds.bfos a0, a0, 15, 11
; CHECK-NEXT: ret
%sext = sext i16 %x to i32
Expand Down Expand Up @@ -357,7 +327,6 @@ define i32 @sexti1_i32(i32 %a) {
define i32 @sexti1_i32_2(i1 %a) {
; CHECK-LABEL: sexti1_i32_2:
; CHECK: # %bb.0:
; CHECK-NEXT: # kill: def $x11 killed $x10
; CHECK-NEXT: nds.bfos a0, a0, 0, 0
; CHECK-NEXT: ret
%1 = sext i1 %a to i32
Expand Down Expand Up @@ -390,7 +359,6 @@ define i32 @sexti8_i32(i32 %a) {
define i32 @sexti8_i32_2(i8 %a) {
; CHECK-LABEL: sexti8_i32_2:
; CHECK: # %bb.0:
; CHECK-NEXT: # kill: def $x11 killed $x10
; CHECK-NEXT: nds.bfos a0, a0, 7, 0
; CHECK-NEXT: ret
%1 = sext i8 %a to i32
Expand All @@ -410,7 +378,6 @@ define i32 @sexti16_i32(i32 %a) {
define i32 @sexti16_i32_2(i16 %a) {
; CHECK-LABEL: sexti16_i32_2:
; CHECK: # %bb.0:
; CHECK-NEXT: # kill: def $x11 killed $x10
; CHECK-NEXT: nds.bfos a0, a0, 15, 0
; CHECK-NEXT: ret
%1 = sext i16 %a to i32
Expand All @@ -420,9 +387,8 @@ define i32 @sexti16_i32_2(i16 %a) {
define i64 @sexti1_i64(i64 %a) {
; CHECK-LABEL: sexti1_i64:
; CHECK: # %bb.0:
; CHECK-NEXT: # kill: def $x11 killed $x10
; CHECK-NEXT: nds.bfos a1, a0, 0, 0
; CHECK-NEXT: mv a0, a1
; CHECK-NEXT: nds.bfos a0, a0, 0, 0
; CHECK-NEXT: mv a1, a0
; CHECK-NEXT: ret
%shl = shl i64 %a, 63
%shr = ashr exact i64 %shl, 63
Expand All @@ -432,9 +398,8 @@ define i64 @sexti1_i64(i64 %a) {
define i64 @sexti1_i64_2(i1 %a) {
; CHECK-LABEL: sexti1_i64_2:
; CHECK: # %bb.0:
; CHECK-NEXT: # kill: def $x11 killed $x10
; CHECK-NEXT: nds.bfos a1, a0, 0, 0
; CHECK-NEXT: mv a0, a1
; CHECK-NEXT: nds.bfos a0, a0, 0, 0
; CHECK-NEXT: mv a1, a0
; CHECK-NEXT: ret
%1 = sext i1 %a to i64
ret i64 %1
Expand All @@ -443,7 +408,6 @@ define i64 @sexti1_i64_2(i1 %a) {
define i64 @sexti8_i64(i64 %a) {
; CHECK-LABEL: sexti8_i64:
; CHECK: # %bb.0:
; CHECK-NEXT: # kill: def $x11 killed $x10
; CHECK-NEXT: nds.bfos a0, a0, 7, 0
; CHECK-NEXT: srai a1, a0, 31
; CHECK-NEXT: ret
Expand All @@ -455,7 +419,6 @@ define i64 @sexti8_i64(i64 %a) {
define i64 @sexti8_i64_2(i8 %a) {
; CHECK-LABEL: sexti8_i64_2:
; CHECK: # %bb.0:
; CHECK-NEXT: # kill: def $x11 killed $x10
; CHECK-NEXT: nds.bfos a0, a0, 7, 0
; CHECK-NEXT: srai a1, a0, 31
; CHECK-NEXT: ret
Expand All @@ -466,7 +429,6 @@ define i64 @sexti8_i64_2(i8 %a) {
define i64 @sexti16_i64(i64 %a) {
; CHECK-LABEL: sexti16_i64:
; CHECK: # %bb.0:
; CHECK-NEXT: # kill: def $x11 killed $x10
; CHECK-NEXT: nds.bfos a0, a0, 15, 0
; CHECK-NEXT: srai a1, a0, 31
; CHECK-NEXT: ret
Expand All @@ -478,7 +440,6 @@ define i64 @sexti16_i64(i64 %a) {
define i64 @sexti16_i64_2(i16 %a) {
; CHECK-LABEL: sexti16_i64_2:
; CHECK: # %bb.0:
; CHECK-NEXT: # kill: def $x11 killed $x10
; CHECK-NEXT: nds.bfos a0, a0, 15, 0
; CHECK-NEXT: srai a1, a0, 31
; CHECK-NEXT: ret
Expand All @@ -489,7 +450,6 @@ define i64 @sexti16_i64_2(i16 %a) {
define i64 @sexti32_i64(i64 %a) {
; CHECK-LABEL: sexti32_i64:
; CHECK: # %bb.0:
; CHECK-NEXT: # kill: def $x11 killed $x10
; CHECK-NEXT: srai a1, a0, 31
; CHECK-NEXT: ret
%shl = shl i64 %a, 32
Expand Down