xref: /aosp_15_r20/external/llvm/test/CodeGen/AArch64/cmpwithshort.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -O3 -march=aarch64 < %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Workerdefine i16 @test_1cmp_signed_1(i16* %ptr1) {
4*9880d681SAndroid Build Coastguard Worker; CHECK-LABLE: @test_1cmp_signed_1
5*9880d681SAndroid Build Coastguard Worker; CHECK: ldrsh
6*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmn
7*9880d681SAndroid Build Coastguard Workerentry:
8*9880d681SAndroid Build Coastguard Worker  %addr = getelementptr inbounds i16, i16* %ptr1, i16 0
9*9880d681SAndroid Build Coastguard Worker  %val = load i16, i16* %addr, align 2
10*9880d681SAndroid Build Coastguard Worker  %cmp = icmp eq i16 %val, -1
11*9880d681SAndroid Build Coastguard Worker  br i1 %cmp, label %if, label %if.then
12*9880d681SAndroid Build Coastguard Workerif:
13*9880d681SAndroid Build Coastguard Worker  ret i16 1
14*9880d681SAndroid Build Coastguard Workerif.then:
15*9880d681SAndroid Build Coastguard Worker  ret i16 0
16*9880d681SAndroid Build Coastguard Worker}
17*9880d681SAndroid Build Coastguard Worker
18*9880d681SAndroid Build Coastguard Workerdefine i16 @test_1cmp_signed_2(i16* %ptr1) {
19*9880d681SAndroid Build Coastguard Worker; CHECK-LABLE: @test_1cmp_signed_2
20*9880d681SAndroid Build Coastguard Worker; CHECK: ldrsh
21*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmn
22*9880d681SAndroid Build Coastguard Workerentry:
23*9880d681SAndroid Build Coastguard Worker  %addr = getelementptr inbounds i16, i16* %ptr1, i16 0
24*9880d681SAndroid Build Coastguard Worker  %val = load i16, i16* %addr, align 2
25*9880d681SAndroid Build Coastguard Worker  %cmp = icmp sge i16 %val, -1
26*9880d681SAndroid Build Coastguard Worker  br i1 %cmp, label %if, label %if.then
27*9880d681SAndroid Build Coastguard Workerif:
28*9880d681SAndroid Build Coastguard Worker  ret i16 1
29*9880d681SAndroid Build Coastguard Workerif.then:
30*9880d681SAndroid Build Coastguard Worker  ret i16 0
31*9880d681SAndroid Build Coastguard Worker}
32*9880d681SAndroid Build Coastguard Worker
33*9880d681SAndroid Build Coastguard Workerdefine i16 @test_1cmp_unsigned_1(i16* %ptr1) {
34*9880d681SAndroid Build Coastguard Worker; CHECK-LABLE: @test_1cmp_unsigned_1
35*9880d681SAndroid Build Coastguard Worker; CHECK: ldrsh
36*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmn
37*9880d681SAndroid Build Coastguard Workerentry:
38*9880d681SAndroid Build Coastguard Worker  %addr = getelementptr inbounds i16, i16* %ptr1, i16 0
39*9880d681SAndroid Build Coastguard Worker  %val = load i16, i16* %addr, align 2
40*9880d681SAndroid Build Coastguard Worker  %cmp = icmp uge i16 %val, -1
41*9880d681SAndroid Build Coastguard Worker  br i1 %cmp, label %if, label %if.then
42*9880d681SAndroid Build Coastguard Workerif:
43*9880d681SAndroid Build Coastguard Worker  ret i16 1
44*9880d681SAndroid Build Coastguard Workerif.then:
45*9880d681SAndroid Build Coastguard Worker  ret i16 0
46*9880d681SAndroid Build Coastguard Worker}
47