Skip to content

Commit cd1e45b

Browse files
committed
[RISCV][test] Add (select c, (1 << N) + 1, 0)
1 parent 1dd94a2 commit cd1e45b

File tree

3 files changed

+115
-0
lines changed

3 files changed

+115
-0
lines changed

llvm/test/CodeGen/RISCV/rv32zba.ll

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1136,3 +1136,66 @@ define i32 @mul_neg8(i32 %a) {
11361136
%c = mul i32 %a, -8
11371137
ret i32 %c
11381138
}
1139+
1140+
define i32 @select3i32(i1 zeroext %x) {
1141+
; CHECK-LABEL: select3i32:
1142+
; CHECK: # %bb.0:
1143+
; CHECK-NEXT: neg a0, a0
1144+
; CHECK-NEXT: andi a0, a0, 3
1145+
; CHECK-NEXT: ret
1146+
%select = select i1 %x, i32 3, i32 0
1147+
ret i32 %select
1148+
}
1149+
1150+
define i32 @select5i32(i1 zeroext %x) {
1151+
; CHECK-LABEL: select5i32:
1152+
; CHECK: # %bb.0:
1153+
; CHECK-NEXT: neg a0, a0
1154+
; CHECK-NEXT: andi a0, a0, 5
1155+
; CHECK-NEXT: ret
1156+
%select = select i1 %x, i32 5, i32 0
1157+
ret i32 %select
1158+
}
1159+
1160+
define i32 @select9i32(i1 zeroext %x) {
1161+
; CHECK-LABEL: select9i32:
1162+
; CHECK: # %bb.0:
1163+
; CHECK-NEXT: neg a0, a0
1164+
; CHECK-NEXT: andi a0, a0, 9
1165+
; CHECK-NEXT: ret
1166+
%select = select i1 %x, i32 9, i32 0
1167+
ret i32 %select
1168+
}
1169+
1170+
define i64 @select3i64(i1 zeroext %x) {
1171+
; CHECK-LABEL: select3i64:
1172+
; CHECK: # %bb.0:
1173+
; CHECK-NEXT: neg a0, a0
1174+
; CHECK-NEXT: andi a0, a0, 3
1175+
; CHECK-NEXT: li a1, 0
1176+
; CHECK-NEXT: ret
1177+
%select = select i1 %x, i64 3, i64 0
1178+
ret i64 %select
1179+
}
1180+
1181+
define i64 @select5i64(i1 zeroext %x) {
1182+
; CHECK-LABEL: select5i64:
1183+
; CHECK: # %bb.0:
1184+
; CHECK-NEXT: neg a0, a0
1185+
; CHECK-NEXT: andi a0, a0, 5
1186+
; CHECK-NEXT: li a1, 0
1187+
; CHECK-NEXT: ret
1188+
%select = select i1 %x, i64 5, i64 0
1189+
ret i64 %select
1190+
}
1191+
1192+
define i64 @select9i64(i1 zeroext %x) {
1193+
; CHECK-LABEL: select9i64:
1194+
; CHECK: # %bb.0:
1195+
; CHECK-NEXT: neg a0, a0
1196+
; CHECK-NEXT: andi a0, a0, 9
1197+
; CHECK-NEXT: li a1, 0
1198+
; CHECK-NEXT: ret
1199+
%select = select i1 %x, i64 9, i64 0
1200+
ret i64 %select
1201+
}

llvm/test/CodeGen/RISCV/rv64zba.ll

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4576,3 +4576,33 @@ define i64 @append_32ones(i64 %x) {
45764576
%o = or i64 %s, 4294967295
45774577
ret i64 %o
45784578
}
4579+
4580+
define i32 @select3(i1 zeroext %x) {
4581+
; CHECK-LABEL: select3:
4582+
; CHECK: # %bb.0:
4583+
; CHECK-NEXT: neg a0, a0
4584+
; CHECK-NEXT: andi a0, a0, 3
4585+
; CHECK-NEXT: ret
4586+
%select = select i1 %x, i32 3, i32 0
4587+
ret i32 %select
4588+
}
4589+
4590+
define i32 @select5(i1 zeroext %x) {
4591+
; CHECK-LABEL: select5:
4592+
; CHECK: # %bb.0:
4593+
; CHECK-NEXT: neg a0, a0
4594+
; CHECK-NEXT: andi a0, a0, 5
4595+
; CHECK-NEXT: ret
4596+
%select = select i1 %x, i32 5, i32 0
4597+
ret i32 %select
4598+
}
4599+
4600+
define i32 @select9(i1 zeroext %x) {
4601+
; CHECK-LABEL: select9:
4602+
; CHECK: # %bb.0:
4603+
; CHECK-NEXT: neg a0, a0
4604+
; CHECK-NEXT: andi a0, a0, 9
4605+
; CHECK-NEXT: ret
4606+
%select = select i1 %x, i32 9, i32 0
4607+
ret i32 %select
4608+
}

llvm/test/CodeGen/RISCV/xqciac.ll

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -599,3 +599,25 @@ define i32 @add_shl_moreOneUse_4(i32 %x) {
599599
%add = add i32 %mul, %or
600600
ret i32 %add
601601
}
602+
603+
define i32 @select65(i1 zeroext %x) {
604+
; RV32IM-LABEL: select65:
605+
; RV32IM: # %bb.0:
606+
; RV32IM-NEXT: neg a0, a0
607+
; RV32IM-NEXT: andi a0, a0, 65
608+
; RV32IM-NEXT: ret
609+
;
610+
; RV32IMXQCIAC-LABEL: select65:
611+
; RV32IMXQCIAC: # %bb.0:
612+
; RV32IMXQCIAC-NEXT: neg a0, a0
613+
; RV32IMXQCIAC-NEXT: andi a0, a0, 65
614+
; RV32IMXQCIAC-NEXT: ret
615+
;
616+
; RV32IZBAMXQCIAC-LABEL: select65:
617+
; RV32IZBAMXQCIAC: # %bb.0:
618+
; RV32IZBAMXQCIAC-NEXT: neg a0, a0
619+
; RV32IZBAMXQCIAC-NEXT: andi a0, a0, 65
620+
; RV32IZBAMXQCIAC-NEXT: ret
621+
%select = select i1 %x, i32 65, i32 0
622+
ret i32 %select
623+
}

0 commit comments

Comments
 (0)