Skip to content

Commit 82fe5d0

Browse files
committed
Pre-commit test
1 parent db746c6 commit 82fe5d0

File tree

1 file changed

+92
-0
lines changed

1 file changed

+92
-0
lines changed

llvm/test/CodeGen/RISCV/rv64xtheadbb.ll

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1220,3 +1220,95 @@ bb2: ; preds = %bb2, %bb
12201220
bb7: ; preds = %bb2
12211221
ret void
12221222
}
1223+
1224+
define signext i32 @hasAllNBitUsers_extu(i64 %arg1, i64 %arg2, i64 %arg3) {
1225+
; RV64I-LABEL: hasAllNBitUsers_extu:
1226+
; RV64I: # %bb.0: # %entry
1227+
; RV64I-NEXT: addi a2, a2, -1
1228+
; RV64I-NEXT: li a3, 256
1229+
; RV64I-NEXT: .LBB38_1: # %bb2
1230+
; RV64I-NEXT: # =>This Inner Loop Header: Depth=1
1231+
; RV64I-NEXT: slli a0, a0, 47
1232+
; RV64I-NEXT: srli a0, a0, 62
1233+
; RV64I-NEXT: addi a2, a2, 1
1234+
; RV64I-NEXT: addw a0, a0, a1
1235+
; RV64I-NEXT: bltu a2, a3, .LBB38_1
1236+
; RV64I-NEXT: # %bb.2: # %bb7
1237+
; RV64I-NEXT: ret
1238+
;
1239+
; RV64XTHEADBB-LABEL: hasAllNBitUsers_extu:
1240+
; RV64XTHEADBB: # %bb.0: # %entry
1241+
; RV64XTHEADBB-NEXT: addi a2, a2, -1
1242+
; RV64XTHEADBB-NEXT: li a3, 256
1243+
; RV64XTHEADBB-NEXT: .LBB38_1: # %bb2
1244+
; RV64XTHEADBB-NEXT: # =>This Inner Loop Header: Depth=1
1245+
; RV64XTHEADBB-NEXT: th.extu a0, a0, 16, 15
1246+
; RV64XTHEADBB-NEXT: addi a2, a2, 1
1247+
; RV64XTHEADBB-NEXT: add a0, a0, a1
1248+
; RV64XTHEADBB-NEXT: bltu a2, a3, .LBB38_1
1249+
; RV64XTHEADBB-NEXT: # %bb.2: # %bb7
1250+
; RV64XTHEADBB-NEXT: sext.w a0, a0
1251+
; RV64XTHEADBB-NEXT: ret
1252+
entry:
1253+
br label %bb2
1254+
1255+
bb2: ; preds = %bb2, %entry
1256+
%i1 = phi i64 [ %arg1, %entry ], [ %i5, %bb2 ]
1257+
%i2 = phi i64 [ %arg3, %entry ], [ %i3, %bb2 ]
1258+
%i3 = add i64 %i2, 1
1259+
%i4 = lshr i64 %i1, 15
1260+
%i4b = and i64 %i4, 3
1261+
%i5 = add i64 %i4b, %arg2
1262+
%i6 = icmp ugt i64 %i2, 255
1263+
br i1 %i6, label %bb7, label %bb2
1264+
1265+
bb7: ; preds = %bb2
1266+
%i7 = trunc i64 %i5 to i32
1267+
ret i32 %i7
1268+
}
1269+
1270+
define signext i32 @hasAllNBitUsers_ext(i64 %arg1, i64 %arg2, i64 %arg3) {
1271+
; RV64I-LABEL: hasAllNBitUsers_ext:
1272+
; RV64I: # %bb.0: # %entry
1273+
; RV64I-NEXT: addi a2, a2, -1
1274+
; RV64I-NEXT: li a3, 256
1275+
; RV64I-NEXT: .LBB39_1: # %bb2
1276+
; RV64I-NEXT: # =>This Inner Loop Header: Depth=1
1277+
; RV64I-NEXT: slli a0, a0, 47
1278+
; RV64I-NEXT: srli a0, a0, 62
1279+
; RV64I-NEXT: addi a2, a2, 1
1280+
; RV64I-NEXT: addw a0, a0, a1
1281+
; RV64I-NEXT: bltu a2, a3, .LBB39_1
1282+
; RV64I-NEXT: # %bb.2: # %bb7
1283+
; RV64I-NEXT: ret
1284+
;
1285+
; RV64XTHEADBB-LABEL: hasAllNBitUsers_ext:
1286+
; RV64XTHEADBB: # %bb.0: # %entry
1287+
; RV64XTHEADBB-NEXT: addi a2, a2, -1
1288+
; RV64XTHEADBB-NEXT: li a3, 256
1289+
; RV64XTHEADBB-NEXT: .LBB39_1: # %bb2
1290+
; RV64XTHEADBB-NEXT: # =>This Inner Loop Header: Depth=1
1291+
; RV64XTHEADBB-NEXT: th.extu a0, a0, 16, 15
1292+
; RV64XTHEADBB-NEXT: addi a2, a2, 1
1293+
; RV64XTHEADBB-NEXT: add a0, a0, a1
1294+
; RV64XTHEADBB-NEXT: bltu a2, a3, .LBB39_1
1295+
; RV64XTHEADBB-NEXT: # %bb.2: # %bb7
1296+
; RV64XTHEADBB-NEXT: sext.w a0, a0
1297+
; RV64XTHEADBB-NEXT: ret
1298+
entry:
1299+
br label %bb2
1300+
1301+
bb2: ; preds = %bb2, %entry
1302+
%i1 = phi i64 [ %arg1, %entry ], [ %i5, %bb2 ]
1303+
%i2 = phi i64 [ %arg3, %entry ], [ %i3, %bb2 ]
1304+
%i3 = add i64 %i2, 1
1305+
%i4 = ashr i64 %i1, 15
1306+
%i4b = and i64 %i4, 3
1307+
%i5 = add i64 %i4b, %arg2
1308+
%i6 = icmp ugt i64 %i2, 255
1309+
br i1 %i6, label %bb7, label %bb2
1310+
1311+
bb7: ; preds = %bb2
1312+
%i7 = trunc i64 %i5 to i32
1313+
ret i32 %i7
1314+
}

0 commit comments

Comments
 (0)