@@ -1124,3 +1124,51 @@ loop:
1124
1124
exit:
1125
1125
ret void
1126
1126
}
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