@@ -1124,3 +1124,51 @@ loop:
11241124exit:
11251125 ret void
11261126}
1127+
1128+ define i1 @trunc_nuw_i1_non_zero (i8 %1 ) {
1129+ ; CHECK-LABEL: @trunc_nuw_i1_non_zero(
1130+ ; CHECK-NEXT: [[TMP2:%.*]] = icmp ne i8 [[TMP0:%.*]], 0
1131+ ; CHECK-NEXT: tail call void @llvm.assume(i1 [[TMP2]])
1132+ ; CHECK-NEXT: [[RET:%.*]] = trunc nuw i8 [[TMP0]] to i1
1133+ ; CHECK-NEXT: ret i1 [[RET]]
1134+ ;
1135+ %3 = icmp ne i8 %1 , 0
1136+ tail call void @llvm.assume (i1 %3 )
1137+ %ret = trunc nuw i8 %1 to i1
1138+ ret i1 %ret
1139+ }
1140+
1141+ define i1 @neg_trunc_nuw_i1_maybe_zero (i8 %1 ) {
1142+ ; CHECK-LABEL: @neg_trunc_nuw_i1_maybe_zero(
1143+ ; CHECK-NEXT: [[RET:%.*]] = trunc nuw i8 [[TMP0:%.*]] to i1
1144+ ; CHECK-NEXT: ret i1 [[RET]]
1145+ ;
1146+ %ret = trunc nuw i8 %1 to i1
1147+ ret i1 %ret
1148+ }
1149+
1150+ define i2 @neg_trunc_nuw_i2_non_zero (i8 %1 ) {
1151+ ; CHECK-LABEL: @neg_trunc_nuw_i2_non_zero(
1152+ ; CHECK-NEXT: [[TMP2:%.*]] = icmp ne i8 [[TMP0:%.*]], 0
1153+ ; CHECK-NEXT: tail call void @llvm.assume(i1 [[TMP2]])
1154+ ; CHECK-NEXT: [[RET:%.*]] = trunc nuw i8 [[TMP0]] to i2
1155+ ; CHECK-NEXT: ret i2 [[RET]]
1156+ ;
1157+ %3 = icmp ne i8 %1 , 0
1158+ tail call void @llvm.assume (i1 %3 )
1159+ %ret = trunc nuw i8 %1 to i2
1160+ ret i2 %ret
1161+ }
1162+
1163+ define i1 @neg_trunc_i1_non_zero (i8 %1 ) {
1164+ ; CHECK-LABEL: @neg_trunc_i1_non_zero(
1165+ ; CHECK-NEXT: [[TMP2:%.*]] = icmp ne i8 [[TMP0:%.*]], 0
1166+ ; CHECK-NEXT: tail call void @llvm.assume(i1 [[TMP2]])
1167+ ; CHECK-NEXT: [[RET:%.*]] = trunc i8 [[TMP0]] to i1
1168+ ; CHECK-NEXT: ret i1 [[RET]]
1169+ ;
1170+ %3 = icmp ne i8 %1 , 0
1171+ tail call void @llvm.assume (i1 %3 )
1172+ %ret = trunc i8 %1 to i1
1173+ ret i1 %ret
1174+ }
0 commit comments