66 lines · plain
1; RUN: llc -mtriple=arm-eabi -mattr=+v6t2 %s -o - | FileCheck %s2 3define i32 @f1(i32 %a) {4entry:5; CHECK-LABEL: f1:6; CHECK: sbfx r0, r0, #0, #207 %tmp = shl i32 %a, 128 %tmp2 = ashr i32 %tmp, 129 ret i32 %tmp210}11 12define i32 @f2(i32 %a) {13entry:14; CHECK-LABEL: f2:15; CHECK: bfc r0, #20, #1216 %tmp = shl i32 %a, 1217 %tmp2 = lshr i32 %tmp, 1218 ret i32 %tmp219}20 21define i32 @f3(i32 %a) {22entry:23; CHECK-LABEL: f3:24; CHECK: sbfx r0, r0, #5, #325 %tmp = shl i32 %a, 2426 %tmp2 = ashr i32 %tmp, 2927 ret i32 %tmp228}29 30define i32 @f4(i32 %a) {31entry:32; CHECK-LABEL: f4:33; CHECK: ubfx r0, r0, #5, #334 %tmp = shl i32 %a, 2435 %tmp2 = lshr i32 %tmp, 2936 ret i32 %tmp237}38 39define i32 @f5(i32 %a) {40entry:41; CHECK-LABEL: f5:42; CHECK-NOT: sbfx43; CHECK: bx44 %tmp = shl i32 %a, 345 %tmp2 = ashr i32 %tmp, 146 ret i32 %tmp247}48 49define signext i8 @f6(i32 %a) {50; CHECK-LABEL: f6:51; CHECK: sbfx r0, r0, #23, #852 53 %tmp = lshr i32 %a, 2354 %res = trunc i32 %tmp to i855 ret i8 %res56}57 58define signext i8 @f7(i32 %a) {59; CHECK-LABEL: f7:60; CHECK-NOT: sbfx61 62 %tmp = lshr i32 %a, 2563 %res = trunc i32 %tmp to i864 ret i8 %res65}66