1; RUN: llc -mtriple=armv7-linux-gnueabihf %s -o - | FileCheck %s 2 3@array = weak global [4 x i32] zeroinitializer 4 5define i32 @test_lshr_and1(i32 %x) { 6entry: 7;CHECK-LABLE: test_lshr_and1: 8;CHECK: movw r1, :lower16:array 9;CHECK-NEXT: and r0, r0, #12 10;CHECK-NEXT: movt r1, :upper16:array 11;CHECK-NEXT: ldr r0, [r1, r0] 12;CHECK-NEXT: bx lr 13 %tmp2 = lshr i32 %x, 2 14 %tmp3 = and i32 %tmp2, 3 15 %tmp4 = getelementptr [4 x i32], [4 x i32]* @array, i32 0, i32 %tmp3 16 %tmp5 = load i32, i32* %tmp4, align 4 17 ret i32 %tmp5 18} 19define i32 @test_lshr_and2(i32 %x) { 20entry: 21;CHECK-LABLE: test_lshr_and2: 22;CHECK: ubfx r0, r0, #1, #15 23;CHECK-NEXT: add r0, r0, r0 24;CHECK-NEXT: bx lr 25 %a = and i32 %x, 65534 26 %b = lshr i32 %a, 1 27 %c = and i32 %x, 65535 28 %d = lshr i32 %c, 1 29 %e = add i32 %b, %d 30 ret i32 %e 31} 32