+define zeroext i8 @i16_trunc_i8(i16 zeroext %a) nounwind ssp {
+entry:
+; CHECK-LABEL: i16_trunc_i8
+; CHECK: and [[REG:w[0-9]+]], w0, #0xff
+; CHECK-NEXT: uxtb w0, [[REG]]
+ %conv = trunc i16 %a to i8
+ ret i8 %conv
+}
+
+define zeroext i1 @i16_trunc_i1(i16 zeroext %a) nounwind ssp {
+entry:
+; CHECK-LABEL: i16_trunc_i1
+; CHECK: and [[REG:w[0-9]+]], w0, #0x1
+; CHECK-NEXT: and w0, [[REG]], #0x1
+ %conv = trunc i16 %a to i1
+ ret i1 %conv
+}
+
+define zeroext i1 @i8_trunc_i1(i8 zeroext %a) nounwind ssp {
+entry:
+; CHECK-LABEL: i8_trunc_i1
+; CHECK: and [[REG:w[0-9]+]], w0, #0x1
+; CHECK-NEXT: and w0, [[REG]], #0x1
+ %conv = trunc i8 %a to i1
+ ret i1 %conv
+}
+