xref: /aosp_15_r20/external/llvm/test/CodeGen/AArch64/andandshift.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -O3 < %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-m:e-i64:64-i128:128-n32:64-S128"
3*9880d681SAndroid Build Coastguard Workertarget triple = "arm64--linux-gnu"
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone
6*9880d681SAndroid Build Coastguard Workerdefine i32 @test1(i8 %a) {
7*9880d681SAndroid Build Coastguard Worker; CHECK-LABLE: @test1
8*9880d681SAndroid Build Coastguard Worker; CHECK: ubfx {{w[0-9]+}}, w0, #3, #5
9*9880d681SAndroid Build Coastguard Workerentry:
10*9880d681SAndroid Build Coastguard Worker  %conv = zext i8 %a to i32
11*9880d681SAndroid Build Coastguard Worker  %shr1 = lshr i32 %conv, 3
12*9880d681SAndroid Build Coastguard Worker  ret i32 %shr1
13*9880d681SAndroid Build Coastguard Worker}
14*9880d681SAndroid Build Coastguard Worker
15*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone
16*9880d681SAndroid Build Coastguard Workerdefine i32 @test2(i8 %a) {
17*9880d681SAndroid Build Coastguard Worker; CHECK-LABLE: @test2
18*9880d681SAndroid Build Coastguard Worker; CHECK: and {{w[0-9]+}}, w0, #0xff
19*9880d681SAndroid Build Coastguard Worker; CHECK: ubfx {{w[0-9]+}}, w0, #3, #5
20*9880d681SAndroid Build Coastguard Workerentry:
21*9880d681SAndroid Build Coastguard Worker  %conv = zext i8 %a to i32
22*9880d681SAndroid Build Coastguard Worker  %cmp = icmp ugt i8 %a, 47
23*9880d681SAndroid Build Coastguard Worker  %shr5 = lshr i32 %conv, 3
24*9880d681SAndroid Build Coastguard Worker  %retval.0 = select i1 %cmp, i32 %shr5, i32 %conv
25*9880d681SAndroid Build Coastguard Worker  ret i32 %retval.0
26*9880d681SAndroid Build Coastguard Worker}
27*9880d681SAndroid Build Coastguard Worker
28*9880d681SAndroid Build Coastguard Worker
29