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