xref: /aosp_15_r20/external/llvm/test/CodeGen/Thumb2/bfx.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=thumb-eabi -mcpu=arm1156t2-s -mattr=+thumb2 %s -o - | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Workerdefine i32 @sbfx1(i32 %a) {
4*9880d681SAndroid Build Coastguard Worker; CHECK: sbfx1
5*9880d681SAndroid Build Coastguard Worker; CHECK: sbfx r0, r0, #7, #11
6*9880d681SAndroid Build Coastguard Worker	%t1 = lshr i32 %a, 7
7*9880d681SAndroid Build Coastguard Worker	%t2 = trunc i32 %t1 to i11
8*9880d681SAndroid Build Coastguard Worker	%t3 = sext i11 %t2 to i32
9*9880d681SAndroid Build Coastguard Worker	ret i32 %t3
10*9880d681SAndroid Build Coastguard Worker}
11*9880d681SAndroid Build Coastguard Worker
12*9880d681SAndroid Build Coastguard Workerdefine i32 @ubfx1(i32 %a) {
13*9880d681SAndroid Build Coastguard Worker; CHECK: ubfx1
14*9880d681SAndroid Build Coastguard Worker; CHECK: ubfx r0, r0, #7, #11
15*9880d681SAndroid Build Coastguard Worker	%t1 = lshr i32 %a, 7
16*9880d681SAndroid Build Coastguard Worker	%t2 = trunc i32 %t1 to i11
17*9880d681SAndroid Build Coastguard Worker	%t3 = zext i11 %t2 to i32
18*9880d681SAndroid Build Coastguard Worker	ret i32 %t3
19*9880d681SAndroid Build Coastguard Worker}
20*9880d681SAndroid Build Coastguard Worker
21*9880d681SAndroid Build Coastguard Workerdefine i32 @ubfx2(i32 %a) {
22*9880d681SAndroid Build Coastguard Worker; CHECK: ubfx2
23*9880d681SAndroid Build Coastguard Worker; CHECK: ubfx r0, r0, #7, #11
24*9880d681SAndroid Build Coastguard Worker	%t1 = lshr i32 %a, 7
25*9880d681SAndroid Build Coastguard Worker	%t2 = and i32 %t1, 2047
26*9880d681SAndroid Build Coastguard Worker	ret i32 %t2
27*9880d681SAndroid Build Coastguard Worker}
28*9880d681SAndroid Build Coastguard Worker
29