85 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=aarch64-none-linux-gnu < %s -o -| FileCheck %s3 4define i32 @lsr_bfi(i32 %a) {5; CHECK-LABEL: lsr_bfi:6; CHECK: // %bb.0:7; CHECK-NEXT: lsr w8, w0, #208; CHECK-NEXT: bfi w0, w8, #4, #49; CHECK-NEXT: ret10 %and1 = and i32 %a, -24111 %1 = lshr i32 %a, 1612 %shl = and i32 %1, 24013 %or = or i32 %shl, %and114 ret i32 %or15}16 17define i32 @negative_lsr_bfi0(i32 %a) {18; CHECK-LABEL: negative_lsr_bfi0:19; CHECK: // %bb.0:20; CHECK-NEXT: and w0, w0, #0xffffff0f21; CHECK-NEXT: ret22 %and1 = and i32 %a, -24123 %1 = lshr i32 %a, 2824 %shl = and i32 %1, 24025 %or = or i32 %shl, %and126 ret i32 %or27}28 29define i32 @negative_lsr_bfi1(i32 %a) {30; CHECK-LABEL: negative_lsr_bfi1:31; CHECK: // %bb.0:32; CHECK-NEXT: lsr w8, w0, #1633; CHECK-NEXT: lsr w9, w8, #434; CHECK-NEXT: bfi w0, w9, #4, #435; CHECK-NEXT: add w0, w0, w836; CHECK-NEXT: ret37 %and1 = and i32 %a, -24138 %1 = lshr i32 %a, 1639 %shl = and i32 %1, 24040 %or = or i32 %shl, %and141 %add = add i32 %or, %142 ret i32 %add43}44 45define i64 @lsr_bfix(i64 %a) {46; CHECK-LABEL: lsr_bfix:47; CHECK: // %bb.0:48; CHECK-NEXT: lsr x8, x0, #2049; CHECK-NEXT: bfi x0, x8, #4, #450; CHECK-NEXT: ret51 %and1 = and i64 %a, -24152 %1 = lshr i64 %a, 1653 %shl = and i64 %1, 24054 %or = or i64 %shl, %and155 ret i64 %or56}57 58define i64 @negative_lsr_bfix0(i64 %a) {59; CHECK-LABEL: negative_lsr_bfix0:60; CHECK: // %bb.0:61; CHECK-NEXT: and x0, x0, #0xffffffffffffff0f62; CHECK-NEXT: ret63 %and1 = and i64 %a, -24164 %1 = lshr i64 %a, 6065 %shl = and i64 %1, 24066 %or = or i64 %shl, %and167 ret i64 %or68}69 70define i64 @negative_lsr_bfix1(i64 %a) {71; CHECK-LABEL: negative_lsr_bfix1:72; CHECK: // %bb.0:73; CHECK-NEXT: lsr x8, x0, #1674; CHECK-NEXT: lsr x9, x8, #475; CHECK-NEXT: bfi x0, x9, #4, #476; CHECK-NEXT: add x0, x0, x877; CHECK-NEXT: ret78 %and1 = and i64 %a, -24179 %1 = lshr i64 %a, 1680 %shl = and i64 %1, 24081 %or = or i64 %shl, %and182 %add = add i64 %or, %183 ret i64 %add84}85