; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6 ; RUN: llc < %s -mtriple=arm64-unknown-unknown-gnu | FileCheck %s --check-prefix=CHECK define i8 @pow2_trunc_orzero_false_notzero(i32 %x, i8 %z){ ; CHECK-LABEL: pow2_trunc_orzero_false_notzero: ; CHECK: // %bb.0: ; CHECK-NEXT: and w8, w1, #0xff ; CHECK-NEXT: and w9, w0, #0x7 ; CHECK-NEXT: lsr w0, w8, w9 ; CHECK-NEXT: ret %amt = and i32 %x, 7 %y = shl i32 1, %amt %tr = trunc i32 %y to i8 %div = udiv i8 %z, %tr ret i8 %div } define i8 @pow2_trunc_orzero_false_maybezero(i32 %x, i8 %z){ ; CHECK-LABEL: pow2_trunc_orzero_false_maybezero: ; CHECK: // %bb.0: ; CHECK-NEXT: neg w8, w0 ; CHECK-NEXT: and w9, w1, #0xff ; CHECK-NEXT: and w8, w0, w8 ; CHECK-NEXT: and w8, w8, #0xff ; CHECK-NEXT: udiv w0, w9, w8 ; CHECK-NEXT: ret %neg_x = sub i32 0, %x %y = and i32 %x, %neg_x %tr = trunc i32 %y to i8 %div = udiv i8 %z, %tr ret i8 %div }