@@ -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+ }
0 commit comments